moved interruption to GFI level to capture all commands

This commit is contained in:
aarne
2008-06-26 21:01:51 +00:00
parent ba63991007
commit 33eb6d899f
2 changed files with 8 additions and 1 deletions

View File

@@ -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

View File

@@ -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