GETPWENT(3)

NAME
getpwent, getpwuid, getpwnam, setpwent, endpwent, setpwfile, fgetpwent - get password file entry

SYNOPSIS
#include <pwd.h>

struct passwd *getpwuid(uid)
int uid;

struct passwd *getpwnam(name)
char *name;

struct passwd *getpwent()

setpwent()

endpwent()

setpwfile(name)
char *name;

struct passwd *fgetpwent(f)
FILE *f;

DESCRIPTION
Getpwent, getpwuid and getpwnam each return a pointer to an object with the following structure containing the broken-out fields of a line in the password file.

    struct	passwd { /* see getpwent(3) */
    	char	*pw_name;
    	char	*pw_passwd;
    	union { uid_t	_uid; int	_pad1; } _uid;
    	union { gid_t	_gid; int	_pad2; } _gid;
    	int	pw_quota;
    	char	*pw_comment;
    	char	*pw_gecos;
    	char	*pw_dir;
    	char	*pw_shell;
    };
    #define	pw_uid	_uid._uid
    #define	pw_gid	_gid._gid

The fields pw_quota and pw_comment are unused; the others have meanings described in passwd(5).

Searching of the password file is done using the ndbm database access routines. Setpwent opens the database; endpwent closes it. Getpwuid and getpwnam search the database (opening it if necessary) for a matching uid or name. EOF is returned if there is no entry.

For programs wishing to read the entire database, getpwent reads the next line (opening the database if necessary). In addition to opening the database, setpwent can be used to make getpwent begin its search from the beginning of the database.

Setpwfile changes the default password file to name thus allowing alternate password files to be used. Note that it does not close the previous file. If this is desired, endpwent should be called prior to it.

Fgetpwent returns a pointer to the next passwd structure in the stream f, which matches the format of the password file /etc/passwd.

FILES
/etc/passwd

SEE ALSO
getlogin(3), getgrent(3), passwd(5), ypserv(8)

DIAGNOSTICS
The routines getpwent, getpwuid, and getpwnam, return a null pointer (0) on EOF or error.

BUGS
All information is contained in a static area so it must be copied if it is to be saved.