Lines Matching refs:pc

70 static void procmatch_match(struct mprintc *mc, struct parsec *pc);
71 static void procmatch_nomatch(struct mprintc *mc, struct parsec *pc);
72 static bool procmatches(struct mprintc *mc, struct parsec *pc, bool matched);
77 static bool procline(struct parsec *pc);
78 static void printline(struct parsec *pc, int sep);
196 procmatch_match(struct mprintc *mc, struct parsec *pc) in procmatch_match() argument
209 printline(pc, ':'); in procmatch_match()
210 while (pc->matchidx >= MAX_MATCHES) { in procmatch_match()
212 pc->matchidx = 0; in procmatch_match()
213 if (procline(pc)) in procmatch_match()
214 printline(pc, ':'); in procmatch_match()
225 procmatch_nomatch(struct mprintc *mc, struct parsec *pc) in procmatch_nomatch() argument
230 grep_printline(&pc->ln, '-'); in procmatch_nomatch()
234 } else if (Bflag == 0 || (Bflag > 0 && enqueue(&pc->ln))) in procmatch_nomatch()
250 procmatches(struct mprintc *mc, struct parsec *pc, bool matched) in procmatches() argument
259 procmatch_match(mc, pc); in procmatches()
269 procmatch_nomatch(mc, pc); in procmatches()
281 struct parsec pc; in procfile() local
311 pc.ln.file = grep_strdup(fn); in procfile()
312 pc.ln.line_no = 0; in procfile()
313 pc.ln.len = 0; in procfile()
314 pc.ln.boff = 0; in procfile()
315 pc.ln.off = -1; in procfile()
316 pc.binary = f->binary; in procfile()
317 pc.cntlines = false; in procfile()
320 if ((pc.binary && binbehave == BINFILE_BIN) || cflag || qflag || in procfile()
326 pc.cntlines = true; in procfile()
336 pc.printed = 0; in procfile()
337 pc.matchidx = 0; in procfile()
338 pc.lnstart = 0; in procfile()
339 pc.ln.boff = 0; in procfile()
340 pc.ln.off += pc.ln.len + 1; in procfile()
342 if ((pc.ln.dat = grep_fgetln(f, &pc)) == NULL || in procfile()
343 pc.ln.len == 0) in procfile()
346 if (pc.ln.len > 0 && pc.ln.dat[pc.ln.len - 1] == fileeol) in procfile()
347 --pc.ln.len; in procfile()
348 pc.ln.line_no++; in procfile()
351 if (pc.binary && binbehave == BINFILE_SKIP) { in procfile()
353 free(pc.ln.file); in procfile()
358 line_matched = procline(&pc); in procfile()
363 if (!procmatches(&mc, &pc, line_matched)) in procfile()
372 printf("%s:", pc.ln.file); in procfile()
383 free(pc.ln.file); in procfile()
459 procline(struct parsec *pc) in procline() argument
470 matchidx = pc->matchidx; in procline()
474 if (pc->ln.len == 0) in procline()
477 if (sscanf(&pc->ln.dat[0], "%lc", &wend) != 1 || iswword(wend)) in procline()
485 st = pc->lnstart; in procline()
491 while (st <= pc->ln.len) { in procline()
495 if (st > 0 && pc->ln.dat[st - 1] != fileeol) in procline()
500 pmatch.rm_eo = pc->ln.len; in procline()
503 r = litexec(&pattern[i], pc->ln.dat, 1, &pmatch); in procline()
506 r = regexec(&r_pattern[i], pc->ln.dat, 1, &pmatch, in procline()
512 (size_t)pmatch.rm_eo != pc->ln.len)) in procline()
518 sscanf(&pc->ln.dat[pmatch.rm_so - 1], in procline()
522 pc->ln.len && in procline()
523 sscanf(&pc->ln.dat[pmatch.rm_eo], in procline()
538 (retry == pc->lnstart || in procline()
557 chkmatch = pc->matches[matchidx - 1]; in procline()
562 pc->matches[matchidx - 1] = pmatch; in procline()
567 pc->matches[matchidx++] = pmatch; in procline()
573 pc->lnstart = nst; in procline()
584 if (!lastmatched && retry > pc->lnstart) { in procline()
596 nst = pc->ln.len; in procline()
607 pc->lnstart = st; in procline()
611 pc->matchidx = matchidx; in procline()
713 printline(struct parsec *pc, int sep) in printline() argument
723 matchidx = pc->matchidx; in printline()
728 if (!oflag && pc->printed == 0) in printline()
729 printline_metadata(&pc->ln, sep); in printline()
731 match = pc->matches[i]; in printline()
740 pc->ln.boff = match.rm_so; in printline()
741 printline_metadata(&pc->ln, sep); in printline()
743 fwrite(pc->ln.dat + a, match.rm_so - a, 1, in printline()
747 fwrite(pc->ln.dat + match.rm_so, in printline()
756 if (pc->ln.len - a > 0) in printline()
757 fwrite(pc->ln.dat + a, pc->ln.len - a, 1, in printline()
762 grep_printline(&pc->ln, sep); in printline()
763 pc->printed++; in printline()