X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=util%2Fstring-util.h;h=80647c5febd692ac0d33b3cac5d46da85fdfd67a;hb=a9f74aeeb9ade477d5b80c1c2700945d6c50adb1;hp=ccad17f1ced4f5f2a639d7891681438aaea09b56;hpb=a5a47dab8776cffc6ffbd77c51933831a34279f1;p=notmuch diff --git a/util/string-util.h b/util/string-util.h index ccad17f1..80647c5f 100644 --- a/util/string-util.h +++ b/util/string-util.h @@ -23,6 +23,23 @@ extern "C" { char *strtok_len (char *s, const char *delim, size_t *len); +/* Const version of strtok_len. */ +const char *strtok_len_c (const char *s, const char *delim, size_t *len); + +/* Simplified version of strtok_len, with a single delimiter. + * Handles escaping delimiters with \ + * Usage pattern: + * + * const char *tok = input; + * const char *delim = ';'; + * size_t tok_len = 0; + * + * while ((tok = strsplit_len (tok + tok_len, delim, &tok_len)) != NULL) { + * // do stuff with string tok of length tok_len + * } + */ +const char *strsplit_len (const char *s, char delim, size_t *len); + /* Return a talloced string with str sanitized. * * Whitespace characters (tabs and newlines) are replaced with spaces, @@ -61,6 +78,21 @@ int parse_boolean_term (void *ctx, const char *str, char **prefix_out, char **term_out); +/* strcmp that handles NULL strings; in strcmp terms a NULL string is + * considered to be less than a non-NULL string. + */ +int strcmp_null (const char *s1, const char *s2); + +/* 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); + +void strip_trailing (char *str, char ch); + +const char *skip_space (const char *str); + #ifdef __cplusplus } #endif