1. 18 Nov, 2004 2 commits
  2. 17 Nov, 2004 2 commits
    • sof's avatar
      [project @ 2004-11-17 19:07:38 by sof] · 900ca61d
      sof authored
      Expose Win32 console event handling to the user.
      
      Added RTS support for registering and delivering console events quite
      a while ago (rts/win32/ConsoleHandler.c), but got bored with it before
      completing the job. Here's the concluding commit; it does the following:
      
      - new module, base/GHC/ConsoleHandler.hs which supports registering of
        console event handlers (the null module on plats other than mingw).
      - special handling of aborted async read()s on 'standard input' in
        rts/win32/IOManager.c (together with GHC.Conc.asyncRead). See comments
        in that IOManager.c as to why this is needed.
        [ Any other code that performs blocking I/O on 'standard input' will
          need to be tweaked too to be console event handler/signal friendly.]
      - for now, disable the delivery of 'close' events (see
        rts/win32/ConsoleHandler.c:generic_handler() for reasons why)
      
      Feel free to hoik GHC/ConsoleHandler.hs around the lib hierarchy to wherever
      is considered more fitting. Unifying functionality between System.Posix.Signals
      and GHC.ConsoleHandler is one (obvious) thing to do.
      
      -- Demonstrating GHC.ConsoleHandler use; win32 only
      module Main(main) where
      
      import GHC.ConsoleHandler
      import System.IO  (hFlush, stdout)
      import GHC.Conc   (threadDelay)
      
      main :: IO ()
      main = do
        installHandler (Catch (\ _ -> putStrLn "Caught console event; ignoring" >> hFlush stdout))
        loop
       where
        loop = do
          threadDelay 100000
          ls <- getLine
          putStrLn ls
          loop
      --
      900ca61d
    • josefs's avatar
      [project @ 2004-11-17 18:31:08 by josefs] · fa9a03c1
      josefs authored
      Needed to include a header file in Compat/Directory on windows
      fa9a03c1
  3. 16 Nov, 2004 2 commits
  4. 15 Nov, 2004 1 commit
  5. 14 Nov, 2004 3 commits
  6. 13 Nov, 2004 1 commit
  7. 12 Nov, 2004 11 commits
  8. 11 Nov, 2004 15 commits
  9. 10 Nov, 2004 3 commits