#include "php_getopt.h"
-#define PHP_MODE_STANDARD 1
-#define PHP_MODE_HIGHLIGHT 2
-#define PHP_MODE_INDENT 3
-#define PHP_MODE_LINT 4
-#define PHP_MODE_STRIP 5
-#define PHP_MODE_CLI_DIRECT 6
+#define PHP_MODE_STANDARD 1
+#define PHP_MODE_HIGHLIGHT 2
+#define PHP_MODE_INDENT 3
+#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?vz:"
+#define OPTSTRING "aCc:d:ef:g:hilmnqr:sw?vx:z:"
static int _print_module_info(zend_module_entry *module, void *arg TSRMLS_DC)
{
prog = "php";
}
- php_printf( "Usage: %s [options] [-f] <file> [args...]\n"
+ php_printf( "Usage: %s [options] [-f | -x] <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"
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)
+ break;
script_file = ap_php_optarg;
no_headers = 1;
break;
break;
case 'l': /* syntax check mode */
+ if (behavior != PHP_MODE_STANDARD)
+ break;
no_headers = 1;
behavior=PHP_MODE_LINT;
break;
#if 0 /* not yet operational, see also below ... */
case 'n': /* generate indented source mode*/
+ if (behavior != PHP_MODE_STANDARD)
+ break;
behavior=PHP_MODE_INDENT;
break;
#endif
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)
+ break;
behavior=PHP_MODE_CLI_DIRECT;
exec_direct=ap_php_optarg;
break;
break;
case 'w':
+ if (behavior != PHP_MODE_STANDARD)
+ break;
behavior=PHP_MODE_STRIP;
break;
}
if (script_file) {
if (!(file_handle.handle.fp = VCWD_FOPEN(script_file, "rb"))) {
- PUTS("No input file specified.\n");
+ 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) {
+ size_t len_r, len_w;
+ char buf[4096];
+ 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 */