aboutsummaryrefslogtreecommitdiffhomepage
path: root/System/Posix/User.hsc
diff options
context:
space:
mode:
authorGravatar Simon Marlow <marlowsd@gmail.com>2009-07-23 07:57:25 +0000
committerGravatar Simon Marlow <marlowsd@gmail.com>2009-07-23 07:57:25 +0000
commit4eac1ce4a5624e6c21f426a9338d213667b84dde (patch)
tree90060d6562a71457546c284bc7b49777a5835e27 /System/Posix/User.hsc
parent64adb7f67518eb1f0a07948aeed37b03a0a3a761 (diff)
NetBSD does not have support for symbol versioning, so updated systen
functions need to be given a new name, and the header files contain some __asm hackery in order to let the program call the correct function. This mean that you need to use the header files in order to call the correct system functions, which prevents things like "foreign import ccall" from working. Ghc solves this with wrapper functions for some of the renamed functions, but it has not been updated for newer versions of NetBSD that has recently versioned some more functions. The attached patches introduces wrapper functions for all currently NetBSD-versioned functions used in libraries/unix. Solves ~20 testsuite failures. Contributed by: Krister Walfridsson <krister.walfridsson@gmail.com>
Diffstat (limited to 'System/Posix/User.hsc')
-rw-r--r--System/Posix/User.hsc6
1 files changed, 3 insertions, 3 deletions
diff --git a/System/Posix/User.hsc b/System/Posix/User.hsc
index 47a7a72..88150a0 100644
--- a/System/Posix/User.hsc
+++ b/System/Posix/User.hsc
@@ -292,7 +292,7 @@ getUserEntryForID uid = do
peekElemOff pppw 0
unpackUserEntry ppw
-foreign import ccall unsafe "getpwuid_r"
+foreign import ccall unsafe "__hsunix_getpwuid_r"
c_getpwuid_r :: CUid -> Ptr CPasswd ->
CString -> CSize -> Ptr (Ptr CPasswd) -> IO CInt
#elif HAVE_GETPWUID
@@ -328,7 +328,7 @@ getUserEntryForName name = do
(Just name)
unpackUserEntry ppw
-foreign import ccall unsafe "getpwnam_r"
+foreign import ccall unsafe "__hsunix_getpwnam_r"
c_getpwnam_r :: CString -> Ptr CPasswd
-> CString -> CSize -> Ptr (Ptr CPasswd) -> IO CInt
#elif HAVE_GETPWNAM
@@ -359,7 +359,7 @@ getAllUserEntries =
else do thisentry <- unpackUserEntry ppw
worker (thisentry : accum)
-foreign import ccall unsafe "getpwent"
+foreign import ccall unsafe "__hsunix_getpwent"
c_getpwent :: IO (Ptr CPasswd)
foreign import ccall unsafe "setpwent"
c_setpwent :: IO ()