8 #include "system/nth_alloc.h"
10 char *string_duplicate(const char *str,
13 if (str_end != NULL && str > str_end) {
17 const size_t n = str_end == NULL ? strlen(str) : (size_t) (str_end - str);
18 char *dup_str = nth_alloc(sizeof(char) * (n + 1));
19 if (dup_str == NULL) {
23 memcpy(dup_str, str, n);
29 char *trim_endline(char *s)
31 const size_t n = strlen(s);
37 if (s[n - 1] == '\n') {
44 char *string_append(char *prefix, const char *suffix)
49 return string_duplicate(suffix, NULL);
52 prefix = nth_realloc(prefix, strlen(prefix) + strlen(suffix) + 1);
53 return strcat(prefix, suffix);