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

Reply via email to