summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMateusz Moscicki <m.moscicki2@partner.samsung.com>2019-10-14 13:04:56 +0200
committerMateusz Moscicki <m.moscicki2@partner.samsung.com>2019-11-22 17:17:49 +0100
commit4c455c0ee6c878e2744ab805713085ace2b11124 (patch)
tree2fc6dc489d16e88abdbe7b6f6351ecd49b18b8da
parentfb82402605a99d29c03324722979e17c3e9a155f (diff)
downloadcrash-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.c2
-rw-r--r--src/dump_systemstate/dump_systemstate.c16
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, &param, 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};