{-# LINE 1 "Bindings/Uname.hsc" #-}
module Bindings.Uname
{-# LINE 2 "Bindings/Uname.hsc" #-}
    ( Utsname
    , uname

    , sysname
    , nodename
    , release
    , version
    , machine
    )
    where


{-# LINE 14 "Bindings/Uname.hsc" #-}

import Foreign
import Foreign.C

-- | @'uname' name@ stores nul-terminated strings of information
--   identifying the current system info to the structure referenced
--   by name.
--
--   > import Foreign.C
--   > import Foreign.Marshal
--   >
--   > sysName :: IO String
--   > sysName = alloca $ \ ptr ->
--   >           do throwErrnoIfMinus1_ "uname" $ uname ptr
--   >              peekCString $ sysname ptr
--
foreign import ccall unsafe "sys/utsname.h uname"
        uname :: Ptr Utsname -> IO CInt

data Utsname

instance Storable Utsname where
    sizeOf    = const (390)
{-# LINE 37 "Bindings/Uname.hsc" #-}
    alignment = sizeOf
    poke      = error "Storable Utsname: peek: unsupported operation"
    peek      = error "Storable Utsname: poke: unsupported operation"

sysname :: Ptr Utsname -> CString
sysname = ((\hsc_ptr -> hsc_ptr `plusPtr` 0))
{-# LINE 43 "Bindings/Uname.hsc" #-}

nodename :: Ptr Utsname -> CString
nodename = ((\hsc_ptr -> hsc_ptr `plusPtr` 65))
{-# LINE 46 "Bindings/Uname.hsc" #-}

release :: Ptr Utsname -> CString
release = ((\hsc_ptr -> hsc_ptr `plusPtr` 130))
{-# LINE 49 "Bindings/Uname.hsc" #-}

version :: Ptr Utsname -> CString
version = ((\hsc_ptr -> hsc_ptr `plusPtr` 195))
{-# LINE 52 "Bindings/Uname.hsc" #-}

machine :: Ptr Utsname -> CString
machine = ((\hsc_ptr -> hsc_ptr `plusPtr` 260))
{-# LINE 55 "Bindings/Uname.hsc" #-}