#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
type {struct utmpx}

element {struct utmpx} char ut_user []
element {struct utmpx} char ut_id []
element {struct utmpx} char ut_line []
element {struct utmpx} pid_t ut_pid
element {struct utmpx} {short int} ut_type
element {struct utmpx} {struct timeval} ut_tv

type pid_t

type {struct timeval}

element {struct timeval} time_t tv_sec
element {struct timeval} suseconds_t tv_usec

constant EMPTY
constant BOOT_TIME
constant OLD_TIME
constant NEW_TIME
constant USER_PROCESS
constant INIT_PROCESS
constant LOGIN_PROCESS
constant DEAD_PROCESS

function void endutxent (void)
function {struct utmpx*} getutxent (void)
function {struct utmpx*} getutxid (const struct utmpx*)
function {struct utmpx*} getutxline (const struct utmpx*)
function {struct utmpx*} pututxline (const struct utmpx*)
function void setutxent (void)

allow-header sys/time.h

allow ut_*
allow *_t
#endif
