mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Skip shebang line if present
This commit is contained in:
parent
fb37da2a48
commit
06ef2aeca9
1 changed files with 23 additions and 1 deletions
|
@ -443,14 +443,36 @@ PHPDBG_COMMAND(exec) /* {{{ */
|
||||||
int phpdbg_compile(void) /* {{{ */
|
int phpdbg_compile(void) /* {{{ */
|
||||||
{
|
{
|
||||||
zend_file_handle fh;
|
zend_file_handle fh;
|
||||||
|
char *buf;
|
||||||
|
size_t len;
|
||||||
|
|
||||||
if (!PHPDBG_G(exec)) {
|
if (!PHPDBG_G(exec)) {
|
||||||
phpdbg_error("inactive", "type=\"nocontext\"", "No execution context");
|
phpdbg_error("inactive", "type=\"nocontext\"", "No execution context");
|
||||||
return FAILURE;
|
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);
|
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);
|
zend_destroy_file_handle(&fh);
|
||||||
if (EG(exception)) {
|
if (EG(exception)) {
|
||||||
zend_exception_error(EG(exception), E_ERROR);
|
zend_exception_error(EG(exception), E_ERROR);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue