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 +25/−1
- unix-compat.cabal +1/−1
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