Joedb 10.2.1
The Journal-Only Embedded Database
Loading...
Searching...
No Matches
joedb_sha256sum.cpp
Go to the documentation of this file.
5
6#include <iostream>
7#include <iomanip>
8
9/////////////////////////////////////////////////////////////////////////////
10int main(int argc, char **argv)
11/////////////////////////////////////////////////////////////////////////////
12{
13 std::cout << std::hex;
14 std::cout << std::setfill('0');
15
16 joedb::Arguments arguments(argc, argv);
17 const bool fast = arguments.has_flag("fast");
18
19 while (arguments.get_remaining_count())
20 {
21 const std::string_view file_name = arguments.get_next();
22
23 try
24 {
25 joedb::File file(file_name.data(), joedb::Open_Mode::read_existing);
26
27 const joedb::SHA_256::Hash hash = fast ?
28 joedb::File_Hasher::get_fast_hash(file, 0, file.get_size()) :
30
31 for (uint32_t i = 0; i < 8; i++)
32 std::cout << std::setw(8) << hash[i];
33 std::cout << " " << file_name << '\n';
34 }
35 catch (const joedb::Exception &e)
36 {
37 std::cout << file_name << ": Error: " << e.what() << '\n';
38 }
39 }
40
41 return 0;
42}
Class for conveniently parsing command-line arguments.
Definition Arguments.h:19
std::string_view get_next()
int get_remaining_count() const
Definition Arguments.h:144
bool has_flag(const char *name)
Definition Arguments.cpp:36
static SHA_256::Hash get_fast_hash(const Abstract_File &file, int64_t start, int64_t size)
static SHA_256::Hash get_hash(const Abstract_File &file, int64_t start, int64_t size)
std::array< uint32_t, 8 > Hash
Definition SHA_256.h:59
int main()
@ read_existing
fails if does not exist
JOEDB_FILE File
Definition File.h:25