Man Linux: Main Page and Category List

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
       containing 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
       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.

       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.
       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
       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 .