util: move strcase_equal and strcase_hash to util

For future use in both cli and lib.
This commit is contained in:
Jani Nikula 2015-09-03 22:40:01 +03:00 committed by David Bremner
parent 243ca658df
commit f460ad4e9a
4 changed files with 28 additions and 21 deletions

View file

@ -37,27 +37,6 @@ struct _notmuch_message_file {
GMimeMessage *message;
};
static int
strcase_equal (const void *a, const void *b)
{
return strcasecmp (a, b) == 0;
}
static unsigned int
strcase_hash (const void *ptr)
{
const char *s = ptr;
/* This is the djb2 hash. */
unsigned int hash = 5381;
while (s && *s) {
hash = ((hash << 5) + hash) + tolower (*s);
s++;
}
return hash;
}
static int
_notmuch_message_file_destructor (notmuch_message_file_t *message)
{

View file

@ -50,6 +50,7 @@ NOTMUCH_BEGIN_DECLS
#include "xutil.h"
#include "error_util.h"
#include "string-util.h"
#pragma GCC visibility push(hidden)

View file

@ -221,3 +221,24 @@ parse_boolean_term (void *ctx, const char *str,
errno = err;
return -1;
}
int
strcase_equal (const void *a, const void *b)
{
return strcasecmp (a, b) == 0;
}
unsigned int
strcase_hash (const void *ptr)
{
const char *s = ptr;
/* This is the djb2 hash. */
unsigned int hash = 5381;
while (s && *s) {
hash = ((hash << 5) + hash) + tolower (*s);
s++;
}
return hash;
}

View file

@ -64,6 +64,12 @@ int
parse_boolean_term (void *ctx, const char *str,
char **prefix_out, char **term_out);
/* GLib GEqualFunc compatible strcasecmp wrapper */
int strcase_equal (const void *a, const void *b);
/* GLib GHashFunc compatible case insensitive hash function */
unsigned int strcase_hash (const void *ptr);
#ifdef __cplusplus
}
#endif