cvs: php4(PHP_4_2_0) /ext/mbstring mbstring.c mbstring.h /main rfc1867.c

From: Date: Fri, 05 Jul 2002 15:02:41 +0000
Subject: cvs: php4(PHP_4_2_0) /ext/mbstring mbstring.c mbstring.h /main rfc1867.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-12720@lists.php.net to get a copy of this message
hirokawa Fri Jul 5 11:02:41 2002 EDT Modified files: (Branch: PHP_4_2_0) /php4/main rfc1867.c /php4/ext/mbstring mbstring.c mbstring.h Log: fixed shift_jis character corruption including 0x5c as second byte following a slash on uploaded filename. Index: php4/main/rfc1867.c diff -u php4/main/rfc1867.c:1.94.2.7 php4/main/rfc1867.c:1.94.2.8 --- php4/main/rfc1867.c:1.94.2.7 Wed Jul 3 18:18:43 2002 +++ php4/main/rfc1867.c Fri Jul 5 11:02:39 2002 @@ -16,7 +16,7 @@ | Jani Taskinen <sniper@php.net> | +----------------------------------------------------------------------+ */ -/* $Id: rfc1867.c,v 1.94.2.7 2002/07/03 22:18:43 hirokawa Exp $ */ +/* $Id: rfc1867.c,v 1.94.2.8 2002/07/05 15:02:39 hirokawa Exp $ */ /* * This product includes software developed by the Apache Group @@ -440,8 +440,7 @@ return res; } - -static char *substring_conf(char *start, int len, char quote) +static char *substring_conf(char *start, int len, char quote TSRMLS_DC) { char *result = emalloc(len + 2); char *resp = result; @@ -452,6 +451,11 @@ *resp++ = start[++i]; } else { *resp++ = start[i]; +#if HAVE_MBSTRING + if (mbstr_is_mb_leadbyte(start+i) TSRMLS_CC){ + *resp++ = start[++i]; + } +#endif } } @@ -460,7 +464,7 @@ } -static char *php_ap_getword_conf(char **line) +static char *php_ap_getword_conf(char **line TSRMLS_DC) { char *str = *line, *strend, *res, quote; @@ -482,7 +486,7 @@ ++strend; } } - res = substring_conf(str + 1, strend - str - 1, quote); + res = substring_conf(str + 1, strend - str - 1, quote TSRMLS_CC); if (*strend == quote) { ++strend; @@ -494,7 +498,7 @@ while (*strend && !isspace(*strend)) { ++strend; } - res = substring_conf(str, strend - str, 0); + res = substring_conf(str, strend - str, 0 TSRMLS_CC); } while (*strend && isspace(*strend)) { @@ -691,12 +695,12 @@ if (param) { efree(param); } - param = php_ap_getword_conf(&pair); + param = php_ap_getword_conf(&pair TSRMLS_CC); } else if (!strcmp(key, "filename")) { if (filename) { efree(filename); } - filename = php_ap_getword_conf(&pair); + filename = php_ap_getword_conf(&pair TSRMLS_CC); } } if (key) { Index: php4/ext/mbstring/mbstring.c diff -u php4/ext/mbstring/mbstring.c:1.48.2.8 php4/ext/mbstring/mbstring.c:1.48.2.9 --- php4/ext/mbstring/mbstring.c:1.48.2.8 Wed Jul 3 18:14:14 2002 +++ php4/ext/mbstring/mbstring.c Fri Jul 5 11:02:40 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mbstring.c,v 1.48.2.8 2002/07/03 22:14:14 hirokawa Exp $ */ +/* $Id: mbstring.c,v 1.48.2.9 2002/07/05 15:02:40 hirokawa Exp $ */ /* * PHP4 Multibyte String module "mbstring" (currently only for Japanese) @@ -1147,7 +1147,7 @@ char *mbstr_strrchr(const char *s, char c TSRMLS_DC){ unsigned char *p = (unsigned char *)s, *last = NULL; - while(*p++) { + while(*p) { if (*p == c) { last = p; } @@ -1158,11 +1158,20 @@ && IS_SJIS1(*p) && IS_SJIS2(*(p+1))) { p++; } + p++; } return last; } +int mbstr_is_mb_leadbyte(const char *s TSRMLS_DC){ + unsigned char *p = (unsigned char *)s; + if (MBSTRG(current_language) == mbfl_no_language_japanese + && IS_SJIS1(*p) && IS_SJIS2(*(p+1))){ + return 1; + } + return 0; +} /* http input processing */ Index: php4/ext/mbstring/mbstring.h diff -u php4/ext/mbstring/mbstring.h:1.14.2.3 php4/ext/mbstring/mbstring.h:1.14.2.4 --- php4/ext/mbstring/mbstring.h:1.14.2.3 Wed Jul 3 18:14:14 2002 +++ php4/ext/mbstring/mbstring.h Fri Jul 5 11:02:40 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mbstring.h,v 1.14.2.3 2002/07/03 22:14:14 hirokawa Exp $ */ +/* $Id: mbstring.h,v 1.14.2.4 2002/07/05 15:02:40 hirokawa Exp $ */ /* * PHP4 Multibyte String module "mbstring" (currently only for Japanese) @@ -118,6 +118,7 @@ #endif char *mbstr_strrchr(const char *s, char c TSRMLS_DC); +int mbstr_is_mb_leadbyte(const char *s TSRMLS_DC); ZEND_BEGIN_MODULE_GLOBALS(mbstring) int language;

« previous php.cvs (#12720) next »