1 //////////////////////////////////////////////////////////////////////////////
4 // ADLib, Prop and their related set of tools and documentation are in the
5 // public domain. The author(s) of this software reserve no copyrights on
6 // the source code and any code generated using the tools. You are encouraged
7 // to use ADLib and Prop to develop software, in both academic and commercial
8 // settings, and are free to incorporate any part of ADLib and Prop into
11 // Although you are under no obligation to do so, we strongly recommend that
12 // you give away all software developed using our tools.
14 // We also ask that credit be given to us when ADLib and/or Prop are used in
15 // your programs, and that this notice be preserved intact in all the source
18 // This software is still under development and we welcome any suggestions
19 // and help from the users.
23 //////////////////////////////////////////////////////////////////////////////
27 #include <AD/strings/kr.h>
29 int grep(const char * fileName
,FILE * file
,KR
& pattern
)
34 while (fgets(buffer
,BUFSIZ
,file
)) {
35 if (pattern
.match(buffer
) >= 0)
37 printf("%s[%d]: %s", fileName
, line
, buffer
);
39 printf("[%d]: %s", line
, buffer
);
45 int main(int argc
, char * argv
[])
48 fprintf(stderr
,"usage: %s pattern [files ...]\n",argv
[0]);
54 failure
+= grep("",stdin
,pattern
);
56 for (int i
= 2; i
< argc
; i
++) {
57 FILE * file
= fopen(argv
[i
],"r");
58 if (file
== NULL
) { perror(argv
[i
]); exit(1); }
59 failure
+= grep(argv
[i
],file
,pattern
);