From 8b79b8149d1e23d90b5871f980aec65d8aa7ae23 Mon Sep 17 00:00:00 2001 From: physick Date: Wed, 15 Jul 2026 17:46:13 +0500 Subject: Puzzle infrastructure pt 1. --- src/utils/stringBuilder.c | 26 +++++++++++++++++++++----- src/utils/stringBuilder.h | 3 ++- 2 files changed, 23 insertions(+), 6 deletions(-) (limited to 'src/utils') diff --git a/src/utils/stringBuilder.c b/src/utils/stringBuilder.c index 805fb34..485a83b 100644 --- a/src/utils/stringBuilder.c +++ b/src/utils/stringBuilder.c @@ -2,7 +2,7 @@ #include #include -void AppendStringBuilder(StringBuilder *sb, const char *str, char separator) { +void AppendStringBuilder(StringBuilder *sb, const char *str) { size_t str_len = strlen(str); if (sb->val == NULL) { sb->val = malloc(str_len + 1); @@ -10,17 +10,33 @@ void AppendStringBuilder(StringBuilder *sb, const char *str, char separator) { memcpy(sb->val, str, str_len); sb->len = str_len; } else { - char *appended = realloc(sb->val, sb->len + str_len + 2); + char *appended = realloc(sb->val, sb->len + str_len + 1); if (appended == NULL) return; sb->val = appended; - sb->val[sb->len] = separator; - memcpy(sb->val + sb->len + 1, str, str_len); - sb->len = sb->len + str_len + 1; + memcpy(sb->val + sb->len, str, str_len); + sb->len = sb->len + str_len; } sb->val[sb->len] = 0x0; } +void AppendStringBuilderSep(StringBuilder *sb, const char *str, char separator) { + size_t str_len = strlen(str); + if (sb->val == NULL) { + AppendStringBuilder(sb, str); + return; + } + + char *appended = realloc(sb->val, sb->len + str_len + 2); + if (appended == NULL) return; + sb->val = appended; + + sb->val[sb->len] = separator; + memcpy(sb->val + sb->len + 1, str, str_len); + sb->len = sb->len + str_len + 1; + sb->val[sb->len] = 0x0; +} + void FreeStringBuilder(StringBuilder *sb) { if (sb->val != NULL) { free(sb->val); diff --git a/src/utils/stringBuilder.h b/src/utils/stringBuilder.h index a9730a2..07da46f 100644 --- a/src/utils/stringBuilder.h +++ b/src/utils/stringBuilder.h @@ -8,7 +8,8 @@ typedef struct { size_t len; } StringBuilder; -void AppendStringBuilder(StringBuilder *sb, const char *str, char separator); +void AppendStringBuilder(StringBuilder *sb, const char *str); +void AppendStringBuilderSep(StringBuilder *sb, const char *str, char separator); void FreeStringBuilder(StringBuilder *sb); #endif // SB_H -- cgit v1.3