Lines Matching defs:pat
109 bm_pat *pat;
118 if ((pat = malloc(sizeof(*pat))) == NULL)
120 pat->pat = NULL;
121 pat->delta = NULL;
123 pat->patlen = len; /* copy pattern */
124 if ((pat->pat = malloc(pat->patlen)) == NULL)
126 memcpy(pat->pat, pb, pat->patlen);
128 if ((pat->delta = malloc(256 * sizeof(*d))) == NULL)
130 for (j = 0, d = pat->delta; j < 256; j++)
131 d[j] = pat->patlen;
132 for (pe = pb + pat->patlen - 1; pb <= pe; pb++)
138 for (pb = pat->pat, pe = pb + pat->patlen - 1; pb < pe; pb++)
139 if (freq[*pb] < freq[pat->pat[r]])
140 r = pb - pat->pat;
141 pat->rarec = pat->pat[r];
142 pat->rareoff = r - (pat->patlen - 1);
145 for (pe = pat->pat + pat->patlen - 1, p = pe - 1; p >= pat->pat; p--)
150 pat->md2 = pe - p;
151 return (pat);
154 bm_free(pat);
160 bm_free(bm_pat *pat)
163 _DIAGASSERT(pat != NULL);
165 free(pat->pat);
166 free(pat->delta);
167 free(pat);
171 bm_exec(bm_pat *pat, u_char *base, size_t n)
177 _DIAGASSERT(pat != NULL);
183 d0 = pat->delta;
184 n1 = pat->patlen - 1;
185 md2 = pat->md2;
186 ro = pat->rareoff;
187 rc = pat->rarec;
188 ep = pat->pat + pat->patlen - 1;
189 s = base + (pat->patlen - 1);
192 e = base + n - 3 * pat->patlen;
204 for (p = pat->pat, q = s - n1; p < ep;)
221 for (p = pat->pat, q = s - n1; p <= ep;)