diff options
-rw-r--r-- | Annex/Content.hs | 22 | ||||
-rw-r--r-- | Annex/LockPool.hs | 2 | ||||
-rw-r--r-- | Annex/Ssh.hs | 4 | ||||
-rw-r--r-- | Creds.hs | 2 | ||||
-rw-r--r-- | Git.hs | 2 | ||||
-rw-r--r-- | Limit.hs | 2 | ||||
-rw-r--r-- | Remote/Git.hs | 10 | ||||
-rw-r--r-- | Remote/Helper/Hooks.hs | 2 |
8 files changed, 33 insertions, 13 deletions
diff --git a/Annex/Content.hs b/Annex/Content.hs index 2a109e3e3..0b3e18fab 100644 --- a/Annex/Content.hs +++ b/Annex/Content.hs @@ -48,12 +48,14 @@ import Types.Key import Utility.DataUnits import Utility.CopyFile import Config -import Annex.Exception import Git.SharedRepository import Annex.Perms import Annex.Link import Annex.Content.Direct import Annex.ReplaceFile +#ifndef mingw32_HOST_OS +import Annex.Exception +#endif {- Checks if a given key's content is currently present. -} inAnnex :: Key -> Annex Bool @@ -91,34 +93,34 @@ inAnnexSafe :: Key -> Annex (Maybe Bool) inAnnexSafe = inAnnex' (fromMaybe False) (Just False) go where go f = liftIO $ openforlock f >>= check - openforlock f = catchMaybeIO $ #ifndef mingw32_HOST_OS + openforlock f = catchMaybeIO $ openFd f ReadOnly Nothing defaultFileFlags #else - return () + openforlock _ = return $ Just () #endif check Nothing = return is_missing - check (Just h) = do #ifndef mingw32_HOST_OS + check (Just h) = do v <- getLock h (ReadLock, AbsoluteSeek, 0, 0) closeFd h return $ case v of Just _ -> is_locked Nothing -> is_unlocked #else - return is_unlocked + check (Just _) = return is_unlocked #endif +#ifndef mingw32_HOST_OS is_locked = Nothing +#endif is_unlocked = Just True is_missing = Just False {- Content is exclusively locked while running an action that might remove - it. (If the content is not present, no locking is done.) -} lockContent :: Key -> Annex a -> Annex a -lockContent key a = do -#ifdef mingw32_HOST_OS - a -#else +#ifndef mingw32_HOST_OS +lockContent key a = file <- calcRepo $ gitAnnexLocation key bracketIO (openforlock file >>= lock) unlock (const a) where @@ -140,6 +142,8 @@ lockContent key a = do Right _ -> return $ Just fd unlock Nothing = noop unlock (Just l) = closeFd l +#else +lockContent _key a = a -- no locking for Windows! #endif {- Runs an action, passing it a temporary filename to get, diff --git a/Annex/LockPool.hs b/Annex/LockPool.hs index 40673bd7e..a9a0f3101 100644 --- a/Annex/LockPool.hs +++ b/Annex/LockPool.hs @@ -14,7 +14,9 @@ import System.Posix.Types (Fd) import Common.Annex import Annex +#ifndef mingw32_HOST_OS import Annex.Perms +#endif {- Create a specified lock file, and takes a shared lock. -} lockFile :: FilePath -> Annex () diff --git a/Annex/Ssh.hs b/Annex/Ssh.hs index 4fdac28ad..6fd2c556c 100644 --- a/Annex/Ssh.hs +++ b/Annex/Ssh.hs @@ -19,11 +19,13 @@ import Data.Hash.MD5 import Common.Annex import Annex.LockPool -import Annex.Perms import qualified Build.SysConfig as SysConfig import qualified Annex import Config import Utility.Env +#ifndef mingw32_HOST_OS +import Annex.Perms +#endif {- Generates parameters to ssh to a given host (or user@host) on a given - port, with connection caching. -} @@ -15,7 +15,9 @@ import Utility.FileMode import Crypto import Types.Remote (RemoteConfig, RemoteConfigKey) import Remote.Helper.Encryptable (remoteCipher, embedCreds) +#ifndef mingw32_HOST_OS import Utility.Env (setEnv) +#endif import System.Environment import qualified Data.ByteString.Lazy.Char8 as L @@ -38,7 +38,9 @@ import System.Posix.Files import Common import Git.Types +#ifndef mingw32_HOST_OS import Utility.FileMode +#endif {- User-visible description of a git repo. -} repoDescribe :: Repo -> String @@ -35,9 +35,11 @@ import Utility.DataUnits import Text.Regex.TDFA import Text.Regex.TDFA.String #else +#ifndef mingw32_HOST_OS import System.Path.WildMatch import Types.FileMatcher #endif +#endif type MatchFiles = AssumeNotPresent -> FileInfo -> Annex Bool type MkLimit = String -> Either String MatchFiles diff --git a/Remote/Git.hs b/Remote/Git.hs index c9cebfb14..e269b9ad8 100644 --- a/Remote/Git.hs +++ b/Remote/Git.hs @@ -17,7 +17,6 @@ import qualified Data.Map as M import Control.Exception.Extensible import Common.Annex -import Utility.CopyFile import Utility.Rsync import Remote.Helper.Ssh import Annex.Ssh @@ -44,6 +43,9 @@ import Types.Key import qualified Fields import Logs.Location import Utility.Metered +#ifndef mingw32_HOST_OS +import Utility.CopyFile +#endif import Control.Concurrent import Control.Concurrent.MSampleVar @@ -360,8 +362,8 @@ copyFromRemote' r key file dest bracketIO noop (const $ tryIO $ killThread tid) (const $ a feeder) copyFromRemoteCheap :: Remote -> Key -> FilePath -> Annex Bool -copyFromRemoteCheap r key file #ifndef mingw32_HOST_OS +copyFromRemoteCheap r key file | not $ Git.repoIsUrl (repo r) = guardUsable (repo r) False $ do loc <- liftIO $ gitAnnexLocation key (repo r) $ fromJust $ remoteGitConfig $ gitconfig r @@ -371,8 +373,10 @@ copyFromRemoteCheap r key file ( copyFromRemote' r key Nothing file , return False ) -#endif | otherwise = return False +#else +copyFromRemoteCheap _ _ _ = return False +#endif {- Tries to copy a key's content to a remote's annex. -} copyToRemote :: Remote -> Key -> AssociatedFile -> MeterUpdate -> Annex Bool diff --git a/Remote/Helper/Hooks.hs b/Remote/Helper/Hooks.hs index dfc543d0a..96081b024 100644 --- a/Remote/Helper/Hooks.hs +++ b/Remote/Helper/Hooks.hs @@ -15,7 +15,9 @@ import Common.Annex import Types.Remote import qualified Annex import Annex.LockPool +#ifndef mingw32_HOST_OS import Annex.Perms +#endif {- Modifies a remote's access functions to first run the - annex-start-command hook, and trigger annex-stop-command on shutdown. |