X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Flib%2Futil.cc;h=074e08cb70e819617391f5c4a6115e830d6444cc;hp=6e370f577d9c8799126499564a24128709c24af3;hb=8102046b2f29e0c7b234c29bf204b056cb30e64f;hpb=3574212ee42b2bd924eb95d5c0f4f69ec9e0a2f0 diff --git a/src/lib/util.cc b/src/lib/util.cc index 6e370f577..074e08cb7 100644 --- a/src/lib/util.cc +++ b/src/lib/util.cc @@ -44,7 +44,6 @@ #endif #include #include -#include #include #include #include @@ -72,6 +71,7 @@ extern "C" { #include "cross.h" #include "video_content.h" #include "rect.h" +#include "md5_digester.h" #ifdef DCPOMATIC_WINDOWS #include "stack.hpp" #endif @@ -250,8 +250,9 @@ LONG WINAPI exception_handler(struct _EXCEPTION_POINTERS *) { dbg::stack s; FILE* f = fopen_boost (backtrace_file, "w"); + fprintf (f, "Exception thrown:"); for (dbg::stack::const_iterator i = s.begin(); i != s.end(); ++i) { - fprintf (f, "%p %s %d %s", i->instruction, i->function.c_str(), i->line, i->module.c_str()); + fprintf (f, "%p %s %d %s\n", i->instruction, i->function.c_str(), i->line, i->module.c_str()); } fclose (f); return EXCEPTION_CONTINUE_SEARCH; @@ -409,23 +410,6 @@ split_at_spaces_considering_quotes (string s) return out; } -string -md5_digest (void const * data, int size) -{ - MD5_CTX md5_context; - MD5_Init (&md5_context); - MD5_Update (&md5_context, data, size); - unsigned char digest[MD5_DIGEST_LENGTH]; - MD5_Final (digest, &md5_context); - - stringstream s; - for (int i = 0; i < MD5_DIGEST_LENGTH; ++i) { - s << std::hex << std::setfill('0') << std::setw(2) << ((int) digest[i]); - } - - return s.str (); -} - /** @param job Optional job for which to report progress */ string md5_digest (vector files, shared_ptr job) @@ -433,8 +417,7 @@ md5_digest (vector files, shared_ptr job) boost::uintmax_t const buffer_size = 64 * 1024; char buffer[buffer_size]; - MD5_CTX md5_context; - MD5_Init (&md5_context); + MD5Digester digester; vector sizes; for (size_t i = 0; i < files.size(); ++i) { @@ -453,7 +436,7 @@ md5_digest (vector files, shared_ptr job) while (remaining > 0) { int const t = min (remaining, buffer_size); fread (buffer, 1, t, f); - MD5_Update (&md5_context, buffer, t); + digester.add (buffer, t); remaining -= t; if (job) { @@ -464,15 +447,7 @@ md5_digest (vector files, shared_ptr job) fclose (f); } - unsigned char digest[MD5_DIGEST_LENGTH]; - MD5_Final (digest, &md5_context); - - stringstream s; - for (int i = 0; i < MD5_DIGEST_LENGTH; ++i) { - s << std::hex << std::setfill('0') << std::setw(2) << ((int) digest[i]); - } - - return s.str (); + return digester.get (); } /** @param An arbitrary audio frame rate.