pmatch
gres |= pmatch(string, *p);
static int pmatch(const Char *, const Char *);
static int matcher(struct re_guts *g, const char *string, size_t nmatch, regmatch_t pmatch[], int eflags);
regmatch_t pmatch[],
_DIAGASSERT(pmatch != NULL);
start = string + (size_t)pmatch[0].rm_so;
stop = string + (size_t)pmatch[0].rm_eo;
m->pmatch = NULL;
if (m->pmatch == NULL)
m->pmatch = (regmatch_t *)malloc((m->g->nsub + 1) *
if (m->pmatch == NULL) {
m->pmatch[i].rm_so = m->pmatch[i].rm_eo = -1;
assert(m->pmatch[i].rm_so == (regoff_t)-1);
assert(m->pmatch[i].rm_eo == (regoff_t)-1);
_DIAGASSERT(pmatch != NULL);
pmatch[0].rm_so = m->coldp - m->offp;
pmatch[0].rm_eo = endp - m->offp;
assert(m->pmatch != NULL);
pmatch[i] = m->pmatch[i];
pmatch[i].rm_so = (regoff_t)-1;
pmatch[i].rm_eo = (regoff_t)-1;
if (m->pmatch != NULL) {
free(m->pmatch);
m->pmatch = NULL;
m->pmatch[i].rm_so = sp - m->offp;
m->pmatch[i].rm_eo = sp - m->offp;
if (m->pmatch[i].rm_eo == -1)
assert(m->pmatch[i].rm_so != -1);
len = (size_t)(m->pmatch[i].rm_eo - m->pmatch[i].rm_so);
ssp = m->offp + (size_t)m->pmatch[i].rm_so;
offsave = m->pmatch[i].rm_so;
m->pmatch[i].rm_so = sp - m->offp;
m->pmatch[i].rm_so = offsave;
offsave = m->pmatch[i].rm_eo;
m->pmatch[i].rm_eo = sp - m->offp;
m->pmatch[i].rm_eo = offsave;
regmatch_t *pmatch; /* [nsub+1] (0 element unused) */
regmatch_t pmatch[__restrict],
return(mmatcher(g, string, nmatch, pmatch, eflags));
return(smatcher(g, string, nmatch, pmatch, eflags));
return(lmatcher(g, string, nmatch, pmatch, eflags));
sizeof(compatible)) > 0 && pmatch(compatible, "*CS8900*",
if (pmatch(ad->HardwareId.String, *ids, NULL) == 2)
if (pmatch(id, *ids, NULL) == 2)
if (pmatch(name, wdq->wdq_match, &estr) == 2)
pmatch(dev->ud_product, q->product_str, NULL) != 2)) {
return pmatch(s1, s2, NULL) == 2;
int pmatch(const char *, const char *, const char **);
int pmatch(const char *, const char *, const char **);
switch (pmatch(string, pattern, estr)) {
return pmatch(s1, s2, NULL) == 2;
extern int pmatch(const char *, const char *, const char **);
grep_search(fastgrep_t *fg, const unsigned char *data, size_t len, regmatch_t *pmatch)
if (pmatch->rm_so == (ssize_t)len)
if (fg->bol && pmatch->rm_so != 0) {
pmatch->rm_so = len;
pmatch->rm_eo = len;
pmatch->rm_so = j;
pmatch->rm_eo = j + fg->len;
pmatch->rm_so = j - fg->len;
pmatch->rm_eo = j;
j = pmatch->rm_so;
pmatch->rm_so = j;
pmatch->rm_eo = j + fg->len;
regmatch_t pmatch;
pmatch.rm_so = st;
pmatch.rm_eo = l->len;
l->len, &pmatch);
st = pmatch.rm_eo;
&pmatch, eflags);
st = pmatch.rm_eo;
(pmatch.rm_so != 0 ||
(size_t)pmatch.rm_eo != l->len))
if (fg_pattern[i].word && pmatch.rm_so != 0) {
if (pmatch.rm_so != 0 &&
sscanf(&l->dat[pmatch.rm_so - 1],
if ((size_t)pmatch.rm_eo != l->len &&
sscanf(&l->dat[pmatch.rm_eo],
matches[m++] = pmatch;
if (st == (size_t)pmatch.rm_so)
regmatch_t *pmatch;
pmatch = xreallocarray(NULL, re.re_nsub+1, sizeof(regmatch_t),
argc > 4 && argv[4] != NULL ? argv[4] : "", pmatch);
free(pmatch);
regmatch_t *pmatch;
pmatch = xreallocarray(NULL, re.re_nsub+1, sizeof(regmatch_t), NULL);
do_regexpindex(argv[2], &re, source, pmatch);
do_regexp(argv[2], &re, source, argv[4], pmatch);
free(pmatch);
regmatch_t pmatch[1];
pmatch[0].rm_so = 0;
pmatch[0].rm_eo = line[len - 1] == '\n' ? len - 1 : len;
pmp = pmatch;