[preprocess via lazy ByteStrings rather than converting to [Char]
John Meacham <john@repetae.net>**20090811150709
 Ignore-this: 629649ccc902e2fff78622d29ce78a11
] hunk ./src/Ho/Build.hs 28
-import qualified Data.ByteString.Lazy.UTF8 as LBS
+import qualified Data.ByteString.Lazy.UTF8 as LBSU
hunk ./src/Ho/Build.hs 619
+
+
hunk ./src/Ho/Build.hs 623
-    let txt = LBS.toString lbs
hunk ./src/Ho/Build.hs 630
-        initialOpts = f (take 4096 txt)
+        initialOpts = f (LBSU.toString $ LBS.take 2048 lbs)
hunk ./src/Ho/Build.hs 634
-    s <- case () of
+    lbs' <- case () of
hunk ./src/Ho/Build.hs 639
-          | otherwise -> return txt
+          | otherwise -> return lbs
+    let s = LBSU.toString lbs'
hunk ./src/Util/FilterInput.hs 3
+import Data.List
hunk ./src/Util/FilterInput.hs 9
+import qualified Data.ByteString.Lazy as LBS
+import qualified Data.ByteString.Lazy.UTF8 as LBSU
+import qualified Data.ByteString as BS
+import Text.Printf
hunk ./src/Util/FilterInput.hs 32
-readSystem :: String -> [String] -> IO String
+readSystem :: String -> [String] -> IO LBS.ByteString
hunk ./src/Util/FilterInput.hs 39
-    str <- hGetContents =<< fdToHandle rfd
-    ret <- length str `seq` getProcessStatus True False pid
-    when (ret /= Just (Exited ExitSuccess)) $ putErrDie (prog ++ " exited abnormally")
-    return str
+--    printf "readSystem %s %s\n" prog (show args)
+    str <- BS.hGetContents =<< fdToHandle rfd
+    ret <- getProcessStatus True False pid
+    when (ret /= Just (Exited ExitSuccess)) $ putErrDie (printf "'%s' exited abnormally (%s)" (intercalate " " (prog:args)) (show ret))
+    return $ LBS.fromChunks [str]