Lines Matching refs:op
163 struct op
165 struct op* next;
175 static struct op*
176 getop(struct op** prev, Sfoff_t size, size_t repeat, int flags, int re)
178 struct op* op;
180 if (op = newof(0, struct op, 1, re ? sizeof(regex_t) : 0))
182 op->repeat = repeat;
183 op->flags = flags;
184 op->size = size;
185 op->next = 0;
187 op->re = (regex_t*)(op + 1);
188 *prev = op;
190 return op;
198 static struct op*
199 getexpr(struct op** prev, const char* arg)
204 struct op* op;
206 if (op = getop(prev, 0, 1, *cp == '/' ? OP_SEARCH : OP_SKIP, 1))
208 if (n = regcomp(op->re, cp, REG_DELIMITED|REG_NOSUB))
210 regfatal(op->re, 2, n);
213 cp += op->re->re_npat;
216 op->size = strtoll(cp, &ep, 10);
221 return op;
371 split(Sfio_t* in, struct fname* fp, struct op* op, int flags)
387 while (op)
389 if (op->flags == OP_LINES)
390 len = op->size;
391 repeat = op->repeat;
394 if (op->flags != OP_SKIP)
405 if (op->flags == OP_ABSOLUTE || op->flags == OP_LINES)
407 if (op->flags == OP_ABSOLUTE)
408 len = op->size - lineno;
437 if (!(c = regexec(op->re, s, 0, NiL, 0)))
442 regfatal(op->re, 2, c);
450 while (op->next)
451 op = op->next;
466 op = op->next;
487 struct op* top;
571 struct op* op = 0;
581 op = getexpr(op ? &op->next : &top, sp);
584 if (!op)
587 op->repeat = 0;
592 op->repeat = n + 1;
594 if (op->flags == OP_ABSOLUTE)
595 op->flags = OP_LINES;
600 op = getop(op ? &op->next : &top, size, 1, OP_ABSOLUTE, 0);
604 op = getop(op ? &op->next : &top, SF_UNBOUND, 1, OP_LINES, 0);