diff options
| author | June McEnroe <june@causal.agency> | 2019-02-07 00:44:06 -0500 |
|---|---|---|
| committer | June McEnroe <june@causal.agency> | 2019-02-07 00:44:06 -0500 |
| commit | e9d5b41888e591a5a25b2cf9a1cf4fab7ac5e7d2 (patch) | |
| tree | 7a3b13ee453cc628d787e11ae26477fd59282842 /bin | |
| parent | Use subexpression highlight for system include paths (diff) | |
| download | src-e9d5b41888e591a5a25b2cf9a1cf4fab7ac5e7d2.tar.gz src-e9d5b41888e591a5a25b2cf9a1cf4fab7ac5e7d2.zip | |
Check subexpressions with hi -c
Diffstat (limited to '')
| -rw-r--r-- | bin/hi.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/bin/hi.c b/bin/hi.c index 5acca9b2..40f873d0 100644 --- a/bin/hi.c +++ b/bin/hi.c @@ -246,7 +246,20 @@ int main(int argc, char *argv[]) { regex_t regex = compile(Languages[i].pattern, REG_NOSUB); regfree(®ex); for (size_t j = 0; j < Languages[i].len; ++j) { - regex = compile(Languages[i].syntax[j].pattern, REG_NOSUB); + struct Syntax syn = Languages[i].syntax[j]; + regex = compile(syn.pattern, 0); + if (regex.re_nsub >= SubsLen) { + errx( + EX_SOFTWARE, + "too many subexpressions: %s", syn.pattern + ); + } + if (syn.subexp > regex.re_nsub) { + errx( + EX_SOFTWARE, + "no subexpression %zu: %s", syn.subexp, syn.pattern + ); + } regfree(®ex); } } |