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