cvs: php4 /ext/mbstring mbstring.c mbstring.h /main rfc1867.c
| From: | Rui Hirokawa | Date: | Fri, 05 Jul 2002 15:06:40 +0000 |
| Subject: | cvs: php4 /ext/mbstring mbstring.c mbstring.h /main rfc1867.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-12721@lists.php.net to get a copy of this message | ||
hirokawa Fri Jul 5 11:06:40 2002 EDT
Modified files:
/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.105 php4/main/rfc1867.c:1.106
--- php4/main/rfc1867.c:1.105 Wed Jul 3 17:07:24 2002
+++ php4/main/rfc1867.c Fri Jul 5 11:06:39 2002
@@ -16,7 +16,7 @@
| Jani Taskinen <sniper@php.net> |
+----------------------------------------------------------------------+
*/
-/* $Id: rfc1867.c,v 1.105 2002/07/03 21:07:24 sebastian Exp $ */
+/* $Id: rfc1867.c,v 1.106 2002/07/05 15:06:39 hirokawa Exp $ */
/*
* This product includes software developed by the Apache Group
@@ -439,7 +439,7 @@
}
-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;
@@ -450,6 +450,11 @@
*resp++ = start[++i];
} else {
*resp++ = start[i];
+#if HAVE_MBSTRING
+ if (mbstr_is_mb_leadbyte(start+i) TSRMLS_CC){
+ *resp++ = start[++i];
+ }
+#endif
}
}
@@ -458,7 +463,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;
@@ -480,7 +485,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;
@@ -492,7 +497,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)) {
@@ -689,12 +694,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.77 php4/ext/mbstring/mbstring.c:1.78
--- php4/ext/mbstring/mbstring.c:1.77 Wed Jul 3 14:45:34 2002
+++ php4/ext/mbstring/mbstring.c Fri Jul 5 11:06:39 2002
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mbstring.c,v 1.77 2002/07/03 18:45:34 fmk Exp $ */
+/* $Id: mbstring.c,v 1.78 2002/07/05 15:06:39 hirokawa Exp $ */
/*
* PHP4 Multibyte String module "mbstring" (currently only for Japanese)
@@ -1340,6 +1340,15 @@
}
}
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.23 php4/ext/mbstring/mbstring.h:1.24
--- php4/ext/mbstring/mbstring.h:1.23 Wed Jul 3 14:23:55 2002
+++ php4/ext/mbstring/mbstring.h Fri Jul 5 11:06:39 2002
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: mbstring.h,v 1.23 2002/07/03 18:23:55 fmk Exp $ */
+/* $Id: mbstring.h,v 1.24 2002/07/05 15:06:39 hirokawa Exp $ */
/*
* PHP4 Multibyte String module "mbstring" (currently only for Japanese)
@@ -125,6 +125,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;