diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Utils/strbuf.c | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/lib/Utils/strbuf.c b/lib/Utils/strbuf.c index 02062336..2cefefe3 100644 --- a/lib/Utils/strbuf.c +++ b/lib/Utils/strbuf.c @@ -25,6 +25,25 @@ #include <stdarg.h> #include "xfuncs.h" + +int prefixcmp(const char *str, const char *prefix) +{ + for (; ; str++, prefix++) + if (!*prefix) + return 0; + else if (*str != *prefix) + return (unsigned char)*prefix - (unsigned char)*str; +} + +int suffixcmp(const char *str, const char *suffix) +{ + int len_minus_suflen = strlen(str) - strlen(suffix); + if (len_minus_suflen < 0) + return len_minus_suflen; + else + return strcmp(str + len_minus_suflen, suffix); +} + struct strbuf *strbuf_new() { struct strbuf *buf = xmalloc(sizeof(struct strbuf)); @@ -66,12 +85,7 @@ static void strbuf_grow(struct strbuf *strbuf, int num) while (strbuf->len + num + 1 > strbuf->alloc) strbuf->alloc *= 2; /* huge grow = infinite loop */ - strbuf->buf = realloc(strbuf->buf, strbuf->alloc); - if (!strbuf->buf) - { - puts("Error while allocating memory for string buffer."); - exit(5); - } + strbuf->buf = xrealloc(strbuf->buf, strbuf->alloc); } } |