]> git.lizzy.rs Git - nothing.git/blobdiff - src/str.c
Use wrong_argument_type everywhere
[nothing.git] / src / str.c
index 3ece0d9d6319ad007083999e9147249dd8df939b..447fe25049370c1f7b150296ee5795bf3146c536 100644 (file)
--- a/src/str.c
+++ b/src/str.c
@@ -1,7 +1,11 @@
+#include <assert.h>
 #include <stdlib.h>
+#include <stdio.h>
 #include <string.h>
+#include <assert.h>
 
 #include "str.h"
+#include "system/nth_alloc.h"
 
 char *string_duplicate(const char *str,
                        const char *str_end)
@@ -11,7 +15,7 @@ char *string_duplicate(const char *str,
     }
 
     const size_t n = str_end == NULL ? strlen(str) : (size_t) (str_end - str);
-    char *dup_str = malloc(sizeof(char) * (n + 1));
+    char *dup_str = nth_alloc(sizeof(char) * (n + 1));
     if (dup_str == NULL) {
         return NULL;
     }
@@ -21,3 +25,30 @@ char *string_duplicate(const char *str,
 
     return dup_str;
 }
+
+char *trim_endline(char *s)
+{
+    const size_t n = strlen(s);
+
+    if (n == 0) {
+        return s;
+    }
+
+    if (s[n - 1] == '\n') {
+        s[n - 1] = '\0';
+    }
+
+    return s;
+}
+
+char *string_append(char *prefix, const char *suffix)
+{
+    assert(suffix);
+
+    if (prefix == NULL) {
+        return string_duplicate(suffix, NULL);
+    }
+
+    prefix = nth_realloc(prefix, strlen(prefix) + strlen(suffix) + 1);
+    return strcat(prefix, suffix);
+}