* 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) {
char bracket
[NBRA
], *bracketp
;
if (ep
>= &expbuf
[ESIZE
])
if (lastep
==0 || *lastep
==CBRA
|| *lastep
==CKET
)
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
)
errexit("grep: can't open %s\n", file
);
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]);
errexit("grep RE botch\n", (char *)NULL
);
if(*a
++ != *b
++) return(0);