COHERENT manpages

This page displays the COHERENT manpage for getpwent() [Get password file information].

List of available manpages
Index


getpwent() -- General Function (libc)

Get password file information
#include <pwd.h>
struct passwd *getpwent()

The COHERENT  system has  five routines  that search the  file /etc/passwd,
which contains  information about every  user of the  system.  The returned
structure passwd is defined in the  header file pwd.h. For a description of
this structure, see pwd.h.

getpwent() returns the next entry from /etc/passwd.

Example

The  following  example  demonstrates getpwent(),  getpwnam(),  getpwuid(),
setpwent(), and endpwent().

#include    <pwd.h>
#include    <stdio.h>
#include    <unistd.h>

main()
{
     int euid,           /* Effective user id */
         ruid;           /* Real user id */
     struct passwd *pstp;
     int i;

     /* Print out all users and home directories */
     i = 0;
     setpwent();         /* Rewind file /etc/passwd */
     while ((pstp = getpwent()) != NULL)
          printf("%d: user name is %s, home directory is %s.\n",
                  ++i, pstp->pw_name, pstp->pw_dir);

     /* Find real user name.
      * NOTE: functions getpwuid and getpwnam rewind /etc/passwd
      * by calling setpwent().
      */
     ruid = getuid();
     if ((pstp = getpwuid(ruid)) == NULL) {
          /* If this message appears, something's wrong */
          fprintf(stderr, "Cannot find user with id number %d\n", pstp);
          exit (EXIT_FAILURE);
     } else
          printf("User's real name is %s\n", pstp->pw_name);

     /* Find the user id for superuser root */
     ((pstp = getpwnam("root")) == NULL) ?
          fprintf(stderr, "Do you have user root on your system?\n") :
          printf("root id is  %d\n", pstp->pw_uid);

     /* Check if the effective process id is the superuser id.
      *
      * NOTE: if you wish to see how to enable the root
      * privileges, you can run this command:
      * cc pwfun.c
      * su root chown root pwfun
      * su root chmod 4511 pwfun
      */

     euid = geteuid();   /* Get effective user id. */
     printf("Process ");
     (euid == pstp->pw_uid) ? printf("has ") : printf("doesn't have ");
     printf("the root privileges\n");
     exit(EXIT_SUCCESS);
}

Files

/etc/passwd
pwd.h

See Also

endpwent(),
getpwnam(),
getpwuid(),
libc,
pwd.h,
setpwent()

Diagnostics

getpwent() returns NULL for any error or on end of file.

Notes

All structures  and information  returned are  in static areas  internal to
getpwent(). Therefore,  information from a previous  call is overwritten by
each subsequent call.

If your  system has implemented shadow passwords, you  must use the shadow-
password  routine getspent()  to retrieve  records that  contain passwords.
For details, see this function's entry in the Lexicon.