]> granicus.if.org Git - php/commitdiff
-removed -x
authorMarcus Boerger <helly@php.net>
Sat, 23 Mar 2002 17:10:31 +0000 (17:10 +0000)
committerMarcus Boerger <helly@php.net>
Sat, 23 Mar 2002 17:10:31 +0000 (17:10 +0000)
-error handling for illegal switch combinations
-corrected ws for one case block

sapi/cli/php_cli.c

index 46e345352c9a48b05ed9bc0e874a17ec55ac00c4..949c8667f44e74079af7e68f6b1e9e65da5c5111 100644 (file)
 #define PHP_MODE_LINT        4
 #define PHP_MODE_STRIP       5
 #define PHP_MODE_CLI_DIRECT  6
-#define PHP_MODE_CLI_NO_TAGS 7
 
 extern char *ap_php_optarg;
 extern int ap_php_optind;
 
-#define OPTSTRING "aCc:d:ef:g:hilmnqr:sw?vx:z:"
+#define OPTSTRING "aCc:d:ef:g:hilmnqr:sw?vz:"
 
 static int _print_module_info(zend_module_entry *module, void *arg TSRMLS_DC)
 {
@@ -242,13 +241,12 @@ static void php_cli_usage(char *argv0)
                prog = "php";
        }
 
-       php_printf( "Usage: %s [options] [-f | -x] <file> [args...]\n"
+       php_printf( "Usage: %s [options] [-f] <file> [args...]\n"
                    "       %s [options] -r <code> [args...]\n"
                    "       %s [options] [-- args...]\n"
                                "  -s             Display colour syntax highlighted source.\n"
                                "  -w             Display source with stripped comments and whitespace.\n"
                                "  -f <file>      Parse <file>.\n"
-                               "  -x <file>      Parse <file> without script tags <?..?>\n"
                                "  -v             Version number\n"
                                "  -c <path>      Look for php.ini file in this directory\n"
                                "  -a             Run interactively\n"
@@ -315,6 +313,7 @@ int main(int argc, char *argv[])
        zend_llist global_vars;
        int interactive=0;
     char *exec_direct=NULL;
+    char *param_error=NULL;
 /* end of temporary locals */
 #ifdef ZTS
        zend_compiler_globals *compiler_globals;
@@ -418,16 +417,11 @@ int main(int argc, char *argv[])
                                CG(extended_info) = 1;
                                break;
 
-                       case 'x': /* parse file */
-                               if (behavior != PHP_MODE_STANDARD)
-                                       break;
-                               behavior=PHP_MODE_CLI_NO_TAGS;
-                               script_file = ap_php_optarg;
-                               no_headers = 1;
-
                        case 'f': /* parse file */
-                               if (behavior != PHP_MODE_STANDARD)
+                               if (behavior == PHP_MODE_CLI_DIRECT) {
+                                       param_error = "Either execute direct code or use a file.\n";
                                        break;
+                               }
                                script_file = ap_php_optarg;
                                no_headers = 1;
                                break;
@@ -478,18 +472,20 @@ int main(int argc, char *argv[])
                                SG(headers_sent) = 1;
                                php_printf("Running PHP %s\n%s\n", PHP_VERSION , get_zend_version());
                                php_printf("[PHP Modules]\n");
-                       zend_hash_apply_with_argument(&module_registry, (apply_func_arg_t) _print_module_info, NULL TSRMLS_CC);
-                       php_printf("\n[Zend Modules]\n");
-                       zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) _print_extension_info, NULL TSRMLS_CC);
-                       php_printf("\n");
-                       php_end_ob_buffers(1 TSRMLS_CC);
-                       exit(1);
+                               zend_hash_apply_with_argument(&module_registry, (apply_func_arg_t) _print_module_info, NULL TSRMLS_CC);
+                               php_printf("\n[Zend Modules]\n");
+                               zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) _print_extension_info, NULL TSRMLS_CC);
+                               php_printf("\n");
+                               php_end_ob_buffers(1 TSRMLS_CC);
+                               exit(1);
                        break;
 
 #if 0 /* not yet operational, see also below ... */
                        case 'n': /* generate indented source mode*/
