removed a bunch of blank comment lines
[citadel.git] / webcit / decode.c
index 4e72f191d924c88c1c5be846e2fc0f0a8916b877..2593d8c72d99a3a090c5ca9b673c8aedda82ee0e 100644 (file)
@@ -1,3 +1,15 @@
+/*
+ * Copyright (c) 1996-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"
 #ifdef HAVE_ICONV
 
@@ -8,7 +20,7 @@
  *
  * tocode      Target encoding
  * fromcode    Source encoding
- */
+ * /
 iconv_t ctdl_iconv_open(const char *tocode, const char *fromcode)
 {
        iconv_t ic = (iconv_t)(-1) ;
@@ -24,10 +36,10 @@ iconv_t ctdl_iconv_open(const char *tocode, const char *fromcode)
        }
        return(ic);
 }
+*/
 
 
-
-inline char *FindNextEnd (char *bptr)
+static inline char *FindNextEnd (char *bptr)
 {
        char * end;
        /* Find the next ?Q? */
@@ -48,7 +60,7 @@ inline char *FindNextEnd (char *bptr)
  * Handle subjects with RFC2047 encoding such as:
  * =?koi8-r?B?78bP0s3Mxc7JxSDXz9rE1dvO2c3JINvB0sHNySDP?=
  */
-void utf8ify_rfc822_string(char *buf) {
+void utf8ify_rfc822_string(char **buf) {
        char *start, *end, *next, *nextend, *ptr;
        char newbuf[1024];
        char charset[128];
@@ -71,11 +83,11 @@ void utf8ify_rfc822_string(char *buf) {
         *  handle it anyway by converting from a user-specified default
         *  charset to UTF-8 if we see any nonprintable characters.
         */
-       len = strlen(buf);
+       len = strlen(*buf);
        for (i=0; i<len; ++i) {
-               if ((buf[i] < 32) || (buf[i] > 126)) {
+               if (((*buf)[i] < 32) || ((*buf)[i] > 126)) {
                        illegal_non_rfc2047_encoding = 1;
-                       i = len; ///< take a shortcut, it won't be more than one.
+                       i = len; /*< take a shortcut, it won't be more than one. */
                }
        }
        if (illegal_non_rfc2047_encoding) {
@@ -83,19 +95,19 @@ void utf8ify_rfc822_string(char *buf) {
                get_preference("default_header_charset", &default_header_charset);
                if ( (strcasecmp(ChrPtr(default_header_charset), "UTF-8")) && 
                     (strcasecmp(ChrPtr(default_header_charset), "us-ascii")) ) {
-                       ic = ctdl_iconv_open("UTF-8", ChrPtr(default_header_charset));
+                       ctdl_iconv_open("UTF-8", ChrPtr(default_header_charset), &ic);
                        if (ic != (iconv_t)(-1) ) {
                                ibuf = malloc(1024);
                                isav = ibuf;
-                               safestrncpy(ibuf, buf, 1024);
+                               safestrncpy(ibuf, *buf, 1023);
                                ibuflen = strlen(ibuf);
                                obuflen = 1024;
                                obuf = (char *) malloc(obuflen);
                                osav = obuf;
                                iconv(ic, &ibuf, &ibuflen, &obuf, &obuflen);
-                               osav[1024-obuflen] = 0;
-                               strcpy(buf, osav);
-                               free(osav);
+                               osav[1023-obuflen] = 0;
+                               free(*buf);
+                               *buf = osav;
                                iconv_close(ic);
                                free(isav);
                        }
@@ -104,8 +116,8 @@ void utf8ify_rfc822_string(char *buf) {
 
        /* pre evaluate the first pair */
        nextend = end = NULL;
-       len = strlen(buf);
-       start = strstr(buf, "=?");
+       len = strlen(*buf);
+       start = strstr(*buf, "=?");
        if (start != NULL) 
                end = FindNextEnd (start);
 
@@ -138,7 +150,7 @@ void utf8ify_rfc822_string(char *buf) {
                                /* now terminate the gab at the end */
                                delta = (next - end) - 2;
                                len -= delta;
-                               buf[len] = '\0';
+                               (*buf)[len] = '\0';
 
                                /* move next to its new location. */
                                next -= delta;
@@ -153,7 +165,7 @@ void utf8ify_rfc822_string(char *buf) {
        /* Now we handle foreign character sets properly encoded
         * in RFC2047 format.
         */
-       while (start=strstr(buf, "=?"), end=FindNextEnd((start != NULL)? start : buf),
+       while (start=strstr((*buf), "=?"), end=FindNextEnd((start != NULL)? start : (*buf)),
                ((start != NULL) && (end != NULL) && (end > start)) )
        {
                extract_token(charset, start, 1, '?', sizeof charset);
@@ -184,7 +196,7 @@ void utf8ify_rfc822_string(char *buf) {
                        ibuflen = strlen(istr);
                }
 
-               ic = ctdl_iconv_open("UTF-8", charset);
+               ctdl_iconv_open("UTF-8", charset, &ic);
                if (ic != (iconv_t)(-1) ) {
                        obuflen = 1024;
                        obuf = (char *) malloc(obuflen);
@@ -201,8 +213,9 @@ void utf8ify_rfc822_string(char *buf) {
                        remove_token(end, 0, '?');
                        strcpy(end, &end[1]);
 
-                       snprintf(newbuf, sizeof newbuf, "%s%s%s", buf, osav, end);
-                       strcpy(buf, newbuf);
+                       snprintf(newbuf, sizeof newbuf, "%s%s%s", *buf, osav, end);
+                       strcpy(*buf, newbuf);
+                       
                        free(osav);
                        iconv_close(ic);
                }
@@ -216,8 +229,8 @@ void utf8ify_rfc822_string(char *buf) {
                        remove_token(end, 0, '?');
                        strcpy(end, &end[1]);
 
-                       snprintf(newbuf, sizeof newbuf, "%s(unreadable)%s", buf, end);
-                       strcpy(buf, newbuf);
+                       snprintf(newbuf, sizeof newbuf, "%s(unreadable)%s", *buf, end);
+                       strcpy(*buf, newbuf);
                }
 
                free(isav);
@@ -234,7 +247,7 @@ void utf8ify_rfc822_string(char *buf) {
 
 }
 #else
-inline void utf8ify_rfc822_string(char *a){};
+inline void utf8ify_rfc822_string(char **a){};
 
 #endif