void mpz_set_file_hash(mpz_t hash, const char * read_filepath) { u256_t u256_hash; if (get_file_hash(u256_hash, read_filepath)) { exit(EXIT_FAILURE); } mpz_set_u256(hash, u256_hash); }
void process_files(File_Bag files, sqlite_db& db) { std::cerr << "process_files" << std::endl; size_t ten_percent = files.size() / 10; size_t done = 0, next_step = ten_percent; std::cerr << "Files processed " << done << " of " << files.size() << std::endl; std::string sql("INSERT INTO file_hash (fspec, hash, last_check) VALUES (?, ?, ?)"); sqlite_stmt stmt { db.prepare(sql) }; for (auto file = files.cbegin(); file != files.cend(); ++file) { if (done >= next_step) { std::cerr << "Files processed " << done << " of " << files.size() << std::endl; next_step += ten_percent; } struct stat sb; if (stat(file->c_str(), &sb) == -1) throw os_error::make_os_error(errno, *file); time_t now = std::time(nullptr); std::string hash = get_file_hash(*file); stmt.bind(1, *file); stmt.bind(2, hash); stmt.bind(3, now); stmt.step(); stmt.reset(); ++done; } stmt.finalize(); std::cerr << "Files processed " << done << " of " << files.size() << std::endl; }