new functions are prefixcmp and suffixcmp
Signed-off-by: Nikola Pajkovsky <npajkovs(a)redhat.com>
---
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 4c4aa6b..cfeb62e 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);
+extern int prefixcmp(const char *str, const char *prefix);
+extern 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 0206233..0d14100 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 = strlen(str), suflen = strlen(suffix);
+ if (len < suflen)
+ return -1;
+ else
+ return strcmp(str + len - 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);
}
}
--
1.6.5.2