]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
- Added stringAppend
authorrousskov <>
Sun, 8 Mar 1998 15:16:43 +0000 (15:16 +0000)
committerrousskov <>
Sun, 8 Mar 1998 15:16:43 +0000 (15:16 +0000)
src/String.cc

index 2684634d1d019789dfeb94d17bf4499f86431646..8cb38c975a92445b4ed592ee03e404541f0d7682 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: String.cc,v 1.1 1998/03/08 07:53:13 rousskov Exp $
+ * $Id: String.cc,v 1.2 1998/03/08 08:16:43 rousskov Exp $
  *
  * DEBUG: section 61    String
  * AUTHOR: Duane Wessels
 
 #include "squid.h"
 
+static void
+stringInitBuf(String *s, size_t sz)
+{
+    s->buf = memAllocBuf(sz, &sz);
+    assert(sz < 65536);
+    s->size = sz;
+}
 
 void
 stringInit(String *s, const char *str)
@@ -44,12 +51,9 @@ stringInit(String *s, const char *str)
 void
 stringLimitInit(String *s, const char *str, int len)
 {
-    size_t sz = len+1;
     assert(s && str);
+    stringInitBuf(s, len+1);
     s->len = len;
-    s->buf = memAllocBuf(sz, &sz);
-    assert(sz < 65536);
-    s->size = sz;
     xmemcpy(s->buf, str, len);
     s->buf[len] = '\0';
 }
@@ -78,3 +82,22 @@ stringReset(String *s, const char *str)
     stringClean(s);
     stringInit(s, str);
 }
+
+void
+stringAppend(String *s, const char *str, int len)
+{
+    assert(s && s->buf);
+    if (s->len + len < s->size) {
+       strncat(s->buf, str, len);
+       s->len += len;
+    } else {
+       String snew = StringNull;
+       snew.len = s->len + len;
+       stringInitBuf(&snew, snew.len + 1);
+       xmemcpy(snew.buf, s->buf, s->len);
+       xmemcpy(snew.buf+s->len, str, len);
+       snew.buf[snew.len] = '\0';
+       stringClean(s);
+       *s = snew;
+    }
+}