#define char64(c) (((unsigned char) (c) > 127) ? -1 : index_64[(unsigned char) (c)])
static int
-unqp (unsigned char byte1, unsigned char byte2)
+unqp(unsigned char byte1, unsigned char byte2)
{
if (hexindex[byte1] == -1 || hexindex[byte2] == -1)
return -1;
#define ADDCHR(C) do { *q++ = (C); dstlen--; if (!dstlen) goto buffull; } while (0)
int
-decode_rfc2047 (char *str, char *dst, size_t dstlen)
+decode_rfc2047(char *str, char *dst, size_t dstlen)
{
char *p, *q, *pp;
char *startofmime, *endofmime;
** Do a quick and dirty check for the '=' character.
** This should quickly eliminate many cases.
*/
- if (!strchr (str, '='))
+ if (!strchr(str, '='))
return 0;
for (p = str, q = dst; *p; p++) {
if (!*pp)
continue;
+ *pp = '\0';
/* Check if character set can be handled natively */
- if (!check_charset(startofmime, pp - startofmime)) {
+ if (!is_native_charset(startofmime)) {
#ifdef HAVE_ICONV
/* .. it can't. We'll use iconv then. */
- *pp = '\0';
cd = iconv_open(get_charset(), startofmime);
fromutf8 = !mh_strcasecmp(startofmime, "UTF-8");
*pp = '?';
- if (cd == (iconv_t)-1) continue;
+ if (cd == (iconv_t)-1)
+ continue;
use_iconv = 1;
#else
+ *pp = '?';
continue;
#endif
}
+ *pp = '?';
startofmime = pp + 1;
/* Check for valid encoding type */
if (quoted_printable) {
for (pp = startofmime; pp < endofmime; pp++) {
if (*pp == '=') {
- c = unqp (pp[1], pp[2]);
+ c = unqp(pp[1], pp[2]);
if (c == -1)
continue;
if (c != 0)
** which won't work if either
** encoding was stateful
*/
- iconv (cd, 0, 0, &saveq, &savedstlen);
+ iconv(cd, 0, 0, &saveq, &savedstlen);
if (!savedstlen)
break;
*saveq++ = '?';