diff options
author | dsmith <dsmith> | 2006-10-23 22:09:51 +0000 |
---|---|---|
committer | dsmith <dsmith> | 2006-10-23 22:09:51 +0000 |
commit | 1b78aef5258d6681b6224c5a8e8e623449ccc11e (patch) | |
tree | 3912f9b3d5f34a8e8252e0529185441f4f8a0233 /hash.h | |
parent | 0884d54a236c30dc2585a6b76e5846e44e54138d (diff) | |
download | systemtap-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.h | 34 |
1 files changed, 34 insertions, 0 deletions
@@ -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); |