X-Git-Url: https://git.cworth.org/git?p=notmuch;a=blobdiff_plain;f=util%2Fstring-util.c;fp=util%2Fstring-util.c;h=27f8a26b4938c4c770486e504b62f168db64f582;hp=de8430b2add34dea3fdf52507cf442c420cd170f;hb=3fb123f215668a54cd6084b2a520f767d2be6712;hpb=319efe21c9d2754c99951cecc71184faf7ca9054 diff --git a/util/string-util.c b/util/string-util.c index de8430b2..27f8a26b 100644 --- a/util/string-util.c +++ b/util/string-util.c @@ -24,6 +24,7 @@ #include #include +#include char * strtok_len (char *s, const char *delim, size_t *len) @@ -37,6 +38,28 @@ strtok_len (char *s, const char *delim, size_t *len) return *len ? s : NULL; } +const char * +strsplit_len (const char *s, char delim, size_t *len) +{ + bool escaping = false; + size_t count = 0; + + /* Skip initial unescaped delimiters */ + while (*s && *s == delim) + s++; + + while (s[count] && (escaping || s[count] != delim)) { + escaping = (s[count] == '\\'); + count++; + } + + if (count==0) + return NULL; + + *len = count; + return s; +} + const char * strtok_len_c (const char *s, const char *delim, size_t *len) {