-                               if (behavior != PHP_MODE_STANDARD)
+                               if (behavior == PHP_MODE_CLI_DIRECT) {
+                                       param_error = "Source indenting only works for files.\n";
                                        break;
+                               }
                                behavior=PHP_MODE_INDENT;
                                break;
 #endif
@@ -498,19 +494,23 @@ int main(int argc, char *argv[])
                                /* This is default so NOP */
                                break;
 
-                       case 's': /* generate highlighted HTML from source */
-                               if (behavior != PHP_MODE_STANDARD)
-                                       break;
-                               behavior=PHP_MODE_HIGHLIGHT;
-                               break;
-
                        case 'r': /* run code from command line */
-                               if (behavior != PHP_MODE_STANDARD)
+                               if (behavior != PHP_MODE_STANDARD) {
+                                       param_error = "Either execute direct code or use a file.\n";
                                        break;
+                               }
                                behavior=PHP_MODE_CLI_DIRECT;
                                exec_direct=ap_php_optarg;
                                break;
 
+                       case 's': /* generate highlighted HTML from source */
+                               if (behavior == PHP_MODE_CLI_DIRECT) {
+                                       param_error = "Source highlighting only works for files.\n";
+                                       break;
+                               }
+                               behavior=PHP_MODE_HIGHLIGHT;
+                               break;
+
                        case 'v': /* show php version & quit */
                                no_headers = 1;
                                if (php_request_startup(TSRMLS_C)==FAILURE) {
@@ -527,8 +527,10 @@ int main(int argc, char *argv[])
                                break;
 
                        case 'w':
-                               if (behavior != PHP_MODE_STANDARD)
+                               if (behavior == PHP_MODE_CLI_DIRECT) {
+                                       param_error = "Source stripping only works for files.\n";
                                        break;
+                               }
                                behavior=PHP_MODE_STRIP;
                                break;
 
@@ -541,6 +543,13 @@ int main(int argc, char *argv[])
                        }
                }
 
+               if (param_error) {
+                       SG(headers_sent) = 1;
+                       SG(request_info).no_headers = 1;
+                       PUTS(param_error);
+                       exit(1);
+               }
+
                CG(interactive) = interactive;
 
                /* only set script_file if not set already and not in direct mode and not at end of parameter list */
@@ -572,29 +581,13 @@ int main(int argc, char *argv[])
                }
                if (script_file) {
                        if (!(file_handle.handle.fp = VCWD_FOPEN(script_file, "rb"))) {
+                               SG(headers_sent) = 1;
+                               SG(request_info).no_headers = 1;
                                PUTS("Could not open input file.\n");
                                php_request_shutdown((void *) 0);
                                php_module_shutdown(TSRMLS_C);
                                return FAILURE;
                        }
-                       if (behavior == PHP_MODE_CLI_NO_TAGS) {
-                               FILE *fp;
-
-                               if (!(fp=tmpfile())) {
-                                       PUTS("Could not create temp file.\n");
-                                       php_request_shutdown((void *) 0);
-                                       php_module_shutdown(TSRMLS_C);
-                                       return FAILURE;
-                               }
-                               fwrite("<?\n", 3, 1, fp);
-                               while((c=fgetc(file_handle.handle.fp))!=EOF) {
-                                       fputc(c, fp);
-                               }
-                               fwrite("\n?>", 3, 1, fp);
-                               fclose(file_handle.handle.fp);
-                               file_handle.handle.fp = fp;
-                               behavior = PHP_MODE_STANDARD;
-                       }
                        php_register_variable("PHP_SELF", script_file, NULL TSRMLS_CC);
                        file_handle.filename = script_file;
                        /* #!php support */