Provided by: manpages-posix-dev_2.16-1_all bug

NAME

       getpwnam, getpwnam_r - search user database for a name

SYNOPSIS

       #include <pwd.h>

       struct passwd *getpwnam(const char *name);

       int getpwnam_r(const char *name, struct passwd *pwd, char *buffer,
              size_t bufsize, struct passwd **result);

DESCRIPTION

       The getpwnam() function shall search the user database for an entry with a matching name.

       The  getpwnam()  function  need  not  be  reentrant. A function that is not required to be
       reentrant is not required to be thread-safe.

       Applications wishing to check for error situations should set errno to  0  before  calling
       getpwnam(). If getpwnam() returns a null pointer and errno is non-zero, an error occurred.

       The  getpwnam_r() function shall update the passwd structure pointed to by pwd and store a
       pointer to that structure at the location  pointed  to  by  result.  The  structure  shall
       contain  an  entry  from the user database with a matching name. Storage referenced by the
       structure is allocated from the memory  provided  with  the  buffer  parameter,  which  is
       bufsize  bytes in size. The maximum size needed for this buffer can be determined with the
       {_SC_GETPW_R_SIZE_MAX} sysconf() parameter. A  NULL  pointer  shall  be  returned  at  the
       location pointed to by result on error or if the requested entry is not found.

RETURN VALUE

       The  getpwnam()  function  shall return a pointer to a struct passwd with the structure as
       defined in <pwd.h> with a matching entry if found. A null pointer shall be returned if the
       requested entry is not found, or an error occurs. On error, errno shall be set to indicate
       the error.

       The return value may point to a static area which is overwritten by a subsequent  call  to
       getpwent(), getpwnam(), or getpwuid().

       If  successful,  the  getpwnam_r()  function shall return zero; otherwise, an error number
       shall be returned to indicate the error.

ERRORS

       The getpwnam() and getpwnam_r() functions may fail if:

       EIO    An I/O error has occurred.

       EINTR  A signal was caught during getpwnam().

       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 getpwnam_r() function may fail if:

       ERANGE Insufficient storage was supplied via buffer and bufsize to contain the data to  be
              referenced by the resulting passwd structure.

       The following sections are informative.

EXAMPLES

   Getting an Entry for the Login Name
       The  following  example  uses  the  getlogin() function to return the name of the user who
       logged in; this information is passed to the getpwnam() function to get the user  database
       entry for that user.

              #include <sys/types.h>
              #include <pwd.h>
              #include <unistd.h>
              #include <stdio.h>
              #include <stdlib.h>
              ...
              char *lgn;
              struct passwd *pw;
              ...
              if ((lgn = getlogin()) == NULL || (pw = getpwnam(lgn)) == NULL) {
                  fprintf(stderr, "Get of user information failed.\n"); exit(1);
              }
              ...

APPLICATION USAGE

       Three  names  associated  with the current process can be determined: getpwuid( geteuid())
       returns the name associated with the effective user ID of the process; getlogin()  returns
       the  name  associated with the current login activity; and getpwuid( getuid()) returns the
       name associated with the real user ID of the process.

       The getpwnam_r() function is thread-safe and returns  values  in  a  user-supplied  buffer
       instead of possibly using a static data area that may be overwritten by each call.

RATIONALE

       None.

FUTURE DIRECTIONS

       None.

SEE ALSO

       getpwuid()  ,  the  Base  Definitions volume of IEEE Std 1003.1-2001, <limits.h>, <pwd.h>,
       <sys/types.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 .