fujimoto                Sat Oct 19 22:57:41 2002 EDT

  Modified files:              
    /Zend       zend_highlight.c zend_highlight.h zend_multibyte.c 
                zend_multibyte.h 
    /php4/ext/mbstring  mbfilter.c mbstring.c mbstring.h 
    /php4/main  main.c 
  Log:
  fixed highlight related bugs (in case shift_jis input/output filters are enabled)
  
  
Index: Zend/zend_highlight.c
diff -u Zend/zend_highlight.c:1.30 Zend/zend_highlight.c:1.31
--- Zend/zend_highlight.c:1.30  Sun Sep 15 18:56:30 2002
+++ Zend/zend_highlight.c       Sat Oct 19 22:57:39 2002
@@ -53,9 +53,19 @@
 }
 
 
-ZEND_API void zend_html_puts(const char *s, uint len)
+ZEND_API void zend_html_puts(const char *s, uint len TSRMLS_DC)
 {
        const char *ptr=s, *end=s+len;
+#ifdef ZEND_MULTIBYTE
+       char *mbs;
+       int mblen;
+
+       if (LANG_SCNG(output_filter)) {
+               LANG_SCNG(output_filter)(&mbs, &mblen, s, len TSRMLS_CC);
+               ptr = mbs;
+               end = mbs+mblen;
+       }
+#endif /* ZEND_MULTIBYTE */
        
        while (ptr<end) {
                if (*ptr==' ') {
@@ -74,6 +84,12 @@
                        zend_html_putc(*ptr++);
                }
        }
+
+#ifdef ZEND_MULTIBYTE
+       if (LANG_SCNG(output_filter)) {
+               efree(mbs);
+       }
+#endif /* ZEND_MULTIBYTE */
 }
 
 
@@ -113,7 +129,7 @@
                                in_string = !in_string;
                                break;                          
                        case T_WHITESPACE:
-                               zend_html_puts(LANG_SCNG(yy_text), 
LANG_SCNG(yy_leng));  /* no color needed */
+                               zend_html_puts(LANG_SCNG(yy_text), LANG_SCNG(yy_leng) 
+TSRMLS_CC);  /* no color needed */
                                token.type = 0;
                                continue;
                                break;
@@ -141,10 +157,10 @@
                }
                switch (token_type) {
                        case T_END_HEREDOC:
-                               zend_html_puts(token.value.str.val, 
token.value.str.len);
+                               zend_html_puts(token.value.str.val, 
+token.value.str.len TSRMLS_CC);
                                break;
                        default:
-                               zend_html_puts(LANG_SCNG(yy_text), LANG_SCNG(yy_leng));
+                               zend_html_puts(LANG_SCNG(yy_text), LANG_SCNG(yy_leng) 
+TSRMLS_CC);
                                break;
                }
 
Index: Zend/zend_highlight.h
diff -u Zend/zend_highlight.h:1.19 Zend/zend_highlight.h:1.20
--- Zend/zend_highlight.h:1.19  Sat May 11 08:35:52 2002
+++ Zend/zend_highlight.h       Sat Oct 19 22:57:39 2002
@@ -44,7 +44,7 @@
 ZEND_API int highlight_file(char *filename, zend_syntax_highlighter_ini 
*syntax_highlighter_ini TSRMLS_DC);
 ZEND_API int highlight_string(zval *str, zend_syntax_highlighter_ini 
*syntax_highlighter_ini, char *str_name TSRMLS_DC);
 ZEND_API void zend_html_putc(char c);
-ZEND_API void zend_html_puts(const char *s, uint len);
+ZEND_API void zend_html_puts(const char *s, uint len TSRMLS_DC);
 END_EXTERN_C()
 
 extern zend_syntax_highlighter_ini syntax_highlighter_ini;
Index: Zend/zend_multibyte.c
diff -u Zend/zend_multibyte.c:1.3 Zend/zend_multibyte.c:1.4
--- Zend/zend_multibyte.c:1.3   Sat May 18 11:17:29 2002
+++ Zend/zend_multibyte.c       Sat Oct 19 22:57:39 2002
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/*     $Id: zend_multibyte.c,v 1.3 2002/05/18 15:17:29 fujimoto Exp $ */
+/*     $Id: zend_multibyte.c,v 1.4 2002/10/20 02:57:39 fujimoto Exp $ */
 
 #include "zend.h"
 #include "zend_compile.h"
@@ -242,7 +242,7 @@
 
 
 ZEND_API int zend_multibyte_encoding_filter(char **to, int *to_length,
-               char *from, int from_length TSRMLS_DC)
+               const char *from, int from_length TSRMLS_DC)
 {
        int oddlen;
 
@@ -291,7 +291,7 @@
   3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 0, 0, 0
 };
 
