log: remove useless intermediate buffer
authorDavid Marchand <david.marchand@6wind.com>
Thu, 31 May 2018 08:03:27 +0000 (10:03 +0200)
committerThomas Monjalon <thomas@monjalon.net>
Wed, 27 Jun 2018 16:17:56 +0000 (18:17 +0200)
Rather than copy the log message, we can use a precision in the format
string given to syslog.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Reviewed-by: Olivier Matz <olivier.matz@6wind.com>
lib/librte_eal/linuxapp/eal/eal_log.c

index ff14588..9d02ddd 100644 (file)
 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;
 }