projects
/
cumulus.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Improve parsing performance.
[cumulus.git]
/
hash.cc
diff --git
a/hash.cc
b/hash.cc
index
2054bcc
..
571bc1d
100644
(file)
--- a/
hash.cc
+++ b/
hash.cc
@@
-27,18
+27,17
@@
using std::map;
using std::string;
using std::map;
using std::string;
+static string default_algorithm;
static map<string, Hash *(*)()> hash_registry;
void Hash::Register(const std::string& name, Hash *(*constructor)())
{
static map<string, Hash *(*)()> hash_registry;
void Hash::Register(const std::string& name, Hash *(*constructor)())
{
- printf("Registered hash algorithm %s\n", name.c_str());
hash_registry.insert(make_pair(name, constructor));
}
Hash *Hash::New()
{
hash_registry.insert(make_pair(name, constructor));
}
Hash *Hash::New()
{
- // TODO: Make generic
- return New("sha224");
+ return New(default_algorithm);
}
Hash *Hash::New(const std::string& name)
}
Hash *Hash::New(const std::string& name)
@@
-50,6
+49,17
@@
Hash *Hash::New(const std::string& name)
return constructor();
}
return constructor();
}
+std::string Hash::hash_file(const char *filename)
+{
+ string result;
+ Hash *hash = Hash::New();
+ if (hash->update_from_file(filename))
+ result = hash->digest_str();
+
+ delete hash;
+ return result;
+}
+
bool Hash::update_from_file(const char *filename)
{
FILE *f = fopen(filename, "rb");
bool Hash::update_from_file(const char *filename)
{
FILE *f = fopen(filename, "rb");
@@
-102,4
+112,5
@@
void hash_init()
{
sha1_register();
sha256_register();
{
sha1_register();
sha256_register();
+ default_algorithm = "sha224";
}
}