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