Redirect command's output to not pollute standard output 02/206402/2
authorKarol Lewandowski <k.lewandowsk@samsung.com>
Fri, 17 May 2019 09:53:46 +0000 (11:53 +0200)
committerKarol Lewandowski <k.lewandowsk@samsung.com>
Fri, 17 May 2019 11:39:37 +0000 (13:39 +0200)
This alters default redirections of following commands:

 - zip - all descriptors redirected to /dev/null
 - minicoredumper, dump_systemstate - standard output redirected to stderr

Change-Id: I723ddb78baca6d58decbc1b1219f7cd5b8d5c9ae

src/crash-manager/crash-manager.c
src/log_dump/log_dump.c

index 5eb8d6b..de63b5d 100644 (file)
@@ -463,7 +463,8 @@ static void launch_crash_popup(struct crash_info *cinfo)
 static bool dump_system_state(const struct crash_info *cinfo, pid_t *pid)
 {
        char *av[] = {"/usr/bin/dump_systemstate", "-d", "-k", "-j", "-p", "-e", "-f",  cinfo->log_path, NULL};
-       return spawn(av, NULL, NULL, pid, NULL);
+       spawn_param_s param = { .fn = spawn_setstdout, .u.int_val = STDERR_FILENO };
+       return spawn(av, NULL, &param, pid, NULL);
 }
 
 static void save_so_info(const struct crash_info *cinfo)
@@ -586,7 +587,8 @@ static bool execute_minicoredump(struct crash_info *cinfo, int *exit_code)
                        NULL
                        };
 
-       is_ok = spawn_wait(args, NULL, NULL, MINICOREDUMPER_TIMEOUT_MS, exit_code);
+       spawn_param_s param = { .fn = spawn_setstdout, .u.int_val = STDERR_FILENO };
+       is_ok = spawn_wait(args, NULL, &param, MINICOREDUMPER_TIMEOUT_MS, exit_code);
 
        /* Minicoredumper must be executed to dump at least PRSTATUS for
           other tools, coredump, however, might have been disabled. */
@@ -914,7 +916,8 @@ static void compress(struct crash_info *cinfo)
        }
 
        char *args[] = {"/bin/zip", "-qyr", zip_path, cinfo->name, NULL};
-       spawn_param_s param0 = { .fn = spawn_chdir, .u.char_ptr = cinfo->temp_dir };
+       spawn_param_s param1 = { .fn = spawn_nullstdfds };
+       spawn_param_s param0 = { .fn = spawn_chdir, .u.char_ptr = cinfo->temp_dir, .next = &param1 };
        (void)spawn_wait(args, NULL, &param0, ZIP_TIMEOUT_MS, NULL);
 
        if ((lock_fd = lock_dumpdir()) < 0)
index f50bf14..bc06957 100644 (file)
@@ -205,7 +205,8 @@ static bool dump_systemstate(const char *const destdir, const char *const timest
        }
 
        char *av[] = {"/usr/bin/dump_systemstate", "-k", "-d", "-j", "-e", "-f", dump_path, NULL};
-       bool is_ok = spawn_wait(av, NULL, NULL, 0, exit_code);
+       spawn_param_s param = { .fn = spawn_setstdout, .u.int_val = STDERR_FILENO };
+       bool is_ok = spawn_wait(av, NULL, &param, 0, exit_code);
 
        free(dump_path);
 
@@ -223,7 +224,8 @@ static bool compress(char *const destdir, char *const tempdir, char *const versi
 
        _D("compress tempdir is %s", tempdir);
        char *av[] = {"/bin/zip", "-qyr", archive_path, ".", NULL};
-       spawn_param_s param0 = { .fn = spawn_chdir, .u.char_ptr = tempdir };
+       spawn_param_s param1 = { .fn = spawn_nullstdfds };
+       spawn_param_s param0 = { .fn = spawn_chdir, .u.char_ptr = tempdir, .next = &param1 };
        bool is_ok = spawn_wait(av, NULL, &param0, 0, exit_code);
 
        _I("Storing report at %s", archive_path);