1 #include "system/stacktrace.h"
5 #include "system/stacktrace.h"
8 #include "system/nth_alloc.h"
10 char *string_duplicate(const char *str,
15 if (str_end != NULL && str > str_end) {
19 const size_t n = str_end == NULL ? strlen(str) : (size_t) (str_end - str);
20 char *dup_str = nth_calloc(1, sizeof(char) * (n + 1));
21 if (dup_str == NULL) {
25 memcpy(dup_str, str, n);
31 char *trim_endline(char *s)
33 const size_t n = strlen(s);
39 if (s[n - 1] == '\n') {
46 char *string_append(char *prefix, const char *suffix)
51 return string_duplicate(suffix, NULL);
54 prefix = nth_realloc(prefix, strlen(prefix) + strlen(suffix) + 1);
55 return strcat(prefix, suffix);