-int sjis_input_filter(char **buf, int *length, char *sjis, int sjis_length
+int sjis_input_filter(char **buf, int *length, const char *sjis, int sjis_length
                TSRMLS_DC)
 {
        unsigned char *p, *q;
@@ -413,11 +413,12 @@
   2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1
 };
 
-int sjis_output_filter(char **sjis, int *sjis_length, char *buf, int length
+int sjis_output_filter(char **sjis, int *sjis_length, const char *buf, int length
                TSRMLS_DC)
 {
        unsigned char c1, c2;
-       char *p, *q;
+       char *p;
+       const char *q;
 
        if (!sjis || !sjis_length) {
                return 0;
Index: Zend/zend_multibyte.h
diff -u Zend/zend_multibyte.h:1.2 Zend/zend_multibyte.h:1.3
--- Zend/zend_multibyte.h:1.2   Sat May 18 11:17:29 2002
+++ Zend/zend_multibyte.h       Sat Oct 19 22:57:39 2002
@@ -17,24 +17,24 @@
    +----------------------------------------------------------------------+
 */
 
-/*     $Id: zend_multibyte.h,v 1.2 2002/05/18 15:17:29 fujimoto Exp $ */
+/*     $Id: zend_multibyte.h,v 1.3 2002/10/20 02:57:39 fujimoto Exp $ */
 
 #ifndef ZEND_MULTIBYTE_H
 #define ZEND_MULTIBYTE_H
 
 #ifdef ZEND_MULTIBYTE
 
-typedef int (*zend_multibyte_filter)(char **str, int *str_length, char *buf,
+typedef int (*zend_multibyte_filter)(char **str, int *str_length, const char *buf,
                int length TSRMLS_DC);
 
-typedef char* (*zend_encoding_detector)(char *string, int length, char *list
+typedef char* (*zend_encoding_detector)(const char *string, int length, char *list
                TSRMLS_DC);
 
-typedef int (*zend_encoding_converter)(char **to, int *to_length, char *from,
+typedef int (*zend_encoding_converter)(char **to, int *to_length, const char *from,
                int from_length, const char *encoding_to, const char *encoding_from 
                TSRMLS_DC);
 
-typedef int (*zend_multibyte_oddlen)(char *string, int length, const char 
+typedef int (*zend_multibyte_oddlen)(const char *string, int length, const char 
                *encoding TSRMLS_DC);
 
 typedef struct _zend_encoding {
@@ -62,7 +62,7 @@
 
 ZEND_API zend_encoding* zend_multibyte_fetch_encoding(char *encoding_name);
 
-ZEND_API int zend_multibyte_encoding_filter(char **to, int *to_length, char
+ZEND_API int zend_multibyte_encoding_filter(char **to, int *to_length, const char
                *from, int from_length TSRMLS_DC);
 
 /* in zend_language_scanner.l */
@@ -71,9 +71,9 @@
 ZEND_API int zend_read_file(TSRMLS_D);
 
 /* input/output filter(s) */
-int sjis_input_filter(char **buf, int *length, char *sjis, int sjis_length
+int sjis_input_filter(char **buf, int *length, const char *sjis, int sjis_length
                TSRMLS_DC);
-int sjis_output_filter(char **sjis, int *sjis_length, char *buf, int length
+int sjis_output_filter(char **sjis, int *sjis_length, const char *buf, int length
                TSRMLS_DC);
 END_EXTERN_C()
 
Index: php4/ext/mbstring/mbfilter.c
diff -u php4/ext/mbstring/mbfilter.c:1.45 php4/ext/mbstring/mbfilter.c:1.46
--- php4/ext/mbstring/mbfilter.c:1.45   Mon Oct  7 12:11:30 2002
+++ php4/ext/mbstring/mbfilter.c        Sat Oct 19 22:57:39 2002
@@ -79,7 +79,7 @@
  *
  */
 
-/* $Id: mbfilter.c,v 1.45 2002/10/07 16:11:30 sesser Exp $ */
+/* $Id: mbfilter.c,v 1.46 2002/10/20 02:57:39 fujimoto Exp $ */
 
 
 #ifdef HAVE_CONFIG_H
@@ -7650,7 +7650,7 @@
        int len, n, m, k;
        unsigned char *p;
        const unsigned char *mbtab;
-       mbfl_encoding *encoding;
+       const mbfl_encoding *encoding;
 
        encoding = mbfl_no2encoding(string->no_encoding);
        if (encoding == NULL || string == NULL) {
Index: php4/ext/mbstring/mbstring.c
diff -u php4/ext/mbstring/mbstring.c:1.105 php4/ext/mbstring/mbstring.c:1.106
--- php4/ext/mbstring/mbstring.c:1.105  Wed Oct 16 10:08:47 2002
+++ php4/ext/mbstring/mbstring.c        Sat Oct 19 22:57:39 2002
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: mbstring.c,v 1.105 2002/10/16 14:08:47 hirokawa Exp $ */
+/* $Id: mbstring.c,v 1.106 2002/10/20 02:57:39 fujimoto Exp $ */
 
 /*
  * PHP4 Multibyte String module "mbstring" (currently only for Japanese)
@@ -3473,7 +3473,7 @@
 /*
  *     mb_detect_encoding (interface for Zend Engine)
  */
-char* php_mbstring_encoding_detector(char *arg_string, int arg_length, char *arg_list 
TSRMLS_DC)
+char* php_mbstring_encoding_detector(const char *arg_string, int arg_length, char 
+*arg_list TSRMLS_DC)
 {
        mbfl_string string;
        const char *ret;
@@ -3496,7 +3496,7 @@
 
        mbfl_string_init(&string);
        string.no_language = MBSTRG(current_language);
-       string.val = arg_string;
+       string.val = (char*)arg_string;
        string.len = arg_length;
        ret = mbfl_identify_encoding_name(&string, elist, size);
        if (list != NULL) {
@@ -3513,7 +3513,7 @@
 /*
  *     mb_convert_encoding (interface for Zend Engine)
  */
-int php_mbstring_encoding_converter(char **to, int *to_length, char *from,
+int php_mbstring_encoding_converter(char **to, int *to_length, const char *from,
                int from_length, const char *encoding_to, const char *encoding_from 
                TSRMLS_DC)
 {
@@ -3536,7 +3536,7 @@
        mbfl_string_init(&result);
        string.no_encoding = from_encoding;
        string.no_language = MBSTRG(current_language);
-       string.val = from;
+       string.val = (char*)from;
        string.len = from_length;
 
        /* initialize converter */
@@ -3562,14 +3562,14 @@
  *     returns number of odd (e.g. appears only first byte of multibyte
  *     character) chars
  */
-int php_mbstring_oddlen(char *string, int length, const char *encoding TSRMLS_DC)
+int php_mbstring_oddlen(const char *string, int length, const char *encoding 
+TSRMLS_DC)
 {
        mbfl_string mb_string;
 
        mbfl_string_init(&mb_string);
        mb_string.no_language = MBSTRG(current_language);
        mb_string.no_encoding = mbfl_name2no_encoding(encoding);
-       mb_string.val = string;
+       mb_string.val = (char*)string;
        mb_string.len = length;
 
        if(mb_string.no_encoding == mbfl_no_encoding_invalid)
Index: php4/ext/mbstring/mbstring.h
diff -u php4/ext/mbstring/mbstring.h:1.32 php4/ext/mbstring/mbstring.h:1.33
--- php4/ext/mbstring/mbstring.h:1.32   Wed Oct 16 09:37:49 2002
+++ php4/ext/mbstring/mbstring.h        Sat Oct 19 22:57:39 2002
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: mbstring.h,v 1.32 2002/10/16 13:37:49 hirokawa Exp $ */
+/* $Id: mbstring.h,v 1.33 2002/10/20 02:57:39 fujimoto Exp $ */
 
 /*
  * PHP4 Multibyte String module "mbstring" (currently only for Japanese)
@@ -164,12 +164,12 @@
 
 #ifdef ZEND_MULTIBYTE
 PHPAPI int php_mbstring_set_zend_encoding(TSRMLS_D);
-char* php_mbstring_encoding_detector(char *string, int length, char *list
+char* php_mbstring_encoding_detector(const char *string, int length, char *list
                TSRMLS_DC);
-int php_mbstring_encoding_converter(char **to, int *to_length, char *from,
+int php_mbstring_encoding_converter(char **to, int *to_length, const char *from,
                int from_length, const char *encoding_to, const char *encoding_from
                TSRMLS_DC);
-int php_mbstring_oddlen(char *string, int length, const char *encoding TSRMLS_DC);
+int php_mbstring_oddlen(const char *string, int length, const char *encoding 
+TSRMLS_DC);
 #endif /* ZEND_MULTIBYTE */
 
 SAPI_POST_HANDLER_FUNC(php_mbstr_post_handler);
Index: php4/main/main.c
diff -u php4/main/main.c:1.498 php4/main/main.c:1.499
--- php4/main/main.c:1.498      Wed Oct 16 12:52:08 2002
+++ php4/main/main.c    Sat Oct 19 22:57:40 2002
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: main.c,v 1.498 2002/10/16 16:52:08 iliaa Exp $ */
+/* $Id: main.c,v 1.499 2002/10/20 02:57:40 fujimoto Exp $ */
 
 /* {{{ includes
  */
@@ -518,7 +518,7 @@
 /* {{{ php_html_puts */
 PHPAPI void php_html_puts(const char *str, uint size TSRMLS_DC)
 {
-       zend_html_puts(str, size);
+       zend_html_puts(str, size TSRMLS_CC);
 }
 /* }}} */
 

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

Reply via email to