changeset 287:eb74097b73f5

Make th_vputch() and th_vputs() return a boolean value for success and failure respectively. Also fix a grave bug in th_growbuf().
author Matti Hamalainen <ccr@tnsp.org>
date Sat, 11 Jun 2011 01:09:27 +0300
parents b765f15f9895
children e7ef3db3b954
files th_string.c th_string.h
diffstat 2 files changed, 12 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/th_string.c	Fri Jun 10 23:43:36 2011 +0300
+++ b/th_string.c	Sat Jun 11 01:09:27 2011 +0300
@@ -467,7 +467,7 @@
     assert(len != NULL);
     
     if (*buf == NULL)
-        *bufsize = 0;
+        *bufsize = *len = 0;
     
     if (*buf == NULL || *len + grow >= *bufsize) {
         *bufsize += grow + TH_BUFGROW;
@@ -479,27 +479,31 @@
 }
 
 
-void th_vputch(char **buf, size_t *bufsize, size_t *len, const char ch)
+BOOL th_vputch(char **buf, size_t *bufsize, size_t *len, const char ch)
 {
     if (!th_growbuf(buf, bufsize, len, 1))
-        return;
+        return FALSE;
     
     (*buf)[*len] = ch;
     (*len)++;
+
+    return TRUE;
 }
 
 
-void th_vputs(char **buf, size_t *bufsize, size_t *len, const char *str)
+BOOL th_vputs(char **buf, size_t *bufsize, size_t *len, const char *str)
 {
     size_t slen;
     if (str == NULL)
-        return;
+        return FALSE;
     
     slen = strlen(str);
     if (!th_growbuf(buf, bufsize, len, slen))
-        return;
+        return FALSE;
 
     strcat(*buf + *len, str);
     (*len) += slen;
+    
+    return TRUE;
 }
 
--- a/th_string.h	Fri Jun 10 23:43:36 2011 +0300
+++ b/th_string.h	Sat Jun 11 01:09:27 2011 +0300
@@ -67,8 +67,8 @@
 int     th_get_hex_triplet(const char *);
 
 
-void    th_vputch(char **buf, size_t *bufsize, size_t *len, const char ch);
-void    th_vputs(char **buf, size_t *bufsize, size_t *len, const char *str);
+BOOL    th_vputch(char **buf, size_t *bufsize, size_t *len, const char ch);
+BOOL    th_vputs(char **buf, size_t *bufsize, size_t *len, const char *str);
 
 #define TH_BUFGROW       (32)