aboutsummaryrefslogtreecommitdiff
path: root/src/util.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/util.c')
-rw-r--r--src/util.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/util.c b/src/util.c
index bf18111..ae66bf9 100644
--- a/src/util.c
+++ b/src/util.c
@@ -1,3 +1,4 @@
+#include <stdarg.h>
#include <stddef.h>
#include <stdlib.h>
#include <errno.h>
@@ -9,10 +10,11 @@
#include "globals.h"
void
-pcre2_bitch_and_die(int ec, const char *fmt)
+pcre2_bitch_and_die(int ec, const char *fmt, ...)
{
/* If we’ve gotten here, we don’t care about writing efficient code */
ptrdiff_t bufsz = 512;
+
for (;;) {
char *buf = malloc(bufsz);
if (buf == nullptr)
@@ -20,8 +22,12 @@ pcre2_bitch_and_die(int ec, const char *fmt)
if (pcre2_get_error_message(ec, buf, bufsz) == PCRE2_ERROR_NOMEMORY) {
free(buf);
bufsz *= 2;
- } else
- cerr(EXIT_FATAL, fmt, buf);
+ } else {
+ va_list ap;
+ va_start(ap, fmt);
+ vwarn(fmt, ap);
+ exit(EXIT_FATAL);
+ }
}
}