]> granicus.if.org Git - php/commitdiff
Added argc and argv in request_info needed for the new cli sapi.
authorEdin Kadribasic <edink@php.net>
Sun, 6 Jan 2002 13:58:05 +0000 (13:58 +0000)
committerEdin Kadribasic <edink@php.net>
Sun, 6 Jan 2002 13:58:05 +0000 (13:58 +0000)
Modified registering $argc and $argv to support cli sapi.

main/SAPI.h
main/main.c

index b8748d0c19e20ae15680cca3cfaa4286c41e7093..9ca41da77bef94aa0e15f0fb4e8318c2456c215a 100644 (file)
@@ -97,6 +97,10 @@ typedef struct {
        /* this is necessary for Safe Mode */
        char *current_user;
        int current_user_length;
+
+    /* this is necessary for CLI module */
+    int argc;
+    char **argv;
 } sapi_request_info;
 
 
index a6b7bb107e77fab6f45d4afe8004a512a7296184..a4a44ac18792d1ed11ebe712bcaa170f54e0c408 100644 (file)
@@ -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);