General pyramidity reduction 51/291351/2
authorMichal Bloch <m.bloch@samsung.com>
Tue, 4 Apr 2023 14:46:01 +0000 (16:46 +0200)
committerMichal Bloch <m.bloch@samsung.com>
Tue, 18 Apr 2023 13:00:09 +0000 (15:00 +0200)
40 levels of indentation look down upon you

Change-Id: I8178af8fd23b70337a189677d11a2fc1f767b7fd
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
src/logger/log_buffer.c
src/logger/log_compressed_storage.c
src/logger/log_storage.c
src/logger/logger.c
src/logger/socket.c
src/logger/writer.c
src/logger/writer.h

index f592867..826a394 100644 (file)
@@ -28,46 +28,49 @@ int buffer_append(const dlogutil_entry_s *entry, struct log_buffer *b)
  */
 static int service_writer_pipe(struct logger *server, struct writer *wr, struct epoll_event *event)
 {
-       if (event->events & EPOLLIN) {
-               int r = read(wr->fd_entity.fd, wr->buffer + wr->readed, sizeof wr->buffer - wr->readed);
+       if (~event->events & EPOLLIN) {
+               return event->events & EPOLLHUP
+                       ? -EBADF
+                       : 0
+               ;
+       }
 
-               if (r == -1 && errno == EAGAIN)
-                       return 0;
-               else if ((r == 0 || r == -1) && event->events & EPOLLHUP)
-                       return -EINVAL;
-               else if (r == 0)
-                       return -EBADF;
-
-               wr->readed += r;
-
-               struct pipe_logger_entry *const ple = (struct pipe_logger_entry *const)wr->buffer;
-               while ((wr->readed >= sizeof(ple->len)) && (ple->len <= wr->readed)) {
-                       const int payload_size = ple->len - sizeof *ple;
-                       if (payload_size <= 0 || payload_size > LOG_MAX_PAYLOAD_SIZE)
-                               return -EINVAL;
-
-                       struct dlogutil_entry_with_msg lem;
-                       parse_pipe_message(ple, &lem.header, ple->len);
-
-                       struct now_t now;
-                       r = get_now(&now);
-                       if (r < 0)
-                               return r;
-                       add_recv_timestamp(&lem.header, now);
-
-                       fixup_pipe_msg(&lem, payload_size);
-                       if (server->qos)
-                               qos_add_log(server->qos, &lem.header);
-                       r = buffer_append(&lem.header, wr->buf_ptr);
-                       wr->readed -= ple->len;
-                       memmove(wr->buffer, wr->buffer + ple->len, sizeof wr->buffer - ple->len);
-
-                       if (r)
-                               return r;
-               }
-       } else if (event->events & EPOLLHUP)
+       int r = read(wr->fd_entity.fd, wr->buffer + wr->readed, sizeof wr->buffer - wr->readed);
+       if (r == -1 && errno == EAGAIN)
+               return 0;
+       else if ((r == 0 || r == -1) && event->events & EPOLLHUP)
+               return -EINVAL;
+       else if (r == 0)
                return -EBADF;
 
+       wr->readed += r;
+
+       struct pipe_logger_entry *const ple = (struct pipe_logger_entry *const)wr->buffer;
+       while ((wr->readed >= sizeof(ple->len)) && (ple->len <= wr->readed)) {
+               const int payload_size = ple->len - sizeof *ple;
+               if (payload_size <= 0 || payload_size > LOG_MAX_PAYLOAD_SIZE)
+                       return -EINVAL;
+
+               struct dlogutil_entry_with_msg lem;
+               parse_pipe_message(ple, &lem.header, ple->len);
+
+               struct now_t now;
+               r = get_now(&now);
+               if (r < 0)
+                       return r;
+               add_recv_timestamp(&lem.header, now);
+
+               fixup_pipe_msg(&lem, payload_size);
+               if (server->qos)
+                       qos_add_log(server->qos, &lem.header);
+               r = buffer_append(&lem.header, wr->buf_ptr);
+               wr->readed -= ple->len;
+               memmove(wr->buffer, wr->buffer + ple->len, sizeof wr->buffer - ple->len);
+
+               if (r)
+                       return r;
+       }
+
        return 0;
 }
 
