-----------------------------------------------------------------------------
-- |
-- Module      :  System.Posix
-- 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)
--
-- POSIX support
--
-----------------------------------------------------------------------------

module System.Posix (
  module System.Posix.Types,
  module System.Posix.Signals,
  module System.Posix.Directory,
  module System.Posix.Files,
  module System.Posix.Unistd,
  module System.Posix.IO,
  module System.Posix.Env,
  module System.Posix.Process,
  module System.Posix.Temp,
  module System.Posix.Terminal,
  module System.Posix.Time,
  module System.Posix.User,
  module System.Posix.Resource
 ) where

import System.Posix.Types
import System.Posix.Signals
import System.Posix.Directory
import System.Posix.Files
import System.Posix.Unistd
import System.Posix.Process
import System.Posix.IO
import System.Posix.Env
import System.Posix.Temp
import System.Posix.Terminal
import System.Posix.Time
import System.Posix.User
import System.Posix.Resource

{- TODO

Here we detail our support for the IEEE Std 1003.1-2001 standard.  For
each header file defined by the standard, we categorise its
functionality as

 - "supported" 

   Full equivalent functionality is provided by the specified Haskell
   module.

 - "unsupported" (functionality not provided by a Haskell module)

   The functionality is not currently provided.

 - "to be supported" 

   Currently unsupported, but support is planned for the future.

Exceptions are listed where appropriate.

Interfaces supported
--------------------

base package:

regex.h		Text.Regex.Posix
signal.h	System.Posix.Signals

unix package:

dirent.h 	System.Posix.Directory
dlfcn.h 	System.Posix.DynamicLinker
errno.h 	Foreign.C.Error
fcntl.h 	System.Posix.IO
sys/stat.h	System.Posix.Files
sys/times.h	System.Posix.Process
sys/types.h	System.Posix.Types (with exceptions...)
sys/utsname.h	System.Posix.Unistd
sys/wait.h	System.Posix.Process
termios.h	System.Posix.Terminal (check exceptions)
unistd.h	System.Posix.*
utime.h		System.Posix.Files
pwd.h		System.Posix.User
grp.h		System.Posix.User
stdlib.h: 	System.Posix.Env (getenv()/setenv()/unsetenv())
		System.Posix.Temp (mkstemp())
sys/resource.h: System.Posix.Resource (get/setrlimit() only)

network package:

arpa/inet.h
net/if.h
netinet/in.h
netinet/tcp.h
sys/socket.h
sys/un.h

To be supported
---------------

limits.h	(pathconf()/fpathconf() already done)
poll.h
sys/resource.h  (getrusage(): use instead of times() for getProcessTimes?)
sys/select.h
sys/statvfs.h	 (?)
sys/time.h	(but maybe not the itimer?)
time.h		(System.Posix.Time)
stdio.h		(popen only: System.Posix.IO)
sys/mman.h

Unsupported interfaces
----------------------

aio.h
assert.h
complex.h
cpio.h 
ctype.h 
fenv.h
float.h
fmtmsg.h
fnmatch.h
ftw.h
glob.h
iconv.h 
inttypes.h 
iso646.h 
langinfo.h
libgen.h
locale.h	(see System.Locale)
math.h
monetary.h
mqueue.h
ndbm.h
netdb.h
nl_types.h
pthread.h
sched.h
search.h
semaphore.h
setjmp.h
spawn.h
stdarg.h
stdbool.h
stddef.h
stdint.h
stdio.h		except: popen()
stdlib.h	except: exit(): System.Posix.Process
			free()/malloc(): Foreign.Marshal.Alloc
			getenv()/setenv(): ?? System.Environment
			rand() etc.: System.Random
string.h
strings.h
stropts.h
sys/ipc.h
sys/msg.h
sys/sem.h
sys/shm.h
sys/timeb.h
sys/uio.h
syslog.h
tar.h
tgmath.h
trace.h
ucontext.h
ulimit.h
utmpx.h
wchar.h
wctype.h
wordexp.h

-}
