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