From 4a5b9ca8cb46e061cdabb7ccba45463537fba685 Mon Sep 17 00:00:00 2001 From: hallgren Date: Tue, 12 Nov 2013 18:07:38 +0000 Subject: [PATCH] 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. --- src/compiler/GF/Command/Commands.hs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/compiler/GF/Command/Commands.hs b/src/compiler/GF/Command/Commands.hs index be309b3d7..0d1b9695a 100644 --- a/src/compiler/GF/Command/Commands.hs +++ b/src/compiler/GF/Command/Commands.hs @@ -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") ],