git @ Cat's Eye Technologies Falderal / 85f533f
Use Haskell operations instead of system; it's faster! Cat's Eye Technologies 13 years ago
1 changed file(s) with 21 addition(s) and 16 deletion(s). Raw diff Collapse all Expand all
2121 run :: [Block] -> String -> Bool -> IO ()
2222
2323 run blocks resultsFilename messy = do
24 system ("echo -n \"\" >" ++ resultsFilename)
24 r <- openFile resultsFilename WriteMode
25 hClose r
2526 runBlocks blocks resultsFilename messy
2627 cleanRun (not messy) "rm -f input.txt output.txt"
2728
4243 writeOutFile filename contents = do
4344 outputFileHandle <- openFile filename WriteMode
4445 hSetNewlineMode outputFileHandle noNewlineTranslation
45 hPutStr outputFileHandle contents
46 newlinify outputFileHandle contents
4647 hClose outputFileHandle
4748
4849 execute cmd resultsFilename id = do
4950 exitCode <- system (cmd ++ " 2>&1")
50 case exitCode of
51 ExitSuccess -> do
52 system ("echo \"output\" >>" ++ resultsFilename)
53 execute' resultsFilename id
54 ExitFailure _ -> do
55 system ("echo \"exception\" >>" ++ resultsFilename)
56 execute' resultsFilename id
51 r <- openFile resultsFilename AppendMode
52 writeExitCode r exitCode
53 hSetNewlineMode r noNewlineTranslation
54 hPutStrLn r (show id)
55 text <- readFile "output.txt"
56 hPutStrLn r $ show $ length $ lines text
57 newlinify r text
58 hClose r
59 return ()
5760
58 execute' resultsFilename id = do
59 system ("echo " ++ (show id) ++ " >>" ++ resultsFilename)
60 system ("falderal newlinify output.txt >output2.txt")
61 system ("mv output2.txt output.txt")
62 system ("echo `wc -l output.txt` >>" ++ resultsFilename)
63 system ("cat output.txt >>" ++ resultsFilename)
64 return ()
61 writeExitCode handle ExitSuccess = do
62 hPutStrLn handle "output"
63 writeExitCode handle (ExitFailure _) = do
64 hPutStrLn handle "exception"
65
66 newlinify handle text = do
67 case last text of
68 '\n' -> hPutStr handle text
69 _ -> hPutStrLn handle text