moriyoshi Mon Jan 6 10:35:42 2003 EDT Modified files: /php4/ext/iconv iconv.c Log: Fixed iconv_mime_decode() so that it comforms to RFC2231 Index: php4/ext/iconv/iconv.c diff -u php4/ext/iconv/iconv.c:1.77 php4/ext/iconv/iconv.c:1.78 --- php4/ext/iconv/iconv.c:1.77 Sat Jan 4 08:52:54 2003 +++ php4/ext/iconv/iconv.c Mon Jan 6 10:35:42 2003 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: iconv.c,v 1.77 2003/01/04 13:52:54 moriyoshi Exp $ */ +/* $Id: iconv.c,v 1.78 2003/01/06 15:35:42 moriyoshi Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -1281,14 +1281,21 @@ switch (scan_stat) { case 0: - if (*p1 == '\r') { - scan_stat = 7; - } else if (*p1 == '\n') { - scan_stat = 8; - } else if (*p1 == '=') { - scan_stat = 1; - } else { - _php_iconv_appendc(pretval, *p1, cd_pl); + switch (*p1) { + case '\r': + scan_stat = 7; + break; + + case '\n': + scan_stat = 8; + break; + + case '=': + scan_stat = 1; + break; + + default: + _php_iconv_appendc(pretval, *p1, +cd_pl); } break; @@ -1302,7 +1309,16 @@ break; case 2: /* charset name */ - if (*p1 == '?') { + switch (*p1) { + case '?': + scan_stat = 3; + break; + + case '*': + scan_stat = 10; + break; + } + if (scan_stat != 2) { char tmpbuf[80]; if (csname == NULL) { @@ -1338,8 +1354,6 @@ #endif goto out; } - - scan_stat = 3; } break; @@ -1436,6 +1450,12 @@ } else if (*p1 != ' ' && *p1 != '\t') { err = PHP_ICONV_ERR_MALFORMED; goto out; + } + break; + + case 10: /* language spec */ + if (*p1 == '?') { + scan_stat = 3; } break; }
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php