summaryrefslogtreecommitdiffstats
path: root/client/util.c
diff options
context:
space:
mode:
Diffstat (limited to 'client/util.c')
-rw-r--r--client/util.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/client/util.c b/client/util.c
index 7699faf..9f1a16b 100644
--- a/client/util.c
+++ b/client/util.c
@@ -12,11 +12,21 @@
#include <stdarg.h>
#include "nest/bird.h"
+#include "lib/string.h"
#include "client/client.h"
/* Client versions of logging functions */
-/* FIXME: Use bsprintf, so that %m works */
+static void
+vlog(char *msg, va_list args)
+{
+ char buf[1024];
+
+ if (bvsnprintf(buf, sizeof(buf)-1, msg, args) < 0)
+ bsprintf(buf + sizeof(buf) - 100, " ... <too long>");
+ fputs(buf, stderr);
+ fputc('\n', stderr);
+}
void
bug(char *msg, ...)
@@ -26,8 +36,8 @@ bug(char *msg, ...)
va_start(args, msg);
cleanup();
fputs("Internal error: ", stderr);
+ vlog(msg, args);
vfprintf(stderr, msg, args);
- fputc('\n', stderr);
exit(1);
}
@@ -38,7 +48,6 @@ die(char *msg, ...)
va_start(args, msg);
cleanup();
- vfprintf(stderr, msg, args);
- fputc('\n', stderr);
+ vlog(msg, args);
exit(1);
}