;; -*- Mode: Irken -*-

(cinclude "sys/utsname.h")

(define (uname)
  (let ((utsname (%callocate (struct utsname) 1)))
    (%%cexp ((buffer (struct utsname)) -> int) "uname (%0)" utsname)
    {sysname=  (copy-cstring (%%cexp ((buffer (struct utsname)) -> cstring) "%0->sysname" utsname))
     nodename= (copy-cstring (%%cexp ((buffer (struct utsname)) -> cstring) "%0->nodename" utsname))
     release=  (copy-cstring (%%cexp ((buffer (struct utsname)) -> cstring) "%0->release" utsname))
     version=  (copy-cstring (%%cexp ((buffer (struct utsname)) -> cstring) "%0->version" utsname))
     machine=  (copy-cstring (%%cexp ((buffer (struct utsname)) -> cstring) "%0->machine" utsname))
     }))