From 62e33cfc37635d985c186c8e5aaf1101070f9ccf Mon Sep 17 00:00:00 2001 From: netblue30 Date: Thu, 21 Apr 2022 11:41:40 -0400 Subject: more on firecfg --guide --- src/firecfg/main.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'src/firecfg/main.c') diff --git a/src/firecfg/main.c b/src/firecfg/main.c index 0072c2768..19f2573f3 100644 --- a/src/firecfg/main.c +++ b/src/firecfg/main.c @@ -22,6 +22,7 @@ #include "../include/firejail_user.h" int arg_debug = 0; char *arg_bindir = "/usr/local/bin"; +int arg_guide = 0; static char *usage_str = "Firecfg is the desktop configuration utility for Firejail software. The utility\n" @@ -375,8 +376,7 @@ int main(int argc, char **argv) { return 0; } else if (strcmp(argv[i], "--guide") == 0) { - return system(LIBDIR "/firejail/firejail-welcome.sh"); - return 0; + arg_guide = 1; } else if (strcmp(argv[i], "--list") == 0) { list(); @@ -442,6 +442,19 @@ int main(int argc, char **argv) { umask(orig_umask); } + if (arg_guide) { + int status = system("sudo "LIBDIR "/firejail/firejail-welcome.sh zenity " SYSCONFDIR); + if (status == -1) { + fprintf(stderr, "Error: cannot run firejail-welcome.sh\n"); + exit(1); + } + + // the last 8 bits of the status is the return value of the command executed by system() + // firejail-welcome.sh returns 55 if setting sysmlinks is required + if (WEXITSTATUS(status) != 55) + return 0; + } + // clear all symlinks clean(); @@ -473,8 +486,6 @@ int main(int argc, char **argv) { #endif } - - // set new symlinks based on ~/.config/firejail directory set_links_homedir(home); -- cgit v1.2.3-54-g00ecf