From 592a50e99003b24a9c50aede15ee685a20642a4d Mon Sep 17 00:00:00 2001 From: Michal Bloch Date: Thu, 4 Mar 2021 22:30:08 +0100 Subject: [PATCH] Add the toggle stdout request Change-Id: I3a5f6aaef0ebae87e0d33220d9b2b71c500d1cf6 Signed-off-by: Michal Bloch --- include/logpipe.h | 1 + src/logger/log_buffer.c | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/include/logpipe.h b/include/logpipe.h index b578b6b..144114c 100644 --- a/include/logpipe.h +++ b/include/logpipe.h @@ -41,6 +41,7 @@ enum { DLOG_REQ_GET_CAPACITY = 4 << 1, DLOG_REQ_GET_USAGE = 5 << 1, DLOG_REQ_STDOUT = 6 << 1, + DLOG_REQ_TOGGLE_STDOUT = 7 << 1, }; enum { diff --git a/src/logger/log_buffer.c b/src/logger/log_buffer.c index adc1f01..d3ff7ae 100644 --- a/src/logger/log_buffer.c +++ b/src/logger/log_buffer.c @@ -406,6 +406,24 @@ err_close: return r; } +static int service_writer_handle_req_toggle_stdout(struct logger *server, struct writer *wr, struct dlog_control_msg *msg) +{ + assert(server); + assert(server->is_stdout_redir_enabled); + + assert(msg); + assert(msg->request == DLOG_REQ_TOGGLE_STDOUT); + + assert(wr); + assert(wr->buf_ptr); + + if (msg->length != sizeof(struct dlog_control_msg) + sizeof(char)) + return -EINVAL; + + wr->buf_ptr->accept_stdout = msg->data[0] != '\0'; + return 0; +} + static int service_writer_handle_req_stdout(struct logger *server, struct writer *wr, struct dlog_control_msg *msg) { int r; @@ -491,6 +509,12 @@ static int service_writer_handle_req_write(struct logger *server, struct writer else return -EINVAL; + case DLOG_REQ_TOGGLE_STDOUT: + if (server->is_stdout_redir_enabled) + return service_writer_handle_req_toggle_stdout(server, wr, msg); + else + return -EINVAL; + default: return -EINVAL; } -- 2.7.4