diff options
-rwxr-xr-x[-rw-r--r--] | Annex/Branch.hs | 2 | ||||
-rwxr-xr-x[-rw-r--r--] | Annex/Content.hs | 0 | ||||
-rwxr-xr-x[-rw-r--r--] | Annex/Environment.hs | 2 | ||||
-rwxr-xr-x[-rw-r--r--] | Annex/Ssh.hs | 2 | ||||
-rwxr-xr-x[-rw-r--r--] | CmdLine.hs | 4 | ||||
-rwxr-xr-x[-rw-r--r--] | Command/Fsck.hs | 4 | ||||
-rwxr-xr-x[-rw-r--r--] | Creds.hs | 4 | ||||
-rwxr-xr-x[-rw-r--r--] | Git.hs | 8 | ||||
-rwxr-xr-x[-rw-r--r--] | Git/Construct.hs | 4 | ||||
-rwxr-xr-x[-rw-r--r--] | Git/CurrentRepo.hs | 4 | ||||
-rwxr-xr-x[-rw-r--r--] | GitAnnexShell.hs | 4 | ||||
-rwxr-xr-x[-rw-r--r--] | Remote/Rsync.hs | 4 | ||||
-rwxr-xr-x[-rw-r--r--] | Test.hs | 4 | ||||
-rwxr-xr-x[-rw-r--r--] | Utility/Daemon.hs | 4 | ||||
-rwxr-xr-x[-rw-r--r--] | Utility/FileMode.hs | 60 | ||||
-rwxr-xr-x[-rw-r--r--] | Utility/Gpg.hs | 14 | ||||
-rwxr-xr-x[-rw-r--r--] | Utility/LogFile.hs | 4 |
17 files changed, 128 insertions, 0 deletions
diff --git a/Annex/Branch.hs b/Annex/Branch.hs index 021cd3926..2304a3e49 100644..100755 --- a/Annex/Branch.hs +++ b/Annex/Branch.hs @@ -24,7 +24,9 @@ module Annex.Branch ( ) where import qualified Data.ByteString.Lazy.Char8 as L +#if 0 import System.Posix.Env +#endif import Common.Annex import Annex.BranchState diff --git a/Annex/Content.hs b/Annex/Content.hs index ad04bdba1..ad04bdba1 100644..100755 --- a/Annex/Content.hs +++ b/Annex/Content.hs diff --git a/Annex/Environment.hs b/Annex/Environment.hs index d0cd93c2c..d6755e287 100644..100755 --- a/Annex/Environment.hs +++ b/Annex/Environment.hs @@ -13,7 +13,9 @@ import Common.Annex import Utility.UserInfo import qualified Git.Config +#if 0 import System.Posix.Env +#endif import Network.BSD {- Checks that the system's environment allows git to function. diff --git a/Annex/Ssh.hs b/Annex/Ssh.hs index cf92bd248..f71d389c7 100644..100755 --- a/Annex/Ssh.hs +++ b/Annex/Ssh.hs @@ -14,7 +14,9 @@ module Annex.Ssh ( ) where import qualified Data.Map as M +#if 0 import System.Posix.Env +#endif import Common.Annex import Annex.LockPool diff --git a/CmdLine.hs b/CmdLine.hs index 050f119f1..d6e54fded 100644..100755 --- a/CmdLine.hs +++ b/CmdLine.hs @@ -5,6 +5,8 @@ - Licensed under the GNU GPL version 3 or higher. -} +{-# LANGUAGE CPP #-} + module CmdLine ( dispatch, usage, @@ -15,7 +17,9 @@ import qualified Control.Exception as E import qualified Data.Map as M import Control.Exception (throw) import System.Console.GetOpt +#if 0 import System.Posix.Signals +#endif import Common.Annex import qualified Annex diff --git a/Command/Fsck.hs b/Command/Fsck.hs index 1c9af0d34..625867a46 100644..100755 --- a/Command/Fsck.hs +++ b/Command/Fsck.hs @@ -5,6 +5,8 @@ - Licensed under the GNU GPL version 3 or higher. -} +{-# LANGUAGE CPP #-} + module Command.Fsck where import Common.Annex @@ -28,7 +30,9 @@ import qualified Option import Types.Key import Utility.HumanTime +#if 0 import System.Posix.Process (getProcessID) +#endif import Data.Time.Clock.POSIX import Data.Time import System.Posix.Types (EpochTime) diff --git a/Creds.hs b/Creds.hs index 943276e3c..bcfca420d 100644..100755 --- a/Creds.hs +++ b/Creds.hs @@ -5,6 +5,8 @@ - Licensed under the GNU GPL version 3 or higher. -} +{-# LANGUAGE CPP #-} + module Creds where import Common.Annex @@ -15,7 +17,9 @@ import Types.Remote (RemoteConfig, RemoteConfigKey) import Remote.Helper.Encryptable (remoteCipher, embedCreds) import System.Environment +#if 0 import System.Posix.Env (setEnv) +#endif import qualified Data.ByteString.Lazy.Char8 as L import qualified Data.Map as M import Utility.Base64 @@ -8,6 +8,8 @@ - Licensed under the GNU GPL version 3 or higher. -} +{-# LANGUAGE CPP #-} + module Git ( Repo(..), Ref(..), @@ -30,7 +32,9 @@ module Git ( ) where import Network.URI (uriPath, uriScheme, unEscapeString) +#if 0 import System.Posix.Files +#endif import Common import Git.Types @@ -127,4 +131,8 @@ hookPath script repo = do ifM (catchBoolIO $ isexecutable hook) ( return $ Just hook , return Nothing ) where +#if __WINDOWS__ + isexecutable f = doesFileExist f +#else isexecutable f = isExecutable . fileMode <$> getFileStatus f +#endif diff --git a/Git/Construct.hs b/Git/Construct.hs index 633e50b6b..2d00f18a1 100644..100755 --- a/Git/Construct.hs +++ b/Git/Construct.hs @@ -5,6 +5,8 @@ - Licensed under the GNU GPL version 3 or higher. -} +{-# LANGUAGE CPP #-} + module Git.Construct ( fromCwd, fromAbsPath, @@ -21,7 +23,9 @@ module Git.Construct ( checkForRepo, ) where +#if 0 import System.Posix.User +#endif import qualified Data.Map as M hiding (map, split) import Network.URI diff --git a/Git/CurrentRepo.hs b/Git/CurrentRepo.hs index 482873960..785542663 100644..100755 --- a/Git/CurrentRepo.hs +++ b/Git/CurrentRepo.hs @@ -5,10 +5,14 @@ - Licensed under the GNU GPL version 3 or higher. -} +{-# LANGUAGE CPP #-} + module Git.CurrentRepo where +#if 0 import System.Posix.Directory (changeWorkingDirectory) import System.Posix.Env (getEnv, unsetEnv) +#endif import Common import Git.Types diff --git a/GitAnnexShell.hs b/GitAnnexShell.hs index 31912ebbe..6ce377896 100644..100755 --- a/GitAnnexShell.hs +++ b/GitAnnexShell.hs @@ -5,9 +5,13 @@ - Licensed under the GNU GPL version 3 or higher. -} +{-# LANGUAGE CPP #-} + module GitAnnexShell where +#if 0 import System.Posix.Env +#endif import System.Console.GetOpt import Common.Annex diff --git a/Remote/Rsync.hs b/Remote/Rsync.hs index 58b66b74b..63e514199 100644..100755 --- a/Remote/Rsync.hs +++ b/Remote/Rsync.hs @@ -5,11 +5,15 @@ - Licensed under the GNU GPL version 3 or higher. -} +{-# LANGUAGE CPP #-} + module Remote.Rsync (remote) where import qualified Data.ByteString.Lazy as L import qualified Data.Map as M +#if 0 import System.Posix.Process (getProcessID) +#endif import Common.Annex import Types.Remote @@ -5,15 +5,19 @@ - Licensed under the GNU GPL version 3 or higher. -} +{-# LANGUAGE CPP #-} + module Test where import Test.HUnit import Test.QuickCheck import Test.QuickCheck.Test +#if 0 import System.Posix.Directory (changeWorkingDirectory) import System.Posix.Files import System.Posix.Env +#endif import Control.Exception.Extensible import qualified Data.Map as M import System.IO.HVFS (SystemFS(..)) diff --git a/Utility/Daemon.hs b/Utility/Daemon.hs index ff13a3b8a..835b8f149 100644..100755 --- a/Utility/Daemon.hs +++ b/Utility/Daemon.hs @@ -5,12 +5,16 @@ - Licensed under the GNU GPL version 3 or higher. -} +{-# LANGUAGE CPP #-} + module Utility.Daemon where import Common import Utility.LogFile +#if 0 import System.Posix +#endif {- Run an action as a daemon, with all output sent to a file descriptor. - diff --git a/Utility/FileMode.hs b/Utility/FileMode.hs index b6bb579b5..cf9ec45a2 100644..100755 --- a/Utility/FileMode.hs +++ b/Utility/FileMode.hs @@ -5,6 +5,8 @@ - Licensed under the GNU GPL version 3 or higher. -} +{-# LANGUAGE CPP #-} + module Utility.FileMode where import Common @@ -17,6 +19,7 @@ import Foreign (complement) {- Applies a conversion function to a file's mode. -} modifyFileMode :: FilePath -> (FileMode -> FileMode) -> IO () modifyFileMode f convert = void $ modifyFileMode' f convert +#if 0 modifyFileMode' :: FilePath -> (FileMode -> FileMode) -> IO FileMode modifyFileMode' f convert = do s <- getFileStatus f @@ -25,6 +28,9 @@ modifyFileMode' f convert = do when (new /= old) $ setFileMode f new return old +#else +modifyFileMode' = error "modifyFileMode' TODO" +#endif {- Adds the specified FileModes to the input mode, leaving the rest - unchanged. -} @@ -33,7 +39,11 @@ addModes ms m = combineModes (m:ms) {- Removes the specified FileModes from the input mode. -} removeModes :: [FileMode] -> FileMode -> FileMode +#if 0 removeModes ms m = m `intersectFileModes` complement (combineModes ms) +#else +removeModes = error "removeModes TODO" +#endif {- Runs an action after changing a file's mode, then restores the old mode. -} withModifiedFileMode :: FilePath -> (FileMode -> FileMode) -> IO a -> IO a @@ -44,43 +54,78 @@ withModifiedFileMode file convert a = bracket setup cleanup go go _ = a writeModes :: [FileMode] +#if 0 writeModes = [ownerWriteMode, groupWriteMode, otherWriteMode] +#else +writeModes = [] +#endif readModes :: [FileMode] +#if 0 readModes = [ownerReadMode, groupReadMode, otherReadMode] +#else +readModes = [] +#endif executeModes :: [FileMode] +#if 0 executeModes = [ownerExecuteMode, groupExecuteMode, otherExecuteMode] +#else +executeModes = [] +#endif {- Removes the write bits from a file. -} preventWrite :: FilePath -> IO () +#if 0 preventWrite f = modifyFileMode f $ removeModes writeModes +#else +preventWrite _ = return () +#endif {- Turns a file's owner write bit back on. -} allowWrite :: FilePath -> IO () +#if 0 allowWrite f = modifyFileMode f $ addModes [ownerWriteMode] +#else +allowWrite _ = return () +#endif {- Allows owner and group to read and write to a file. -} groupWriteRead :: FilePath -> IO () +#if 0 groupWriteRead f = modifyFileMode f $ addModes [ ownerWriteMode, groupWriteMode , ownerReadMode, groupReadMode ] +#else +groupWriteRead _ = return () +#endif +#if 0 checkMode :: FileMode -> FileMode -> Bool checkMode checkfor mode = checkfor `intersectFileModes` mode == checkfor +#endif {- Checks if a file mode indicates it's a symlink. -} isSymLink :: FileMode -> Bool +#if 0 isSymLink = checkMode symbolicLinkMode +#else +isSymLink _ = False +#endif {- Checks if a file has any executable bits set. -} isExecutable :: FileMode -> Bool +#if 0 isExecutable mode = combineModes executeModes `intersectFileModes` mode /= 0 +#else +isExecutable _ = False +#endif {- Runs an action without that pesky umask influencing it, unless the - passed FileMode is the standard one. -} noUmask :: FileMode -> IO a -> IO a +#if 0 noUmask mode a | mode == stdFileMode = a | otherwise = bracket setup cleanup go @@ -88,17 +133,28 @@ noUmask mode a setup = setFileCreationMask nullFileMode cleanup = setFileCreationMask go _ = a +#else +noUmask _ a = a +#endif combineModes :: [FileMode] -> FileMode +#if 0 combineModes [] = undefined combineModes [m] = m combineModes (m:ms) = foldl unionFileModes m ms +#else +combineModes _ = error "combineModes TODO" +#endif stickyMode :: FileMode stickyMode = 512 isSticky :: FileMode -> Bool +#if 0 isSticky = checkMode stickyMode +#else +isSticky _ = False +#endif setSticky :: FilePath -> IO () setSticky f = modifyFileMode f $ addModes [stickyMode] @@ -110,6 +166,7 @@ setSticky f = modifyFileMode f $ addModes [stickyMode] - as writeFile. -} writeFileProtected :: FilePath -> String -> IO () +#if 0 writeFileProtected file content = do h <- openFile file WriteMode void $ tryIO $ @@ -117,3 +174,6 @@ writeFileProtected file content = do removeModes [groupReadMode, otherReadMode] hPutStr h content hClose h +#else +writeFileProtected = writeFile +#endif diff --git a/Utility/Gpg.hs b/Utility/Gpg.hs index 4a13d456c..6fcf173b1 100644..100755 --- a/Utility/Gpg.hs +++ b/Utility/Gpg.hs @@ -5,13 +5,17 @@ - Licensed under the GNU GPL version 3 or higher. -} +{-# LANGUAGE CPP #-} + module Utility.Gpg where import System.Posix.Types import Control.Applicative import Control.Concurrent import Control.Exception (bracket) +#if 0 import System.Posix.Env (setEnv, unsetEnv, getEnv) +#endif import Common @@ -20,6 +24,7 @@ newtype KeyIds = KeyIds [String] stdParams :: [CommandParam] -> IO [String] stdParams params = do +#ifndef __WINDOWS__ -- Enable batch mode if GPG_AGENT_INFO is set, to avoid extraneous -- gpg output about password prompts. GPG_BATCH is set by the test -- suite for a similar reason. @@ -29,6 +34,9 @@ stdParams params = do then [] else ["--batch", "--no-tty", "--use-agent"] return $ batch ++ defaults ++ toCommand params +#else + return $ defaults ++ toCommand params +#endif where -- be quiet, even about checking the trustdb defaults = ["--quiet", "--trust-model", "always"] @@ -64,6 +72,7 @@ pipeStrict params input = do - Note that to avoid deadlock with the cleanup stage, - the reader must fully consume gpg's input before returning. -} feedRead :: [CommandParam] -> String -> (Handle -> IO ()) -> (Handle -> IO a) -> IO a +#ifndef __WINDOWS__ feedRead params passphrase feeder reader = do -- pipe the passphrase into gpg on a fd (frompipe, topipe) <- createPipe @@ -83,6 +92,9 @@ feedRead params passphrase feeder reader = do feeder to hClose to reader from +#else +feedRead = error "feedRead TODO" +#endif {- Finds gpg public keys matching some string. (Could be an email address, - a key id, or a name; See the section 'HOW TO SPECIFY A USER ID' of @@ -204,6 +216,7 @@ keyBlock public ls = unlines | public = "PUBLIC" | otherwise = "PRIVATE" +#if 0 {- Runs an action using gpg in a test harness, in which gpg does - not use ~/.gpg/, but a directory with the test key set up to be used. -} testHarness :: IO a -> IO a @@ -230,3 +243,4 @@ testTestHarness :: IO Bool testTestHarness = do keys <- testHarness $ findPubKeys testKeyId return $ KeyIds [testKeyId] == keys +#endif diff --git a/Utility/LogFile.hs b/Utility/LogFile.hs index 1ff3006fe..d608cd798 100644..100755 --- a/Utility/LogFile.hs +++ b/Utility/LogFile.hs @@ -5,11 +5,15 @@ - Licensed under the GNU GPL version 3 or higher. -} +{-# LANGUAGE CPP #-} + module Utility.LogFile where import Common +#if 0 import System.Posix +#endif openLog :: FilePath -> IO Fd openLog logfile = do |