diff options
| -rw-r--r-- | xs.h | 24 | ||||
| -rw-r--r-- | xs_version.h | 2 |
2 files changed, 10 insertions, 16 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 | ||
diff --git a/xs_version.h b/xs_version.h index 4338f70..854d62c 100644 --- a/xs_version.h +++ b/xs_version.h | |||
| @@ -1 +1 @@ | |||
| /* ee3466736d01d22d67ec800dbd4d3b0ccc4251b1 */ | /* a261bec376598d97dc10eb19f4ecb765333d071b */ | ||