sniper Wed Apr 4 13:46:27 2001 EDT
Modified files:
/php4 php.ini-dist php.ini-optimized NEWS
/php4/ext/standard url_scanner.c url_scanner_ex.re url_scanner_ex.c
/php4/main main.c php_globals.h php_variables.c
Log:
Added new configuration directives:
arg_separator.input and arg_separator.output
Index: php4/php.ini-dist
diff -u php4/php.ini-dist:1.75 php4/php.ini-dist:1.76
--- php4/php.ini-dist:1.75 Sat Mar 24 13:38:58 2001
+++ php4/php.ini-dist Wed Apr 4 13:46:25 2001
@@ -1,5 +1,5 @@
[PHP]
-; $Id: php.ini-dist,v 1.75 2001/03/24 21:38:58 sbergmann Exp $
+; $Id: php.ini-dist,v 1.76 2001/04/04 20:46:25 sniper Exp $
;;;;;;;;;;;;;;;;;;;
; About this file ;
@@ -243,7 +243,12 @@
; The separator used in PHP generated URLs to separate arguments.
; Default is "&".
-;arg_separator = "&"
+;arg_separator.output = "&"
+
+; List of separator(s) used by PHP to parse input URLs into variables.
+; Default is "&".
+; NOTE: Every character in this directive is considered as separator!
+;arg_separator.input = ";&"
; This directive describes the order in which PHP registers GET, POST, Cookie,
; Environment and Built-in variables (G, P, C, E & S respectively, often
Index: php4/php.ini-optimized
diff -u php4/php.ini-optimized:1.34 php4/php.ini-optimized:1.35
--- php4/php.ini-optimized:1.34 Tue Mar 20 14:45:10 2001
+++ php4/php.ini-optimized Wed Apr 4 13:46:25 2001
@@ -182,8 +182,14 @@
;;;;;;;;;;;;;;;;;
; Data Handling ;
;;;;;;;;;;;;;;;;;
-;arg_separator = "&" ; The separator used in PHP generated URLs to
separate arguments.
- ; Default is "&".
+
+;arg_separator.output = "&" ; The separator used in PHP generated URLs to
+separate arguments.
+ ; Default is "&".
+
+;arg_separator.input = ";&" ; List of separator(s) used by PHP to parse
+input URLs into variables.
+ ; Default is "&".
+ ; NOTE: Every
+character in this directive is considered as separator!
+
variables_order = "GPCS" ; This directive describes the order
in which PHP registers
; GET, POST, Cookie,
Environment and Built-in variables (G, P,
; C, E & S
respectively, often referred to as EGPCS or GPC).
Index: php4/NEWS
diff -u php4/NEWS:1.626 php4/NEWS:1.627
--- php4/NEWS:1.626 Mon Apr 2 08:18:46 2001
+++ php4/NEWS Wed Apr 4 13:46:25 2001
@@ -30,7 +30,10 @@
(Zeev)
?? ??? 200?, Version 4.0.5
-- New FastCGI server module. (Ben Mansell)
+- Added new php.ini directive: arg_separator.input which is used to tell
+ PHP which characters are considered as argument separators in URLs.
+ Renamed php.ini directive: arg_separator -> arg_separator.output (Jani)
+- Added FastCGI SAPI module. (Ben Mansell)
- Added array_reduce(), which allows iterative reduction of an array
to a single value via a callback function. (Andrei)
- The imageloadfont function of the gd extension should be not platform
Index: php4/ext/standard/url_scanner.c
diff -u php4/ext/standard/url_scanner.c:1.29 php4/ext/standard/url_scanner.c:1.30
--- php4/ext/standard/url_scanner.c:1.29 Sun Feb 25 22:07:23 2001
+++ php4/ext/standard/url_scanner.c Wed Apr 4 13:46:26 2001
@@ -15,7 +15,7 @@
| Author: Hartmut Holzgraefe <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: url_scanner.c,v 1.29 2001/02/26 06:07:23 andi Exp $ */
+/* $Id: url_scanner.c,v 1.30 2001/04/04 20:46:26 sniper Exp $ */
#include "php.h"
@@ -67,12 +67,12 @@
if(flag) {
if(!strstr(val,buf)&&!strchr(val,':'))
{
- char *result = (char
*)emalloc(strlen(buf)+strlen(PG(arg_separator))+1);
+ char *result = (char
+*)emalloc(strlen(buf)+strlen(PG(arg_separator).output)+1);
int n;
if(strchr(val,'?')) {
- strcpy(result,PG(arg_separator));
- n=strlen(PG(arg_separator));
+ strcpy(result,PG(arg_separator).output);
+ n=strlen(PG(arg_separator).output);
} else {
*result='?';
n=1;
Index: php4/ext/standard/url_scanner_ex.re
diff -u php4/ext/standard/url_scanner_ex.re:1.30
php4/ext/standard/url_scanner_ex.re:1.31
--- php4/ext/standard/url_scanner_ex.re:1.30 Sun Feb 25 22:07:23 2001
+++ php4/ext/standard/url_scanner_ex.re Wed Apr 4 13:46:26 2001
@@ -138,7 +138,7 @@
smart_str_appendc(&ctx->result, quote);
if (f) {
- append_modified_url(&ctx->val, &ctx->result, &ctx->q_name,
&ctx->q_value, PG(arg_separator));
+ append_modified_url(&ctx->val, &ctx->result, &ctx->q_name,
+&ctx->q_value, PG(arg_separator).output);
} else {
smart_str_append(&ctx->result, &ctx->val);
}
@@ -313,7 +313,7 @@
smart_str_sets(&sname, name);
smart_str_sets(&sval, value);
- append_modified_url(&surl, &buf, &sname, &sval, PG(arg_separator));
+ append_modified_url(&surl, &buf, &sname, &sval, PG(arg_separator).output);
smart_str_0(&buf);
if (newlen) *newlen = buf.len;
Index: php4/ext/standard/url_scanner_ex.c
diff -u php4/ext/standard/url_scanner_ex.c:1.29 php4/ext/standard/url_scanner_ex.c:1.30
--- php4/ext/standard/url_scanner_ex.c:1.29 Sun Feb 25 22:07:23 2001
+++ php4/ext/standard/url_scanner_ex.c Wed Apr 4 13:46:26 2001
@@ -1,5 +1,5 @@
-/* Generated by re2c 0.5 on Tue Jan 9 17:13:20 2001 */
-#line 1 "/home/sas/src/php4/ext/standard/url_scanner_ex.re"
+/* Generated by re2c 0.5 on Wed Apr 4 19:29:46 2001 */
+#line 1 "/usr/src/web/php/php4/ext/standard/url_scanner_ex.re"
/*
+----------------------------------------------------------------------+
| PHP version 4.0 |
@@ -140,7 +140,7 @@
smart_str_appendc(&ctx->result, quote);
if (f) {
- append_modified_url(&ctx->val, &ctx->result, &ctx->q_name,
&ctx->q_value, PG(arg_separator));
+ append_modified_url(&ctx->val, &ctx->result, &ctx->q_name,
+&ctx->q_value, PG(arg_separator).output);
} else {
smart_str_append(&ctx->result, &ctx->val);
}
@@ -670,7 +670,7 @@
smart_str_sets(&sname, name);
smart_str_sets(&sval, value);
- append_modified_url(&surl, &buf, &sname, &sval, PG(arg_separator));
+ append_modified_url(&surl, &buf, &sname, &sval, PG(arg_separator).output);
smart_str_0(&buf);
if (newlen) *newlen = buf.len;
Index: php4/main/main.c
diff -u php4/main/main.c:1.357 php4/main/main.c:1.358
--- php4/main/main.c:1.357 Sat Mar 17 15:35:32 2001
+++ php4/main/main.c Wed Apr 4 13:46:26 2001
@@ -19,7 +19,7 @@
*/
-/* $Id: main.c,v 1.357 2001/03/17 23:35:32 zeev Exp $ */
+/* $Id: main.c,v 1.358 2001/04/04 20:46:26 sniper Exp $ */
#include <stdio.h>
@@ -209,7 +209,9 @@
STD_PHP_INI_BOOLEAN("track_errors", "0",
PHP_INI_ALL, OnUpdateBool, track_errors,
php_core_globals, core_globals)
STD_PHP_INI_BOOLEAN("y2k_compliance", "0", PHP_INI_ALL,
OnUpdateBool, y2k_compliance,
php_core_globals, core_globals)
- STD_PHP_INI_ENTRY("arg_separator", "&",
PHP_INI_ALL, OnUpdateStringUnempty, arg_separator,
php_core_globals, core_globals)
+ STD_PHP_INI_ENTRY("arg_separator.output", "&", PHP_INI_ALL,
+ OnUpdateStringUnempty, arg_separator.output, php_core_globals,
+core_globals)
+ STD_PHP_INI_ENTRY("arg_separator.input", "&",
+PHP_INI_SYSTEM|PHP_INI_PERDIR, OnUpdateStringUnempty, arg_separator.input,
+php_core_globals, core_globals)
+
STD_PHP_INI_ENTRY("auto_append_file", NULL, PHP_INI_ALL,
OnUpdateString, auto_append_file,
php_core_globals, core_globals)
STD_PHP_INI_ENTRY("auto_prepend_file", NULL, PHP_INI_ALL,
OnUpdateString, auto_prepend_file,
php_core_globals, core_globals)
STD_PHP_INI_ENTRY("doc_root", NULL,
PHP_INI_SYSTEM, OnUpdateStringUnempty, doc_root,
php_core_globals, core_globals)
Index: php4/main/php_globals.h
diff -u php4/main/php_globals.h:1.62 php4/main/php_globals.h:1.63
--- php4/main/php_globals.h:1.62 Sun Feb 25 22:07:31 2001
+++ php4/main/php_globals.h Wed Apr 4 13:46:26 2001
@@ -52,6 +52,11 @@
struct _php_tick_function_entry;
+typedef struct _arg_separators {
+ char *output;
+ char *input;
+} arg_separators;
+
struct _php_core_globals {
zend_bool magic_quotes_gpc;
zend_bool magic_quotes_runtime;
@@ -92,8 +97,9 @@
char *auto_prepend_file;
char *auto_append_file;
+
+ arg_separators arg_separator;
- char *arg_separator;
char *gpc_order;
char *variables_order;
Index: php4/main/php_variables.c
diff -u php4/main/php_variables.c:1.23 php4/main/php_variables.c:1.24
--- php4/main/php_variables.c:1.23 Tue Apr 3 17:37:06 2001
+++ php4/main/php_variables.c Wed Apr 4 13:46:26 2001
@@ -217,7 +217,7 @@
void php_treat_data(int arg, char *str, zval* destArray ELS_DC PLS_DC SLS_DC)
{
- char *res = NULL, *var, *val, *separator = ";&";
+ char *res = NULL, *var, *val, *separator=NULL;
const char *c_var;
pval *array_ptr;
int free_buffer=0;
@@ -238,7 +238,6 @@
PG(http_globals)[TRACK_VARS_GET] = array_ptr;
break;
case PARSE_COOKIE:
- separator=";";
PG(http_globals)[TRACK_VARS_COOKIE] =
array_ptr;
break;
}
@@ -278,6 +277,16 @@
return;
}
+ switch (arg) {
+ case PARSE_GET:
+ case PARSE_STRING:
+ separator = (char *) estrdup(PG(arg_separator).input);
+ break;
+ case PARSE_COOKIE:
+ separator = ";\0";
+ break;
+ }
+
var = php_strtok_r(res, separator, &strtok_buf);
while (var) {
@@ -292,6 +301,11 @@
}
var = php_strtok_r(NULL, separator, &strtok_buf);
}
+
+ if(arg != PARSE_COOKIE) {
+ efree(separator);
+ }
+
if (free_buffer) {
efree(res);
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]