Пример #1
0
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);
}
Пример #2
0
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;
}