C program, separate input files

/*
 * name - purpose xxx
 *
 * $Log$
 */
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#define	MAXSTR	500		/* For sizing strings -- DON'T use BUFSIZ! */
#define	STREQ(a, b)	(*(a) == *(b) && strcmp((a), (b)) == 0)
#ifndef lint
static char RCSid[] = "$Header$";
#endif
int debug = 0;
char *progname;
char *inname;				/* filename for messages etc. */
long lineno;				/* line number for messages etc. */
extern void error(), exit();
#ifdef UTZOOERR
extern char *mkprogname();
#else
#define	mkprogname(a)	(a)
#endif
void fail();
/*
 - main - parse arguments and handle options
 */
main(argc, argv)
int argc;
char *argv[];
{
	int c;
	int errflg = 0;
	FILE *in;
	struct stat statbuf;
	extern int optind;
	extern char *optarg;
	extern FILE *efopen();
	void process();
	progname = mkprogname(argv[0]);
	while ((c = getopt(argc, argv, "xxxd")) != EOF)
		switch (c) {
		case 'xxx':	/* xxx meaning of option */
			xxx
			break;
		case 'd':	/* Debugging. */
			debug++;
			break;
		case '?':
		default:
			errflg++;
			break;
		}
	if (errflg) {
		fprintf(stderr, "usage: %s ", progname);
		fprintf(stderr, "xxx [file] ...\en");
		exit(2);
	}
	if (optind >= argc)
		process(stdin, "stdin");
	else
		for (; optind < argc; optind++)
			if (STREQ(argv[optind], "-"))
				process(stdin, "-");
			else {
				in = efopen(argv[optind], "r");
				if (fstat(fileno(in), &statbuf) < 0)
					error("can't fstat `%s'", argv[optind]);
				if ((statbuf.st_mode & S_IFMT) == S_IFDIR)
					error("`%s' is directory!", argv[optind]);
				process(in, argv[optind]);
				(void) fclose(in);
			}
	exit(0);
}
/*
 - process - process input file
 */
void
process(in, name)
FILE *in;
char *name;
{
	char line[MAXSTR];
	inname = name;
	lineno = 0;
	while (fgets(line, sizeof(line), in) != NULL) {
		lineno++;
		xxx
	}
}
/*
 - fail - complain and die
 */
void
char *s1;
char *s2;
{
	fprintf(stderr, "%s: (file `%s', line %ld) ", progname, inname, lineno);
	fprintf(stderr, s1, s2);
	fprintf(stderr, "\en");
	exit(1);
}


Contents C program, single stream of input Make file