dlogutil : do not sort when it prints logs about only one buffer or tag 51/100951/2
authorKichan Kwon <k_c.kwon@samsung.com>
Wed, 30 Nov 2016 02:16:06 +0000 (11:16 +0900)
committerKichan Kwon <k_c.kwon@samsung.com>
Tue, 6 Dec 2016 01:06:33 +0000 (10:06 +0900)
- Each dlog buffer is FIFO queue, so dlogutil don't have to sort in this case
- Also, we can assume that logs having same tag are stored in the same buffer

Change-Id: I0db5bc6162903749007f514f9d06c16967bee696
Signed-off-by: Kichan Kwon <k_c.kwon@samsung.com>
src/logutil/logutil.c

index 37ccde1..a515229 100644 (file)
@@ -687,6 +687,7 @@ int main(int argc, char ** argv)
        int fdi_cnt = 0;
        int i;
        int option;
+       int tag_cnt = 0;
 
        l_file.fd = 1;
        l_file.format = log_format_new();
@@ -787,8 +788,12 @@ int main(int argc, char ** argv)
        }
 
        if (optind < argc)
-               while (optind < argc)
-                       log_add_filter_string(l_file.format, argv[optind++]);
+               while (optind < argc) {
+                       log_add_filter_string(l_file.format, argv[optind]);
+                       if (argv[optind][0] != '*')
+                               tag_cnt++;
+                       optind++;
+               }
        else if (!silence)
                log_add_filter_string(l_file.format, "*:D");
 
@@ -858,8 +863,11 @@ int main(int argc, char ** argv)
                        fdi = process_buffer_pipe(buffer_names[i], should_clear, &conf, argc, argv);
                else
                        fdi = process_buffer_nonpipe(buffer_names[i], should_clear, &conf, argc, argv, !strcmp(conf_value, "kmsg"));
-               if (fdi)
+               if (fdi) {
                        fdi_ptrs[fdi_cnt++] = fdi;
+                       if (buffer_cnt == 1 || tag_cnt == 1)
+                               fdi->do_sorting = 0;
+               }
                free(buffer_names[i]);
        }