diff options
| author | dacctal <donotcontactmevia@email.invalid> | 2026-07-02 03:54:29 +0000 |
|---|---|---|
| committer | dacctal <donotcontactmevia@email.invalid> | 2026-07-02 03:54:29 +0000 |
| commit | 2fe0443d7073e59b1e4d75f49f0a5a417678f4cd (patch) | |
| tree | 24a269f1fa532eacea4380d03882abe145dc297d /src/str.c | |
| parent | fe3caeefac7a2081f5c9db90bf5c821624a71082 (diff) | |
ezntek: checkpoint!
Diffstat (limited to 'src/str.c')
| -rw-r--r-- | src/str.c | 25 |
1 files changed, 16 insertions, 9 deletions
@@ -160,12 +160,13 @@ void str_ncopy_into(str *dest, const str *src, size_t count) { } void str_ncopy_cstr_into(str *dest, const char *src, size_t count) { - assert_str_is_valid(dest); assert(src); - dest->len = count; - if (dest->cap < count + 1) + if (!str_is_valid(dest)) + *dest = str_new_with_capacity(count + 1); + else if (dest->cap < count + 1) str_reserve_exact(dest, count + 1); memcpy(dest->data, src, count); + dest->len = count; dest->data[count] = 0; } @@ -743,15 +744,21 @@ ptrdiff_t str_slc_find_char_right(const str_slc s, char c) { } str str_from_after_delim(str *arg, char delimiter) { - size_t i = str_find_char_right(arg, delimiter); - str res = str_slice_to_str(arg, i + 1, arg->len); - return res; + return str_from_after_delim_str_slc(_strslc(arg), delimiter); +} + +str str_from_after_delim_str_slc(str_slc arg, char delimiter) { + size_t i = str_slc_find_char_right(arg, delimiter); + return str_slc_slice_to_str(arg, i + 1, arg.len); } str str_from_before_delim(str *arg, char delimiter) { - size_t i = str_find_char(arg, delimiter); - str res = str_slice_to_str(arg, i + 1, arg->len); - return res; + return str_from_before_delim_str_slc(_strslc(arg), delimiter); +} + +str str_from_before_delim_str_slc(str_slc arg, char delimiter) { + size_t i = str_slc_find_char(arg, delimiter); + return str_slc_slice_to_str(arg, i + 1, arg.len); } str_slc str_slc_from_after_delim(str_slc arg, char delimiter) { |
