mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-21 18:38:08 +01:00
util: move strcase_equal and strcase_hash to util
For future use in both cli and lib.
This commit is contained in:
parent
243ca658df
commit
f460ad4e9a
4 changed files with 28 additions and 21 deletions
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -50,6 +50,7 @@ NOTMUCH_BEGIN_DECLS
|
|||
|
||||
#include "xutil.h"
|
||||
#include "error_util.h"
|
||||
#include "string-util.h"
|
||||
|
||||
#pragma GCC visibility push(hidden)
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue