endutxent()

NAME

endutxent(), getutxent(), getutxid(), getutxline(), pututxline(), setutxent() - user accounting database (utmpx) functions

SYNOPSIS

#include <utmpx.h>

void endutxent(void) struct utmpx *getutxent (void) struct utmpx *getutxid (const struct utmpx *id) struct utmpx *getutxline (const struct utmpx *line) struct utmpx *pututxline (const struct utmpx *utmpx) struct utmpx *setutxent (void)

DESCRIPTION

These functions provide access to the user accounting database, usually stored in the file /var/adm/utmpx. These functions are not reentrant.

The getutxent(2) function reads the next entry. If the utmpx file isn't open, the function opens it. If the function reaches the end of the utmpx file, it fails.

The getutxid(2) function searches forward in the database from the current point for a matching entry. The id is a utmpx structure; the match depends upon the value of the ut_type value in the structure.

The getutxid(2) function fails if it reaches the end of the database without a match.

The getutxline(2) function searches forward in the database from the current point for an entry with a value of ut_line that matches the value in line, and that has a ut_type of LOGIN_PROCESS or USER_PROCESS. The function fails if it reaches the end of the database without finding a match.

The pututxline(2) function writes out the information in the structure utmpx to the database. The process must have the appropriate privileges to do this. It searches the database for a matching entry (using getutxid(2)); if it finds a match, the existing information is replaced with the information in utmpx. If it doesn't find a match, the new information is added at the end of the file.

The setutxent(2) function resets input to the beginning of the database.

The endutxent(2) function closes the database.

The functions getutxid(2) and getutxline(2) may cache the data. When using getutxline(2) to search for multiple occurrences, zero out the static data after each success, or getutxline(2) will repeatedly return a pointer to the same utmpx structure. (The implicit read done by pututxline(2) doesn't modify the static structure.)

The utmpx structure is described in the file <utmpx.h>. It consists of at least these members:

char ut_user[] user login name
char ut_id[] initialization process identifier
char ut_line[] device name
pid_t ut_pid process ID
short int ut_type type of entry -- see list
struct timeval ut_tv time entry was made.

The ut_type member is used for matches, as described above. It can have the following values:

EMPTY No valid information
BOOT_TIME Time of system boot (not stored)
OLD_TIME Time when system clock changed (not stored)
NEW_TIME Time after system clock changed (not stored)
USER_PROCESS Identifies a process
INIT_PROCESS Process was spawned by the init process
LOGIN_PROCESS Session leader of the logged-in user
DEAD_PROCESS Session leader has exited

The values BOOT_TIME, OLD_TIME, NEW_TIME, and INIT_PROCESS do not show up in INTERIX systems.

RETURN VALUE

Upon completing successfully, the functions getutxent(2), getutxid(2), and getutxline(2) return a pointer to a utmpx structure which contains a copy of the requested entry. The structure is in a static area which may be overwritten by subsequent calls. On failure, they return a null pointer.

Upon completing successfully, the function pututxline(2) returns a pointer to a utmpx structure containing the user information entered in the user database. On failure, it returns a null pointer.

The endutxent(2) and setutxent(2) functions return no value.

ERRORS

The pututxline(2) function may fail for this reason:

[EPERM]
The process does not have privileges to write to /var/adm/utmpx.

NOTES

This set of APIs is new to INTERIX with release 2.1. Programs written to use these APIs will not run on INTERIX 2.0 systems.

SEE ALSO

who(1)