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

Defined functions

getpwent defined in line 36; used 9 times
pwskip defined in line 26; used 6 times

Defined variables

EMPTY defined in line 5; used 1 times
  • in line 56
PASSWD defined in line 4; used 2 times
line defined in line 7; used 1 times
  • in line 45
passwd defined in line 8; used 10 times
Last modified: 1979-01-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 545
Valid CSS Valid XHTML 1.0 Strict