Problem with ACL on windows & proposed fix

edgar edgar-rft at web.de
Sun Jun 28 17:44:09 UTC 2015


Am Sun, 28 Jun 2015 12:22:10 -0500
schrieb Robert Goldman <rpgoldman at sift.net>:

> On 6/27/15 Jun 27 -11:40 PM, Faré wrote:
> > On Fri, Jun 26, 2015 at 4:49 PM, Robert Goldman
> > <rpgoldman at sift.net> wrote:
> >> Sorry -- I've been traveling, so sat on this bug report for a
> >> while. Here's a test failure from Windows ACL.  Looks like ACL is
> >> somehow not running the windows CWD program helper (which should
> >> invoke CMD.EXE), but instead is just taking the command and
> >> treating it as its own output.
> >>
> > Indeed, %run-program has these lines:
> >        ;; NB: We do NOT add cmd /c here. You might want to.
> >        #+(or allegro clisp) command
> > 
> > Retrospectively, that's probably a mistake.
> > 
> >> which suggests we should modify %NORMALIZE-COMMAND for Allegro to
> >> prepend "CMD /C " to all commands when on windows.
> >>
> > Yup.
> > 
> 
> Actually, I have a question about this:  RUN-PROGRAM is supposed to
> run a program directly by default (as distinguished from
> RUN-SHELL-COMMAND), which has the (much more ambiguous) behavior of
> running through a shell.
> 
> So it occurs to me that there are two possibilities:
> 
> 1. We should be invoking CMD.EXE explicitly on Windows in ACL, as we
> discuss here.  But there's a second possibility:
> 
> 2. The definition of GETCWD-FROM-RUN-PROGRAM is wrong (see below).  If
> G-F-R-P requires CMD.EXE, then doesn't that mean that
> GETCWD-FROM-RUN-PROGRAM is wrong because "echo %cd%" is a "shell"
> directive, and not a program to run?  Doesn't %cd% require CMD.EXE?
> Indeed, doesn't G-F-R-P actually require a shell of some sort to do
> its job?  Even on Unix, pwd is a shell command, right?  So G-F-R-P
> should have :FORCE-SHELL T, shouldn't it?
> 
> Oh, no, I see. if you provide a single string like "echo %cd%", you
> are implicitly specifying that you want the shell.  But in this case
> why does (RUN-PROGRAM '("pwd" "-P")) work on Unix variants?  Doesn't
> pwd require a shell?

At least here on Debian Linux there exist the external binary versions
/bin/echo and /bin/pwd additionally to the built-in shell commands.

> If my claim is correct, then an alternative patch is to:
> 
> 1. Supply :FORCE-SHELL T in G-F-R-P
> 2. Change  %normalize-system-command to explicitly supply "CMD /C" on
> Windows + ACL.
> 
> I think that might be more correct than making ACL always explicitly
> use "CMD /C", since always supply CMD.EXE would make it impossible
> for ACL + Windows to ever provide the simpler behavior, right?
> 
> <sigh>I should have put this in a launchpad ticket</sigh>
> 
> Best,
> r





More information about the asdf-devel mailing list