diff options
author | Brent Cook <brent.cook@calxeda.com> | 2013-10-02 12:09:01 -0500 |
---|---|---|
committer | Brent Cook <brent.cook@calxeda.com> | 2013-10-02 14:44:39 -0500 |
commit | c2022f37beeeef5d4957914ddfb75663dd191449 (patch) | |
tree | d7be2e515b45c6bf76d03e25089b5d0af458a8ae | |
parent | f33077b953f3c4a008be7be22eacdcff55026d3d (diff) | |
download | ipmitool-c2022f37beeeef5d4957914ddfb75663dd191449.tar.gz |
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.
-rw-r--r-- | include/ipmitool/log.h | 1 | ||||
-rw-r--r-- | 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); @@ -30,6 +30,8 @@ * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. */ +#define _BSD_SOURCE + #include <unistd.h> #include <stdio.h> #include <stdlib.h> @@ -40,6 +42,8 @@ #include <ipmitool/log.h> +#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) |