diff options
Diffstat (limited to 'xs.h')
| -rw-r--r-- | xs.h | 19 |
1 files changed, 18 insertions, 1 deletions
| @@ -62,7 +62,8 @@ xs_str *xs_str_new(const char *str); | |||
| 62 | xs_str *xs_str_new_sz(const char *mem, int sz); | 62 | xs_str *xs_str_new_sz(const char *mem, int sz); |
| 63 | xs_str *xs_str_wrap_i(const char *prefix, xs_str *str, const char *suffix); | 63 | xs_str *xs_str_wrap_i(const char *prefix, xs_str *str, const char *suffix); |
| 64 | #define xs_str_prepend_i(str, prefix) xs_str_wrap_i(prefix, str, NULL) | 64 | #define xs_str_prepend_i(str, prefix) xs_str_wrap_i(prefix, str, NULL) |
| 65 | #define xs_str_cat(str, suffix) xs_str_wrap_i(NULL, str, suffix) | 65 | xs_str *_xs_str_cat(xs_str *str, const char *strs[]); |
| 66 | #define xs_str_cat(str, ...) _xs_str_cat(str, (const char *[]){ __VA_ARGS__, NULL }) | ||
| 66 | xs_str *xs_replace_in(xs_str *str, const char *sfrom, const char *sto, int times); | 67 | xs_str *xs_replace_in(xs_str *str, const char *sfrom, const char *sto, int times); |
| 67 | #define xs_replace_i(str, sfrom, sto) xs_replace_in(str, sfrom, sto, XS_ALL) | 68 | #define xs_replace_i(str, sfrom, sto) xs_replace_in(str, sfrom, sto, XS_ALL) |
| 68 | #define xs_replace(str, sfrom, sto) xs_replace_in(xs_dup(str), sfrom, sto, XS_ALL) | 69 | #define xs_replace(str, sfrom, sto) xs_replace_in(xs_dup(str), sfrom, sto, XS_ALL) |
| @@ -451,6 +452,22 @@ xs_str *xs_str_wrap_i(const char *prefix, xs_str *str, const char *suffix) | |||
| 451 | } | 452 | } |
| 452 | 453 | ||
| 453 | 454 | ||
| 455 | xs_str *_xs_str_cat(xs_str *str, const char *strs[]) | ||
| 456 | /* concatenates all strings after str */ | ||
| 457 | { | ||
| 458 | int o = strlen(str); | ||
| 459 | |||
| 460 | while (*strs) { | ||
| 461 | int sz = strlen(*strs); | ||
| 462 | str = xs_insert_m(str, o, *strs, sz); | ||
| 463 | o += sz; | ||
| 464 | strs++; | ||
| 465 | } | ||
| 466 | |||
| 467 | return str; | ||
| 468 | } | ||
| 469 | |||
| 470 | |||
| 454 | xs_str *xs_replace_in(xs_str *str, const char *sfrom, const char *sto, int times) | 471 | xs_str *xs_replace_in(xs_str *str, const char *sfrom, const char *sto, int times) |
| 455 | /* replaces inline all sfrom with sto */ | 472 | /* replaces inline all sfrom with sto */ |
| 456 | { | 473 | { |