From b6ed011ee153bb698d176019e9c2fbedeacad5fa Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@redhat.com>
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 <jfilak@redhat.com>
---
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