Пример #1
0
void dump_all_file_infos(FileOperation& file_op, const int32_t offset, const int32_t items)
{
  int ret = TFS_SUCCESS;
  dump_file_info_header();
  FileInfoV2 file_info;
  for (int i = 0; i < items; i++)
  {
    ret = file_op.pread((char*)(&file_info), FILE_INFO_V2_LENGTH,
        offset + i * FILE_INFO_V2_LENGTH);
    if (FILE_INFO_V2_LENGTH == ret)
    {
      if (INVALID_FILE_ID != file_info.id_)
      {
        dump_file_info(file_info, i);
        while (file_info.next_ != 0)
        {
          int32_t slot = file_info.next_;
          ret = file_op.pread((char*)(&file_info), FILE_INFO_V2_LENGTH,
              offset + slot * FILE_INFO_V2_LENGTH);
          if (FILE_INFO_V2_LENGTH == ret)
          {
            dump_file_info(file_info, slot);
          }
          else
          {
            break;
          }
        }
      }
    }
    else
    {
      break;
    }
  }
}
Пример #2
0
void traverse(FileOperation& file_op, const int32_t offset, const int32_t items, std::vector<FileInfoV2>& infos)
{
  int ret = TFS_SUCCESS;
  FileInfoV2 file_info;
  for (int i = 0; i < items; i++)
  {
    ret = file_op.pread((char*)(&file_info), FILE_INFO_V2_LENGTH,
        offset + i * FILE_INFO_V2_LENGTH);
    if (FILE_INFO_V2_LENGTH == ret)
    {
      if (INVALID_FILE_ID != file_info.id_)
      {
        // dump_file_info(file_info, i);
        infos.push_back(file_info);
      }
    }
    else
    {
      printf("file %s format error\n", file_op.get_path().c_str());
      break;
    }
  }
}