dmitry          Mon Dec  3 09:38:12 2007 UTC

  Modified files:              (Branch: PHP_5_3)
    /php-src/sapi/cgi   cgi_main.c 
  Log:
  The -f option is fixed to work in the same way as in CLI sapi
  
  
http://cvs.php.net/viewvc.cgi/php-src/sapi/cgi/cgi_main.c?r1=1.267.2.15.2.50.2.9&r2=1.267.2.15.2.50.2.10&diff_format=u
Index: php-src/sapi/cgi/cgi_main.c
diff -u php-src/sapi/cgi/cgi_main.c:1.267.2.15.2.50.2.9 
php-src/sapi/cgi/cgi_main.c:1.267.2.15.2.50.2.10
--- php-src/sapi/cgi/cgi_main.c:1.267.2.15.2.50.2.9     Fri Nov  9 16:27:43 2007
+++ php-src/sapi/cgi/cgi_main.c Mon Dec  3 09:38:12 2007
@@ -21,7 +21,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: cgi_main.c,v 1.267.2.15.2.50.2.9 2007/11/09 16:27:43 jani Exp $ */
+/* $Id: cgi_main.c,v 1.267.2.15.2.50.2.10 2007/12/03 09:38:12 dmitry Exp $ */
 
 #include "php.h"
 #include "php_globals.h"
@@ -1690,12 +1690,12 @@
                                                        }
                                                        script_file = 
estrdup(php_optarg);
                                                        no_headers = 1;
-                                                       /* arguments after the 
file are considered script args */
-                                                       SG(request_info).argc = 
argc - (php_optind - 1);
-                                                       SG(request_info).argv = 
&argv[php_optind - 1];
                                                        break;
 
                                                case 'i': /* php info & quit */
+                                                       if (script_file) {
+                                                               
efree(script_file);
+                                                       }
                                                        if 
(php_request_startup(TSRMLS_C) == FAILURE) {
                                                                
SG(server_context) = NULL;
                                                                
php_module_shutdown(TSRMLS_C);
@@ -1716,6 +1716,9 @@
                                                        break;
 
                                                case 'm': /* list compiled in 
modules */
+                                                       if (script_file) {
+                                                               
efree(script_file);
+                                                       }
                                                        php_output_startup();
                                                        
php_output_activate(TSRMLS_C);
                                                        SG(headers_sent) = 1;
@@ -1739,6 +1742,9 @@
                                                        break;
 
                                                case 'v': /* show php version & 
quit */
+                                                       if (script_file) {
+                                                               
efree(script_file);
+                                                       }
                                                        no_headers = 1;
                                                        if 
(php_request_startup(TSRMLS_C) == FAILURE) {
                                                                
SG(server_context) = NULL;
@@ -1775,6 +1781,18 @@
                                        /* override path_translated if -f on 
command line */
                                        
STR_FREE(SG(request_info).path_translated);
                                        SG(request_info).path_translated = 
script_file;
+                                       /* before registering argv to module 
exchange the *new* argv[0] */
+                                       /* we can achieve this without 
allocating more memory */
+                                       SG(request_info).argc = argc - 
(php_optind - 1);
+                                       SG(request_info).argv = 
&argv[php_optind - 1];
+                                       SG(request_info).argv[0] = script_file;
+                               } else if (argc > php_optind) {
+                                       /* file is on command line, but not in 
-f opt */
+                                       
STR_FREE(SG(request_info).path_translated);
+                                       SG(request_info).path_translated = 
estrdup(argv[php_optind++]);
+                                       /* arguments after the file are 
considered script args */
+                                       SG(request_info).argc = argc - 
php_optind;
+                                       SG(request_info).argv = 
&argv[php_optind];
                                }
 
                                if (no_headers) {
@@ -1782,14 +1800,6 @@
                                        SG(request_info).no_headers = 1;
                                }
 
-                               if (!SG(request_info).path_translated && argc > 
php_optind) {
-                                       /* arguments after the file are 
considered script args */
-                                       SG(request_info).argc = argc - 
php_optind;
-                                       SG(request_info).argv = 
&argv[php_optind];
-                                       /* file is on command line, but not in 
-f opt */
-                                       SG(request_info).path_translated = 
estrdup(argv[php_optind++]);
-                               }
-
                                /* all remaining arguments are part of the 
query string
                                   this section of code concatenates all 
remaining arguments
                                   into a single string, seperating args with a 
&

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to