endpwent.3p (5571B)
- '\" et
- .TH ENDPWENT "3P" 2017 "IEEE/The Open Group" "POSIX Programmer's Manual"
- .\"
- .SH PROLOG
- This manual page is part of the POSIX Programmer's Manual.
- The Linux implementation of this interface may differ (consult
- the corresponding Linux manual page for details of Linux behavior),
- or the interface may not be implemented on Linux.
- .\"
- .SH NAME
- endpwent,
- getpwent,
- setpwent
- \(em user database functions
- .SH SYNOPSIS
- .LP
- .nf
- #include <pwd.h>
- .P
- void endpwent(void);
- struct passwd *getpwent(void);
- void setpwent(void);
- .fi
- .SH DESCRIPTION
- These functions shall retrieve information about users.
- .P
- The
- \fIgetpwent\fR()
- function shall return a pointer to a structure containing the broken-out
- fields of an entry in the user database. Each entry in the user
- database contains a
- .BR passwd
- structure. If the user database is not already open,
- \fIgetpwent\fR()
- shall open it and return a pointer to a
- .BR passwd
- structure containing the first entry in the database. Thereafter,
- it shall return a pointer to a
- .BR passwd
- structure containing the next entry in the user database. Successive
- calls can be used to search the entire user database.
- .P
- If an end-of-file or an error is encountered on reading,
- \fIgetpwent\fR()
- shall return a null pointer.
- .P
- An implementation that provides extended security controls may impose
- further implementation-defined restrictions on accessing the user
- database. In particular, the system may deny the existence of some or
- all of the user database entries associated with users other than the
- caller.
- .P
- The
- \fIsetpwent\fR()
- function shall rewind the user database so that the next
- \fIgetpwent\fR()
- call returns the first entry, allowing repeated searches.
- .P
- The
- \fIendpwent\fR()
- function shall close the user database.
- .P
- The
- \fIsetpwent\fR()
- and
- \fIendpwent\fR()
- functions shall not change the setting of
- .IR errno
- if successful.
- .P
- On error, the
- \fIsetpwent\fR()
- and
- \fIendpwent\fR()
- functions shall set
- .IR errno
- to indicate the error.
- .P
- Since no value is returned by the
- \fIsetpwent\fR()
- and
- \fIendpwent\fR()
- functions, an application wishing to check for error situations
- should set
- .IR errno
- to 0, then call the function, then check
- .IR errno .
- .P
- These functions need not be thread-safe.
- .SH "RETURN VALUE"
- On successful completion,
- \fIgetpwent\fR()
- shall return a pointer to a
- .BR passwd
- structure. On end-of-file,
- \fIgetpwent\fR()
- shall return a null pointer and shall not change the setting of
- .IR errno .
- On error,
- \fIgetpwent\fR()
- shall return a null pointer and
- .IR errno
- shall be set to indicate the error.
- .P
- The application shall not modify the structure to which the return
- value points, nor any storage areas pointed to by pointers within the
- structure. The returned pointer, and pointers within the structure,
- might be invalidated or the structure or the storage areas might be
- overwritten by a subsequent call to
- \fIgetpwuid\fR(),
- \fIgetpwnam\fR(),
- or
- \fIgetpwent\fR().
- The returned pointer, and pointers within the structure, might also
- be invalidated if the calling thread is terminated.
- .SH ERRORS
- These functions may fail if:
- .TP
- .BR EINTR
- A signal was caught during the operation.
- .TP
- .BR EIO
- An I/O error has occurred.
- .P
- In addition,
- \fIgetpwent\fR()
- and
- \fIsetpwent\fR()
- may fail if:
- .TP
- .BR EMFILE
- All file descriptors available to the process are currently open.
- .TP
- .BR ENFILE
- The maximum allowable number of files is currently open in the system.
- .LP
- .IR "The following sections are informative."
- .SH EXAMPLES
- .SS "Searching the User Database"
- .P
- The following example uses the
- \fIgetpwent\fR()
- function to get successive entries in the user database, returning a
- pointer to a
- .BR passwd
- structure that contains information about each user. The call to
- \fIendpwent\fR()
- closes the user database and cleans up.
- .sp
- .RS 4
- .nf
- #include <pwd.h>
- #include <stdio.h>
- .P
- void printname(uid_t uid)
- {
- struct passwd *pwd;
- .P
- setpwent();
- while((pwd = getpwent()) != NULL) {
- if (pwd->pw_uid == uid) {
- printf("name=%s\en",pwd->pw_name);
- break;
- }
- }
- endpwent();
- }
- .fi
- .P
- .RE
- .SH "APPLICATION USAGE"
- These functions are provided due to their historical usage.
- Applications should avoid dependencies on fields in the password
- database, whether the database is a single file, or where in the
- file system name space the database resides. Applications should use
- \fIgetpwuid\fR()
- whenever possible because it avoids these dependencies.
- .SH RATIONALE
- None.
- .SH "FUTURE DIRECTIONS"
- None.
- .SH "SEE ALSO"
- .IR "\fIendgrent\fR\^(\|)",
- .IR "\fIgetlogin\fR\^(\|)",
- .IR "\fIgetpwnam\fR\^(\|)",
- .IR "\fIgetpwuid\fR\^(\|)"
- .P
- The Base Definitions volume of POSIX.1\(hy2017,
- .IR "\fB<pwd.h>\fP"
- .\"
- .SH COPYRIGHT
- Portions of this text are reprinted and reproduced in electronic form
- from IEEE Std 1003.1-2017, Standard for Information Technology
- -- Portable Operating System Interface (POSIX), The Open Group Base
- Specifications Issue 7, 2018 Edition,
- Copyright (C) 2018 by the Institute of
- Electrical and Electronics Engineers, Inc and The Open Group.
- In the event of any discrepancy between this version and the original IEEE and
- The Open Group Standard, the original IEEE and The Open Group Standard
- is the referee document. The original Standard can be obtained online at
- http://www.opengroup.org/unix/online.html .
- .PP
- Any typographical or formatting errors that appear
- in this page are most likely
- to have been introduced during the conversion of the source files to
- man page format. To report such errors, see
- https://www.kernel.org/doc/man-pages/reporting_bugs.html .