Fix Issue 60: Weird output when executing system commands from the gf shell

The system_pipe (aka "?") command creates a temporary file _tmpi containing
the input of the system command. It *both* appends _tmpi as an extra argument
to the system command line *and* adds an input redirection "< _tmpi". (It
also uses and output redirection "> _tmpo" to captures the output of the
command.)

With this patch, the _tmpi argument is no longer appended to the command line.
This allows system_pipe to work with pure filters, such as the "tr" commands,
but it will no longer work with commands that require an input file name.
(It is possible to use write_file instead...)

TODO: it would also be fairly easy to eliminate the creation of the _tmpi and
_tmpo files altogether.
This commit is contained in:
hallgren
2013-11-12 18:07:38 +00:00
parent d40f0e292e
commit 4a5b9ca8cb

View File

@@ -869,10 +869,9 @@ allCommands = Map.fromList [
let tmpi = "_tmpi" ---
let tmpo = "_tmpo"
restricted $ writeFile tmpi $ toString arg
let syst = optComm opts ++ " " ++ tmpi
let syst = optComm opts -- ++ " " ++ tmpi
restrictedSystem $ syst ++ " <" ++ tmpi ++ " >" ++ tmpo
s <- restricted $ readFile tmpo
return $ fromString s,
fmap fromString $ restricted $ readFile tmpo,
flags = [
("command","the system command applied to the argument")
],