X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=blackboard-dns.git;a=blobdiff_plain;f=System%2FPosix%2FUname.hs;fp=System%2FPosix%2FUname.hs;h=1a57ed1864660c66fdc0d7b40384dea00b232d67;hp=0000000000000000000000000000000000000000;hb=8109d2350f4c2855cd65b63c14efcb70fa3473c7;hpb=c0afc68ff35fc668809c488fc55d14b4dbcb863c diff --git a/System/Posix/Uname.hs b/System/Posix/Uname.hs new file mode 100644 index 0000000..1a57ed1 --- /dev/null +++ b/System/Posix/Uname.hs @@ -0,0 +1,29 @@ +module System.Posix.Uname + ( Uname(..) + , uname + ) + where + +import qualified Bindings.Uname as U +import Foreign.C +import Foreign.Marshal + +data Uname + = Uname { + uSysName :: String + , uNodeName :: String + , uRelease :: String + , uVersion :: String + , uMachine :: String + } + deriving (Show, Eq, Ord) + +uname :: IO Uname +uname = alloca $ \ ptr -> + do throwErrnoIfMinus1_ "uname" (U.uname ptr) + sys <- peekCString $ U.sysname ptr + nod <- peekCString $ U.nodename ptr + rel <- peekCString $ U.release ptr + ver <- peekCString $ U.version ptr + mac <- peekCString $ U.machine ptr + return $ Uname sys nod rel ver mac