void str_append_c (str_t to, const char *from, int sep) { size_t flen = strlen (from); int use_sep = (sep != 0 && to->length > 0); size_t newlen = STR_LENGTH(to) + flen + (use_sep ? 1 : 0); int idx = STR_LENGTH(to); str_size_check (to, newlen); if (use_sep) to->heap[idx++] = sep; memcpy (to->heap + idx, from, flen+1); to->length = newlen; }
void str_test() { my_str *strp = alloc_str(test, strlen(test)); printf("content: %s, len: %d\n", STR_CONTENT(strp), STR_LENGTH(strp) + 1); free_str(strp); }
void str_trunc (str_t s, int len) { if (len < 0 || (size_t)len >= STR_LENGTH(s)) return; s->heap[len] = 0; s->length = len; }
void str_init_from_str (str_ptr s, const str_t sf) { str_init_from_c_raw (s, CSTR(sf), STR_LENGTH(sf)); }