diff --git a/src/GF/Command/Interpreter.hs b/src/GF/Command/Interpreter.hs index 2762875ec..db4192001 100644 --- a/src/GF/Command/Interpreter.hs +++ b/src/GF/Command/Interpreter.hs @@ -38,10 +38,13 @@ interpretCommandLine :: (String -> String) -> CommandEnv -> String -> IO () interpretCommandLine enc env line = case readCommandLine line of Just [] -> return () + Just pipes -> mapM_ (interpretPipe enc env) pipes +{- Just pipes -> do res <- runInterruptibly (mapM_ (interpretPipe enc env) pipes) case res of Left ex -> putStrLnFlush $ enc (show ex) Right x -> return x +-} Nothing -> putStrLnFlush "command not parsed" interpretPipe enc env cs = do diff --git a/src/GFI.hs b/src/GFI.hs index 75ffa22d8..014fa327e 100644 --- a/src/GFI.hs +++ b/src/GFI.hs @@ -26,6 +26,8 @@ import System.Cmd import System.CPUTime import Control.Exception import Data.Version +import GF.System.Signal + import Paths_gf @@ -53,7 +55,7 @@ loop opts gfenv0 = do pwords = case words s of w:ws -> getCommandOp w :ws ws -> ws - case pwords of + r <- runInterruptibly $ case pwords of -- special commands, requiring source grammar in env "!":ws -> do system $ unwords ws @@ -106,6 +108,8 @@ loop opts gfenv0 = do _ -> do interpretCommandLine enc env s loopNewCPU gfenv + gfenv' <- return $ either (const gfenv) id r + loopNewCPU gfenv' importInEnv :: GFEnv -> Options -> [FilePath] -> IO GFEnv importInEnv gfenv opts files