diff options
| author | Thomas Voss <mail@thomasvoss.com> | 2024-11-12 10:02:20 +0100 | 
|---|---|---|
| committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-12 10:02:20 +0100 | 
| commit | 57a3159d5c441837607866fea848075055e03c89 (patch) | |
| tree | b75e87adf8adc9ceb01ea70b6906f1b400e1418f /src | |
| parent | 23905302b2e9f85135b062b12b20c65a413994b9 (diff) | |
Fix the display of PCRE2 error messages
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.c | 5 | ||||
| -rw-r--r-- | src/util.c | 6 | ||||
| -rw-r--r-- | src/work.c | 12 | 
3 files changed, 14 insertions, 9 deletions
| @@ -360,11 +360,12 @@ pattern_comp(u8view_t pat)  			size_t eoff;  			op.re = pcre2_compile(re.p, re.len, reopts, &ec, &eoff, nullptr);  			if (op.re == nullptr) { +				/* TODO: Print which regex failed to compile */  				pcre2_bitch_and_die( -					ec, "failed to compile regex at byte offset %zu: %s", eoff); +					ec, "failed to compile regex at byte offset %zu", eoff);  			}  			if ((ec = pcre2_jit_compile(op.re, PCRE2_JIT_COMPLETE)) != 0) -				pcre2_bitch_and_die(ec, "failed to JIT compile regex: %s"); +				pcre2_bitch_and_die(ec, "failed to JIT compile regex");  #if DEBUG  			op.free_me = true;  #endif @@ -1,6 +1,7 @@  #include <errno.h>  #include <stdarg.h>  #include <stddef.h> +#include <stdio.h>  #include <stdlib.h>  #include <errors.h> @@ -27,7 +28,10 @@ pcre2_bitch_and_die(int ec, const char *fmt, ...)  		} else {  			va_list ap;  			va_start(ap, fmt); -			vwarn(fmt, ap); +			flockfile(stderr); +			vfprintf(stderr, fmt, ap); +			fprintf(stderr, ": %s\n", buf); +			funlockfile(stderr);  			exit(EXIT_FATAL);  		}  	} @@ -193,7 +193,7 @@ DEFINE_OPERATOR(g)  	if (n == PCRE2_ERROR_NOMATCH)  		return;  	if (n < 0) -		pcre2_bitch_and_die(n, "failed to match regex: %s"); +		pcre2_bitch_and_die(n, "failed to match regex");  	operator_dispatch(opi + 1, sv, hl);  } @@ -209,7 +209,7 @@ DEFINE_OPERATOR(G)  	if (n == PCRE2_ERROR_NOMATCH)  		operator_dispatch(opi + 1, sv, hl);  	if (n < 0) -		pcre2_bitch_and_die(n, "failed to match regex: %s"); +		pcre2_bitch_and_die(n, "failed to match regex");  }  DEFINE_OPERATOR(h) @@ -229,7 +229,7 @@ DEFINE_OPERATOR(h)  		if (n == PCRE2_ERROR_NOMATCH)  			break;  		if (n < 0) -			pcre2_bitch_and_die(n, "failed to match regex: %s"); +			pcre2_bitch_and_die(n, "failed to match regex");  		size_t *ov = pcre2_get_ovector_pointer(md);  		array_push(hl, ((u8view_t){sv.p + ov[0], ov[1] - ov[0]})); @@ -257,7 +257,7 @@ DEFINE_OPERATOR(H)  		if (n == PCRE2_ERROR_NOMATCH)  			break;  		if (n < 0) -			pcre2_bitch_and_die(n, "failed to match regex: %s"); +			pcre2_bitch_and_die(n, "failed to match regex");  		size_t *ov = pcre2_get_ovector_pointer(md);  		array_push(hl, ((u8view_t){sv.p, ov[0]})); @@ -278,7 +278,7 @@ DEFINE_OPERATOR(x)  		if (n == PCRE2_ERROR_NOMATCH)  			break;  		if (n < 0) -			pcre2_bitch_and_die(n, "failed to match regex: %s"); +			pcre2_bitch_and_die(n, "failed to match regex");  		size_t *ov = pcre2_get_ovector_pointer(md);  		operator_dispatch(opi + 1, (u8view_t){sv.p + ov[0], ov[1] - ov[0]}, hl); @@ -297,7 +297,7 @@ DEFINE_OPERATOR(X)  		if (n == PCRE2_ERROR_NOMATCH)  			break;  		if (n < 0) -			pcre2_bitch_and_die(n, "failed to match regex: %s"); +			pcre2_bitch_and_die(n, "failed to match regex");  		size_t *ov = pcre2_get_ovector_pointer(md);  		if (ov[0] != 0) |