Jakub Filak 757669c
From 3829489cd5f74f4b9f7e1567fee941123aa77987 Mon Sep 17 00:00:00 2001
Jakub Filak 757669c
From: Jakub Filak <jfilak@redhat.com>
Jakub Filak 757669c
Date: Wed, 27 Aug 2014 08:45:24 +0200
Jakub Filak 757669c
Subject: [PATCH 21/24] a-a-s-p-data: reduce amount of error messages
Jakub Filak 757669c
Jakub Filak 757669c
Read each GPG key only once. The GPG key dirs may contain many symlinks
Jakub Filak 757669c
and if their target cannot be read, then we print an error message for
Jakub Filak 757669c
every symlink pointing to the unreadable file. What's worse, the error
Jakub Filak 757669c
messages show a path to the target, so users see several identical
Jakub Filak 757669c
messages in the system logs.
Jakub Filak 757669c
Jakub Filak 757669c
Related to rhbz#1133674
Jakub Filak 757669c
Jakub Filak 757669c
Signed-off-by: Jakub Filak <jfilak@redhat.com>
Jakub Filak 757669c
---
Jakub Filak 757669c
 src/daemon/abrt-action-save-package-data.c | 16 +++++++++++-----
Jakub Filak 757669c
 1 file changed, 11 insertions(+), 5 deletions(-)
Jakub Filak 757669c
Jakub Filak 757669c
diff --git a/src/daemon/abrt-action-save-package-data.c b/src/daemon/abrt-action-save-package-data.c
Jakub Filak 757669c
index 6dbcfc2..cc86327 100644
Jakub Filak 757669c
--- a/src/daemon/abrt-action-save-package-data.c
Jakub Filak 757669c
+++ b/src/daemon/abrt-action-save-package-data.c
Jakub Filak 757669c
@@ -91,16 +91,22 @@ static void load_gpg_keys(void)
Jakub Filak 757669c
     if (strcmp(gpg_keys_dir, "") != 0)
Jakub Filak 757669c
     {
Jakub Filak 757669c
         log_debug("Reading gpg keys from '%s'", gpg_keys_dir);
Jakub Filak 757669c
+        GHashTable *done_set = g_hash_table_new(g_str_hash, g_str_equal);
Jakub Filak 757669c
         GList *gpg_files = get_file_list(gpg_keys_dir, NULL /* we don't care about the file ext */);
Jakub Filak 757669c
-        GList *tmp_gpp_files = gpg_files;
Jakub Filak 757669c
-        while (tmp_gpp_files)
Jakub Filak 757669c
+        for (GList *iter = gpg_files; iter; iter = g_list_next(iter))
Jakub Filak 757669c
         {
Jakub Filak 757669c
-            log_debug("Loading gpg key '%s'", fo_get_fullpath((file_obj_t *)tmp_gpp_files->data));
Jakub Filak 757669c
-            settings_setOpenGPGPublicKeys = g_list_append(settings_setOpenGPGPublicKeys, xstrdup(fo_get_fullpath((file_obj_t *)(tmp_gpp_files->data)) ));
Jakub Filak 757669c
-            tmp_gpp_files = g_list_next(tmp_gpp_files);
Jakub Filak 757669c
+            const char *key_path = fo_get_fullpath((file_obj_t *)iter->data);
Jakub Filak 757669c
+
Jakub Filak 757669c
+            if (g_hash_table_contains(done_set, key_path))
Jakub Filak 757669c
+                continue;
Jakub Filak 757669c
+
Jakub Filak 757669c
+            g_hash_table_insert(done_set, (gpointer)key_path, NULL);
Jakub Filak 757669c
+            log_debug("Loading gpg key '%s'", key_path);
Jakub Filak 757669c
+            settings_setOpenGPGPublicKeys = g_list_append(settings_setOpenGPGPublicKeys, xstrdup(key_path));
Jakub Filak 757669c
         }
Jakub Filak 757669c
 
Jakub Filak 757669c
         g_list_free_full(gpg_files, (GDestroyNotify)free_file_obj);
Jakub Filak 757669c
+        g_hash_table_destroy(done_set);
Jakub Filak 757669c
     }
Jakub Filak 757669c
 }
Jakub Filak 757669c
 
Jakub Filak 757669c
-- 
Jakub Filak 757669c
2.1.0
Jakub Filak 757669c