summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Boerger <helly@php.net>2002-08-04 14:10:58 +0000
committerMarcus Boerger <helly@php.net>2002-08-04 14:10:58 +0000
commitf2f70b5ddaa6a9e688c34c7f20399173a8eca0f6 (patch)
treeef39e989da852df621b2aca3409fe397e21367dd
parentc5067529ee4fac200a28d86fa825473b50a6e0be (diff)
downloadphp-git-f2f70b5ddaa6a9e688c34c7f20399173a8eca0f6.tar.gz
-Allow double quotes for encoding lists (if used in ini for example)
-New parameter 'L' for mb_http_input() to retieve input encoding as comma separated string. @New parameter 'L' for mb_http_input() to retrieve input encoding as comma separated string. (marcus)
-rw-r--r--ext/mbstring/mbstring.c37
1 files changed, 34 insertions, 3 deletions
diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c
index 8d5d584be2..cf4e7f2bc9 100644
--- a/ext/mbstring/mbstring.c
+++ b/ext/mbstring/mbstring.c
@@ -288,7 +288,12 @@ php_mbstring_parse_encoding_list(const char *value, int value_length, int **retu
return 0;
} else {
/* copy the value string for work */
- tmpstr = (char *)estrndup(value, value_length);
+ if (value[0]=='"' && value[value_length-1]=='"' && value_length>2) {
+ tmpstr = (char *)estrndup(value+1, value_length-2);
+ value_length -= 2;
+ }
+ else
+ tmpstr = (char *)estrndup(value, value_length);
if (tmpstr == NULL) {
return 0;
}
@@ -644,7 +649,7 @@ PHP_INI_BEGIN()
PHP_INI_ENTRY("mbstring.substitute_character", NULL, PHP_INI_ALL, OnUpdate_mbstring_substitute_character)
STD_PHP_INI_ENTRY("mbstring.func_overload", "0", PHP_INI_SYSTEM, OnUpdateInt, func_overload, zend_mbstring_globals, mbstring_globals)
#if !defined(COMPILE_DL_MBSTRING)
- STD_PHP_INI_BOOLEAN("mbstring.encoding_translation", "0", PHP_INI_SYSTEM, OnUpdateBool, encoding_translation, zend_mbstring_globals, mbstring_globals)
+ STD_PHP_INI_BOOLEAN("mbstring.encoding_translation", "0", PHP_INI_ALL, OnUpdateBool, encoding_translation, zend_mbstring_globals, mbstring_globals)
#endif /* !defined(COMPILE_DL_MBSTRING) */
PHP_INI_END()
@@ -995,7 +1000,7 @@ PHP_FUNCTION(mb_http_input)
{
pval **arg1;
int result=0, retname, n, *entry;
- char *name;
+ char *name, *list, *temp;
retname = 1;
if (ZEND_NUM_ARGS() == 0) {
@@ -1036,6 +1041,32 @@ PHP_FUNCTION(mb_http_input)
}
retname = 0;
break;
+ case 'L':
+ case 'l':
+ entry = MBSTRG(http_input_list);
+ n = MBSTRG(http_input_list_size);
+ list = NULL;
+ while (n > 0) {
+ name = (char *)mbfl_no_encoding2name(*entry);
+ if (name) {
+ if (list) {
+ temp = list;
+ spprintf(&list, 0, "%s,%s", temp, name);
+ efree(temp);
+ if (!list)
+ break;
+ } else {
+ list = estrdup(name);
+ }
+ }
+ entry++;
+ n--;
+ }
+ if (!list)
+ RETURN_FALSE;
+ RETVAL_STRING(list, 0);
+ retname = 0;
+ break;
default:
result = MBSTRG(http_input_identify);
break;