{-# LINE 1 "System/Posix/Env/Internal.hsc" #-}
module System.Posix.Env.Internal where



import Foreign
import Foreign.C

getEnvironmentPrim :: IO [Ptr CChar]
getEnvironmentPrim :: IO [CString]
getEnvironmentPrim = do
  Ptr CString
c_environ <- IO (Ptr CString)
getCEnviron
  if Ptr CString
c_environ forall a. Eq a => a -> a -> Bool
== forall a. Ptr a
nullPtr
    then forall (m :: * -> *) a. Monad m => a -> m a
return []
    else do
      forall a. (Storable a, Eq a) => a -> Ptr a -> IO [a]
peekArray0 forall a. Ptr a
nullPtr Ptr CString
c_environ

getCEnviron :: IO (Ptr CString)

{-# LINE 25 "System/Posix/Env/Internal.hsc" #-}
getCEnviron :: IO (Ptr CString)
getCEnviron = forall a. Storable a => Ptr a -> IO a
peek Ptr (Ptr CString)
c_environ_p

foreign import ccall unsafe "&environ"
   c_environ_p :: Ptr (Ptr CString)

{-# LINE 30 "System/Posix/Env/Internal.hsc" #-}