]> gitweb @ CieloNegro.org - blackboard-dns.git/blobdiff - System/Posix/Uname.hs
client makereq
[blackboard-dns.git] / System / Posix / Uname.hs
diff --git a/System/Posix/Uname.hs b/System/Posix/Uname.hs
new file mode 100644 (file)
index 0000000..1a57ed1
--- /dev/null
@@ -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