home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPM
/
BDSC
/
BDSC-3
/
FS.CQ
/
FS.C
Wrap
Text File
|
2000-06-30
|
2KB
|
106 lines
/*--------------------------------------
*
* fs - find string
*
* Usage: fs str files ....
*
* Description:
* Finds the string "str" in the
* named files. Ignores cases.
* Gives line numbers "str" is found on.
* Uses directed io, so one can use:
* "fs str1 file |fs str2".
*
* Author: Dan Sunday
* Date: 11-1-81
*--------------------------------------*/
#include "a:bdscio.h"
#include "b:dio.h"
FILE *infile;
char inbuf [BUFSIZ],
line [128];
main (argc,argv) /* fs string file1 file2 ... */
char **argv;
begin
int i,k,n,f;
char *ap,**p,*pat;
dioinit(&argc,argv);
infile = inbuf;
if (argc < 2)
begin
fprintf (4,"Usage: 'fs string file1 [file2 ...]'");
dioflush();
exit (ERROR);
end
p = argv + 1;
pat = *p++;
f = 1;
if (argc==2)
begin
infile = 0;
ap = "\0";
getchar(); ungetch();
goto StdIn;
end
while (++f < argc)
begin
ap = *p++;
if (fopen (ap,infile) == ERROR)
begin
printf ("can't open %s\n",ap);
dioflush();
exit (ERROR);
end
StdIn:
for (i=1;;++i)
begin
if (fgets (line,infile) == NULL)
break;
if (substr (pat,line))
begin
putchar('!');
printf ("%s :%d: %s",
ap, i, line);
end
end
end
dioflush();
exit (OK);
end
substr (pat,str)
char *pat,*str;
begin
int i,j,k,l;
char *p,*q;
i = 0;
k = strlen (pat);
l = strlen (str);
while (i+k < l)
begin
p = pat + k;
q = str + i + k;
j = k;
while (j--)
if (*--p != toupper(*--q))
break;
else if (j==0) return TRUE;
++i;
end
return FALSE;
end