summaryrefslogtreecommitdiff
path: root/Utility
diff options
context:
space:
mode:
Diffstat (limited to 'Utility')
-rw-r--r--Utility/Touch.hs52
-rw-r--r--Utility/Touch/Old.hsc (renamed from Utility/Touch.hsc)26
2 files changed, 54 insertions, 24 deletions
diff --git a/Utility/Touch.hs b/Utility/Touch.hs
new file mode 100644
index 000000000..60b9cb928
--- /dev/null
+++ b/Utility/Touch.hs
@@ -0,0 +1,52 @@
+{- More control over touching a file.
+ -
+ - Copyright 2011 Joey Hess <id@joeyh.name>
+ -
+ - License: BSD-2-clause
+ -}
+
+{-# LANGUAGE CPP #-}
+
+module Utility.Touch (
+ TimeSpec(..),
+ touchBoth,
+ touch
+) where
+
+#if ! defined(mingw32_HOST_OS) && ! defined(__ANDROID__)
+
+#if MIN_VERSION_unix(2,7,0)
+
+import System.Posix.Files
+import System.Posix.Types
+
+newtype TimeSpec = TimeSpec EpochTime
+
+{- Changes the access and modification times of an existing file.
+ Can follow symlinks, or not. Throws IO error on failure. -}
+touchBoth :: FilePath -> TimeSpec -> TimeSpec -> Bool -> IO ()
+touchBoth file (TimeSpec atime) (TimeSpec mtime) follow
+ | follow = setFileTimes file atime mtime
+ | otherwise = setSymbolicLinkTimesHiRes file (realToFrac atime) (realToFrac mtime)
+
+touch :: FilePath -> TimeSpec -> Bool -> IO ()
+touch file mtime = touchBoth file mtime mtime
+
+#else
+import Utility.Touch.Old
+#endif
+
+#else
+
+import System.PosixCompat
+
+newtype TimeSpec = TimeSpec EpochTime
+
+{- Noop for Windows -}
+touchBoth FilePath -> TimeSpec -> TimeSpec -> Bool -> IO ()
+touchBoth _ _ _ _ = return ()
+
+touch :: FilePath -> TimeSpec -> Bool -> IO ()
+touch _ _ = return ()
+
+#endif
diff --git a/Utility/Touch.hsc b/Utility/Touch/Old.hsc
index e1b1e887e..5345285f4 100644
--- a/Utility/Touch.hsc
+++ b/Utility/Touch/Old.hsc
@@ -1,4 +1,4 @@
-{- More control over touching a file.
+{- Compatability interface for old version of unix, to be removed eventally.
-
- Copyright 2011 Joey Hess <id@joeyh.name>
-
@@ -7,32 +7,12 @@
{-# LANGUAGE ForeignFunctionInterface, CPP #-}
-module Utility.Touch (
+module Utility.Touch.Old (
TimeSpec(..),
touchBoth,
touch
) where
-#if MIN_VERSION_unix(2,7,0)
-
-import System.Posix.Files
-import System.Posix.Types
-
-newtype TimeSpec = TimeSpec EpochTime
-
-{- Changes the access and modification times of an existing file.
- Can follow symlinks, or not. Throws IO error on failure. -}
-touchBoth :: FilePath -> TimeSpec -> TimeSpec -> Bool -> IO ()
-touchBoth file (TimeSpec atime) (TimeSpec mtime) follow
- | follow = setFileTimes file atime mtime
- | otherwise = setSymbolicLinkTimesHiRes file (realToFrac atime) (realToFrac mtime)
-
-touch :: FilePath -> TimeSpec -> Bool -> IO ()
-touch file mtime = touchBoth file mtime mtime
-
-#else
-{- Compatability interface for old version of unix, to be removed eventally. -}
-
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
@@ -141,5 +121,3 @@ touchBoth file atime mtime follow =
touchBoth _ _ _ _ = return ()
#endif
#endif
-
-#endif