From bee752b21808ed65f633cc97cef98d7923f2c337 Mon Sep 17 00:00:00 2001 From: Stefan Ritt Date: Sat, 16 Jul 2005 10:18:17 +0000 Subject: [PATCH] Added '\' as escape character for HTML and ELCode tags SVN revision: 1428 --- src/elogd.c | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/src/elogd.c b/src/elogd.c index 19c7cb70..40fb2279 100755 --- a/src/elogd.c +++ b/src/elogd.c @@ -6,6 +6,9 @@ Contents: Web server program for Electronic Logbook ELOG $Log$ + Revision 1.703 2005/07/16 10:18:17 ritt + Added '\' as escape character for HTML and ELCode tags + Revision 1.702 2005/07/11 10:28:04 ritt Added 'title' to all icons for FireFox @@ -5914,9 +5917,11 @@ void logd(const char *format, ...) /*------------------------------------------------------------------*/ +char *html_tags[] = { "", "", "

", "


", "" }; + int is_html(char *s) { - char *str; + char *str, *p; int i; str = xstrdup(s); @@ -5925,20 +5930,24 @@ int is_html(char *s) str[i] = toupper(s[i]); str[i] = 0; - if (strstr(str, "')) { + p = strstr(str, "') && p > str && *(p-1) != '\\') { xfree(str); return TRUE; } - if (strstr(str, "')) { + p = strstr(str, "') && p > str && *(p-1) != '\\') { xfree(str); return TRUE; } - if (strstr(str, "
") || strstr(str, "
") || strstr(str, "") || strstr(str, "") || - strstr(str, "

")) { - xfree(str); - return TRUE; + for (i=0 ; html_tags[i][0] ; i++) { + p = strstr(str, html_tags[i]); + if (p && strchr(str, '>') && p > str && *(p-1) != '\\') { + xfree(str); + return TRUE; + } } xfree(str); @@ -6185,7 +6194,13 @@ void rsputs2(const char *str) j += 4; break; - /* the translation for the search highliting */ + /* suppress escape character '\' in front of HTML or ELCode tag */ + case '\\': + if (str[i+1] != '<' && str[i+1] != '[') + return_buffer[j++] = str[i]; + break; + + /* the translation for the search highliting */ case '\001': strcat(return_buffer, "<"); j++; @@ -6252,6 +6267,9 @@ typedef struct { PATTERN_LIST pattern_list[] = { + /* escape */ + {"\\[", "["}, + /* smileys */ {":))", ""}, {":-))", ""},