]> jfr.im git - irc/quakenet/newserv.git/blobdiff - lib/stringbuf.c
BUILD: add require-all build mode
[irc/quakenet/newserv.git] / lib / stringbuf.c
index a558073bb05ab558ef0d8166253905cea04ffaad..3fce79118b46eb50962b6d504d3b489a6fcf2ef1 100644 (file)
@@ -1,5 +1,11 @@
 #include "stringbuf.h"
 
+void sbinit(StringBuf *buf, char *c, int capacity) {
+  buf->buf = c;
+  buf->capacity = capacity;
+  buf->len = 0;
+}
+
 int sbaddchar(StringBuf *buf, char c) {
   if(buf->len >= buf->capacity - 1)
     return 0;
@@ -25,6 +31,23 @@ int sbaddstr(StringBuf *buf, char *c) {
   return 1;
 }
 
+int sbaddstrlen(StringBuf *buf, char *c, size_t len) {
+  int remaining = buf->capacity - buf->len - 1;
+  char *p;
+  int i;
+
+  for(p=c,i=0;i<len;i++,p++) {
+    if(remaining <= 0)
+      return 0;
+
+    remaining--;
+
+    buf->buf[buf->len++] = *p;
+  }
+
+  return 1;
+}
+
 int sbterminate(StringBuf *buf) {
   if(buf->capacity - buf->len > 0) {
     buf->buf[buf->len] = '\0';