cvs: php4(PHP_4_2_0) /ext/mbstring mbstring.c mbstring.h /main rfc1867.c
| From: | Rui Hirokawa | 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;