On 6/27/15 Jun 27 -11:40 PM, Faré wrote:
On Fri, Jun 26, 2015 at 4:49 PM, Robert Goldman rpgoldman@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?
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