From 08db411060fd736933ae9032908839a1395a512e Mon Sep 17 00:00:00 2001 From: Michal Bloch Date: Wed, 5 Aug 2020 22:19:06 +0200 Subject: [PATCH] Extract subreader addition Change-Id: Ie3ea31ce4a969cf8fa43ecb32fa8eeb2e678ca8d Signed-off-by: Michal Bloch --- src/logger/logger.c | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/src/logger/logger.c b/src/logger/logger.c index 7bc1664..eb856c3 100644 --- a/src/logger/logger.c +++ b/src/logger/logger.c @@ -1050,16 +1050,28 @@ static struct reader_pipe *reader_pipe_alloc(dlogutil_filter_options_s *filter, return ret; } -static struct reader_logger *reader_logger_alloc(dlogutil_filter_options_s *filter, struct log_file *file) +static struct reader_logger *reader_logger_alloc() { struct reader_logger *const ret = calloc(1, sizeof *ret); + if (!ret) + return NULL; + + ret->buf_id = LOG_ID_INVALID; + + return ret; +} + +static int reader_logger_add_subreader_file(struct reader_logger *reader, dlogutil_filter_options_s *filter, struct log_file *file) +{ + assert(reader); + assert(filter); + struct subreader_logger *const srl = malloc(sizeof *srl); struct subreader_logger_file *const srlf = malloc(sizeof *srlf); - if (!ret || !srl || !srlf) { - free(ret); + if (!srl || !srlf) { free(srl); free(srlf); - return NULL; + return -ENOMEM; } logfile_move(&srlf->file, file); @@ -1069,11 +1081,9 @@ static struct reader_logger *reader_logger_alloc(dlogutil_filter_options_s *filt srl->sub_apply_log = subreader_logger_file_apply_log; srl->filter = log_filter_move(filter); - list_add(&ret->subs, srl); - - ret->buf_id = LOG_ID_INVALID; + list_add(&reader->subs, srl); - return ret; + return 0; } static int reader_pipe_init(struct reader_pipe **reader, log_id_t buf_id, struct logger *server, @@ -1124,8 +1134,7 @@ static int reader_pipe_init_with_writer(struct reader_pipe **reader, struct writ return 0; } -static int reader_logger_init(struct reader_logger **reader, log_id_t buf_id, struct logger *server, - dlogutil_filter_options_s *filter, struct log_file *file, bool monitor, bool is_dumping) +static int reader_logger_init(struct reader_logger **reader, log_id_t buf_id, struct logger *server) { assert(reader); assert(buf_id > LOG_ID_INVALID); @@ -1133,9 +1142,8 @@ static int reader_logger_init(struct reader_logger **reader, log_id_t buf_id, st assert(buf_id != LOG_ID_KMSG); assert(buf_id != LOG_ID_SYSLOG); assert(server); - assert(filter); - __attribute__((cleanup(reader_logger_cleanup))) struct reader_logger *ret = reader_logger_alloc(filter, file); + __attribute__((cleanup(reader_logger_cleanup))) struct reader_logger *ret = reader_logger_alloc(); if (!ret) return -ENOMEM; @@ -1409,12 +1417,13 @@ static int create_reader_logger_from_dlogutil_line(struct dlogutil_line_params * if (params->file.path == NULL) return -EINVAL; - retval = reader_logger_init(&reader, params->buf_id, server, params->filter, ¶ms->file, params->monitor, params->is_dumping); + retval = reader_logger_init(&reader, params->buf_id, server); if (retval != 0) return retval; - if (reader->common.fd_entity_source.fd < 0) - return -EINVAL; + retval = reader_logger_add_subreader_file(reader, params->filter, ¶ms->file); + if (retval < 0) + return retval; *rd = reader; reader = NULL; -- 2.7.4