summaryrefslogtreecommitdiff
path: root/sapi
diff options
context:
space:
mode:
authorOndřej Surý <ondrej@sury.org>2014-07-02 13:10:19 +0200
committerOndřej Surý <ondrej@sury.org>2014-07-02 13:10:19 +0200
commit09ed144817606a3a835391b12455e6d9cb3a0ae2 (patch)
tree1284c43d38c82704eada3d721265b96ae8b4aee3 /sapi
parent60d44b592c4c4fdcbbf92db2882a97a9cc54713c (diff)
downloadphp-09ed144817606a3a835391b12455e6d9cb3a0ae2.tar.gz
New upstream version 5.6.0~rc2+dfsgupstream/5.6.0_rc2+dfsg
Diffstat (limited to 'sapi')
-rw-r--r--sapi/fpm/fpm/fpm_conf.c3
-rw-r--r--sapi/fpm/fpm/fpm_main.c25
-rw-r--r--sapi/phpdbg/Makefile.frag3
-rw-r--r--sapi/phpdbg/config.m42
-rw-r--r--sapi/phpdbg/phpdbg.159
-rw-r--r--sapi/phpdbg/phpdbg.h5
-rw-r--r--sapi/phpdbg/phpdbg_cmd.c6
-rw-r--r--sapi/phpdbg/phpdbg_help.c7
-rw-r--r--sapi/phpdbg/phpdbg_lexer.c1005
-rw-r--r--sapi/phpdbg/phpdbg_lexer.l38
-rw-r--r--sapi/phpdbg/phpdbg_list.c23
-rw-r--r--sapi/phpdbg/phpdbg_parser.c80
-rw-r--r--sapi/phpdbg/phpdbg_parser.y12
-rw-r--r--sapi/phpdbg/phpdbg_prompt.c5
-rw-r--r--sapi/phpdbg/phpdbg_utils.c6
15 files changed, 746 insertions, 533 deletions
diff --git a/sapi/fpm/fpm/fpm_conf.c b/sapi/fpm/fpm/fpm_conf.c
index ae7908642..34e048010 100644
--- a/sapi/fpm/fpm/fpm_conf.c
+++ b/sapi/fpm/fpm/fpm_conf.c
@@ -1075,6 +1075,9 @@ static int fpm_conf_process_all_pools() /* {{{ */
}
}
for (kv = wp->config->php_admin_values; kv; kv = kv->next) {
+ if (!strcasecmp(kv->key, "error_log") && !strcasecmp(kv->value, "syslog")) {
+ continue;
+ }
for (p = options; *p; p++) {
if (!strcasecmp(kv->key, *p)) {
fpm_evaluate_full_path(&kv->value, wp, NULL, 0);
diff --git a/sapi/fpm/fpm/fpm_main.c b/sapi/fpm/fpm/fpm_main.c
index 93090832f..2ee145634 100644
--- a/sapi/fpm/fpm/fpm_main.c
+++ b/sapi/fpm/fpm/fpm_main.c
@@ -1148,19 +1148,6 @@ static void init_request_info(TSRMLS_D)
TRANSLATE_SLASHES(env_document_root);
}
- if (env_path_translated != NULL && env_redirect_url != NULL &&
- env_path_translated != script_path_translated &&
- strcmp(env_path_translated, script_path_translated) != 0) {
- /*
- * pretty much apache specific. If we have a redirect_url
- * then our script_filename and script_name point to the
- * php executable
- */
- script_path_translated = env_path_translated;
- /* we correct SCRIPT_NAME now in case we don't have PATH_INFO */
- env_script_name = env_redirect_url;
- }
-
#ifdef __riscos__
/* Convert path to unix format*/
__riscosify_control |= __RISCOSIFY_DONT_CHECK_DIR;
@@ -1329,7 +1316,7 @@ static void init_request_info(TSRMLS_D)
efree(pt);
}
} else {
- /* make sure path_info/translated are empty */
+ /* make sure original values are remembered in ORIG_ copies if we've changed them */
if (!orig_script_filename ||
(script_path_translated != orig_script_filename &&
strcmp(script_path_translated, orig_script_filename) != 0)) {
@@ -1338,16 +1325,6 @@ static void init_request_info(TSRMLS_D)
}
script_path_translated = _sapi_cgibin_putenv("SCRIPT_FILENAME", script_path_translated TSRMLS_CC);
}
- if (env_redirect_url) {
- if (orig_path_info) {
- _sapi_cgibin_putenv("ORIG_PATH_INFO", orig_path_info TSRMLS_CC);
- _sapi_cgibin_putenv("PATH_INFO", NULL TSRMLS_CC);
- }
- if (orig_path_translated) {
- _sapi_cgibin_putenv("ORIG_PATH_TRANSLATED", orig_path_translated TSRMLS_CC);
- _sapi_cgibin_putenv("PATH_TRANSLATED", NULL TSRMLS_CC);
- }
- }
if (env_script_name != orig_script_name) {
if (orig_script_name) {
_sapi_cgibin_putenv("ORIG_SCRIPT_NAME", orig_script_name TSRMLS_CC);
diff --git a/sapi/phpdbg/Makefile.frag b/sapi/phpdbg/Makefile.frag
index d787b0fb1..b276aaaa5 100644
--- a/sapi/phpdbg/Makefile.frag
+++ b/sapi/phpdbg/Makefile.frag
@@ -26,6 +26,9 @@ install-phpdbg: $(BUILD_BINARY)
@$(mkinstalldirs) $(INSTALL_ROOT)$(localstatedir)/log
@$(mkinstalldirs) $(INSTALL_ROOT)$(localstatedir)/run
@$(INSTALL) -m 0755 $(BUILD_BINARY) $(INSTALL_ROOT)$(bindir)/$(program_prefix)phpdbg$(program_suffix)$(EXEEXT)
+ @echo "Installing phpdbg man page: $(INSTALL_ROOT)$(mandir)/man1/"
+ @$(mkinstalldirs) $(INSTALL_ROOT)$(mandir)/man1
+ @$(INSTALL_DATA) sapi/phpdbg/phpdbg.1 $(INSTALL_ROOT)$(mandir)/man1/$(program_prefix)phpdbg$(program_suffix).1
clean-phpdbg:
@echo "Cleaning phpdbg object files ..."
diff --git a/sapi/phpdbg/config.m4 b/sapi/phpdbg/config.m4
index 1a6640eac..d78a439af 100644
--- a/sapi/phpdbg/config.m4
+++ b/sapi/phpdbg/config.m4
@@ -21,7 +21,7 @@ if test "$PHP_PHPDBG" != "no"; then
PHP_PHPDBG_CFLAGS="-D_GNU_SOURCE"
PHP_PHPDBG_FILES="phpdbg.c phpdbg_parser.c phpdbg_lexer.c phpdbg_prompt.c phpdbg_help.c phpdbg_break.c phpdbg_print.c phpdbg_bp.c phpdbg_opcode.c phpdbg_list.c phpdbg_utils.c phpdbg_info.c phpdbg_cmd.c phpdbg_set.c phpdbg_frame.c phpdbg_watch.c phpdbg_btree.c"
- if test "$PHP_READLINE" != "no"; then
+ if test "$PHP_READLINE" != "no" -o "$PHP_LIBEDIT" != "no"; then
PHPDBG_EXTRA_LIBS="$PHP_READLINE_LIBS"
fi
diff --git a/sapi/phpdbg/phpdbg.1 b/sapi/phpdbg/phpdbg.1
new file mode 100644
index 000000000..5e4d144c8
--- /dev/null
+++ b/sapi/phpdbg/phpdbg.1
@@ -0,0 +1,59 @@
+.TH PHPDBG 1
+.SH NAME
+phpdbg \- The interactive PHP debugger
+.SH SYNOPSIS
+.B phpdbg
+[OPTION]
+[\fB\-e\fIFILE\fR]
+.SH DESCRIPTION
+.B phpdbg
+a lightweight, powerful, easy to use debugging platform for PHP5.
+.SH OPTIONS
+The following switches are implemented (just like cli SAPI):
+.TP
+.BR \-n
+No \fBphp.ini\fR file will be used
+.TP
+.BR \-c \fIpath\fB|\fIfile\fR
+Look for \fBphp.ini\fR file in the directory \fIpath\fR or use the specified \fIfile\fR
+.TP
+.BR \-z \fIfile\fR
+Load Zend extension \fIfile\fR
+.TP
+.BR \-d \fIfoo\fB[=\fIbar\fB]\fR
+Define INI entry \fIfoo\fR with value \fIbar\fR
+.PP The following switches change the default behaviour of phpdbg:
+.TP
+.BR \-v
+Disables quietness
+.TP
+.BR \-s
+Enabled stepping
+.TP
+.BR -e \fIfile\fR
+Sets execution context
+.TP
+.BR \-b
+Disables use of colour on the console
+.TP
+.BR \-I
+Ignore .phpdbginit (default init file)
+.TP
+.BR \-i \fIpath\fB|\ffile\fR
+Override .phpgdbinit location (implies -I)
+.TP
+.BR \-O \fIfile\fR
+Set oplog output to \fIfile\fR
+.TP
+.BR \-q
+Do not print banner on startup
+.TP
+.BR \-r
+Jump straight to run
+.TP
+.BR \-E
+Enable step through eval()
+.SH NOTES
+Passing -rr will cause phpdbg to quit after execution, rather than returning to the console
+.SH AUTHOR
+Written by Felipe Pena, Joe Watkins and Bob Weinand, formatted by Ondřej Surý for Debian project.
diff --git a/sapi/phpdbg/phpdbg.h b/sapi/phpdbg/phpdbg.h
index 12350d542..eb4faf1f9 100644
--- a/sapi/phpdbg/phpdbg.h
+++ b/sapi/phpdbg/phpdbg.h
@@ -64,10 +64,13 @@
# include "TSRM.h"
#endif
-#ifdef HAVE_LIBREADLINE
+#ifdef LIBREADLINE
# include <readline/readline.h>
# include <readline/history.h>
#endif
+#ifdef HAVE_LIBEDIT
+# include <editline/readline.h>
+#endif
#include "phpdbg_lexer.h"
#include "phpdbg_cmd.h"
diff --git a/sapi/phpdbg/phpdbg_cmd.c b/sapi/phpdbg/phpdbg_cmd.c
index d4ce8ebc5..a45513bee 100644
--- a/sapi/phpdbg/phpdbg_cmd.c
+++ b/sapi/phpdbg/phpdbg_cmd.c
@@ -792,7 +792,7 @@ PHPDBG_API int phpdbg_stack_execute(phpdbg_param_t *stack, char **why TSRMLS_DC)
PHPDBG_API char* phpdbg_read_input(char *buffered TSRMLS_DC) /* {{{ */
{
char *cmd = NULL;
-#ifndef HAVE_LIBREADLINE
+#if !defined(HAVE_LIBREADLINE) && !defined(HAVE_LIBEDIT)
char buf[PHPDBG_MAX_CMD];
#endif
char *buffer = NULL;
@@ -811,7 +811,7 @@ disconnect:
return NULL;
}
-#ifndef HAVE_LIBREADLINE
+#if !defined(HAVE_LIBREADLINE) && !defined(HAVE_LIBEDIT)
if (!(PHPDBG_G(flags) & PHPDBG_IS_REMOTE)) {
if (!phpdbg_write("%s", phpdbg_get_prompt(TSRMLS_C))) {
goto disconnect;
@@ -850,7 +850,7 @@ readline:
buffer = estrdup(cmd);
-#ifdef HAVE_LIBREADLINE
+#if defined(HAVE_LIBREADLINE) || defined(HAVE_LIBEDIT)
if (!buffered && cmd &&
!(PHPDBG_G(flags) & PHPDBG_IS_REMOTE)) {
free(cmd);
diff --git a/sapi/phpdbg/phpdbg_help.c b/sapi/phpdbg/phpdbg_help.c
index f2d074ded..1e58dc69c 100644
--- a/sapi/phpdbg/phpdbg_help.c
+++ b/sapi/phpdbg/phpdbg_help.c
@@ -318,8 +318,9 @@ phpdbg_help_text_t phpdbg_help_text[] = {
"**Information**" CR
" **list** list PHP source" CR
" **info** displays information on the debug session" CR
-" **print** show opcodes " CR
+" **print** show opcodes" CR
" **frame** select a stack frame and print a stack frame summary" CR
+" **back** shows the current backtrace" CR
" **help** provide help on a topic" CR CR
"**Starting and Stopping Execution**" CR
@@ -613,7 +614,7 @@ phpdbg_help_text_t phpdbg_help_text[] = {
{"finish",
"The **finish** command causes control to be passed back to the vm, continuing execution. Any "
"breakpoints that are encountered within the current stack frame will be skipped. Execution "
-"will then continue until the next breakpoint after leaving the stack frame or unitil "
+"will then continue until the next breakpoint after leaving the stack frame or until "
"completion of the script" CR CR
"Note when **step**ping is enabled, any opcode steps within the current stack frame are also "
@@ -629,7 +630,7 @@ phpdbg_help_text_t phpdbg_help_text[] = {
"**Examples**" CR CR
" $P frame 2" CR
-" $P E $count" CR
+" $P ev $count" CR
" Go to frame 2 and print out variable **$count** in that frame" CR CR
"Note that this frame scope is discarded when execution continues, with the execution frame "
diff --git a/sapi/phpdbg/phpdbg_lexer.c b/sapi/phpdbg/phpdbg_lexer.c
index 420dcac04..3092dc396 100644
--- a/sapi/phpdbg/phpdbg_lexer.c
+++ b/sapi/phpdbg/phpdbg_lexer.c
@@ -96,33 +96,49 @@ yyc_INITIAL:
};
YYDEBUG(0, *YYCURSOR);
- YYFILL(3);
+ YYFILL(4);
yych = *YYCURSOR;
- if (yych <= 0x1F) {
- if (yych <= '\t') {
+ if (yych <= 'D') {
+ if (yych <= '\n') {
if (yych <= 0x00) goto yy6;
if (yych <= 0x08) goto yy11;
+ if (yych >= '\n') goto yy4;
} else {
- if (yych <= '\n') goto yy4;
- if (yych != '\r') goto yy11;
+ if (yych <= '\r') {
+ if (yych <= '\f') goto yy11;
+ } else {
+ if (yych != ' ') goto yy11;
+ }
}
} else {
- if (yych <= 'e') {
- if (yych <= ' ') goto yy2;
- if (yych <= 'd') goto yy11;
- goto yy7;
+ if (yych <= 'd') {
+ if (yych <= 'Q') {
+ if (yych <= 'E') goto yy7;
+ goto yy11;
+ } else {
+ if (yych <= 'R') goto yy10;
+ if (yych <= 'S') goto yy8;
+ goto yy11;
+ }
} else {
- if (yych <= 'q') goto yy11;
- if (yych <= 'r') goto yy9;
- if (yych <= 's') goto yy8;
- goto yy11;
+ if (yych <= 'q') {
+ if (yych <= 'e') goto yy7;
+ goto yy11;
+ } else {
+ if (yych <= 'r') goto yy9;
+ if (yych <= 's') goto yy8;
+ goto yy11;
+ }
}
}
-yy2:
YYDEBUG(2, *YYCURSOR);
++YYCURSOR;
- if (yybm[0+(yych = *YYCURSOR)] & 128) {
- goto yy19;
+ if ((yych = *YYCURSOR) <= '\f') {
+ if (yych <= 0x08) goto yy3;
+ if (yych <= '\n') goto yy26;
+ } else {
+ if (yych <= '\r') goto yy26;
+ if (yych == ' ') goto yy26;
}
yy3:
YYDEBUG(3, *YYCURSOR);
@@ -134,49 +150,60 @@ yy3:
YYCURSOR = LEX(text);
goto restart;
}
-#line 138 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+#line 154 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
yy4:
YYDEBUG(4, *YYCURSOR);
++YYCURSOR;
- if (yybm[0+(yych = *YYCURSOR)] & 128) {
- goto yy19;
+ if ((yych = *YYCURSOR) <= '\f') {
+ if (yych <= 0x08) goto yy5;
+ if (yych <= '\n') goto yy26;
+ } else {
+ if (yych <= '\r') goto yy26;
+ if (yych == ' ') goto yy26;
}
+yy5:
YYDEBUG(5, *YYCURSOR);
yyleng = (size_t) YYCURSOR - (size_t) yytext;
#line 68 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
return 0;
}
-#line 151 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+#line 172 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
yy6:
YYDEBUG(6, *YYCURSOR);
yych = *++YYCURSOR;
goto yy3;
yy7:
YYDEBUG(7, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'v') goto yy17;
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'V') goto yy22;
+ if (yych == 'v') goto yy22;
goto yy3;
yy8:
YYDEBUG(8, *YYCURSOR);
- yych = *++YYCURSOR;
- if (yych == 'h') goto yy15;
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'H') goto yy18;
+ if (yych == 'h') goto yy18;
goto yy3;
yy9:
YYDEBUG(9, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 128) {
+ goto yy15;
+ }
+ if (yych == 'U') goto yy12;
if (yych == 'u') goto yy12;
+ goto yy3;
yy10:
YYDEBUG(10, *YYCURSOR);
- yyleng = (size_t) YYCURSOR - (size_t) yytext;
-#line 155 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
- {
- YYSETCONDITION(RAW);
- phpdbg_init_param(yylval, EMPTY_PARAM);
- return T_RUN;
-}
-#line 180 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'U') goto yy12;
+ if (yych == 'u') goto yy12;
+ goto yy3;
yy11:
YYDEBUG(11, *YYCURSOR);
yych = *++YYCURSOR;
@@ -184,18 +211,62 @@ yy11:
yy12:
YYDEBUG(12, *YYCURSOR);
yych = *++YYCURSOR;
+ if (yych == 'N') goto yy14;
if (yych == 'n') goto yy14;
+yy13:
YYDEBUG(13, *YYCURSOR);
YYCURSOR = YYMARKER;
- goto yy10;
+ goto yy3;
yy14:
YYDEBUG(14, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy10;
+ if (yybm[0+yych] & 128) {
+ goto yy15;
+ }
+ goto yy13;
yy15:
YYDEBUG(15, *YYCURSOR);
++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
YYDEBUG(16, *YYCURSOR);
+ if (yybm[0+yych] & 128) {
+ goto yy15;
+ }
+ YYDEBUG(17, *YYCURSOR);
+ yyleng = (size_t) YYCURSOR - (size_t) yytext;
+#line 155 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
+ {
+ YYSETCONDITION(RAW);
+ phpdbg_init_param(yylval, EMPTY_PARAM);
+ return T_RUN;
+}
+#line 245 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy18:
+ YYDEBUG(18, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych <= '\f') {
+ if (yych <= 0x08) goto yy13;
+ if (yych >= '\v') goto yy13;
+ } else {
+ if (yych <= '\r') goto yy19;
+ if (yych != ' ') goto yy13;
+ }
+yy19:
+ YYDEBUG(19, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(20, *YYCURSOR);
+ if (yych <= '\f') {
+ if (yych <= 0x08) goto yy21;
+ if (yych <= '\n') goto yy19;
+ } else {
+ if (yych <= '\r') goto yy19;
+ if (yych == ' ') goto yy19;
+ }
+yy21:
+ YYDEBUG(21, *YYCURSOR);
yyleng = (size_t) YYCURSOR - (size_t) yytext;
#line 150 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
@@ -203,11 +274,32 @@ yy15:
phpdbg_init_param(yylval, EMPTY_PARAM);
return T_SHELL;
}
-#line 207 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
-yy17:
- YYDEBUG(17, *YYCURSOR);
+#line 278 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy22:
+ YYDEBUG(22, *YYCURSOR);
+ yych = *++YYCURSOR;
+ if (yych <= '\f') {
+ if (yych <= 0x08) goto yy13;
+ if (yych >= '\v') goto yy13;
+ } else {
+ if (yych <= '\r') goto yy23;
+ if (yych != ' ') goto yy13;
+ }
+yy23:
+ YYDEBUG(23, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(18, *YYCURSOR);
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(24, *YYCURSOR);
+ if (yych <= '\f') {
+ if (yych <= 0x08) goto yy25;
+ if (yych <= '\n') goto yy23;
+ } else {
+ if (yych <= '\r') goto yy23;
+ if (yych == ' ') goto yy23;
+ }
+yy25:
+ YYDEBUG(25, *YYCURSOR);
yyleng = (size_t) YYCURSOR - (size_t) yytext;
#line 145 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
@@ -215,17 +307,22 @@ yy17:
phpdbg_init_param(yylval, EMPTY_PARAM);
return T_EVAL;
}
-#line 219 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
-yy19:
- YYDEBUG(19, *YYCURSOR);
+#line 311 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy26:
+ YYDEBUG(26, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(20, *YYCURSOR);
- if (yybm[0+yych] & 128) {
- goto yy19;
+ YYDEBUG(27, *YYCURSOR);
+ if (yych <= '\f') {
+ if (yych <= 0x08) goto yy28;
+ if (yych <= '\n') goto yy26;
+ } else {
+ if (yych <= '\r') goto yy26;
+ if (yych == ' ') goto yy26;
}
- YYDEBUG(21, *YYCURSOR);
+yy28:
+ YYDEBUG(28, *YYCURSOR);
yyleng = (size_t) YYCURSOR - (size_t) yytext;
#line 139 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
@@ -233,7 +330,7 @@ yy19:
goto restart;
}
-#line 237 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+#line 334 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
}
/* *********************************** */
yyc_NORMAL:
@@ -272,71 +369,60 @@ yyc_NORMAL:
16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16,
};
- YYDEBUG(22, *YYCURSOR);
+ YYDEBUG(29, *YYCURSOR);
YYFILL(11);
yych = *YYCURSOR;
- if (yych <= ':') {
- if (yych <= ' ') {
- if (yych <= '\n') {
- if (yych <= 0x00) goto yy29;
- if (yych <= 0x08) goto yy32;
- if (yych >= '\n') goto yy27;
- } else {
- if (yych == '\r') goto yy24;
- if (yych <= 0x1F) goto yy32;
- }
- } else {
- if (yych <= '.') {
- if (yych == '#') goto yy47;
- if (yych <= '-') goto yy32;
- goto yy34;
- } else {
- if (yych <= '/') goto yy32;
- if (yych <= '0') goto yy37;
- if (yych <= '9') goto yy34;
- goto yy49;
- }
- }
- } else {
- if (yych <= 'i') {
- if (yych <= 'd') {
- if (yych == 'Z') goto yy38;
- if (yych <= 'c') goto yy32;
- goto yy39;
- } else {
- if (yych <= 'e') goto yy40;
- if (yych <= 'f') goto yy41;
- if (yych <= 'h') goto yy32;
- goto yy30;
- }
- } else {
- if (yych <= 's') {
- if (yych <= 'm') goto yy32;
- if (yych <= 'n') goto yy42;
- if (yych <= 'o') goto yy43;
- goto yy32;
- } else {
- if (yych <= 'x') {
- if (yych <= 't') goto yy44;
- goto yy32;
- } else {
- if (yych <= 'y') goto yy45;
- if (yych <= 'z') goto yy46;
- goto yy32;
- }
- }
- }
+ YYDEBUG(-1, yych);
+ switch (yych) {
+ case 0x00: goto yy36;
+ case '\t':
+ case '\r':
+ case ' ': goto yy31;
+ case '\n': goto yy34;
+ case '#': goto yy55;
+ case '-': goto yy41;
+ case '.':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9': goto yy42;
+ case '0': goto yy45;
+ case ':': goto yy57;
+ case 'D':
+ case 'd': goto yy46;
+ case 'E':
+ case 'e': goto yy47;
+ case 'F':
+ case 'f': goto yy48;
+ case 'I':
+ case 'i': goto yy37;
+ case 'N':
+ case 'n': goto yy49;
+ case 'O':
+ case 'o': goto yy50;
+ case 'T':
+ case 't': goto yy51;
+ case 'Y':
+ case 'y': goto yy52;
+ case 'Z': goto yy53;
+ case 'z': goto yy54;
+ default: goto yy39;
}
-yy24:
- YYDEBUG(24, *YYCURSOR);
+yy31:
+ YYDEBUG(31, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(25, *YYCURSOR);
+ YYDEBUG(32, *YYCURSOR);
if (yybm[0+yych] & 8) {
- goto yy24;
+ goto yy31;
}
- YYDEBUG(26, *YYCURSOR);
+ YYDEBUG(33, *YYCURSOR);
yyleng = (size_t) YYCURSOR - (size_t) yytext;
#line 139 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
@@ -344,33 +430,34 @@ yy24:
goto restart;
}
-#line 348 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
-yy27:
- YYDEBUG(27, *YYCURSOR);
+#line 434 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy34:
+ YYDEBUG(34, *YYCURSOR);
++YYCURSOR;
if (yybm[0+(yych = *YYCURSOR)] & 8) {
- goto yy24;
+ goto yy31;
}
-yy28:
- YYDEBUG(28, *YYCURSOR);
+yy35:
+ YYDEBUG(35, *YYCURSOR);
yyleng = (size_t) YYCURSOR - (size_t) yytext;
#line 68 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
return 0;
}
-#line 362 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
-yy29:
- YYDEBUG(29, *YYCURSOR);
+#line 448 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy36:
+ YYDEBUG(36, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy28;
-yy30:
- YYDEBUG(30, *YYCURSOR);
+ goto yy35;
+yy37:
+ YYDEBUG(37, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'f') goto yy94;
- goto yy33;
-yy31:
- YYDEBUG(31, *YYCURSOR);
+ if (yych == 'F') goto yy106;
+ if (yych == 'f') goto yy106;
+ goto yy40;
+yy38:
+ YYDEBUG(38, *YYCURSOR);
yyleng = (size_t) YYCURSOR - (size_t) yytext;
#line 125 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
@@ -379,48 +466,56 @@ yy31:
yylval->len = yyleng;
return T_ID;
}
-#line 383 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
-yy32:
- YYDEBUG(32, *YYCURSOR);
+#line 470 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy39:
+ YYDEBUG(39, *YYCURSOR);
yyaccept = 0;
YYMARKER = ++YYCURSOR;
YYFILL(3);
yych = *YYCURSOR;
-yy33:
- YYDEBUG(33, *YYCURSOR);
+yy40:
+ YYDEBUG(40, *YYCURSOR);
if (yybm[0+yych] & 16) {
- goto yy32;
+ goto yy39;
}
- if (yych <= '9') goto yy31;
- goto yy54;
-yy34:
- YYDEBUG(34, *YYCURSOR);
+ if (yych <= '9') goto yy38;
+ goto yy62;
+yy41:
+ YYDEBUG(41, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 32) {
+ goto yy42;
+ }
+ goto yy40;
+yy42:
+ YYDEBUG(42, *YYCURSOR);
yyaccept = 1;
YYMARKER = ++YYCURSOR;
YYFILL(3);
yych = *YYCURSOR;
- YYDEBUG(35, *YYCURSOR);
+ YYDEBUG(43, *YYCURSOR);
if (yybm[0+yych] & 32) {
- goto yy34;
+ goto yy42;
}
if (yych <= 0x1F) {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy36;
- if (yych <= 0x08) goto yy32;
+ if (yych <= 0x00) goto yy44;
+ if (yych <= 0x08) goto yy39;
} else {
- if (yych != '\r') goto yy32;
+ if (yych != '\r') goto yy39;
}
} else {
if (yych <= '#') {
- if (yych <= ' ') goto yy36;
- if (yych <= '"') goto yy32;
+ if (yych <= ' ') goto yy44;
+ if (yych <= '"') goto yy39;
} else {
- if (yych == ':') goto yy54;
- goto yy32;
+ if (yych == ':') goto yy62;
+ goto yy39;
}
}
-yy36:
- YYDEBUG(36, *YYCURSOR);
+yy44:
+ YYDEBUG(44, *YYCURSOR);
yyleng = (size_t) YYCURSOR - (size_t) yytext;
#line 106 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
@@ -428,164 +523,168 @@ yy36:
yylval->num = atoi(yytext);
return T_DIGITS;
}
-#line 432 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
-yy37:
- YYDEBUG(37, *YYCURSOR);
+#line 527 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy45:
+ YYDEBUG(45, *YYCURSOR);
yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
if (yybm[0+yych] & 32) {
- goto yy34;
+ goto yy42;
}
if (yych <= 0x1F) {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy36;
- if (yych <= 0x08) goto yy33;
- goto yy36;
+ if (yych <= 0x00) goto yy44;
+ if (yych <= 0x08) goto yy40;
+ goto yy44;
} else {
- if (yych == '\r') goto yy36;
- goto yy33;
+ if (yych == '\r') goto yy44;
+ goto yy40;
}
} else {
if (yych <= '#') {
- if (yych <= ' ') goto yy36;
- if (yych <= '"') goto yy33;
- goto yy36;
+ if (yych <= ' ') goto yy44;
+ if (yych <= '"') goto yy40;
+ goto yy44;
} else {
- if (yych == 'x') goto yy90;
- goto yy33;
+ if (yych == 'x') goto yy102;
+ goto yy40;
}
}
-yy38:
- YYDEBUG(38, *YYCURSOR);
+yy46:
+ YYDEBUG(46, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'E') goto yy87;
- goto yy33;
-yy39:
- YYDEBUG(39, *YYCURSOR);
+ if (yych == 'I') goto yy96;
+ if (yych == 'i') goto yy96;
+ goto yy40;
+yy47:
+ YYDEBUG(47, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'i') goto yy81;
- goto yy33;
-yy40:
- YYDEBUG(40, *YYCURSOR);
+ if (yych == 'N') goto yy91;
+ if (yych == 'n') goto yy91;
+ goto yy40;
+yy48:
+ YYDEBUG(48, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'n') goto yy76;
- goto yy33;
-yy41:
- YYDEBUG(41, *YYCURSOR);
+ if (yych == 'A') goto yy88;
+ if (yych == 'a') goto yy88;
+ goto yy40;
+yy49:
+ YYDEBUG(49, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'a') goto yy73;
- goto yy33;
-yy42:
- YYDEBUG(42, *YYCURSOR);
+ if (yych == 'O') goto yy84;
+ if (yych == 'o') goto yy84;
+ goto yy40;
+yy50:
+ YYDEBUG(50, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'o') goto yy71;
- goto yy33;
-yy43:
- YYDEBUG(43, *YYCURSOR);
+ if (yych <= 'N') {
+ if (yych == 'F') goto yy83;
+ if (yych <= 'M') goto yy40;
+ goto yy77;
+ } else {
+ if (yych <= 'f') {
+ if (yych <= 'e') goto yy40;
+ goto yy83;
+ } else {
+ if (yych == 'n') goto yy77;
+ goto yy40;
+ }
+ }
+yy51:
+ YYDEBUG(51, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'f') goto yy70;
- if (yych == 'n') goto yy66;
- goto yy33;
-yy44:
- YYDEBUG(44, *YYCURSOR);
+ if (yych == 'R') goto yy81;
+ if (yych == 'r') goto yy81;
+ goto yy40;
+yy52:
+ YYDEBUG(52, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'r') goto yy68;
- goto yy33;
-yy45:
- YYDEBUG(45, *YYCURSOR);
+ if (yych == 'E') goto yy76;
+ if (yych == 'e') goto yy76;
+ goto yy40;
+yy53:
+ YYDEBUG(53, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'e') goto yy65;
- goto yy33;
-yy46:
- YYDEBUG(46, *YYCURSOR);
+ if (yych == 'E') goto yy73;
+ goto yy40;
+yy54:
+ YYDEBUG(54, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'e') goto yy53;
- goto yy33;
-yy47:
- YYDEBUG(47, *YYCURSOR);
+ if (yych == 'e') goto yy61;
+ goto yy40;
+yy55:
+ YYDEBUG(55, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(48, *YYCURSOR);
+ YYDEBUG(56, *YYCURSOR);
yyleng = (size_t) YYCURSOR - (size_t) yytext;
#line 84 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
return T_POUND;
}
-#line 523 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
-yy49:
- YYDEBUG(49, *YYCURSOR);
+#line 634 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy57:
+ YYDEBUG(57, *YYCURSOR);
++YYCURSOR;
- if ((yych = *YYCURSOR) == ':') goto yy51;
- YYDEBUG(50, *YYCURSOR);
+ if ((yych = *YYCURSOR) == ':') goto yy59;
+ YYDEBUG(58, *YYCURSOR);
yyleng = (size_t) YYCURSOR - (size_t) yytext;
#line 90 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
return T_COLON;
}
-#line 534 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
-yy51:
- YYDEBUG(51, *YYCURSOR);
+#line 645 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy59:
+ YYDEBUG(59, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(52, *YYCURSOR);
+ YYDEBUG(60, *YYCURSOR);
yyleng = (size_t) YYCURSOR - (size_t) yytext;
#line 87 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
return T_DCOLON;
}
-#line 544 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
-yy53:
- YYDEBUG(53, *YYCURSOR);
+#line 655 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy61:
+ YYDEBUG(61, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'n') goto yy59;
- goto yy33;
-yy54:
- YYDEBUG(54, *YYCURSOR);
+ if (yych == 'n') goto yy67;
+ goto yy40;
+yy62:
+ YYDEBUG(62, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych == '/') goto yy56;
-yy55:
- YYDEBUG(55, *YYCURSOR);
+ if (yych == '/') goto yy64;
+yy63:
+ YYDEBUG(63, *YYCURSOR);
YYCURSOR = YYMARKER;
- if (yyaccept <= 3) {
- if (yyaccept <= 1) {
- if (yyaccept <= 0) {
- goto yy31;
- } else {
- goto yy36;
- }
+ if (yyaccept <= 1) {
+ if (yyaccept <= 0) {
+ goto yy38;
} else {
- if (yyaccept <= 2) {
- goto yy64;
- } else {
- goto yy67;
- }
+ goto yy44;
}
} else {
- if (yyaccept <= 5) {
- if (yyaccept <= 4) {
- goto yy72;
- } else {
- goto yy93;
- }
+ if (yyaccept <= 2) {
+ goto yy72;
} else {
- goto yy95;
+ goto yy105;
}
}
-yy56:
- YYDEBUG(56, *YYCURSOR);
+yy64:
+ YYDEBUG(64, *YYCURSOR);
yych = *++YYCURSOR;
- if (yych != '/') goto yy55;
- YYDEBUG(57, *YYCURSOR);
+ if (yych != '/') goto yy63;
+ YYDEBUG(65, *YYCURSOR);
++YYCURSOR;
- YYDEBUG(58, *YYCURSOR);
+ YYDEBUG(66, *YYCURSOR);
yyleng = (size_t) YYCURSOR - (size_t) yytext;
#line 78 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
@@ -594,52 +693,52 @@ yy56:
yylval->len = yyleng;
return T_PROTO;
}
-#line 598 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
-yy59:
- YYDEBUG(59, *YYCURSOR);
+#line 697 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy67:
+ YYDEBUG(67, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 'd') goto yy33;
- YYDEBUG(60, *YYCURSOR);
+ if (yych != 'd') goto yy40;
+ YYDEBUG(68, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych != '_') goto yy33;
-yy61:
- YYDEBUG(61, *YYCURSOR);
+ if (yych != '_') goto yy40;
+yy69:
+ YYDEBUG(69, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yybm[0+yych] & 64) {
- goto yy62;
+ goto yy70;
}
- goto yy33;
-yy62:
- YYDEBUG(62, *YYCURSOR);
+ goto yy40;
+yy70:
+ YYDEBUG(70, *YYCURSOR);
yyaccept = 2;
YYMARKER = ++YYCURSOR;
YYFILL(3);
yych = *YYCURSOR;
- YYDEBUG(63, *YYCURSOR);
+ YYDEBUG(71, *YYCURSOR);
if (yybm[0+yych] & 64) {
- goto yy62;
+ goto yy70;
}
if (yych <= 0x1F) {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy64;
- if (yych <= 0x08) goto yy32;
+ if (yych <= 0x00) goto yy72;
+ if (yych <= 0x08) goto yy39;
} else {
- if (yych != '\r') goto yy32;
+ if (yych != '\r') goto yy39;
}
} else {
if (yych <= '#') {
- if (yych <= ' ') goto yy64;
- if (yych <= '"') goto yy32;
+ if (yych <= ' ') goto yy72;
+ if (yych <= '"') goto yy39;
} else {
- if (yych == ':') goto yy54;
- goto yy32;
+ if (yych == ':') goto yy62;
+ goto yy39;
}
}
-yy64:
- YYDEBUG(64, *YYCURSOR);
+yy72:
+ YYDEBUG(72, *YYCURSOR);
yyleng = (size_t) YYCURSOR - (size_t) yytext;
#line 118 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
@@ -648,32 +747,53 @@ yy64:
yylval->len = yyleng;
return T_OPCODE;
}
-#line 652 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
-yy65:
- YYDEBUG(65, *YYCURSOR);
+#line 751 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy73:
+ YYDEBUG(73, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 's') goto yy33;
-yy66:
- YYDEBUG(66, *YYCURSOR);
- yyaccept = 3;
+ if (yych != 'N') goto yy40;
+ YYDEBUG(74, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '\r') {
- if (yych <= 0x08) {
- if (yych >= 0x01) goto yy33;
- } else {
- if (yych <= '\n') goto yy67;
- if (yych <= '\f') goto yy33;
- }
+ if (yych != 'D') goto yy40;
+ YYDEBUG(75, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == '_') goto yy69;
+ goto yy40;
+yy76:
+ YYDEBUG(76, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'S') goto yy77;
+ if (yych != 's') goto yy40;
+yy77:
+ YYDEBUG(77, *YYCURSOR);
+ yyaccept = 0;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '\f') {
+ if (yych <= 0x08) goto yy40;
+ if (yych >= '\v') goto yy40;
} else {
- if (yych <= ' ') {
- if (yych <= 0x1F) goto yy33;
- } else {
- if (yych != '#') goto yy33;
- }
+ if (yych <= '\r') goto yy78;
+ if (yych != ' ') goto yy40;
}
-yy67:
- YYDEBUG(67, *YYCURSOR);
+yy78:
+ YYDEBUG(78, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(79, *YYCURSOR);
+ if (yych <= '\f') {
+ if (yych <= 0x08) goto yy80;
+ if (yych <= '\n') goto yy78;
+ } else {
+ if (yych <= '\r') goto yy78;
+ if (yych == ' ') goto yy78;
+ }
+yy80:
+ YYDEBUG(80, *YYCURSOR);
yyleng = (size_t) YYCURSOR - (size_t) yytext;
#line 94 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
@@ -681,42 +801,52 @@ yy67:
yylval->num = 1;
return T_TRUTHY;
}
-#line 685 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
-yy68:
- YYDEBUG(68, *YYCURSOR);
+#line 805 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy81:
+ YYDEBUG(81, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 'u') goto yy33;
- YYDEBUG(69, *YYCURSOR);
+ if (yych == 'U') goto yy82;
+ if (yych != 'u') goto yy40;
+yy82:
+ YYDEBUG(82, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'e') goto yy66;
- goto yy33;
-yy70:
- YYDEBUG(70, *YYCURSOR);
+ if (yych == 'E') goto yy77;
+ if (yych == 'e') goto yy77;
+ goto yy40;
+yy83:
+ YYDEBUG(83, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 'f') goto yy33;
-yy71:
- YYDEBUG(71, *YYCURSOR);
- yyaccept = 4;
+ if (yych == 'F') goto yy84;
+ if (yych != 'f') goto yy40;
+yy84:
+ YYDEBUG(84, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '\r') {
- if (yych <= 0x08) {
- if (yych >= 0x01) goto yy33;
- } else {
- if (yych <= '\n') goto yy72;
- if (yych <= '\f') goto yy33;
- }
+ if (yych <= '\f') {
+ if (yych <= 0x08) goto yy40;
+ if (yych >= '\v') goto yy40;
} else {
- if (yych <= ' ') {
- if (yych <= 0x1F) goto yy33;
- } else {
- if (yych != '#') goto yy33;
- }
+ if (yych <= '\r') goto yy85;
+ if (yych != ' ') goto yy40;
}
-yy72:
- YYDEBUG(72, *YYCURSOR);
+yy85:
+ YYDEBUG(85, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(86, *YYCURSOR);
+ if (yych <= '\f') {
+ if (yych <= 0x08) goto yy87;
+ if (yych <= '\n') goto yy85;
+ } else {
+ if (yych <= '\r') goto yy85;
+ if (yych == ' ') goto yy85;
+ }
+yy87:
+ YYDEBUG(87, *YYCURSOR);
yyleng = (size_t) YYCURSOR - (size_t) yytext;
#line 100 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
@@ -724,119 +854,130 @@ yy72:
yylval->num = 0;
return T_FALSY;
}
-#line 728 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
-yy73:
- YYDEBUG(73, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 'l') goto yy33;
- YYDEBUG(74, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 's') goto yy33;
- YYDEBUG(75, *YYCURSOR);
- yyaccept = 0;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'e') goto yy71;
- goto yy33;
-yy76:
- YYDEBUG(76, *YYCURSOR);
+#line 858 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy88:
+ YYDEBUG(88, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 'a') goto yy33;
- YYDEBUG(77, *YYCURSOR);
+ if (yych == 'L') goto yy89;
+ if (yych != 'l') goto yy40;
+yy89:
+ YYDEBUG(89, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 'b') goto yy33;
- YYDEBUG(78, *YYCURSOR);
+ if (yych == 'S') goto yy90;
+ if (yych != 's') goto yy40;
+yy90:
+ YYDEBUG(90, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 'l') goto yy33;
- YYDEBUG(79, *YYCURSOR);
+ if (yych == 'E') goto yy84;
+ if (yych == 'e') goto yy84;
+ goto yy40;
+yy91:
+ YYDEBUG(91, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 'e') goto yy33;
- YYDEBUG(80, *YYCURSOR);
+ if (yych == 'A') goto yy92;
+ if (yych != 'a') goto yy40;
+yy92:
+ YYDEBUG(92, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'd') goto yy66;
- goto yy33;
-yy81:
- YYDEBUG(81, *YYCURSOR);
+ if (yych == 'B') goto yy93;
+ if (yych != 'b') goto yy40;
+yy93:
+ YYDEBUG(93, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 's') goto yy33;
- YYDEBUG(82, *YYCURSOR);
+ if (yych == 'L') goto yy94;
+ if (yych != 'l') goto yy40;
+yy94:
+ YYDEBUG(94, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 'a') goto yy33;
- YYDEBUG(83, *YYCURSOR);
+ if (yych == 'E') goto yy95;
+ if (yych != 'e') goto yy40;
+yy95:
+ YYDEBUG(95, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 'b') goto yy33;
- YYDEBUG(84, *YYCURSOR);
+ if (yych == 'D') goto yy77;
+ if (yych == 'd') goto yy77;
+ goto yy40;
+yy96:
+ YYDEBUG(96, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 'l') goto yy33;
- YYDEBUG(85, *YYCURSOR);
+ if (yych == 'S') goto yy97;
+ if (yych != 's') goto yy40;
+yy97:
+ YYDEBUG(97, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 'e') goto yy33;
- YYDEBUG(86, *YYCURSOR);
+ if (yych == 'A') goto yy98;
+ if (yych != 'a') goto yy40;
+yy98:
+ YYDEBUG(98, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'd') goto yy71;
- goto yy33;
-yy87:
- YYDEBUG(87, *YYCURSOR);
+ if (yych == 'B') goto yy99;
+ if (yych != 'b') goto yy40;
+yy99:
+ YYDEBUG(99, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 'N') goto yy33;
- YYDEBUG(88, *YYCURSOR);
+ if (yych == 'L') goto yy100;
+ if (yych != 'l') goto yy40;
+yy100:
+ YYDEBUG(100, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 'D') goto yy33;
- YYDEBUG(89, *YYCURSOR);
+ if (yych == 'E') goto yy101;
+ if (yych != 'e') goto yy40;
+yy101:
+ YYDEBUG(101, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych == '_') goto yy61;
- goto yy33;
-yy90:
- YYDEBUG(90, *YYCURSOR);
+ if (yych == 'D') goto yy84;
+ if (yych == 'd') goto yy84;
+ goto yy40;
+yy102:
+ YYDEBUG(102, *YYCURSOR);
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yybm[0+yych] & 128) {
- goto yy91;
+ goto yy103;
}
- goto yy33;
-yy91:
- YYDEBUG(91, *YYCURSOR);
- yyaccept = 5;
+ goto yy40;
+yy103:
+ YYDEBUG(103, *YYCURSOR);
+ yyaccept = 3;
YYMARKER = ++YYCURSOR;
YYFILL(3);
yych = *YYCURSOR;
- YYDEBUG(92, *YYCURSOR);
+ YYDEBUG(104, *YYCURSOR);
if (yybm[0+yych] & 128) {
- goto yy91;
+ goto yy103;
}
if (yych <= 0x1F) {
if (yych <= '\n') {
- if (yych <= 0x00) goto yy93;
- if (yych <= 0x08) goto yy32;
+ if (yych <= 0x00) goto yy105;
+ if (yych <= 0x08) goto yy39;
} else {
- if (yych != '\r') goto yy32;
+ if (yych != '\r') goto yy39;
}
} else {
if (yych <= '#') {
- if (yych <= ' ') goto yy93;
- if (yych <= '"') goto yy32;
+ if (yych <= ' ') goto yy105;
+ if (yych <= '"') goto yy39;
} else {
- if (yych == ':') goto yy54;
- goto yy32;
+ if (yych == ':') goto yy62;
+ goto yy39;
}
}
-yy93:
- YYDEBUG(93, *YYCURSOR);
+yy105:
+ YYDEBUG(105, *YYCURSOR);
yyleng = (size_t) YYCURSOR - (size_t) yytext;
#line 112 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
@@ -844,27 +985,33 @@ yy93:
yylval->addr = strtoul(yytext, 0, 16);
return T_ADDR;
}
-#line 848 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
-yy94:
- YYDEBUG(94, *YYCURSOR);
- yyaccept = 6;
+#line 989 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy106:
+ YYDEBUG(106, *YYCURSOR);
+ yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '\r') {
- if (yych <= 0x08) {
- if (yych >= 0x01) goto yy33;
- } else {
- if (yych <= '\n') goto yy95;
- if (yych <= '\f') goto yy33;
- }
+ if (yych <= '\f') {
+ if (yych <= 0x08) goto yy40;
+ if (yych >= '\v') goto yy40;
} else {
- if (yych <= ' ') {
- if (yych <= 0x1F) goto yy33;
- } else {
- if (yych != '#') goto yy33;
- }
+ if (yych <= '\r') goto yy107;
+ if (yych != ' ') goto yy40;
}
-yy95:
- YYDEBUG(95, *YYCURSOR);
+yy107:
+ YYDEBUG(107, *YYCURSOR);
+ ++YYCURSOR;
+ YYFILL(1);
+ yych = *YYCURSOR;
+ YYDEBUG(108, *YYCURSOR);
+ if (yych <= '\f') {
+ if (yych <= 0x08) goto yy109;
+ if (yych <= '\n') goto yy107;
+ } else {
+ if (yych <= '\r') goto yy107;
+ if (yych == ' ') goto yy107;
+ }
+yy109:
+ YYDEBUG(109, *YYCURSOR);
yyleng = (size_t) YYCURSOR - (size_t) yytext;
#line 72 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
@@ -872,7 +1019,7 @@ yy95:
phpdbg_init_param(yylval, EMPTY_PARAM);
return T_IF;
}
-#line 876 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+#line 1023 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
}
/* *********************************** */
yyc_RAW:
@@ -911,29 +1058,29 @@ yyc_RAW:
64, 64, 64, 64, 64, 64, 64, 64,
64, 64, 64, 64, 64, 64, 64, 64,
};
- YYDEBUG(96, *YYCURSOR);
+ YYDEBUG(110, *YYCURSOR);
YYFILL(2);
yych = *YYCURSOR;
if (yybm[0+yych] & 32) {
- goto yy98;
+ goto yy112;
}
- if (yych <= 0x00) goto yy103;
- if (yych == '\n') goto yy101;
- goto yy104;
-yy98:
- YYDEBUG(98, *YYCURSOR);
+ if (yych <= 0x00) goto yy117;
+ if (yych == '\n') goto yy115;
+ goto yy118;
+yy112:
+ YYDEBUG(112, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(99, *YYCURSOR);
+ YYDEBUG(113, *YYCURSOR);
if (yybm[0+yych] & 32) {
- goto yy98;
+ goto yy112;
}
- if (yych <= 0x00) goto yy100;
- if (yych == '\n') goto yy106;
- goto yy104;
-yy100:
- YYDEBUG(100, *YYCURSOR);
+ if (yych <= 0x00) goto yy114;
+ if (yych == '\n') goto yy120;
+ goto yy118;
+yy114:
+ YYDEBUG(114, *YYCURSOR);
yyleng = (size_t) YYCURSOR - (size_t) yytext;
#line 132 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
@@ -942,45 +1089,45 @@ yy100:
yylval->len = yyleng;
return T_INPUT;
}
-#line 946 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
-yy101:
- YYDEBUG(101, *YYCURSOR);
+#line 1093 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy115:
+ YYDEBUG(115, *YYCURSOR);
++YYCURSOR;
if (yybm[0+(yych = *YYCURSOR)] & 128) {
- goto yy106;
+ goto yy120;
}
-yy102:
- YYDEBUG(102, *YYCURSOR);
+yy116:
+ YYDEBUG(116, *YYCURSOR);
yyleng = (size_t) YYCURSOR - (size_t) yytext;
#line 68 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
return 0;
}
-#line 960 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
-yy103:
- YYDEBUG(103, *YYCURSOR);
+#line 1107 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+yy117:
+ YYDEBUG(117, *YYCURSOR);
yych = *++YYCURSOR;
- goto yy102;
-yy104:
- YYDEBUG(104, *YYCURSOR);
+ goto yy116;
+yy118:
+ YYDEBUG(118, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(105, *YYCURSOR);
+ YYDEBUG(119, *YYCURSOR);
if (yybm[0+yych] & 64) {
- goto yy104;
+ goto yy118;
}
- goto yy100;
-yy106:
- YYDEBUG(106, *YYCURSOR);
+ goto yy114;
+yy120:
+ YYDEBUG(120, *YYCURSOR);
++YYCURSOR;
YYFILL(1);
yych = *YYCURSOR;
- YYDEBUG(107, *YYCURSOR);
+ YYDEBUG(121, *YYCURSOR);
if (yybm[0+yych] & 128) {
- goto yy106;
+ goto yy120;
}
- YYDEBUG(108, *YYCURSOR);
+ YYDEBUG(122, *YYCURSOR);
yyleng = (size_t) YYCURSOR - (size_t) yytext;
#line 139 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
{
@@ -988,7 +1135,7 @@ yy106:
goto restart;
}
-#line 992 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
+#line 1139 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.c"
}
}
#line 168 "/var/root/php-src/sapi/phpdbg/phpdbg_lexer.l"
diff --git a/sapi/phpdbg/phpdbg_lexer.l b/sapi/phpdbg/phpdbg_lexer.l
index 4d9c837f1..7b3ce38c4 100644
--- a/sapi/phpdbg/phpdbg_lexer.l
+++ b/sapi/phpdbg/phpdbg_lexer.l
@@ -43,21 +43,21 @@ restart:
/*!re2c
re2c:yyfill:check = 0;
-T_TRUE "true"
-T_YES "yes"
-T_ON "on"
-T_ENABLED "enabled"
-T_FALSE "false"
-T_NO "no"
-T_OFF "off"
-T_DISABLED "disabled"
-T_EVAL "ev"
-T_SHELL "sh"
-T_IF "if"
-T_RUN "run"
+T_TRUE 'true'
+T_YES 'yes'
+T_ON 'on'
+T_ENABLED 'enabled'
+T_FALSE 'false'
+T_NO 'no'
+T_OFF 'off'
+T_DISABLED 'disabled'
+T_EVAL 'ev'
+T_SHELL 'sh'
+T_IF 'if'
+T_RUN 'run'
T_RUN_SHORT "r"
WS [ \r\n\t]+
-DIGITS [0-9\.]+
+DIGITS [-]?[0-9\.]+
ID [^ \r\n\t:#\000]+
ADDR [0][x][a-fA-F0-9]+
OPCODE (ZEND_|zend_)([A-Za-z])+
@@ -69,7 +69,7 @@ INPUT [^\n\000]+
return 0;
}
-<NORMAL>{T_IF} {
+<NORMAL>{T_IF}{WS} {
YYSETCONDITION(RAW);
phpdbg_init_param(yylval, EMPTY_PARAM);
return T_IF;
@@ -91,13 +91,13 @@ INPUT [^\n\000]+
return T_COLON;
}
-<NORMAL>{T_YES}|{T_ON}|{T_ENABLED}|{T_TRUE} {
+<NORMAL>({T_YES}|{T_ON}|{T_ENABLED}|{T_TRUE}){WS} {
phpdbg_init_param(yylval, NUMERIC_PARAM);
yylval->num = 1;
return T_TRUTHY;
}
-<NORMAL>{T_NO}|{T_OFF}|{T_DISABLED}|{T_FALSE} {
+<NORMAL>({T_NO}|{T_OFF}|{T_DISABLED}|{T_FALSE}){WS} {
phpdbg_init_param(yylval, NUMERIC_PARAM);
yylval->num = 0;
return T_FALSY;
@@ -142,17 +142,17 @@ INPUT [^\n\000]+
goto restart;
}
-<INITIAL>{T_EVAL} {
+<INITIAL>{T_EVAL}{WS} {
YYSETCONDITION(RAW);
phpdbg_init_param(yylval, EMPTY_PARAM);
return T_EVAL;
}
-<INITIAL>{T_SHELL} {
+<INITIAL>{T_SHELL}{WS} {
YYSETCONDITION(RAW);
phpdbg_init_param(yylval, EMPTY_PARAM);
return T_SHELL;
}
-<INITIAL>{T_RUN}|{T_RUN_SHORT} {
+<INITIAL>({T_RUN}|{T_RUN_SHORT}){WS} {
YYSETCONDITION(RAW);
phpdbg_init_param(yylval, EMPTY_PARAM);
return T_RUN;
diff --git a/sapi/phpdbg/phpdbg_list.c b/sapi/phpdbg/phpdbg_list.c
index 037c6c38b..e8db4e605 100644
--- a/sapi/phpdbg/phpdbg_list.c
+++ b/sapi/phpdbg/phpdbg_list.c
@@ -130,14 +130,14 @@ void phpdbg_list_file(const char *filename, long count, long offset, int highlig
char *opened = NULL;
char buffer[8096] = {0,};
long line = 0;
-
+
php_stream *stream = NULL;
if (VCWD_STAT(filename, &st) == FAILURE) {
phpdbg_error("Failed to stat file %s", filename);
return;
}
-
+
stream = php_stream_open_wrapper(filename, "rb", USE_PATH, &opened);
if (!stream) {
@@ -145,11 +145,17 @@ void phpdbg_list_file(const char *filename, long count, long offset, int highlig
return;
}
+ if (offset < 0) {
+ count += offset;
+ offset = 0;
+ }
+
while (php_stream_gets(stream, buffer, sizeof(buffer)) != NULL) {
+ long linelen = strlen(buffer);
+
++line;
- if (!offset || offset <= line) {
- /* Without offset, or offset reached */
+ if (offset <= line) {
if (!highlight) {
phpdbg_write("%05ld: %s", line, buffer);
} else {
@@ -159,10 +165,15 @@ void phpdbg_list_file(const char *filename, long count, long offset, int highlig
phpdbg_write(">%05ld: %s", line, buffer);
}
}
+
+ if (buffer[linelen - 1] != '\n') {
+ phpdbg_write("\n");
+ }
}
-
- if ((count + (offset-1)) == line)
+
+ if (count > 0 && count + offset - 1 < line) {
break;
+ }
}
php_stream_close(stream);
diff --git a/sapi/phpdbg/phpdbg_parser.c b/sapi/phpdbg/phpdbg_parser.c
index f9a3e4d29..e34c2f48f 100644
--- a/sapi/phpdbg/phpdbg_parser.c
+++ b/sapi/phpdbg/phpdbg_parser.c
@@ -436,7 +436,7 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 25
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 41
+#define YYLAST 42
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 21
@@ -493,8 +493,8 @@ static const yytype_uint8 yytranslate[] =
static const yytype_uint8 yyprhs[] =
{
0, 0, 3, 5, 7, 8, 10, 13, 17, 22,
- 27, 33, 37, 43, 47, 49, 51, 53, 55, 57,
- 59, 61, 64, 67, 70, 72
+ 27, 33, 37, 43, 47, 50, 52, 54, 56, 58,
+ 60, 62, 64, 67, 70, 72
};
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
@@ -504,9 +504,9 @@ static const yytype_int8 yyrhs[] =
23, 24, -1, 18, 10, 14, -1, 18, 10, 12,
14, -1, 13, 18, 10, 14, -1, 13, 18, 10,
12, 14, -1, 18, 11, 18, -1, 18, 11, 18,
- 12, 14, -1, 18, 12, 14, -1, 17, -1, 16,
- -1, 15, -1, 7, -1, 8, -1, 14, -1, 18,
- -1, 6, 19, -1, 3, 19, -1, 5, 19, -1,
+ 12, 14, -1, 18, 12, 14, -1, 6, 19, -1,
+ 17, -1, 16, -1, 15, -1, 7, -1, 8, -1,
+ 14, -1, 18, -1, 3, 19, -1, 5, 19, -1,
4, -1, 4, 19, -1
};
@@ -514,8 +514,8 @@ static const yytype_int8 yyrhs[] =
static const yytype_uint8 yyrline[] =
{
0, 66, 66, 67, 68, 72, 73, 77, 82, 87,
- 97, 107, 112, 118, 124, 125, 126, 127, 128, 129,
- 130, 134, 139, 144, 149, 153
+ 97, 107, 112, 118, 124, 129, 130, 131, 132, 133,
+ 134, 135, 139, 144, 149, 153
};
#endif
@@ -552,15 +552,15 @@ static const yytype_uint8 yyr1[] =
{
0, 21, 22, 22, 22, 23, 23, 24, 24, 24,
24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
- 24, 25, 25, 25, 25, 25
+ 24, 24, 25, 25, 25, 25
};
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
static const yytype_uint8 yyr2[] =
{
0, 2, 1, 1, 0, 1, 2, 3, 4, 4,
- 5, 3, 5, 3, 1, 1, 1, 1, 1, 1,
- 1, 2, 2, 2, 1, 2
+ 5, 3, 5, 3, 2, 1, 1, 1, 1, 1,
+ 1, 1, 2, 2, 1, 2
};
/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
@@ -568,9 +568,9 @@ static const yytype_uint8 yyr2[] =
means the default is an error. */
static const yytype_uint8 yydefact[] =
{
- 4, 0, 24, 0, 0, 17, 18, 0, 19, 16,
- 15, 14, 20, 0, 2, 5, 3, 22, 25, 23,
- 21, 0, 0, 0, 0, 1, 6, 0, 0, 7,
+ 4, 0, 24, 0, 0, 18, 19, 0, 20, 17,
+ 16, 15, 21, 0, 2, 5, 3, 22, 25, 23,
+ 14, 0, 0, 0, 0, 1, 6, 0, 0, 7,
11, 13, 0, 9, 8, 0, 10, 12
};
@@ -585,16 +585,16 @@ static const yytype_int8 yydefgoto[] =
#define YYPACT_NINF -11
static const yytype_int8 yypact[] =
{
- -3, -10, 10, 11, 12, -11, -11, 14, -11, -11,
- -11, -11, -4, 28, 9, -11, -11, -11, -11, -11,
- -11, 23, 6, 16, 21, -11, -11, 7, 22, -11,
- 25, -11, 24, -11, -11, 26, -11, -11
+ -3, -10, 11, 12, 13, -11, -11, 15, -11, -11,
+ -11, -11, -4, 29, 10, -11, -11, -11, -11, -11,
+ -11, 24, 7, 17, 22, -11, -11, 8, 23, -11,
+ 26, -11, 25, -11, -11, 27, -11, -11
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int8 yypgoto[] =
{
- -11, -11, -11, 27, -11
+ -11, -11, -11, 28, -11
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
@@ -604,10 +604,10 @@ static const yytype_int8 yypgoto[] =
static const yytype_uint8 yytable[] =
{
1, 2, 3, 4, 5, 6, 22, 23, 24, 17,
- 7, 8, 9, 10, 11, 12, 5, 6, 28, 32,
- 29, 33, 7, 8, 9, 10, 11, 12, 25, 18,
- 19, 20, 21, 27, 30, 31, 34, 35, 36, 0,
- 37, 26
+ 7, 8, 9, 10, 11, 12, 4, 5, 6, 28,
+ 32, 29, 33, 7, 8, 9, 10, 11, 12, 25,
+ 18, 19, 20, 21, 27, 30, 31, 34, 35, 36,
+ 0, 37, 26
};
#define yypact_value_is_default(yystate) \
@@ -619,10 +619,10 @@ static const yytype_uint8 yytable[] =
static const yytype_int8 yycheck[] =
{
3, 4, 5, 6, 7, 8, 10, 11, 12, 19,
- 13, 14, 15, 16, 17, 18, 7, 8, 12, 12,
- 14, 14, 13, 14, 15, 16, 17, 18, 0, 19,
- 19, 19, 18, 10, 18, 14, 14, 12, 14, -1,
- 14, 14
+ 13, 14, 15, 16, 17, 18, 6, 7, 8, 12,
+ 12, 14, 14, 13, 14, 15, 16, 17, 18, 0,
+ 19, 19, 19, 18, 10, 18, 14, 14, 12, 14,
+ -1, 14, 14
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1563,53 +1563,53 @@ yyreduce:
case 14:
/* Line 1802 of yacc.c */
#line 124 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
- { (yyval) = (yyvsp[(1) - (1)]); }
+ {
+ (yyval).type = COND_PARAM;
+ (yyval).str = (yyvsp[(2) - (2)]).str;
+ (yyval).len = (yyvsp[(2) - (2)]).len;
+ }
break;
case 15:
/* Line 1802 of yacc.c */
-#line 125 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+#line 129 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 16:
/* Line 1802 of yacc.c */
-#line 126 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+#line 130 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 17:
/* Line 1802 of yacc.c */
-#line 127 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+#line 131 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 18:
/* Line 1802 of yacc.c */
-#line 128 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+#line 132 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 19:
/* Line 1802 of yacc.c */
-#line 129 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+#line 133 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 20:
/* Line 1802 of yacc.c */
-#line 130 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+#line 134 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
{ (yyval) = (yyvsp[(1) - (1)]); }
break;
case 21:
/* Line 1802 of yacc.c */
-#line 134 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
- {
- (yyval).type = COND_PARAM;
- (yyval).str = (yyvsp[(2) - (2)]).str;
- (yyval).len = (yyvsp[(2) - (2)]).len;
- }
+#line 135 "/var/root/php-src/sapi/phpdbg/phpdbg_parser.y"
+ { (yyval) = (yyvsp[(1) - (1)]); }
break;
case 22:
diff --git a/sapi/phpdbg/phpdbg_parser.y b/sapi/phpdbg/phpdbg_parser.y
index fd81edfc2..702bf7845 100644
--- a/sapi/phpdbg/phpdbg_parser.y
+++ b/sapi/phpdbg/phpdbg_parser.y
@@ -121,6 +121,11 @@ parameter
$$.len = $1.len;
$$.num = $3.num;
}
+ | T_IF T_INPUT {
+ $$.type = COND_PARAM;
+ $$.str = $2.str;
+ $$.len = $2.len;
+ }
| T_OPCODE { $$ = $1; }
| T_ADDR { $$ = $1; }
| T_LITERAL { $$ = $1; }
@@ -131,12 +136,7 @@ parameter
;
full_expression
- : T_IF T_INPUT {
- $$.type = COND_PARAM;
- $$.str = $2.str;
- $$.len = $2.len;
- }
- | T_EVAL T_INPUT {
+ : T_EVAL T_INPUT {
$$.type = EVAL_PARAM;
$$.str = $2.str;
$$.len = $2.len;
diff --git a/sapi/phpdbg/phpdbg_prompt.c b/sapi/phpdbg/phpdbg_prompt.c
index 5379e7758..d91ef3f3f 100644
--- a/sapi/phpdbg/phpdbg_prompt.c
+++ b/sapi/phpdbg/phpdbg_prompt.c
@@ -732,6 +732,11 @@ PHPDBG_COMMAND(print) /* {{{ */
#else
phpdbg_writeln("Readline\tno");
#endif
+#ifdef HAVE_LIBEDIT
+ phpdbg_writeln("Libedit\t\tyes");
+#else
+ phpdbg_writeln("Libedit\t\tno");
+#endif
phpdbg_writeln("Exec\t\t%s", PHPDBG_G(exec) ? PHPDBG_G(exec) : "none");
phpdbg_writeln("Compiled\t%s", PHPDBG_G(ops) ? "yes" : "no");
diff --git a/sapi/phpdbg/phpdbg_utils.c b/sapi/phpdbg/phpdbg_utils.c
index 98748b202..3ce2fade1 100644
--- a/sapi/phpdbg/phpdbg_utils.c
+++ b/sapi/phpdbg/phpdbg_utils.c
@@ -400,12 +400,16 @@ PHPDBG_API const char *phpdbg_get_prompt(TSRMLS_D) /* {{{ */
}
/* create cached prompt */
+#ifndef HAVE_LIBEDIT
+ /* TODO: libedit doesn't seems to support coloured prompt */
if ((PHPDBG_G(flags) & PHPDBG_IS_COLOURED)) {
asprintf(
&PHPDBG_G(prompt)[1], "\033[%sm%s\033[0m ",
PHPDBG_G(colors)[PHPDBG_COLOR_PROMPT]->code,
PHPDBG_G(prompt)[0]);
- } else {
+ } else
+#endif
+ {
asprintf(
&PHPDBG_G(prompt)[1], "%s ",
PHPDBG_G(prompt)[0]);