summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrent Cook <brent.cook@calxeda.com>2013-10-02 12:09:01 -0500
committerBrent Cook <brent.cook@calxeda.com>2013-10-02 14:44:39 -0500
commitc2022f37beeeef5d4957914ddfb75663dd191449 (patch)
treed7be2e515b45c6bf76d03e25089b5d0af458a8ae
parentf33077b953f3c4a008be7be22eacdcff55026d3d (diff)
downloadipmitool-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.h1
-rw-r--r--lib/log.c19
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 <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)