X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fhtml2html.c;h=965dc55d69bc57ea9458068f8d19602897b261aa;hb=fb6f6fa4ec4e3277e30d84326d48e6850822d318;hp=1daf7b4103218872572b09c5e9186b3d27f10485;hpb=0d724ee4b3a8f529271c0d1d146919d34951880b;p=citadel.git diff --git a/webcit/html2html.c b/webcit/html2html.c index 1daf7b410..965dc55d6 100644 --- a/webcit/html2html.c +++ b/webcit/html2html.c @@ -1,20 +1,24 @@ /* - * $Id$ - */ -/** - * \defgroup HTML2HTML Output an HTML message, modifying it slightly to make sure it plays nice + * Output an HTML message, modifying it slightly to make sure it plays nice * with the rest of our web framework. - * \ingroup WebcitHttpServer + * + * Copyright (c) 2005-2012 by the citadel.org team + * + * This program is open source software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. */ -/*@{*/ + #include "webcit.h" #include "webserver.h" -/** - * \brief Strip surrounding single or double quotes from a string. - * - * \param s String to be stripped. +/* + * Strip surrounding single or double quotes from a string. */ void stripquotes(char *s) { @@ -32,12 +36,12 @@ void stripquotes(char *s) } -/** - * \brief Check to see if a META tag has overridden the declared MIME character set. +/* + * Check to see if a META tag has overridden the declared MIME character set. * - * \param charset Character set name (left unchanged if we don't do anything) - * \param meta_http_equiv Content of the "http-equiv" portion of the META tag - * \param meta_content Content of the "content" portion of the META tag + * charset Character set name (left unchanged if we don't do anything) + * meta_http_equiv Content of the "http-equiv" portion of the META tag + * meta_content Content of the "content" portion of the META tag */ void extract_charset_from_meta(char *charset, char *meta_http_equiv, char *meta_content) { @@ -78,12 +82,11 @@ void extract_charset_from_meta(char *charset, char *meta_http_equiv, char *meta_ -/** - * \brief Sanitize and enhance an HTML message for display. - * Also convert weird character sets to UTF-8 if necessary. - * Also fixup img src="cid:..." type inline images to fetch the image +/* + * Sanitize and enhance an HTML message for display. + * Also convert weird character sets to UTF-8 if necessary. + * Also fixup img src="cid:..." type inline images to fetch the image * - * \param supplied_charset the input charset as declared in the MIME headers */ void output_html(const char *supplied_charset, int treat_as_wiki, int msgnum, StrBuf *Source, StrBuf *Target) { char buf[SIZ]; @@ -106,11 +109,11 @@ void output_html(const char *supplied_charset, int treat_as_wiki, int msgnum, St StrBuf *BodyArea = NULL; #ifdef HAVE_ICONV iconv_t ic = (iconv_t)(-1) ; - char *ibuf; /**< Buffer of characters to be converted */ - char *obuf; /**< Buffer for converted characters */ - size_t ibuflen; /**< Length of input buffer */ - size_t obuflen; /**< Length of output buffer */ - char *osav; /**< Saved pointer to output buffer */ + char *ibuf; /* Buffer of characters to be converted */ + char *obuf; /* Buffer for converted characters */ + size_t ibuflen; /* Length of input buffer */ + size_t obuflen; /* Length of output buffer */ + char *osav; /* Saved pointer to output buffer */ #endif if (Target == NULL) Target = WC->WBuf; @@ -128,7 +131,7 @@ void output_html(const char *supplied_charset, int treat_as_wiki, int msgnum, St StrBufAppendPrintf(Target, _("realloc() error! couldn't get %d bytes: %s"), buffer_length + 1, strerror(errno)); - StrBufAppendPrintf(Target, "

\n"); + StrBufAppendPrintf(Target, "

