V8/usr/src/cmd/upas/send/okrmt.c

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

#include <stdio.h>
#define GFLIST "forwardlist"
#define LFLIST "forwardlist.lo"

/* imported */
extern char *upaspath();

static checkfile();

/*
 *	Return nonzero if forwarding is allowed to the system
 *	named in the string at "cp".  If we can't read the file
 *	which contains the systems, assume blanket forwarding.
 */
okrmt(cp)
char *cp;
{
	/* always accept the null string */
	if (*cp == '\0')
		return 1;

	/* try both general and local forwardlists */
	switch (checkfile(cp, GFLIST)) {
	case -1:
		return checkfile(cp, LFLIST);
	case 0:
		return checkfile(cp, LFLIST) == 1;
	}
	return 1;
}

static
checkfile(cp, file)
char *cp;
char *file;
{
	register FILE *fp;
	char buf[20];

	/* try to open the file; allow forwarding on failure */
	fp = fopen (upaspath(file), "r");
	if (fp == NULL)
		return -1;

	/* one iteration per system name in the file */
	while (fgets (buf, sizeof buf, fp) != NULL) {
		buf[strlen(buf)-1] = '\0';
		if (strcmp (buf, cp) == 0) {
			/* found it, allow forwarding */
			fclose (fp);
			return 1;
		}
	}

	/* didn't find it, prohibit forwarding */
	fclose (fp);
	return 0;
}