System.Cmd.system fails on Win9x
Vivian McPhail
vivian.mcphail@paradise.net.nz
From a ghci session (6.4):
Prelude> System.Cmd.system "dir"
*** Exception: C:\WINDOWS\SYSTEM\CMD.EXE: runCommand:
does not exist (No such file or directory)
System.Cmd.system tries to run cmd.exe but on Win9x
this is command.com.
These executables are both mentioned in the
documentation so the distinction is not unknown.
I see that the source code for System.Process.Internals
has code for detecting this, but for some reason it
does not appear to be working:
-- Find CMD.EXE (or COMMAND.COM on Win98). We use the
same algorithm as
-- system() in the VC++ CRT (Vc7/crt/src/system.c in a
VC++ installation).
findCommandInterpreter :: IO FilePath
findCommandInterpreter = do
-- try COMSPEC first
catchJust ioErrors (getEnv "COMSPEC") $ \e -> do
when (not (isDoesNotExistError e)) $ ioError e
-- try to find CMD.EXE or COMMAND.COM
osver <- c_get_osver
let filename | osver .&. 0x8000 /= 0 = "command.com"
| otherwise = "cmd.exe"
path <- getEnv "PATH"
Trac metadata
Trac field |
Value |
Version |
6.4 |
Type |
Bug |
TypeOfFailure |
OtherFailure |
Priority |
normal |
Resolution |
ResolvedFixed |
Component |
libraries/base |
Test case |
|
Differential revisions |
|
BlockedBy |
|
Related |
|
Blocking |
|
CC |
|
Operating system |
|
Architecture |
|