From 519f1f8031687ebf3853817a8b2e3557c2443d67 Mon Sep 17 00:00:00 2001 From: "Rafael G. Martins" Date: Mon, 27 Jun 2016 03:01:20 +0200 Subject: content-parser: rewrote inline parser. parser is stricter now, and won't produce invalid HTML anymore. --- src/utils.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'src/utils.c') diff --git a/src/utils.c b/src/utils.c index 855b503..d7362a6 100644 --- a/src/utils.c +++ b/src/utils.c @@ -287,6 +287,27 @@ sb_str_replace(const char *str, const char search, const char *replace) } +char* +sb_str_find(const char *str, char c) +{ + // this is somewhat similar to strchr, but respects '\' escaping. + if (str == NULL) + return NULL; + if (c == '\0') + return (char*) str + strlen(str); + for (size_t i = 0; str[i] != '\0'; i++) { + if (str[i] == '\\') { + i++; + continue; + } + if (str[i] == c) { + return (char*) str + i; + } + } + return NULL; +} + + void sb_strv_free(char **strv) { @@ -425,6 +446,26 @@ sb_string_append_printf(sb_string_t *str, const char *format, ...) } +sb_string_t* +sb_string_append_escaped(sb_string_t *str, const char *suffix) +{ + if (str == NULL) + return NULL; + if (suffix == NULL) + return str; + bool escaped = false; + for (size_t i = 0; suffix[i] != '\0'; i++) { + if (suffix[i] == '\\' && !escaped) { + escaped = true; + continue; + } + escaped = false; + str = sb_string_append_c(str, suffix[i]); + } + return str; +} + + sb_trie_t* sb_trie_new(sb_free_func_t free_func) { -- cgit v1.2.3-18-g5258