1: /*
   2:  * Copyright (c) 1984 Regents of the University of California.
   3:  * All rights reserved.  The Berkeley software License Agreement
   4:  * specifies the terms and conditions for redistribution.
   5:  */
   6: 
   7: #if defined(LIBC_SCCS) && !defined(lint)
   8: static char sccsid[] = "@(#)getpwent.c	5.2 (Berkeley) 3/9/86";
   9: #endif LIBC_SCCS and not lint
  10: 
  11: #include <stdio.h>
  12: #include <pwd.h>
  13: #include <ndbm.h>
  14: 
  15: static char EMPTY[] = "";
  16: static FILE *pwf = NULL;
  17: static char line[BUFSIZ+1];
  18: static struct passwd passwd;
  19: 
  20: /*
  21:  * The following are shared with getpwnamuid.c
  22:  */
  23: char    *_pw_file = "/etc/passwd";
  24: DBM *_pw_db;
  25: int _pw_stayopen;
  26: 
  27: setpwent()
  28: {
  29:     if (pwf == NULL)
  30:         pwf = fopen(_pw_file, "r");
  31:     else
  32:         rewind(pwf);
  33: }
  34: 
  35: endpwent()
  36: {
  37:     if (pwf != NULL) {
  38:         fclose(pwf);
  39:         pwf = NULL;
  40:     }
  41:     if (_pw_db != (DBM *)0) {
  42:         dbm_close(_pw_db);
  43:         _pw_db = (DBM *)0;
  44:         _pw_stayopen = 0;
  45:     }
  46: }
  47: 
  48: static char *
  49: pwskip(p)
  50: register char *p;
  51: {
  52:     while (*p && *p != ':' && *p != '\n')
  53:         ++p;
  54:     if (*p)
  55:         *p++ = 0;
  56:     return(p);
  57: }
  58: 
  59: struct passwd *
  60: getpwent()
  61: {
  62:     register char *p;
  63: 
  64:     if (pwf == NULL) {
  65:         if ((pwf = fopen( _pw_file, "r" )) == NULL)
  66:             return(0);
  67:     }
  68:     p = fgets(line, BUFSIZ, pwf);
  69:     if (p == NULL)
  70:         return(0);
  71:     passwd.pw_name = p;
  72:     p = pwskip(p);
  73:     passwd.pw_passwd = p;
  74:     p = pwskip(p);
  75:     passwd.pw_uid = atoi(p);
  76:     p = pwskip(p);
  77:     passwd.pw_gid = atoi(p);
  78:     passwd.pw_quota = 0;
  79:     passwd.pw_comment = EMPTY;
  80:     p = pwskip(p);
  81:     passwd.pw_gecos = p;
  82:     p = pwskip(p);
  83:     passwd.pw_dir = p;
  84:     p = pwskip(p);
  85:     passwd.pw_shell = p;
  86:     while (*p && *p != '\n')
  87:         p++;
  88:     *p = '\0';
  89:     return(&passwd);
  90: }
  91: 
  92: setpwfile(file)
  93:     char *file;
  94: {
  95:     _pw_file = file;
  96: }

Defined functions

pwskip defined in line 48; used 6 times
setpwfile defined in line 92; used 1 times

Defined variables

EMPTY defined in line 15; used 1 times
  • in line 79
_pw_file defined in line 23; used 5 times
_pw_stayopen defined in line 25; used 1 times
  • in line 44
line defined in line 17; used 1 times
  • in line 68
passwd defined in line 18; used 10 times
sccsid defined in line 8; never used
Last modified: 1986-03-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 1172
Valid CSS Valid XHTML 1.0 Strict