XPG User Accounting Database Functions
--------------------------------------
These functions, described in the X/Open Portability Guide, are
declared in the header file `utmpx.h'.
- Data Type: struct utmpx
The `utmpx' data structure contains at least the following members:
`short int ut_type'
Specifies the type of login; one of `EMPTY', `RUN_LVL',
`BOOT_TIME', `OLD_TIME', `NEW_TIME', `INIT_PROCESS',
`LOGIN_PROCESS', `USER_PROCESS' or `DEAD_PROCESS'.
`pid_t ut_pid'
The process ID number of the login process.
`char ut_line[]'
The device name of the tty (without `/dev/').
`char ut_id[]'
The inittab ID of the process.
`char ut_user[]'
The user's login name.
`struct timeval ut_tv'
Time the entry was made. For entries of type `OLD_TIME' this
is the time when the system clock changed, and for entries of
type `NEW_TIME' this is the time the system clock was set to.
On the GNU system, `struct utmpx' is identical to `struct utmp'
except for the fact that including `utmpx.h' does not make visible
the declaration of `struct exit_status'.
The following macros are defined for use as values for the `ut_type'
member of the `utmpx' structure. The values are integer constants and
are, on the GNU system, identical to the definitions in `utmp.h'.
`EMPTY'
This macro is used to indicate that the entry contains no valid
user accounting information.
`RUN_LVL'
This macro is used to identify the systems runlevel.
`BOOT_TIME'
This macro is used to identify the time of system boot.
`OLD_TIME'
This macro is used to identify the time when the system clock
changed.
`NEW_TIME'
This macro is used to identify the time after the system changed.
`INIT_PROCESS'
This macro is used to identify a process spawned by the init
process.
`LOGIN_PROCESS'
This macro is used to identify the session leader of a logged in
user.
`USER_PROCESS'
This macro is used to identify a user process.
`DEAD_PROCESS'
This macro is used to identify a terminated process.
The size of the `ut_line', `ut_id' and `ut_user' arrays can be found
using the `sizeof' operator.
- Function: void setutxent (void)
This function is similar to `setutent'. On the GNU system it is
simply an alias for `setutent'.
- Function: struct utmpx * getutxent (void)
The `getutxent' function is similar to `getutent', but returns a
pointer to a `struct utmpx' instead of `struct utmp'. On the GNU
system it simply is an alias for `getutent'.
- Function: void endutxent (void)
This function is similar to `endutent'. On the GNU system it is
simply an alias for `endutent'.
- Function: struct utmpx * getutxid (const struct utmpx *ID)
This function is similar to `getutid', but uses `struct utmpx'
instead of `struct utmp'. On the GNU system it is simply an alias
for `getutid'.
- Function: struct utmpx * getutxline (const struct utmpx *LINE)
This function is similar to `getutid', but uses `struct utmpx'
instead of `struct utmp'. On the GNU system it is simply an alias
for `getutline'.
- Function: struct utmpx * pututxline (const struct utmpx *UTMP)
The `pututxline' function is functionally identical to
`pututline', but uses `struct utmpx' instead of `struct utmp'. On
the GNU system, `pututxline' is simply an alias for `pututline'.
- Function: int utmpxname (const char *FILE)
The `utmpxname' function is functionally identical to `utmpname'.
On the GNU system, `utmpxname' is simply an alias for `utmpname'.
You can translate between a traditional `struct utmp' and an XPG
`struct utmpx' with the following functions. On the GNU system, these
functions are merely copies, since the two structures are identical.
- Function: int getutmp (const struct utmpx *utmpx, struct utmp *utmp)
`getutmp' copies the information, insofar as the structures are
compatible, from UTMPX to UTMP.
- Function: int getutmpx (const struct utmp *utmp, struct utmpx *utmpx)
`getutmpx' copies the information, insofar as the structures are
compatible, from UTMP to UTMPX.