Bug in #! processing - "pear broken on current"

Garance A Drosehn gad at FreeBSD.org
Thu Jun 9 16:37:24 GMT 2005


[moved over from the thread:
        Re: cvs commit: src/sys/kern imgact_shell.c
on the cvs-src mailing list...]

At 11:03 AM -0500 6/9/05, Matthew D. Fuller wrote:
>On Thu, Jun 09, 2005 at 12:00:17PM -0400 I heard the voice of
>Garance A Drosehn, and lo! it spake thus:
>  > Matthew wrote:
>  > ]   See also the "pear broken on current" thread on -current
>  > ]   and -ports around last weekend.  Of course, I don't know
>  > ]   if pear is wrong in what it's trying to do, but the change
>  > ]   does appear to throw it off.
>  >
>  > I'm also willing to write some more changes to sh/options.c, if
>  > that is the best place to fix the problems that these ports are
>  > running into.
>
>Well, I dunno what part of it is giving troubles (and I haven't seen
>it myself, since I'm still on RELENG_5 for the moment; just keeping my
>eyes open).  It doesn't seem like a terribly esoteric line though:
>
>#!/usr/local/bin/php -n -q -dsafe_mode=0 -doutput_buffering=1

It is very likely that the problem which is being seen with this
script is due to the change in parsing I committed on May 28th.
Before the change, php would have been started up with:

            [0] ->  /usr/local/bin/php
            [1] ->  -n
            [2] ->  -q
            [3] ->  -dsafe_mode=0
            [4] ->  -doutput_buffering=1
            [5] ->  /usr/local/bin/name-of-script
         [6...] ->  parameters specified by user

and now php is being started with:

            [0] ->  /usr/local/bin/php
            [1] ->  -n -q -dsafe_mode=0 -doutput_buffering=1
            [2] ->  /usr/local/bin/name-of-script
         [3...] ->  parameters specified by user

Assuming 'php' does not know what to do when all those options are
glommed together in a single argument, then the above script would
not work right on any other operating systems either.  The change
I made on the 28th gets FreeBSD to work more like other OS's when
it comes to parsing that #!-line in scripts.

Changes to /bin/sh would not fix this, because /bin/sh is not
involved in this situation.  But the change I'm thinking of for
/usr/bin/env could be used to fix this, once I write up that change...

-- 
Garance Alistair Drosehn     =      gad at gilead.netel.rpi.edu
Senior Systems Programmer               or   gad at FreeBSD.org
Rensselaer Polytechnic Institute;             Troy, NY;  USA


More information about the freebsd-ports mailing list