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