1: #include <stdio.h>
   2: #include <grp.h>
   3: 
   4: #define CL  ':'
   5: #define CM  ','
   6: #define NL  '\n'
   7: #define MAXGRP  100
   8: 
   9: static char GROUP[] = "/etc/group";
  10: static FILE *grf = NULL;
  11: static char line[BUFSIZ+1];
  12: static struct group group;
  13: static char *gr_mem[MAXGRP];
  14: 
  15: setgrent()
  16: {
  17:     if( !grf )
  18:         grf = fopen( GROUP, "r" );
  19:     else
  20:         rewind( grf );
  21: }
  22: 
  23: endgrent()
  24: {
  25:     if( grf ){
  26:         fclose( grf );
  27:         grf = NULL;
  28:     }
  29: }
  30: 
  31: static char *
  32: grskip(p,c)
  33: register char *p;
  34: register c;
  35: {
  36:     while( *p && *p != c ) ++p;
  37:     if( *p ) *p++ = 0;
  38:     return( p );
  39: }
  40: 
  41: struct group *
  42: getgrent()
  43: {
  44:     register char *p, **q;
  45: 
  46:     if( !grf && !(grf = fopen( GROUP, "r" )) )
  47:         return(NULL);
  48:     if( !(p = fgets( line, BUFSIZ, grf )) )
  49:         return(NULL);
  50:     group.gr_name = p;
  51:     group.gr_passwd = p = grskip(p,CL);
  52:     group.gr_gid = atoi( p = grskip(p,CL) );
  53:     group.gr_mem = gr_mem;
  54:     p = grskip(p,CL);
  55:     grskip(p,NL);
  56:     q = gr_mem;
  57:     while( *p ){
  58:         *q++ = p;
  59:         p = grskip(p,CM);
  60:     }
  61:     *q = NULL;
  62:     return( &group );
  63: }

Defined functions

endgrent defined in line 23; used 2 times
getgrent defined in line 41; used 4 times
grskip defined in line 31; used 5 times
setgrent defined in line 15; used 2 times

Defined variables

GROUP defined in line 9; used 2 times
gr_mem defined in line 13; used 3 times
group defined in line 12; used 5 times
line defined in line 11; used 1 times
  • in line 48

Defined macros

CL defined in line 4; used 3 times
CM defined in line 5; used 1 times
  • in line 59
MAXGRP defined in line 7; used 1 times
  • in line 13
NL defined in line 6; used 1 times
  • in line 55
Last modified: 1979-01-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 642
Valid CSS Valid XHTML 1.0 Strict