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; } } }
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; } } }