summaryrefslogtreecommitdiffabout
path: root/src/eyetil.h
Side-by-side diff
Diffstat (limited to 'src/eyetil.h') (more/less context) (ignore whitespace changes)
-rw-r--r--src/eyetil.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/eyetil.h b/src/eyetil.h
index 7517ba6..8784cb4 100644
--- a/src/eyetil.h
+++ b/src/eyetil.h
@@ -53,48 +53,59 @@ struct md5_digester {
}
};
template<typename T>
update_iterator<T> updater() {
return update_iterator<T>(this);
}
};
template<> inline void md5_digester::update<binary_t>(const binary_t& x) {
update((const unsigned char*)&(x.front()),x.size());
}
#pragma pack(1)
struct block512_t {
enum { words = 512 / sizeof(uint16_t) };
uint16_t data[words];
inline uint8_t *dptr(size_t o) { return ((uint8_t*)this)+o; }
static uint16_t tcpcksum(block512_t& data);
};
#pragma pack()
+struct integrity_digester {
+ md5_digester md5;
+ size_t data_size;
+ block512_t data;
+
+ integrity_digester() : data_size(0) { }
+ void update(const void *d,size_t s);
+ binary_t final(const std::string& ukey);
+};
+
+
class tmpdir_t {
public:
std::string dir;
tmpdir_t(const std::string& dt);
~tmpdir_t();
std::string get_file(const std::string& f);
};
class tarchive_t {
public:
struct archive *a;
struct archive_entry *e;
tarchive_t(void *p,size_t s);
~tarchive_t();
bool read_next_header();
std::string entry_pathname();
bool read_data_into_fd(int fd);
};