pull in Win32-extras, to be able to get current process id in Windows
Fixed up a number of things that had worked around there not being a way to get that. Most notably, transfer info files on windows now include the process id, since no locking is currently done. This means the file format varies between windows and unix.
This commit is contained in:
parent
c01af6285f
commit
011b8bc7ec
6 changed files with 46 additions and 19 deletions
|
@ -18,11 +18,14 @@ import Utility.LogFile
|
|||
import Utility.NotificationBroadcaster
|
||||
|
||||
import Control.Concurrent
|
||||
#ifndef mingw32_HOST_OS
|
||||
import System.Posix (getProcessID, signalProcess, sigTERM)
|
||||
#endif
|
||||
import qualified Data.Map as M
|
||||
import qualified Data.Text as T
|
||||
#ifndef mingw32_HOST_OS
|
||||
import System.Posix (getProcessID, signalProcess, sigTERM)
|
||||
#else
|
||||
import System.Win32.Process.Current (getCurrentProcessId)
|
||||
import System.Win32.Console (generateConsoleCtrlEvent, cTRL_C_EVENT)
|
||||
#endif
|
||||
|
||||
getShutdownR :: Handler Html
|
||||
getShutdownR = page "Shutdown" Nothing $
|
||||
|
@ -46,14 +49,14 @@ getShutdownConfirmedR = do
|
|||
liftAssistant $ do
|
||||
modifyDaemonStatus_ $ \status -> status { globalRedirUrl = Just url }
|
||||
liftIO . sendNotification . globalRedirNotifier =<< getDaemonStatus
|
||||
#ifndef mingw32_HOST_OS
|
||||
{- Wait 2 seconds before shutting down, to give the web
|
||||
- page time to load in the browser. -}
|
||||
void $ liftIO $ forkIO $ do
|
||||
threadDelay 2000000
|
||||
#ifndef mingw32_HOST_OS
|
||||
signalProcess sigTERM =<< getProcessID
|
||||
#else
|
||||
void $ liftIO exitSuccess
|
||||
generateConsoleCtrlEvent cTRL_C_EVENT =<< getCurrentProcessId
|
||||
#endif
|
||||
redirect NotRunningR
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue