Annotation of 43BSDReno/lib/libc/gen/getpwent.3, revision 1.1

1.1     ! root        1: .\" Copyright (c) 1988 The Regents of the University of California.
        !             2: .\" All rights reserved.
        !             3: .\"
        !             4: .\" Redistribution and use in source and binary forms are permitted provided
        !             5: .\" that: (1) source distributions retain this entire copyright notice and
        !             6: .\" comment, and (2) distributions including binaries display the following
        !             7: .\" acknowledgement:  ``This product includes software developed by the
        !             8: .\" University of California, Berkeley and its contributors'' in the
        !             9: .\" documentation or other materials provided with the distribution and in
        !            10: .\" all advertising materials mentioning features or use of this software.
        !            11: .\" Neither the name of the University nor the names of its contributors may
        !            12: .\" be used to endorse or promote products derived from this software without
        !            13: .\" specific prior written permission.
        !            14: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
        !            15: .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
        !            16: .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
        !            17: .\"
        !            18: .\"    @(#)getpwent.3  6.6 (Berkeley) 6/23/90
        !            19: .\"
        !            20: .TH GETPWENT 3  "June 23, 1990"
        !            21: .AT 3
        !            22: .SH NAME
        !            23: getpwent, getpwnam, getpwuid, setpassent,
        !            24: setpwfile, setpwent, endpwent \- get password file entries
        !            25: .SH SYNOPSIS
        !            26: .nf
        !            27: .B #include <sys/types.h>
        !            28: .B #include <pwd.h>
        !            29: .PP
        !            30: .B struct passwd *getpwent()
        !            31: .PP
        !            32: .B struct passwd *getpwnam(login)
        !            33: .B char *login;
        !            34: .PP
        !            35: .B struct passwd *getpwuid(uid)
        !            36: .B uid_t uid;
        !            37: .PP
        !            38: .B int setpassent(stayopen)
        !            39: .B int stayopen;
        !            40: .PP
        !            41: .B void setpwfile(file)
        !            42: .B char *file;
        !            43: .PP
        !            44: .B int setpwent()
        !            45: .PP
        !            46: .B void endpwent()
        !            47: .fi
        !            48: .SH DESCRIPTION
        !            49: .IR Getpwent ,
        !            50: .IR getpwuid ,
        !            51: and
        !            52: .I getpwnam
        !            53: each return a pointer to a structure containing the broken-out
        !            54: fields of a line in the password file.  This structure is defined
        !            55: by the include file
        !            56: .IR < pwd.h > ,
        !            57: and contains the following fields:
        !            58: .PP
        !            59: .RS
        !            60: .nf
        !            61: struct passwd {
        !            62:        char    *pw_name;                       /* user name */
        !            63:        char    *pw_passwd;             /* encrypted password */
        !            64:        uid_t   pw_uid;         /* user uid */
        !            65:        gid_t   pw_gid;         /* user gid */
        !            66:        time_t  pw_change;      /* password change time */
        !            67:        char    *pw_class;              /* user access class */
        !            68:        char    *pw_gecos;              /* Honeywell login info */
        !            69:        char    *pw_dir;                        /* home directory */
        !            70:        char    *pw_shell;              /* default shell */
        !            71:        time_t  pw_expire;      /* account expiration */
        !            72: };
        !            73: .fi
        !            74: .RE
        !            75: .PP
        !            76: These fields are more completely described in
        !            77: .IR passwd (5).
        !            78: .PP
        !            79: .I Getpwnam
        !            80: and
        !            81: .I getpwuid
        !            82: search the password database for a matching user name or user uid,
        !            83: respectively, returning the first one encountered.  Identical
        !            84: user names or user uids may result in undefined behavior.
        !            85: .PP
        !            86: .I Getpwent
        !            87: sequentially reads the password database and is intended for programs
        !            88: that wish to step through the complete list of users.
        !            89: .PP
        !            90: All three routines will open the password file for reading, if
        !            91: necessary.
        !            92: .PP
        !            93: .I Setpwfile
        !            94: changes the default password file to
        !            95: .IR file ,
        !            96: thus allowing the use of alternate password files.
        !            97: .PP
        !            98: .I Setpassent
        !            99: opens the file or rewinds it if it is already open.  If
        !           100: .I stayopen
        !           101: is non-zero, file descriptors are left open, significantly speeding
        !           102: up subsequent calls.  This functionality is unnecessary for
        !           103: .I getpwent
        !           104: as it doesn't close its file descriptors by default.  It should also
        !           105: be noted that it is dangerous for long-running programs to use this
        !           106: functionality as the password file may be updated by
        !           107: .IR chpass (1),
        !           108: .IR passwd (1),
        !           109: or
        !           110: .IR vipw (8).
        !           111: .PP
        !           112: .I Setpwent
        !           113: is identical to
        !           114: .I setpassent
        !           115: with an argument of zero.
        !           116: .PP
        !           117: .I Endpwent
        !           118: closes any open files.
        !           119: .PP
        !           120: These routines have been written to ``shadow'' the password file, e.g.
        !           121: allow only certain programs to have access to the encrypted password.
        !           122: This is done by using the
        !           123: .IR mkpasswd (8)
        !           124: program, which creates
        !           125: .IR ndbm (3)
        !           126: databases that correspond to the password file, with the single exception
        !           127: that, rather than storing the encrypted password in the database, it stores
        !           128: the offset in the password file where the encrypted password may be found.
        !           129: .IR Getpwent ,
        !           130: .IR getpwnam ,
        !           131: and
        !           132: .I getpwuid
        !           133: will use the
        !           134: .I ndbm
        !           135: files in preference to the ``real'' password files, only reading the
        !           136: password file itself, to obtain the encrypted password, if the process
        !           137: is running with an effective user id equivalent to super-user.
        !           138: If the password file itself is protected, and the
        !           139: .I ndbm
        !           140: files are not, this makes the password available only to programs
        !           141: running with super-user privileges.
        !           142: .SH FILES
        !           143: /etc/passwd
        !           144: .SH "SEE ALSO"
        !           145: getlogin(3), getgrent(3), ndbm(3), passwd(5)
        !           146: .SH DIAGNOSTICS
        !           147: The routines
        !           148: .IR getpwent ,
        !           149: .IR getpwnam ,
        !           150: and
        !           151: .IR getpwuid ,
        !           152: return a null pointer on EOF or error.
        !           153: .I Setpassent
        !           154: and
        !           155: .I setpwent
        !           156: return 0 on failure and 1 on success.
        !           157: .I Endpwent
        !           158: and
        !           159: .I setpwfile
        !           160: have no return value.
        !           161: .SH BUGS
        !           162: All information is contained in a static buffer which is overwritten
        !           163: by each new call.  It must be copied elsewhere to be retained.
        !           164: .PP
        !           165: Intermixing calls to
        !           166: .IR getpwent
        !           167: with calls to
        !           168: .I getpwnam
        !           169: or
        !           170: .IR getpwuid ,
        !           171: or intermixing calls to
        !           172: .I getpwnam
        !           173: and
        !           174: .IR getpwuid ,
        !           175: after using
        !           176: .I setpassent
        !           177: to require that file descriptors be left open, may result
        !           178: in undefined behavior.
        !           179: .PP
        !           180: The routines
        !           181: .IR getpwent ,
        !           182: .IR endpwent ,
        !           183: .IR setpassent ,
        !           184: and
        !           185: .IR setpwent
        !           186: are fairly useless in a networked environment and should be
        !           187: avoided, if possible.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.