This library provides functions to wrap a String so it can be used within a Unix shell command line, and end up as a single argument to the program invoked.
The module System.Posix.Escape is the safer option. The module System.Posix.Escape.Unicode has extra caveats which are documented with that module.
There is a similar function within the process package as System.Process.Internals.translate.
System.Posix.IO has very low-level bindings to POSIX fcntl advisory locks. This module wraps them in a cleaner API.
This package gives you access to the set of operating system services standardised by POSIX 1003.1b (or the IEEE Portable Operating System Interface for Computing Environments - IEEE Std. 1003.1).
The package is not supported under Windows (except under Cygwin).
This package provides bindings to POSIX clock and timer functions.
A low-level wrapping of POSIX waitpid(2).
Module that provides the Regex backend that wraps the c posix regex api. This is the backend being used by the regex-compat package to replace Text.Regex
The Text.Regex.Posix module provides a backend for regular expressions. If you import this along with other backends, then you should do so with qualified imports, perhaps renamed for convenience.
If the =~ and =~~ functions are too high level, you can use the compile, regexec, and execute functions from importing either Text.Regex.Posix.String or Text.Regex.Posix.ByteString. If you want to use a low-level CString interface to the library, then import Text.Regex.Posix.Wrap and use the wrap* functions.
This module is only efficient with ByteString only if it is null terminated, i.e. (Bytestring.last bs)==0. Otherwise the library must make a temporary copy of the ByteString and append the NUL byte.
A String will be converted into a CString for processing. Doing this repeatedly will be very inefficient.
Note that the posix library works with single byte characters, and does not understand Unicode. If you need Unicode support you will have to use a different backend.
When offsets are reported for subexpression captures, a subexpression that did not match anything (as opposed to matching an empty string) will have its offset set to the unusedRegOffset value, which is (-1).
Benchmarking shows the default regex library on many platforms is very inefficient. You might increase performace by an order of magnitude by obtaining libpcre and regex-pcre or libtre and regex-tre. If you do not need the captured substrings then you can also get great performance from regex-dfa. If you do need the capture substrings then you may be able to use regex-parsec to improve performance.
The posix regex backend for regex-base
Most platforms have a buggy system regex library and this probes the bugs by using the regex-posix package, run with "regex-posix-unittest"
Due to the design of POSIX, it is possible to temporarily overload the file descriptors corresponding to stdout and stderr to point to an arbitrary pipe. It is, however, tricky to get right. This module gets it right, as far as such a terrible hack can be made right. It can be used to make misbehaving third-party C libraries stop spewing to standard output. Warning: the module author has concluded that due to lack of portability, this module should not be used in any serious sytem. But, for those who like living dangerously...