X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fhtml2html.c;h=ca2404385505ff14f1890d9d4114959e6eec9221;hb=HEAD;hp=c1c2b64a55a8283b87d92b939a6cb7c5cd114ecc;hpb=177580e5d6d4bd66ec718b2fe479906f7fa0c8b3;p=citadel.git
diff --git a/webcit/html2html.c b/webcit/html2html.c
index c1c2b64a5..a631eb81b 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)
{
@@ -55,7 +59,7 @@ void extract_charset_from_meta(char *charset, char *meta_http_equiv, char *meta_
if (!ptr) return;
safestrncpy(buf, ++ptr, sizeof buf);
- striplt(buf);
+ string_trim(buf);
if (!strncasecmp(buf, "charset=", 8)) {
strcpy(charset, &buf[8]);
@@ -70,17 +74,19 @@ void extract_charset_from_meta(char *charset, char *meta_http_equiv, char *meta_
strcpy(charset, "UTF-8");
}
+ /* Remove wandering punctuation */
+ if ((ptr=strchr(charset, '\"'))) *ptr = 0;
+ string_trim(charset);
}
}
-/**
- * \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];
@@ -103,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;
@@ -125,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 */
}
@@ -158,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
@@ -181,7 +187,7 @@ void output_html(const char *supplied_charset, int treat_as_wiki, int msgnum, St
meta = malloc(meta_length + 1);
safestrncpy(meta, meta_start, meta_length);
meta[meta_length] = 0;
- striplt(meta);
+ string_trim(meta);
if (!strncasecmp(meta, "HTTP-EQUIV=", 11)) {
meta_http_equiv = strdup(&meta[11]);
spaceptr = strchr(meta_http_equiv, ' ');
@@ -203,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.
*/
@@ -262,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.
*/
@@ -280,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);
@@ -290,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(LOG_DEBUG, "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(LOG_WARNING, "%s:%d iconv_open() failed: %s\n",
__FILE__, __LINE__, strerror(errno));
}
}
@@ -324,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