Refactor vector operations into functions 34/140834/1
authorMichal Bloch <m.bloch@samsung.com>
Wed, 26 Jul 2017 11:15:44 +0000 (13:15 +0200)
committerMichal Bloch <m.bloch@samsung.com>
Wed, 26 Jul 2017 12:04:34 +0000 (14:04 +0200)
Change-Id: I604bfdda6a8eeaf60dd5e0f58dfd01f86a77790b
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
src/logutil/logutil.c

index d842701..248cd78 100644 (file)
@@ -92,6 +92,17 @@ struct fd_info {
        char buff[RECEIVE_BUFFER_SIZE];
 };
 
+static inline int sort_vector_empty(struct sorting_vector *logs)
+{
+       return logs->last_processed == logs->size;
+}
+
+static inline void sort_vector_pop(struct sorting_vector *logs)
+{
+       free(logs->data[logs->last_processed]);
+       logs->last_processed = (logs->last_processed + 1) % sort_buffer_size;
+}
+
 /**
  * @brief Create struct fd_info
  * @details Allocates memory for the struct and initializes it with given arguments
@@ -138,10 +149,8 @@ static int push_log(struct logger_entry * p, struct log_file *l_file, struct sor
                !log_should_print_line(l_file->format, entry.tag, entry.priority))
                return -EPERM;
 
-       if ((logs->size + 1) % sort_buffer_size == logs->last_processed) {
-               free(logs->data[logs->last_processed]);
-               logs->last_processed = (logs->last_processed + 1) % sort_buffer_size;
-       }
+       if ((logs->size + 1) % sort_buffer_size == logs->last_processed)
+               sort_vector_pop(logs);
 
        for (i = logs->size; i > logs->last_processed || (logs->size < logs->last_processed && i <= logs->size); --i) {
                struct logger_entry * e = logs->data[(i ?: sort_buffer_size)-1];
@@ -403,15 +412,14 @@ static void handle_pipe(struct fd_info **data_fds, int fd_count, int dump, struc
                        }
                } else {
                        int last_printed = logs->last_processed;
-                       while (!filled && logs->last_processed != logs->size)
+                       while (!filled && !sort_vector_empty(logs))
                                if (process_log(logs->data[logs->last_processed],
                                                        logs->data[(logs->size ?: sort_buffer_size) - 1],
-                                                       l_file)) {
-                                       free(logs->data[logs->last_processed]);
-                                       logs->last_processed = (logs->last_processed + 1) % sort_buffer_size;
-                               } else
+                                                       l_file))
+                                       sort_vector_pop(logs);
+                               else
                                        break;
-                       if (last_printed == logs->last_processed && logs->last_processed != logs->size) {
+                       if (last_printed == logs->last_processed && !sort_vector_empty(logs)) {
                                resttime += timeout;
                                if (resttime >= DEFAULT_SORT_TIMEOUT)
                                        sort_timeout = 0;
@@ -423,7 +431,7 @@ static void handle_pipe(struct fd_info **data_fds, int fd_count, int dump, struc
                }
 
                if (!accepting_logs) {
-                       if (logs->last_processed == logs->size)
+                       if (sort_vector_empty(logs))
                                break;
                        else
                                continue;