From: Baptiste Daroussin Date: Fri, 10 Jul 2026 18:17:35 +0000 (+0200) Subject: sb: update to latest version X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=HEAD;p=thirdparty%2Fmlmmj.git sb: update to latest version adapt to api changes (avoid collision with another lib) --- diff --git a/include/sb.h b/include/sb.h index d7c60246..f300e383 100644 --- a/include/sb.h +++ b/include/sb.h @@ -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); diff --git a/src/gethdrline.c b/src/gethdrline.c index fad26a2a..5a53595c 100644 --- a/src/gethdrline.c +++ b/src/gethdrline.c @@ -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) diff --git a/src/mlmmj-process.c b/src/mlmmj-process.c index 560475a3..be9cd13f 100644 --- a/src/mlmmj-process.c +++ b/src/mlmmj-process.c @@ -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) diff --git a/src/prepstdreply.c b/src/prepstdreply.c index db5ade4d..1c1de959 100644 --- a/src/prepstdreply.c +++ b/src/prepstdreply.c @@ -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++; diff --git a/src/sb.c b/src/sb.c index 18704ad8..dffc1fc3 100644 --- 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'; diff --git a/src/strgen.c b/src/strgen.c index 84e7aacc..06d126c4 100644 --- a/src/strgen.c +++ b/src/strgen.c @@ -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++;