# 2.11BSD#431 - /usr/src/lib/libc/gen/getpwent.c

##### Functions

    endpwent          X
    getpwent          X
    getpwnam          X
    getpwuid          X
    setpassent        X
    setpwent          X
    setpwfile         X

##### Macros

    EXPAND            X
    MAXLINELENGTH     X

       1: /*
       2:  * Copyright (c) 1988 The Regents of the University of California.
       3:  * All rights reserved.
       4:  *
       5:  * Redistribution and use in source and binary forms are permitted
       6:  * provided that the above copyright notice and this paragraph are
       7:  * duplicated in all such forms and that any documentation,
       8:  * advertising materials, and other materials related to such
       9:  * distribution and use acknowledge that the software was developed
      10:  * by the University of California, Berkeley.  The name of the
      11:  * University may not be used to endorse or promote products derived
      12:  * from this software without specific prior written permission.
      13:  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
      14:  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
      15:  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
      16:  */
      17:
      18: #if defined(LIBC_SCCS) && !defined(lint)
      19: static char sccsid[] = "@(#)getpwent.c	5.9.1 (2.11BSD) 1996/1/12";
      20: #endif /* LIBC_SCCS and not lint */
      21:
      22: #include <sys/types.h>
      23: #include <string.h>
      24: #include <stdlib.h>
      25: #include <sys/file.h>
      26: #include <stdio.h>
      27: #include <pwd.h>
      28: #include <ndbm.h>
      29:
      30: static DBM *_pw_db;
      31: static FILE *_pw_fp;
      32: static struct passwd _pw_passwd;
      33: static int _pw_rewind = 1, _pw_stayopen;
      34: static char _pw_flag, *_pw_file = _PATH_PASSWD;
      35:
      36: #define MAXLINELENGTH   256
      37: static char line[MAXLINELENGTH];
      38:
      39: struct passwd *
      40: getpwent()
      41: {
      42:     datum key;
      43:     register int rval;
      44:
      45:     if (!_pw_db && !_pw_fp && !start_pw())
      46:         return((struct passwd *)NULL);
      47:     do {
      48:         if (_pw_db) {
      49:             key.dptr = NULL;
      50:             rval = fetch_pw(key);
      51:         } else /* _pw_fp */
      52:             rval = scanpw();
      53:     } while (rval && _pw_flag != _PW_KEYBYNAME);
      54:     if (rval)
      55:         getpw();
      56:     return(rval ? &_pw_passwd : (struct passwd *)NULL);
      57: }
      58:
      59: struct passwd *
      60: getpwnam(nam)
      61:     char *nam;
      62: {
      63:     register int rval;
      64:
      65:     if (!start_pw())
      66:         return((struct passwd *)NULL);
      67:     if (_pw_db) {
      68:         datum key;
      69:
      70:         key.dptr = nam;
      71:         key.dsize = strlen(nam);
      72:         rval = fetch_pw(key);
      73:     } else /* _pw_fp */
      74:         for (rval = 0; scanpw();)
      75:             if (!strcmp(nam, _pw_passwd.pw_name)) {
      76:                 rval = 1;
      77:                 break;
      78:             }
      79:     if (!_pw_stayopen)
      80:         endpwent();
      81:     if (rval)
      82:         getpw();
      83:     return(rval ? &_pw_passwd : (struct passwd *)NULL);
      84: }
      85:
      86: struct passwd *
      87: getpwuid(uid)
      88:     int uid;
      89: {
      90:     register int rval;
      91:
      92:     if (!start_pw())
      93:         return((struct passwd *)NULL);
      94:     if (_pw_db) {
      95:         datum key;
      96:
      97:         key.dptr = (char *)&uid;
      98:         key.dsize = sizeof(uid);
      99:         rval = fetch_pw(key);
     100:     } else /* _pw_fp */
     101:         for (rval = 0; scanpw();)
     102:             if (_pw_passwd.pw_uid == uid) {
     103:                 rval = 1;
     104:                 break;
     105:             }
     106:     if (!_pw_stayopen)
     107:         endpwent();
     108:     if (rval)
     109:         getpw();
     110:     return(rval ? &_pw_passwd : (struct passwd *)NULL);
     111: }
     112:
     113: static
     114: start_pw()
     115: {
     116:     register char *p;
     117:
     118:     if (_pw_db) {
     119:         _pw_rewind = 1;
     120:         return(1);
     121:     }
     122:     if (_pw_fp) {
     123:         rewind(_pw_fp);
     124:         return(1);
     125:     }
     126:     if (_pw_db = dbm_open(_pw_file, O_RDONLY, 0)) {
     127:         _pw_rewind = 1;
     128:         return(1);
     129:     }
     130:     /*
     131: 	 * special case; if it's the official password file, look in
     132: 	 * the master password file, otherwise, look in the file itself.
     133: 	 */
     134:     p = strcmp(_pw_file, _PATH_PASSWD) ? _pw_file : _PATH_MASTERPASSWD;
     135:     if (_pw_fp = fopen(p, "r"))
     136:         return(1);
     137:     return(0);
     138: }
     139:
     140: setpwent()
     141: {
     142:     return(setpassent(0));
     143: }
     144:
     145: setpassent(stayopen)
     146:     int stayopen;
     147: {
     148:     if (!start_pw())
     149:         return(0);
     150:     _pw_stayopen = stayopen;
     151:     return(1);
     152: }
     153:
     154: void
     155: endpwent()
     156: {
     157:     if (_pw_db) {
     158:         dbm_close(_pw_db);
     159:         _pw_db = (DBM *)NULL;
     160:     } else if (_pw_fp) {
     161:         (void)fclose(_pw_fp);
     162:         _pw_fp = (FILE *)NULL;
     163:     }
     164: }
     165:
     166: void
     167: setpwfile(file)
     168:     char *file;
     169: {
     170:     _pw_file = file;
     171: }
     172:
     173: static
     174: scanpw()
     175: {
     176:     register char *cp;
     177:     char    *bp = line;
     178:     register int ch;
     179:
     180:     for (;;) {
     181:         if (!(fgets(line, sizeof(line), _pw_fp)))
     182:             return(0);
     183:         /* skip lines that are too big */
     184:         if (!(cp = index(line, '\n'))) {
     185:             while ((ch = fgetc(_pw_fp)) != '\n' && ch != EOF)
     186:                 ;
     187:             continue;
     188:         }
     189:         *cp = '\0';
     190:         _pw_passwd.pw_name = strsep(&bp, ":");
     191:         _pw_passwd.pw_passwd = strsep(&bp, ":");
     192:         if (!(cp = strsep(&bp, ":")))
     193:             continue;
     194:         _pw_passwd.pw_uid = atoi(cp);
     195:         if (!(cp = strsep(&bp, ":")))
     196:             continue;
     197:         _pw_passwd.pw_gid = atoi(cp);
     198:         _pw_passwd.pw_class = strsep(&bp, ":");
     199:         if (!(cp = strsep(&bp, ":")))
     200:             continue;
     201:         _pw_passwd.pw_change = atol(cp);
     202:         if (!(cp = strsep(&bp, ":")))
     203:             continue;
     204:         _pw_passwd.pw_expire = atol(cp);
     205:         _pw_passwd.pw_gecos = strsep(&bp, ":");
     206:         _pw_passwd.pw_dir = strsep(&bp, ":");
     207:         _pw_passwd.pw_shell = strsep(&bp, ":");
     208:         if (!_pw_passwd.pw_shell)
     209:             continue;
     210:         return(1);
     211:     }
     212:     /* NOTREACHED */
     213: }
     214:
     215: static
     216: fetch_pw(key)
     217:     datum key;
     218: {
     219:     register char *p, *t;
     220:
     221:     /*
     222: 	 * the .dir file is LOCK_EX locked by programs that are
     223: 	 * renaming the various password files.
     224: 	 */
     225:     if (flock(dbm_dirfno(_pw_db), LOCK_SH))
     226:         return(0);
     227:     if (!key.dptr)
     228:         if (_pw_rewind) {
     229:             _pw_rewind = 0;
     230:             key = dbm_firstkey(_pw_db);
     231:         } else
     232:             key = dbm_nextkey(_pw_db);
     233:     if (key.dptr)
     234:         key = dbm_fetch(_pw_db, key);
     235:     (void)flock(dbm_dirfno(_pw_db), LOCK_UN);
     236:     if (!(p = key.dptr))
     237:         return(0);
     238:     t = line;
     239: #define EXPAND(e)   e = t; while (*t++ = *p++);
     240:     EXPAND(_pw_passwd.pw_name);
     241:     EXPAND(_pw_passwd.pw_passwd);
     242:     bcopy(p, (char *)&_pw_passwd.pw_uid, sizeof(int));
     243:     p += sizeof(int);
     244:     bcopy(p, (char *)&_pw_passwd.pw_gid, sizeof(int));
     245:     p += sizeof(int);
     246:     bcopy(p, (char *)&_pw_passwd.pw_change, sizeof(time_t));
     247:     p += sizeof(time_t);
     248:     EXPAND(_pw_passwd.pw_class);
     249:     EXPAND(_pw_passwd.pw_gecos);
     250:     EXPAND(_pw_passwd.pw_dir);
     251:     EXPAND(_pw_passwd.pw_shell);
     252:     bcopy(p, (char *)&_pw_passwd.pw_expire, sizeof(time_t));
     253:     p += sizeof(time_t);
     254:     _pw_flag = *p;
     255:     return(1);
     256: }
     257:
     258: static
     259: getpw()
     260: {
     261:     static char pwbuf[50];
     262:     off_t lseek();
     263:     long pos;
     264:     int fd, n;
     265:     register char *p;
     266:
     267:     if (geteuid())
     268:         return;
     269:     /*
     270: 	 * special case; if it's the official password file, look in
     271: 	 * the master password file, otherwise, look in the file itself.
     272: 	 */
     273:     p = strcmp(_pw_file, _PATH_PASSWD) ? _pw_file : _PATH_MASTERPASSWD;
     274:     if ((fd = open(p, O_RDONLY, 0)) < 0)
     275:         return;
     276:     pos = atol(_pw_passwd.pw_passwd);
     277:     if (lseek(fd, pos, L_SET) != pos)
     278:         goto bad;
     279:     if ((n = read(fd, pwbuf, sizeof(pwbuf) - 1)) < 0)
     280:         goto bad;
     281:     pwbuf[n] = '\0';
     282:     for (p = pwbuf; *p; ++p)
     283:         if (*p == ':') {
     284:             *p = '\0';
     285:             _pw_passwd.pw_passwd = pwbuf;
     286:             break;
     287:         }
     288: bad:    (void)close(fd);
     289: }

