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