X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;ds=sidebyside;f=sbr%2Ffmt_rfc2047.c;h=5bc785058053f9569e14eb2a9d32f14e6f08f24b;hb=ced6090a330d3d83d0bce709f756aa3d7d65fea4;hp=92e168baca8f21afe00d0fb694570d63301ac3fe;hpb=a485ed478abbd599d8c9aab48934e7a26733ecb1;p=mmh diff --git a/sbr/fmt_rfc2047.c b/sbr/fmt_rfc2047.c index 92e168b..5bc7850 100644 --- a/sbr/fmt_rfc2047.c +++ b/sbr/fmt_rfc2047.c @@ -1,10 +1,10 @@ /* - * fmt_rfc2047.c -- decode RFC-2047 header format - * - * This code is Copyright (c) 2002, by the authors of nmh. See the - * COPYRIGHT file in the root directory of the nmh distribution for - * complete copyright information. - */ +** fmt_rfc2047.c -- decode RFC-2047 header format +** +** This code is Copyright (c) 2002, by the authors of nmh. See the +** COPYRIGHT file in the root directory of the nmh distribution for +** complete copyright information. +*/ #include #include @@ -50,8 +50,8 @@ unqp (unsigned char byte1, unsigned char byte2) /* - * Decode the string as a RFC-2047 header field - */ +** Decode the string as a RFC-2047 header field +*/ /* Add character to the destination buffer, and bomb out if it fills up */ #define ADDCHR(C) do { *q++ = (C); dstlen--; if (!dstlen) goto buffull; } while (0) @@ -78,9 +78,9 @@ decode_rfc2047 (char *str, char *dst, size_t dstlen) return 0; /* - * Do a quick and dirty check for the '=' character. - * This should quickly eliminate many cases. - */ + ** Do a quick and dirty check for the '=' character. + ** This should quickly eliminate many cases. + */ if (!strchr (str, '=')) return 0; @@ -94,9 +94,9 @@ decode_rfc2047 (char *str, char *dst, size_t dstlen) } #endif /* - * If we had an '=' character pending from - * last iteration, then add it first. - */ + ** If we had an '=' character pending from + ** last iteration, then add it first. + */ if (equals_pending) { ADDCHR('='); equals_pending = 0; @@ -158,11 +158,11 @@ decode_rfc2047 (char *str, char *dst, size_t dstlen) startofmime++; /* - * Scan ahead for the ending ?= - * - * While doing this, we will also check if encoded - * word has any embedded linear whitespace. - */ + ** Scan ahead for the ending ?= + ** + ** While doing this, we will also check if encoded + ** word has any embedded linear whitespace. + */ endofmime = NULL; for (pp = startofmime; *pp && *(pp+1); pp++) { if (is_lws(*pp)) { @@ -176,17 +176,18 @@ decode_rfc2047 (char *str, char *dst, size_t dstlen) continue; /* - * We've found an encoded word, so we can drop - * the '=' that was pending - */ + ** We've found an encoded word, so we can drop + ** the '=' that was pending + */ equals_pending = 0; /* - * If we are between two encoded words separated only by - * linear whitespace, then we ignore the whitespace. - * We will roll back the buffer the number of whitespace - * characters we've seen since last encoded word. - */ + ** If we are between two encoded words separated + ** only by linear whitespace, then we ignore + ** the whitespace. We will roll back the buffer + ** the number of whitespace characters we've seen + ** since last encoded word. + */ if (between_encodings) { q -= whitespace; dstlen += whitespace; @@ -194,9 +195,9 @@ decode_rfc2047 (char *str, char *dst, size_t dstlen) #ifdef HAVE_ICONV /* - * empty encoded text. This ensures that we don't - * malloc 0 bytes but skip on to the end - */ + ** empty encoded text. This ensures that we don't + ** malloc 0 bytes but skip on to the end + */ if (endofmime == startofmime && use_iconv) { use_iconv = 0; iconv_close(cd); @@ -207,10 +208,11 @@ decode_rfc2047 (char *str, char *dst, size_t dstlen) savedstlen = dstlen; q = convbuf = (char *) mh_xmalloc(endofmime - startofmime); } -/* ADDCHR2 is for adding characters when q is or might be convbuf: - * in this case on buffer-full we want to run iconv before returning. - * I apologise for the dreadful name. - */ +/* +** ADDCHR2 is for adding characters when q is or might be convbuf: +** in this case on buffer-full we want to run iconv before returning. +** I apologise for the dreadful name. +*/ # define ADDCHR2(C) do { *q++ = (C); dstlen--; if (!dstlen) goto iconvbuffull; } while (0) #else # define ADDCHR2(C) ADDCHR(C) @@ -278,10 +280,11 @@ decode_rfc2047 (char *str, char *dst, size_t dstlen) #ifdef HAVE_ICONV iconvbuffull: - /* NB that the string at convbuf is not necessarily - * NUL terminated here: - * q points to the first byte after the valid part. - */ + /* + ** NB that the string at convbuf is not necessarily + ** NUL terminated here: + ** q points to the first byte after the valid part. + */ /* Convert to native character set */ if (use_iconv) { size_t inbytes = q - convbuf; @@ -292,9 +295,13 @@ decode_rfc2047 (char *str, char *dst, size_t dstlen) (size_t)-1) { if (errno != EILSEQ) break; - /* character couldn't be converted. we output a `?' - * and try to carry on which won't work if - * either encoding was stateful */ + /* + ** character couldn't be + ** converted. we output a + ** `?' and try to carry on + ** which won't work if either + ** encoding was stateful + */ iconv (cd, 0, 0, &saveq, &savedstlen); if (!savedstlen) break; @@ -313,10 +320,13 @@ decode_rfc2047 (char *str, char *dst, size_t dstlen) } } q = saveq; - /* Stop now if (1) we hit the end of the buffer trying to do - * MIME decoding and have just iconv-converted a partial string - * or (2) our iconv-conversion hit the end of the buffer. - */ + /* + ** Stop now if (1) we hit the end of the + ** buffer trying to do MIME decoding and + ** have just iconv-converted a partial + ** string or (2) our iconv-conversion hit + ** the end of the buffer. + */ if (!dstlen || !savedstlen) goto buffull; dstlen = savedstlen; @@ -325,9 +335,9 @@ decode_rfc2047 (char *str, char *dst, size_t dstlen) #endif /* - * Now that we are done decoding this particular - * encoded word, advance string to trailing '='. - */ + ** Now that we are done decoding this particular + ** encoded word, advance string to trailing '='. + */ p = endofmime + 1; encoding_found = 1; /* we found (at least 1) encoded word */ @@ -347,7 +357,10 @@ decode_rfc2047 (char *str, char *dst, size_t dstlen) return encoding_found; buffull: - /* q is currently just off the end of the buffer, so rewind to NUL terminate */ + /* + ** q is currently just off the end of the buffer, + ** so rewind to NUL terminate + */ q--; *q = '\0'; return encoding_found;