hi,

(Zeev and Andi, and other core devlopers are surely familiar with this,
but maybe I can help, too)

the cause of this problem is something like this:

(1) in sapi/cgi/cgi_main.c(1118) or sapi/cli/php_cli.c(643), if the very
    begginig of the script is '#', PHP strips that line. at that time,
    CG(zend_lineno) is surely incremented.

but after that...

(2) in open_file_for_scanning() in Zend/zend_language_scanner.l
    (main() -> php_execute_scripts() -> zend_execute_scripts() ->
    zend_compile_file() -> open_file_for_scannning()), CG(zend_lineno)
    is reset to 1. so...

uhm, fixing this is not so easy, I think. if PHP does not strip first
line, PHP just prints that line, because that line should outside of the
script. maybe we need some kind of a flag in CG, but it'll be an ugly
hack.

hmm, any idea?

or leave this as the "PHP spec"? :)


Masaki Fujimoto
<[EMAIL PROTECTED]>

On Thu, 24 Oct 2002 09:18:04 +0300 (EEST)
Jani Taskinen <[EMAIL PROTECTED]> wrote:

> 
>     Er...You propably know then where this stripping happens
>     in PHP or Zend ?? (I couldn't find it..)
>     
>     --Jani
>     
> 
> 
> On 23 Oct 2002 [EMAIL PROTECTED] wrote:
> 
> > ID:               20035
> > Updated by:       [EMAIL PROTECTED]
> > Reported By:      [EMAIL PROTECTED]
> >-Status:           Assigned
> >+Status:           Open
> >-Bug Type:         Documentation problem
> >+Bug Type:         Scripting Engine problem
> > Operating System: OpenBSD 3.1
> > PHP Version:      4.2.3
> > Assigned To:      hholzgra
> > New Comment:
> >
> >The shebang line doesn't get stripped off by the kernel, PHP does that.
> >This is a bug.
> >
> >
> >Previous Comments:
> >------------------------------------------------------------------------
> >
> >[2002-10-23 00:44:20] [EMAIL PROTECTED]
> >
> >Your kernel strips the first line, and so PHP sees the last 3 lines. As
> >it doesn't know that the kernel stripped the first shebang line it's
> >obvious that your line 3 reports line 2.
> >
> >Derick
> >
> >------------------------------------------------------------------------
> >
> >[2002-10-22 20:25:37] [EMAIL PROTECTED]
> >
> >Excuse me, but I don't understand why this isn't a bug.  The only
> >reference to __LINE__ I can find in the documentation is here:
> >
> >http://www.php.net/manual/en/language.constants.php
> >
> >I can find nothing that suggests it is reasonable that __LINE__ counts
> >are off by one when used in #! prefixed command line scripts, (but not
> >in other uses) and I can see no reason why this would be considered
> >reasonable behaviour.
> >
> >Can someone give me at least a 1 sentence explanation instead of just
> >hitting the 'quick-fix' RTFM button?
> >
> >------------------------------------------------------------------------
> >
> >[2002-10-22 19:39:04] [EMAIL PROTECTED]
> >
> >Thank you for taking the time to write to us, but this is not
> >a bug. Please double-check the documentation available at
> >http://www.php.net/manual/ and the instructions on how to report
> >a bug at http://bugs.php.net/how-to-report.php
> >
> >
> >
> >------------------------------------------------------------------------
> >
> >[2002-10-22 19:34:54] [EMAIL PROTECTED]
> >
> >The built-in variable __LINE__ undercounts by 1 on command-line scripts
> >that begin with a #!path-to-php line.  For example:
> >
> >#!/usr/local/bin/php -q
> ><?php
> >echo "Line 3 reports ".__LINE__."\n";
> >?>
> >
> >This script will output:
> >
> >Line 3 reports 2
> >
> >This issue also applies to (at least) some other 4.1+ releases.
> >
> >
> >------------------------------------------------------------------------
> >
> >
> >
> 
> -- 
> <- For Sale! ->
> 
> 
> -- 
> PHP Development Mailing List <http://www.php.net/>
> To unsubscribe, visit: http://www.php.net/unsub.php


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to