#### Defined functions

endpwent defined in line 154; used 31 times

- in line 80, 107
- in /usr/include/pwd.h line 42
- in /usr/src/bin/csh/sh.file.c line 425
- in /usr/src/bin/login/login.c line 300
- in /usr/src/bin/su.c line 105
- in /usr/src/bin/tcsh/sh.c line 1294
- in /usr/src/bin/tcsh/sh.file.c line 552
- in /usr/src/bin/tcsh/sh.types.h line 91
- in /usr/src/bin/tcsh/tc.os.h line 389
- in /usr/src/bin/tcsh/tw.parse.c line 908
- in /usr/src/games/warp/intrp.c line 205, 642
- in /usr/src/include/pwd.h line 42
- in /usr/src/libexec/ctimed/ctimed.c line 175
- in /usr/src/libexec/rexecd/rexecd.c line 129
- in /usr/src/libexec/rshd/rshd.c line 382
- in /usr/src/libexec/tcpd/options.c line 276
- in /usr/src/new/jove/io.c line 542-545(2)
- in /usr/src/new/notes/src/access.c line 215
- in /usr/src/new/notes/src/startup.c line 102
- in /usr/src/new/rn/intrp.c line 221, 993
- in /usr/src/sbin/quotacheck/quotacheck.c line 148
- in /usr/src/usr.bin/refer/what1.c line 103
- in /usr/src/usr.sbin/cron/crontab.c line 172
- in /usr/src/usr.sbin/cron/database.c line 127
- in /usr/src/usr.sbin/repquota/repquota.c line 108
- in /usr/src/usr.sbin/sa/sa.c line 944, 959

