V10/cmd/ap/apnews/fuser.c

Compare this file to the similar file:
Show the results in this format:

# include "stdio.h"
# include "ctype.h"
# include "assert.h"
main(argc,argv)
	char *argv[];
{
/*
 * looks through password for people with file argv[1]
 * prints lines with full file name, userid, home directory
 */
FILE *f;
char pline[250], fname[100];
char *p, *s, *strchr();
assert(argc>1);
f = fopen("/etc/passwd", "r");
assert(f!=NULL);
while (fgets(pline, 250, f))
	{
	p = strchr(pline, ':');
	assert(p!=0);
	*p= 0; /* end of userid */
	p = strchr(p+1, ':'); assert(p!=0); /* end of password */
	p = strchr(p+1, ':'); assert(p!=0); /* end of user number */
	p = strchr(p+1, ':'); assert(p!=0); /* end of group number */
	p = strchr(p+1, ':'); assert(p!=0); /* end of gcos account */
	p = strchr(s=p+1, ':'); assert(p!=0); /* end of home directory */
	*p=0;
	sprintf(fname, "%s/%s", s, argv[1]);
	if (access(fname, 04)==0)
		printf("%s %s %s\n", fname, pline, s);
	}
fclose(f);
}