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
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)
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")
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