about summary refs log tree commit diff stats
path: root/wrapperhelper/src/cstring.c
diff options
context:
space:
mode:
Diffstat (limited to 'wrapperhelper/src/cstring.c')
-rw-r--r--wrapperhelper/src/cstring.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/wrapperhelper/src/cstring.c b/wrapperhelper/src/cstring.c
index aecfb52e..86536915 100644
--- a/wrapperhelper/src/cstring.c
+++ b/wrapperhelper/src/cstring.c
@@ -71,6 +71,15 @@ int string_reserve_grow(string_t *s, size_t cap) {
 	return 1;
 }
 
+int string_trim(string_t *s) {
+	if (s->ssize == s->scap) return 1;
+	void *new_buf = realloc(s->buf, sizeof(char) * (s->ssize + 1));
+	if (!new_buf) return 0;
+	s->buf = new_buf;
+	s->scap = s->ssize;
+	return 1;
+}
+
 void string_del(string_t *s) {
 	if (s->buf) free(s->buf);
 	free(s);
@@ -118,6 +127,16 @@ void string_pop(string_t *s) {
 	}
 }
 
+void string_clear(string_t *s) {
+	if (!s->ssize) return;
+	if (!s->scap) return;
+	s->buf[s->ssize = 0] = '\0';
+	void *new_buf = realloc(s->buf, sizeof(char));
+	if (!new_buf) return; // We don't really care if the realloc fails, we just need to not update anything
+	s->buf = new_buf;
+	s->scap = 0;
+}
+
 string_t *string_dup(string_t const *s) {
 	string_t *ret = string_new_cap(s->ssize);
 	if (!ret) return NULL;