import Annex.TransferrerPool
import qualified Database.Keys
-import Control.Concurrent.STM
#ifndef mingw32_HOST_OS
+import Control.Concurrent.STM
import System.Posix.Signals
#endif
import Upgrade
import Annex.Tmp
import Utility.UserInfo
-import qualified Utility.RawFilePath as R
-import Utility.ThreadScheduler
import Annex.Perms
#ifndef mingw32_HOST_OS
+import Utility.ThreadScheduler
+import qualified Utility.RawFilePath as R
import Utility.FileMode
import System.Posix.User
import qualified Utility.LockFile.Posix as Posix
import qualified Data.Map as M
import Control.Monad.IO.Class (MonadIO)
-import System.PosixCompat.Files (ownerReadMode, isNamedPipe)
#ifndef mingw32_HOST_OS
+import System.PosixCompat.Files (ownerReadMode, isNamedPipe)
import Data.Either
import qualified System.FilePath.ByteString as P
import Control.Concurrent.Async
import qualified Data.ByteString.Char8 as S8
import qualified Data.ByteString.Lazy as L
import qualified System.FilePath.ByteString as P
+#ifndef mingw32_HOST_OS
import System.PosixCompat.Files (isSymbolicLink)
+#endif
type LinkTarget = S.ByteString
import qualified Types.Backend
import qualified Backend
import Annex.Content
+#ifndef mingw32_HOST_OS
+import Annex.Version
import Annex.Content.Presence
+#endif
import Annex.Content.Presence.LowLevel
import Annex.Perms
import Annex.Link
-import Annex.Version
import Logs.Location
import Logs.Trust
import Logs.Activity
import Command
import RemoteDaemon.Core
import Utility.Daemon
+#ifndef mingw32_HOST_OS
import Annex.Path
+#endif
cmd :: Command
cmd = noCommit $
import Utility.Tmp
import Utility.Shell
import Utility.FileMode
+#ifndef mingw32_HOST_OS
import qualified Utility.RawFilePath as R
-
import System.PosixCompat.Files (fileMode)
+#endif
+
data Hook = Hook
{ hookName :: FilePath
import qualified Data.Map as M
import qualified System.FilePath.ByteString as P
import Data.Default
-import System.PosixCompat.Files (isRegularFile, getFdStatus, deviceID)
+import System.PosixCompat.Files (isRegularFile, deviceID)
+#ifndef mingw32_HOST_OS
+import System.PosixCompat.Files (getFdStatus)
+#endif
import Annex.Common
import Types.Remote
module Utility.DirWatcher.Win32Notify (watchDir) where
-import Common hiding (isDirectory)
+import Common
import Utility.DirWatcher.Types
import qualified Utility.RawFilePath as R
import Control.Monad
import System.PosixCompat.Types
import System.PosixCompat.Files (unionFileModes, intersectFileModes, stdFileMode, nullFileMode, setFileCreationMask, groupReadMode, ownerReadMode, ownerWriteMode, ownerExecuteMode, groupWriteMode, groupExecuteMode, otherReadMode, otherWriteMode, otherExecuteMode, fileMode)
+#ifndef mingw32_HOST_OS
+import System.PosixCompat.Files (setFileCreationMask)
+#endif
import Control.Monad.IO.Class
import Foreign (complement)
import Control.Monad.Catch
getFileSize',
) where
-import System.PosixCompat.Files (FileStatus, fileSize)
-import qualified Utility.RawFilePath as R
#ifdef mingw32_HOST_OS
import Control.Exception (bracket)
import System.IO
import Utility.FileSystemEncoding
+#else
+import System.PosixCompat.Files (fileSize)
#endif
+import System.PosixCompat.Files (FileStatus)
+import qualified Utility.RawFilePath as R
type FileSize = Integer
import System.PosixCompat.Files (isRegularFile, fileID)
import Data.Time.Clock.POSIX
-#ifdef mingw32_HOST_OS
-import Data.Word (Word64)
-#else
+#ifndef mingw32_HOST_OS
import qualified System.Posix.Files as Posix
#endif
import Utility.Path.Windows
import Utility.FileSystemEncoding
-import Utility.Split
type LockFile = RawFilePath
) where
import Control.Monad
-import System.PosixCompat.Files (isDirectory)
import System.IO.Error
import Prelude
#ifndef mingw32_HOST_OS
+import System.PosixCompat.Files (isDirectory)
import Control.Monad.IfElse
import Utility.SafeCommand
#endif