index 9aeaf23..d02f95c 100644 (file)
@@ -173,28 +173,30 @@ log_compressed_storage_reader *log_compressed_storage_new_reader(log_compressed_
        assert(!dumping || !monitor);
 
        log_compressed_storage_reader *reader = malloc(sizeof(*reader));
-       if (NULL != reader) {
-               reader->storage = storage;
-               reader->callback = callback;
-               reader->user_data = user_data;
-               reader->current = NULL;
-               reader->counter = storage->counter_begin;
-               reader->final = NULL;
-
-               if (dumping) {
-                       // dumping - get all the logs up to this moment
-                       if (NULL != storage->entries)
-                               reader->final = storage->entries->prev;
-                       else
-                       // but in case there are no logs - we have nothing to do
-                               reader->storage = NULL;
-               }
+       if (NULL == reader)
+               return NULL;
 
-               if (monitor)
-                       reader_move_to_entry(reader, storage->entries ? storage->entries->prev : NULL);
-               else if (NULL != reader->storage)
-                       list_add(&storage->waiting_readers, reader);
+       reader->storage = storage;
+       reader->callback = callback;
+       reader->user_data = user_data;
+       reader->current = NULL;
+       reader->counter = storage->counter_begin;
+       reader->final = NULL;
+
+       if (dumping) {
+               // dumping - get all the logs up to this moment
+               if (NULL != storage->entries)
+                       reader->final = storage->entries->prev;
+               else
+               // but in case there are no logs - we have nothing to do
+                       reader->storage = NULL;
        }
+
+       if (monitor)
+               reader_move_to_entry(reader, storage->entries ? storage->entries->prev : NULL);
+       else if (NULL != reader->storage)
+               list_add(&storage->waiting_readers, reader);
+
        return reader;
 }
 
index a114afa..58d61ab 100644 (file)
@@ -148,14 +148,15 @@ static void reader_move_to_entry(void *reader_, void *lse_);
 log_storage *log_storage_create(unsigned capacity, dlogutil_sorting_order_e sort_by)
 {
        log_storage *storage = malloc(sizeof(*storage));
-       if (NULL != storage) {
-               storage->capacity = capacity;
-               storage->sort_by = sort_by;
-               storage->counter_begin = 0;
-               storage->counter_end = 0;
-               storage->entries = NULL;
-               storage->waiting_readers = NULL;
-       }
+       if (NULL == storage)
+               return NULL;
+
+       storage->capacity = capacity;
+       storage->sort_by = sort_by;
+       storage->counter_begin = 0;
+       storage->counter_end = 0;
+       storage->entries = NULL;
+       storage->waiting_readers = NULL;
 
        return storage;
 }
@@ -195,28 +196,30 @@ log_storage_reader *log_storage_new_reader(log_storage *storage,
        assert(!dumping || !monitor);
 
        log_storage_reader *reader = malloc(sizeof(*reader));
-       if (NULL != reader) {
-               reader->storage = storage;
-               reader->callback = callback;
-               reader->user_data = user_data;
-               reader->current = NULL;
-               reader->counter = storage->counter_begin;
-               reader->final = NULL;
-
-               if (dumping) {
-                       // dumping - get all the logs up to this moment
-                       if (NULL != storage->entries)
-                               reader->final = storage->entries->prev;
-                       else
-                       // but in case there are no logs - we have nothing to do
-                               reader->storage = NULL;
-               }
+       if (NULL == reader)
+               return NULL;
 
-               if (monitor)
-                       reader_move_to_entry(reader, storage->entries ? storage->entries->prev : NULL);
-               else if (NULL != reader->storage)
-                       list_add(&storage->waiting_readers, reader);
+       reader->storage = storage;
+       reader->callback = callback;
+       reader->user_data = user_data;
+       reader->current = NULL;
+       reader->counter = storage->counter_begin;
+       reader->final = NULL;
+
+       if (dumping) {
+               // dumping - get all the logs up to this moment
+               if (NULL != storage->entries)
+                       reader->final = storage->entries->prev;
+               else
+               // but in case there are no logs - we have nothing to do
+                       reader->storage = NULL;
        }
+
+       if (monitor)
+               reader_move_to_entry(reader, storage->entries ? storage->entries->prev : NULL);
+       else if (NULL != reader->storage)
+               list_add(&storage->waiting_readers, reader);
+
        return reader;
 }
 
@@ -401,13 +404,13 @@ const dlogutil_entry_s *log_storage_reader_peek_entry(log_storage_reader *reader
 {
        return NULL == reader->storage
                ? NULL
-               : NULL == reader->current
-                       ? reader->storage->entries
-                               ? &reader->storage->entries->entry
-                               : NULL
-                       : log_storage_reader_entry_is_not_last(reader, reader->current)
-                               ? &reader->current->next->entry
-                               : NULL
+       : NULL == reader->current
+               ? reader->storage->entries
+                       ? &reader->storage->entries->entry
+                       : NULL
+               : log_storage_reader_entry_is_not_last(reader, reader->current)
+                       ? &reader->current->next->entry
+                       : NULL
        ;
 }
 
index d87d776..e845c78 100644 (file)
@@ -101,12 +101,16 @@ void check_if_fd_limit_reached(struct logger *server, int err)
 
 void flush_logfile_timely(struct log_file *file, struct timespec ts, int flush_time)
 {
-       if (file->buffer.position > 0) {
-               if (ts.tv_sec - file->buffer.oldest_log.tv_sec +
-                                       (ts.tv_nsec > file->buffer.oldest_log.tv_nsec ? 1 : 0) >
-                               flush_time)
-                       logfile_flush(file);
-       }
+       if (file->buffer.position <= 0)
+               return;
+
+       const int sec_diff = ts.tv_sec - file->buffer.oldest_log.tv_sec
+               + (ts.tv_nsec > file->buffer.oldest_log.tv_nsec ? 1 : 0);
+
+       if (sec_diff <= flush_time)
+               return;
+
+       logfile_flush(file);
 }
 
 int add_reader_to_server(struct reader_common *reader, struct logger *server)
@@ -475,15 +479,13 @@ int logger_create(struct logger_config_data *data, struct logger *l, struct sign
        bool first_time;
        if (data->first_time_file_path) {
                int fd = open(data->first_time_file_path, O_CREAT | O_EXCL | O_RDONLY, 0644);
-               if (fd == -1) {
-                       if (errno == EEXIST)
-                               first_time = false;
-                       else
-                               return -errno;
-               } else {
+               if (fd != -1) {
                        first_time = true;
                        close(fd);
-               }
+               } else if (errno == EEXIST)
+                       first_time = false;
+               else
+                       return -errno;
        } else
                // If no path, assume first time
                first_time = true;
@@ -513,21 +515,25 @@ int logger_create(struct logger_config_data *data, struct logger *l, struct sign
                         * or alternatively get culled if it gets no sub-readers. */
                }
 
-       for (log_id_t id = 0; id < LOG_ID_MAX; id++)
-               if (data->is_buffer_enabled[id]) {
-                       int r = buffer_create(&l->buffers[id], id, data->buffers + id, l);
-                       if (r < 0)
-                               return r;
-               }
+       for (log_id_t id = 0; id < LOG_ID_MAX; id++) {
+               if (!data->is_buffer_enabled[id])
+                       continue;
 
-       for (log_id_t id = 0; id < LOG_ID_MAX; id++)
-               if (l->buffers[id]) {
-                       add_fd_entity(&l->epoll_common, &l->buffers[id]->sock_ctl.fd_entity);
-                       add_fd_entity(&l->epoll_common, &l->buffers[id]->sock_conn.fd_entity);
+               int r = buffer_create(&l->buffers[id], id, data->buffers + id, l);
+               if (r < 0)
+                       return r;
+       }
 
-                       add_fd_entity(&l->epoll_socket, &l->buffers[id]->sock_ctl.fd_entity);
-                       add_fd_entity(&l->epoll_socket, &l->buffers[id]->sock_conn.fd_entity);
-               }
+       for (log_id_t id = 0; id < LOG_ID_MAX; id++) {
+               if (!l->buffers[id])
+                       continue;
+
+               add_fd_entity(&l->epoll_common, &l->buffers[id]->sock_ctl.fd_entity);
+               add_fd_entity(&l->epoll_common, &l->buffers[id]->sock_conn.fd_entity);
+
+               add_fd_entity(&l->epoll_socket, &l->buffers[id]->sock_ctl.fd_entity);
+               add_fd_entity(&l->epoll_socket, &l->buffers[id]->sock_conn.fd_entity);
+       }
 
        /* TODO: make writers creation optional/configurable */
        int (*writers_factories[LOG_ID_MAX])(struct writer **writer, struct log_buffer *log_buf) = {
@@ -793,9 +799,11 @@ int prepare_config_data(struct logger_config_data *data)
                g_backend.use_logger_by_default = true;
                for (log_id_t buf_id = 0; buf_id < LOG_ID_MAX; ++buf_id) {
                        const char *const logger_device = log_config_get(&conf, log_name_by_id(buf_id));
-                       if (logger_device)
-                               strncpy(g_backend.logger_devices[buf_id], logger_device,
-                                       NELEMS(g_backend.logger_devices[buf_id]) - 1);
+                       if (!logger_device)
+                               continue;
+
+                       strncpy(g_backend.logger_devices[buf_id], logger_device,
+                               NELEMS(g_backend.logger_devices[buf_id]) - 1);
                }
                g_backend.lazy_polling_total = log_config_get_int(&conf, "lazy_polling_total_ms", DEFAULT_LAZY_POLLING_TOTAL_MS);
                g_backend.lazy_polling_sleep = log_config_get_int(&conf, "lazy_polling_sleep_ms", DEFAULT_LAZY_POLLING_SLEEP_MS);
@@ -824,11 +832,12 @@ int prepare_config_data(struct logger_config_data *data)
                dev_log_sock_get() >= 0 || log_config_get_boolean(&conf, "syslog_force", false);
 
        for (log_id_t buf_id = 0; buf_id < LOG_ID_MAX; ++buf_id) {
-               if (data->is_buffer_enabled[buf_id]) {
-                       ret = prepare_buffer_data(&conf, data->buffers + buf_id, buf_id);
-                       if (ret < 0)
-                               goto end;
-               }
+               if (!data->is_buffer_enabled[buf_id])
+                       continue;
+
+               ret = prepare_buffer_data(&conf, data->buffers + buf_id, buf_id);
+               if (ret < 0)
+                       goto end;
        }
        log_config_foreach(&conf, save_logfile_config, data);
 
index e4ee17c..34bfba8 100644 (file)
@@ -125,14 +125,15 @@ void socket_close(struct sock_data *sock)
 
 int systemd_sock_get(const char *path, int type)
 {
-       int sock_fd = -1;
        int n = sd_listen_fds(0);
-       if (n > 0) {
-               int i;
-               for (i = SD_LISTEN_FDS_START; sock_fd < 0 && i < SD_LISTEN_FDS_START + n; i++)
-                       if (sd_is_socket_unix(i, type, -1, path, 0) > 0)
-                               sock_fd = i;
-       }
+       if (n <= 0)
+               return -1;
+
+       int sock_fd = -1;
+       for (int i = SD_LISTEN_FDS_START; sock_fd < 0 && i < SD_LISTEN_FDS_START + n; i++)
+               if (sd_is_socket_unix(i, type, -1, path, 0) > 0)
+                       sock_fd = i;
+
        return sock_fd;
 }
 
index 27a98cf..244b48e 100644 (file)
@@ -95,7 +95,7 @@ void dispatch_event_writer(struct logger *server, struct epoll_event *event, voi
  * @return 0 on success, -ENOMEM when out of memory
  */
 int writer_create(struct writer **writer, int fd, struct log_buffer *log_buffer,
-                                                service_writer_t service_writer, service_socket_t service_socket)
+       service_writer_t service_writer, service_socket_t service_socket)
 {
        struct writer *w = (struct writer *)calloc(1, sizeof(*w));
        if (!w)
index 608928a..1780539 100644 (file)
@@ -24,7 +24,7 @@ struct writer {
 #undef LARGEST_STRUCT
 
 int writer_create(struct writer **writer, int fd, struct log_buffer *log_buffer,
-                                                service_writer_t service_writer, service_socket_t service_socket);
+       service_writer_t service_writer, service_socket_t service_socket);
 int create_kmsg_writer(struct writer **writer, struct log_buffer *log_buffer);
 int create_syslog_writer(struct writer **writer, struct log_buffer *log_buffer);
 void writer_close_fd(struct logger *server, struct writer *wr);