#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)
{
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"
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;
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;
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
/* 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) {
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;
}
}
+ 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 */
}
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 */