johannes                Sat Jun  3 22:02:02 2006 UTC

  Modified files:              (Branch: PHP_5_2)
    /php-src/sapi/cli   php_cli.c 
    /php-src/sapi/cgi   cgi_main.c 
  Log:
  MFH
  
http://cvs.php.net/viewcvs.cgi/php-src/sapi/cli/php_cli.c?r1=1.129.2.13.2.2&r2=1.129.2.13.2.3&diff_format=u
Index: php-src/sapi/cli/php_cli.c
diff -u php-src/sapi/cli/php_cli.c:1.129.2.13.2.2 
php-src/sapi/cli/php_cli.c:1.129.2.13.2.3
--- php-src/sapi/cli/php_cli.c:1.129.2.13.2.2   Thu May 11 22:10:31 2006
+++ php-src/sapi/cli/php_cli.c  Sat Jun  3 22:02:02 2006
@@ -20,7 +20,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: php_cli.c,v 1.129.2.13.2.2 2006/05/11 22:10:31 dmitry Exp $ */
+/* $Id: php_cli.c,v 1.129.2.13.2.3 2006/06/03 22:02:02 johannes Exp $ */
 
 #include "php.h"
 #include "php_globals.h"
@@ -122,7 +122,6 @@
        {'e', 0, "profile-info"},
        {'F', 1, "process-file"},
        {'f', 1, "file"},
-       {'g', 1, "global"},
        {'h', 0, "help"},
        {'i', 0, "info"},
        {'l', 0, "syntax-check"},
@@ -415,7 +414,7 @@
                                "  -n               No php.ini file will be 
used\n"
                                "  -d foo[=bar]     Define INI entry foo with 
value 'bar'\n"
                                "  -e               Generate extended 
information for debugger/profiler\n"
-                               "  -f <file>        Parse <file>.\n"
+                               "  -f <file>        Parse and execute <file>.\n"
                                "  -h               This help\n"
                                "  -i               PHP information\n"
                                "  -l               Syntax check only (lint)\n"
@@ -467,21 +466,6 @@
 }
 
 
-static void php_register_command_line_global_vars(char **arg TSRMLS_DC)
-{
-       char *var, *val;
-
-       var = *arg;
-       val = strchr(var, '=');
-       if (!val) {
-               printf("No value specified for variable '%s'\n", var);
-       } else {
-               *val++ = '\0';
-               php_register_variable(var, val, NULL TSRMLS_CC);
-       }
-       efree(*arg);
-}
-
 static php_stream *s_in_process = NULL;
 
 static void cli_register_file_handles(TSRMLS_D)
@@ -591,7 +575,6 @@
        char *orig_optarg=php_optarg;
        char *arg_free=NULL, **arg_excp=&arg_free;
        char *script_file=NULL;
-       zend_llist global_vars;
        int interactive=0;
        int module_started = 0;
        int lineno = 0;
@@ -690,8 +673,6 @@
        module_started = 1;
 
        zend_first_try {
-               zend_llist_init(&global_vars, sizeof(char *), NULL, 0);
-
                zend_uv.html_errors = 0; /* tell the engine we're in non-html 
mode */
                CG(in_compilation) = 0; /* not initialized but needed for 
several options */
                EG(uninitialized_zval_ptr) = NULL;
@@ -786,12 +767,11 @@
 
                        case 'a':       /* interactive mode */
                                if (!interactive) {
-#if (HAVE_LIBREADLINE || HAVE_LIBEDIT) && !defined(COMPILE_DL_READLINE)
-                                       printf("Interactive shell\n\n");
-#else
-                                       printf("Interactive mode enabled\n\n");
-#endif
-                                       fflush(stdout);
+                                       if (behavior != PHP_MODE_STANDARD) {
+                                               param_error = 
param_mode_conflict;
+                                               break;
+                                       }
+
                                        interactive=1;
                                }
                                break;
@@ -829,14 +809,6 @@
                                script_file = php_optarg;
                                break;
 
-                       case 'g': /* define global variables on command line */
-                               {
-                                       char *arg = estrdup(php_optarg);
-
-                                       zend_llist_add_element(&global_vars, 
&arg);
-                               }
-                               break;
-
                        case 'l': /* syntax check mode */
                                if (behavior != PHP_MODE_STANDARD) {
                                        break;
@@ -864,7 +836,7 @@
                                                param_error = "You can use -r 
only once.\n";
                                                break;
                                        }
-                               } else if (behavior != PHP_MODE_STANDARD) {
+                               } else if (behavior != PHP_MODE_STANDARD || 
interactive) {
                                        param_error = param_mode_conflict;
                                        break;
                                }
@@ -892,7 +864,7 @@
                                                param_error = "You can use -B 
only once.\n";
                                                break;
                                        }
-                               } else if (behavior != PHP_MODE_STANDARD) {
+                               } else if (behavior != PHP_MODE_STANDARD || 
interactive) {
                                        param_error = param_mode_conflict;
                                        break;
                                }
@@ -906,7 +878,7 @@
                                                param_error = "You can use -E 
only once.\n";
                                                break;
                                        }
-                               } else if (behavior != PHP_MODE_STANDARD) {
+                               } else if (behavior != PHP_MODE_STANDARD || 
interactive) {
                                        param_error = param_mode_conflict;
                                        break;
                                }
@@ -962,6 +934,15 @@
                        goto err;
                }
 
