static int parse_content_key_value(const char *data, size_t pos, zbx_strloc_t *loc_name, zbx_strloc_t *loc_value)
static int str_loc_cmp(const char *src, const zbx_strloc_t *loc, const char *text, size_t text_len)
ZBX_RETURN_IF_NOT_EQUAL(loc->r - loc->l + 1, text_len);
return zbx_strncasecmp(src + loc->l, text, text_len);
static char *str_loc_dup(const char *src, const zbx_strloc_t *loc)
len = loc->r - loc->l + 1;
str = zbx_malloc(NULL, len + 1);
memcpy(str, src + loc->l, len);
#define ZBX_ATTRIBUTE_NAME_CHARLIST " \"'=<>`/"
static int parse_attribute_name(const char *data, size_t pos, zbx_strloc_t *loc)
const char *ptr = data + pos;
if (NULL != strchr(ZBX_ATTRIBUTE_NAME_CHARLIST, *ptr))
while (NULL == strchr(ZBX_ATTRIBUTE_NAME_CHARLIST, *(++ptr)))
loc->r = (size_t)(ptr - data) - 1;
#undef ZBX_ATTRIBUTE_NAME_CHARLIST
static size_t skip_spaces(const char *data, size_t pos)
while (' ' == data[pos] || '\t' == data[pos])
static int parse_attribute_op(const char *data, size_t pos, zbx_strloc_t *loc)
#define ZBX_UNQUOTED_ATTRIBUTE_VALUE_CHARLIST " \"'=<>`"
static int parse_attribute_value(const char *data, size_t pos, zbx_strloc_t *loc)