X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=utils%2Fghc-pkg%2FMain.hs;h=a469ee764d43004b9b220dc78b6d7180c00f218f;hb=8693219d6b33a2174254cb0fb23b9ba2ad90b272;hp=ae7aca339818274d55076e0542ae5d9bbf94ce04;hpb=eee5df343d918ce18f8c0146e0f46d5acc3d926b;p=ghc-hetmet.git diff --git a/utils/ghc-pkg/Main.hs b/utils/ghc-pkg/Main.hs index ae7aca3..a469ee7 100644 --- a/utils/ghc-pkg/Main.hs +++ b/utils/ghc-pkg/Main.hs @@ -52,8 +52,11 @@ import qualified Data.ByteString.Lazy as B import qualified Data.Binary as Bin import qualified Data.Binary.Get as Bin -#if __GLASGOW_HASKELL__ < 612 +#if __GLASGOW_HASKELL__ < 612 || defined(mingw32_HOST_OS) import Foreign +#endif + +#if __GLASGOW_HASKELL__ < 612 import Foreign.C import System.Posix.Internals #if __GLASGOW_HASKELL__ >= 611 @@ -729,7 +732,7 @@ changeDBDir verbosity cmds db = do do_cmd (AddPackage p) = do let file = location db display (installedPackageId p) <.> "conf" when (verbosity > Normal) $ putStrLn ("writing " ++ file) - writeFileAtomic file utf8 (showInstalledPackageInfo p) + writeFileUtf8Atomic file (showInstalledPackageInfo p) do_cmd (ModifyPackage p) = do_cmd (AddPackage p) @@ -1151,7 +1154,7 @@ writeNewConfig verbosity filename ipis = do let shown = concat $ intersperse ",\n " $ map (show . convertPackageInfoOut) ipis fileContents = "[" ++ shown ++ "\n]" - writeFileAtomic filename utf8 fileContents + writeFileUtf8Atomic filename fileContents `catch` \e -> if isPermissionError e then die (filename ++ ": you don't have permission to modify this file") @@ -1557,10 +1560,12 @@ writeBinaryFileAtomic targetFile obj = hSetBinaryMode h True B.hPutStr h (Bin.encode obj) -writeFileAtomic :: FilePath -> TextEncoding -> String -> IO () -writeFileAtomic targetFile encoding content = +writeFileUtf8Atomic :: FilePath -> String -> IO () +writeFileUtf8Atomic targetFile content = withFileAtomic targetFile $ \h -> do - hSetEncoding h encoding +#if __GLASGOW_HASKELL__ >= 612 + hSetEncoding h utf8 +#endif hPutStr h content -- copied from Cabal's Distribution.Simple.Utils, except that we want