From 57d2cb2a613e909829f22be6218e840b2b4602b5 Mon Sep 17 00:00:00 2001 From: Herbert Valerio Riedel Date: Sun, 31 Jan 2016 12:57:23 +0100 Subject: Replace `__hsunix_unsetenv` wrapper with CApiFFI --- System/Posix/Env/ByteString.hsc | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'System/Posix/Env') diff --git a/System/Posix/Env/ByteString.hsc b/System/Posix/Env/ByteString.hsc index 0bbcfd8..57b03aa 100644 --- a/System/Posix/Env/ByteString.hsc +++ b/System/Posix/Env/ByteString.hsc @@ -1,3 +1,4 @@ +{-# LANGUAGE CApiFFI #-} {-# LANGUAGE Trustworthy #-} #if __GLASGOW_HASKELL__ >= 709 {-# OPTIONS_GHC -fno-warn-trustworthy-safe #-} @@ -98,13 +99,21 @@ getEnvironment = do -- from the environment. unsetEnv :: ByteString -> IO () -#ifdef HAVE_UNSETENV - +#if HAVE_UNSETENV +# if !UNSETENV_RETURNS_VOID unsetEnv name = B.useAsCString name $ \ s -> throwErrnoIfMinus1_ "unsetenv" (c_unsetenv s) -foreign import ccall unsafe "__hsunix_unsetenv" +-- POSIX.1-2001 compliant unsetenv(3) +foreign import capi unsafe "HsUnix.h unsetenv" c_unsetenv :: CString -> IO CInt +# else +unsetEnv name = B.useAsCString name c_unsetenv + +-- pre-POSIX unsetenv(3) returning @void@ +foreign import capi unsafe "HsUnix.h unsetenv" + c_unsetenv :: CString -> IO () +# endif #else unsetEnv name = putEnv (name ++ "=") #endif -- cgit v1.2.3