aboutsummaryrefslogtreecommitdiffhomepage
path: root/System/Posix/Terminal/ByteString.hsc
diff options
context:
space:
mode:
Diffstat (limited to 'System/Posix/Terminal/ByteString.hsc')
-rw-r--r--System/Posix/Terminal/ByteString.hsc17
1 files changed, 16 insertions, 1 deletions
diff --git a/System/Posix/Terminal/ByteString.hsc b/System/Posix/Terminal/ByteString.hsc
index d98a9c0..cd6e200 100644
--- a/System/Posix/Terminal/ByteString.hsc
+++ b/System/Posix/Terminal/ByteString.hsc
@@ -142,8 +142,14 @@ getSlaveTerminalName (Fd fd) = do
s <- throwErrnoIfNull "getSlaveTerminalName" (c_ptsname fd)
peekFilePath s
+# if __GLASGOW_HASKELL__ < 800
+-- see comment in cbits/HsUnix.c
foreign import ccall unsafe "__hsunix_ptsname"
c_ptsname :: CInt -> IO CString
+# else
+foreign import capi unsafe "HsUnix.h ptsname"
+ c_ptsname :: CInt -> IO CString
+# endif
#else
getSlaveTerminalName _ =
ioError (errnoToIOError "getSlaveTerminalName" eNOSYS Nothing Nothing)
@@ -195,12 +201,21 @@ pushModule (Fd fd) name =
foreign import ccall unsafe "__hsunix_push_module"
c_push_module :: CInt -> CString -> IO CInt
-#ifdef HAVE_PTSNAME
+#if HAVE_PTSNAME
+# if __GLASGOW_HASKELL__ < 800
+-- see comment in cbits/HsUnix.c
foreign import ccall unsafe "__hsunix_grantpt"
c_grantpt :: CInt -> IO CInt
foreign import ccall unsafe "__hsunix_unlockpt"
c_unlockpt :: CInt -> IO CInt
+# else
+foreign import capi unsafe "HsUnix.h grantpt"
+ c_grantpt :: CInt -> IO CInt
+
+foreign import capi unsafe "HsUnix.h unlockpt"
+ c_unlockpt :: CInt -> IO CInt
+# endif
#else
c_grantpt :: CInt -> IO CInt
c_grantpt _ = return (fromIntegral (0::Int))