delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp-workers/1999/10/24/06:03:05

Date: Sun, 24 Oct 1999 09:31:54 +0200 (IST)
From: Eli Zaretskii <eliz AT is DOT elta DOT co DOT il>
X-Sender: eliz AT is
To: Laurynas Biveinis <lauras AT softhome DOT net>
cc: djgpp-workers AT delorie DOT com
Subject: Re: Help with arg passing
In-Reply-To: <380F5677.996ED35F@softhome.net>
Message-ID: <Pine.SUN.3.91.991024093113.29385K-100000@is>
MIME-Version: 1.0
Reply-To: djgpp-workers AT delorie DOT com
X-Mailing-List: djgpp-workers AT delorie DOT com
X-Unsubscribes-To: listserv AT delorie DOT com

On Thu, 21 Oct 1999, Laurynas Biveinis wrote:

> Because I want
> to see my patch in libc sources, I have a question regarding above:
> is it acceptable to turn on !proxy method for calling all DJGPP programs
> in 2.04 ?

We could do that.  But could you first explain why is this required
for symlink support?  IMHO, it's not a good idea to have differences
in functionality that depend on the way programs are called.
(Differences in how argv[0] looks are bad, but at least they don't
change anything in how the program is invoked and run.)

> If I understand correctly, the main reason not to do so was
> "some subtle misfeature that could be lurking somewhere". But most GNU
> makefiles anyway use long command lines, so can't we assume that this
> feature is well tested now ?

Most command lines in a typical GNU Makefile don't require !proxy in
the environment, even though they are long.  The reason for this is
that GNU Make tries very hard to avoid calling the shell to run the
commands.  (On Unix, this is presumably an expensive operation,
because it requires to launch an additional process.)  If the command
line does not include any shell features, like redirection, wildcards,
quoted arguments, etc., GNU Make runs the program directly, via
fork/exec.  The DJGPP port emulates fork/exec with spawnvpe, which
passes its argument through the transfer buffer, not through the
" !proxy" environment variable.  The latter is only used if Make calls
the shell (which in the DJGPP port calls `system' instead), *and* if
the command is longer than 126 characters.  My experience is that this
coincidence in Makefiles is rare.

So I would not claim that this feature is ``well tested''.  Which
doesn't mean that we cannot enable it by default, of course, if we
have a reason that is good enough.

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019