dmitry Mon Dec 3 09:38:25 2007 UTC
Modified files:
/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.346&r2=1.347&diff_format=u
Index: php-src/sapi/cgi/cgi_main.c
diff -u php-src/sapi/cgi/cgi_main.c:1.346 php-src/sapi/cgi/cgi_main.c:1.347
--- php-src/sapi/cgi/cgi_main.c:1.346 Fri Nov 9 16:02:50 2007
+++ php-src/sapi/cgi/cgi_main.c Mon Dec 3 09:38:25 2007
@@ -21,7 +21,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: cgi_main.c,v 1.346 2007/11/09 16:02:50 jani Exp $ */
+/* $Id: cgi_main.c,v 1.347 2007/12/03 09:38:25 dmitry Exp $ */
#include "php.h"
#include "php_globals.h"
@@ -1697,12 +1697,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);
@@ -1723,6 +1723,9 @@
break;
case 'm': /* list compiled in
modules */
+ if (script_file) {
+
efree(script_file);
+ }
SG(headers_sent) = 1;
php_printf("[PHP
Modules]\n");
print_modules(TSRMLS_C);
@@ -1744,6 +1747,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;
@@ -1780,6 +1786,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) {
@@ -1787,14 +1805,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