From 1b78aef5258d6681b6224c5a8e8e623449ccc11e Mon Sep 17 00:00:00 2001 From: dsmith Date: Mon, 23 Oct 2006 22:09:51 +0000 Subject: 2006-10-23 David Smith * main.cxx (printscript): New function containing code moved from main(). (main): Added code to create cache directory, call function to generate hash, and see if we can use cached source/module. If pass 4 is actually run to produce a new module, we call add_to_cache() to cache the result. * session.h (struct systemtap_session): Added hash/cache session data. * cache.cxx: New file handling adding/getting files from the cache. * cache.h: New header file for cache.cxx. * hash.cxx: New file containing C++ wrapper for routines in mdfour.c and the find_hash function which computes the hash file name for an input script. * hash.h: New header file for hash.cxx. * mdfour.c: New file containing MD4 hash code. * mdfour.h: New header file for mdfour.c. * util.cxx: New file containing several utility functions used by the caching code. * util.h: New header file for util.cxx. * Makefile.am: Added new C/C++ files. * Makefile.in: Regenerated. --- hash.h | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 hash.h (limited to 'hash.h') diff --git a/hash.h b/hash.h new file mode 100644 index 00000000..e923fee4 --- /dev/null +++ b/hash.h @@ -0,0 +1,34 @@ +#include + +extern "C" { +#include +#include +} + +class hash +{ +private: + struct mdfour md4; + +public: + hash() { start(); } + + void start(); + + void add(const unsigned char *buffer, size_t size); + void add(const int x) { add((const unsigned char *)&x, sizeof(x)); } + void add(const long x) { add((const unsigned char *)&x, sizeof(x)); } + void add(const long long x) { add((const unsigned char *)&x, sizeof(x)); } + void add(const unsigned int x) { add((const unsigned char *)&x, sizeof(x)); } + void add(const unsigned long x) { add((const unsigned char *)&x, + sizeof(x)); } + void add(const unsigned long long x) { add((const unsigned char *)&x, + sizeof(x)); } + void add(const char *s) { add((const unsigned char *)s, strlen(s)); } + void add(const std::string& s) { add((const unsigned char *)s.c_str(), + s.length()); } + + void result(std::string& r); +}; + +void find_hash (systemtap_session& s, const std::string& script); -- cgit