static char sccsid
[] = "@(#)old.bin.grep.c 4.6 (Berkeley) %G%";
* grep -- print lines matching (or not matching) a pattern
* 0 - ok, and some matches
while (--argc
> 0 && (++argv
)[0][0]=='-')
errexit("grep: unknown flag\n", (char *)NULL
);
for (s
= ybuf
, p
= *argv
; *p
; ) {
while (*p
!= '\0' && *p
!= ']')
} else if (islower(*p
)) {
errexit("grep: argument too long\n", (char *)NULL
);
} else while (--argc
>= 0) {
exit(retcode
!= 0 ? retcode
: nsucc
== 0);
char bracket
[NBRA
], *bracketp
;
if (ep
>= &expbuf
[ESIZE
])
if (lastep
==0 || *lastep
==CBRA
|| *lastep
==CKET
||
*lastep
== CBRC
|| *lastep
== CLET
)
if(&ep
[17] >= &expbuf
[ESIZE
])
if (c
=='-' && sp
>cstart
&& *sp
!=']') {
for (c
= sp
[-2]; c
<*sp
; c
++)
ep
[c
>>3] |= bittab
[c
&07];
ep
[c
>>3] |= bittab
[c
&07];
} while((c
= *sp
++) != ']');
for(cclcnt
= 0; cclcnt
< 16; cclcnt
++)
if(bracketp
<= bracket
) {
if(c
>= '1' && c
<= '9') {
errexit("grep: RE error\n", (char *)NULL
);
if (freopen(file
, "r", stdin
) == NULL
) {
while ((c
= getchar()) != '\n') {
if (p1
>= &linebuf
[LBSIZE
-1])
/* fast check for first character */
for (;;) switch (*ep
++) {
if(ep
[c
>>3] & bittab
[c
& 07]) {
ct
= braelist
[*ep
++] - bbeg
;
ct
= braelist
[*ep
++] - bbeg
;
while(ecmp(bbeg
, lp
, ct
))
if(advance(lp
, ep
)) return(1);
} while(ep
[c
>>3] & bittab
[c
& 07]);
#define uletter(c) (isalpha(c) || (c) == '_')
if (uletter(*lp
) || isdigit(*lp
))
if (!uletter(lp
[-1]) && !isdigit(lp
[-1]))
if (!uletter(*lp
) && !isdigit(*lp
))
errexit("grep RE botch\n", (char *)NULL
);
if(*a
++ != *b
++) return(0);