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