3e236955c9
There are several unresolved -Wmissing-field-initializers on older versions of GCC than 5.1, all of them false positive.
57 lines
996 B
C
57 lines
996 B
C
/*
|
|
* BIRD Client -- Utility Functions
|
|
*
|
|
* (c) 1999--2000 Martin Mares <mj@ucw.cz>
|
|
*
|
|
* Can be freely distributed and used under the terms of the GNU GPL.
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <stdarg.h>
|
|
|
|
#include "nest/bird.h"
|
|
#include "lib/string.h"
|
|
#include "client/client.h"
|
|
|
|
/* Client versions of logging functions */
|
|
|
|
static void
|
|
vlog(const char *msg, va_list args)
|
|
{
|
|
char buf[1024];
|
|
|
|
int n = vsnprintf(buf, sizeof(buf), msg, args);
|
|
if (n < 0)
|
|
snprintf(buf, sizeof(buf), "???");
|
|
else if (n >= (int) sizeof(buf))
|
|
snprintf(buf + sizeof(buf) - 100, 100, " ... <too long>");
|
|
fputs(buf, stderr);
|
|
fputc('\n', stderr);
|
|
}
|
|
|
|
void
|
|
bug(const char *msg, ...)
|
|
{
|
|
va_list args;
|
|
|
|
va_start(args, msg);
|
|
cleanup();
|
|
fputs("Internal error: ", stderr);
|
|
vlog(msg, args);
|
|
vfprintf(stderr, msg, args);
|
|
va_end(args);
|
|
exit(1);
|
|
}
|
|
|
|
void
|
|
die(const char *msg, ...)
|
|
{
|
|
va_list args;
|
|
|
|
va_start(args, msg);
|
|
cleanup();
|
|
vlog(msg, args);
|
|
va_end(args);
|
|
exit(1);
|
|
}
|