V9/cmd/egrep/main.c

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

#include	"hdr.h"

State states[NSTATES];
State *nxtst();
int state[NSTATES];
int line = 1;
int name[MAXLIN];
int left[MAXLIN];
int right[MAXLIN];
int parent[MAXLIN];
int foll[MAXLIN];
int positions[MAXPOS];
char chars[MAXLIN];
int nxtpos = 0;
int inxtpos;
int nxtchar = 0;
int tmpstat[MAXLIN];
int begstat[MAXLIN];
int colpos[MAXLIN];
State *istat;
int nstate = 1;
int xstate;
int count;
int icount;
char *input;

char reinit = 0;

long	lnum;
int	bflag;
int	cflag;
int	fflag;
int	hflag = 1;
int	iflag;
int	lflag;
int	nflag;
int	sflag;
int	vflag;
int	nfile;
long	tln;
int	nsucc;
int	badbotch;

int	expfile;
int 	bmegrep = 0;

main(argc, argv)
char **argv;
{
	int (*fn)(), execute(), bmexecute();
	int etext();
	char buf[2048];


	while (--argc > 0 && (++argv)[0][0]=='-')
		switch (argv[0][1]) {

		case 'b':
			bflag++;
			continue;

		case 'c':
			cflag++;
			continue;

		case 'e':
			argc--;
			argv++;
			goto cut;

		case 'f':
			fflag++;
			continue;

		case 'h':
			hflag = 0;
			continue;

		case 'i':
			iflag++;
			continue;

		case 'l':
			lflag++;
			continue;

		case 'n':
			nflag++;
			continue;

		case 's':
			sflag++;
			continue;

		case 'v':
			vflag++;
			continue;

		default:
			fprint(2, "egrep: unknown flag\n");
			continue;
		}
cut:
	if (argc<=0)
		exit(2);
	if (fflag) {
		if ((expfile = open(*argv, 0)) < 0) {
			fprint(2, "egrep: can't open %s\n", *argv);
			exit(2);
		}
	}
	else input = *argv;
	Finit(1, (char *)0);
	argc--;
	argv++;

	/*mailprep();/**/
	yyparse();
maildone();
	if(!vflag && islit(buf)){
		bmprep(buf);
		fn = bmexecute;
	} else
		fn = execute;

	cgotofn();
	nfile = argc;
	if (argc<=0) {
		if (lflag) exit(1);
		(*fn)((char *)0);
	}
	else while (--argc >= 0) {
		if (reinit == 1) clearg();
		(*fn)(*argv++);
	}
	exit(badbotch ? 2 : nsucc==0);
}