fetch_pw defined in line 215; used 3 times

- in line 50, 72, 99

getpw defined in line 258; used 3 times

- in line 55, 82, 109

getpwent defined in line 39; used 23 times

- in /usr/include/pwd.h line 41
- in /usr/src/bin/csh/sh.file.c line 322
- in /usr/src/bin/ps.c line 506
- in /usr/src/bin/tcsh/sh.file.c line 444
- in /usr/src/bin/tcsh/tc.os.h line 390
- in /usr/src/bin/tcsh/tw.parse.c line 1128
- in /usr/src/games/cfscores.c line 61
- in /usr/src/include/pwd.h line 41
- in /usr/src/libexec/ctimed/ctimed.c line 142
- in /usr/src/new/jove/io.c line 538
- in /usr/src/new/nntp/server/common.h line 29
- in /usr/src/sbin/quotacheck/quotacheck.c line 146
- in /usr/src/ucb/finger/finger.c line 187
- in /usr/src/usr.bin/find/find.c line 961
- in /usr/src/usr.sbin/quot/quot.c line 45, 58
- in /usr/src/usr.sbin/repquota/repquota.c line 106
- in /usr/src/usr.sbin/sa/sa.c line 939, 955
- in /usr/src/usr.sbin/sendmail.MX/src/recipient.c line 360, 381
- in /usr/src/usr.sbin/sendmail/src/recipient.c line 367, 388

