struct group * getgrent() { register char *p, **q; if( !grf && !(grf = fopen( GROUP, "r" )) ) return(NULL); if( !(p = fgets( line, BUFSIZ, grf )) ) return(NULL); group.gr_name = p; p = grskip(p,CL); /* passwd */ group.gr_gid = atoi(p = grskip(p,CL)); group.gr_mem = gr_mem; p = grskip(p,CL); grskip(p,NL); q = gr_mem; while( *p ){ *q++ = p; p = grskip(p,CM); } *q = NULL; return( &group ); }
struct group * getgrent(void) { char *p, **q; if (!grf && !(grf = fopen(_PATH_GROUP, "r"))) return NULL; if (!(p = fgets(line, sizeof(line) - 1, grf))) return NULL; group.gr_name = p; group.gr_gid = atoi(p = grskip(p, ':')); group.gr_mem = gr_mem; p = grskip(p, ':'); grskip(p, '\n'); q = gr_mem; while (*p) { if (q < &gr_mem[MAXGRP - 1]) *q++ = p; p = grskip(p, ','); } *q = NULL; return &group; }