const file_tree_checksum& data_tree_checksum(bool reset) { static file_tree_checksum checksum; if (reset) checksum.reset(); if(checksum.nfiles == 0) { get_file_tree_checksum_internal("data/",checksum); get_file_tree_checksum_internal(get_user_data_dir() + "/data/",checksum); LOG_FS << "calculated data tree checksum: " << checksum.nfiles << " files; " << checksum.sum_size << " bytes\n"; } return checksum; }
void data_tree_checksum(const std::vector<std::string>& paths, file_tree_checksum& checksum, int filter) { checksum.reset(); for (std::vector<std::string>::const_iterator it = paths.begin(); it != paths.end(); ++ it) { get_file_tree_checksum_internal(*it, checksum, filter); } }
static void get_file_tree_checksum_internal(const std::string& path, file_tree_checksum& res) { std::vector<std::string> dirs; get_files_in_dir(path,NULL,&dirs, ENTIRE_FILE_PATH, SKIP_MEDIA_DIR, DONT_REORDER, &res); loadscreen::increment_progress(); for(std::vector<std::string>::const_iterator j = dirs.begin(); j != dirs.end(); ++j) { get_file_tree_checksum_internal(*j,res); } }