/* Returns GUID as a hex string. */
const char *mail_guid_128_to_string(const uint8_t guid_128[MAIL_GUID_128_SIZE]);
+/* guid_128 hash/cmp functions for hash.h */
+unsigned int mail_guid_128_hash(const void *p);
+int mail_guid_128_cmp(const void *p1, const void *p2);
+
#endif
{
return binary_to_hex(guid_128, MAIL_GUID_128_SIZE);
}
+
+unsigned int mail_guid_128_hash(const void *p)
+{
+ const uint8_t *guid = p;
+
+ return mem_hash(guid, MAIL_GUID_128_SIZE);
+}
+
+int mail_guid_128_cmp(const void *p1, const void *p2)
+{
+ const uint8_t *g1 = p1, *g2 = p2;
+
+ return memcmp(g1, g2, MAIL_GUID_128_SIZE);
+}
static unsigned int guid_cache_rec_hash(const void *_rec)
{
const struct mailbox_guid_cache_rec *rec = _rec;
- unsigned int i, g, h = 0;
- for (i = 0; i < sizeof(rec->guid); i++) {
- h = (h << 4) + rec->guid[i];
- if ((g = h & 0xf0000000UL)) {
- h = h ^ (g >> 24);
- h = h ^ g;
- }
- }
- return h;
+ return mem_hash(rec->guid, sizeof(rec->guid));
}
static int guid_cache_rec_cmp(const void *_r1, const void *_r2)