summaryrefslogtreecommitdiffstats
path: root/hash.h
diff options
context:
space:
mode:
authordsmith <dsmith>2006-10-23 22:09:51 +0000
committerdsmith <dsmith>2006-10-23 22:09:51 +0000
commit1b78aef5258d6681b6224c5a8e8e623449ccc11e (patch)
tree3912f9b3d5f34a8e8252e0529185441f4f8a0233 /hash.h
parent0884d54a236c30dc2585a6b76e5846e44e54138d (diff)
downloadsystemtap-steved-1b78aef5258d6681b6224c5a8e8e623449ccc11e.tar.gz
systemtap-steved-1b78aef5258d6681b6224c5a8e8e623449ccc11e.tar.xz
systemtap-steved-1b78aef5258d6681b6224c5a8e8e623449ccc11e.zip
2006-10-23 David Smith <dsmith@redhat.com>
* 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.
Diffstat (limited to 'hash.h')
-rw-r--r--hash.h34
1 files changed, 34 insertions, 0 deletions
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 <string>
+
+extern "C" {
+#include <string.h>
+#include <mdfour.h>
+}
+
+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);