summaryrefslogtreecommitdiff
path: root/src/utils
diff options
context:
space:
mode:
authorphysick <mynameisgennadiy@vk.com>2026-07-15 17:46:13 +0500
committerphysick <mynameisgennadiy@vk.com>2026-07-15 17:46:13 +0500
commit8b79b8149d1e23d90b5871f980aec65d8aa7ae23 (patch)
tree88a8788b75270dba53a15cbc2b6e0916f05301c6 /src/utils
parentf314b56da42e1ead200e2373e9b214f77290d03b (diff)
Puzzle infrastructure pt 1.
Diffstat (limited to 'src/utils')
-rw-r--r--src/utils/stringBuilder.c26
-rw-r--r--src/utils/stringBuilder.h3
2 files changed, 23 insertions, 6 deletions
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 <stdlib.h>
#include <string.h>
-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