]> git.ipfire.org Git - thirdparty/mlmmj.git/commitdiff
sb: update to latest version master
authorBaptiste Daroussin <bapt@FreeBSD.org>
Fri, 10 Jul 2026 18:17:35 +0000 (20:17 +0200)
committerBaptiste Daroussin <bapt@FreeBSD.org>
Fri, 10 Jul 2026 18:17:35 +0000 (20:17 +0200)
adapt to api changes (avoid collision with another lib)

include/sb.h
src/gethdrline.c
src/mlmmj-process.c
src/prepstdreply.c
src/sb.c
src/strgen.c

index d7c60246cfeef300820fc2a45f4f6bb70338c6eb..f300e383ba06b3ba693320d63d6863c6c50e43d9 100644 (file)
@@ -6,7 +6,7 @@
  * Usage:
  *   sb_t sb = sb_init();
  *   sb_printf(&sb, "hello %s", "world");
- *   sb_append(&sb, "!");
+ *   sb_cat(&sb, "!");
  *   char *s = sb_get(&sb);  // transfers ownership
  *   free(s);
  *
@@ -14,7 +14,7 @@
  *   sb_t sb2 = sb_init();
  *   sb_printf(&sb2, "answer = %d", 42);
  *   puts(sb2.d);   // direct access
- *   sb_free(&sb2); // frees buffer
+ *   sb_fini(&sb2); // frees buffer
  */
 
 #ifndef SB_H
@@ -43,11 +43,11 @@ typedef struct {
 
 /* Larger functions defined in sb.c (non-inline to save space). */
 void sb_grow(sb_t *sb, size_t needed);
-void sb_append(sb_t *sb, const char *s);
-void sb_append_n(sb_t *sb, const char *s, size_t n);
-void sb_append_c(sb_t *sb, char c);
+void sb_cat(sb_t *sb, const char *s);
+void sb_cat_n(sb_t *sb, const char *s, size_t n);
+void sb_cat_c(sb_t *sb, char c);
 void sb_printf(sb_t *sb, const char *fmt, ...) SB_PRINTF_ATTR(2, 3);
-void sb_free(sb_t *sb);
+void sb_fini(sb_t *sb);
 void sb_reset(sb_t *sb);
 char *sb_get(sb_t *sb);
 char *sb_str(sb_t *sb);
index fad26a2a68c4c4066f0c19ec5cf70dc156b647d9..5a53595c4ec24e080b9c8ab68434b6fc2c45d761 100644 (file)
@@ -47,20 +47,20 @@ char *gethdrline(FILE *f, char **unfolded)
        }
 
        if (unfolded != NULL)
-               sb_append(&raw, line);
+               sb_cat(&raw, line);
 
        chomp(line);
 
        /* end-of-headers */
        if (*line == '\0') {
-               sb_free(&raw);
+               sb_fini(&raw);
                if (unfolded != NULL)
                        *unfolded = NULL;
                free(line);
                return NULL;
        }
 
-       sb_append(&folded, line);
+       sb_cat(&folded, line);
 
        for(;;) {
                /* look ahead one char to determine if we need to fold */
@@ -76,10 +76,10 @@ char *gethdrline(FILE *f, char **unfolded)
                        break;
 
                if (raw.len != 0)
-                       sb_append(&raw, line);
+                       sb_cat(&raw, line);
 
                chomp(line);
-               sb_append(&folded, line);
+               sb_cat(&folded, line);
        }
        free(line);
        if (unfolded != NULL)
index 560475a3aa8f3dae3b8f64bfa7ce925a7985d6ae..be9cd13f5773421925b71faba4a0bb1547c16769 100644 (file)
@@ -115,7 +115,7 @@ static bool is_moderator(int listfd, const char *address,
                                goto out;
                }
                if (moderators)
-                       sb_append(&str, line);
+                       sb_cat(&str, line);
        }
 
        if (moderators)
index db5ade4d9439cea44e0028b4855891396b57bf56..1c1de959d435e2b61e24194be8d6b92d1ff0f591 100644 (file)
@@ -357,7 +357,7 @@ do_substitute(sb_t *str, const char *line, int listfd, int ctrlfd, text *txt)
        key = line;
        endpos = strchr(key, '$');
        if (endpos == NULL) {
-               sb_append_c(str, '$');
+               sb_cat_c(str, '$');
                return (0);
        }
        len = endpos - key;
@@ -375,7 +375,7 @@ do_substitute(sb_t *str, const char *line, int listfd, int ctrlfd, text *txt)
                        subst = txt->substs.d[_i];
                        if (strlen (subst->token) == len &&
                            strncmp(key, subst->token, len) == 0) {
-                               sb_append(str, subst->subst);
+                               sb_cat(str, subst->subst);
                                found = true;
                                break;
                        }
