]> gitweb @ CieloNegro.org - blackboard-dns.git/blob - System/Posix/Uname.hs
client makereq
[blackboard-dns.git] / System / Posix / Uname.hs
1 module System.Posix.Uname
2     ( Uname(..)
3     , uname
4     )
5     where
6
7 import qualified Bindings.Uname as U
8 import Foreign.C
9 import Foreign.Marshal
10
11 data Uname
12     = Uname {
13         uSysName  :: String
14       , uNodeName :: String
15       , uRelease  :: String
16       , uVersion  :: String
17       , uMachine  :: String
18       }
19     deriving (Show, Eq, Ord)
20
21 uname :: IO Uname
22 uname = alloca $ \ ptr ->
23         do throwErrnoIfMinus1_ "uname" (U.uname ptr)
24            sys <- peekCString $ U.sysname  ptr
25            nod <- peekCString $ U.nodename ptr
26            rel <- peekCString $ U.release  ptr
27            ver <- peekCString $ U.version  ptr
28            mac <- peekCString $ U.machine  ptr
29            return $ Uname sys nod rel ver mac