summaryrefslogtreecommitdiffstats
path: root/man3/getutent.3
diff options
context:
space:
mode:
Diffstat (limited to 'man3/getutent.3')
-rw-r--r--man3/getutent.3355
1 files changed, 0 insertions, 355 deletions
diff --git a/man3/getutent.3 b/man3/getutent.3
deleted file mode 100644
index f55286f..0000000
--- a/man3/getutent.3
+++ /dev/null
@@ -1,355 +0,0 @@
-'\" t
-.\" Copyright 1995 Mark D. Roth (roth@uiuc.edu)
-.\"
-.\" SPDX-License-Identifier: GPL-2.0-or-later
-.\"
-.\" References consulted:
-.\" Linux libc source code
-.\" Solaris manpages
-.\"
-.\" Modified Thu Jul 25 14:43:46 MET DST 1996 by Michael Haardt
-.\" <michael@cantor.informatik.rwth-aachen.de>
-.\"
-.TH getutent 3 2023-10-31 "Linux man-pages 6.7"
-.SH NAME
-getutent, getutid, getutline, pututline, setutent, endutent,
-utmpname \- access utmp file entries
-.SH LIBRARY
-Standard C library
-.RI ( libc ", " \-lc )
-.SH SYNOPSIS
-.nf
-.B #include <utmp.h>
-.P
-.B struct utmp *getutent(void);
-.BI "struct utmp *getutid(const struct utmp *" ut );
-.BI "struct utmp *getutline(const struct utmp *" ut );
-.P
-.BI "struct utmp *pututline(const struct utmp *" ut );
-.P
-.B void setutent(void);
-.B void endutent(void);
-.P
-.BI "int utmpname(const char *" file );
-.fi
-.SH DESCRIPTION
-New applications should use the POSIX.1-specified "utmpx" versions of
-these functions; see STANDARDS.
-.P
-.BR utmpname ()
-sets the name of the utmp-format file for the other utmp
-functions to access.
-If
-.BR utmpname ()
-is not used to set the filename
-before the other functions are used, they assume \fB_PATH_UTMP\fP, as
-defined in \fI<paths.h>\fP.
-.P
-.BR setutent ()
-rewinds the file pointer to the beginning of the utmp file.
-It is generally a good idea to call it before any of the other
-functions.
-.P
-.BR endutent ()
-closes the utmp file.
-It should be called when the user
-code is done accessing the file with the other functions.
-.P
-.BR getutent ()
-reads a line from the current file position in the utmp file.
-It returns a pointer to a structure containing the fields of
-the line.
-The definition of this structure is shown in
-.BR utmp (5).
-.P
-.BR getutid ()
-searches forward from the current file position in the utmp
-file based upon \fIut\fP.
-If \fIut\->ut_type\fP is one of \fBRUN_LVL\fP,
-\fBBOOT_TIME\fP, \fBNEW_TIME\fP, or \fBOLD_TIME\fP,
-.BR getutid ()
-will
-find the first entry whose \fIut_type\fP field matches \fIut\->ut_type\fP.
-If \fIut\->ut_type\fP is one of \fBINIT_PROCESS\fP, \fBLOGIN_PROCESS\fP,
-\fBUSER_PROCESS\fP, or \fBDEAD_PROCESS\fP,
-.BR getutid ()
-will find the
-first entry whose
-.I ut_id
-field matches \fIut\->ut_id\fP.
-.P
-.BR getutline ()
-searches forward from the current file position in the utmp file.
-It scans entries whose
-.I ut_type
-is \fBUSER_PROCESS\fP
-or \fBLOGIN_PROCESS\fP and returns the first one whose
-.I ut_line
-field
-matches \fIut\->ut_line\fP.
-.P
-.BR pututline ()
-writes the
-.I utmp
-structure \fIut\fP into the utmp file.
-It uses
-.BR getutid ()
-to search for the proper place in the file to insert
-the new entry.
-If it cannot find an appropriate slot for \fIut\fP,
-.BR pututline ()
-will append the new entry to the end of the file.
-.SH RETURN VALUE
-.BR getutent (),
-.BR getutid (),
-and
-.BR getutline ()
-return a pointer to a \fIstruct utmp\fP on success,
-and NULL on failure (which includes the "record not found" case).
-This \fIstruct utmp\fP is allocated in static storage, and may be
-overwritten by subsequent calls.
-.P
-On success
-.BR pututline ()
-returns
-.IR ut ;
-on failure, it returns NULL.
-.P
-.BR utmpname ()
-returns 0 if the new name was successfully stored, or \-1 on failure.
-.P
-On failure, these functions
-.I errno
-set to indicate the error.
-.SH ERRORS
-.TP
-.B ENOMEM
-Out of memory.
-.TP
-.B ESRCH
-Record not found.
-.P
-.BR setutent (),
-.BR pututline (),
-and the
-.BR getut* ()
-functions can also fail for the reasons described in
-.BR open (2).
-.SH FILES
-.TP
-.I /var/run/utmp
-database of currently logged-in users
-.TP
-.I /var/log/wtmp
-database of past user logins
-.SH ATTRIBUTES
-For an explanation of the terms used in this section, see
-.BR attributes (7).
-.TS
-allbox;
-lb lb lbx
-l l l.
-Interface Attribute Value
-T{
-.na
-.nh
-.BR getutent ()
-T} Thread safety T{
-.na
-.nh
-MT-Unsafe init race:utent
-race:utentbuf sig:ALRM timer
-T}
-T{
-.na
-.nh
-.BR getutid (),
-.BR getutline ()
-T} Thread safety T{
-.na
-.nh
-MT-Unsafe init race:utent
-sig:ALRM timer
-T}
-T{
-.na
-.nh
-.BR pututline ()
-T} Thread safety T{
-.na
-.nh
-MT-Unsafe race:utent
-sig:ALRM timer
-T}
-T{
-.na
-.nh
-.BR setutent (),
-.BR endutent (),
-.BR utmpname ()
-T} Thread safety MT-Unsafe race:utent
-.TE
-.P
-In the above table,
-.I utent
-in
-.I race:utent
-signifies that if any of the functions
-.BR setutent (),
-.BR getutent (),
-.BR getutid (),
-.BR getutline (),
-.BR pututline (),
-.BR utmpname (),
-or
-.BR endutent ()
-are used in parallel in different threads of a program,
-then data races could occur.
-.SH STANDARDS
-None.
-.SH HISTORY
-XPG2, SVr4.
-.P
-In XPG2 and SVID 2 the function
-.BR pututline ()
-is documented to return void, and that is what it does on many systems
-(AIX, HP-UX).
-HP-UX introduces a new function
-.BR _pututline ()
-with the prototype given above for
-.BR pututline ().
-.P
-All these functions are obsolete now on non-Linux systems.
-POSIX.1-2001 and POSIX.1-2008, following SUSv1,
-does not have any of these functions, but instead uses
-.P
-.RS 4
-.EX
-.B #include <utmpx.h>
-.P
-.B struct utmpx *getutxent(void);
-.B struct utmpx *getutxid(const struct utmpx *);
-.B struct utmpx *getutxline(const struct utmpx *);
-.B struct utmpx *pututxline(const struct utmpx *);
-.B void setutxent(void);
-.B void endutxent(void);
-.EE
-.RE
-.P
-These functions are provided by glibc,
-and perform the same task as their equivalents without the "x", but use
-.IR "struct utmpx" ,
-defined on Linux to be the same as
-.IR "struct utmp" .
-For completeness, glibc also provides
-.BR utmpxname (),
-although this function is not specified by POSIX.1.
-.P
-On some other systems,
-the \fIutmpx\fP structure is a superset of the \fIutmp\fP structure,
-with additional fields, and larger versions of the existing fields,
-and parallel files are maintained, often
-.I /var/*/utmpx
-and
-.IR /var/*/wtmpx .
-.P
-Linux glibc on the other hand does not use a parallel \fIutmpx\fP file
-since its \fIutmp\fP structure is already large enough.
-The "x" functions listed above are just aliases for
-their counterparts without the "x" (e.g.,
-.BR getutxent ()
-is an alias for
-.BR getutent ()).
-.SH NOTES
-.SS glibc notes
-The above functions are not thread-safe.
-glibc adds reentrant versions
-.P
-.nf
-.B #include <utmp.h>
-.P
-.BI "int getutent_r(struct utmp *" ubuf ", struct utmp **" ubufp );
-.BI "int getutid_r(struct utmp *" ut ,
-.BI " struct utmp *" ubuf ", struct utmp **" ubufp );
-.BI "int getutline_r(struct utmp *" ut ,
-.BI " struct utmp *" ubuf ", struct utmp **" ubufp );
-.fi
-.P
-Feature Test Macro Requirements for glibc (see
-.BR feature_test_macros (7)):
-.P
-.BR getutent_r (),
-.BR getutid_r (),
-.BR getutline_r ():
-.nf
- _GNU_SOURCE
- || /* Since glibc 2.19: */ _DEFAULT_SOURCE
- || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE
-.fi
-.P
-These functions are GNU extensions, analogs of the functions of the
-same name without the _r suffix.
-The
-.I ubuf
-argument gives these functions a place to store their result.
-On success, they return 0, and a pointer to the result is written in
-.IR *ubufp .
-On error, these functions return \-1.
-There are no utmpx equivalents of the above functions.
-(POSIX.1 does not specify such functions.)
-.SH EXAMPLES
-The following example adds and removes a utmp record, assuming it is run
-from within a pseudo terminal.
-For usage in a real application, you
-should check the return values of
-.BR getpwuid (3)
-and
-.BR ttyname (3).
-.P
-.\" SRC BEGIN (getutent.c)
-.EX
-#include <pwd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include <unistd.h>
-#include <utmp.h>
-\&
-int
-main(void)
-{
- struct utmp entry;
-\&
- system("echo before adding entry:;who");
-\&
- entry.ut_type = USER_PROCESS;
- entry.ut_pid = getpid();
- strcpy(entry.ut_line, ttyname(STDIN_FILENO) + strlen("/dev/"));
- /* only correct for ptys named /dev/tty[pqr][0\-9a\-z] */
- strcpy(entry.ut_id, ttyname(STDIN_FILENO) + strlen("/dev/tty"));
- entry.ut_time = time(NULL);
- strcpy(entry.ut_user, getpwuid(getuid())\->pw_name);
- memset(entry.ut_host, 0, UT_HOSTSIZE);
- entry.ut_addr = 0;
- setutent();
- pututline(&entry);
-\&
- system("echo after adding entry:;who");
-\&
- entry.ut_type = DEAD_PROCESS;
- memset(entry.ut_line, 0, UT_LINESIZE);
- entry.ut_time = 0;
- memset(entry.ut_user, 0, UT_NAMESIZE);
- setutent();
- pututline(&entry);
-\&
- system("echo after removing entry:;who");
-\&
- endutent();
- exit(EXIT_SUCCESS);
-}
-.EE
-.\" SRC END
-.SH SEE ALSO
-.BR getutmp (3),
-.BR utmp (5)