Rather than copy the log message, we can use a precision in the format
string given to syslog.

Fixes: af75078fece3 ("first public release")
Signed-off-by: David Marchand <david.march...@6wind.com>
---
 lib/librte_eal/linuxapp/eal/eal_log.c | 13 +------------
 1 file changed, 1 insertion(+), 12 deletions(-)

diff --git a/lib/librte_eal/linuxapp/eal/eal_log.c 
b/lib/librte_eal/linuxapp/eal/eal_log.c
index ff14588..9d02ddd 100644
--- a/lib/librte_eal/linuxapp/eal/eal_log.c
+++ b/lib/librte_eal/linuxapp/eal/eal_log.c
@@ -25,25 +25,14 @@
 static ssize_t
 console_log_write(__attribute__((unused)) void *c, const char *buf, size_t 
size)
 {
-       char copybuf[BUFSIZ + 1];
        ssize_t ret;
-       uint32_t loglevel;
 
        /* write on stdout */
        ret = fwrite(buf, 1, size, stdout);
        fflush(stdout);
 
-       /* truncate message if too big (should not happen) */
-       if (size > BUFSIZ)
-               size = BUFSIZ;
-
        /* Syslog error levels are from 0 to 7, so subtract 1 to convert */
-       loglevel = rte_log_cur_msg_loglevel() - 1;
-       memcpy(copybuf, buf, size);
-       copybuf[size] = '\0';
-
-       /* write on syslog too */
-       syslog(loglevel, "%s", copybuf);
+       syslog(rte_log_cur_msg_loglevel() - 1, "%.*s", (int)size, buf);
 
        return ret;
 }
-- 
2.7.4

Reply via email to