From 11f685d4e982c5fcaa16e5c49380ad6124082364 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 8 Nov 2015 02:03:10 +0100 Subject: [PATCH] core: Add support for user logging with ident information --- src/log.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/log.c b/src/log.c index e12a93052..f5a281a95 100644 --- a/src/log.c +++ b/src/log.c @@ -47,6 +47,7 @@ struct log_hdr { uint16_t index; uint16_t len; uint8_t priority; + uint8_t ident_len; } __attribute__((packed)); static int logging_fd = -1; @@ -86,9 +87,11 @@ static void logging_close(void) static void logging_log(int priority, const char *format, va_list ap) { + char *ident = "bluetoothd"; + uint8_t ident_len = strlen(ident) + 1; struct log_hdr hdr; struct msghdr msg; - struct iovec iov[2]; + struct iovec iov[3]; uint16_t len; char *str; @@ -99,18 +102,22 @@ static void logging_log(int priority, const char *format, va_list ap) hdr.opcode = cpu_to_le16(0x0000); hdr.index = cpu_to_le16(0xffff); - hdr.len = cpu_to_le16(len + 1); + hdr.len = cpu_to_le16(2 + ident_len + len); hdr.priority = priority; + hdr.ident_len = ident_len; iov[0].iov_base = &hdr; iov[0].iov_len = sizeof(hdr); - iov[1].iov_base = str; - iov[1].iov_len = len; + iov[1].iov_base = ident; + iov[1].iov_len = ident_len; + + iov[2].iov_base = str; + iov[2].iov_len = len; memset(&msg, 0, sizeof(msg)); msg.msg_iov = iov; - msg.msg_iovlen = 2; + msg.msg_iovlen = 3; if (sendmsg(logging_fd, &msg, 0) < 0) { close(logging_fd); -- 2.47.3