Back

/* find -nx pattern */
#include<stdio.h>
#include<string.h>

#define  MAXLINE  1000

int getline(char *line, int max);

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 *line, int max)
{
  int c, i=0;
  
  while(--max > 0 && (c=getchar()) != EOF && c!='\n')
    { *line++=c; i++; }
  if(c=='\n')
   { *line++=c; i++; }
  *line='\0';
 return i;
}

*/

int getline(char s[], int lim)
{
  int c, i;
  i=0;
  while(--lim > 0 && (c=getchar()) != EOF && c!='\n')
    s[i++]=c;
  if(c=='\n')
   s[i++]=c;
  s[i]='\0';
 return i;
}

Top