Annotation of 42BSD/lib/libc/gen/getpwent.c, revision 1.1

1.1     ! root        1: /* @(#)getpwent.c      4.1 (Berkeley) 12/21/80 */
        !             2: #include <stdio.h>
        !             3: #include <pwd.h>
        !             4: 
        !             5: static char PASSWD[]   = "/etc/passwd";
        !             6: static char EMPTY[] = "";
        !             7: static FILE *pwf = NULL;
        !             8: static char line[BUFSIZ+1];
        !             9: static struct passwd passwd;
        !            10: 
        !            11: setpwent()
        !            12: {
        !            13:        if( pwf == NULL )
        !            14:                pwf = fopen( PASSWD, "r" );
        !            15:        else
        !            16:                rewind( pwf );
        !            17: }
        !            18: 
        !            19: endpwent()
        !            20: {
        !            21:        if( pwf != NULL ){
        !            22:                fclose( pwf );
        !            23:                pwf = NULL;
        !            24:        }
        !            25: }
        !            26: 
        !            27: static char *
        !            28: pwskip(p)
        !            29: register char *p;
        !            30: {
        !            31:        while( *p && *p != ':' )
        !            32:                ++p;
        !            33:        if( *p ) *p++ = 0;
        !            34:        return(p);
        !            35: }
        !            36: 
        !            37: struct passwd *
        !            38: getpwent()
        !            39: {
        !            40:        register char *p;
        !            41: 
        !            42:        if (pwf == NULL) {
        !            43:                if( (pwf = fopen( PASSWD, "r" )) == NULL )
        !            44:                        return(0);
        !            45:        }
        !            46:        p = fgets(line, BUFSIZ, pwf);
        !            47:        if (p==NULL)
        !            48:                return(0);
        !            49:        passwd.pw_name = p;
        !            50:        p = pwskip(p);
        !            51:        passwd.pw_passwd = p;
        !            52:        p = pwskip(p);
        !            53:        passwd.pw_uid = atoi(p);
        !            54:        p = pwskip(p);
        !            55:        passwd.pw_gid = atoi(p);
        !            56:        passwd.pw_quota = 0;
        !            57:        passwd.pw_comment = EMPTY;
        !            58:        p = pwskip(p);
        !            59:        passwd.pw_gecos = p;
        !            60:        p = pwskip(p);
        !            61:        passwd.pw_dir = p;
        !            62:        p = pwskip(p);
        !            63:        passwd.pw_shell = p;
        !            64:        while(*p && *p != '\n') p++;
        !            65:        *p = '\0';
        !            66:        return(&passwd);
        !            67: }

unix.superglobalmegacorp.com

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