[clean up Options.hs, allow setting the garbage collector via the ini file.
John Meacham <john@repetae.net>**20110130022439
 Ignore-this: 1b15e475c58107d6cd01425e74dca40c
] hunk ./src/Options.hs 193
-opt = Opt {
+emptyOpt = Opt {
hunk ./src/Options.hs 330
+    -- initial argument processing
hunk ./src/Options.hs 333
+    o <- return (foldl (flip ($)) emptyOpt o)
hunk ./src/Options.hs 335
-    o1 <- either putErrDie return $ postProcessFD (foldl (flip ($)) opt o)
-    o2 <- either putErrDie return $ postProcessFO o1
-    case optMode o2 of
+    case optMode o of
hunk ./src/Options.hs 345
+    -- read targets.ini file
hunk ./src/Options.hs 347
-    inis <- parseIniFiles (optVerbose o2 > 0) (BS.toString targets_ini) [confDir ++ "/targets.ini", confDir ++ "/targets-local.ini", home ++ "/etc/jhc/targets.ini", home ++ "/.jhc/targets.ini"] (optArch o2)
-    when (FlagDump.Ini `S.member` optDumpSet o2) $ flip mapM_ (M.toList inis) $ \(a,b) -> putStrLn (a ++ "=" ++ b)
+    inis <- parseIniFiles (optVerbose o > 0) (BS.toString targets_ini) [confDir ++ "/targets.ini", confDir ++ "/targets-local.ini", home ++ "/etc/jhc/targets.ini", home ++ "/.jhc/targets.ini"] (optArch o)
+    -- process dump flags
+    o <- either putErrDie return $ postProcessFD o
+    when (FlagDump.Ini `S.member` optDumpSet o) $ flip mapM_ (M.toList inis) $ \(a,b) -> putStrLn (a ++ "=" ++ b)
+    -- set flags based on ini options
+    let o1 = case M.lookup "gc" inis of
+            Just "jgc" -> optFOptsSet_u (S.insert FlagOpts.Jgc) o
+            Just "boehm" -> optFOptsSet_u (S.insert FlagOpts.Boehm) o
+            _ -> o
+    o2 <- either putErrDie return $ postProcessFO o1
+    when (FlagDump.Ini `S.member` optDumpSet o) $ do
+        putStrLn (show $ optDumpSet o)
+        putStrLn (show $ optFOptsSet o)
+    -- add autoloads based on ini options