packages feed

unix-compat 0.4.2.0 → 0.4.3.0

raw patch · 2 files changed

+26/−2 lines, 2 files

Files

src/System/PosixCompat/Files.hsc view
@@ -119,6 +119,8 @@ import Control.Exception (bracket) import Control.Monad (liftM, liftM2) import Data.Bits ((.|.), (.&.))+import Data.Int (Int64)+import Foreign.C.Types (CTime(..)) import Prelude hiding (read) import System.Directory (Permissions, emptyPermissions) import System.Directory (getPermissions, setPermissions)@@ -132,6 +134,7 @@ import System.IO.Error import System.PosixCompat.Types import System.Win32.File hiding (getFileType)+import System.Win32.Time (FILETIME(..), getFileTime, setFileTime)  import System.PosixCompat.Internal.Time (       getClockTime, clockTimeToEpochTime@@ -409,7 +412,28 @@ -- utime()  setFileTimes :: FilePath -> EpochTime -> EpochTime -> IO ()-setFileTimes _ _ _ = unsupported "setFileTimes"+setFileTimes file atime mtime =+  bracket openFileHandle closeHandle $ \handle -> do+    (creationTime, _, _) <- getFileTime handle+    setFileTime+      handle+      creationTime+      (epochTimeToFileTime atime)+      (epochTimeToFileTime mtime)+  where+    openFileHandle = createFile file+                       gENERIC_WRITE+                       fILE_SHARE_NONE+                       Nothing+                       oPEN_EXISTING+                       fILE_ATTRIBUTE_NORMAL+                       Nothing++    -- based on https://support.microsoft.com/en-us/kb/167296+    epochTimeToFileTime (CTime t) = FILETIME (fromIntegral ll)+      where+        ll :: Int64+        ll = t * 10000000 + 116444736000000000  touchFile :: FilePath -> IO () touchFile name =
unix-compat.cabal view
@@ -1,5 +1,5 @@ name:           unix-compat-version:        0.4.2.0+version:        0.4.3.0 synopsis:       Portable POSIX-compatibility layer. description:    This package provides portable implementations of parts                 of the unix package. This package re-exports the unix