-- Save a copy of termios, if this is a standard file descriptor.
-- These terminal settings are restored in hs_exit().
when (fd <= 2) $ do
- p <- peekElemOff saved_termios fd
+ p <- get_saved_termios fd
when (p == nullPtr) $ do
saved_tios <- mallocBytes sizeof_termios
copyBytes saved_tios p_tios sizeof_termios
- pokeElemOff saved_termios fd saved_tios
+ set_saved_termios fd saved_tios
-- tcsetattr() when invoked by a background process causes the process
-- to be sent SIGTTOU regardless of whether the process has TOSTOP set
c_sigprocmask const_sig_setmask p_old_sigset nullPtr
return r
-foreign import ccall "&saved_termios" saved_termios :: Ptr (Ptr CTermios)
+foreign import ccall unsafe "HsBase.h __hscore_get_saved_termios"
+ get_saved_termios :: Int -> IO (Ptr CTermios)
+
+foreign import ccall unsafe "HsBase.h __hscore_set_saved_termios"
+ set_saved_termios :: Int -> (Ptr CTermios) -> IO ()
#else
/* -----------------------------------------------------------------------------
- * $Id: HsBase.h,v 1.29 2003/09/24 11:06:54 simonmar Exp $
+ * $Id: HsBase.h,v 1.30 2003/09/25 15:14:44 panne Exp $
*
* (c) The University of Glasgow 2001-2002
*
#endif
}
-#if HAVE_TERMIOS_H
// defined in rts/RtsStartup.c.
-extern struct termios saved_termios[];
-#endif
+extern void* __hscore_get_saved_termios(int fd);
+extern void __hscore_set_saved_termios(int fd, void* ts);
INLINE int __hscore_hs_fileno (FILE *f) { return fileno (f); }