summaryrefslogtreecommitdiff
path: root/src/lib/util.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2014-06-04 12:33:41 +0100
committerCarl Hetherington <cth@carlh.net>2014-06-04 12:33:41 +0100
commit8102046b2f29e0c7b234c29bf204b056cb30e64f (patch)
tree84933e8db7822e863ae9ab4e6524ab3176606b11 /src/lib/util.cc
parent3574212ee42b2bd924eb95d5c0f4f69ec9e0a2f0 (diff)
parent82926443230084739cb673a83b2ab1f9d733a07b (diff)
Merge master.
Diffstat (limited to 'src/lib/util.cc')
-rw-r--r--src/lib/util.cc37
1 files changed, 6 insertions, 31 deletions
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 <glib.h>
#include <openjpeg.h>
-#include <openssl/md5.h>
#include <pangomm/init.h>
#include <magick/MagickCore.h>
#include <magick/version.h>
@@ -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<boost::filesystem::path> files, shared_ptr<Job> job)
@@ -433,8 +417,7 @@ md5_digest (vector<boost::filesystem::path> files, shared_ptr<Job> job)
boost::uintmax_t const buffer_size = 64 * 1024;
char buffer[buffer_size];
- MD5_CTX md5_context;
- MD5_Init (&md5_context);
+ MD5Digester digester;
vector<int64_t> sizes;
for (size_t i = 0; i < files.size(); ++i) {
@@ -453,7 +436,7 @@ md5_digest (vector<boost::filesystem::path> files, shared_ptr<Job> 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<boost::filesystem::path> files, shared_ptr<Job> 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.