From d5f79e3b0bd7cccab80411b0fc0731b08c30064e Mon Sep 17 00:00:00 2001 From: Nikola Pajkovsky Date: Fri, 4 Jun 2010 11:23:56 +0200 Subject: new fuctions and realloc replaced by xrealloc new functions are prefixcmp and suffixcmp Signed-off-by: Nikola Pajkovsky --- inc/abrtlib.h | 3 +++ lib/Utils/strbuf.c | 26 ++++++++++++++++++++------ 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/inc/abrtlib.h b/inc/abrtlib.h index 4c4aa6b9..ffa66363 100644 --- a/inc/abrtlib.h +++ b/inc/abrtlib.h @@ -98,6 +98,9 @@ extern int g_verbose; char* skip_whitespace(const char *s); char* skip_non_whitespace(const char *s); +int prefixcmp(const char *str, const char *prefix); +int suffixcmp(const char *str, const char *suffix); + unsigned xatou(const char *numstr); int xatoi(const char *numstr); 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 #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); } } -- cgit