lnk commit front code
This commit is contained in:
54
include/oss_sdk/aos_string.c
Normal file
54
include/oss_sdk/aos_string.c
Normal file
@@ -0,0 +1,54 @@
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user