getpwnam defined in line 59; used 100 times

- in /usr/include/pwd.h line 41
- in /usr/src/bin/chpass/chpass.c line 114
- in /usr/src/bin/csh/sh.c line 884
- in /usr/src/bin/csh/sh.file.c line 239
- in /usr/src/bin/csh/sh.h line 419
- in /usr/src/bin/login/login.c line 203
- in /usr/src/bin/mail.c line 68, 611
- in /usr/src/bin/passwd/passwd.c line 63
- in /usr/src/bin/su.c line 69
- in /usr/src/bin/tcsh/sh.file.c line 346
- in /usr/src/bin/tcsh/tc.func.c line 1085
- in /usr/src/bin/tcsh/tc.os.h line 390
- in /usr/src/games/cfscores.c line 65
- in /usr/src/games/warp/intrp.c line 198-199(2)
- in /usr/src/include/pwd.h line 41
- in /usr/src/lib/libc/net/rcmd.c line 249
- in /usr/src/libexec/ctimed/ctimed.c line 158
- in /usr/src/libexec/ftpd/ftpd.c line 293
- in /usr/src/libexec/identd/src/identd.c line 349
- in /usr/src/libexec/popper/pop_pass.c line 29
- in /usr/src/libexec/rexecd/rexecd.c line 31, 124
- in /usr/src/libexec/rlogind/rlogind.c line 76, 527
- in /usr/src/libexec/rshd/rshd.c line 285
- in /usr/src/libexec/tcpd/options.c line 269-274(2)
- in /usr/src/libexec/tcpd/safe_finger.c line 67
- in /usr/src/local/mp/misc.c line 199
- in /usr/src/new/nntp/server/common.h line 29
- in /usr/src/new/nntp/server/serve.c line 148
- in /usr/src/new/notes/src/access.c line 52, 177
- in /usr/src/new/notes/src/acssort.c line 197
- in /usr/src/new/notes/src/nfaccess.c line 27
- in /usr/src/new/notes/src/startup.c line 49, 66, 93
- in /usr/src/new/rn/intrp.c line 211-212(2)
- in /usr/src/ucb/Mail/getname.c line 72
- in /usr/src/ucb/error/errorfilter.c line 50
- in /usr/src/ucb/finger/finger.c line 134, 183
- in /usr/src/ucb/ftp/glob.c line 48, 657
- in /usr/src/ucb/ftp/main.c line 121
- in /usr/src/ucb/last.c line 102
- in /usr/src/ucb/quota.c line 95
- in /usr/src/ucb/rdist/expand.c line 174, 602
- in /usr/src/ucb/rdist/server.c line 1016
- in /usr/src/ucb/sccs.c line 247, 258
- in /usr/src/ucb/sendbug/bugfiler.c line 102
- in /usr/src/ucb/vacation.c line 84, 120
- in /usr/src/usr.bin/at/atq.c line 324
- in /usr/src/usr.bin/at/atrm.c line 410
- in /usr/src/usr.bin/at/atrun.c line 199
- in /usr/src/usr.bin/find/find.c line 1034, 1040
- in /usr/src/usr.bin/fstat/fstat.c line 131, 150
- in /usr/src/usr.bin/id/id.c line 306
- in /usr/src/usr.bin/renice/renice.c line 58
- in /usr/src/usr.bin/uucp/getpwinfo.c line 28, 58
- in /usr/src/usr.bin/uucp/uucpd.c line 153, 163
- in /usr/src/usr.bin/uucp/uudecode.c line 56, 67
- in /usr/src/usr.bin/uucp/uusend.c line 56, 201
- in /usr/src/usr.bin/xinstall/xinstall.c line 125
- in /usr/src/usr.sbin/chown/chown.c line 31, 81
- in /usr/src/usr.sbin/cron/crontab.c line 144
- in /usr/src/usr.sbin/cron/database.c line 206
- in /usr/src/usr.sbin/cron/entry.c line 234
- in /usr/src/usr.sbin/edquota/edquota.c line 153
- in /usr/src/usr.sbin/inetd/inetd.c line 424, 509
- in /usr/src/usr.sbin/lpr/printjob.c line 293
- in /usr/src/usr.sbin/sendmail.MX/src/conf.c line 209
- in /usr/src/usr.sbin/sendmail.MX/src/envelope.c line 423, 494
- in /usr/src/usr.sbin/sendmail.MX/src/recipient.c line 361, 371
- in /usr/src/usr.sbin/sendmail.MX/src/savemail.c line 63, 267
- in /usr/src/usr.sbin/sendmail/src/conf.c line 209
- in /usr/src/usr.sbin/sendmail/src/envelope.c line 417, 488
- in /usr/src/usr.sbin/sendmail/src/recipient.c line 368, 378
- in /usr/src/usr.sbin/sendmail/src/savemail.c line 57, 261

