]> git.lizzy.rs Git - nothing.git/blob - src/str.c
TODO(#388)
[nothing.git] / src / str.c
1 #include <stdlib.h>
2 #include <string.h>
3
4 #include "str.h"
5
6 char *string_duplicate(const char *str,
7                        const char *str_end)
8 {
9     if (str_end != NULL && str > str_end) {
10         return NULL;
11     }
12
13     const size_t n = str_end == NULL ? strlen(str) : (size_t) (str_end - str);
14     char *dup_str = malloc(sizeof(char) * (n + 1));
15     if (dup_str == NULL) {
16         return NULL;
17     }
18
19     memcpy(dup_str, str, n);
20     dup_str[n] = '\0';
21
22     return dup_str;
23 }