wchar_t *unparsehash(struct hash *hash)
{
- wchar_t *buf, *whbuf;
+ static wchar_t *buf = NULL;
+ wchar_t *whbuf;
char *hbuf;
size_t bufsize, bufdata;
+ if(buf != NULL)
+ free(buf);
buf = NULL;
bufsize = bufdata = 0;
hbuf = base64encode(hash->buf, hash->len);
addtobuf(buf, ':');
bufcat(buf, whbuf, wcslen(whbuf));
free(whbuf);
+ addtobuf(buf, 0);
return(buf);
}
+int hashcmp(struct hash *h1, struct hash *h2)
+{
+ if(wcscmp(h1->algo, h2->algo))
+ return(0);
+ if(h1->len != h2->len)
+ return(0);
+ if(memcmp(h1->buf, h2->buf, h1->len))
+ return(0);
+ return(1);
+}
+
static struct hashcache *newhashcache(void)
{
struct hashcache *new;