getpwuid defined in line 86; used 107 times

- in /usr/include/pwd.h line 41
- in /usr/src/bin/chgrp.c line 25, 75
- in /usr/src/bin/chpass/chpass.c line 107
- in /usr/src/bin/ls/ls.c line 672
- in /usr/src/bin/mail.c line 70
- in /usr/src/bin/make/files.c line 389-393(2)
- in /usr/src/bin/passwd/passwd.c line 57
- in /usr/src/bin/rcp.c line 75, 94
- in /usr/src/bin/su.c line 64
- in /usr/src/bin/tcsh/tc.os.h line 390
- in /usr/src/bin/who.c line 47
- in /usr/src/games/atc/log.c line 105
- in /usr/src/games/battlestar/init.c line 48
- in /usr/src/games/cfscores.c line 52
- in /usr/src/games/monop/misc.c line 286, 297
- in /usr/src/games/phantasia/main.c line 88
- in /usr/src/games/phantasia/phant.h line 150
- in /usr/src/games/robots/score.c line 115
- in /usr/src/games/rogue/machdep.c line 360-362(2)
- in /usr/src/games/sail/lo_main.c line 30, 50
- in /usr/src/games/snake/snake.c line 505, 527
- in /usr/src/games/snake/snscore.c line 16, 54
- in /usr/src/games/warp/intrp.c line 616
- in /usr/src/include/pwd.h line 41
- in /usr/src/libexec/ctimed/ctimed.c line 163
- in /usr/src/libexec/identd/src/itest.c line 168
- in /usr/src/libexec/identd/src/parse.c line 537
- in /usr/src/local/afio/afio.c line 296, 2565
- in /usr/src/local/mp/misc.c line 183
- in /usr/src/local/qterm/qterm.c line 339, 663
- in /usr/src/new/crash/crashsubs.c line 545-547(2)
- in /usr/src/new/nntp/inews/inews.c line 162, 210
- in /usr/src/new/nntp/server/common.h line 29
- in /usr/src/new/notes/src/gname.c line 25
- in /usr/src/new/rcs/src/rcsutil.c line 107
- in /usr/src/new/rn/intrp.c line 967
- in /usr/src/old/prmail/prmail.c line 21, 38
- in /usr/src/sbin/dump/dumprmt.c line 102
- in /usr/src/sbin/fsck/inode.c line 199
- in /usr/src/sbin/reboot/reboot.c line 96
- in /usr/src/sbin/shutdown/shutdown.c line 111
- in /usr/src/ucb/Mail/getname.c line 58
- in /usr/src/ucb/PORT/systat/pigs.c line 43, 127-132(2)
- in /usr/src/ucb/error/errorfilter.c line 46
- in /usr/src/ucb/ex/expreserve.c line 77, 320
- in /usr/src/ucb/from.c line 51
- in /usr/src/ucb/ftp/ftp.c line 214
- in /usr/src/ucb/ftp/main.c line 124
- in /usr/src/ucb/lastcomm.c line 170
- in /usr/src/ucb/lock/lock.c line 80
- in /usr/src/ucb/msgs/msgs.c line 110, 318
- in /usr/src/ucb/pascal/px/gather.c line 87
- in /usr/src/ucb/quota.c line 84
- in /usr/src/ucb/rdist/main.c line 61
- in /usr/src/ucb/rdist/server.c line 291
- in /usr/src/ucb/rlogin.c line 39, 118
- in /usr/src/ucb/rsh.c line 37, 119
- in /usr/src/ucb/sccs.c line 1498-1501(2)
- in /usr/src/usr.bin/at/at.c line 907
- in /usr/src/usr.bin/at/atrm.c line 426
- in /usr/src/usr.bin/at/atrun.c line 539
- in /usr/src/usr.bin/find/find.c line 973
- in /usr/src/usr.bin/fstat/fstat.c line 131, 216
- in /usr/src/usr.bin/id/id.c line 124, 164, 173, 198-202(2), 309
- in /usr/src/usr.bin/refer/what1.c line 97
- in /usr/src/usr.bin/tip/log.c line 34
- in /usr/src/usr.bin/tip/tip.h line 237
- in /usr/src/usr.bin/uucp/acucntrl.c line 149, 193
- in /usr/src/usr.bin/uucp/getpwinfo.c line 32
- in /usr/src/usr.bin/uucp/uuclean.c line 213, 223
- in /usr/src/usr.sbin/cron/crontab.c line 121
- in /usr/src/usr.sbin/lpr/lpr.c line 79, 218
- in /usr/src/usr.sbin/lpr/lprm.c line 41, 54
- in /usr/src/usr.sbin/sendmail.MX/src/conf.c line 202, 212
- in /usr/src/usr.sbin/sendmail/src/conf.c line 202, 212

