diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2021-05-20 00:33:11 -0700 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2021-05-20 00:33:11 -0700 |
| commit | d9f0a92839000018eaaf7ebb34ed0260792fd116 (patch) | |
| tree | 1e406906be6dd96d2741d8922e5d0c1c10351f6a /match.c | |
| parent | 355e06a58e918c6c1d39902b0a14029a16c323ba (diff) | |
Added (!) syntax for errors with proper opcode support
Diffstat (limited to 'match.c')
| -rw-r--r-- | match.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -201,7 +201,7 @@ static match_t *match(def_t *defs, file_t *f, const char *str, pat_t *pat, bool } case BP_STRING: { if (&str[pat->len] > f->end) return NULL; - if ((ignorecase ? memicmp : memcmp)(str, pat->args.string, (size_t)pat->len) != 0) + if (pat->len > 0 && (ignorecase ? memicmp : memcmp)(str, pat->args.string, (size_t)pat->len) != 0) return NULL; return new_match(pat, str, str + pat->len, NULL); } @@ -476,6 +476,10 @@ static match_t *match(def_t *defs, file_t *f, const char *str, pat_t *pat, bool return new_match(pat, start, &str[dents], NULL); } + case BP_ERROR: { + match_t *p = match(defs, f, str, pat->args.pat, ignorecase); + return p ? new_match(pat, str, p->end, p) : NULL; + } default: { errx(EXIT_FAILURE, "Unknown pattern type: %d", pat->type); return NULL; |