+               if (interactive) {
+#if (HAVE_LIBREADLINE || HAVE_LIBEDIT) && !defined(COMPILE_DL_READLINE)
+                       printf("Interactive shell\n\n");
+#else
+                       printf("Interactive mode enabled\n\n");
+#endif
+                       fflush(stdout);
+               }
+
                CG(interactive) = interactive;
 
                /* only set script_file if not set already and not in direct 
mode and not at end of parameter list */
@@ -1018,10 +999,7 @@
                        }
                }
 
-               /* This actually destructs the elements of the list - ugly hack 
*/
                zend_is_auto_global("_SERVER", sizeof("_SERVER")-1 TSRMLS_CC);
-               zend_llist_apply(&global_vars, (llist_apply_func_t) 
php_register_command_line_global_vars TSRMLS_CC);
-               zend_llist_destroy(&global_vars);
 
                PG(during_request_startup) = 0;
                switch (behavior) {
@@ -1038,6 +1016,19 @@
                                char *prompt = "php > ";
                                char *history_file;
 
+                               if (PG(auto_prepend_file) && 
PG(auto_prepend_file)[0]) {
+                                       zend_file_handle *prepend_file_p;
+                                       zend_file_handle prepend_file = {0};
+
+                                       prepend_file.filename = 
PG(auto_prepend_file);
+                                       prepend_file.opened_path = NULL;
+                                       prepend_file.free_filename = 0;
+                                       prepend_file.type = 
ZEND_HANDLE_FILENAME;
+                                       prepend_file_p = &prepend_file;
+
+                                       zend_execute_scripts(ZEND_REQUIRE 
TSRMLS_CC, NULL, 1, prepend_file_p);
+                               }
+
                                history_file = tilde_expand("~/.php_history");
                                rl_attempted_completion_function = 
cli_code_completion;
                                rl_special_prefixes = "$";
@@ -1081,6 +1072,11 @@
                                        if (php_last_char != '\0' && 
php_last_char != '\n') {
                                                sapi_cli_single_write("\n", 1);
                                        }
+
+                                       if (EG(exception)) {
+                                               
zend_exception_error(EG(exception) TSRMLS_CC);
+                                       }
+
                                        php_last_char = '\0';
                                }
                                write_history(history_file);
http://cvs.php.net/viewcvs.cgi/php-src/sapi/cgi/cgi_main.c?r1=1.267.2.15.2.3&r2=1.267.2.15.2.4&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.3 
php-src/sapi/cgi/cgi_main.c:1.267.2.15.2.4
--- php-src/sapi/cgi/cgi_main.c:1.267.2.15.2.3  Wed May 24 09:42:21 2006
+++ php-src/sapi/cgi/cgi_main.c Sat Jun  3 22:02:02 2006
@@ -21,7 +21,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: cgi_main.c,v 1.267.2.15.2.3 2006/05/24 09:42:21 dmitry Exp $ */
+/* $Id: cgi_main.c,v 1.267.2.15.2.4 2006/06/03 22:02:02 johannes Exp $ */
 
 #include "php.h"
 #include "php_globals.h"
@@ -130,7 +130,6 @@
        {'d', 1, "define"},
        {'e', 0, "profile-info"},
        {'f', 1, "file"},
-       {'g', 1, "global"},
        {'h', 0, "help"},
        {'i', 0, "info"},
        {'l', 0, "syntax-check"},
@@ -912,22 +911,6 @@
        zend_alter_ini_entry(name, strlen(name) + 1, value, strlen(value), 
PHP_INI_SYSTEM, PHP_INI_STAGE_ACTIVATE);
 }
 
-
-static void php_register_command_line_global_vars(char **arg TSRMLS_DC)
-{
-       char *var, *val;
-
-       var = *arg;
-       val = strchr(var, '=');
-       if (!val) {
-               printf("No value specified for variable '%s'\n", var);
-       } else {
-               *val++ = '\0';
-               php_register_variable(var, val, NULL TSRMLS_CC);
-       }
-       efree(*arg);
-}
-
 #if PHP_FASTCGI
 /**
  * Clean up child processes upon exit
@@ -980,7 +963,6 @@
        int orig_optind = php_optind;
        char *orig_optarg = php_optarg;
        char *script_file = NULL;
-       zend_llist global_vars;
 #if FORCE_CGI_REDIRECT
        long force_redirect = 1;
        char *redirect_status_env = NULL;
@@ -1344,7 +1326,6 @@
                SG(server_context) = (void *) 1; /* avoid server_context==NULL 
checks */
 #endif
                init_request_info(TSRMLS_C);
-               zend_llist_init(&global_vars, sizeof(char *), NULL, 0);
                CG(interactive) = 0;
 
                if (!cgi
@@ -1389,14 +1370,6 @@
                                                SG(request_info).argv = 
&argv[php_optind - 1];
                                                break;
 
-                               case 'g': /* define global variables on command 
line */
-                                               {
-                                                       char *arg = 
estrdup(php_optarg);
-
-                                                       
zend_llist_add_element(&global_vars, &arg);
-                                               }
-                                               break;
-
                                case 'i': /* php info & quit */
                                                if 
(php_request_startup(TSRMLS_C) == FAILURE) {
                                                        
php_module_shutdown(TSRMLS_C);
@@ -1560,10 +1533,6 @@
                        SG(request_info).no_headers = 1;
                }
 
-               /* This actually destructs the elements of the list - ugly hack 
*/
-               zend_llist_apply(&global_vars, (llist_apply_func_t) 
php_register_command_line_global_vars TSRMLS_CC);
-               zend_llist_destroy(&global_vars);
-
                /* 
                        at this point path_translated will be set if:
                        1. we are running from shell and got filename was there

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

Reply via email to