com php-src: Skip shebang line if present: sapi/phpdbg/phpdbg _prompt.c
| From: | Bob Weinand | Date: | Sat, 01 Aug 2015 21:28:55 +0000 |
| Subject: | com php-src: Skip shebang line if present: sapi/phpdbg/phpdbg _prompt.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-88264@lists.php.net to get a copy of this message | ||
Commit: 06ef2aeca9705322c52230aba2fd633ae7aa2737
Author: Bob Weinand <bobwei9@hotmail.com> Sat, 1 Aug 2015 21:33:23 +0200
Parents: fb37da2a4875abc2153da583faca6c7554810ce9
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=06ef2aeca9705322c52230aba2fd633ae7aa2737
Log:
Skip shebang line if present
Changed paths:
M sapi/phpdbg/phpdbg_prompt.c
Diff:
diff --git a/sapi/phpdbg/phpdbg_prompt.c b/sapi/phpdbg/phpdbg_prompt.c
index 89e8d02..e920f30 100644
--- a/sapi/phpdbg/phpdbg_prompt.c
+++ b/sapi/phpdbg/phpdbg_prompt.c
@@ -443,14 +443,36 @@ PHPDBG_COMMAND(exec) /* {{{ */
int phpdbg_compile(void) /* {{{ */
{
zend_file_handle fh;
+ char *buf;
+ size_t len;
if (!PHPDBG_G(exec)) {
phpdbg_error("inactive", "type=\"nocontext\"", "No execution
context");
return FAILURE;
}
- if (php_stream_open_for_zend_ex(PHPDBG_G(exec), &fh, USE_PATH|STREAM_OPEN_FOR_INCLUDE) ==
SUCCESS) {
+ if (php_stream_open_for_zend_ex(PHPDBG_G(exec), &fh, USE_PATH|STREAM_OPEN_FOR_INCLUDE) ==
SUCCESS && zend_stream_fixup(&fh, &buf, &len) == SUCCESS) {
+ /* Skip #! line */
+ if (len >= 3 && buf[0] == '#' && buf[1] == '!') {
+ char *end = buf + len;
+ do {
+ switch (fh.handle.stream.mmap.buf++[0]) {
+ case '\r':
+ if (fh.handle.stream.mmap.buf[0] == '\n') {
+ fh.handle.stream.mmap.buf++;
+ }
+ case '\n':
+ CG(start_lineno) = 2;
+ fh.handle.stream.mmap.len -= fh.handle.stream.mmap.buf - buf;
+ end = fh.handle.stream.mmap.buf;
+ }
+ } while (fh.handle.stream.mmap.buf + 1 < end);
+ }
+
PHPDBG_G(ops) = zend_compile_file(&fh, ZEND_INCLUDE);
+
+ fh.handle.stream.mmap.buf = buf;
+ fh.handle.stream.mmap.len = len;
zend_destroy_file_handle(&fh);
if (EG(exception)) {
zend_exception_error(EG(exception), E_ERROR);