Copyright | (c) The University of Glasgow 2002 |
---|---|
License | BSD-style (see the file libraries/base/LICENSE) |
Maintainer | libraries@haskell.org |
Stability | provisional |
Portability | non-portable (requires POSIX) |
Safe Haskell | Safe |
Language | Haskell2010 |
POSIX.1-2008
support with ByteString
file paths and environment strings.
This module exports exactly the same API as System.Posix, except
that all file paths and environment strings are represented by
ByteString
instead of String
. The System.Posix API
implicitly translates all file paths and environment strings using
the locale encoding, whereas this version of the API does no
encoding or decoding and works directly in terms of raw bytes.
Note that if you do need to interpret file paths or environment strings as text, then some Unicode encoding or decoding should be applied first.
Synopsis
- type RawFilePath = ByteString
- module System.Posix.Types
- module System.Posix.Signals
- module System.Posix.Directory.ByteString
- module System.Posix.Files.ByteString
- module System.Posix.Unistd
- module System.Posix.IO.ByteString
- module System.Posix.Env.ByteString
- module System.Posix.Process.ByteString
- module System.Posix.Temp.ByteString
- module System.Posix.Terminal.ByteString
- module System.Posix.Time
- module System.Posix.User
- module System.Posix.Resource
- module System.Posix.Semaphore
- module System.Posix.SharedMem
- data RTLDFlags
- data DL
- dlopen :: RawFilePath -> [RTLDFlags] -> IO DL
- dlsym :: DL -> String -> IO (FunPtr a)
- dlerror :: IO String
- dlclose :: DL -> IO ()
- withDL :: RawFilePath -> [RTLDFlags] -> (DL -> IO a) -> IO a
- withDL_ :: RawFilePath -> [RTLDFlags] -> (DL -> IO a) -> IO ()
- undl :: DL -> Ptr ()
- c_dlopen :: CString -> CInt -> IO (Ptr ())
- c_dlsym :: Ptr () -> CString -> IO (FunPtr a)
- c_dlerror :: IO CString
- c_dlclose :: Ptr () -> IO CInt
- haveRtldNext :: Bool
- haveRtldLocal :: Bool
- packRTLDFlags :: [RTLDFlags] -> CInt
- packDL :: DL -> Ptr ()
Documentation
type RawFilePath = ByteString Source #
A literal POSIX file path
module System.Posix.Types
module System.Posix.Signals
module System.Posix.Unistd
module System.Posix.IO.ByteString
module System.Posix.Env.ByteString
module System.Posix.Temp.ByteString
module System.Posix.Time
module System.Posix.User
module System.Posix.Resource
module System.Posix.Semaphore
module System.Posix.SharedMem
dlsym :: DL -> String -> IO (FunPtr a) Source #
dlsym
returns the address binding of the symbol described in symbol
,
as it occurs in the shared object identified by source
.
undl
obtains the raw handle. You mustn't do something like
withDL mod flags $ liftM undl >>= p -> use p
haveRtldNext :: Bool Source #
On some hosts (e.g. SuSe and Ubuntu Linux) RTLD_NEXT
(and
RTLD_DEFAULT
) are not visible without setting the macro
_GNU_SOURCE
. Since we don't want to define this macro, you can use
the function haveRtldNext
to check wether the flag Next
is
available. Ideally, this will be optimized by the compiler so that it
should be as efficient as an #ifdef
.
If you fail to test the flag and use it although it is undefined,
packDL
will throw an error.
haveRtldLocal :: Bool Source #
Deprecated: defaults to True
packRTLDFlags :: [RTLDFlags] -> CInt Source #