likefind#
likefind.c
#include<stdio.h>
#include<string.h>
#define MAXLINE 1000
int getline(char *line,int max);
/* find: print lines that match pattern from the 1st arg
----------------------------
find -nx pattern
----------------------------
*/
int 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;
}
int getline(char *s,int lim)
{
int c;
char *t=s;
while(--lim > 0 && (c=getchar())!=EOF && c!='\n')
*s++ =c;
if(c=='\n')
*s++=c;
*s ='\0';
return s -t;
}