module Bindings.Posix.Sys.Utsname where
import Foreign
import Foreign.C
data C'utsname = C'utsname{
utsname'sysname :: [CChar]
,
utsname'nodename :: [CChar]
,
utsname'release :: [CChar]
,
utsname'version :: [CChar]
,
utsname'machine :: [CChar]
} deriving (Eq,Show)
instance Storable C'utsname where
sizeOf _ = 390
alignment = sizeOf
peek p = do
v0 <- peekArray 65 (plusPtr p 0)
v1 <- peekArray 65 (plusPtr p 65)
v2 <- peekArray 65 (plusPtr p 130)
v3 <- peekArray 65 (plusPtr p 195)
v4 <- peekArray 65 (plusPtr p 260)
return $ C'utsname v0 v1 v2 v3 v4
poke p (C'utsname v0 v1 v2 v3 v4) = do
pokeArray (plusPtr p 0) (take 65 v0)
pokeArray (plusPtr p 65) (take 65 v1)
pokeArray (plusPtr p 130) (take 65 v2)
pokeArray (plusPtr p 195) (take 65 v3)
pokeArray (plusPtr p 260) (take 65 v4)
return ()
foreign import ccall "uname" c'uname
:: Ptr C'utsname -> IO CInt
foreign import ccall "&uname" p'uname
:: FunPtr (Ptr C'utsname -> IO CInt)