hirokawa                Mon Sep 24 11:51:36 2007 UTC

  Modified files:              (Branch: PHP_5_2)
    /php-src/ext/mbstring/libmbfl/mbfl  mbfilter.h mbfl_convert.c 
    /php-src/ext/mbstring       mbstring.c 
  Log:
  MFH: added support "entity" as substitute_character settin accoding to bug 
#39404
  
http://cvs.php.net/viewvc.cgi/php-src/ext/mbstring/libmbfl/mbfl/mbfilter.h?r1=1.4.2.2&r2=1.4.2.2.2.1&diff_format=u
Index: php-src/ext/mbstring/libmbfl/mbfl/mbfilter.h
diff -u php-src/ext/mbstring/libmbfl/mbfl/mbfilter.h:1.4.2.2 
php-src/ext/mbstring/libmbfl/mbfl/mbfilter.h:1.4.2.2.2.1
--- php-src/ext/mbstring/libmbfl/mbfl/mbfilter.h:1.4.2.2        Tue Mar 21 
01:58:27 2006
+++ php-src/ext/mbstring/libmbfl/mbfl/mbfilter.h        Mon Sep 24 11:51:36 2007
@@ -104,6 +104,7 @@
 #define MBFL_OUTPUTFILTER_ILLEGAL_MODE_NONE 0
 #define MBFL_OUTPUTFILTER_ILLEGAL_MODE_CHAR 1
 #define MBFL_OUTPUTFILTER_ILLEGAL_MODE_LONG 2
+#define MBFL_OUTPUTFILTER_ILLEGAL_MODE_ENTITY 3
 
 /*
  * buffering converter
http://cvs.php.net/viewvc.cgi/php-src/ext/mbstring/libmbfl/mbfl/mbfl_convert.c?r1=1.5.2.1.2.2&r2=1.5.2.1.2.3&diff_format=u
Index: php-src/ext/mbstring/libmbfl/mbfl/mbfl_convert.c
diff -u php-src/ext/mbstring/libmbfl/mbfl/mbfl_convert.c:1.5.2.1.2.2 
php-src/ext/mbstring/libmbfl/mbfl/mbfl_convert.c:1.5.2.1.2.3
--- php-src/ext/mbstring/libmbfl/mbfl/mbfl_convert.c:1.5.2.1.2.2        Mon Jan 
29 22:53:47 2007
+++ php-src/ext/mbstring/libmbfl/mbfl/mbfl_convert.c    Mon Sep 24 11:51:36 2007
@@ -387,9 +387,14 @@
                ret = (*filter->filter_function)(filter->illegal_substchar, 
filter);
                break;
        case MBFL_OUTPUTFILTER_ILLEGAL_MODE_LONG:
+       case MBFL_OUTPUTFILTER_ILLEGAL_MODE_ENTITY:
                if (c >= 0) {
                        if (c < MBFL_WCSGROUP_UCS4MAX) {        /* unicode */
-                               ret = mbfl_convert_filter_strcat(filter, (const 
unsigned char *)"U+");
+                         if (mode_backup == 
MBFL_OUTPUTFILTER_ILLEGAL_MODE_LONG) {
+                           ret = mbfl_convert_filter_strcat(filter, (const 
unsigned char *)"U+");
+                         } else { /* entity */
+                           ret = mbfl_convert_filter_strcat(filter, (const 
unsigned char *)"&#");
+                         }
                        } else {
                                if (c < MBFL_WCSGROUP_WCHARMAX) {
                                        m = c & ~MBFL_WCSPLANE_MASK;
@@ -433,6 +438,9 @@
                                if (m == 0 && ret >= 0) {
                                        ret = 
(*filter->filter_function)(mbfl_hexchar_table[0], filter);
                                }
+                               if (mode_backup == 
MBFL_OUTPUTFILTER_ILLEGAL_MODE_ENTITY) {
+                                 ret = mbfl_convert_filter_strcat(filter, 
(const unsigned char *)";");
+                               }
                        }
                }
                break;
