From: rousskov <> Date: Sun, 8 Mar 1998 15:16:43 +0000 (+0000) Subject: - Added stringAppend X-Git-Tag: SQUID_3_0_PRE1~3877 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f21997a0583e27fd4f4ba93a1eeb1dfd6d084d87;p=thirdparty%2Fsquid.git - Added stringAppend --- diff --git a/src/String.cc b/src/String.cc index 2684634d1d..8cb38c975a 100644 --- a/src/String.cc +++ b/src/String.cc @@ -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 @@ -30,6 +30,13 @@ #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; + } +}