[4.0] Unduplicate code 12/88212/19
authorMichal Bloch <m.bloch@samsung.com>
Tue, 13 Sep 2016 13:12:33 +0000 (15:12 +0200)
committerMichal Bloch <m.bloch@samsung.com>
Thu, 16 Mar 2017 13:52:08 +0000 (14:52 +0100)
Change-Id: I72c9e8fe08f960fa7a2766b91ab2a72e8d2891b6
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
include/log_file.h
src/logger/logger.c
src/logutil/logutil.c
src/shared/log_file.c

index 366e1a3..b98ce84 100644 (file)
@@ -34,5 +34,6 @@ struct log_file {
 
 void open_logfile(struct log_file *file);
 void rotate_logs(struct log_file *file);
+int write_with_rotation(struct logger_entry *e, struct log_file *file);
 
 #endif /* _LOG_FILE_H */
index 753651e..9a5865c 100644 (file)
@@ -741,6 +741,11 @@ static int print_out_logs(struct reader* reader, struct log_buffer* buffer)
                from += ple->len;
                from %= buffer->size;
 
+               if (plaintext) {
+                       write_with_rotation(ple, &reader->file);
+                       continue;
+               }
+
                priority = ple->msg[0];
                if (priority < 0 || priority > DLOG_SILENT)
                        continue;
@@ -765,15 +770,6 @@ static int print_out_logs(struct reader* reader, struct log_buffer* buffer)
                                        ret = 1;
                                goto cleanup_remove;
                        }
-               } else if (plaintext) {
-                       log_entry le;
-                       r = !log_process_log_buffer(ple, &le) && log_should_print_line(reader->file.format, le.tag, le.priority);
-                       if (r)
-                               r = log_print_log_line(reader->file.format, reader->file.fd, &le);
-                       else {
-                               ret = 1;
-                               goto cleanup_remove;
-                       }
                } else {
                        if (g_file_buffer.len + ple->len >= BUFFER_MAX)
                                if (write_blob_to_file(reader, &g_file_buffer) < 0)
@@ -785,22 +781,20 @@ static int print_out_logs(struct reader* reader, struct log_buffer* buffer)
                }
                reader->file.size += r;
 
-               if (!plaintext && r < ple->len) {
+               if (r < ple->len) {
                        reader->partial_log_size = ple->len - r;
                        memcpy(reader->partial_log, ple + r, reader->partial_log_size);
                        goto cleanup_remove;
                } else if ((reader->file.rotate_size_kbytes > 0) &&
                                (BtoKiB(reader->file.size) >= reader->file.rotate_size_kbytes)) {
-                       if (!plaintext && write_blob_to_file(reader, &g_file_buffer) < 0)
+                       if (write_blob_to_file(reader, &g_file_buffer) < 0)
                                goto cleanup_remove;
 
                        rotate_logs(&reader->file);
-                       if (!plaintext) {
-                               r = add_misc_file_info(reader->file.fd);
-                               if (r < 0) {
-                                       ret = 1;
-                                       goto cleanup_remove;
-                               }
+                       r = add_misc_file_info(reader->file.fd);
+                       if (r < 0) {
+                               ret = 1;
+                               goto cleanup_remove;
                        }
                }
        }
@@ -951,22 +945,8 @@ static int service_reader_file(struct logger * server, struct reader* reader)
 
                        add_recv_timestamp(entry);
 
-                       if (r) {
-                               log_entry le;
-                               if (entry->len > (sizeof(struct logger_entry) + 2)
-                               && entry->msg[0] >= 0 && entry->msg[0] <= DLOG_SILENT
-                               && strlen(entry->msg + 1)
-                               && log_should_print_line(reader->file.format, entry->msg + 1, entry->msg[0])
-                               && !log_process_log_buffer(entry, &le)) {
-                                       int written_bytes = log_print_log_line(reader->file.format, reader->file.fd, &le);
-                                       if (written_bytes > 0) {
-                                               reader->file.size += written_bytes;
-                                               if ((reader->file.rotate_size_kbytes > 0) &&
-                                                               (BtoKiB(reader->file.size) >= reader->file.rotate_size_kbytes))
-                                                       rotate_logs(&reader->file);
-                                       }
-                               }
-                       }
+                       if (r)
+                               write_with_rotation((struct logger_entry *) buffer, &reader->file);
                }
        }
 
index 21dde95..da76fd0 100644 (file)
@@ -294,14 +294,7 @@ static int process_log(struct logger_entry *e, struct logger_entry *last)
        }
 
        if (sort_timeout <= (s*1000 + ns/1000000)) {
-               log_entry entry;
-               if (log_process_log_buffer(e, & entry) || !log_should_print_line(l_file.format, entry.tag, entry.priority))
-                       return 1;
-               int written_bytes = log_print_log_line(l_file.format, l_file.fd, & entry);
-               if (written_bytes > 0)
-                       l_file.size += written_bytes;
-               if ((l_file.rotate_size_kbytes > 0) && (BtoKiB(l_file.size) >= l_file.rotate_size_kbytes))
-                       rotate_logs(&l_file);
+               write_with_rotation(e, &l_file);
                return 1;
        } else
                return 0;
@@ -464,24 +457,17 @@ static void handle_pipe(struct fd_info **data_fds, int fd_count, int dump)
                        memcpy(temp, fdi->buff, e->len);
                        fdi->index -= e->len;
                        memmove(fdi->buff, fdi->buff + e->len, RECEIVE_BUFFER_SIZE - e->len);
+
                        if (fdi->do_sorting) {
                                if (push_log(temp) < 0)
                                        free(temp);
                        } else {
-                               log_entry entry;
-                               if (!log_process_log_buffer(temp, &entry) && log_should_print_line(l_file.format, entry.tag, entry.priority)) {
-                                       r = log_print_log_line(l_file.format, l_file.fd, &entry);
-                                       if (r > 0)
-                                               l_file.size += r;
-                                       if ((l_file.rotate_size_kbytes > 0) &&
-                                                       (BtoKiB(l_file.size) >= l_file.rotate_size_kbytes))
-                                               rotate_logs(&l_file);
-                                       if (dump && !--dump) {
-                                               looping = 0;
-                                               break;
-                                       }
-                               }
+                               int write_err = write_with_rotation(temp, &l_file);
                                free(temp);
+                               if (!write_err && dump && !--dump) {
+                                       looping = 0;
+                                       break;
+                               }
                        }
                }
        }
index af398be..a8801e5 100644 (file)
@@ -76,5 +76,26 @@ void rotate_logs(struct log_file *file)
 }
 
 /**
+ * @brief Write with rotation
+ * @details Writes the entry to given file, automatically handling file rotation
+ * @param[in] e The entry to write
+ * @param[in] file The file to write to
+ * @returns 0 if log was successfully written, else 1
+ */
+int write_with_rotation(struct logger_entry* e, struct log_file* file)
+{
+       log_entry entry;
+       if (log_process_log_buffer(e, &entry) || !log_should_print_line(file->format, entry.tag, entry.priority))
+               return 1;
+       int written_bytes = log_print_log_line(file->format, file->fd, &entry);
+       if (written_bytes <= 0)
+               return 1;
+       file->size += written_bytes;
+       if ((file->rotate_size_kbytes > 0) && (BtoKiB(file->size) >= file->rotate_size_kbytes))
+               rotate_logs(file);
+       return 0;
+}
+
+/**
  * @}
  */