diff options
author | 2013-05-10 16:29:59 -0500 | |
---|---|---|
committer | 2013-05-10 16:29:59 -0500 | |
commit | 5d0476bf59674b39fa6bad7e4446b5c741181143 (patch) | |
tree | 67897681b96fb9e79990033822e1a645de1f96a7 /Utility | |
parent | 812f7d6c564e297b67850f2aa4751141a8f68e99 (diff) |
stub out POSIX stuff
Diffstat (limited to 'Utility')
-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 |
4 files changed, 82 insertions, 0 deletions
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 |