From 727af5678906c03eedff8d8262d39fad788973a6 Mon Sep 17 00:00:00 2001 From: Linus Nordberg Date: Wed, 29 Sep 2010 21:53:43 +0200 Subject: Refactoring in preparation for handling more cases than client sending one packet. --- lib/err.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'lib/err.c') diff --git a/lib/err.c b/lib/err.c index 74edeb0..4c88ce1 100644 --- a/lib/err.c +++ b/lib/err.c @@ -1,4 +1,5 @@ #include +#include #include #include "libradsec.h" #include "libradsec-impl.h" @@ -27,6 +28,7 @@ const char *_errtxt[] = { "ERR " /* RSE_ */ "some error" /* 21 RSE_SOME_ERROR */ }; +#define ERRTXT_SIZE (sizeof(_errtxt) / sizeof(*_errtxt)) static struct rs_error * _err_new (unsigned int code, const char *file, int line, const char *fmt, va_list args) @@ -39,8 +41,16 @@ _err_new (unsigned int code, const char *file, int line, const char *fmt, va_lis int n; memset (err, 0, sizeof(struct rs_error)); err->code = code; - n = vsnprintf (err->buf, sizeof(err->buf), fmt, args); - if (n > 0) + if (fmt) + n = vsnprintf (err->buf, sizeof(err->buf), fmt, args); + else + { + strncpy (err->buf, + err->code < ERRTXT_SIZE ? _errtxt[err->code] : "", + sizeof(err->buf)); + n = strlen (err->buf); + } + if (n >= 0) { char *sep = strrchr (file, '/'); if (sep) -- cgit v1.1