http://cvs.php.net/viewvc.cgi/php-src/ext/mbstring/mbstring.c?r1=1.224.2.22.2.24&r2=1.224.2.22.2.25&diff_format=u
Index: php-src/ext/mbstring/mbstring.c
diff -u php-src/ext/mbstring/mbstring.c:1.224.2.22.2.24 
php-src/ext/mbstring/mbstring.c:1.224.2.22.2.25
--- php-src/ext/mbstring/mbstring.c:1.224.2.22.2.24     Thu Jul 12 15:31:54 2007
+++ php-src/ext/mbstring/mbstring.c     Mon Sep 24 11:51:36 2007
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: mbstring.c,v 1.224.2.22.2.24 2007/07/12 15:31:54 masugata Exp $ */
+/* $Id: mbstring.c,v 1.224.2.22.2.25 2007/09/24 11:51:36 hirokawa Exp $ */
 
 /*
  * PHP 4 Multibyte String module "mbstring"
@@ -712,6 +712,9 @@
                } else if (strcasecmp("long", new_value) == 0) {
                        MBSTRG(filter_illegal_mode) = 
MBFL_OUTPUTFILTER_ILLEGAL_MODE_LONG;
                        MBSTRG(current_filter_illegal_mode) = 
MBFL_OUTPUTFILTER_ILLEGAL_MODE_LONG;
+               } else if (strcasecmp("entity", new_value) == 0) {
+                       MBSTRG(filter_illegal_mode) = 
MBFL_OUTPUTFILTER_ILLEGAL_MODE_ENTITY;
+                       MBSTRG(current_filter_illegal_mode) = 
MBFL_OUTPUTFILTER_ILLEGAL_MODE_ENTITY;
                } else {
                        MBSTRG(filter_illegal_mode) = 
MBFL_OUTPUTFILTER_ILLEGAL_MODE_CHAR;
                        MBSTRG(current_filter_illegal_mode) = 
MBFL_OUTPUTFILTER_ILLEGAL_MODE_CHAR;
@@ -1329,6 +1332,8 @@
                        RETVAL_STRING("none", 1);
                } else if (MBSTRG(current_filter_illegal_mode) == 
MBFL_OUTPUTFILTER_ILLEGAL_MODE_LONG) {
                        RETVAL_STRING("long", 1);
+               } else if (MBSTRG(current_filter_illegal_mode) == 
MBFL_OUTPUTFILTER_ILLEGAL_MODE_ENTITY) {
+                       RETVAL_STRING("entity", 1);
                } else {
                        RETVAL_LONG(MBSTRG(current_filter_illegal_substchar));
                }
@@ -1340,6 +1345,8 @@
                                MBSTRG(current_filter_illegal_mode) = 
MBFL_OUTPUTFILTER_ILLEGAL_MODE_NONE;
                        } else if (strcasecmp("long", Z_STRVAL_PP(arg1)) == 0) {
                                MBSTRG(current_filter_illegal_mode) = 
MBFL_OUTPUTFILTER_ILLEGAL_MODE_LONG;
+                       } else if (strcasecmp("entity", Z_STRVAL_PP(arg1)) == 
0) {
+                               MBSTRG(current_filter_illegal_mode) = 
MBFL_OUTPUTFILTER_ILLEGAL_MODE_ENTITY;
                        } else {
                                convert_to_long_ex(arg1);
                                if (Z_LVAL_PP(arg1)< 0xffff && Z_LVAL_PP(arg1)> 
0x0) {
@@ -3890,6 +3897,8 @@
                        add_assoc_string(return_value, "substitute_character", 
"none", 1);
                } else if (MBSTRG(current_filter_illegal_mode) == 
MBFL_OUTPUTFILTER_ILLEGAL_MODE_LONG) {
                        add_assoc_string(return_value, "substitute_character", 
"long", 1);
+               } else if (MBSTRG(current_filter_illegal_mode) == 
MBFL_OUTPUTFILTER_ILLEGAL_MODE_ENTITY) {
+                       add_assoc_string(return_value, "substitute_character", 
"entity", 1);
                } else {
                        add_assoc_long(return_value, "substitute_character", 
MBSTRG(current_filter_illegal_substchar));
                }
@@ -3984,6 +3993,8 @@
                        RETVAL_STRING("none", 1);
                } else if (MBSTRG(current_filter_illegal_mode) == 
MBFL_OUTPUTFILTER_ILLEGAL_MODE_LONG) {
                        RETVAL_STRING("long", 1);
+               } else if (MBSTRG(current_filter_illegal_mode) == 
MBFL_OUTPUTFILTER_ILLEGAL_MODE_ENTITY) {
+                       RETVAL_STRING("entity", 1);
                } else {
                        RETVAL_LONG(MBSTRG(current_filter_illegal_substchar));
                }

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to