scanpw defined in line 173; used 3 times

- in line 52, 74, 101

setpassent defined in line 145; used 10 times

- in line 142
- in /usr/include/pwd.h line 43
- in /usr/src/bin/ls/ls.c line 668
- in /usr/src/include/pwd.h line 43
- in /usr/src/libexec/ctimed/ctimed.c line 168
- in /usr/src/sbin/fsck/main.c line 91
- in /usr/src/ucb/finger/finger.c line 86
- in /usr/src/ucb/lastcomm.c line 166
- in /usr/src/usr.bin/find/find.c line 964, 1037

setpwent defined in line 140; used 21 times

- in /usr/include/pwd.h line 43
- in /usr/src/bin/csh/sh.file.c line 373, 418
- in /usr/src/bin/tcsh/sh.file.c line 497, 545
- in /usr/src/bin/tcsh/tc.os.h line 385-387(2)
- in /usr/src/bin/tcsh/tw.parse.c line 703, 899
- in /usr/src/games/cfscores.c line 49
- in /usr/src/include/pwd.h line 43
- in /usr/src/libexec/rexecd/rexecd.c line 123
- in /usr/src/libexec/rshd/rshd.c line 284
- in /usr/src/new/jove/io.c line 537
- in /usr/src/sbin/quotacheck/quotacheck.c line 145
- in /usr/src/usr.bin/uucp/uuclean.c line 222
- in /usr/src/usr.sbin/repquota/repquota.c line 105
- in /usr/src/usr.sbin/sa/sa.c line 938, 954
- in /usr/src/usr.sbin/sendmail.MX/src/recipient.c line 380
- in /usr/src/usr.sbin/sendmail/src/recipient.c line 387

setpwfile defined in line 166; used 2 times

- in /usr/include/pwd.h line 42
- in /usr/src/include/pwd.h line 42

start_pw defined in line 113; used 4 times

- in line 45, 65, 92, 148

#### Defined variables

_pw_file defined in line 34; used 6 times

- in line 126, 134(2), 170, 273(2)

_pw_flag defined in line 34; used 2 times

- in line 53, 254

_pw_passwd defined in line 32; used 28 times

- in line 56, 75, 83, 102, 110, 190-208(11), 240-252(10), 276, 285

_pw_rewind defined in line 33; used 4 times

- in line 119, 127, 228-229(2)

line defined in line 37; used 5 times

- in line 177-184(4), 238

sccsid defined in line 19; never used

#### Defined macros

EXPAND defined in line 239; used 6 times

- in line 240-241(2), 248-251(4)

MAXLINELENGTH defined in line 36; used 1 times

- in line 37

Last modified: 1996-01-13 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 1207 |