@@ -453,7 +453,7 @@ char *substitute(const char *line, int listfd, int ctrlfd, text *txt)
 
        while (*pos != '\0') {
                if (*pos != '$')
-                       sb_append_c(&str, *pos);
+                       sb_cat_c(&str, *pos);
                else
                        pos += do_substitute(&str, pos, listfd, ctrlfd, txt);
                pos++;
index 18704ad89eb4605c32bf79176bf2cd45cb3ee357..dffc1fc3354df05b98b9e397a6bb0f73188993c3 100644 (file)
--- a/src/sb.c
+++ b/src/sb.c
@@ -12,7 +12,7 @@ sb_grow(sb_t *sb, size_t needed)
 {
        if (needed <= sb->cap)
                return;
-       size_t newcap = sb->cap ? sb->cap : 64;
+       size_t newcap = sb->cap ? sb->cap * 2 : 512;
        while (newcap < needed)
                newcap *= 2;
        char *nd = realloc(sb->d, newcap);
@@ -23,7 +23,7 @@ sb_grow(sb_t *sb, size_t needed)
 }
 
 void
-sb_append(sb_t *sb, const char *s)
+sb_cat(sb_t *sb, const char *s)
 {
        size_t slen = strlen(s);
        sb_grow(sb, sb->len + slen + 1);
@@ -32,7 +32,7 @@ sb_append(sb_t *sb, const char *s)
 }
 
 void
-sb_append_n(sb_t *sb, const char *s, size_t n)
+sb_cat_n(sb_t *sb, const char *s, size_t n)
 {
        if (n == 0)
                return;
@@ -43,7 +43,7 @@ sb_append_n(sb_t *sb, const char *s, size_t n)
 }
 
 void
-sb_append_c(sb_t *sb, char c)
+sb_cat_c(sb_t *sb, char c)
 {
        sb_grow(sb, sb->len + 2);
        sb->d[sb->len++] = c;
@@ -57,7 +57,7 @@ sb_printf(sb_t *sb, const char *fmt, ...)
        int n;
 
        if (sb->cap == 0)
-               sb_grow(sb, 64);
+               sb_grow(sb, 512);
 
        for (;;) {
                size_t remain = sb->cap - sb->len;
@@ -78,8 +78,10 @@ sb_printf(sb_t *sb, const char *fmt, ...)
 }
 
 void
-sb_free(sb_t *sb)
+sb_fini(sb_t *sb)
 {
+       if (sb == NULL)
+               return;
        free(sb->d);
        sb->d = NULL;
        sb->len = 0;
@@ -89,6 +91,8 @@ sb_free(sb_t *sb)
 void
 sb_reset(sb_t *sb)
 {
+       if (sb == NULL)
+               return;
        sb->len = 0;
        if (sb->d)
                sb->d[0] = '\0';
@@ -97,6 +101,8 @@ sb_reset(sb_t *sb)
 char *
 sb_get(sb_t *sb)
 {
+       if (sb == NULL)
+               return (NULL);
        if (sb->d == NULL) {
                sb_grow(sb, 1);
                sb->d[0] = '\0';
index 84e7aacc8b10fd52dc723334b53aaf4652e15aae..06d126c487e18447d92a94246f84e9455c114a02 100644 (file)
@@ -240,7 +240,7 @@ decode_qp(const char *qpstr, bool qformat)
                switch (*qpstr) {
                case '=':
                        if (strlen(qpstr) < 2) {
-                               sb_append_c(&str, *qpstr);
+                               sb_cat_c(&str, *qpstr);
                                break;
                        }
                        if (qpstr[1] == '\r' && qpstr[2] == '\n') {
@@ -252,24 +252,24 @@ decode_qp(const char *qpstr, bool qformat)
                                break;
                        }
                        if (strchr("0123456789ABCDEFabcdef", qpstr[1]) == NULL) {
-                               sb_append_c(&str, *qpstr);
+                               sb_cat_c(&str, *qpstr);
                                break;
                        }
                        if (strchr("0123456789ABCDEFabcdef", qpstr[2]) == NULL) {
-                               sb_append_c(&str, *qpstr);
+                               sb_cat_c(&str, *qpstr);
                                break;
                        }
-                       sb_append_c(&str, decode_char(qpstr));
+                       sb_cat_c(&str, decode_char(qpstr));
                        qpstr += 2;
                        break;
                case '_':
                        if (qformat) {
-                               sb_append_c(&str, 0x20);
+                               sb_cat_c(&str, 0x20);
                                break;
                        }
                        /* FALLTHROUGH */
                default:
-                       sb_append_c(&str, *qpstr);
+                       sb_cat_c(&str, *qpstr);
                        break;
                }
                qpstr++;