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
