From c2022f37beeeef5d4957914ddfb75663dd191449 Mon Sep 17 00:00:00 2001 From: Brent Cook Date: Wed, 2 Oct 2013 12:09:01 -0500 Subject: SW-2576: allow lprintf to print messages > 1k Online help was being truncated by lprintf, convert to print unlimited-sized messages. lperror is changed to use a non-static, but fixed size buffer, since error messages should be less than 1k. --- include/ipmitool/log.h | 1 - lib/log.c | 19 +++++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/include/ipmitool/log.h b/include/ipmitool/log.h index 7199fdb..c6e3bff 100644 --- a/include/ipmitool/log.h +++ b/include/ipmitool/log.h @@ -50,7 +50,6 @@ #define LOG_WARN LOG_WARNING #define LOG_NAME_DEFAULT "ipmitool" -#define LOG_MSG_LENGTH 1024 void log_init(const char * name, int isdaemon, int verbose); void log_halt(void); diff --git a/lib/log.c b/lib/log.c index b8fa561..2c792c1 100644 --- a/lib/log.c +++ b/lib/log.c @@ -30,6 +30,8 @@ * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. */ +#define _BSD_SOURCE + #include #include #include @@ -40,6 +42,8 @@ #include +#define LOG_MSG_LENGTH 1024 + struct logpriv_s { char * name; int daemon; @@ -54,7 +58,6 @@ static void log_reinit(void) void lprintf(int level, const char * format, ...) { - static char logmsg[LOG_MSG_LENGTH]; va_list vptr; if (!logpriv) @@ -64,19 +67,19 @@ void lprintf(int level, const char * format, ...) return; va_start(vptr, format); - vsnprintf(logmsg, LOG_MSG_LENGTH, format, vptr); + if (logpriv->daemon) { + vsyslog(level, format, vptr); + } else { + vfprintf(stderr, format, vptr); + fprintf(stderr, "\r\n"); + } va_end(vptr); - - if (logpriv->daemon) - syslog(level, "%s", logmsg); - else - fprintf(stderr, "%s\r\n", logmsg); return; } void lperror(int level, const char * format, ...) { - static char logmsg[LOG_MSG_LENGTH]; + char logmsg[LOG_MSG_LENGTH]; va_list vptr; if (!logpriv) -- cgit v1.2.1