13
0

Add convenience fn to compute a file's sha1sum

This commit is contained in:
Robin Gareus 2017-06-26 19:39:40 +02:00
parent a1cd4f8dfe
commit 007f3cdbba
2 changed files with 26 additions and 0 deletions

View File

@ -106,6 +106,8 @@ LIBARDOUR_API bool matching_unsuffixed_filename_exists_in (const std::string& di
LIBARDOUR_API uint32_t how_many_dsp_threads ();
LIBARDOUR_API std::string compute_sha1_of_file (std::string path);
template<typename T> boost::shared_ptr<ControlList> route_list_to_control_list (boost::shared_ptr<RouteList> rl, boost::shared_ptr<T> (Stripable::*get_control)() const) {
boost::shared_ptr<ControlList> cl (new ControlList);
if (!rl) { return cl; }

View File

@ -52,6 +52,7 @@
#include "pbd/stacktrace.h"
#include "pbd/xml++.h"
#include "pbd/basename.h"
#include "pbd/scoped_file_descriptor.h"
#include "pbd/strsplit.h"
#include "pbd/replace_all.h"
@ -719,6 +720,29 @@ ARDOUR::slider_position_to_gain_with_max (double g, double max_gain)
return position_to_gain (g) * max_gain / 2.0;
}
#include "sha1.c"
std::string
ARDOUR::compute_sha1_of_file (std::string path)
{
PBD::ScopedFileDescriptor fd (g_open (path.c_str(), O_RDONLY, 0444));
if (fd < 0) {
return std::string ();
}
char buf[4096];
ssize_t n_read;
char hash[41];
Sha1Digest s;
sha1_init (&s);
while ((n_read = ::read(fd, buf, sizeof(buf))) > 0) {
sha1_write (&s, (const uint8_t*) buf, n_read);
}
sha1_result_hash (&s, hash);
return std::string (hash);
}
extern "C" {
void c_stacktrace() { stacktrace (cerr); }
}