
/**********************************************************************/
/*                                                                    */
/*                           MINIGREP V1.0                            */
/*                      1994 By Alessandro Garoli                     */
/*                                                                    */
/*     Esempio di utilizzo delle funzioni per il PATTERN-MATCHING     */
/*                dell'AmigaDos 2.0, per AmigaMagazine                */
/*                                                                    */
/**********************************************************************/

/* Un piccolo GREP in sole 50 LINEE di sorgente !! */

#include <stdio.h>
#include <exec/types.h>
#include <dos/dos.h>
#include <proto/dos.h>

char str[100],DFA[202],linebuf[200];

main(int argc,char **argv)
{
int i,l,line,occur;
BPTR fh;

printf("MiniGrep V1.0 1994 By AlgarSoft.\n\n");
if (argc<2)
  { printf("Uso:%s <exp> <file1> [file2] [file3]....\n",argv[0]); return 10;}

strcpy(str,"#?");
strcat(str,argv[1]);
strcat(str,"#?");

if (ParsePattern(str,DFA,sizeof(DFA))==-1)
  { puts("ERRORE nel Pattern\n"); return 10; }

for (i=2 ; i<argc ; i++)
   {
    if ((fh=Open(argv[i],MODE_OLDFILE))==NULL)
      { printf("Non posso aprire il file:%s !\n",argv[i]); continue; }
    line=occur=0;
    printf("Leggo il file :%s \n\n",argv[i]);
    while (1)
         {
          if ((FGets(fh, linebuf, sizeof(linebuf)))==NULL)
            break;
	  l=strlen(linebuf);
	  if (linebuf[l-1]=='\n')
	    linebuf[l-1]=0;
          line++;
          if (MatchPattern(DFA,linebuf))
            { printf("%4d: %s\n",line,linebuf); occur++; }
         }
    if (occur)
      printf("* %d Linee trovate.\n",occur);
    Close(fh);
    printf("\n");
   }

return 0;
}
