Extract log pushing out of the main loop. 78/158078/1
authorMichal Bloch <m.bloch@samsung.com>
Fri, 27 Oct 2017 15:54:34 +0000 (17:54 +0200)
committerMichal Bloch <m.bloch@samsung.com>
Fri, 27 Oct 2017 15:56:55 +0000 (17:56 +0200)
Change-Id: Ic9ebb1eee62f08e612ca9b3f70288784e193ad9c
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
src/logutil/logutil.c

index ad8ded6..f7badbf 100755 (executable)
@@ -487,6 +487,28 @@ static struct logger_entry *fdi_extract_entry(struct fd_info *fdi)
        return new_le;
 }
 
+static int fdi_push_log(struct fd_info *fdi, int *dump, struct sorting_vector *logs, struct log_file *l_file)
+{
+       assert(fdi);
+       assert(dump);
+       assert(l_file);
+
+       struct logger_entry *temp = fdi_extract_entry(fdi);
+       if (!temp)
+               return -ENOMEM;
+
+       if (fdi->do_sorting) {
+               push_log(temp, l_file, logs);
+       } else {
+               int write_err = logfile_write_with_rotation(temp, l_file);
+               free(temp);
+               if (!write_err && *dump && !--*dump)
+                       return 1;
+       }
+
+       return 0;
+}
+
 /**
  * @brief Handle input
  * @details The main loop reading log data
@@ -603,24 +625,11 @@ static void handle_pipe(struct fd_info **data_fds, int fd_count, int dump, struc
                        }
                }
 
-               while (fdi_has_log(fdi)) {
-                       struct logger_entry *temp = fdi_extract_entry(fdi);
-                       if (!temp) {
+               while (fdi_has_log(fdi))
+                       if (fdi_push_log(fdi, &dump, logs, l_file)) {
                                looping = 0;
                                break;
                        }
-
-                       if (fdi->do_sorting) {
-                               push_log(temp, l_file, logs);
-                       } else {
-                               int write_err = logfile_write_with_rotation(temp, l_file);
-                               free(temp);
-                               if (!write_err && dump && !--dump) {
-                                       looping = 0;
-                                       break;
-                               }
-                       }
-               }
        }
 }