From b6ed011ee153bb698d176019e9c2fbedeacad5fa Mon Sep 17 00:00:00 2001 From: Jakub Filak Date: Thu, 19 Mar 2015 08:35:38 +0100 Subject: [PATCH] applet: get the list of problems through D-Bus service The default dump location directory is not iterable for regular users. I cherry-picked and merged these two commits: 57895ccd0c6289faada8e5f3327e276ffded46b5 3484123353de0d77745d348cd371c317e9a52483 Signed-off-by: Jakub Filak --- src/applet/applet.c | 47 +++-------------------------------------------- 1 file changed, 3 insertions(+), 44 deletions(-) diff --git a/src/applet/applet.c b/src/applet/applet.c index 644da60..3198ae5 100644 --- a/src/applet/applet.c +++ b/src/applet/applet.c @@ -70,7 +70,6 @@ enum static GDBusConnection *g_system_bus; static GtkStatusIcon *ap_status_icon; static GtkWidget *ap_menu; -static char **s_dirs; static GList *g_deferred_crash_queue; static guint g_deferred_timeout; static int g_signal_pipe[2]; @@ -429,29 +428,6 @@ static char *build_message(problem_info_t *pi) return msg; } -static GList *add_dirs_to_dirlist(GList *dirlist, const char *dirname) -{ - DIR *dir = opendir(dirname); - if (!dir) - return dirlist; - - struct dirent *dent; - while ((dent = readdir(dir)) != NULL) - { - if (dot_or_dotdot(dent->d_name)) - continue; - char *full_name = concat_path_file(dirname, dent->d_name); - struct stat statbuf; - if (lstat(full_name, &statbuf) == 0 && S_ISDIR(statbuf.st_mode)) - dirlist = g_list_prepend(dirlist, full_name); - else - free(full_name); - } - closedir(dir); - - return g_list_reverse(dirlist); -} - /* Compares the problem directories to list saved in * $XDG_CACHE_HOME/abrt/applet_dirlist and updates the applet_dirlist * with updated list. @@ -461,13 +437,9 @@ static GList *add_dirs_to_dirlist(GList *dirlist, const char *dirname) */ static void new_dir_exists(GList **new_dirs) { - GList *dirlist = NULL; - char **pp = s_dirs; - while (*pp) - { - dirlist = add_dirs_to_dirlist(dirlist, *pp); - pp++; - } + GList *dirlist = get_problems_over_dbus(/*don't authorize*/false); + if (dirlist == ERR_PTR) + return; const char *cachedir = g_get_user_cache_dir(); char *dirlist_name = concat_path_file(cachedir, "abrt"); @@ -1660,19 +1632,6 @@ int main(int argc, char** argv) load_event_config_data(); load_user_settings("abrt-applet"); - const char *default_dirs[] = { - g_settings_dump_location, - NULL, - NULL, - }; - argv += optind; - if (!argv[0]) - { - default_dirs[1] = concat_path_file(g_get_user_cache_dir(), "abrt/spool"); - argv = (char**)default_dirs; - } - s_dirs = argv; - /* Initialize our (dbus_abrt) machinery: hook _system_ dbus to glib main loop. * (session bus is left to be handled by libnotify, see below) */ DBusError err; -- 2.1.0