diff options
author | Mateusz Moscicki <m.moscicki2@partner.samsung.com> | 2019-10-14 13:04:56 +0200 |
---|---|---|
committer | Mateusz Moscicki <m.moscicki2@partner.samsung.com> | 2019-11-22 17:17:49 +0100 |
commit | 4c455c0ee6c878e2744ab805713085ace2b11124 (patch) | |
tree | 2fc6dc489d16e88abdbe7b6f6351ecd49b18b8da | |
parent | fb82402605a99d29c03324722979e17c3e9a155f (diff) | |
download | crash-worker-4c455c0ee6c878e2744ab805713085ace2b11124.tar.gz crash-worker-4c455c0ee6c878e2744ab805713085ace2b11124.tar.bz2 crash-worker-4c455c0ee6c878e2744ab805713085ace2b11124.zip |
dump_systemstate: Add flag to dump_systemstate to determine whether to run buxton2ctl or not
The next commit introduces a change that causes the crash-service not to
have to be run as root, so there is need for another way to determine if
dmesg or buxton2ctl should be run.
Change-Id: I56df8f4dd1b9d8a2f6f072c886e8fa26dda0a317
-rw-r--r-- | src/crash-manager/crash-manager.c | 2 | ||||
-rw-r--r-- | src/dump_systemstate/dump_systemstate.c | 16 |
2 files changed, 11 insertions, 7 deletions
diff --git a/src/crash-manager/crash-manager.c b/src/crash-manager/crash-manager.c index 8bf424a..bd402a1 100644 --- a/src/crash-manager/crash-manager.c +++ b/src/crash-manager/crash-manager.c @@ -444,7 +444,7 @@ static void launch_crash_popup(struct crash_info *cinfo) static bool dump_system_state(const struct crash_info *cinfo, pid_t *pid) { - char *av[] = {DUMP_SYSTEMSTATE_BIN_PATH, "-d", "-k", "-j", "-p", "-e", "-f", cinfo->log_path, NULL}; + char *av[] = {DUMP_SYSTEMSTATE_BIN_PATH, "-d", "-k", "-j", "-p", "-e", "-f", cinfo->log_path, "-b", NULL}; spawn_param_s param = { .fn = spawn_setstdout, .u.int_val = STDERR_FILENO }; return spawn(av, NULL, ¶m, pid, NULL); } diff --git a/src/dump_systemstate/dump_systemstate.c b/src/dump_systemstate/dump_systemstate.c index f971350..9a0c3ef 100644 --- a/src/dump_systemstate/dump_systemstate.c +++ b/src/dump_systemstate/dump_systemstate.c @@ -59,7 +59,8 @@ static struct dump_item { static void usage() { - fprintf(stderr, "usage: dump_systemstate [-k] [-d] [-j] [-p] [-e] [-f file]\n" + fprintf(stderr, "usage: dump_systemstate [-b] [-k] [-d] [-j] [-p] [-e] [-f file]\n" + " -b: dump Buxton data\n" " -f: write to file (instead of stdout)\n" " -k: dump kernel messages (only root)\n" " -d: dump dlog messages\n" @@ -89,9 +90,10 @@ static int get_disk_used_percent(const char *path) int main(int argc, char *argv[]) { - int c, ret, i, is_root, dpercent, exit_code = 0; + int c, ret, i, dpercent, exit_code = 0; const char *arg_file = NULL; int out_fd = -1; + bool arg_buxton = false; bool arg_dlog = false; bool arg_dmesg = false; bool arg_extras = false; @@ -102,8 +104,11 @@ int main(int argc, char *argv[]) struct tm gm_tm; struct tm loc_tm; - while ((c = getopt(argc, argv, "hf:kdjep")) != -1) { + while ((c = getopt(argc, argv, "hf:kdbjep")) != -1) { switch (c) { + case 'b': + arg_buxton = true; + break; case 'd': arg_dlog = true; break; @@ -134,7 +139,6 @@ int main(int argc, char *argv[]) cur_time = time(NULL); gmtime_r(&cur_time, &gm_tm); localtime_r(&cur_time, &loc_tm); - is_root = !(geteuid()); /* open output file */ if (arg_file == NULL) { @@ -204,7 +208,7 @@ int main(int argc, char *argv[]) char *memps_args[] = {"/bin/memps", "-v", NULL}; spawn_wait_checked(memps_args, NULL); - if (is_root) { + if (arg_buxton) { fprintf_fd(out_fd, "\n==== System configuration (/usr/bin/buxton2ctl dump memory, system)\n"); char *get_mem_args[] = {"/bin/buxton2ctl", "dump", "memory", NULL}; spawn_wait_checked(get_mem_args, NULL); @@ -219,7 +223,7 @@ int main(int argc, char *argv[]) spawn_wait_checked(pkgcmd_args, NULL); } - if (arg_dmesg && is_root) { + if (arg_dmesg) { fprintf_fd(out_fd, "\n==== Kernel messages (TZ=UTC /bin/dmesg -T)\n"); char *dmesg_args[] = {"/bin/dmesg", "-T", NULL}; char *dmesg_env[] = {"TZ=UTC", NULL}; |