summaryrefslogtreecommitdiff
path: root/Logs/Transfer.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2013-12-10 23:32:10 -0400
committerGravatar Joey Hess <joey@kitenet.net>2013-12-10 23:48:42 -0400
commit62d93c99ce45d2f3cd486874cb0c2cd719527146 (patch)
tree2be7c769ab4964c61c7ad646f4483f9fbcc32017 /Logs/Transfer.hs
parentf864a68220a0d77b5b6a5c3f4f25743e8e76aae0 (diff)
different PID types for Unix and Windows
Windows has a larger (unsigned) PID space, so cannot use the unix CInt there. Note that TransferInfo does not yet ever get the TransferPid populated, as there is missing locking.
Diffstat (limited to 'Logs/Transfer.hs')
-rw-r--r--Logs/Transfer.hs18
1 files changed, 14 insertions, 4 deletions
diff --git a/Logs/Transfer.hs b/Logs/Transfer.hs
index 24fb940d5..b96b827c6 100644
--- a/Logs/Transfer.hs
+++ b/Logs/Transfer.hs
@@ -18,13 +18,23 @@ import Utility.Metered
import Utility.Percentage
import Utility.QuickCheck
-import System.Posix.Types
+#ifndef mingw32_HOST_OS
+import System.Posix.Types (ProcessID)
+#else
+import System.Win32.Process (ProcessId)
+#endif
import Data.Time.Clock
import Data.Time.Clock.POSIX
import Data.Time
import System.Locale
import Control.Concurrent
+#ifndef mingw32_HOST_OS
+type PID = ProcessID
+#else
+type PID = ProcessId
+#endif
+
{- Enough information to uniquely identify a transfer, used as the filename
- of the transfer information file. -}
data Transfer = Transfer
@@ -42,7 +52,7 @@ data Transfer = Transfer
-}
data TransferInfo = TransferInfo
{ startedTime :: Maybe POSIXTime
- , transferPid :: Maybe ProcessID
+ , transferPid :: Maybe PID
, transferTid :: Maybe ThreadId
, transferRemote :: Maybe Remote
, bytesComplete :: Maybe Integer
@@ -328,13 +338,13 @@ writeTransferInfo info = unlines
, fromMaybe "" $ associatedFile info -- comes last; arbitrary content
]
-readTransferInfoFile :: Maybe ProcessID -> FilePath -> IO (Maybe TransferInfo)
+readTransferInfoFile :: Maybe PID -> FilePath -> IO (Maybe TransferInfo)
readTransferInfoFile mpid tfile = catchDefaultIO Nothing $ do
h <- openFile tfile ReadMode
fileEncoding h
hClose h `after` (readTransferInfo mpid <$> hGetContentsStrict h)
-readTransferInfo :: Maybe ProcessID -> String -> Maybe TransferInfo
+readTransferInfo :: Maybe PID -> String -> Maybe TransferInfo
readTransferInfo mpid s = TransferInfo
<$> time
<*> pure mpid