getpwent(3p) - phpMan

ENDPWENT(3P)               POSIX Programmer's Manual              ENDPWENT(3P)

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.
NAME
       endpwent, getpwent, setpwent - user database functions
SYNOPSIS
       #include <pwd.h>
       void endpwent(void);
       struct passwd *getpwent(void);
       void setpwent(void);

DESCRIPTION
       These functions shall retrieve information about users.
       The getpwent() function shall return a pointer to a structure  contain-
       ing  the broken-out fields of an entry in the user database. Each entry
       in the user database contains a passwd structure.  When  first  called,
       getpwent()  shall return a pointer to a passwd structure containing the
       first entry in the user database. Thereafter, it shall return a pointer
       to  a  passwd structure containing the next entry in the user database.
       Successive calls can be used to search the entire user database.
       If an end-of-file or an error is  encountered  on  reading,  getpwent()
       shall return a null pointer.
       An  implementation  that provides extended security controls may impose
       further implementation-defined restrictions on accessing the user data-
       base.  In  particular, the system may deny the existence of some or all
       of the user database entries associated with users other than the call-
       er.
       The  setpwent() function effectively rewinds the user database to allow
       repeated searches.
       The endpwent() function may be called to close the user  database  when
       processing is complete.
       These  functions need not be reentrant. A function that is not required
       to be reentrant is not required to be thread-safe.
RETURN VALUE
       The getpwent() function shall return a null pointer on  end-of-file  or
       error.
ERRORS
       The getpwent(), setpwent(), and endpwent() functions may fail if:
       EIO    An I/O error has occurred.

       In addition, getpwent() and setpwent() may fail if:
       EMFILE {OPEN_MAX}  file  descriptors  are currently open in the calling
              process.
       ENFILE The maximum allowable number of files is currently open  in  the
              system.

       The  return  value may point to a static area which is overwritten by a
       subsequent call to getpwuid(), getpwnam(), or getpwent().
       The following sections are informative.
EXAMPLES
   Searching the User Database
       The following example uses the getpwent() function  to  get  successive
       entries in the user database, returning a pointer to a passwd structure
       that contains information about each  user.   The  call  to  endpwent()
       closes the user database and cleans up.

              #include <pwd.h>
              ...
              struct passwd *p;
              ...
              while ((p = getpwent ()) != NULL) {
              ...
              }

              endpwent();
              ...
APPLICATION USAGE
       These  functions  are  provided due to their historical usage. Applica-
       tions 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 getpwuid() whenever
       possible because it avoids these dependencies.
RATIONALE
       None.
FUTURE DIRECTIONS
       None.
SEE ALSO
       endgrent(),  getlogin(),  getpwnam(),  getpwuid(), the Base Definitions
       volume of IEEE Std 1003.1-2001, <pwd.h>
COPYRIGHT
       Portions of this text are reprinted and reproduced in  electronic  form
       from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
       -- Portable Operating System Interface (POSIX),  The  Open  Group  Base
       Specifications  Issue  6,  Copyright  (C) 2001-2003 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 .

IEEE/The Open Group                  2003                         ENDPWENT(3P)