[add automatic handling of hsc2hs files
John Meacham <john@repetae.net>**20120121032656
 Ignore-this: ad9da69764839e100c57504d282a00a7
] hunk ./Makefile.am 39
-        src/E/Main.hs src/Util/GMap.hs src/Util/ExitCodes.hs
+        src/E/Main.hs src/Util/GMap.hs src/Util/ExitCodes.hs src/Support/TempDir.hs
hunk ./Makefile.am 51
-	  -package filepath
+	  -package filepath -package process
hunk ./src/Ho/ReadSource.hs 2
-
hunk ./src/Ho/ReadSource.hs 12
+import Foreign.C
hunk ./src/Ho/ReadSource.hs 14
+import System.FilePath as FP
+import System.Process
hunk ./src/Ho/ReadSource.hs 21
-import qualified System.FilePath as FP
hunk ./src/Ho/ReadSource.hs 25
+import Support.TempDir
hunk ./src/Ho/ReadSource.hs 54
-m4Prelude = (randomIO :: IO Integer) >>= \salt ->
-    let m4p_filename = "/tmp/jhc_prelude-" ++ show salt ++ ".m4"
-    in BS.writeFile m4p_filename prelude_m4 >> return m4p_filename
+m4Prelude = do
+    fp <- fileInTempDir "prelude.m4"
+    BS.writeFile fp prelude_m4
+    return fp
hunk ./src/Ho/ReadSource.hs 75
+parseHsSource fp@(FP.splitExtension -> (base,".hsc")) _ = do
+    let out = FP.takeFileName base ++ ".hs"
+    tdir <- getTempDir
+    let incFlags = [ "-I" ++ d | d <- optIncdirs options ++ optIncs options]
+    let hscargs =   [fp, "-o", tdir </> out] ++ incFlags
+    when verbose $
+        print ("hsc2hs",hscargs)
+    rawSystem "hsc2hs" hscargs
+    print tdir
+    print out
+    lbs <- LBS.readFile $ tdir </> out
+    parseHsSource out lbs
+
hunk ./src/Ho/ReadSource.hs 92
-    let s' = if "shl." `isPrefixOf` reverse fn  then unlit fn s'' else s''
+    let s' = if FP.takeExtension fn == ".lhs" then unlit fn s'' else s''
hunk ./src/Main.hs 3
-import System.IO
hunk ./src/Main.hs 6
+import System.IO
hunk ./src/Main.hs 22
+import Support.TempDir
hunk ./src/Main.hs 29
-
-main = do
+main = wrapMain $ do
hunk ./src/Main.hs 62
-