summaryrefslogtreecommitdiff
path: root/main/main.c
diff options
context:
space:
mode:
authorEdin Kadribasic <edink@php.net>2002-01-06 13:58:05 +0000
committerEdin Kadribasic <edink@php.net>2002-01-06 13:58:05 +0000
commit1788410a56c7ee10fdaabb7d438c7938158c8d4c (patch)
tree761a4f6be2c1f7231600514fcb0fe979c6c1ecfb /main/main.c
parent6e1878b0fcfc55ea91b0559e27e35c37e53e9a64 (diff)
downloadphp-git-1788410a56c7ee10fdaabb7d438c7938158c8d4c.tar.gz
Added argc and argv in request_info needed for the new cli sapi.
Modified registering $argc and $argv to support cli sapi.
Diffstat (limited to 'main/main.c')
-rw-r--r--main/main.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/main/main.c b/main/main.c
index a6b7bb107e..a4a44ac187 100644
--- a/main/main.c
+++ b/main/main.c
@@ -861,6 +861,8 @@ int php_module_startup(sapi_module_struct *sf)
PG(header_is_being_sent) = 0;
SG(request_info).headers_only = 0;
SG(request_info).argv0 = NULL;
+ SG(request_info).argc=0;
+ SG(request_info).argv=(char **)NULL;
PG(connection_status) = PHP_CONNECTION_NORMAL;
PG(during_request_startup) = 0;
@@ -1195,7 +1197,21 @@ static void php_build_argv(char *s, zval *track_vars_array TSRMLS_DC)
INIT_PZVAL(arr);
/* Prepare argv */
- if (s && *s) {
+ if (SG(request_info).argc) { /* are we in cli sapi? */
+ int i;
+ for (i=0; i<SG(request_info).argc; i++) {
+ ALLOC_ZVAL(tmp);
+ Z_TYPE_P(tmp) = IS_STRING;
+ Z_STRLEN_P(tmp) = strlen(SG(request_info).argv[i]);
+ Z_STRVAL_P(tmp) = estrndup(SG(request_info).argv[i], Z_STRLEN_P(tmp));
+ INIT_PZVAL(tmp);
+ if (zend_hash_next_index_insert(Z_ARRVAL_P(arr), &tmp, sizeof(pval *), NULL)==FAILURE) {
+ if (Z_TYPE_P(tmp) == IS_STRING) {
+ efree(Z_STRVAL_P(tmp));
+ }
+ }
+ }
+ } else if (s && *s) {
ss = s;
while (ss) {
space = strchr(ss, '+');
@@ -1225,7 +1241,11 @@ static void php_build_argv(char *s, zval *track_vars_array TSRMLS_DC)
/* prepare argc */
ALLOC_ZVAL(argc);
- Z_LVAL_P(argc) = count;
+ if (SG(request_info).argc) {
+ Z_LVAL_P(argc) = SG(request_info).argc;
+ } else {
+ Z_LVAL_P(argc) = count;
+ }
Z_TYPE_P(argc) = IS_LONG;
INIT_PZVAL(argc);