diff options
| author | 2023-03-18 10:28:04 +0100 | |
|---|---|---|
| committer | 2023-03-18 10:28:04 +0100 | |
| commit | efe0a0960ae15f553e405c4544048d033c21cd48 (patch) | |
| tree | e1342a2ffe579ef14e3d0b6cf0fbc6af510d0ce6 /xs.h | |
| parent | Version 2.25 RELEASED. (diff) | |
| download | snac2-efe0a0960ae15f553e405c4544048d033c21cd48.tar.gz snac2-efe0a0960ae15f553e405c4544048d033c21cd48.tar.xz snac2-efe0a0960ae15f553e405c4544048d033c21cd48.zip | |
Backport from xs.
Diffstat (limited to 'xs.h')
| -rw-r--r-- | xs.h | 24 |
1 files changed, 9 insertions, 15 deletions
| @@ -69,8 +69,9 @@ xs_str *xs_replace_i(xs_str *str, const char *sfrom, const char *sto); | |||
| 69 | #define xs_replace(str, sfrom, sto) xs_replace_i(xs_dup(str), sfrom, sto) | 69 | #define xs_replace(str, sfrom, sto) xs_replace_i(xs_dup(str), sfrom, sto) |
| 70 | xs_str *xs_fmt(const char *fmt, ...); | 70 | xs_str *xs_fmt(const char *fmt, ...); |
| 71 | int xs_str_in(const char *haystack, const char *needle); | 71 | int xs_str_in(const char *haystack, const char *needle); |
| 72 | int xs_startswith(const char *str, const char *prefix); | 72 | int _xs_startsorends(const char *str, const char *xfix, int ends); |
| 73 | int xs_endswith(const char *str, const char *postfix); | 73 | #define xs_startswith(str, prefix) _xs_startsorends(str, prefix, 0) |
| 74 | #define xs_endswith(str, postfix) _xs_startsorends(str, postfix, 1) | ||
| 74 | xs_str *xs_crop_i(xs_str *str, int start, int end); | 75 | xs_str *xs_crop_i(xs_str *str, int start, int end); |
| 75 | xs_str *xs_strip_chars_i(xs_str *str, const char *chars); | 76 | xs_str *xs_strip_chars_i(xs_str *str, const char *chars); |
| 76 | #define xs_strip_i(str) xs_strip_chars_i(str, " \r\n\t\v\f") | 77 | #define xs_strip_i(str) xs_strip_chars_i(str, " \r\n\t\v\f") |
| @@ -81,7 +82,7 @@ xs_list *xs_list_append_m(xs_list *list, const char *mem, int dsz); | |||
| 81 | #define xs_list_append(list, data) xs_list_append_m(list, data, xs_size(data)) | 82 | #define xs_list_append(list, data) xs_list_append_m(list, data, xs_size(data)) |
| 82 | int xs_list_iter(xs_list **list, xs_val **value); | 83 | int xs_list_iter(xs_list **list, xs_val **value); |
| 83 | int xs_list_len(const xs_list *list); | 84 | int xs_list_len(const xs_list *list); |
| 84 | char *xs_list_get(const xs_list *list, int num); | 85 | xs_val *xs_list_get(const xs_list *list, int num); |
| 85 | xs_list *xs_list_del(xs_list *list, int num); | 86 | xs_list *xs_list_del(xs_list *list, int num); |
| 86 | xs_list *xs_list_insert(xs_list *list, int num, const xs_val *data); | 87 | xs_list *xs_list_insert(xs_list *list, int num, const xs_val *data); |
| 87 | xs_list *xs_list_insert_sorted(xs_list *list, const char *str); | 88 | xs_list *xs_list_insert_sorted(xs_list *list, const char *str); |
| @@ -100,7 +101,7 @@ xs_dict *xs_dict_append_m(xs_dict *dict, const xs_str *key, const xs_val *mem, i | |||
| 100 | xs_dict *xs_dict_prepend_m(xs_dict *dict, const xs_str *key, const xs_val *mem, int dsz); | 101 | xs_dict *xs_dict_prepend_m(xs_dict *dict, const xs_str *key, const xs_val *mem, int dsz); |
| 101 | #define xs_dict_prepend(dict, key, data) xs_dict_prepend_m(dict, key, data, xs_size(data)) | 102 | #define xs_dict_prepend(dict, key, data) xs_dict_prepend_m(dict, key, data, xs_size(data)) |
| 102 | int xs_dict_iter(xs_dict **dict, xs_str **key, xs_val **value); | 103 | int xs_dict_iter(xs_dict **dict, xs_str **key, xs_val **value); |
| 103 | xs_dict *xs_dict_get(const xs_dict *dict, const xs_str *key); | 104 | xs_val *xs_dict_get(const xs_dict *dict, const xs_str *key); |
| 104 | xs_dict *xs_dict_del(xs_dict *dict, const xs_str *key); | 105 | xs_dict *xs_dict_del(xs_dict *dict, const xs_str *key); |
| 105 | xs_dict *xs_dict_set(xs_dict *dict, const xs_str *key, const xs_val *data); | 106 | xs_dict *xs_dict_set(xs_dict *dict, const xs_str *key, const xs_val *data); |
| 106 | 107 | ||
| @@ -475,20 +476,13 @@ int xs_str_in(const char *haystack, const char *needle) | |||
| 475 | } | 476 | } |
| 476 | 477 | ||
| 477 | 478 | ||
| 478 | int xs_startswith(const char *str, const char *prefix) | 479 | int _xs_startsorends(const char *str, const char *xfix, int ends) |
| 479 | /* returns true if str starts with prefix */ | 480 | /* returns true if str starts or ends with xfix */ |
| 480 | { | ||
| 481 | return !!(xs_str_in(str, prefix) == 0); | ||
| 482 | } | ||
| 483 | |||
| 484 | |||
| 485 | int xs_endswith(const char *str, const char *postfix) | ||
| 486 | /* returns true if str ends with postfix */ | ||
| 487 | { | 481 | { |
| 488 | int ssz = strlen(str); | 482 | int ssz = strlen(str); |
| 489 | int psz = strlen(postfix); | 483 | int psz = strlen(xfix); |
| 490 | 484 | ||
| 491 | return !!(ssz >= psz && memcmp(postfix, str + ssz - psz, psz) == 0); | 485 | return !!(ssz >= psz && memcmp(xfix, str + (ends ? ssz - psz : 0), psz) == 0); |
| 492 | } | 486 | } |
| 493 | 487 | ||
| 494 | 488 | ||