\n"); while (serv_getln(buf, sizeof buf), strcmp(buf, "000")) { /** flush */ } @@ -161,7 +164,7 @@ void output_html(const char *supplied_charset, int treat_as_wiki, int msgnum, St ++ptr; if ((ptr == NULL) || (ptr >= msgend)) break; - /** + /* * Look for META tags. Some messages (particularly in * Asian locales) illegally declare a message's character * set in the HTML instead of in the MIME headers. This @@ -206,7 +209,7 @@ void output_html(const char *supplied_charset, int treat_as_wiki, int msgnum, St } } - /** + /* * Any of these tags cause everything up to and including * the tag to be removed. */ @@ -265,7 +268,7 @@ void output_html(const char *supplied_charset, int treat_as_wiki, int msgnum, St msgstart = ptr; } - /** + /* * Any of these tags cause everything including and following * the tag to be removed. */ @@ -283,7 +286,7 @@ void output_html(const char *supplied_charset, int treat_as_wiki, int msgnum, St strcpy(msg, msgstart); } - /** Now go through the message, parsing tags as necessary. */ + /* Now go through the message, parsing tags as necessary. */ converted_msg = NewStrBufPlain(NULL, content_length + 8192); @@ -293,10 +296,10 @@ void output_html(const char *supplied_charset, int treat_as_wiki, int msgnum, St && (strcasecmp(charset, "UTF-8")) && (strcasecmp(charset, "")) ) { - lprintf(9, "Converting %s to UTF-8\n", charset); + syslog(9, "Converting %s to UTF-8\n", charset); ctdl_iconv_open("UTF-8", charset, &ic); if (ic == (iconv_t)(-1) ) { - lprintf(5, "%s:%d iconv_open() failed: %s\n", + syslog(5, "%s:%d iconv_open() failed: %s\n", __FILE__, __LINE__, strerror(errno)); } } @@ -327,7 +330,7 @@ void output_html(const char *supplied_charset, int treat_as_wiki, int msgnum, St #endif - /** + /* * At this point, the message has been stripped down to * only the content inside the tags, and has * been converted to UTF-8 if it was originally in a foreign @@ -336,7 +339,7 @@ void output_html(const char *supplied_charset, int treat_as_wiki, int msgnum, St */ if (converted_msg == NULL) { - StrBufAppendPrintf(Target, "Error %d: %s
%s:%d", errno, strerror(errno), __FILE__, __LINE__); + StrBufAppendPrintf(Target, "Error %d: %s
%s:%d", errno, strerror(errno), __FILE__, __LINE__); goto BAIL; } @@ -385,9 +388,16 @@ void output_html(const char *supplied_charset, int treat_as_wiki, int msgnum, St StrBufAppendPrintf(converted_msg, new_window); ptr = &ptr[8]; } - else if ( (treat_as_wiki) && (strncasecmp(ptr, "CurRoom.name, NULL); + StrBufAppendPrintf(converted_msg, "?page="); ptr = &ptr[9]; } else { @@ -404,15 +414,16 @@ void output_html(const char *supplied_charset, int treat_as_wiki, int msgnum, St * and then ended the message) */ if (!tag_end) { - lprintf(9, "tag_end is null and ptr is:\n"); - lprintf(9, "%s\n", ptr); - lprintf(9, "Theoretical bytes remaining: %d\n", msgend - ptr); + syslog(9, "tag_end is null and ptr is:\n"); + syslog(9, "%s\n", ptr); + syslog(9, "Theoretical bytes remaining: %d\n", (int)(msgend - ptr)); } - src=strstr(ptr, " src=\"cid:"); + src=strstr(ptr, "src=\"cid:"); ++brak; if (src + && isspace(*(src-1)) && tag_end && (cid_start=strchr(src,':')) && (cid_end=strchr(cid_start,'"')) @@ -545,7 +556,7 @@ void output_html(const char *supplied_charset, int treat_as_wiki, int msgnum, St StrBufAppendBuf(Target, converted_msg, 0); BAIL: /** A little trailing vertical whitespace... */ - StrBufAppendPrintf(Target, "

\n"); + StrBufAppendPrintf(Target, "

\n"); /** Now give back the memory */ FreeStrBuf(&converted_msg); @@ -618,6 +629,8 @@ void UrlizeText(StrBuf* Target, StrBuf *Source, StrBuf *WrkBuf) if (TrailerLen > 0) StrBufAppendBufPlain(Target, end, TrailerLen, 0); } + + void url(char *buf, size_t bufsize) { int len, UrlLen, Offset, TrailerLen, outpos; @@ -628,7 +641,7 @@ void url(char *buf, size_t bufsize) start = NULL; len = strlen(buf); if (len > bufsize) { - lprintf(1, "URL: content longer than buffer!"); + syslog(1, "URL: content longer than buffer!"); return; } end = buf + len; @@ -664,7 +677,7 @@ void url(char *buf, size_t bufsize) UrlLen = end - start; if (UrlLen > sizeof(urlbuf)){ - lprintf(1, "URL: content longer than buffer!"); + syslog(1, "URL: content longer than buffer!"); return; } memcpy(urlbuf, start, UrlLen); @@ -677,7 +690,7 @@ void url(char *buf, size_t bufsize) "%ca href=%c%s%c TARGET=%c%s%c%c%s%c/A%c", LB, QU, urlbuf, QU, QU, TARGET, QU, RB, urlbuf, LB, RB); if (outpos >= sizeof(outbuf) - Offset) { - lprintf(1, "URL: content longer than buffer!"); + syslog(1, "URL: content longer than buffer!"); return; } @@ -685,14 +698,10 @@ void url(char *buf, size_t bufsize) if (TrailerLen > 0) memcpy(outbuf + Offset + outpos, end, TrailerLen); if (Offset + outpos + TrailerLen > bufsize) { - lprintf(1, "URL: content longer than buffer!"); + syslog(1, "URL: content longer than buffer!"); return; } memcpy (buf, outbuf, Offset + outpos + TrailerLen); *(buf + Offset + outpos + TrailerLen) = '\0'; } - - - -/*@}*/