AUSAM/source/libc/chkentry.c
#
#include <local-system>
#include <passwd.h>
chkentry(fd,pe,te)
register long *te;
register struct pwent *pe;
{
/*
* Check that the password entry list pointed to by "*te" does NOT
* contain the string pointed to by "pe->p_string[LNAME]".
* On return "*te" contains the seek address for the last entry
* in the list or "PWENTNULL" if the list is null.
* Returns 1 if string is NOT in list,
* 0 if string IS in list and
* -1 on error
*/
register struct pwent *rp;
register loglen;
struct pwent p;
char buf[LOGLEN];
for (rp = &p; *te != PWENTNULL; *te = rp->pw_next)
{
lseek(fd,*te,0);
if (read(fd,rp,PWENTLEN) != PWENTLEN) return (-1);
if ( (loglen=rp->pw_strings[LNAME]) > LOGLEN) loglen=LOGLEN;
if (read(fd,&buf,loglen) != loglen) return (-1);
buf[LOGLEN-1] = '\0';
if(!strcmp(pe->pw_strings[LNAME], &buf)) return(0);
if(rp->pw_next == PWENTNULL) break;
}
/* now "*TE" is seek address of last entry or null */
return(1);
}