From f93b71da9bcd01d7c1db797d9a84b95cbdabde0b Mon Sep 17 00:00:00 2001 From: zyp Date: Thu, 19 Oct 2006 15:11:00 +0000 Subject: [project @ zyp-20061019151100-032626b43d2f238b] [project @ 59] Added hash_file-function. --- src/hash.cpp | 8 ++++++++ src/hash.h | 4 +++- src/wrapper.cpp | 2 ++ 3 files changed, 13 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/hash.cpp b/src/hash.cpp index 89b14cc..82df4c0 100644 --- a/src/hash.cpp +++ b/src/hash.cpp @@ -60,4 +60,12 @@ namespace Multihash { std::string Hash::hash_digest() { throw std::runtime_error("Not implemented."); } + + void _hash_file(int fileno, Hash* hash) { + char buf[32768]; + int s; + while((s = read(fileno, buf, 32768)) > 0) { + hash->_update(buf, s); + } + } } diff --git a/src/hash.h b/src/hash.h index d2771a5..571ae02 100644 --- a/src/hash.h +++ b/src/hash.h @@ -13,15 +13,17 @@ namespace Multihash { private: std::string digest_str; Hash* next; - void _update(const char* data, int length); protected: virtual void hash_update(const char* data, int length); virtual std::string hash_digest(); public: Hash(Hash* n = 0); void update(std::string data); + void _update(const char* data, int length); std::string digest(); }; + + void _hash_file(int fileno, Hash* hash); } #endif // _HASH_H_ diff --git a/src/wrapper.cpp b/src/wrapper.cpp index cbe86f5..a93dae2 100644 --- a/src/wrapper.cpp +++ b/src/wrapper.cpp @@ -26,4 +26,6 @@ BOOST_PYTHON_MODULE(_multihash) class_ >("SHA1") .def(init >()); + + def("_hash_file", Multihash::_hash_file); } -- cgit v1.2.3