/*
 * KandR/5-a.c  Give 5-a.in or other text file as input and
 * specify -x -n pattern as option in such way as
 *   ./a.out < KandR-5-10.in -x -n we
 */

#include <stdio.h>
#include <string.h>

#define MAXLINE 1000

int getline(char *line, int max);

main(int argc, char *argv[])
{
	char line[MAXLINE];
	long lineno = 0;
	int c, except = 0, number = 0, found = 0;

	while (--argc > 0 && (*++argv)[0] == '-')
		while (c = *++argv[0])
			switch (c) {
			case 'x':
				except = 1;
				break;
			case 'n':
				number = 1;
				break;
			default:
				printf("find: illegal option %c\n", c);
				argc = 0;
				found = -1;
				break;
			}
	if (argc != 1)
		printf("Usage: find -x -n pattern\n");
	else
		while (getline(line, MAXLINE) > 0) {
			lineno++;
			if ((strstr(line, *argv) != NULL) != except) {
				if (number)
					printf ( "%ld: ", lineno);
				printf("%s", line);
				found++;
			}
		}
	return found;
}

/* from 1-9.c begin */
int getline(char s[], int lim)
{
	int c, i;

	for (i=0; i<lim-1 && (c=getchar())!=EOF && c!='\n'; ++i)
		s[i] = c;
	if (c == '\n') {
		s[i] = c;
		++i;
	}
	s[i] = '\0';
	return i;
}
/* from 1-9.c end */
