{-# INCLUDE <bindings.macros.h> #-}
{-# INCLUDE <sys/utsname.h> #-}
{-# LINE 1 "src/Bindings/Posix/Sys/Utsname.hsc" #-}

{-# LINE 2 "src/Bindings/Posix/Sys/Utsname.hsc" #-}

{-# LINE 3 "src/Bindings/Posix/Sys/Utsname.hsc" #-}

-- | <http://www.opengroup.org/onlinepubs/9699919799/basedefs/sys_utsname.h.html>

module Bindings.Posix.Sys.Utsname where
import Foreign
import Foreign.C

data C'utsname = C'utsname{
{-# LINE 11 "src/Bindings/Posix/Sys/Utsname.hsc" #-}

  utsname'sysname :: [CChar]
{-# LINE 12 "src/Bindings/Posix/Sys/Utsname.hsc" #-}
,
  utsname'nodename :: [CChar]
{-# LINE 13 "src/Bindings/Posix/Sys/Utsname.hsc" #-}
,
  utsname'release :: [CChar]
{-# LINE 14 "src/Bindings/Posix/Sys/Utsname.hsc" #-}
,
  utsname'version :: [CChar]
{-# LINE 15 "src/Bindings/Posix/Sys/Utsname.hsc" #-}
,
  utsname'machine :: [CChar]
{-# LINE 16 "src/Bindings/Posix/Sys/Utsname.hsc" #-}

 } 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 ()

{-# LINE 17 "src/Bindings/Posix/Sys/Utsname.hsc" #-}

foreign import ccall "uname" c'uname
  :: Ptr C'utsname -> IO CInt
foreign import ccall "&uname" p'uname
  :: FunPtr (Ptr C'utsname -> IO CInt)

{-# LINE 19 "src/Bindings/Posix/Sys/Utsname.hsc" #-}