diff --git a/src/elogd.c b/src/elogd.c index b0f26173..0d0b4976 100755 --- a/src/elogd.c +++ b/src/elogd.c @@ -427,6 +427,7 @@ void compose_base_url(LOGBOOK * lbs, char *base_url, int size, BOOL email_notify void show_elog_entry(LOGBOOK * lbs, char *dec_path, char *command); char *loc(char *orig); void strencode(char *text); +void strencode_nouml(char *text); int scan_attributes(char *logbook); int is_inline_attachment(char *encoding, int message_id, char *text, int i, char *att); int setgroup(char *str); @@ -8099,6 +8100,57 @@ void strencode(char *text) /*------------------------------------------------------------------*/ +void strencode_nouml(char *text) +{ + int i; + + for (i = 0; i < (int) strlen(text); i++) { + switch (text[i]) { + case '\n': + rsprintf("
\n"); + break; + case '<': + rsprintf("<"); + break; + case '>': + rsprintf(">"); + break; + case '&': + if (strncmp(text+i+2, "uml", 3) == 0) + rsprintf("%c", text[i]); + else + rsprintf("&"); + break; + case '\"': + rsprintf("""); + break; + case ' ': + rsprintf(" "); + break; + + /* the translation for the search highliting */ + + case '\001': + rsprintf("<"); + break; + case '\002': + rsprintf(">"); + break; + case '\003': + rsprintf("\""); + break; + case '\004': + rsprintf(" "); + break; + + default: + rsprintf("%c", text[i]); + } + } +} + +/*------------------------------------------------------------------*/ + void xmlencode(char *text) { int i; @@ -16624,7 +16676,7 @@ void display_line(LOGBOOK * lbs, int message_id, int number, char *mode, e.g. only the start of a table */ strip_html(str); if (str[0]) - strencode(str); + strencode_nouml(str); else rsputs(" "); } else { @@ -16671,7 +16723,7 @@ void display_line(LOGBOOK * lbs, int message_id, int number, char *mode, e.g. only the start of a table */ strip_html(str); if (str[0]) - strencode(str); + strencode_nouml(str); else rsputs(" "); rsputs("\n");