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