123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- #include "aos_string.h"
- typedef int (*aos_is_char_pt)(char c);
- static void aos_strip_str_func(aos_string_t *str, aos_is_char_pt func);
- char *aos_pstrdup(aos_pool_t *p, const aos_string_t *s)
- {
- return apr_pstrndup(p, s->data, s->len);
- }
- static void aos_strip_str_func(aos_string_t *str, aos_is_char_pt func)
- {
- char *data = str->data;
- int len = str->len;
- int offset = 0;
- if (len == 0) return;
-
- while (len > 0 && func(data[len - 1])) {
- --len;
- }
-
- for (; offset < len && func(data[offset]); ++offset) {
- // empty;
- }
- str->data = data + offset;
- str->len = len - offset;
- }
- void aos_unquote_str(aos_string_t *str)
- {
- aos_strip_str_func(str, aos_is_quote);
- }
- void aos_strip_space(aos_string_t *str)
- {
- aos_strip_str_func(str, aos_is_space);
- }
- void aos_trip_space_and_cntrl(aos_string_t *str)
- {
- aos_strip_str_func(str, aos_is_space_or_cntrl);
- }
- int aos_ends_with(const aos_string_t *str, const aos_string_t *suffix)
- {
- if (!str || !suffix) {
- return 0;
- }
- return (str->len >= suffix->len) && strncmp(str->data + str->len - suffix->len, suffix->data, suffix->len) == 0;
- }
|