From b225ea7ff5666634ed094797f82af2dec045bf7f Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Nov 03 2016 05:44:26 +0000 Subject: import abrt-2.1.11-45.el7 --- diff --git a/SOURCES/0079-cli-mark-the-suggestion-text-for-translation.patch b/SOURCES/0079-cli-mark-the-suggestion-text-for-translation.patch index 29e48cb..0b54f56 100644 --- a/SOURCES/0079-cli-mark-the-suggestion-text-for-translation.patch +++ b/SOURCES/0079-cli-mark-the-suggestion-text-for-translation.patch @@ -1,7 +1,7 @@ From 187530c4df6971927d1e099584be5b418ab2725b Mon Sep 17 00:00:00 2001 From: Jakub Filak Date: Fri, 12 Dec 2014 14:19:49 +0100 -Subject: [PATCH] cli: mark the suggestion text for translation +Subject: [ABRT PATCH 79/82] cli: mark the suggestion text for translation Related: #1087880 diff --git a/SOURCES/0206-augeas-augtool-save-files-etc-abrt-plugins-oops.conf.patch b/SOURCES/0206-augeas-augtool-save-files-etc-abrt-plugins-oops.conf.patch new file mode 100644 index 0000000..d0bfe83 --- /dev/null +++ b/SOURCES/0206-augeas-augtool-save-files-etc-abrt-plugins-oops.conf.patch @@ -0,0 +1,36 @@ +From 6ddbf69d4b9e1e79f404b1e9ef6ade5511b0f758 Mon Sep 17 00:00:00 2001 +From: Matej Habrnal +Date: Thu, 24 Mar 2016 10:44:20 +0100 +Subject: [PATCH] augeas: augtool save + /files/etc/abrt/plugins/oops.conf/DropNotReportableOopses + +Without this commit it was not possible to seve +/files/etc/abrt/plugins/oops.conf/DropNotReportableOopses. + +Related to rhbz#1175679 + +- thanks to Dominic Cleal for the patch + +Signed-off-by: Matej Habrnal +--- + augeas/abrt.aug | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/augeas/abrt.aug b/augeas/abrt.aug +index 1f95b7f..6eadd3e 100644 +--- a/augeas/abrt.aug ++++ b/augeas/abrt.aug +@@ -4,8 +4,10 @@ module Abrt = + let lns = Libreport.lns + + let filter = (incl "/etc/abrt/*" ) ++ . (excl "/etc/abrt/plugins") + . (incl "/etc/abrt/plugins/*") + . (incl "/usr/share/abrt/conf.d/*") ++ . (excl "/usr/share/abrt/conf.d/plugins") + . (incl "/usr/share/abrt/conf.d/plugins/*") + . Util.stdexcl + +-- +1.8.3.1 + diff --git a/SOURCES/0207-vmcore-catch-IOErrors-and-OSErrors.patch b/SOURCES/0207-vmcore-catch-IOErrors-and-OSErrors.patch new file mode 100644 index 0000000..0383686 --- /dev/null +++ b/SOURCES/0207-vmcore-catch-IOErrors-and-OSErrors.patch @@ -0,0 +1,41 @@ +From 530cee09dd84565552ade0bdf08b40f900bef8f1 Mon Sep 17 00:00:00 2001 +From: Jakub Filak +Date: Thu, 27 Nov 2014 12:45:04 +0100 +Subject: [PATCH] vmcore: catch IOErrors and OSErrors + +Perhaps some temporary data cleaner removed problem directory while the hook +was still using in. + +Resolves: rhbz#1311100 + +Signed-off-by: Jakub Filak +--- + src/hooks/abrt_harvest_vmcore.py.in | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/src/hooks/abrt_harvest_vmcore.py.in b/src/hooks/abrt_harvest_vmcore.py.in +index 17e2be8..c6a7e6b 100644 +--- a/src/hooks/abrt_harvest_vmcore.py.in ++++ b/src/hooks/abrt_harvest_vmcore.py.in +@@ -272,8 +272,16 @@ def harvest_vmcore(): + except OSError: + sys.stderr.write("Unable to delete '%s'. Ignoring\n" % f_full) + +- # Let abrtd know what type of problem it is: +- create_abrtd_info(destdirnew) ++ try: ++ # Let abrtd know what type of problem it is: ++ create_abrtd_info(destdirnew) ++ except EnvironmentError as ex: ++ sys.stderr.write("Unable to create problem directory info: " + str(ex)) ++ try: ++ shutil.rmtree(destdirnew) ++ except Exception as ex: ++ sys.stderr.write("Unable to remove incomplete problem directory: " + str(ex)) ++ continue + + # chown -R 0:0 + change_owner_rec(destdirnew) +-- +1.8.3.1 + diff --git a/SOURCES/0209-lib-hooklib-make-signal_is_fatal-public.patch b/SOURCES/0209-lib-hooklib-make-signal_is_fatal-public.patch new file mode 100644 index 0000000..4d7f429 --- /dev/null +++ b/SOURCES/0209-lib-hooklib-make-signal_is_fatal-public.patch @@ -0,0 +1,60 @@ +From 27a9ae13ec7b41969eabc88441ad5cca12c26a87 Mon Sep 17 00:00:00 2001 +From: Matej Habrnal +Date: Mon, 21 Mar 2016 15:38:46 +0100 +Subject: [PATCH] lib: hooklib: make signal_is_fatal() public + +Related to: rhbz#1277848 + +Signed-off-by: Matej Habrnal +--- + src/include/hooklib.h | 2 ++ + src/lib/hooklib.c | 26 ++++++++++++++++++++++++++ + 2 files changed, 28 insertions(+) + +diff --git a/src/include/hooklib.h b/src/include/hooklib.h +index 4edd4ea..2de0294 100644 +--- a/src/include/hooklib.h ++++ b/src/include/hooklib.h +@@ -29,3 +29,5 @@ + stored data, but it's not guaranteed) + */ + char *problem_data_save(problem_data_t *pd); ++ ++int signal_is_fatal(int signal_no, const char **name); +diff --git a/src/lib/hooklib.c b/src/lib/hooklib.c +index 160a011..3e47612 100644 +--- a/src/lib/hooklib.c ++++ b/src/lib/hooklib.c +@@ -553,3 +553,29 @@ bool allowed_new_user_problem_entry(uid_t uid, const char *name, const char *val + error_msg("Only root is permitted to create element '%s' containing '%s'", name, value); + return false; + } ++ ++int signal_is_fatal(int signal_no, const char **name) ++{ ++ const char *signame = NULL; ++ switch (signal_no) ++ { ++ case SIGILL : signame = "ILL" ; break; ++ case SIGFPE : signame = "FPE" ; break; ++ case SIGSEGV: signame = "SEGV"; break; ++ case SIGBUS : signame = "BUS" ; break; //Bus error (bad memory access) ++ case SIGABRT: signame = "ABRT"; break; //usually when abort() was called ++ // We have real-world reports from users who see buggy programs ++ // dying with SIGTRAP, uncommented it too: ++ case SIGTRAP: signame = "TRAP"; break; //Trace/breakpoint trap ++ // These usually aren't caused by bugs: ++ //case SIGQUIT: signame = "QUIT"; break; //Quit from keyboard ++ //case SIGSYS : signame = "SYS" ; break; //Bad argument to routine (SVr4) ++ //case SIGXCPU: signame = "XCPU"; break; //CPU time limit exceeded (4.2BSD) ++ //case SIGXFSZ: signame = "XFSZ"; break; //File size limit exceeded (4.2BSD) ++ } ++ ++ if (name != NULL) ++ *name = signame; ++ ++ return signame != NULL; ++} +-- +1.8.3.1 + diff --git a/SOURCES/0210-ccpp-add-IgnoredPath-option.patch b/SOURCES/0210-ccpp-add-IgnoredPath-option.patch new file mode 100644 index 0000000..6c8f373 --- /dev/null +++ b/SOURCES/0210-ccpp-add-IgnoredPath-option.patch @@ -0,0 +1,186 @@ +From 4f1770991a3b5da7dadd4c4e9b1a48c7d96f6808 Mon Sep 17 00:00:00 2001 +From: Matej Habrnal +Date: Mon, 21 Mar 2016 15:25:35 +0100 +Subject: [PATCH] ccpp: add IgnoredPath option + +ABRT will ignore crashes in executables for which absolute path matches one of +specified patterns. + +Related to rhbz#1277848 + +Signed-off-by: Matej Habrnal +--- + doc/abrt-CCpp.conf.txt | 4 +++ + src/hooks/CCpp.conf | 5 ++++ + src/hooks/abrt-hook-ccpp.c | 71 +++++++++++++++++++++++++++++++++------------- + 3 files changed, 61 insertions(+), 19 deletions(-) + +diff --git a/doc/abrt-CCpp.conf.txt b/doc/abrt-CCpp.conf.txt +index 42981fd..4db4b54 100644 +--- a/doc/abrt-CCpp.conf.txt ++++ b/doc/abrt-CCpp.conf.txt +@@ -39,6 +39,10 @@ SaveFullCore = 'yes' / 'no' ...:: + directory. + Default is 'yes'. + ++IgnoredPaths = /path/to/ignore/*, */another/ignored/path* ...:: ++ ABRT will ignore crashes in executables whose absolute path matches one of ++ specified patterns. ++ + VerboseLog = NUM:: + Used to make the hook more verbose + +diff --git a/src/hooks/CCpp.conf b/src/hooks/CCpp.conf +index 08d1b28..be55e05 100644 +--- a/src/hooks/CCpp.conf ++++ b/src/hooks/CCpp.conf +@@ -32,3 +32,8 @@ SaveFullCore = yes + # Specify where you want to store debuginfos (default: /var/cache/abrt-di) + # + #DebuginfoLocation = /var/cache/abrt-di ++ ++# ABRT will ignore crashes in executables whose absolute path matches one of ++# specified patterns. ++# ++#IgnoredPaths = +diff --git a/src/hooks/abrt-hook-ccpp.c b/src/hooks/abrt-hook-ccpp.c +index 9648b16..18cd608 100644 +--- a/src/hooks/abrt-hook-ccpp.c ++++ b/src/hooks/abrt-hook-ccpp.c +@@ -18,6 +18,7 @@ + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ ++#include + #include + #include "libabrt.h" + #include +@@ -631,6 +632,19 @@ finito: + return err; + } + ++static bool is_path_ignored(const GList *list, const char *path) ++{ ++ const GList *li; ++ for (li = list; li != NULL; li = g_list_next(li)) ++ { ++ if (fnmatch((char*)li->data, path, /*flags:*/ 0) == 0) ++ { ++ return true; ++ } ++ } ++ return false; ++} ++ + static int test_configuration(bool setting_SaveFullCore, bool setting_CreateCoreBacktrace) + { + if (!setting_SaveFullCore && !setting_CreateCoreBacktrace) +@@ -643,6 +657,26 @@ static int test_configuration(bool setting_SaveFullCore, bool setting_CreateCore + return 0; + } + ++static void error_msg_not_process_crash(const char *pid_str, const char *process_str, ++ long unsigned uid, int signal_no, const char *signame, const char *message, ...) ++{ ++ va_list p; ++ va_start(p, message); ++ char *message_full = xvasprintf(message, p); ++ va_end(p); ++ ++ if (signame) ++ error_msg("Process %s (%s) of user %lu killed by SIG%s - %s", pid_str, ++ process_str, uid, signame, message_full); ++ else ++ error_msg("Process %s (%s) of user %lu killed by signal %d - %s", pid_str, ++ process_str, uid, signal_no, message_full); ++ ++ free(message_full); ++ ++ return; ++} ++ + int main(int argc, char** argv) + { + int err = 1; +@@ -666,6 +700,7 @@ int main(int argc, char** argv) + bool setting_SaveBinaryImage; + bool setting_SaveFullCore; + bool setting_CreateCoreBacktrace; ++ GList *setting_ignored_paths = NULL; + { + map_string_t *settings = new_map_string(); + load_abrt_plugin_conf_file("CCpp.conf", settings); +@@ -677,6 +712,10 @@ int main(int argc, char** argv) + value = get_map_string_item_or_NULL(settings, "SaveFullCore"); + setting_SaveFullCore = value ? string_to_bool(value) : true; + value = get_map_string_item_or_NULL(settings, "CreateCoreBacktrace"); ++ value = get_map_string_item_or_NULL(settings, "IgnoredPaths"); ++ if (value) ++ setting_ignored_paths = parse_list(value); ++ + setting_CreateCoreBacktrace = value ? string_to_bool(value) : true; + value = get_map_string_item_or_NULL(settings, "VerboseLog"); + if (value) +@@ -712,6 +751,8 @@ int main(int argc, char** argv) + errno = 0; + const char* signal_str = argv[1]; + int signal_no = xatoi_positive(signal_str); ++ const char *signame = NULL; ++ bool signal_is_fatal_bool = signal_is_fatal(signal_no, &signame); + off_t ulimit_c = strtoull(argv[2], NULL, 10); + if (ulimit_c < 0) /* unlimited? */ + { +@@ -753,6 +794,15 @@ int main(int argc, char** argv) + (long)pid, executable); + } + ++ const char *last_slash = strrchr(executable, '/'); ++ if (executable && is_path_ignored(setting_ignored_paths, executable)) ++ { ++ error_msg_not_process_crash(pid_str, last_slash + 1, (long unsigned)uid, signal_no, ++ signame, "ignoring (listed in 'IgnoredPaths')"); ++ ++ return 0; ++ } ++ + user_pwd = get_cwd(pid); + log_notice("user_pwd:'%s'", user_pwd); + +@@ -793,24 +843,8 @@ int main(int argc, char** argv) + return create_user_core(user_core_fd, pid, ulimit_c); + } + +- const char *signame = NULL; +- switch (signal_no) +- { +- case SIGILL : signame = "ILL" ; break; +- case SIGFPE : signame = "FPE" ; break; +- case SIGSEGV: signame = "SEGV"; break; +- case SIGBUS : signame = "BUS" ; break; //Bus error (bad memory access) +- case SIGABRT: signame = "ABRT"; break; //usually when abort() was called +- // We have real-world reports from users who see buggy programs +- // dying with SIGTRAP, uncommented it too: +- case SIGTRAP: signame = "TRAP"; break; //Trace/breakpoint trap +- // These usually aren't caused by bugs: +- //case SIGQUIT: signame = "QUIT"; break; //Quit from keyboard +- //case SIGSYS : signame = "SYS" ; break; //Bad argument to routine (SVr4) +- //case SIGXCPU: signame = "XCPU"; break; //CPU time limit exceeded (4.2BSD) +- //case SIGXFSZ: signame = "XFSZ"; break; //File size limit exceeded (4.2BSD) +- default: return create_user_core(user_core_fd, pid, ulimit_c); // not a signal we care about +- } ++ if (!signal_is_fatal_bool) ++ return create_user_core(user_core_fd, pid, ulimit_c); // not a signal we care about + + if (!daemon_is_ok()) + { +@@ -839,7 +873,6 @@ int main(int argc, char** argv) + return create_user_core(user_core_fd, pid, ulimit_c); + } + +- const char *last_slash = strrchr(executable, '/'); + if (last_slash && strncmp(++last_slash, "abrt", 4) == 0) + { + if (g_settings_debug_level == 0) +-- +1.8.3.1 + diff --git a/SOURCES/0213-ccpp-add-AllowedUsers-and-AllowedGroups-feature.patch b/SOURCES/0213-ccpp-add-AllowedUsers-and-AllowedGroups-feature.patch new file mode 100644 index 0000000..efc68c4 --- /dev/null +++ b/SOURCES/0213-ccpp-add-AllowedUsers-and-AllowedGroups-feature.patch @@ -0,0 +1,155 @@ +From 29e8577ae1d7252513883941cae1c576f30c2d75 Mon Sep 17 00:00:00 2001 +From: Matej Habrnal +Date: Tue, 22 Mar 2016 12:35:55 +0100 +Subject: [PATCH] ccpp: add AllowedUsers and AllowedGroups feature + +The feature allows dump core only for allowed users. + +The logic is the following: + - if both options are not-defined or empty keep all core dumps + - else if crashed UID is in the list of users keep the core dump + - else if crashed UID belongs to a group in the list of groups keep the core dump + +Related to rhbz#1277849 + +Signed-off-by: Matej Habrnal +--- + doc/abrt-CCpp.conf.txt | 10 ++++++++ + src/hooks/CCpp.conf | 7 ++++++ + src/hooks/abrt-hook-ccpp.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 80 insertions(+) + +diff --git a/doc/abrt-CCpp.conf.txt b/doc/abrt-CCpp.conf.txt +index 4db4b54..dffa45d 100644 +--- a/doc/abrt-CCpp.conf.txt ++++ b/doc/abrt-CCpp.conf.txt +@@ -43,6 +43,16 @@ IgnoredPaths = /path/to/ignore/*, */another/ignored/path* ...:: + ABRT will ignore crashes in executables whose absolute path matches one of + specified patterns. + ++AllowedUsers = root, ...:: ++ ABRT will process only crashes of either allowed users 'AllowedUsers' or ++ users who are members of allowed group 'AllowedGroups'. If no allowed users ++ nor allowed group are specified ABRT will process crashes of all users. ++ ++AllowedGroups = root, ...:: ++ ABRT will process only crashes of either allowed users 'AllowedUsers' or ++ users who are members of allowed group 'AllowedGroups'. If no allowed users ++ nor allowed group are specified ABRT will process crashes of all users. ++ + VerboseLog = NUM:: + Used to make the hook more verbose + +diff --git a/src/hooks/CCpp.conf b/src/hooks/CCpp.conf +index be55e05..af31ed5 100644 +--- a/src/hooks/CCpp.conf ++++ b/src/hooks/CCpp.conf +@@ -37,3 +37,10 @@ SaveFullCore = yes + # specified patterns. + # + #IgnoredPaths = ++ ++# ABRT will process only crashes of either allowed users or users who are ++# members of allowed group. If no allowed users nor allowed group are specified ++# ABRT will process crashes of all users. ++# ++#AllowedUsers = ++#AllowedGroups = +diff --git a/src/hooks/abrt-hook-ccpp.c b/src/hooks/abrt-hook-ccpp.c +index 18cd608..c9fbf68 100644 +--- a/src/hooks/abrt-hook-ccpp.c ++++ b/src/hooks/abrt-hook-ccpp.c +@@ -645,6 +645,44 @@ static bool is_path_ignored(const GList *list, const char *path) + return false; + } + ++static bool is_user_allowed(uid_t uid, const GList *list) ++{ ++ const GList *li; ++ for (li = list; li != NULL; li = g_list_next(li)) ++ { ++ const char *username = (const char*)li->data; ++ struct passwd *pw = getpwnam(username); ++ if (pw == NULL) ++ { ++ log_warning("can't get uid of user '%s' (listed in 'AllowedUsers')", username); ++ continue; ++ } ++ ++ if(pw->pw_uid == uid) ++ return true; ++ } ++ return false; ++} ++ ++static bool is_user_in_allowed_group(uid_t uid, const GList *list) ++{ ++ const GList *li; ++ for (li = list; li != NULL; li = g_list_next(li)) ++ { ++ const char *groupname = (const char*)li->data; ++ struct group *gr = getgrnam(groupname); ++ if (gr == NULL) ++ { ++ log_warning("can't get gid of group '%s' (listed in 'AllowedGroups')", groupname); ++ continue; ++ } ++ ++ if(uid_in_group(uid, gr->gr_gid)) ++ return true; ++ } ++ return false; ++} ++ + static int test_configuration(bool setting_SaveFullCore, bool setting_CreateCoreBacktrace) + { + if (!setting_SaveFullCore && !setting_CreateCoreBacktrace) +@@ -701,6 +739,8 @@ int main(int argc, char** argv) + bool setting_SaveFullCore; + bool setting_CreateCoreBacktrace; + GList *setting_ignored_paths = NULL; ++ GList *setting_allowed_users = NULL; ++ GList *setting_allowed_groups = NULL; + { + map_string_t *settings = new_map_string(); + load_abrt_plugin_conf_file("CCpp.conf", settings); +@@ -716,6 +756,13 @@ int main(int argc, char** argv) + if (value) + setting_ignored_paths = parse_list(value); + ++ value = get_map_string_item_or_NULL(settings, "AllowedUsers"); ++ if (value) ++ setting_allowed_users = parse_list(value); ++ value = get_map_string_item_or_NULL(settings, "AllowedGroups"); ++ if (value) ++ setting_allowed_groups = parse_list(value); ++ + setting_CreateCoreBacktrace = value ? string_to_bool(value) : true; + value = get_map_string_item_or_NULL(settings, "VerboseLog"); + if (value) +@@ -803,6 +850,22 @@ int main(int argc, char** argv) + return 0; + } + ++ /* dumping core for user, if allowed */ ++ if (setting_allowed_users || setting_allowed_groups) ++ { ++ if (setting_allowed_users && is_user_allowed(uid, setting_allowed_users)) ++ log_debug("User %lu is listed in 'AllowedUsers'", (long unsigned)uid); ++ else if (setting_allowed_groups && is_user_in_allowed_group(uid, setting_allowed_groups)) ++ log_debug("User %lu is member of group listed in 'AllowedGroups'", (long unsigned)uid); ++ else ++ { ++ error_msg_not_process_crash(pid_str, last_slash + 1, (long unsigned)uid, signal_no, ++ signame, "ignoring (not allowed in 'AllowedUsers' nor 'AllowedGroups')"); ++ ++ xfunc_die(); ++ } ++ } ++ + user_pwd = get_cwd(pid); + log_notice("user_pwd:'%s'", user_pwd); + +-- +1.8.3.1 + diff --git a/SOURCES/0214-Save-Vendor-and-GPG-Fingerprint.patch b/SOURCES/0214-Save-Vendor-and-GPG-Fingerprint.patch new file mode 100644 index 0000000..3e1df23 --- /dev/null +++ b/SOURCES/0214-Save-Vendor-and-GPG-Fingerprint.patch @@ -0,0 +1,232 @@ +From 95ea12b9a4be68cc25f0811e693c7a024b5e3d4b Mon Sep 17 00:00:00 2001 +From: Matej Habrnal +Date: Tue, 9 Feb 2016 16:53:21 +0100 +Subject: [PATCH] Save Vendor and GPG Fingerprint + +Red Hat keys can be found at: + https://access.redhat.com/security/team/key + +Related: #1258482 +--- + src/daemon/abrt-action-save-package-data.c | 34 ++++++++++++++++++++----- + src/daemon/abrt-action-save-package-data.conf | 7 ++++++ + src/daemon/rpm.c | 36 +++++++++++++++++++-------- + src/daemon/rpm.h | 15 +++++++++++ + src/plugins/abrt-action-save-kernel-data | 6 +++++ + 5 files changed, 82 insertions(+), 16 deletions(-) + +diff --git a/src/daemon/abrt-action-save-package-data.c b/src/daemon/abrt-action-save-package-data.c +index 97d5f5e..ef2007e 100644 +--- a/src/daemon/abrt-action-save-package-data.c ++++ b/src/daemon/abrt-action-save-package-data.c +@@ -224,6 +224,7 @@ static int SavePackageDescriptionToDebugDump(const char *dump_dir_name) + char *cmdline = NULL; + char *executable = NULL; + char *package_short_name = NULL; ++ char *fingerprint = NULL; + struct pkg_envra *pkg_name = NULL; + char *component = NULL; + int error = 1; +@@ -311,13 +312,12 @@ static int SavePackageDescriptionToDebugDump(const char *dump_dir_name) + goto ret; /* return 1 (failure) */ + } + +- if (settings_bOpenGPGCheck) ++ fingerprint = rpm_get_fingerprint(package_short_name); ++ if (!(fingerprint != NULL && rpm_fingerprint_is_imported(fingerprint)) ++ && settings_bOpenGPGCheck) + { +- if (!rpm_chk_fingerprint(package_short_name)) +- { +- log("Package '%s' isn't signed with proper key", package_short_name); +- goto ret; /* return 1 (failure) */ +- } ++ log("Package '%s' isn't signed with proper key", package_short_name); ++ goto ret; /* return 1 (failure) */ + /* We used to also check the integrity of the executable here: + * if (!CheckHash(package_short_name.c_str(), executable)) BOOM(); + * Checking the MD5 sum requires to run prelink to "un-prelink" the +@@ -340,6 +340,27 @@ static int SavePackageDescriptionToDebugDump(const char *dump_dir_name) + dd_save_text(dd, FILENAME_PKG_VERSION, pkg_name->p_version); + dd_save_text(dd, FILENAME_PKG_RELEASE, pkg_name->p_release); + dd_save_text(dd, FILENAME_PKG_ARCH, pkg_name->p_arch); ++ dd_save_text(dd, FILENAME_PKG_VENDOR, pkg_name->p_vendor); ++ ++ if (fingerprint) ++ { ++ /* 16 character + 3 spaces + 1 '\0' + 2 Bytes for errors :) */ ++ char key_fingerprint[22] = {0}; ++ ++ /* The condition is just a defense against errors */ ++ for (size_t i = 0, j = 0; j < sizeof(key_fingerprint) - 2; ) ++ { ++ key_fingerprint[j++] = toupper(fingerprint[i++]); ++ ++ if (fingerprint[i] == '\0') ++ break; ++ ++ if (!(i & (0x3))) ++ key_fingerprint[j++] = ' '; ++ } ++ ++ dd_save_text(dd, FILENAME_PKG_FINGERPRINT, key_fingerprint); ++ } + } + + if (component) +@@ -355,6 +376,7 @@ static int SavePackageDescriptionToDebugDump(const char *dump_dir_name) + free(package_short_name); + free_pkg_envra(pkg_name); + free(component); ++ free(fingerprint); + + return error; + } +diff --git a/src/daemon/abrt-action-save-package-data.conf b/src/daemon/abrt-action-save-package-data.conf +index 3d35bb6..bf97264 100644 +--- a/src/daemon/abrt-action-save-package-data.conf ++++ b/src/daemon/abrt-action-save-package-data.conf +@@ -3,6 +3,13 @@ + # the list of public keys used to check the signature is + # in the file gpg_keys + # ++# How can I check the GPG key used to sign an installed pacakge on ++# Red hat Enterprise Linux: ++# https://access.redhat.com/solutions/1120013 ++# ++# Product Signing (GPG) Keys: ++# https://access.redhat.com/security/team/key ++# + OpenGPGCheck = yes + + # Blacklisted packages +diff --git a/src/daemon/rpm.c b/src/daemon/rpm.c +index b69992c..d3d3d0a 100644 +--- a/src/daemon/rpm.c ++++ b/src/daemon/rpm.c +@@ -99,7 +99,22 @@ void rpm_load_gpgkey(const char* filename) + + int rpm_chk_fingerprint(const char* pkg) + { +- int ret = 0; ++ char *fingerprint = rpm_get_fingerprint(pkg); ++ int res = 0; ++ if (fingerprint) ++ res = rpm_fingerprint_is_imported(fingerprint); ++ free(fingerprint); ++ return res; ++} ++ ++int rpm_fingerprint_is_imported(const char* fingerprint) ++{ ++ return !!g_list_find_custom(list_fingerprints, fingerprint, (GCompareFunc)g_strcmp0); ++} ++ ++char *rpm_get_fingerprint(const char *pkg) ++{ ++ char *fingerprint = NULL; + char *pgpsig = NULL; + const char *errmsg = NULL; + +@@ -117,20 +132,15 @@ int rpm_chk_fingerprint(const char* pkg) + goto error; + } + +- { +- char *pgpsig_tmp = strstr(pgpsig, " Key ID "); +- if (pgpsig_tmp) +- { +- pgpsig_tmp += sizeof(" Key ID ") - 1; +- ret = g_list_find_custom(list_fingerprints, pgpsig_tmp, (GCompareFunc)g_strcmp0) != NULL; +- } +- } ++ char *pgpsig_tmp = strstr(pgpsig, " Key ID "); ++ if (pgpsig_tmp) ++ fingerprint = xstrdup(pgpsig_tmp + sizeof(" Key ID ") - 1); + + error: + free(pgpsig); + rpmdbFreeIterator(iter); + rpmtsFree(ts); +- return ret; ++ return fingerprint; + } + + /* +@@ -244,6 +254,7 @@ pkg_add_id(name); + pkg_add_id(version); + pkg_add_id(release); + pkg_add_id(arch); ++pkg_add_id(vendor); + + // caller is responsible to free returned value + struct pkg_envra *rpm_get_package_nvr(const char *filename, const char *rootdir_or_NULL) +@@ -314,6 +325,10 @@ struct pkg_envra *rpm_get_package_nvr(const char *filename, const char *rootdir_ + if (r) + goto error; + ++ r = pkg_add_vendor(header, p); ++ if (r) ++ goto error; ++ + p->p_nvr = xasprintf("%s-%s-%s", p->p_name, p->p_version, p->p_release); + + rpmdbFreeIterator(iter); +@@ -334,6 +349,7 @@ void free_pkg_envra(struct pkg_envra *p) + if (!p) + return; + ++ free(p->p_vendor); + free(p->p_epoch); + free(p->p_name); + free(p->p_version); +diff --git a/src/daemon/rpm.h b/src/daemon/rpm.h +index 1b90368..89aa088 100644 +--- a/src/daemon/rpm.h ++++ b/src/daemon/rpm.h +@@ -38,6 +38,7 @@ struct pkg_envra { + char *p_version; + char *p_release; + char *p_arch; ++ char *p_vendor; + }; + + void free_pkg_envra(struct pkg_envra *p); +@@ -69,6 +70,20 @@ void rpm_load_gpgkey(const char* filename); + int rpm_chk_fingerprint(const char* pkg); + + /** ++ * A function, which checks if the given finger print is imported. ++ * @param pkg A package name. ++ * @return 1 if imported, otherwise (not-imported, or error) 0 ++ */ ++int rpm_fingerprint_is_imported(const char* fingerprint); ++ ++/** ++ * A function, which returns package's finger print ++ * @param pkg A package name. ++ * @return NULL if not-valid, otherwise malloced NULL-terminated string. ++ */ ++char *rpm_get_fingerprint(const char* pkg); ++ ++/** + * Gets a package name. This package contains particular + * file. If the file doesn't belong to any package, empty string is + * returned. +diff --git a/src/plugins/abrt-action-save-kernel-data b/src/plugins/abrt-action-save-kernel-data +index 7df85cf..5f1ddc7 100755 +--- a/src/plugins/abrt-action-save-kernel-data ++++ b/src/plugins/abrt-action-save-kernel-data +@@ -29,3 +29,9 @@ rpm -q --qf "%{release}\n" "$package" > pkg_release + epoch="$( rpm -q --qf "%{epoch}" "$package" )" + test "$epoch" = "(none)" && epoch=0 + echo "$epoch" > pkg_epoch ++rpm -q --qf "%{vendor}\n" "$package" > pkg_vendor ++ ++FINGERPRINT=$(rpm -q --qf "%|SIGGPG?{%{SIGGPG:pgpsig}}:{%{SIGPGP:pgpsig}}|" "$package" 2>/dev/null | tail -1) ++if [ -n "$FINGERPRINT" -a "_(none)" != "_$FINGERPRINT" ]; then ++ echo $FINGERPRINT | sed 's/.*Key ID \(....\)\(....\)\(....\)\(....\)$/\U\1 \U\2 \U\3 \U\4/' > pkg_fingerprint ++fi +-- +1.8.3.1 + diff --git a/SOURCES/0221-lib-prevent-from-creating-non-root-sub-dirs-in-dump-.patch b/SOURCES/0221-lib-prevent-from-creating-non-root-sub-dirs-in-dump-.patch new file mode 100644 index 0000000..31b6cc8 --- /dev/null +++ b/SOURCES/0221-lib-prevent-from-creating-non-root-sub-dirs-in-dump-.patch @@ -0,0 +1,36 @@ +From 2acf4b7691165003cae6308f006cef329802f79e Mon Sep 17 00:00:00 2001 +From: Matej Habrnal +Date: Tue, 5 Apr 2016 14:51:28 +0200 +Subject: [PATCH] lib: prevent from creating non-root sub-dirs in dump dir + +In the case an uid element doesn't exist in time of dump dir creating, we have +to create dump dir owned by root. + +Related to rhbz#1264921 + +Signed-off-by: Matej Habrnal +--- + src/lib/hooklib.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/src/lib/hooklib.c b/src/lib/hooklib.c +index 160a011..ed1607d 100644 +--- a/src/lib/hooklib.c ++++ b/src/lib/hooklib.c +@@ -415,7 +415,12 @@ char* problem_data_save(problem_data_t *pd) + if (g_settings_privatereports) + dd = create_dump_dir_from_problem_data_ext(pd, g_settings_dump_location, 0); + else +- dd = create_dump_dir_from_problem_data(pd, g_settings_dump_location); ++ { ++ if (problem_data_get_content_or_NULL(pd, FILENAME_UID) == NULL) ++ dd = create_dump_dir_from_problem_data_ext(pd, g_settings_dump_location, 0); ++ else ++ dd = create_dump_dir_from_problem_data(pd, g_settings_dump_location); ++ } + + char *problem_id = NULL; + if (dd) +-- +1.8.3.1 + diff --git a/SOURCES/0222-ccpp-exit-with-error-if-cannot-get-executable.patch b/SOURCES/0222-ccpp-exit-with-error-if-cannot-get-executable.patch new file mode 100644 index 0000000..d22d352 --- /dev/null +++ b/SOURCES/0222-ccpp-exit-with-error-if-cannot-get-executable.patch @@ -0,0 +1,49 @@ +From 80d2c8604e4dae2fccad721eae0b219376a6ffce Mon Sep 17 00:00:00 2001 +From: Matej Habrnal +Date: Thu, 21 Apr 2016 11:20:40 +0200 +Subject: [PATCH] ccpp: exit with error if cannot get executable + +Related to rhbz#1277849 + +Signed-off-by: Matej Habrnal +--- + src/hooks/abrt-hook-ccpp.c | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +diff --git a/src/hooks/abrt-hook-ccpp.c b/src/hooks/abrt-hook-ccpp.c +index c9fbf68..8afd0d3 100644 +--- a/src/hooks/abrt-hook-ccpp.c ++++ b/src/hooks/abrt-hook-ccpp.c +@@ -703,13 +703,16 @@ static void error_msg_not_process_crash(const char *pid_str, const char *process + char *message_full = xvasprintf(message, p); + va_end(p); + ++ char *process_name = (process_str) ? xasprintf(" (%s)", process_str) : xstrdup(""); ++ + if (signame) + error_msg("Process %s (%s) of user %lu killed by SIG%s - %s", pid_str, +- process_str, uid, signame, message_full); ++ process_name, uid, signame, message_full); + else + error_msg("Process %s (%s) of user %lu killed by signal %d - %s", pid_str, +- process_str, uid, signal_no, message_full); ++ process_name, uid, signal_no, message_full); + ++ free(process_name); + free(message_full); + + return; +@@ -835,6 +838,10 @@ int main(int argc, char** argv) + + int src_fd_binary = -1; + char *executable = get_executable(pid, setting_SaveBinaryImage ? &src_fd_binary : NULL); ++ if (executable == NULL) ++ error_msg_not_process_crash(pid_str, NULL, (long unsigned)uid, signal_no, ++ signame, "ignoring (can't read /proc/PID/exe link)"); ++ + if (executable && strstr(executable, "/abrt-hook-ccpp")) + { + error_msg_and_die("PID %lu is '%s', not dumping it to avoid recursion", +-- +1.8.3.1 + diff --git a/SOURCES/0223-ccpp-add-xfunc_die-if-cannot-get-executable.patch b/SOURCES/0223-ccpp-add-xfunc_die-if-cannot-get-executable.patch new file mode 100644 index 0000000..1390605 --- /dev/null +++ b/SOURCES/0223-ccpp-add-xfunc_die-if-cannot-get-executable.patch @@ -0,0 +1,45 @@ +From ec6296c489571286f6ba4dc586fdd936b899ba92 Mon Sep 17 00:00:00 2001 +From: Matej Habrnal +Date: Thu, 21 Apr 2016 15:54:03 +0200 +Subject: [PATCH] ccpp: add xfunc_die() if cannot get executable + +Also remove extra checks of executable. + +Related to rhbz#1277849 + +Signed-off-by: Matej Habrnal +--- + src/hooks/abrt-hook-ccpp.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/src/hooks/abrt-hook-ccpp.c b/src/hooks/abrt-hook-ccpp.c +index 8afd0d3..2c05c78 100644 +--- a/src/hooks/abrt-hook-ccpp.c ++++ b/src/hooks/abrt-hook-ccpp.c +@@ -839,17 +839,21 @@ int main(int argc, char** argv) + int src_fd_binary = -1; + char *executable = get_executable(pid, setting_SaveBinaryImage ? &src_fd_binary : NULL); + if (executable == NULL) ++ { + error_msg_not_process_crash(pid_str, NULL, (long unsigned)uid, signal_no, + signame, "ignoring (can't read /proc/PID/exe link)"); + +- if (executable && strstr(executable, "/abrt-hook-ccpp")) ++ xfunc_die(); ++ } ++ ++ if (strstr(executable, "/abrt-hook-ccpp")) + { + error_msg_and_die("PID %lu is '%s', not dumping it to avoid recursion", + (long)pid, executable); + } + + const char *last_slash = strrchr(executable, '/'); +- if (executable && is_path_ignored(setting_ignored_paths, executable)) ++ if (is_path_ignored(setting_ignored_paths, executable)) + { + error_msg_not_process_crash(pid_str, last_slash + 1, (long unsigned)uid, signal_no, + signame, "ignoring (listed in 'IgnoredPaths')"); +-- +1.8.3.1 + diff --git a/SOURCES/0225-vmcore-generate-reason-file-in-all-cases.patch b/SOURCES/0225-vmcore-generate-reason-file-in-all-cases.patch new file mode 100644 index 0000000..36b1fe6 --- /dev/null +++ b/SOURCES/0225-vmcore-generate-reason-file-in-all-cases.patch @@ -0,0 +1,35 @@ +From ef62408248f975dab68f99e1be1eb9836374dc7c Mon Sep 17 00:00:00 2001 +From: Jakub Filak +Date: Fri, 27 Mar 2015 10:51:52 +0100 +Subject: [PATCH] vmcore: generate 'reason' file in all cases + +If kdump generates the dmesg log file (vmcore-dmesg.log), the vmcore's +post-create event doesn't generate 'reason' file. It is caused by +inappropriate use of 'abrt-dump-oops' where the event uses that helper +to parse the log file to generate 'backtrace' file instead of using it +with the '-u' argument to update the dump directory and create all +necessary files. + +Resolves: rhbz#1250337 + +Signed-off-by: Jakub Filak +--- + src/plugins/vmcore_event.conf | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/plugins/vmcore_event.conf b/src/plugins/vmcore_event.conf +index 34608d9..5957b3f 100644 +--- a/src/plugins/vmcore_event.conf ++++ b/src/plugins/vmcore_event.conf +@@ -3,7 +3,7 @@ EVENT=post-create analyzer=vmcore + # If kdump machinery already extracted dmesg... + if test -f vmcore-dmesg.txt; then + # ...use that +- abrt-dump-oops -o vmcore-dmesg.txt >backtrace || exit $? ++ abrt-dump-oops -u $DUMP_DIR vmcore-dmesg.txt || exit $? + # + # Does "kernel" element exist? + test -f kernel && exit 0 +-- +1.8.3.1 + diff --git a/SOURCES/0227-console-notifications-add-timeout.patch b/SOURCES/0227-console-notifications-add-timeout.patch new file mode 100644 index 0000000..ff0eb17 --- /dev/null +++ b/SOURCES/0227-console-notifications-add-timeout.patch @@ -0,0 +1,26 @@ +From 83831bb2af42219682e3e1d4adbd350e634bd07e Mon Sep 17 00:00:00 2001 +From: Jakub Filak +Date: Tue, 20 Jan 2015 15:12:05 +0100 +Subject: [PATCH] console-notifications: add timeout + +Related to #898 +Resolves rhbz#1249101 + +Signed-off-by: Jakub Filak +--- + src/cli/abrt-console-notification.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/cli/abrt-console-notification.sh b/src/cli/abrt-console-notification.sh +index 976dfc3..a98f164 100755 +--- a/src/cli/abrt-console-notification.sh ++++ b/src/cli/abrt-console-notification.sh +@@ -39,4 +39,4 @@ if [ -f "$TMPPATH" ]; then + mv -f "$TMPPATH" "$SINCEFILE" >"$ABRT_DEBUG_LOG" 2>&1 + fi + +-abrt-cli status --since="$SINCE" 2>"$ABRT_DEBUG_LOG" ++timeout 10s abrt-cli status --since="$SINCE" 2>"$ABRT_DEBUG_LOG" || echo "'abrt-cli status' timed out" +-- +1.8.3.1 + diff --git a/SOURCES/0228-Fix-memory-leaks-in-abrt-dbus.patch b/SOURCES/0228-Fix-memory-leaks-in-abrt-dbus.patch new file mode 100644 index 0000000..a70dad7 --- /dev/null +++ b/SOURCES/0228-Fix-memory-leaks-in-abrt-dbus.patch @@ -0,0 +1,163 @@ +From 1902735613a3cc4a1c87e8cbae83a7452bfd8327 Mon Sep 17 00:00:00 2001 +From: Jakub Filak +Date: Sun, 1 May 2016 07:13:56 +0200 +Subject: [PATCH] Fix memory leaks in abrt-dbus + +Fix several repeated leaks that were causing abrt-dbus to waste system +memory. + +I used this valgrind command: + valgrind --tool=memcheck --leak-check=full --show-leak-kinds=all \ + --track-origins=yes --suppressions=glib.supp \ + --log-file=/tmp/leaks-$(date +%s).txt abrt-dbus -vvv -t 10 + +With suppressions from libsecret and NetworkManager: + * https://raw.githubusercontent.com/GNOME/libsecret/master/build/glib.supp + * https://raw.githubusercontent.com/NetworkManager/NetworkManager/master/valgrind.suppressions + +The suppressions were needed because Glib allocates a lot of static +stuff and does not free it at exit because it is useless. + +Resolves: #1319704 + +Signed-off-by: Jakub Filak +--- + src/dbus/abrt-dbus.c | 39 ++++++++++++++++++++++----------------- + src/dbus/abrt-polkit.c | 3 +++ + src/lib/abrt_conf.c | 3 +++ + src/lib/abrt_glib.c | 7 +++---- + src/lib/problem_api.c | 1 + + 5 files changed, 32 insertions(+), 21 deletions(-) + +diff --git a/src/dbus/abrt-dbus.c b/src/dbus/abrt-dbus.c +index 173cec4..0a459cd 100644 +--- a/src/dbus/abrt-dbus.c ++++ b/src/dbus/abrt-dbus.c +@@ -97,22 +97,21 @@ static uid_t get_caller_uid(GDBusConnection *connection, GDBusMethodInvocation * + GError *error = NULL; + guint caller_uid; + +- GDBusProxy * proxy = g_dbus_proxy_new_sync(connection, +- G_DBUS_PROXY_FLAGS_NONE, +- NULL, +- "org.freedesktop.DBus", +- "/org/freedesktop/DBus", +- "org.freedesktop.DBus", +- NULL, +- &error); +- +- GVariant *result = g_dbus_proxy_call_sync(proxy, +- "GetConnectionUnixUser", +- g_variant_new ("(s)", caller), +- G_DBUS_CALL_FLAGS_NONE, +- -1, +- NULL, +- &error); ++ /* Proxy isn't necessary if only need to call a single method. By default ++ * GDBusProxy connects to signals and downloads property values. It ++ * suppressed by passing flags argument, but not-creating proxy at all is ++ * much faster and safer. */ ++ GVariant *result = g_dbus_connection_call_sync(connection, ++ "org.freedesktop.DBus", ++ "/org/freedesktop/DBus", ++ "org.freedesktop.DBus", ++ "GetConnectionUnixUser", ++ g_variant_new ("(s)", caller), ++ /* reply_type */ NULL, ++ G_DBUS_CALL_FLAGS_NONE, ++ /* timeout */ -1, ++ /* cancellable */ NULL, ++ &error); + + if (result == NULL) + { +@@ -940,7 +939,11 @@ static void handle_method_call(GDBusConnection *connection, + static gboolean on_timeout_cb(gpointer user_data) + { + g_main_loop_quit(loop); +- return TRUE; ++ ++ /* FALSE -> remove and destroy this source. Without it, the timeout source ++ * will be leaked at exit - that isn't a problem but it makes valgrind out ++ * less readable. */ ++ return FALSE; + } + + static const GDBusInterfaceVTable interface_vtable = +@@ -1059,6 +1062,8 @@ int main(int argc, char *argv[]) + + g_dbus_node_info_unref(introspection_data); + ++ g_main_loop_unref(loop); ++ + free_abrt_conf_data(); + + return 0; +diff --git a/src/dbus/abrt-polkit.c b/src/dbus/abrt-polkit.c +index 39880e5..34af8a4 100644 +--- a/src/dbus/abrt-polkit.c ++++ b/src/dbus/abrt-polkit.c +@@ -59,8 +59,11 @@ static PolkitResult do_check(PolkitSubject *subject, const char *action_id) + POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION, + cancellable, + &error); ++ ++ g_object_unref(cancellable); + g_object_unref(authority); + g_source_remove(cancel_timeout); ++ g_object_unref(subject); + if (error) + { + g_error_free(error); +diff --git a/src/lib/abrt_conf.c b/src/lib/abrt_conf.c +index 4a49032..5ae64c5 100644 +--- a/src/lib/abrt_conf.c ++++ b/src/lib/abrt_conf.c +@@ -37,6 +37,9 @@ void free_abrt_conf_data() + + free(g_settings_dump_location); + g_settings_dump_location = NULL; ++ ++ free(g_settings_autoreporting_event); ++ g_settings_autoreporting_event = NULL; + } + + static void ParseCommon(map_string_t *settings, const char *conf_filename) +diff --git a/src/lib/abrt_glib.c b/src/lib/abrt_glib.c +index f7c128e..60e104f 100644 +--- a/src/lib/abrt_glib.c ++++ b/src/lib/abrt_glib.c +@@ -22,15 +22,14 @@ + GList *string_list_from_variant(GVariant *variant) + { + GList *list = NULL; +- GVariantIter *iter; ++ GVariantIter iter; ++ g_variant_iter_init(&iter, variant); + gchar *str; +- g_variant_get(variant, "as", &iter); +- while (g_variant_iter_loop(iter, "s", &str)) ++ while (g_variant_iter_loop(&iter, "s", &str)) + { + log_notice("adding: %s", str); + list = g_list_prepend(list, xstrdup(str)); + } +- g_variant_unref(variant); + + /* we were prepending items, so we should reverse the list to not confuse people + * by returning items in reversed order than it's in the variant +diff --git a/src/lib/problem_api.c b/src/lib/problem_api.c +index b343882..9fedb3d 100644 +--- a/src/lib/problem_api.c ++++ b/src/lib/problem_api.c +@@ -51,6 +51,7 @@ int for_each_problem_in_dir(const char *path, + if (dir_fd < 0) + { + VERB2 perror_msg("can't open problem directory '%s'", full_name); ++ free(full_name); + continue; + } + +-- +1.8.3.1 + diff --git a/SOURCES/0229-python-fix-check-for-absolute-path.patch b/SOURCES/0229-python-fix-check-for-absolute-path.patch new file mode 100644 index 0000000..faabb35 --- /dev/null +++ b/SOURCES/0229-python-fix-check-for-absolute-path.patch @@ -0,0 +1,55 @@ +From 61c3922184f8a5c8c29cbb0a67d907a5ab385daf Mon Sep 17 00:00:00 2001 +From: Matej Habrnal +Date: Mon, 2 May 2016 13:38:18 +0200 +Subject: [PATCH] python: fix check for absolute path + +Related to rhbz#1166633 + +Signed-off-by: Matej Habrnal +--- + src/hooks/abrt_exception_handler.py.in | 20 ++++++++++++++------ + 1 file changed, 14 insertions(+), 6 deletions(-) + +diff --git a/src/hooks/abrt_exception_handler.py.in b/src/hooks/abrt_exception_handler.py.in +index 6cf36d0..7455663 100644 +--- a/src/hooks/abrt_exception_handler.py.in ++++ b/src/hooks/abrt_exception_handler.py.in +@@ -167,13 +167,21 @@ def get_dso_list(tb): + + return list(packages) + +-def conf_enabled(var_name): ++def require_abs_path(): ++ """ ++ Return True if absolute path requirement is enabled ++ in configuration ++ """ ++ ++ import problem ++ + try: + conf = problem.load_plugin_conf_file("python.conf") +- except: +- return -1 +- else: +- conf.get(var_name, -1) ++ except OsError: ++ return False ++ ++ return conf.get("RequireAbsolutePath", "yes") == "yes" ++ + + def handleMyException((etype, value, tb)): + """ +@@ -219,7 +227,7 @@ def handleMyException((etype, value, tb)): + # (In this case we can't reliably determine package) + syslog("detected unhandled Python exception in '%s'" % sys.argv[0]) + if sys.argv[0][0] != "/": +- if conf_enabled("RequireAbsolutePath") != 0: ++ if require_abs_path(): + raise Exception + + import traceback +-- +1.8.3.1 + diff --git a/SOURCES/0232-ccpp-unify-log-message-of-ignored-crashes.patch b/SOURCES/0232-ccpp-unify-log-message-of-ignored-crashes.patch new file mode 100644 index 0000000..4d2c269 --- /dev/null +++ b/SOURCES/0232-ccpp-unify-log-message-of-ignored-crashes.patch @@ -0,0 +1,397 @@ +From 6724ba03fea310439c02f97d9429b921d12275c5 Mon Sep 17 00:00:00 2001 +From: Matej Habrnal +Date: Thu, 19 May 2016 12:10:42 +0200 +Subject: [PATCH] ccpp: unify log message of ignored crashes + +ABRT will ignore crashes in executables for which absolute path matches one of +specified patterns. + +Example of log messages in case of ignoring crashes: +- Crash's path is listed in 'IgnoredPath' in CCpp.conf + Process 16431 (will_segfault) of user 0 killed by SIGSEGV - ignoring + (listed in 'IgnoredPaths') + +- Repeating crash + Process 16219 (will_segfault) of user 1000 killed by SIGSEGV - + ignoring (repeated crash) + +- abrt-ccpp-hook crash + Process 16223 (abrt-hook-ccpp) of user 1000 killed by SIGSEGV - + ignoring (avoid recursion) + +- abrt crash + Process 16228 (abrt_test) of user 1000 killed by SIGSEGV - + ignoring ('DebugLevel' == 0) + +- not supported signal + Process 16229 (crash) of user 1000 killed by signal 99 - ignoring + (unsupported signal) + +- abrtd is not running + Process 16229 (crash) of user 1000 killed by signal 99 - ignoring + (abrtd is not running) + +- low free space + Process 16229 (crash) of user 1000 killed by signal 99 - ignoring + (low free space) + +- failed to parse /proc/$PID/status Uid + Process 16229 (crash) of user 1000 killed by signal 99 - ignoring + (Failed to parse /proc/16229/status (Uid)) + +- failed to parse /proc/$PID/status Gid + Process 16229 (crash) of user 1000 killed by signal 99 - ignoring + (Failed to parse /proc/16229/status (Gid)) + +- failed to get executable + Process 16229 (crash) of user 1000 killed by signal 99 - ignoring + (Can't read /proc/16229/exe link) + +- core size limit is bogus + Process 16229 (crash) of user 1000 killed by signal 99 - ignoring + (RLIMIT_CORE 'foo' is bogus) + +I the case the crash is not ignored the log msg is following: + Process 21768 (will_segfault) of user 1000 killed by SIGSEGV - + dumping core + +Related to: #1337186 + +Signed-off-by: Matej Habrnal +--- + src/hooks/abrt-hook-ccpp.c | 211 ++++++++++++++++++++++++++++----------------- + 1 file changed, 133 insertions(+), 78 deletions(-) + +diff --git a/src/hooks/abrt-hook-ccpp.c b/src/hooks/abrt-hook-ccpp.c +index 2c05c78..dc4dec6 100644 +--- a/src/hooks/abrt-hook-ccpp.c ++++ b/src/hooks/abrt-hook-ccpp.c +@@ -695,7 +695,7 @@ static int test_configuration(bool setting_SaveFullCore, bool setting_CreateCore + return 0; + } + +-static void error_msg_not_process_crash(const char *pid_str, const char *process_str, ++static void error_msg_process_crash(const char *pid_str, const char *process_str, + long unsigned uid, int signal_no, const char *signame, const char *message, ...) + { + va_list p; +@@ -706,10 +706,10 @@ static void error_msg_not_process_crash(const char *pid_str, const char *process + char *process_name = (process_str) ? xasprintf(" (%s)", process_str) : xstrdup(""); + + if (signame) +- error_msg("Process %s (%s) of user %lu killed by SIG%s - %s", pid_str, ++ error_msg("Process %s%s of user %lu killed by SIG%s - %s", pid_str, + process_name, uid, signame, message_full); + else +- error_msg("Process %s (%s) of user %lu killed by signal %d - %s", pid_str, ++ error_msg("Process %s%s of user %lu killed by signal %d - %s", pid_str, + process_name, uid, signal_no, message_full); + + free(process_name); +@@ -718,6 +718,20 @@ static void error_msg_not_process_crash(const char *pid_str, const char *process + return; + } + ++static void error_msg_ignore_crash(const char *pid_str, const char *process_str, ++ long unsigned uid, int signal_no, const char *signame, const char *message, ...) ++{ ++ va_list p; ++ va_start(p, message); ++ char *message_full = xvasprintf(message, p); ++ va_end(p); ++ ++ error_msg_process_crash(pid_str, process_str, uid, signal_no, signame, "ignoring (%s)", message_full); ++ ++ free(message_full); ++ return; ++} ++ + int main(int argc, char** argv) + { + int err = 1; +@@ -798,24 +812,35 @@ int main(int argc, char** argv) + } + } + +- errno = 0; + const char* signal_str = argv[1]; + int signal_no = xatoi_positive(signal_str); + const char *signame = NULL; + bool signal_is_fatal_bool = signal_is_fatal(signal_no, &signame); ++ ++ const char *pid_str = argv[3]; ++ /* xatoi_positive() handles errors */ ++ uid_t uid = xatoi_positive(argv[4]); ++ ++ errno = 0; + off_t ulimit_c = strtoull(argv[2], NULL, 10); ++ if (errno) ++ { ++ error_msg_ignore_crash(pid_str, NULL, (long unsigned)uid, signal_no, ++ signame, "RLIMIT_CORE '%s' is bogus", argv[2]); ++ xfunc_die(); ++ } ++ + if (ulimit_c < 0) /* unlimited? */ + { + /* set to max possible >0 value */ + ulimit_c = ~((off_t)1 << (sizeof(off_t)*8-1)); + } +- const char *pid_str = argv[3]; +- pid_t local_pid = xatoi_positive(argv[3]); +- uid_t uid = xatoi_positive(argv[4]); +- if (errno || local_pid <= 0) +- { +- perror_msg_and_die("PID '%s' or limit '%s' is bogus", argv[3], argv[2]); +- } ++ ++ const char *global_pid_str = argv[8]; ++ pid_t pid = xatoi_positive(argv[8]); ++ ++ user_pwd = get_cwd(pid); /* may be NULL on error */ ++ log_notice("user_pwd:'%s'", user_pwd); + + { + char *s = xmalloc_fopen_fgetline_fclose(VAR_RUN"/abrt/saved_core_pattern"); +@@ -825,8 +850,6 @@ int main(int argc, char** argv) + else + free(s); + } +- const char *global_pid_str = argv[8]; +- pid_t pid = xatoi_positive(argv[8]); + + pid_t tid = 0; + if (argv[9]) +@@ -836,56 +859,24 @@ int main(int argc, char** argv) + + char path[PATH_MAX]; + +- int src_fd_binary = -1; +- char *executable = get_executable(pid, setting_SaveBinaryImage ? &src_fd_binary : NULL); +- if (executable == NULL) +- { +- error_msg_not_process_crash(pid_str, NULL, (long unsigned)uid, signal_no, +- signame, "ignoring (can't read /proc/PID/exe link)"); +- +- xfunc_die(); +- } +- +- if (strstr(executable, "/abrt-hook-ccpp")) +- { +- error_msg_and_die("PID %lu is '%s', not dumping it to avoid recursion", +- (long)pid, executable); +- } +- +- const char *last_slash = strrchr(executable, '/'); +- if (is_path_ignored(setting_ignored_paths, executable)) +- { +- error_msg_not_process_crash(pid_str, last_slash + 1, (long unsigned)uid, signal_no, +- signame, "ignoring (listed in 'IgnoredPaths')"); +- +- return 0; +- } +- +- /* dumping core for user, if allowed */ +- if (setting_allowed_users || setting_allowed_groups) +- { +- if (setting_allowed_users && is_user_allowed(uid, setting_allowed_users)) +- log_debug("User %lu is listed in 'AllowedUsers'", (long unsigned)uid); +- else if (setting_allowed_groups && is_user_in_allowed_group(uid, setting_allowed_groups)) +- log_debug("User %lu is member of group listed in 'AllowedGroups'", (long unsigned)uid); +- else +- { +- error_msg_not_process_crash(pid_str, last_slash + 1, (long unsigned)uid, signal_no, +- signame, "ignoring (not allowed in 'AllowedUsers' nor 'AllowedGroups')"); +- +- xfunc_die(); +- } +- } +- +- user_pwd = get_cwd(pid); +- log_notice("user_pwd:'%s'", user_pwd); +- + sprintf(path, "/proc/%lu/status", (long)pid); + char *proc_pid_status = xmalloc_xopen_read_close(path, /*maxsz:*/ NULL); + + uid_t fsuid = uid; + uid_t tmp_fsuid = get_fsuid(proc_pid_status); ++ if (tmp_fsuid < 0) ++ { ++ error_msg_ignore_crash(pid_str, NULL, (long unsigned)uid, signal_no, ++ signame, "Failed to parse /proc/%lu/status (Uid)", (long)pid); ++ xfunc_die(); ++ } + const int fsgid = get_fsgid(proc_pid_status); ++ if (fsgid < 0) ++ { ++ error_msg_ignore_crash(pid_str, NULL, (long unsigned)uid, signal_no, ++ signame, "Failed to parse /proc/%lu/status (Gid)", (long)pid); ++ xfunc_die(); ++ } + + int suid_policy = dump_suid_policy(); + if (tmp_fsuid != uid) +@@ -901,8 +892,7 @@ int main(int argc, char** argv) + } + } + +- /* If PrivateReports is on, root owns all problem directories */ +- const uid_t dduid = g_settings_privatereports ? 0 : fsuid; ++ snprintf(path, sizeof(path), "%s/last-ccpp", g_settings_dump_location); + + /* Open a fd to compat coredump, if requested and is possible */ + int user_core_fd = -1; +@@ -910,18 +900,72 @@ int main(int argc, char** argv) + /* note: checks "user_pwd == NULL" inside; updates core_basename */ + user_core_fd = open_user_core(uid, fsuid, fsgid, pid, &argv[1]); + ++ int src_fd_binary = -1; ++ char *executable = get_executable(pid, setting_SaveBinaryImage ? &src_fd_binary : NULL); + if (executable == NULL) + { + /* readlink on /proc/$PID/exe failed, don't create abrt dump dir */ +- error_msg("Can't read /proc/%lu/exe link", (long)pid); ++ error_msg_ignore_crash(pid_str, NULL, (long unsigned)uid, signal_no, ++ signame, "Can't read /proc/%lu/exe link", (long)pid); ++ ++ xfunc_die(); ++ } ++ ++ const char *last_slash = strrchr(executable, '/'); ++ /* if the last_slash was found, skip it */ ++ if (last_slash) ++last_slash; ++ ++ if (is_path_ignored(setting_ignored_paths, executable)) ++ { ++ error_msg_ignore_crash(pid_str, last_slash, (long unsigned)uid, signal_no, ++ signame, "listed in 'IgnoredPaths'"); ++ ++ return 0; ++ } ++ ++ if (strstr(executable, "/abrt-hook-ccpp")) ++ { ++ error_msg_ignore_crash(pid_str, last_slash, (long unsigned)uid, signal_no, ++ signame, "avoid recursion"); ++ ++ xfunc_die(); ++ } ++ ++ /* Check /var/tmp/abrt/last-ccpp marker, do not dump repeated crashes ++ * if they happen too often. Else, write new marker value. ++ */ ++ if (check_recent_crash_file(path, executable)) ++ { ++ error_msg_ignore_crash(pid_str, last_slash, (long unsigned)uid, signal_no, ++ signame, "repeated crash"); ++ ++ /* It is a repeating crash */ + return create_user_core(user_core_fd, pid, ulimit_c); + } + ++ const bool abrt_crash = (last_slash && (strncmp(last_slash, "abrt", 4) == 0)); ++ if (abrt_crash && g_settings_debug_level == 0) ++ { ++ error_msg_ignore_crash(pid_str, last_slash, (long unsigned)uid, signal_no, ++ signame, "'DebugLevel' == 0"); ++ ++ goto finito; ++ } ++ ++ /* unsupported signal */ + if (!signal_is_fatal_bool) ++ { ++ error_msg_ignore_crash(pid_str, last_slash, (long unsigned)uid, signal_no, ++ signame, "unsupported signal"); ++ + return create_user_core(user_core_fd, pid, ulimit_c); // not a signal we care about ++ } + + if (!daemon_is_ok()) + { ++ error_msg_ignore_crash(pid_str, last_slash, (long unsigned)uid, signal_no, ++ signame, "abrtd is not running"); ++ + /* not an error, exit with exit code 0 */ + log("abrtd is not running. If it crashed, " + "/proc/sys/kernel/core_pattern contains a stale value, " +@@ -930,32 +974,40 @@ int main(int argc, char** argv) + return create_user_core(user_core_fd, pid, ulimit_c); + } + ++ /* dumping core for user, if allowed */ ++ if (setting_allowed_users || setting_allowed_groups) ++ { ++ if (setting_allowed_users && is_user_allowed(uid, setting_allowed_users)) ++ log_debug("User %lu is listed in 'AllowedUsers'", (long unsigned)uid); ++ else if (setting_allowed_groups && is_user_in_allowed_group(uid, setting_allowed_groups)) ++ log_debug("User %lu is member of group listed in 'AllowedGroups'", (long unsigned)uid); ++ else ++ { ++ error_msg_ignore_crash(pid_str, last_slash, (long unsigned)uid, signal_no, ++ signame, "not allowed in 'AllowedUsers' nor 'AllowedGroups'"); ++ ++ xfunc_die(); ++ } ++ } ++ ++ /* low free space */ + if (g_settings_nMaxCrashReportsSize > 0) + { + /* If free space is less than 1/4 of MaxCrashReportsSize... */ + if (low_free_space(g_settings_nMaxCrashReportsSize, g_settings_dump_location)) ++ { ++ error_msg_ignore_crash(pid_str, last_slash, (long unsigned)uid, signal_no, ++ signame, "low free space"); + return create_user_core(user_core_fd, pid, ulimit_c); ++ } + } + +- /* Check /var/tmp/abrt/last-ccpp marker, do not dump repeated crashes +- * if they happen too often. Else, write new marker value. +- */ +- snprintf(path, sizeof(path), "%s/last-ccpp", g_settings_dump_location); +- if (check_recent_crash_file(path, executable)) +- { +- /* It is a repeating crash */ +- return create_user_core(user_core_fd, pid, ulimit_c); +- } ++ /* processing crash - inform user about it */ ++ error_msg_process_crash(pid_str, last_slash, (long unsigned)uid, ++ signal_no, signame, "dumping core"); + +- if (last_slash && strncmp(++last_slash, "abrt", 4) == 0) ++ if (abrt_crash) + { +- if (g_settings_debug_level == 0) +- { +- log_warning("Ignoring crash of %s (SIG%s).", +- executable, signame ? signame : signal_str); +- goto finito; +- } +- + /* If abrtd/abrt-foo crashes, we don't want to create a _directory_, + * since that can make new copy of abrtd to process it, + * and maybe crash again... +@@ -974,7 +1026,7 @@ int main(int argc, char** argv) + * but it does not log file name */ + error_msg_and_die("Error saving '%s'", path); + } +- log("Saved core dump of pid %lu (%s) to %s (%llu bytes)", (long)pid, executable, path, (long long)core_size); ++ log_notice("Saved core dump of pid %lu (%s) to %s (%llu bytes)", (long)pid, executable, path, (long long)core_size); + err = 0; + goto finito; + } +@@ -986,6 +1038,9 @@ int main(int argc, char** argv) + return create_user_core(user_core_fd, pid, ulimit_c); + } + ++ /* If PrivateReports is on, root owns all problem directories */ ++ const uid_t dduid = g_settings_privatereports ? 0 : fsuid; ++ + /* use dduid (either fsuid or 0) instead of uid, so we don't expose any + * sensitive information of suided app in /var/tmp/abrt + * +-- +1.8.3.1 + diff --git a/SOURCES/0233-abrt-hook-ccpp-save-get_fsuid-return-values-in-int-v.patch b/SOURCES/0233-abrt-hook-ccpp-save-get_fsuid-return-values-in-int-v.patch new file mode 100644 index 0000000..fdfecd8 --- /dev/null +++ b/SOURCES/0233-abrt-hook-ccpp-save-get_fsuid-return-values-in-int-v.patch @@ -0,0 +1,48 @@ +From 3853f65022ef450469a6f612fe1ae11ab3f87a8a Mon Sep 17 00:00:00 2001 +From: Matej Habrnal +Date: Thu, 26 May 2016 10:15:07 +0200 +Subject: [PATCH] abrt-hook-ccpp: save get_fsuid() return values in int + variables + +int because get_fsuid() returns negative values in case of error +Revealed by coverity. + +Related to: #1337186 + +Signed-off-by: Matej Habrnal +--- + src/hooks/abrt-hook-ccpp.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/src/hooks/abrt-hook-ccpp.c b/src/hooks/abrt-hook-ccpp.c +index dc4dec6..581a540 100644 +--- a/src/hooks/abrt-hook-ccpp.c ++++ b/src/hooks/abrt-hook-ccpp.c +@@ -863,7 +863,8 @@ int main(int argc, char** argv) + char *proc_pid_status = xmalloc_xopen_read_close(path, /*maxsz:*/ NULL); + + uid_t fsuid = uid; +- uid_t tmp_fsuid = get_fsuid(proc_pid_status); ++ /* int because get_fsuid() returns negative values in case of error */ ++ int tmp_fsuid = get_fsuid(proc_pid_status); + if (tmp_fsuid < 0) + { + error_msg_ignore_crash(pid_str, NULL, (long unsigned)uid, signal_no, +@@ -879,12 +880,12 @@ int main(int argc, char** argv) + } + + int suid_policy = dump_suid_policy(); +- if (tmp_fsuid != uid) ++ if ((uid_t)tmp_fsuid != uid) + { + /* use root for suided apps unless it's explicitly set to UNSAFE */ + fsuid = 0; + if (suid_policy == DUMP_SUID_UNSAFE) +- fsuid = tmp_fsuid; ++ fsuid = (uid_t)tmp_fsuid; + else + { + g_user_core_flags = O_EXCL; +-- +1.8.3.1 + diff --git a/SOURCES/0238-vmcore-fix-finding-partitions-by-UUID-and-LABEL.patch b/SOURCES/0238-vmcore-fix-finding-partitions-by-UUID-and-LABEL.patch new file mode 100644 index 0000000..16845b7 --- /dev/null +++ b/SOURCES/0238-vmcore-fix-finding-partitions-by-UUID-and-LABEL.patch @@ -0,0 +1,91 @@ +From 5cdaa8e6a276ad8cb79c3457badbb4f9dda5aa3e Mon Sep 17 00:00:00 2001 +From: Jakub Filak +Date: Mon, 13 Jun 2016 09:43:21 +0200 +Subject: [PATCH] vmcore: fix finding partitions by UUID and LABEL + +In kdump.conf fs partition can be specified by UUID or LABEL but mtab +uses only file system node path. Hence, we need to translate the ID to +its node path. + +Related: rhbz#1147053 + +Signed-off-by: Jakub Filak +--- + configure.ac | 2 ++ + src/hooks/Makefile.am | 1 + + src/hooks/abrt_harvest_vmcore.py.in | 27 +++++++++++++++++++++++++++ + 3 files changed, 30 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 330dd9c..20a7f27 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -173,6 +173,8 @@ AC_ARG_ENABLE(doxygen-docs, + [enable_doxygen_docs=no] + ) + ++AC_PATH_PROG([BLKID], [BLKID], [/usr/sbin/blkid], [$PATH:/usr/sbin:/sbin]) ++ + # Doxygen Documentation + + AC_PATH_PROG(DOXYGEN, doxygen, no) +diff --git a/src/hooks/Makefile.am b/src/hooks/Makefile.am +index 9a527f4..216cfc1 100644 +--- a/src/hooks/Makefile.am ++++ b/src/hooks/Makefile.am +@@ -92,6 +92,7 @@ abrt-install-ccpp-hook: abrt-install-ccpp-hook.in + abrt-harvest-vmcore: abrt_harvest_vmcore.py.in + sed -e s,\@CONF_DIR\@,\$(CONF_DIR)\,g \ + -e s,\@DEFAULT_DUMP_LOCATION\@,$(DEFAULT_DUMP_LOCATION),g \ ++ -e s,\@BLKID\@,$(BLKID),g \ + $< >$@ + + abrt-harvest-pstoreoops: abrt-harvest-pstoreoops.in +diff --git a/src/hooks/abrt_harvest_vmcore.py.in b/src/hooks/abrt_harvest_vmcore.py.in +index c6a7e6b..e71e5c9 100644 +--- a/src/hooks/abrt_harvest_vmcore.py.in ++++ b/src/hooks/abrt_harvest_vmcore.py.in +@@ -13,6 +13,7 @@ import shutil + import time + import hashlib + import augeas ++from subprocess import Popen, PIPE + + import problem + +@@ -37,6 +38,32 @@ def get_mount_point(part_id): + part_id - device node, label or uuid + """ + ++ idtypes = {"UUID=":"-U", "PARTUUID=":"-U", "LABEL=":"-L", "PARTLABEL=":"-L"} ++ ++ for typ, switch in idtypes.items(): ++ if not part_id.startswith(typ): ++ continue ++ ++ idf = part_id[len(typ):] ++ try: ++ proc = Popen(["@BLKID@", switch, idf], stdout=PIPE, stderr=PIPE) ++ out, err = proc.communicate() ++ if err: ++ sys.stderr.write("Failed 'blkid {0} {1}': {2}\n" ++ .format(switch, idf, err)) ++ sys.exit(1) ++ if not out: ++ sys.stderr.write("No results from 'blkid {0} {1}'\n" ++ .format(switch, idf)) ++ sys.exit(1) ++ ++ part_id = out.strip() ++ break ++ except OSError as ex: ++ sys.stderr.write("Cannot run 'blkid {0} {1}': {2}\n" ++ .format(switch, idf, str(ex))) ++ sys.exit(1) ++ + # look up the identifier in /etc/mtab + result = get_augeas("Fstab", "/etc/mtab").get("/files/etc/mtab/*" + "[spec=\"" + part_id + "\"]/file") +-- +1.8.3.1 + diff --git a/SOURCES/0240-vmcore-use-findmnt-to-get-mountpoint.patch b/SOURCES/0240-vmcore-use-findmnt-to-get-mountpoint.patch new file mode 100644 index 0000000..dd93690 --- /dev/null +++ b/SOURCES/0240-vmcore-use-findmnt-to-get-mountpoint.patch @@ -0,0 +1,133 @@ +From 79108d97e3b3d031c34c432634b305ce0becf716 Mon Sep 17 00:00:00 2001 +From: Jakub Filak +Date: Thu, 16 Jun 2016 14:21:28 +0200 +Subject: [PATCH] vmcore: use findmnt to get mountpoint + +findmnt solves both problems: +* UUID=/LABEL= +* different device links + +Related: rhbz#1147053 + +Signed-off-by: Jakub Filak + +Conflicts: + src/hooks/abrt_harvest_vmcore.py.in +--- + configure.ac | 2 +- + src/hooks/Makefile.am | 2 +- + src/hooks/abrt_harvest_vmcore.py.in | 59 ++++++++++++++----------------------- + 3 files changed, 24 insertions(+), 39 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 20a7f27..02d7e0e 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -173,7 +173,7 @@ AC_ARG_ENABLE(doxygen-docs, + [enable_doxygen_docs=no] + ) + +-AC_PATH_PROG([BLKID], [BLKID], [/usr/sbin/blkid], [$PATH:/usr/sbin:/sbin]) ++AC_PATH_PROG([FINDMNT], [findmnt], [/usr/bin/findmnt], [$PATH:/usr/sbin:/sbin]) + + # Doxygen Documentation + +diff --git a/src/hooks/Makefile.am b/src/hooks/Makefile.am +index 216cfc1..650a771 100644 +--- a/src/hooks/Makefile.am ++++ b/src/hooks/Makefile.am +@@ -92,7 +92,7 @@ abrt-install-ccpp-hook: abrt-install-ccpp-hook.in + abrt-harvest-vmcore: abrt_harvest_vmcore.py.in + sed -e s,\@CONF_DIR\@,\$(CONF_DIR)\,g \ + -e s,\@DEFAULT_DUMP_LOCATION\@,$(DEFAULT_DUMP_LOCATION),g \ +- -e s,\@BLKID\@,$(BLKID),g \ ++ -e s,\@FINDMNT\@,$(FINDMNT),g \ + $< >$@ + + abrt-harvest-pstoreoops: abrt-harvest-pstoreoops.in +diff --git a/src/hooks/abrt_harvest_vmcore.py.in b/src/hooks/abrt_harvest_vmcore.py.in +index e71e5c9..6b2719e 100644 +--- a/src/hooks/abrt_harvest_vmcore.py.in ++++ b/src/hooks/abrt_harvest_vmcore.py.in +@@ -18,6 +18,12 @@ from subprocess import Popen, PIPE + import problem + + ++def errx(message, code=1): ++ sys.stderr.write(message) ++ sys.stderr.write("\n") ++ sys.stderr.flush() ++ sys.exit(code) ++ + def get_augeas(module, file_path): + """ + A function for efficient configuration of Augeas. +@@ -32,49 +38,28 @@ def get_augeas(module, file_path): + + def get_mount_point(part_id): + """ +- A function used to look up a mount point in mtab using +- the provided identifier. ++ A function used to look up a mount point of the provided identifier ++ using 'findmnt' system utility. + + part_id - device node, label or uuid + """ + +- idtypes = {"UUID=":"-U", "PARTUUID=":"-U", "LABEL=":"-L", "PARTLABEL=":"-L"} +- +- for typ, switch in idtypes.items(): +- if not part_id.startswith(typ): +- continue +- +- idf = part_id[len(typ):] +- try: +- proc = Popen(["@BLKID@", switch, idf], stdout=PIPE, stderr=PIPE) +- out, err = proc.communicate() +- if err: +- sys.stderr.write("Failed 'blkid {0} {1}': {2}\n" +- .format(switch, idf, err)) +- sys.exit(1) +- if not out: +- sys.stderr.write("No results from 'blkid {0} {1}'\n" +- .format(switch, idf)) +- sys.exit(1) +- +- part_id = out.strip() +- break +- except OSError as ex: +- sys.stderr.write("Cannot run 'blkid {0} {1}': {2}\n" +- .format(switch, idf, str(ex))) +- sys.exit(1) ++ try: ++ proc = Popen(["@FINDMNT@", "--noheadings", "--first-only", "--raw", ++ "--evaluate", "--output", "TARGET", part_id], ++ stdout=PIPE, stderr=PIPE) ++ out, err = proc.communicate() ++ if err: ++ errx("Error finding mountpoint of '{0}': {1}" ++ .format(devpath, err)) ++ ++ result = out.strip() ++ if proc.returncode != 0 or not result: ++ errx("Cannot find mountpoint of '{0}'".format(part_id)) + +- # look up the identifier in /etc/mtab +- result = get_augeas("Fstab", "/etc/mtab").get("/files/etc/mtab/*" +- "[spec=\"" + part_id + "\"]/file") +- if result: + return result +- else: +- # identifier not in the table +- sys.stderr.write("Error: Cannot access partition '" + part_id + +- "', mount point not found in /etc/mtab!\n") +- sys.exit(1) +- ++ except OSError as ex: ++ errx("Cannot run 'findmnt': {1}".format(str(ex))) + + def parse_kdump(): + """ +-- +1.8.3.1 + diff --git a/SOURCES/0245-daemon-trigger-dump-location-cleanup-after-detection.patch b/SOURCES/0245-daemon-trigger-dump-location-cleanup-after-detection.patch new file mode 100644 index 0000000..67ed58e --- /dev/null +++ b/SOURCES/0245-daemon-trigger-dump-location-cleanup-after-detection.patch @@ -0,0 +1,603 @@ +From b963494f41fe75463a14c127e9ded5760cb09cec Mon Sep 17 00:00:00 2001 +From: Jakub Filak +Date: Tue, 19 Jul 2016 20:34:02 +0200 +Subject: [PATCH] daemon: trigger dump location cleanup after detection + +This commit restores the old behaviour where the cleanup algorithm was +started right after new dump directory is created. This prevents piling +up of new dump directories which could lead to consumption of too much +disk space. The piling up of dump directories is currently prevented by +the plugins removing old dump directories on their own, which is in fact +problematic because the plugins don't know about each other and that causes +race conditions. + +The post-create EVENT execution was moved from abrtd to abrt-server in +commit b6640620e27a029b3f1f8dcec22fb4c95e48db2a in order to replace the +inotify watch in abrtd with the /creation_notification method of +abrt-server. + +What are the cases we must deal with +----------------------------------- + +1) an old directory is to be removed +2) one of the queued directory is to be removed +3) currently processing directory is to be removed + +The case 1) is not problematic at all (except removing directories that +are currently being handled by users). + +The case 2) would cause an error message produced by abrt-handle-event +waked up from waiting for post-create.lock - the error message could be +avoided by ignoring the error in case of running post-create EVENT. + +The case 3) is extremely problematic and must be avoid in all situation. +There is no other way how to avoid this case without a central +synchronization algorithm. One could claim that we should lock the +currently processed dump directory and don't removed the locked ones but +libreport's locking algorithm doesn't support recursive locking between +processes - however, the recursive inter process locking would get rid +of the case 1). Or abrt-handle-event could write the handled directory +name to a new file but it is not clear where the file would be consumed +as there is no authority doing the cleanup. And, what is the worst, +communication trough files will lead to another type race conditions. + +What this patch introduces +-------------------------- + +This patch adds communication between abrtd and its child processes +abrt-server. When abrt-server is asked to run post-create EVENT, it +sends the "NEW_PROBLEM_DETECTED: $DUMP_DIR" message to abrtd over +STDERR. STDERR is used because STDOUT is occupied by the socket (we +might want to make it less obfuscated in future and use a FIFO +or something else, but now I am happy with using STDERR). abrtd +then pushes the abrt-server process to a queue used to track abrt-server +processes wanting to run post-create EVENT. When a process from the +queue is to be executed abrtd sends it SIGUSR1 signal. If a dump +directory of any of queued process was removed, abrtd sends the relevant +abrt-server process SIGINT signal. + +Resolves #1132459 + +Signed-off-by: Jakub Filak + +Conflicts: + src/daemon/abrt-server.c + src/daemon/abrtd.c +--- + src/daemon/abrt-server.c | 129 ++++++++++++++++++++ + src/daemon/abrtd.c | 303 +++++++++++++++++++++++++++++++++++++++++++++-- + 2 files changed, 420 insertions(+), 12 deletions(-) + +diff --git a/src/daemon/abrt-server.c b/src/daemon/abrt-server.c +index afd9fd3..a0faef6 100644 +--- a/src/daemon/abrt-server.c ++++ b/src/daemon/abrt-server.c +@@ -16,6 +16,7 @@ + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + #include "problem_api.h" ++#include "abrt_glib.h" + #include "libabrt.h" + + /* Maximal length of backtrace. */ +@@ -71,10 +72,75 @@ MANDATORY ITEMS: + You can send more messages using the same KEY=value format. + */ + ++static int g_signal_pipe[2]; ++ ++struct waiting_context ++{ ++ GMainLoop *main_loop; ++ const char *dirname; ++ int retcode; ++ enum abrt_daemon_reply ++ { ++ ABRT_CONTINUE, ++ ABRT_INTERRUPT, ++ } reply; ++}; ++ + static unsigned total_bytes_read = 0; + + static uid_t client_uid = (uid_t)-1L; + ++static void ++handle_signal(int signo) ++{ ++ int save_errno = errno; ++ uint8_t sig_caught = signo; ++ if (write(g_signal_pipe[1], &sig_caught, 1)) ++ /* we ignore result, if () shuts up stupid compiler */; ++ errno = save_errno; ++} ++ ++static gboolean ++handle_signal_pipe_cb(GIOChannel *gio, GIOCondition condition, gpointer user_data) ++{ ++ gsize len = 0; ++ uint8_t signals[2]; ++ ++ for (;;) ++ { ++ GError *error = NULL; ++ GIOStatus stat = g_io_channel_read_chars(gio, (void *)signals, sizeof(signals), &len, NULL); ++ if (stat == G_IO_STATUS_ERROR) ++ error_msg_and_die(_("Can't read from gio channel: '%s'"), error ? error->message : ""); ++ if (stat == G_IO_STATUS_EOF) ++ return FALSE; /* Remove this GLib source */ ++ if (stat == G_IO_STATUS_AGAIN) ++ break; ++ ++ /* G_IO_STATUS_NORMAL */ ++ for (unsigned signo = 0; signo < len; ++signo) ++ { ++ /* we did receive a signal */ ++ struct waiting_context *context = (struct waiting_context *)user_data; ++ log_debug("Got signal %d through signal pipe", signals[signo]); ++ switch (signals[signo]) ++ { ++ case SIGUSR1: context->reply = ABRT_CONTINUE; break; ++ case SIGINT: context->reply = ABRT_INTERRUPT; break; ++ default: ++ { ++ error_msg("Bug - aborting - unsupported signal: %d", signals[signo]); ++ abort(); ++ } ++ } ++ ++ g_main_loop_quit(context->main_loop); ++ return FALSE; /* remove this event */ ++ } ++ } ++ ++ return TRUE; /* "please don't remove this event" */ ++} + + /* Remove dump dir */ + static int delete_path(const char *dump_dir_name) +@@ -153,6 +219,24 @@ static pid_t spawn_event_handler_child(const char *dump_dir_name, const char *ev + return child; + } + ++static gboolean emit_new_problem_signal(gpointer data) ++{ ++ struct waiting_context *context = (struct waiting_context *)data; ++ ++ const size_t wrote = fprintf(stderr, "NEW_PROBLEM_DETECTED: %s\n", context->dirname); ++ fflush(stderr); ++ ++ if (wrote <= 0) ++ { ++ error_msg("Failed to communicate with the daemon"); ++ context->retcode = 503; ++ g_main_loop_quit(context->main_loop); ++ } ++ ++ log_notice("Emitted new problem signal, waiting for SIGUSR1|SIGINT"); ++ return FALSE; ++} ++ + static int run_post_create(const char *dirname) + { + /* If doesn't start with "g_settings_dump_location/"... */ +@@ -179,6 +263,51 @@ static int run_post_create(const char *dirname) + } + } + ++ /* ++ * The post-create event cannot be run concurrently for more problem ++ * directories. The problem is in searching for duplicates process ++ * in case when two concurrently processed directories are duplicates ++ * of each other. Both of the directories are marked as duplicates ++ * of each other and are deleted. ++ */ ++ log_debug("Creating glib main loop"); ++ struct waiting_context context = {0}; ++ context.main_loop = g_main_loop_new(NULL, FALSE); ++ context.dirname = dirname; ++ ++ log_debug("Setting up a signal handler"); ++ /* Set up signal pipe */ ++ xpipe(g_signal_pipe); ++ close_on_exec_on(g_signal_pipe[0]); ++ close_on_exec_on(g_signal_pipe[1]); ++ ndelay_on(g_signal_pipe[0]); ++ ndelay_on(g_signal_pipe[1]); ++ signal(SIGUSR1, handle_signal); ++ signal(SIGINT, handle_signal); ++ GIOChannel *channel_signal = abrt_gio_channel_unix_new(g_signal_pipe[0]); ++ g_io_add_watch(channel_signal, G_IO_IN | G_IO_PRI, handle_signal_pipe_cb, &context); ++ ++ g_idle_add(emit_new_problem_signal, &context); ++ ++ g_main_loop_run(context.main_loop); ++ ++ g_main_loop_unref(context.main_loop); ++ g_io_channel_unref(channel_signal); ++ close(g_signal_pipe[1]); ++ close(g_signal_pipe[0]); ++ ++ log_notice("Waiting finished"); ++ ++ if (context.retcode != 0) ++ return context.retcode; ++ ++ if (context.reply != ABRT_CONTINUE) ++ /* The only reason for the interruption is removed problem directory */ ++ return 413; ++ /* ++ * The post-create event synchronization done. ++ */ ++ + int child_stdout_fd; + int child_pid = spawn_event_handler_child(dirname, "post-create", &child_stdout_fd); + +diff --git a/src/daemon/abrtd.c b/src/daemon/abrtd.c +index b79e940..ff0565c 100644 +--- a/src/daemon/abrtd.c ++++ b/src/daemon/abrtd.c +@@ -55,9 +55,42 @@ static int s_signal_pipe_write = -1; + static unsigned s_timeout; + static bool s_exiting; + ++GList *s_processes; ++GList *s_dir_queue; ++ + static GIOChannel *channel_socket = NULL; + static guint channel_id_socket = 0; +-static int child_count = 0; ++ ++struct abrt_server_proc ++{ ++ pid_t pid; ++ int fdout; ++ char *dirname; ++ GIOChannel *channel; ++ guint watch_id; ++ enum { ++ AS_UKNOWN, ++ AS_POST_CREATE, ++ } type; ++}; ++ ++/* Returns 0 if proc's pid equals the the given pid */ ++static gint abrt_server_compare_pid(struct abrt_server_proc *proc, pid_t *pid) ++{ ++ return proc->pid != *pid; ++} ++ ++/* Returns 0 if proc's fdout equals the the given fdout */ ++static gint abrt_server_compare_fdout(struct abrt_server_proc *proc, int *fdout) ++{ ++ return proc->fdout != *fdout; ++} ++ ++/* Returns 0 if proc's dirname equals the the given dirname */ ++static gint abrt_server_compare_dirname(struct abrt_server_proc *proc, const char *dirname) ++{ ++ return g_strcmp0(proc->dirname, dirname); ++} + + /* Helpers */ + static guint add_watch_or_die(GIOChannel *channel, unsigned condition, GIOFunc func) +@@ -69,9 +102,212 @@ static guint add_watch_or_die(GIOChannel *channel, unsigned condition, GIOFunc f + return r; + } + +-static void increment_child_count(void) ++static void stop_abrt_server(struct abrt_server_proc *proc) ++{ ++ kill(proc->pid, SIGINT); ++} ++ ++static void dispose_abrt_server(struct abrt_server_proc *proc) ++{ ++ close(proc->fdout); ++ free(proc->dirname); ++ ++ if (proc->watch_id > 0) ++ g_source_remove(proc->watch_id); ++ ++ if (proc->channel != NULL) ++ g_io_channel_unref(proc->channel); ++} ++ ++static void notify_next_post_create_process(struct abrt_server_proc *finished) ++{ ++ if (finished != NULL) ++ s_dir_queue = g_list_remove(s_dir_queue, finished); ++ ++ while (s_dir_queue != NULL) ++ { ++ struct abrt_server_proc *n = (struct abrt_server_proc *)s_dir_queue->data; ++ if (n->type == AS_POST_CREATE) ++ break; ++ ++ if (kill(n->pid, SIGUSR1) >= 0) ++ { ++ n->type = AS_POST_CREATE; ++ break; ++ } ++ ++ /* This could happen only if the notified process disappeared - crashed? ++ */ ++ perror_msg("Failed to send SIGUSR1 to %d", n->pid); ++ log_warning("Directory '%s' will not be processed", n->dirname); ++ ++ /* Remove the problematic process from the post-crate directory queue ++ * and go to try to notify another process. ++ */ ++ s_dir_queue = g_list_delete_link(s_dir_queue, s_dir_queue); ++ } ++} ++ ++/* Queueing the process will also lead to cleaning up the dump location. ++ */ ++static void queue_post_craete_process(struct abrt_server_proc *proc) ++{ ++ load_abrt_conf(); ++ struct abrt_server_proc *running = s_dir_queue == NULL ? NULL ++ : (struct abrt_server_proc *)s_dir_queue->data; ++ if (g_settings_nMaxCrashReportsSize == 0) ++ goto consider_processing; ++ ++ const char *full_path_ignored = running != NULL ? running->dirname ++ : proc->dirname; ++ const char *ignored = strrchr(full_path_ignored, '/'); ++ if (NULL == ignored) ++ /* Paranoia, this should not happen. */ ++ ignored = full_path_ignored; ++ else ++ /* Move behind '/' */ ++ ++ignored; ++ ++ char *worst_dir = NULL; ++ const double max_size = 1024 * 1024 * g_settings_nMaxCrashReportsSize; ++ while (get_dirsize_find_largest_dir(g_settings_dump_location, &worst_dir, ignored) >= max_size ++ && worst_dir) ++ { ++ const char *kind = "old"; ++ char *deleted = concat_path_file(g_settings_dump_location, worst_dir); ++ ++ GList *proc_of_deleted_item = NULL; ++ if (proc != NULL && strcmp(deleted, proc->dirname) == 0) ++ { ++ kind = "new"; ++ stop_abrt_server(proc); ++ proc = NULL; ++ } ++ else if ((proc_of_deleted_item = g_list_find_custom(s_dir_queue, deleted, (GCompareFunc)abrt_server_compare_dirname))) ++ { ++ kind = "unprocessed"; ++ struct abrt_server_proc *removed_proc = (struct abrt_server_proc *)proc_of_deleted_item->data; ++ s_dir_queue = g_list_delete_link(s_dir_queue, proc_of_deleted_item); ++ stop_abrt_server(removed_proc); ++ } ++ ++ log("Size of '%s' >= %u MB (MaxCrashReportsSize), deleting %s directory '%s'", ++ g_settings_dump_location, g_settings_nMaxCrashReportsSize, ++ kind, worst_dir); ++ ++ free(worst_dir); ++ worst_dir = NULL; ++ ++ struct dump_dir *dd = dd_opendir(deleted, DD_FAIL_QUIETLY_ENOENT); ++ if (dd != NULL) ++ dd_delete(dd); ++ ++ free(deleted); ++ } ++ ++consider_processing: ++ /* If the process survived cleaning up the dump location, append it to the ++ * post-create queue. ++ */ ++ if (proc != NULL) ++ s_dir_queue = g_list_append(s_dir_queue, proc); ++ ++ /* If there were no running post-crate process before we added the ++ * currently handled process to the post-create queue, start processing of ++ * the currently handled process. ++ */ ++ if (running == NULL) ++ notify_next_post_create_process(NULL/*finished*/); ++} ++ ++static gboolean abrt_server_output_cb(GIOChannel *channel, GIOCondition condition, gpointer user_data) ++{ ++ int fdout = g_io_channel_unix_get_fd(channel); ++ GList *item = g_list_find_custom(s_processes, &fdout, (GCompareFunc)abrt_server_compare_fdout); ++ if (item == NULL) ++ { ++ log_warning("Closing a pipe fd (%d) without a process assigned", fdout); ++ close(fdout); ++ return FALSE; ++ } ++ ++ struct abrt_server_proc *proc = (struct abrt_server_proc *)item->data; ++ ++ if (condition & G_IO_HUP) ++ { ++ log_debug("abrt-server(%d) closed its pipe", proc->pid); ++ proc->watch_id = 0; ++ return FALSE; ++ } ++ ++ for (;;) ++ { ++ gchar *line; ++ gsize len = 0; ++ gsize pos = 0; ++ GError *error = NULL; ++ ++ /* We use buffered channel so we do not need to read from the channel in a ++ * loop */ ++ GIOStatus stat = g_io_channel_read_line(channel, &line, &len, &pos, &error); ++ if (stat == G_IO_STATUS_ERROR) ++ error_msg_and_die("Can't read from pipe of abrt-server(%d): '%s'", proc->pid, error ? error->message : ""); ++ if (stat == G_IO_STATUS_EOF) ++ { ++ log_debug("abrt-server(%d)'s output read till end", proc->pid); ++ proc->watch_id = 0; ++ return FALSE; /* Remove this event */ ++ } ++ if (stat == G_IO_STATUS_AGAIN) ++ break; ++ ++ /* G_IO_STATUS_NORMAL) */ ++ line[pos] = '\0'; ++ if (g_str_has_prefix(line, "NEW_PROBLEM_DETECTED: ")) ++ { ++ if (proc->dirname != NULL) ++ { ++ log_warning("abrt-server(%d): already handling: %s", proc->pid, proc->dirname); ++ free(proc->dirname); ++ /* Because process can be only once in the dir queue */ ++ s_dir_queue = g_list_remove(s_dir_queue, proc); ++ } ++ ++ proc->dirname = xstrdup(line + strlen("NEW_PROBLEM_DETECTED: ")); ++ log_notice("abrt-server(%d): handling new problem: %s", proc->pid, proc->dirname); ++ queue_post_craete_process(proc); ++ } ++ else ++ log("abrt-server(%d): not recognized message: '%s'", proc->pid, line); ++ ++ g_free(line); ++ } ++ ++ return TRUE; /* Keep this event */ ++} ++ ++static void add_abrt_server_proc(const pid_t pid, int fdout) + { +- if (++child_count >= MAX_CLIENT_COUNT) ++ struct abrt_server_proc *proc = xmalloc(sizeof(*proc)); ++ proc->pid = pid; ++ proc->fdout = fdout; ++ proc->dirname = NULL; ++ proc->type = AS_UKNOWN; ++ proc->channel = abrt_gio_channel_unix_new(proc->fdout); ++ proc->watch_id = g_io_add_watch(proc->channel, ++ G_IO_IN | G_IO_HUP, ++ abrt_server_output_cb, ++ proc); ++ ++ GError *error = NULL; ++ g_io_channel_set_flags(proc->channel, G_IO_FLAG_NONBLOCK, &error); ++ if (error != NULL) ++ error_msg_and_die("g_io_channel_set_flags failed: '%s'", error->message); ++ ++ g_io_channel_set_buffered(proc->channel, TRUE); ++ ++ s_processes = g_list_append(s_processes, proc); ++ if (g_list_length(s_processes) >= MAX_CLIENT_COUNT) + { + error_msg("Too many clients, refusing connections to '%s'", SOCKET_FILE); + /* To avoid infinite loop caused by the descriptor in "ready" state, +@@ -84,11 +320,29 @@ static void increment_child_count(void) + + static gboolean server_socket_cb(GIOChannel *source, GIOCondition condition, gpointer ptr_unused); + +-static void decrement_child_count(void) ++static void remove_abrt_server_proc(pid_t pid, int status) + { +- if (child_count) +- child_count--; +- if (child_count < MAX_CLIENT_COUNT && !channel_id_socket) ++ GList *item = g_list_find_custom(s_processes, &pid, (GCompareFunc)abrt_server_compare_pid); ++ if (item == NULL) ++ return; ++ ++ struct abrt_server_proc *proc = (struct abrt_server_proc *)item->data; ++ item->data = NULL; ++ s_processes = g_list_delete_link(s_processes, item); ++ ++ if (proc->type == AS_POST_CREATE) ++ notify_next_post_create_process(proc); ++ else ++ { /* Make sure out-of-order exited abrt-server post-create processes do ++ * not stay in the post-create queue. ++ */ ++ s_dir_queue = g_list_remove(s_dir_queue, proc); ++ } ++ ++ dispose_abrt_server(proc); ++ free(proc); ++ ++ if (g_list_length(s_processes) < MAX_CLIENT_COUNT && !channel_id_socket) + { + log_info("Accepting connections on '%s'", SOCKET_FILE); + channel_id_socket = add_watch_or_die(channel_socket, G_IO_IN | G_IO_PRI | G_IO_HUP, server_socket_cb); +@@ -107,17 +361,27 @@ static gboolean server_socket_cb(GIOChannel *source, GIOCondition condition, gpo + + log_notice("New client connected"); + fflush(NULL); /* paranoia */ ++ ++ int pipefd[2]; ++ xpipe(pipefd); ++ + pid_t pid = fork(); + if (pid < 0) + { + perror_msg("fork"); ++ close(pipefd[0]); ++ close(pipefd[1]); + close(socket); + return TRUE; + } + if (pid == 0) /* child */ + { +- xmove_fd(socket, 0); +- xdup2(0, 1); ++ xdup2(socket, STDIN_FILENO); ++ xdup2(socket, STDOUT_FILENO); ++ close(socket); ++ ++ close(pipefd[0]); ++ xmove_fd(pipefd[1], STDERR_FILENO); + + char *argv[3]; /* abrt-server [-s] NULL */ + char **pp = argv; +@@ -129,9 +393,12 @@ static gboolean server_socket_cb(GIOChannel *source, GIOCondition condition, gpo + execvp(argv[0], argv); + perror_msg_and_die("Can't execute '%s'", argv[0]); + } ++ + /* parent */ +- increment_child_count(); + close(socket); ++ close(pipefd[1]); ++ add_abrt_server_proc(pid, pipefd[0]); ++ + return TRUE; + } + +@@ -149,9 +416,21 @@ static gboolean handle_signal_cb(GIOChannel *gio, GIOCondition condition, gpoint + s_exiting = 1; + else + { +- while (safe_waitpid(-1, NULL, WNOHANG) > 0) ++ pid_t cpid; ++ int status; ++ while ((cpid = safe_waitpid(-1, &status, WNOHANG)) > 0) + { +- decrement_child_count(); ++ if (WIFSIGNALED(status)) ++ log_debug("abrt-server(%d) signaled with %d", cpid, WTERMSIG(status)); ++ else if (WIFEXITED(status)) ++ log_debug("abrt-server(%d) exited with %d", cpid, WEXITSTATUS(status)); ++ else ++ { ++ log_debug("abrt-server(%d) is being debugged", cpid); ++ continue; ++ } ++ ++ remove_abrt_server_proc(cpid, status); + } + } + } +-- +1.8.3.1 + diff --git a/SOURCES/0246-handle-event-stop-creating-post-create-lock.patch b/SOURCES/0246-handle-event-stop-creating-post-create-lock.patch new file mode 100644 index 0000000..d490806 --- /dev/null +++ b/SOURCES/0246-handle-event-stop-creating-post-create-lock.patch @@ -0,0 +1,98 @@ +From 44cb33f417d62210759c1730ca13bb03165c47ad Mon Sep 17 00:00:00 2001 +From: Jakub Filak +Date: Tue, 19 Jul 2016 20:33:06 +0200 +Subject: [PATCH] handle-event: stop creating post-create lock + +Since the post-create synchronization has been moved to abrtd and +abrt-server, there is no need to crate the post-create.lock file. + +Resolves #1132459 + +Signed-off-by: Jakub Filak +--- + src/daemon/abrt-handle-event.c | 58 ------------------------------------------ + 1 file changed, 58 deletions(-) + +diff --git a/src/daemon/abrt-handle-event.c b/src/daemon/abrt-handle-event.c +index 8870901..caed577 100644 +--- a/src/daemon/abrt-handle-event.c ++++ b/src/daemon/abrt-handle-event.c +@@ -318,51 +318,6 @@ end: + return retval; + } + +-static void create_lockfile(void) +-{ +- char pid_str[sizeof(long)*3 + 4]; +- sprintf(pid_str, "%lu", (long)getpid()); +- char *lock_filename = concat_path_file(g_settings_dump_location, "post-create.lock"); +- +- /* Someone else's post-create may take a long-ish time to finish. +- * For example, I had a failing email sending there, it took +- * a minute to time out. +- * That's why timeout is large (100 seconds): +- */ +- int count = 100; +- while (1) +- { +- /* Return values: +- * -1: error (in this case, errno is 0 if error message is already logged) +- * 0: failed to lock (someone else has it locked) +- * 1: success +- */ +- int r = create_symlink_lockfile(lock_filename, pid_str); +- if (r > 0) +- break; +- if (r < 0) +- error_msg_and_die("Can't create '%s'", lock_filename); +- if (--count == 0) +- { +- /* Someone else's post-create process is alive but stuck. +- * Don't wait forever. +- */ +- error_msg("Stale lock '%s', removing it", lock_filename); +- xunlink(lock_filename); +- break; +- } +- sleep(1); +- } +- free(lock_filename); +-} +- +-static void delete_lockfile(void) +-{ +- char *lock_filename = concat_path_file(g_settings_dump_location, "post-create.lock"); +- xunlink(lock_filename); +- free(lock_filename); +-} +- + static char *do_log(char *log_line, void *param) + { + /* We pipe output of events to our log. +@@ -428,23 +383,10 @@ int main(int argc, char **argv) + make_run_event_state_forwarding(run_state); + run_state->logging_callback = do_log; + if (post_create) +- { + run_state->post_run_callback = is_crash_a_dup; +- /* +- * The post-create event cannot be run concurrently for more problem +- * directories. The problem is in searching for duplicates process +- * in case when two concurrently processed directories are duplicates +- * of each other. Both of the directories are marked as duplicates +- * of each other and are deleted. +- */ +- create_lockfile(); +- } + + int r = run_event_on_dir_name(run_state, dump_dir_name, event_name); + +- if (post_create) +- delete_lockfile(); +- + const bool no_action_for_event = (r == 0 && run_state->children_count == 0); + + free_run_event_state(run_state); +-- +1.8.3.1 + diff --git a/SOURCES/0250-lib-check_recent_crash_file-do-not-produce-error_msg.patch b/SOURCES/0250-lib-check_recent_crash_file-do-not-produce-error_msg.patch new file mode 100644 index 0000000..65238d4 --- /dev/null +++ b/SOURCES/0250-lib-check_recent_crash_file-do-not-produce-error_msg.patch @@ -0,0 +1,47 @@ +From c6e54a5eaacab21a56c41c4b138e800f6aa15faf Mon Sep 17 00:00:00 2001 +From: Matej Habrnal +Date: Tue, 8 Dec 2015 16:33:31 +0100 +Subject: [PATCH] lib: check_recent_crash_file do not produce error_msg + +Regarding to the desire to unite log messages in abrt-hook-ccpp, +we need to erase loging from check_recent_crash_file() function and let the +loging on caller of the function. + +Related to rhbz#1337186 + +Signed-off-by: Matej Habrnal +--- + src/daemon/abrt-server.c | 3 +++ + src/lib/check_recent_crash_file.c | 1 - + 2 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/daemon/abrt-server.c b/src/daemon/abrt-server.c +index a0faef6..9a1361b 100644 +--- a/src/daemon/abrt-server.c ++++ b/src/daemon/abrt-server.c +@@ -885,7 +885,10 @@ static int perform_http_xact(void) + int repeating_crash = check_recent_crash_file(last_file, executable); + free(last_file); + if (repeating_crash) /* Only pretend that we saved it */ ++ { ++ error_msg("Not saving repeating crash in '%s'", executable); + goto out; /* ret is 0: "success" */ ++ } + } + + #if 0 +diff --git a/src/lib/check_recent_crash_file.c b/src/lib/check_recent_crash_file.c +index 63db260..2df6aff 100644 +--- a/src/lib/check_recent_crash_file.c ++++ b/src/lib/check_recent_crash_file.c +@@ -44,7 +44,6 @@ int check_recent_crash_file(const char *filename, const char *executable) + buf[sz] = '\0'; + if (strcmp(executable, buf) == 0) + { +- error_msg("Not saving repeating crash in '%s'", executable); + close(fd); + return 1; + } +-- +1.8.3.1 + diff --git a/SOURCES/0254-daemon-send-base-names-from-abrt-server-to-abrtd.patch b/SOURCES/0254-daemon-send-base-names-from-abrt-server-to-abrtd.patch new file mode 100644 index 0000000..0104cc5 --- /dev/null +++ b/SOURCES/0254-daemon-send-base-names-from-abrt-server-to-abrtd.patch @@ -0,0 +1,73 @@ +From 4bba01e5bc60b4827a007f7d401b1e34f0944b70 Mon Sep 17 00:00:00 2001 +From: Jakub Filak +Date: Fri, 26 Aug 2016 12:22:24 +0200 +Subject: [PATCH] daemon: send base names from abrt-server to abrtd + +The /creation_notification method accepts arbitrary file system path and +it might cause abrtd some troubles if the path is not in canonical form. + +ABRT enforces the notified paths to be directories in /var/spool/abrt +but ignores number of slash occurrences as it is not security relevant. + +Switching to base names will assure that the problems associated with file +system path forms will be gone and no new problems will be introduced. + +The other option is to use realpath() but this function resolves +symbolic links and if /var/spool is a symbolic link, we will be in +trouble. + +Related: rhbz#1132459 + +Signed-off-by: Jakub Filak +--- + src/daemon/abrt-server.c | 2 +- + src/daemon/abrtd.c | 6 +++--- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/daemon/abrt-server.c b/src/daemon/abrt-server.c +index 9a1361b..76186db 100644 +--- a/src/daemon/abrt-server.c ++++ b/src/daemon/abrt-server.c +@@ -273,7 +273,7 @@ static int run_post_create(const char *dirname) + log_debug("Creating glib main loop"); + struct waiting_context context = {0}; + context.main_loop = g_main_loop_new(NULL, FALSE); +- context.dirname = dirname; ++ context.dirname = strrchr(dirname, '/') + 1; + + log_debug("Setting up a signal handler"); + /* Set up signal pipe */ +diff --git a/src/daemon/abrtd.c b/src/daemon/abrtd.c +index ff0565c..fc4f01e 100644 +--- a/src/daemon/abrtd.c ++++ b/src/daemon/abrtd.c +@@ -174,16 +174,15 @@ static void queue_post_craete_process(struct abrt_server_proc *proc) + && worst_dir) + { + const char *kind = "old"; +- char *deleted = concat_path_file(g_settings_dump_location, worst_dir); + + GList *proc_of_deleted_item = NULL; +- if (proc != NULL && strcmp(deleted, proc->dirname) == 0) ++ if (proc != NULL && strcmp(worst_dir, proc->dirname) == 0) + { + kind = "new"; + stop_abrt_server(proc); + proc = NULL; + } +- else if ((proc_of_deleted_item = g_list_find_custom(s_dir_queue, deleted, (GCompareFunc)abrt_server_compare_dirname))) ++ else if ((proc_of_deleted_item = g_list_find_custom(s_dir_queue, worst_dir, (GCompareFunc)abrt_server_compare_dirname))) + { + kind = "unprocessed"; + struct abrt_server_proc *removed_proc = (struct abrt_server_proc *)proc_of_deleted_item->data; +@@ -195,6 +194,7 @@ static void queue_post_craete_process(struct abrt_server_proc *proc) + g_settings_dump_location, g_settings_nMaxCrashReportsSize, + kind, worst_dir); + ++ char *deleted = concat_path_file(g_settings_dump_location, worst_dir); + free(worst_dir); + worst_dir = NULL; + +-- +1.8.3.1 + diff --git a/SOURCES/0256-Translation-updates.patch b/SOURCES/0256-Translation-updates.patch new file mode 100644 index 0000000..175a7c2 --- /dev/null +++ b/SOURCES/0256-Translation-updates.patch @@ -0,0 +1,3945 @@ +From 879a02adb6a5887bed134545e7db9b1d00fa7836 Mon Sep 17 00:00:00 2001 +From: Matej Habrnal +Date: Thu, 1 Sep 2016 14:49:24 +0200 +Subject: [PATCH] Translation updates + +Resolves #1304240 + +Signed-off-by: Matej Habrnal +--- + po/de.po | 124 +++++++++++++++++++-------------------- + po/es.po | 188 ++++++++++++++++++++++++++++++------------------------------ + po/fr.po | 129 ++++++++++++++++++++--------------------- + po/it.po | 124 +++++++++++++++++++-------------------- + po/ja.po | 124 +++++++++++++++++++-------------------- + po/ko.po | 124 +++++++++++++++++++-------------------- + po/pt_BR.po | 134 +++++++++++++++++++++---------------------- + po/ru.po | 124 +++++++++++++++++++-------------------- + po/zh_CN.po | 131 +++++++++++++++++++++--------------------- + po/zh_TW.po | 126 ++++++++++++++++++++-------------------- + 10 files changed, 664 insertions(+), 664 deletions(-) + +diff --git a/po/de.po b/po/de.po +index 455b7b2..ea61f95 100644 +--- a/po/de.po ++++ b/po/de.po +@@ -19,7 +19,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: jmoskovc@redhat.com\n" +-"POT-Creation-Date: 2015-07-14 15:37+0200\n" ++"POT-Creation-Date: 2016-06-29 15:31+0200\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +@@ -29,7 +29,7 @@ msgstr "" + "language/de/)\n" + "Language: de\n" + "Plural-Forms: nplurals=2; plural=(n != 1);\n" +-"X-Generator: Zanata 3.6.2\n" ++"X-Generator: Zanata 3.9.5\n" + + #: ../src/applet/abrt-applet.desktop.in.h:1 + msgid "Automatic Bug Reporting Tool" +@@ -363,7 +363,7 @@ msgstr "Über" + msgid "Quit" + msgstr "Beenden" + +-#: ../src/daemon/abrt-action-save-package-data.c:378 ++#: ../src/daemon/abrt-action-save-package-data.c:400 + msgid "" + "& [-v] [-c CONFFILE] -d DIR\n" + "\n" +@@ -373,9 +373,9 @@ msgstr "" + "\n" + "Paketdatenbank durchsuchen und Paket- und Komponentennamen speichern" + +-#: ../src/daemon/abrt-action-save-package-data.c:390 ++#: ../src/daemon/abrt-action-save-package-data.c:412 + #: ../src/plugins/abrt-action-analyze-backtrace.c:53 +-#: ../src/plugins/abrt-action-analyze-c.c:78 ++#: ../src/plugins/abrt-action-analyze-c.c:141 + #: ../src/plugins/abrt-action-analyze-oops.c:48 + #: ../src/plugins/abrt-action-analyze-xorg.c:84 + #: ../src/plugins/abrt-action-analyze-python.c:47 +@@ -384,12 +384,12 @@ msgstr "" + msgid "Problem directory" + msgstr "Fehler-Verzeichnis" + +-#: ../src/daemon/abrt-action-save-package-data.c:391 ++#: ../src/daemon/abrt-action-save-package-data.c:413 + msgid "Configuration file" + msgstr "Konfigurationsdatei" + +-#: ../src/daemon/abrt-server.c:792 ../src/dbus/abrt-dbus.c:1001 +-#: ../src/dbus/abrt-configuration.c:1002 ../src/daemon/abrtd.c:484 ++#: ../src/daemon/abrt-server.c:792 ../src/dbus/abrt-dbus.c:1004 ++#: ../src/dbus/abrt-configuration.c:1002 ../src/daemon/abrtd.c:465 + msgid "& [options]" + msgstr "& [options]" + +@@ -403,72 +403,72 @@ msgstr "NUM als Client-UID benutzen" + msgid "Log to syslog" + msgstr "In Systemprotokoll speichern" + +-#: ../src/daemon/abrt-server.c:805 ../src/daemon/abrtd.c:500 ++#: ../src/daemon/abrt-server.c:805 ../src/daemon/abrtd.c:481 + msgid "Add program names to log" + msgstr "Anwendungsnamen protokollieren" + +-#: ../src/dbus/abrt-dbus.c:132 ++#: ../src/dbus/abrt-dbus.c:131 + msgid "Unknown error" + msgstr "Unbekannter Fehler" + +-#: ../src/dbus/abrt-dbus.c:221 ++#: ../src/dbus/abrt-dbus.c:220 + #, c-format + msgid "'%s' is not a valid problem directory" + msgstr "»%s« ist kein gültiges Problem-Verzeichnis" + +-#: ../src/dbus/abrt-dbus.c:256 ++#: ../src/dbus/abrt-dbus.c:255 + #, c-format + msgid "'%s' element can't be modified" + msgstr "Element »%s« kann nicht geändert werden" + +-#: ../src/dbus/abrt-dbus.c:285 ../src/dbus/abrt-dbus.c:498 +-#: ../src/dbus/abrt-dbus.c:560 ../src/dbus/abrt-dbus.c:625 +-#: ../src/dbus/abrt-dbus.c:815 ../src/dbus/abrt-configuration.c:618 ++#: ../src/dbus/abrt-dbus.c:284 ../src/dbus/abrt-dbus.c:497 ++#: ../src/dbus/abrt-dbus.c:559 ../src/dbus/abrt-dbus.c:624 ++#: ../src/dbus/abrt-dbus.c:814 ../src/dbus/abrt-configuration.c:618 + #: ../src/dbus/abrt-configuration.c:683 + #, c-format + msgid "Not Authorized" + msgstr "Nicht erlaubt" + +-#: ../src/dbus/abrt-dbus.c:298 ++#: ../src/dbus/abrt-dbus.c:297 + msgid "Can't access the problem for modification" + msgstr "Der Fehlerbericht kann nicht für die Bearbeitung geöffnet werden" + +-#: ../src/dbus/abrt-dbus.c:514 ++#: ../src/dbus/abrt-dbus.c:513 + msgid "Chowning directory failed. Check system logs for more details." + msgstr "" + "Ordnerrechte konnten nicht angepasst werden. Für detaillierte Hinweise die " + "System-Logdateien überprüfen." + + # translation auto-copied from project abrt, version master, document abrt, author Roman Spirgi +-#: ../src/dbus/abrt-dbus.c:635 ++#: ../src/dbus/abrt-dbus.c:634 + msgid "Can't access the problem for reading" + msgstr "Fehlerbericht kann nicht mit Lesezugriff geöffnet werden" + +-#: ../src/dbus/abrt-dbus.c:690 ../src/dbus/abrt-dbus.c:755 +-#: ../src/dbus/abrt-dbus.c:911 ++#: ../src/dbus/abrt-dbus.c:689 ../src/dbus/abrt-dbus.c:754 ++#: ../src/dbus/abrt-dbus.c:910 + #, c-format + msgid "'%s' is not a valid element name" + msgstr "»%s« ist kein gültiger Name für das Element" + +-#: ../src/dbus/abrt-dbus.c:711 ++#: ../src/dbus/abrt-dbus.c:710 + #, c-format + msgid "Can't get size of '%s'" + msgstr "Größe von '%s' kann nicht bestimmt werden" + +-#: ../src/dbus/abrt-dbus.c:726 ++#: ../src/dbus/abrt-dbus.c:725 + msgid "No problem space left" + msgstr "Kein weiterer Speicherplatz für die Fehlerbeschreibung vorhanden" + +-#: ../src/dbus/abrt-dbus.c:776 ++#: ../src/dbus/abrt-dbus.c:775 + #, c-format + msgid "Can't delete the element '%s' from the problem directory '%s'" + msgstr "Element »%s« kann nicht vo Fehlerverzeichnis »%s« entfernt werden" + +-#: ../src/dbus/abrt-dbus.c:803 ++#: ../src/dbus/abrt-dbus.c:802 + msgid "Can't access the problem" + msgstr "Auf Fehlerbericht kann nicht zugegriffen werden" + +-#: ../src/dbus/abrt-dbus.c:983 ../src/dbus/abrt-configuration.c:983 ++#: ../src/dbus/abrt-dbus.c:986 ../src/dbus/abrt-configuration.c:983 + #, c-format + msgid "" + "The name '%s' has been lost, please check if other service owning the name " +@@ -477,16 +477,16 @@ msgstr "" + "Der Name »%s« ist verloren gegangen. Bitte stellen Sie sicher, dass kein " + "anderer Dienst unter dem gleichen Namen läuft.\n" + +-#: ../src/dbus/abrt-dbus.c:1010 ../src/dbus/abrt-configuration.c:1011 +-#: ../src/daemon/abrtd.c:499 ++#: ../src/dbus/abrt-dbus.c:1013 ../src/dbus/abrt-configuration.c:1011 ++#: ../src/daemon/abrtd.c:480 + msgid "Exit after NUM seconds of inactivity" + msgstr "Nach NUM Sekunden Inaktivität beenden" + +-#: ../src/dbus/abrt-dbus.c:1028 ../src/dbus/abrt-configuration.c:1021 ++#: ../src/dbus/abrt-dbus.c:1031 ../src/dbus/abrt-configuration.c:1021 + msgid "This program must be run as root." + msgstr "Die Anwendung muss mit Root-Rechten ausgeführt werden." + +-#: ../src/daemon/abrtd.c:451 ++#: ../src/daemon/abrtd.c:432 + msgid "" + "The problem data are incomplete. This usually happens when a problem is " + "detected while computer is shutting down or user is logging out. In order to " +@@ -501,11 +501,11 @@ msgstr "" + "Entwicklern helfen wollen, dieses Problem zu lösen, kontaktieren Sie die " + "Entwickler bitte direkt." + +-#: ../src/daemon/abrtd.c:497 ++#: ../src/daemon/abrtd.c:478 + msgid "Do not daemonize" + msgstr "Nicht als Hintergrunddienst ausführen" + +-#: ../src/daemon/abrtd.c:498 ++#: ../src/daemon/abrtd.c:479 + msgid "Log to syslog even with -d" + msgstr "Auch mit -d im Systemprotokoll speichern" + +@@ -561,71 +561,71 @@ msgid "Maximal cache size in MiB. Default is " + msgstr "Maximale Cache-Größe in MB. Standard ist " + + #: ../src/daemon/abrt-auto-reporting.c:200 +-#: ../src/daemon/abrt-auto-reporting.c:208 ++#: ../src/daemon/abrt-auto-reporting.c:213 + msgid "& [ " + msgstr "& [ " + +-#: ../src/daemon/abrt-auto-reporting.c:235 ++#: ../src/daemon/abrt-auto-reporting.c:240 + msgid "Turns the authentication off" + msgstr "Deaktiviert die Authentifizierung" + +-#: ../src/daemon/abrt-auto-reporting.c:236 ++#: ../src/daemon/abrt-auto-reporting.c:241 + msgid "Red Hat Support user name" + msgstr "Red Hat Support Benutzername" + +-#: ../src/daemon/abrt-auto-reporting.c:237 ++#: ../src/daemon/abrt-auto-reporting.c:242 + msgid "Red Hat Support password, if not given, a prompt for it will be issued" + msgstr "" + "Red Hat Support Passwort; falls nicht angegeben, wird zur Eingabe eines " + "Passworts aufgefordert" + +-#: ../src/daemon/abrt-auto-reporting.c:238 ++#: ../src/daemon/abrt-auto-reporting.c:243 + msgid "uReport SSL certificate paths or certificate type" + msgstr "uReport SSL-Zertifikatspfad oder -Zertifikatstyp" + +-#: ../src/daemon/abrt-auto-reporting.c:254 ++#: ../src/daemon/abrt-auto-reporting.c:259 + msgid "You also need to specify --username for --password" + msgstr "Sie müssen ebenfalls --username für --password angeben" + +-#: ../src/daemon/abrt-auto-reporting.c:260 ++#: ../src/daemon/abrt-auto-reporting.c:265 + msgid "You can use either --username or --certificate" + msgstr "Sie können entweder --username oder --certificate verwenden" + +-#: ../src/daemon/abrt-auto-reporting.c:266 ++#: ../src/daemon/abrt-auto-reporting.c:271 + msgid "You can use either --username or --anonymous" + msgstr "Sie können entweder --username oder --anonymous verwenden" + +-#: ../src/daemon/abrt-auto-reporting.c:272 ++#: ../src/daemon/abrt-auto-reporting.c:277 + msgid "You can use either --anonymous or --certificate" + msgstr "Sie können entweder --anonymous oder --certificate verwenden" + +-#: ../src/daemon/abrt-auto-reporting.c:279 ++#: ../src/daemon/abrt-auto-reporting.c:284 + msgid "Invalid number of arguments" + msgstr "Ungültige Parameteranzahl" + +-#: ../src/daemon/abrt-auto-reporting.c:298 ++#: ../src/daemon/abrt-auto-reporting.c:303 + #, c-format + msgid "Unknown option value: '%s'\n" + msgstr "Unbekannter Optionswert: »%s«\n" + +-#: ../src/daemon/abrt-auto-reporting.c:338 ++#: ../src/daemon/abrt-auto-reporting.c:343 + msgid "Password:" + msgstr "Passwort:" + +-#: ../src/daemon/abrt-auto-reporting.c:341 ++#: ../src/daemon/abrt-auto-reporting.c:346 + msgid "Cannot continue without password\n" + msgstr "Fortfahren ohne Passwort nicht möglich\n" + + #. Print only the part before ':' of a string like "username:password" +-#: ../src/daemon/abrt-auto-reporting.c:382 ++#: ../src/daemon/abrt-auto-reporting.c:387 + msgid "HTTP Authenticated auto reporting" + msgstr "Per HTTP authentifizierte automatische Berichterstattung" + +-#: ../src/daemon/abrt-auto-reporting.c:384 ++#: ../src/daemon/abrt-auto-reporting.c:389 + msgid "SSL Client Authenticated auto reporting" + msgstr "Per SSL-Client authentifizierte automatische Berichterstattung" + +-#: ../src/daemon/abrt-auto-reporting.c:386 ++#: ../src/daemon/abrt-auto-reporting.c:391 + msgid "anonymous auto reporting" + msgstr "Anonyme automatische Berichterstattung" + +@@ -799,7 +799,7 @@ msgstr "Verarbeitung der Ablaufverfolgung für %s ist fehlgeschlagen" + msgid "Crash thread not found" + msgstr "Absturz Thread nicht gefunden" + +-#: ../src/plugins/abrt-action-analyze-c.c:67 ++#: ../src/plugins/abrt-action-analyze-c.c:130 + msgid "" + "& [-v] -d DIR\n" + "\n" +@@ -2026,7 +2026,7 @@ msgstr "" + msgid "See 'abrt-cli COMMAND --help' for more information" + msgstr "Siehe 'abrt-cli COMMAND --help' für weitere Informationen" + +-#: ../src/cli/list.c:121 ++#: ../src/cli/list.c:124 + #, c-format + msgid "" + "%sRun 'abrt-cli report %s' for creating a case in Red Hat Customer Portal\n" +@@ -2034,30 +2034,30 @@ msgstr "" + "%sFühren Sie »abrt-cli report %s« aus, um ein Ticket im Red Hat Kundenportal " + "zu erstellen\n" + +-#: ../src/cli/list.c:173 ++#: ../src/cli/list.c:176 + msgid "& list [options]" + msgstr "& auflisten [options]" + +-#: ../src/cli/list.c:182 ++#: ../src/cli/list.c:185 + msgid "List only not-reported problems" + msgstr "Nur noch nicht berichtete Probleme anzeigen" + + #. deprecate -d option with --pretty=full +-#: ../src/cli/list.c:184 ../src/cli/list.c:237 ++#: ../src/cli/list.c:187 ../src/cli/list.c:240 + msgid "Show detailed report" + msgstr "Detaillierten Bericht anzeigen" + +-#: ../src/cli/list.c:185 ++#: ../src/cli/list.c:188 + msgid "List only the problems more recent than specified timestamp" + msgstr "" + "Nur die Probleme anzeigen, welcher vor dem festgelegten Zeitpunkt auftraten" + +-#: ../src/cli/list.c:186 ++#: ../src/cli/list.c:189 + msgid "List only the problems older than specified timestamp" + msgstr "" + "Nur die Probleme anzeigen, welcher nach dem festgelegten Zeitpunkt auftraten" + +-#: ../src/cli/list.c:212 ++#: ../src/cli/list.c:215 + #, c-format + msgid "" + "The Autoreporting feature is disabled. Please consider enabling it by " +@@ -2068,34 +2068,34 @@ msgstr "" + "Betracht, sie\n" + "zu aktivieren, indem Sie 'abrt-auto-reporting enabled' als Root ausführen\n" + +-#: ../src/cli/list.c:229 ++#: ../src/cli/list.c:232 + msgid "& info [options] DIR..." + msgstr "& info [Optionen] DIR..." + +-#: ../src/cli/list.c:238 ++#: ../src/cli/list.c:241 + msgid "Text larger than this will be shown abridged" + msgstr "Längere Texte werden gekürzt angezeigt" + +-#: ../src/cli/list.c:258 ++#: ../src/cli/list.c:261 + #, c-format + msgid "No such problem directory '%s'" + msgstr "Kein solches Fehlerverzeichnis »%s« vorhanden" + +-#: ../src/cli/status.c:63 ++#: ../src/cli/status.c:66 + msgid "& status" + msgstr "& Status" + +-#: ../src/cli/status.c:71 ++#: ../src/cli/status.c:74 + msgid "Print only the problem count without any message" + msgstr "Nur die Fehleranzahl ohne Mitteilung ausgeben" + +-#: ../src/cli/status.c:72 ++#: ../src/cli/status.c:75 + msgid "Print only the problems more recent than specified timestamp" + msgstr "" + "Das aktuellste Auftreten des Fehlers anstatt des angegebenen Zeitstempel " + "ausgeben" + +-#: ../src/cli/status.c:88 ++#: ../src/cli/status.c:91 + #, c-format + msgid "ABRT has detected %u problem(s). For more info run: abrt-cli list%s\n" + msgstr "" +diff --git a/po/es.po b/po/es.po +index eb5642e..cb1c136 100644 +--- a/po/es.po ++++ b/po/es.po +@@ -23,21 +23,22 @@ + # Gerardo Rosales , 2015. #zanata + # Gladys Guerrero Lozano , 2015. #zanata + # Jakub Filak , 2015. #zanata ++# Máximo Castañeda Riloba , 2016. #zanata + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: jmoskovc@redhat.com\n" +-"POT-Creation-Date: 2015-07-14 15:37+0200\n" ++"POT-Creation-Date: 2016-06-29 15:31+0200\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"PO-Revision-Date: 2015-07-21 11:54-0400\n" +-"Last-Translator: Gladys Guerrero Lozano \n" ++"PO-Revision-Date: 2016-08-31 07:26-0400\n" ++"Last-Translator: Máximo Castañeda Riloba \n" + "Language-Team: Spanish (http://www.transifex.com/projects/p/fedora-abrt/" + "language/es/)\n" + "Language: es\n" + "Plural-Forms: nplurals=2; plural=(n != 1);\n" +-"X-Generator: Zanata 3.6.2\n" ++"X-Generator: Zanata 3.9.5\n" + + #: ../src/applet/abrt-applet.desktop.in.h:1 + msgid "Automatic Bug Reporting Tool" +@@ -367,7 +368,7 @@ msgstr "Acerca de" + msgid "Quit" + msgstr "Salir" + +-#: ../src/daemon/abrt-action-save-package-data.c:378 ++#: ../src/daemon/abrt-action-save-package-data.c:400 + msgid "" + "& [-v] [-c CONFFILE] -d DIR\n" + "\n" +@@ -378,9 +379,9 @@ msgstr "" + "Solicita el paquete de base de datos y guarda el nombre del paquete y " + "componente" + +-#: ../src/daemon/abrt-action-save-package-data.c:390 ++#: ../src/daemon/abrt-action-save-package-data.c:412 + #: ../src/plugins/abrt-action-analyze-backtrace.c:53 +-#: ../src/plugins/abrt-action-analyze-c.c:78 ++#: ../src/plugins/abrt-action-analyze-c.c:141 + #: ../src/plugins/abrt-action-analyze-oops.c:48 + #: ../src/plugins/abrt-action-analyze-xorg.c:84 + #: ../src/plugins/abrt-action-analyze-python.c:47 +@@ -389,14 +390,14 @@ msgstr "" + msgid "Problem directory" + msgstr "Directorio de problemas" + +-#: ../src/daemon/abrt-action-save-package-data.c:391 ++#: ../src/daemon/abrt-action-save-package-data.c:413 + msgid "Configuration file" + msgstr "Archivo de configuración" + +-#: ../src/daemon/abrt-server.c:792 ../src/dbus/abrt-dbus.c:1001 +-#: ../src/dbus/abrt-configuration.c:1002 ../src/daemon/abrtd.c:484 ++#: ../src/daemon/abrt-server.c:792 ../src/dbus/abrt-dbus.c:1004 ++#: ../src/dbus/abrt-configuration.c:1002 ../src/daemon/abrtd.c:465 + msgid "& [options]" +-msgstr "& [options]" ++msgstr "& [opciones]" + + #: ../src/daemon/abrt-server.c:803 + msgid "Use NUM as client uid" +@@ -408,73 +409,73 @@ msgstr "Utilice NUM como uid del cliente" + msgid "Log to syslog" + msgstr "Registrarse en syslog" + +-#: ../src/daemon/abrt-server.c:805 ../src/daemon/abrtd.c:500 ++#: ../src/daemon/abrt-server.c:805 ../src/daemon/abrtd.c:481 + msgid "Add program names to log" + msgstr "Agrega el nombre del programa al log" + +-#: ../src/dbus/abrt-dbus.c:132 ++#: ../src/dbus/abrt-dbus.c:131 + msgid "Unknown error" + msgstr "Error desconocido" + +-#: ../src/dbus/abrt-dbus.c:221 ++#: ../src/dbus/abrt-dbus.c:220 + #, c-format + msgid "'%s' is not a valid problem directory" + msgstr "'%s' no es un directorio de problemas válido" + +-#: ../src/dbus/abrt-dbus.c:256 ++#: ../src/dbus/abrt-dbus.c:255 + #, c-format + msgid "'%s' element can't be modified" + msgstr "'%s' elemento no puede ser modificado" + +-#: ../src/dbus/abrt-dbus.c:285 ../src/dbus/abrt-dbus.c:498 +-#: ../src/dbus/abrt-dbus.c:560 ../src/dbus/abrt-dbus.c:625 +-#: ../src/dbus/abrt-dbus.c:815 ../src/dbus/abrt-configuration.c:618 ++#: ../src/dbus/abrt-dbus.c:284 ../src/dbus/abrt-dbus.c:497 ++#: ../src/dbus/abrt-dbus.c:559 ../src/dbus/abrt-dbus.c:624 ++#: ../src/dbus/abrt-dbus.c:814 ../src/dbus/abrt-configuration.c:618 + #: ../src/dbus/abrt-configuration.c:683 + #, c-format + msgid "Not Authorized" + msgstr "No autorizado" + +-#: ../src/dbus/abrt-dbus.c:298 ++#: ../src/dbus/abrt-dbus.c:297 + msgid "Can't access the problem for modification" + msgstr "No puedo acceder al problema para modificación" + +-#: ../src/dbus/abrt-dbus.c:514 ++#: ../src/dbus/abrt-dbus.c:513 + msgid "Chowning directory failed. Check system logs for more details." + msgstr "" + "Error al ejecutar chown en directorio. Revise los registros del sistema para " + "más detalles. " + + # translation auto-copied from project abrt, version master, document abrt, author Alex Puchades +-#: ../src/dbus/abrt-dbus.c:635 ++#: ../src/dbus/abrt-dbus.c:634 + msgid "Can't access the problem for reading" + msgstr "No se puede acceder al problema para lectura" + +-#: ../src/dbus/abrt-dbus.c:690 ../src/dbus/abrt-dbus.c:755 +-#: ../src/dbus/abrt-dbus.c:911 ++#: ../src/dbus/abrt-dbus.c:689 ../src/dbus/abrt-dbus.c:754 ++#: ../src/dbus/abrt-dbus.c:910 + #, c-format + msgid "'%s' is not a valid element name" + msgstr "'%s' no es un nombre válido de elemento" + +-#: ../src/dbus/abrt-dbus.c:711 ++#: ../src/dbus/abrt-dbus.c:710 + #, c-format + msgid "Can't get size of '%s'" + msgstr "No se puede obtener tamaño de «%s»" + +-#: ../src/dbus/abrt-dbus.c:726 ++#: ../src/dbus/abrt-dbus.c:725 + msgid "No problem space left" + msgstr "No queda espacio del problema" + +-#: ../src/dbus/abrt-dbus.c:776 ++#: ../src/dbus/abrt-dbus.c:775 + #, c-format + msgid "Can't delete the element '%s' from the problem directory '%s'" + msgstr "No puedo borrar el elemento '%s' del directorio de problemas '%s'" + + # translation auto-copied from project abrt, version master, document abrt, author Alex Puchades +-#: ../src/dbus/abrt-dbus.c:803 ++#: ../src/dbus/abrt-dbus.c:802 + msgid "Can't access the problem" + msgstr "No se puede acceder al problema" + +-#: ../src/dbus/abrt-dbus.c:983 ../src/dbus/abrt-configuration.c:983 ++#: ../src/dbus/abrt-dbus.c:986 ../src/dbus/abrt-configuration.c:983 + #, c-format + msgid "" + "The name '%s' has been lost, please check if other service owning the name " +@@ -483,16 +484,16 @@ msgstr "" + "El nombre '%s' ser perdió, por favor, verifique si otro servicio que tenga " + "ese nombre no se esté ejecutando.\n" + +-#: ../src/dbus/abrt-dbus.c:1010 ../src/dbus/abrt-configuration.c:1011 +-#: ../src/daemon/abrtd.c:499 ++#: ../src/dbus/abrt-dbus.c:1013 ../src/dbus/abrt-configuration.c:1011 ++#: ../src/daemon/abrtd.c:480 + msgid "Exit after NUM seconds of inactivity" + msgstr "Sale después de NUM de segundos de inactividad" + +-#: ../src/dbus/abrt-dbus.c:1028 ../src/dbus/abrt-configuration.c:1021 ++#: ../src/dbus/abrt-dbus.c:1031 ../src/dbus/abrt-configuration.c:1021 + msgid "This program must be run as root." + msgstr "Este programa debe ser ejecutado como root." + +-#: ../src/daemon/abrtd.c:451 ++#: ../src/daemon/abrtd.c:432 + msgid "" + "The problem data are incomplete. This usually happens when a problem is " + "detected while computer is shutting down or user is logging out. In order to " +@@ -507,11 +508,11 @@ msgstr "" + "tiempo y desea ayudar a los desarrolladores en su esfuerzo por solucionarlo, " + "por favor contáctelos directamente." + +-#: ../src/daemon/abrtd.c:497 ++#: ../src/daemon/abrtd.c:478 + msgid "Do not daemonize" + msgstr "No convertir en un demonio" + +-#: ../src/daemon/abrtd.c:498 ++#: ../src/daemon/abrtd.c:479 + msgid "Log to syslog even with -d" + msgstr "Registrar en syslog aún con -d" + +@@ -554,7 +555,7 @@ msgstr "" + + #: ../src/daemon/abrt-upload-watch.c:281 + msgid "Daemize" +-msgstr "Daemize" ++msgstr "Convertir en demonio" + + #: ../src/daemon/abrt-upload-watch.c:282 + msgid "Number of concurrent workers. Default is " +@@ -565,71 +566,71 @@ msgid "Maximal cache size in MiB. Default is " + msgstr "Tamaño máximo de la caché en MB. El predeterminado es" + + #: ../src/daemon/abrt-auto-reporting.c:200 +-#: ../src/daemon/abrt-auto-reporting.c:208 ++#: ../src/daemon/abrt-auto-reporting.c:213 + msgid "& [ " + msgstr "& [ " + +-#: ../src/daemon/abrt-auto-reporting.c:235 ++#: ../src/daemon/abrt-auto-reporting.c:240 + msgid "Turns the authentication off" + msgstr "Retira la autenticación" + +-#: ../src/daemon/abrt-auto-reporting.c:236 ++#: ../src/daemon/abrt-auto-reporting.c:241 + msgid "Red Hat Support user name" + msgstr "Nombre de usuario de Red Hat Support" + +-#: ../src/daemon/abrt-auto-reporting.c:237 ++#: ../src/daemon/abrt-auto-reporting.c:242 + msgid "Red Hat Support password, if not given, a prompt for it will be issued" + msgstr "Contraseña de Red Hat Support, si no la ingresa, se le indicará" + +-#: ../src/daemon/abrt-auto-reporting.c:238 ++#: ../src/daemon/abrt-auto-reporting.c:243 + msgid "uReport SSL certificate paths or certificate type" + msgstr "Rutas de certificado uReport SSL o tipo de certificado" + +-#: ../src/daemon/abrt-auto-reporting.c:254 ++#: ../src/daemon/abrt-auto-reporting.c:259 + msgid "You also need to specify --username for --password" + msgstr "También necesita especificar --username para --password" + +-#: ../src/daemon/abrt-auto-reporting.c:260 ++#: ../src/daemon/abrt-auto-reporting.c:265 + msgid "You can use either --username or --certificate" + msgstr "Puede usar --username o --certificate" + +-#: ../src/daemon/abrt-auto-reporting.c:266 ++#: ../src/daemon/abrt-auto-reporting.c:271 + msgid "You can use either --username or --anonymous" + msgstr "Puede usar --username o --anonymous" + +-#: ../src/daemon/abrt-auto-reporting.c:272 ++#: ../src/daemon/abrt-auto-reporting.c:277 + msgid "You can use either --anonymous or --certificate" + msgstr "Puede usar --anonymous o --certificate" + +-#: ../src/daemon/abrt-auto-reporting.c:279 ++#: ../src/daemon/abrt-auto-reporting.c:284 + msgid "Invalid number of arguments" + msgstr "Número de argumentos no es válido" + +-#: ../src/daemon/abrt-auto-reporting.c:298 ++#: ../src/daemon/abrt-auto-reporting.c:303 + #, c-format + msgid "Unknown option value: '%s'\n" + msgstr "Valor de opción desconocido: '%s'\n" + +-#: ../src/daemon/abrt-auto-reporting.c:338 ++#: ../src/daemon/abrt-auto-reporting.c:343 + msgid "Password:" + msgstr "Contraseña:" + +-#: ../src/daemon/abrt-auto-reporting.c:341 ++#: ../src/daemon/abrt-auto-reporting.c:346 + msgid "Cannot continue without password\n" + msgstr "No puede continuar sin contraseña\n" + + #. Print only the part before ':' of a string like "username:password" +-#: ../src/daemon/abrt-auto-reporting.c:382 ++#: ../src/daemon/abrt-auto-reporting.c:387 + msgid "HTTP Authenticated auto reporting" +-msgstr "Autoreporte autenticado HTTP" ++msgstr "Presentación automática de informes con autenticación HTTP" + +-#: ../src/daemon/abrt-auto-reporting.c:384 ++#: ../src/daemon/abrt-auto-reporting.c:389 + msgid "SSL Client Authenticated auto reporting" +-msgstr "Autoreporte de cliente autenticadoSSL " ++msgstr "Presentación automática de informes con autenticación de cliente SSL" + +-#: ../src/daemon/abrt-auto-reporting.c:386 ++#: ../src/daemon/abrt-auto-reporting.c:391 + msgid "anonymous auto reporting" +-msgstr "Autoreporte anónimo " ++msgstr "Presentación automática de informes anónima" + + #: ../src/daemon/abrt-handle-upload.in:135 + #, c-format +@@ -724,12 +725,12 @@ msgstr "Generación de seguimiento" + #: ../src/lib/problem_api_dbus.c:42 + #, c-format + msgid "Can't connect to system DBus: %s" +-msgstr "No se puede conectar con el sistema DBys: %s" ++msgstr "No se puede conectar con el sistema DBus: %s" + + #: ../src/lib/problem_api_dbus.c:68 + #, c-format + msgid "Can't chown '%s': %s" +-msgstr "No puedo hacer chown'%s': %s" ++msgstr "No se pudo cambiar el propietario de '%s': %s" + + #: ../src/lib/problem_api_dbus.c:97 + #, c-format +@@ -765,14 +766,14 @@ msgid "" + "Can't write to '%s'. Problem '%s' will not be removed from the ignored " + "problems '%s'" + msgstr "" +-"No puede escribir en ‘%s’. Problema ‘%s’ no será quitado de los problemas " +-"ignorados ‘%s’" ++"No puede escribir en ‘%s’. No se eliminará el problema ‘%s’ de la lista de " ++"problemas ignorados ‘%s’" + + #. Something nefarious happened + #: ../src/lib/ignored_problems.c:264 + #, c-format + msgid "Can't rename '%s' to '%s'. Failed to remove problem '%s'" +-msgstr "No puede renombrar ‘%s’ a ‘%s’. Fallado al quitar problema ‘%s’" ++msgstr "No puede renombrar ‘%s’ a ‘%s’. No se pudo eliminar el problema ‘%s’" + + #: ../src/plugins/abrt-action-analyze-backtrace.c:41 + msgid "" +@@ -781,9 +782,9 @@ msgid "" + "Analyzes C/C++ backtrace, generates duplication hash, backtrace rating,\n" + "and identifies crash function in problem directory DIR" + msgstr "" +-"& [options] -d DIR\n" ++"& [opciones] -d DIR\n" + "\n" +-"Analiza el trazado de C/C++, genera duplicación de hash, clasificación de " ++"Analiza el trazado de C/C++, genera duplicación de hash, clasificación de " + "seguimiento \n" + "e identifica función de caídas en directorio de problemas DIR" + +@@ -801,7 +802,7 @@ msgstr "Ha fallado el análisis del trazado de %s" + msgid "Crash thread not found" + msgstr "No se encontró el hilo que se colgó" + +-#: ../src/plugins/abrt-action-analyze-c.c:67 ++#: ../src/plugins/abrt-action-analyze-c.c:130 + msgid "" + "& [-v] -d DIR\n" + "\n" +@@ -905,10 +906,10 @@ msgid "" + "\n" + "Analyzes coredump in problem directory DIR, generates and saves backtrace" + msgstr "" +-"& [options] -d DIR\n" ++"& [opciones] -d DIR\n" + "\n" +-"Analiza a coredump en el directorio de problemas DIR, genera y guarda " +-"seguimiento" ++"Analiza el archivo de volcado en el directorio de problemas DIR, genera y " ++"guarda seguimiento" + + #: ../src/plugins/abrt-action-generate-backtrace.c:56 + msgid "Additional debuginfo directories" +@@ -1050,7 +1051,7 @@ msgstr "Noninteractive, asume que se responde 'Sí' a todas las preguntas" + + #: ../src/plugins/abrt-action-install-debuginfo-to-abrt-cache.c:67 + msgid "- means STDIN, default: build_ids" +-msgstr "- means STDIN, default: build_ids" ++msgstr "- para la entrada estándar; valor predeterminado: build_ids" + + #: ../src/plugins/abrt-action-install-debuginfo-to-abrt-cache.c:68 + msgid "Download only specified files" +@@ -1092,11 +1093,11 @@ msgid "" + "SIZE.\n" + "FILEs are preserved (never deleted)." + msgstr "" +-"& [-v] [-d SIZE:DIR]... [-f SIZE:DIR]... [-p DIR] [FILE]...\n" ++"& [-v] [-d TAMAÑO:DIR]... [-f TAMAÑO:DIR]... [-p DIR] [ARCHIVO]...\n" + "\n" +-"Borra los directorios de problemas (-d) o archivos (-f) en DIR hasta que " +-"sean más pequeños que TAMAÑO.\n" +-"LOS ARCHIVOS se preservan (nunca se borran)." ++"Borra los directorios (-d) o archivos (-f) de problemas en DIR hasta que " ++"sean menores de TAMAÑO.\n" ++"Los ARCHIVOs se mantienen (nunca se borran)." + + #: ../src/plugins/abrt-action-trim-files.c:236 + msgid "Delete whole problem directories" +@@ -2021,14 +2022,14 @@ msgid "" + "Private Reports is enabled, use 'abrt-cli -a COMMAND' to get the detected " + "problems." + msgstr "" +-"Private Reports está activado, use 'abrt-cli -a COMMAND' para obtener los " +-"problemas detectados." ++"Private Reports está activado, use 'abrt-cli -a COMANDO' para obtener los " ++"problemas detectados." + + #: ../src/cli/abrt-cli.c:164 + msgid "See 'abrt-cli COMMAND --help' for more information" +-msgstr "Para obtener más información, consulte 'abrt-cli COMMAND --help' " ++msgstr "Para obtener más información, consulte 'abrt-cli COMANDO --help' " + +-#: ../src/cli/list.c:121 ++#: ../src/cli/list.c:124 + #, c-format + msgid "" + "%sRun 'abrt-cli report %s' for creating a case in Red Hat Customer Portal\n" +@@ -2037,29 +2038,29 @@ msgstr "" + "Red Hat\n" + + # translation auto-copied from project abrt, version master, document abrt, author Gerardo Rosales +-#: ../src/cli/list.c:173 ++#: ../src/cli/list.c:176 + msgid "& list [options]" + msgstr "& list [opciones]" + +-#: ../src/cli/list.c:182 ++#: ../src/cli/list.c:185 + msgid "List only not-reported problems" + msgstr "Liste únicamente los problemas no reportados" + + #. deprecate -d option with --pretty=full +-#: ../src/cli/list.c:184 ../src/cli/list.c:237 ++#: ../src/cli/list.c:187 ../src/cli/list.c:240 + msgid "Show detailed report" + msgstr "Muestre el reporte detallado" + +-#: ../src/cli/list.c:185 ++#: ../src/cli/list.c:188 + msgid "List only the problems more recent than specified timestamp" + msgstr "" + "Liste solo los problemas más recientes que la marca de tiempo especificada" + +-#: ../src/cli/list.c:186 ++#: ../src/cli/list.c:189 + msgid "List only the problems older than specified timestamp" + msgstr "Liste solo los problemas anteriores a la marca de tiempo especificada" + +-#: ../src/cli/list.c:212 ++#: ../src/cli/list.c:215 + #, c-format + msgid "" + "The Autoreporting feature is disabled. Please consider enabling it by " +@@ -2070,35 +2071,35 @@ msgstr "" + "habilitarla al emitir \n" + "'abrt-auto-reporting enabled' como usuario con privilegios de root.\n" + +-#: ../src/cli/list.c:229 ++#: ../src/cli/list.c:232 + msgid "& info [options] DIR..." + msgstr "& info [options] DIR..." + +-#: ../src/cli/list.c:238 ++#: ../src/cli/list.c:241 + msgid "Text larger than this will be shown abridged" + msgstr "Los textos de más extensos que este, aparecen abreviados" + +-#: ../src/cli/list.c:258 ++#: ../src/cli/list.c:261 + #, c-format + msgid "No such problem directory '%s'" + msgstr "No se encontró el directorio '%s' del problema" + + # translation auto-copied from project abrt, version master, document abrt, author Alex Puchades +-#: ../src/cli/status.c:63 ++#: ../src/cli/status.c:66 + msgid "& status" + msgstr "& estatus" + +-#: ../src/cli/status.c:71 ++#: ../src/cli/status.c:74 + msgid "Print only the problem count without any message" + msgstr "Imprimir únicamente el conteo del problema sin ningún mensaje" + +-#: ../src/cli/status.c:72 ++#: ../src/cli/status.c:75 + msgid "Print only the problems more recent than specified timestamp" + msgstr "" + "Imprimir únicamente los problemas más recientes que la marca de tiempo " + "especificada" + +-#: ../src/cli/status.c:88 ++#: ../src/cli/status.c:91 + #, c-format + msgid "ABRT has detected %u problem(s). For more info run: abrt-cli list%s\n" + msgstr "" +@@ -2144,12 +2145,11 @@ msgstr "Para el siguiente problema presione la tecla ENTER:" + #: ../src/cli/process.c:138 + msgid "Without --since argument, iterates over all detected problems." + msgstr "" +-"Without -- puesto que el argumento se repite sobre todos los problemas " +-"detectados." ++"Sin el parámetro --since, se repite sobre todos los problemas detectados." + + #: ../src/cli/process.c:144 + msgid "Selects only problems detected after timestamp" +-msgstr "Selecciona unicamente los problemas después del tiempo especificado" ++msgstr "Selecciona únicamente los problemas después del tiempo especificado" + + #: ../src/plugins/analyze_CCpp.xml.in.h:1 + msgid "" +@@ -2226,8 +2226,8 @@ msgid "" + "Checks if there are vimrc and gvimrc files in /etc and saves them as " + "system_vimrc and system_gvimrc, respectively." + msgstr "" +-"Verifica si hay archivos vimrc y gvimrc en /etc y los guard como " +-"system_vimrc and system_gvimrc, respectivamente" ++"Verifica si hay archivos vimrc y gvimrc en /etc y los guarda como " ++"system_vimrc y system_gvimrc, respectivamente" + + #: ../src/plugins/collect_vimrc_user.xml.in.h:1 + msgid "Collect yours vim configuration files" +@@ -2235,7 +2235,7 @@ msgstr "Recolecta sus archivos de configuración vim" + + #: ../src/plugins/collect_vimrc_user.xml.in.h:2 + msgid "Save .vimrc and .gvimrc from your home directory" +-msgstr "Guarda .vimrc y .gvimrc de su directorio principal" ++msgstr "Guarda .vimrc y .gvimrc de su directorio principal" + + #: ../src/plugins/collect_vimrc_user.xml.in.h:3 + msgid "" +@@ -2247,7 +2247,7 @@ msgstr "" + + #: ../src/plugins/post_report.xml.in.h:1 + msgid "Post report" +-msgstr "Informe posterior" ++msgstr "Publicar informe" + + #: ../src/plugins/post_report.xml.in.h:2 + msgid "Executed after the reporting is finished" +diff --git a/po/fr.po b/po/fr.po +index c0084ce..019ecad 100644 +--- a/po/fr.po ++++ b/po/fr.po +@@ -15,22 +15,23 @@ + # Vincent , 2011 + # Jakub Filak , 2015. #zanata + # Julie Carbone , 2015. #zanata ++# Richard Marko , 2015. #zanata + # Sam Friedmann , 2015. #zanata + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: jmoskovc@redhat.com\n" +-"POT-Creation-Date: 2015-07-14 15:37+0200\n" ++"POT-Creation-Date: 2016-06-29 15:31+0200\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"PO-Revision-Date: 2015-07-16 08:54-0400\n" +-"Last-Translator: Sam Friedmann \n" ++"PO-Revision-Date: 2015-07-29 09:45-0400\n" ++"Last-Translator: Richard Marko \n" + "Language-Team: French (http://www.transifex.com/projects/p/fedora-abrt/" + "language/fr/)\n" + "Language: fr\n" + "Plural-Forms: nplurals=2; plural=(n > 1);\n" +-"X-Generator: Zanata 3.6.2\n" ++"X-Generator: Zanata 3.9.5\n" + + #: ../src/applet/abrt-applet.desktop.in.h:1 + msgid "Automatic Bug Reporting Tool" +@@ -370,7 +371,7 @@ msgstr "À propos" + msgid "Quit" + msgstr "Quitter" + +-#: ../src/daemon/abrt-action-save-package-data.c:378 ++#: ../src/daemon/abrt-action-save-package-data.c:400 + msgid "" + "& [-v] [-c CONFFILE] -d DIR\n" + "\n" +@@ -381,9 +382,9 @@ msgstr "" + "Interroge la base de données des paquets et enregistre le paquet et le nom " + "du composant" + +-#: ../src/daemon/abrt-action-save-package-data.c:390 ++#: ../src/daemon/abrt-action-save-package-data.c:412 + #: ../src/plugins/abrt-action-analyze-backtrace.c:53 +-#: ../src/plugins/abrt-action-analyze-c.c:78 ++#: ../src/plugins/abrt-action-analyze-c.c:141 + #: ../src/plugins/abrt-action-analyze-oops.c:48 + #: ../src/plugins/abrt-action-analyze-xorg.c:84 + #: ../src/plugins/abrt-action-analyze-python.c:47 +@@ -392,12 +393,12 @@ msgstr "" + msgid "Problem directory" + msgstr "Répertoire des incidents" + +-#: ../src/daemon/abrt-action-save-package-data.c:391 ++#: ../src/daemon/abrt-action-save-package-data.c:413 + msgid "Configuration file" + msgstr "Fichier de configuration" + +-#: ../src/daemon/abrt-server.c:792 ../src/dbus/abrt-dbus.c:1001 +-#: ../src/dbus/abrt-configuration.c:1002 ../src/daemon/abrtd.c:484 ++#: ../src/daemon/abrt-server.c:792 ../src/dbus/abrt-dbus.c:1004 ++#: ../src/dbus/abrt-configuration.c:1002 ../src/daemon/abrtd.c:465 + msgid "& [options]" + msgstr "& [options]" + +@@ -411,72 +412,72 @@ msgstr "Utiliser NUM en tant qu'UID client" + msgid "Log to syslog" + msgstr "Journaliser vers syslog" + +-#: ../src/daemon/abrt-server.c:805 ../src/daemon/abrtd.c:500 ++#: ../src/daemon/abrt-server.c:805 ../src/daemon/abrtd.c:481 + msgid "Add program names to log" + msgstr "Ajouter le nom des programmes dans le journal" + +-#: ../src/dbus/abrt-dbus.c:132 ++#: ../src/dbus/abrt-dbus.c:131 + msgid "Unknown error" + msgstr "Erreur inconnue" + +-#: ../src/dbus/abrt-dbus.c:221 ++#: ../src/dbus/abrt-dbus.c:220 + #, c-format + msgid "'%s' is not a valid problem directory" + msgstr "« %s » n'est pas un répertoire d'incidents valide" + +-#: ../src/dbus/abrt-dbus.c:256 ++#: ../src/dbus/abrt-dbus.c:255 + #, c-format + msgid "'%s' element can't be modified" + msgstr "L'élément « %s » ne peut pas être modifié" + +-#: ../src/dbus/abrt-dbus.c:285 ../src/dbus/abrt-dbus.c:498 +-#: ../src/dbus/abrt-dbus.c:560 ../src/dbus/abrt-dbus.c:625 +-#: ../src/dbus/abrt-dbus.c:815 ../src/dbus/abrt-configuration.c:618 ++#: ../src/dbus/abrt-dbus.c:284 ../src/dbus/abrt-dbus.c:497 ++#: ../src/dbus/abrt-dbus.c:559 ../src/dbus/abrt-dbus.c:624 ++#: ../src/dbus/abrt-dbus.c:814 ../src/dbus/abrt-configuration.c:618 + #: ../src/dbus/abrt-configuration.c:683 + #, c-format + msgid "Not Authorized" + msgstr "Interdit" + +-#: ../src/dbus/abrt-dbus.c:298 ++#: ../src/dbus/abrt-dbus.c:297 + msgid "Can't access the problem for modification" + msgstr "Impossible d'accéder à l'incident pour effectuer des modifications" + +-#: ../src/dbus/abrt-dbus.c:514 ++#: ../src/dbus/abrt-dbus.c:513 + msgid "Chowning directory failed. Check system logs for more details." + msgstr "" + "Échec du chown sur le répertoire. Vérifier les journaux du système pour plus " + "de détails." + +-#: ../src/dbus/abrt-dbus.c:635 ++#: ../src/dbus/abrt-dbus.c:634 + msgid "Can't access the problem for reading" + msgstr "Impossible d'accéder à l'incident pour la lecture" + +-#: ../src/dbus/abrt-dbus.c:690 ../src/dbus/abrt-dbus.c:755 +-#: ../src/dbus/abrt-dbus.c:911 ++#: ../src/dbus/abrt-dbus.c:689 ../src/dbus/abrt-dbus.c:754 ++#: ../src/dbus/abrt-dbus.c:910 + #, c-format + msgid "'%s' is not a valid element name" + msgstr "« %s » n'est pas un nom d'élément valide" + +-#: ../src/dbus/abrt-dbus.c:711 ++#: ../src/dbus/abrt-dbus.c:710 + #, c-format + msgid "Can't get size of '%s'" + msgstr "Impossible d'obtenir la taille de « %s »" + +-#: ../src/dbus/abrt-dbus.c:726 ++#: ../src/dbus/abrt-dbus.c:725 + msgid "No problem space left" + msgstr "Il ne reste plus d'espace pour les incidents" + +-#: ../src/dbus/abrt-dbus.c:776 ++#: ../src/dbus/abrt-dbus.c:775 + #, c-format + msgid "Can't delete the element '%s' from the problem directory '%s'" + msgstr "" + "Impossible de supprimer l'élément « %s » du répertoire des incidents « %s »" + +-#: ../src/dbus/abrt-dbus.c:803 ++#: ../src/dbus/abrt-dbus.c:802 + msgid "Can't access the problem" + msgstr "Impossible d'accéder à l'incident" + +-#: ../src/dbus/abrt-dbus.c:983 ../src/dbus/abrt-configuration.c:983 ++#: ../src/dbus/abrt-dbus.c:986 ../src/dbus/abrt-configuration.c:983 + #, c-format + msgid "" + "The name '%s' has been lost, please check if other service owning the name " +@@ -485,16 +486,16 @@ msgstr "" + "Le nom « %s » a été perdu, merci de vérifier qu'un autre service utilisant " + "ce même nom ne tourne pas.\n" + +-#: ../src/dbus/abrt-dbus.c:1010 ../src/dbus/abrt-configuration.c:1011 +-#: ../src/daemon/abrtd.c:499 ++#: ../src/dbus/abrt-dbus.c:1013 ../src/dbus/abrt-configuration.c:1011 ++#: ../src/daemon/abrtd.c:480 + msgid "Exit after NUM seconds of inactivity" + msgstr "Quitter après NUM secondes d'inactivité" + +-#: ../src/dbus/abrt-dbus.c:1028 ../src/dbus/abrt-configuration.c:1021 ++#: ../src/dbus/abrt-dbus.c:1031 ../src/dbus/abrt-configuration.c:1021 + msgid "This program must be run as root." + msgstr "Le programme doit être lancé en tant que root." + +-#: ../src/daemon/abrtd.c:451 ++#: ../src/daemon/abrtd.c:432 + msgid "" + "The problem data are incomplete. This usually happens when a problem is " + "detected while computer is shutting down or user is logging out. In order to " +@@ -509,11 +510,11 @@ msgstr "" + "vous avez du temps et désirez aider les développeurs dans leur effort de " + "résolution de cet incident, merci de les contacter directement." + +-#: ../src/daemon/abrtd.c:497 ++#: ../src/daemon/abrtd.c:478 + msgid "Do not daemonize" + msgstr "Ne pas lancer le démon" + +-#: ../src/daemon/abrtd.c:498 ++#: ../src/daemon/abrtd.c:479 + msgid "Log to syslog even with -d" + msgstr "Journaliser vers syslog même avec -d" + +@@ -569,71 +570,71 @@ msgid "Maximal cache size in MiB. Default is " + msgstr "Taille maximale de cache en Mio. La valeur par défaut est" + + #: ../src/daemon/abrt-auto-reporting.c:200 +-#: ../src/daemon/abrt-auto-reporting.c:208 ++#: ../src/daemon/abrt-auto-reporting.c:213 + msgid "& [ " + msgstr "& [ " + +-#: ../src/daemon/abrt-auto-reporting.c:235 ++#: ../src/daemon/abrt-auto-reporting.c:240 + msgid "Turns the authentication off" + msgstr "Désactive l'authentification" + +-#: ../src/daemon/abrt-auto-reporting.c:236 ++#: ../src/daemon/abrt-auto-reporting.c:241 + msgid "Red Hat Support user name" + msgstr "Nom d'utilisateur du Support Red Hat" + +-#: ../src/daemon/abrt-auto-reporting.c:237 ++#: ../src/daemon/abrt-auto-reporting.c:242 + msgid "Red Hat Support password, if not given, a prompt for it will be issued" + msgstr "" + "Si le mot de passe du Support Red Hat n'est pas fourni, vous serez invité à " + "en créer un." + +-#: ../src/daemon/abrt-auto-reporting.c:238 ++#: ../src/daemon/abrt-auto-reporting.c:243 + msgid "uReport SSL certificate paths or certificate type" + msgstr "Types ou chemins de certificat uReport SSL" + +-#: ../src/daemon/abrt-auto-reporting.c:254 ++#: ../src/daemon/abrt-auto-reporting.c:259 + msgid "You also need to specify --username for --password" + msgstr "Vous devez également indiquer --username pour --password" + +-#: ../src/daemon/abrt-auto-reporting.c:260 ++#: ../src/daemon/abrt-auto-reporting.c:265 + msgid "You can use either --username or --certificate" + msgstr "Vous pouvez utiliser --username ou --certificate" + +-#: ../src/daemon/abrt-auto-reporting.c:266 ++#: ../src/daemon/abrt-auto-reporting.c:271 + msgid "You can use either --username or --anonymous" + msgstr "Vous pouvez utiliser --username ou --anonymous" + +-#: ../src/daemon/abrt-auto-reporting.c:272 ++#: ../src/daemon/abrt-auto-reporting.c:277 + msgid "You can use either --anonymous or --certificate" + msgstr "Vous pouvez utiliser --anonymous ou --certificate" + +-#: ../src/daemon/abrt-auto-reporting.c:279 ++#: ../src/daemon/abrt-auto-reporting.c:284 + msgid "Invalid number of arguments" + msgstr "Nombre d'arguments non valide" + +-#: ../src/daemon/abrt-auto-reporting.c:298 ++#: ../src/daemon/abrt-auto-reporting.c:303 + #, c-format + msgid "Unknown option value: '%s'\n" + msgstr "Valeur de l'option inconnue : « %s »\n" + +-#: ../src/daemon/abrt-auto-reporting.c:338 ++#: ../src/daemon/abrt-auto-reporting.c:343 + msgid "Password:" + msgstr "Mot de passe :" + +-#: ../src/daemon/abrt-auto-reporting.c:341 ++#: ../src/daemon/abrt-auto-reporting.c:346 + msgid "Cannot continue without password\n" + msgstr "Impossible de continuer sans mot de passe\n" + + #. Print only the part before ':' of a string like "username:password" +-#: ../src/daemon/abrt-auto-reporting.c:382 ++#: ../src/daemon/abrt-auto-reporting.c:387 + msgid "HTTP Authenticated auto reporting" + msgstr "Autoreporting authentifié avec HTTP" + +-#: ../src/daemon/abrt-auto-reporting.c:384 ++#: ../src/daemon/abrt-auto-reporting.c:389 + msgid "SSL Client Authenticated auto reporting" + msgstr "Autoreporting authentifié avec le Client SSL" + +-#: ../src/daemon/abrt-auto-reporting.c:386 ++#: ../src/daemon/abrt-auto-reporting.c:391 + msgid "anonymous auto reporting" + msgstr "Autoreporting anonyme" + +@@ -808,7 +809,7 @@ msgstr "Erreur lors de l'analyse du backtrace pour %s" + msgid "Crash thread not found" + msgstr "Fil d'exécution planté introuvable" + +-#: ../src/plugins/abrt-action-analyze-c.c:67 ++#: ../src/plugins/abrt-action-analyze-c.c:130 + msgid "" + "& [-v] -d DIR\n" + "\n" +@@ -2054,7 +2055,7 @@ msgid "See 'abrt-cli COMMAND --help' for more information" + msgstr "" + "Voir « abrt-cli COMMAND --help » pour obtenir davantage d'informations" + +-#: ../src/cli/list.c:121 ++#: ../src/cli/list.c:124 + #, c-format + msgid "" + "%sRun 'abrt-cli report %s' for creating a case in Red Hat Customer Portal\n" +@@ -2062,30 +2063,30 @@ msgstr "" + "%sExécuter « abrt-cli report %s » pour créer un dossier dans le Portail " + "Client Red Hat\n" + +-#: ../src/cli/list.c:173 ++#: ../src/cli/list.c:176 + msgid "& list [options]" + msgstr "& list [options]" + +-#: ../src/cli/list.c:182 ++#: ../src/cli/list.c:185 + msgid "List only not-reported problems" + msgstr "Répertorier les problèmes non rapportés uniquement" + + #. deprecate -d option with --pretty=full +-#: ../src/cli/list.c:184 ../src/cli/list.c:237 ++#: ../src/cli/list.c:187 ../src/cli/list.c:240 + msgid "Show detailed report" + msgstr "Afficher le rapport détaillé" + +-#: ../src/cli/list.c:185 ++#: ../src/cli/list.c:188 + msgid "List only the problems more recent than specified timestamp" + msgstr "" + "Répertorier uniquement les problèmes plus récents que la date indiquée" + +-#: ../src/cli/list.c:186 ++#: ../src/cli/list.c:189 + msgid "List only the problems older than specified timestamp" + msgstr "" + "Répertorier uniquement les incidents plus anciens que la date indiquée" + +-#: ../src/cli/list.c:212 ++#: ../src/cli/list.c:215 + #, c-format + msgid "" + "The Autoreporting feature is disabled. Please consider enabling it by " +@@ -2096,32 +2097,32 @@ msgstr "" + "Veuillez envisager de l'activer en effectuant\n" + "la commande « abrt-auto-reporting enabled » en tant qu'utilisateur root.\n" + +-#: ../src/cli/list.c:229 ++#: ../src/cli/list.c:232 + msgid "& info [options] DIR..." + msgstr "& info [options] DIR..." + +-#: ../src/cli/list.c:238 ++#: ../src/cli/list.c:241 + msgid "Text larger than this will be shown abridged" + msgstr "Un texte plus grand que ce qui suit sera abrégé" + +-#: ../src/cli/list.c:258 ++#: ../src/cli/list.c:261 + #, c-format + msgid "No such problem directory '%s'" + msgstr "Répertoire d'incidents « %s » inconnu" + +-#: ../src/cli/status.c:63 ++#: ../src/cli/status.c:66 + msgid "& status" + msgstr "& status" + +-#: ../src/cli/status.c:71 ++#: ../src/cli/status.c:74 + msgid "Print only the problem count without any message" + msgstr "Affiche uniquement le nombre d'incident sans autre message" + +-#: ../src/cli/status.c:72 ++#: ../src/cli/status.c:75 + msgid "Print only the problems more recent than specified timestamp" + msgstr "Affiche les seuls incidents plus récents que l'horodatage indiqué" + +-#: ../src/cli/status.c:88 ++#: ../src/cli/status.c:91 + #, c-format + msgid "ABRT has detected %u problem(s). For more info run: abrt-cli list%s\n" + msgstr "" +diff --git a/po/it.po b/po/it.po +index 2ad531e..1fcb308 100644 +--- a/po/it.po ++++ b/po/it.po +@@ -19,7 +19,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: jmoskovc@redhat.com\n" +-"POT-Creation-Date: 2015-07-14 15:37+0200\n" ++"POT-Creation-Date: 2016-06-29 15:31+0200\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +@@ -29,7 +29,7 @@ msgstr "" + "language/it/)\n" + "Language: it\n" + "Plural-Forms: nplurals=2; plural=(n != 1);\n" +-"X-Generator: Zanata 3.6.2\n" ++"X-Generator: Zanata 3.9.5\n" + + #: ../src/applet/abrt-applet.desktop.in.h:1 + msgid "Automatic Bug Reporting Tool" +@@ -358,7 +358,7 @@ msgstr "Informazioni" + msgid "Quit" + msgstr "Esci" + +-#: ../src/daemon/abrt-action-save-package-data.c:378 ++#: ../src/daemon/abrt-action-save-package-data.c:400 + msgid "" + "& [-v] [-c CONFFILE] -d DIR\n" + "\n" +@@ -369,9 +369,9 @@ msgstr "" + "Interroga il database del pacchetto e salva il nome del componente e quello " + "del pacchetto" + +-#: ../src/daemon/abrt-action-save-package-data.c:390 ++#: ../src/daemon/abrt-action-save-package-data.c:412 + #: ../src/plugins/abrt-action-analyze-backtrace.c:53 +-#: ../src/plugins/abrt-action-analyze-c.c:78 ++#: ../src/plugins/abrt-action-analyze-c.c:141 + #: ../src/plugins/abrt-action-analyze-oops.c:48 + #: ../src/plugins/abrt-action-analyze-xorg.c:84 + #: ../src/plugins/abrt-action-analyze-python.c:47 +@@ -380,12 +380,12 @@ msgstr "" + msgid "Problem directory" + msgstr "Directory del problema" + +-#: ../src/daemon/abrt-action-save-package-data.c:391 ++#: ../src/daemon/abrt-action-save-package-data.c:413 + msgid "Configuration file" + msgstr "File di configurazione" + +-#: ../src/daemon/abrt-server.c:792 ../src/dbus/abrt-dbus.c:1001 +-#: ../src/dbus/abrt-configuration.c:1002 ../src/daemon/abrtd.c:484 ++#: ../src/daemon/abrt-server.c:792 ../src/dbus/abrt-dbus.c:1004 ++#: ../src/dbus/abrt-configuration.c:1002 ../src/daemon/abrtd.c:465 + msgid "& [options]" + msgstr "& [opzioni]" + +@@ -399,72 +399,72 @@ msgstr "Utilizzare NUM per l'uid del client" + msgid "Log to syslog" + msgstr "Log su syslog" + +-#: ../src/daemon/abrt-server.c:805 ../src/daemon/abrtd.c:500 ++#: ../src/daemon/abrt-server.c:805 ../src/daemon/abrtd.c:481 + msgid "Add program names to log" + msgstr "Aggiungi i nomi dei programmi sul log" + +-#: ../src/dbus/abrt-dbus.c:132 ++#: ../src/dbus/abrt-dbus.c:131 + msgid "Unknown error" + msgstr "Errore sconosciuto" + +-#: ../src/dbus/abrt-dbus.c:221 ++#: ../src/dbus/abrt-dbus.c:220 + #, c-format + msgid "'%s' is not a valid problem directory" + msgstr "'%s' non è una directory di problema valida" + +-#: ../src/dbus/abrt-dbus.c:256 ++#: ../src/dbus/abrt-dbus.c:255 + #, c-format + msgid "'%s' element can't be modified" + msgstr "Impossibile modificare l'elemento '%s' " + +-#: ../src/dbus/abrt-dbus.c:285 ../src/dbus/abrt-dbus.c:498 +-#: ../src/dbus/abrt-dbus.c:560 ../src/dbus/abrt-dbus.c:625 +-#: ../src/dbus/abrt-dbus.c:815 ../src/dbus/abrt-configuration.c:618 ++#: ../src/dbus/abrt-dbus.c:284 ../src/dbus/abrt-dbus.c:497 ++#: ../src/dbus/abrt-dbus.c:559 ../src/dbus/abrt-dbus.c:624 ++#: ../src/dbus/abrt-dbus.c:814 ../src/dbus/abrt-configuration.c:618 + #: ../src/dbus/abrt-configuration.c:683 + #, c-format + msgid "Not Authorized" + msgstr "Non Autorizzato" + +-#: ../src/dbus/abrt-dbus.c:298 ++#: ../src/dbus/abrt-dbus.c:297 + msgid "Can't access the problem for modification" + msgstr "Impossibile accedere al problema per la modifica" + +-#: ../src/dbus/abrt-dbus.c:514 ++#: ../src/dbus/abrt-dbus.c:513 + msgid "Chowning directory failed. Check system logs for more details." + msgstr "" + "Modifica proprietario della directory fallita. Controllare i log del sistema " + "per maggiori informazioni." + +-#: ../src/dbus/abrt-dbus.c:635 ++#: ../src/dbus/abrt-dbus.c:634 + msgid "Can't access the problem for reading" + msgstr "Impossibile accedere al problema per la lettura" + +-#: ../src/dbus/abrt-dbus.c:690 ../src/dbus/abrt-dbus.c:755 +-#: ../src/dbus/abrt-dbus.c:911 ++#: ../src/dbus/abrt-dbus.c:689 ../src/dbus/abrt-dbus.c:754 ++#: ../src/dbus/abrt-dbus.c:910 + #, c-format + msgid "'%s' is not a valid element name" + msgstr "'%s' non è un nome di elemento valido" + +-#: ../src/dbus/abrt-dbus.c:711 ++#: ../src/dbus/abrt-dbus.c:710 + #, c-format + msgid "Can't get size of '%s'" + msgstr "Impossibile ottenere la dimensione di '%s'" + +-#: ../src/dbus/abrt-dbus.c:726 ++#: ../src/dbus/abrt-dbus.c:725 + msgid "No problem space left" + msgstr "Nessuno spazio del problema rimasto" + +-#: ../src/dbus/abrt-dbus.c:776 ++#: ../src/dbus/abrt-dbus.c:775 + #, c-format + msgid "Can't delete the element '%s' from the problem directory '%s'" + msgstr "" + "Impossibile cancellare l'elemento '%s' dalla directory del problema '%s'" + +-#: ../src/dbus/abrt-dbus.c:803 ++#: ../src/dbus/abrt-dbus.c:802 + msgid "Can't access the problem" + msgstr "Impossibile accedere al problema" + +-#: ../src/dbus/abrt-dbus.c:983 ../src/dbus/abrt-configuration.c:983 ++#: ../src/dbus/abrt-dbus.c:986 ../src/dbus/abrt-configuration.c:983 + #, c-format + msgid "" + "The name '%s' has been lost, please check if other service owning the name " +@@ -473,16 +473,16 @@ msgstr "" + "Il nome '%s' è stato perso, verificare che altri servizi che utilizzano " + "questo nome non siano in esecuzione.\n" + +-#: ../src/dbus/abrt-dbus.c:1010 ../src/dbus/abrt-configuration.c:1011 +-#: ../src/daemon/abrtd.c:499 ++#: ../src/dbus/abrt-dbus.c:1013 ../src/dbus/abrt-configuration.c:1011 ++#: ../src/daemon/abrtd.c:480 + msgid "Exit after NUM seconds of inactivity" + msgstr "Esci dopo NUM secondi di inattività" + +-#: ../src/dbus/abrt-dbus.c:1028 ../src/dbus/abrt-configuration.c:1021 ++#: ../src/dbus/abrt-dbus.c:1031 ../src/dbus/abrt-configuration.c:1021 + msgid "This program must be run as root." + msgstr "Questo programma deve essere eseguito come root." + +-#: ../src/daemon/abrtd.c:451 ++#: ../src/daemon/abrtd.c:432 + msgid "" + "The problem data are incomplete. This usually happens when a problem is " + "detected while computer is shutting down or user is logging out. In order to " +@@ -496,11 +496,11 @@ msgstr "" + "permetterà di inviare questo problema. Se hai un po' di tempo e vuoi aiutare " + "gli sviluppatori a correggere il malfunzionameto, contattali direttamente." + +-#: ../src/daemon/abrtd.c:497 ++#: ../src/daemon/abrtd.c:478 + msgid "Do not daemonize" + msgstr "Non rendere demone" + +-#: ../src/daemon/abrtd.c:498 ++#: ../src/daemon/abrtd.c:479 + msgid "Log to syslog even with -d" + msgstr "Log su syslog anche con -d" + +@@ -557,71 +557,71 @@ msgid "Maximal cache size in MiB. Default is " + msgstr "Dimensione cache massima in MiB. L'impostazione predefinita è" + + #: ../src/daemon/abrt-auto-reporting.c:200 +-#: ../src/daemon/abrt-auto-reporting.c:208 ++#: ../src/daemon/abrt-auto-reporting.c:213 + msgid "& [ " + msgstr "& [ " + +-#: ../src/daemon/abrt-auto-reporting.c:235 ++#: ../src/daemon/abrt-auto-reporting.c:240 + msgid "Turns the authentication off" + msgstr " Disabilita l'autenticazione" + +-#: ../src/daemon/abrt-auto-reporting.c:236 ++#: ../src/daemon/abrt-auto-reporting.c:241 + msgid "Red Hat Support user name" + msgstr "Nome utente per il Red Hat Support" + +-#: ../src/daemon/abrt-auto-reporting.c:237 ++#: ../src/daemon/abrt-auto-reporting.c:242 + msgid "Red Hat Support password, if not given, a prompt for it will be issued" + msgstr "" + "Password per il Red Hat Support, se non specificata verrà richiesto di " + "inserirne una" + +-#: ../src/daemon/abrt-auto-reporting.c:238 ++#: ../src/daemon/abrt-auto-reporting.c:243 + msgid "uReport SSL certificate paths or certificate type" + msgstr "Tipo di certificato o percorsi per il certificato SSL uReport" + +-#: ../src/daemon/abrt-auto-reporting.c:254 ++#: ../src/daemon/abrt-auto-reporting.c:259 + msgid "You also need to specify --username for --password" + msgstr "Specificare --username per --password" + +-#: ../src/daemon/abrt-auto-reporting.c:260 ++#: ../src/daemon/abrt-auto-reporting.c:265 + msgid "You can use either --username or --certificate" + msgstr "Usare --username o --certificate" + +-#: ../src/daemon/abrt-auto-reporting.c:266 ++#: ../src/daemon/abrt-auto-reporting.c:271 + msgid "You can use either --username or --anonymous" + msgstr "Usare --username o --anonymous" + +-#: ../src/daemon/abrt-auto-reporting.c:272 ++#: ../src/daemon/abrt-auto-reporting.c:277 + msgid "You can use either --anonymous or --certificate" + msgstr "Usare --anonymous o --certificate" + +-#: ../src/daemon/abrt-auto-reporting.c:279 ++#: ../src/daemon/abrt-auto-reporting.c:284 + msgid "Invalid number of arguments" + msgstr "Numero non valido di argomenti" + +-#: ../src/daemon/abrt-auto-reporting.c:298 ++#: ../src/daemon/abrt-auto-reporting.c:303 + #, c-format + msgid "Unknown option value: '%s'\n" + msgstr "Valore opzione sconosciuto: '%s'\n" + +-#: ../src/daemon/abrt-auto-reporting.c:338 ++#: ../src/daemon/abrt-auto-reporting.c:343 + msgid "Password:" + msgstr "Password:" + +-#: ../src/daemon/abrt-auto-reporting.c:341 ++#: ../src/daemon/abrt-auto-reporting.c:346 + msgid "Cannot continue without password\n" + msgstr "Impossibile continuare senza password\n" + + #. Print only the part before ':' of a string like "username:password" +-#: ../src/daemon/abrt-auto-reporting.c:382 ++#: ../src/daemon/abrt-auto-reporting.c:387 + msgid "HTTP Authenticated auto reporting" + msgstr "Auto reporting autenticato con HTTP" + +-#: ../src/daemon/abrt-auto-reporting.c:384 ++#: ../src/daemon/abrt-auto-reporting.c:389 + msgid "SSL Client Authenticated auto reporting" + msgstr "Auto reporting autenticato con client SSL" + +-#: ../src/daemon/abrt-auto-reporting.c:386 ++#: ../src/daemon/abrt-auto-reporting.c:391 + msgid "anonymous auto reporting" + msgstr "auto reporting anonimo" + +@@ -797,7 +797,7 @@ msgstr "Fallita analisi del backtrace per %s" + msgid "Crash thread not found" + msgstr "Thread di crash non trovato" + +-#: ../src/plugins/abrt-action-analyze-c.c:67 ++#: ../src/plugins/abrt-action-analyze-c.c:130 + msgid "" + "& [-v] -d DIR\n" + "\n" +@@ -2022,7 +2022,7 @@ msgstr "" + msgid "See 'abrt-cli COMMAND --help' for more information" + msgstr "Consultare 'abrt-cli COMMAND --help' per maggiori informazioni" + +-#: ../src/cli/list.c:121 ++#: ../src/cli/list.c:124 + #, c-format + msgid "" + "%sRun 'abrt-cli report %s' for creating a case in Red Hat Customer Portal\n" +@@ -2030,28 +2030,28 @@ msgstr "" + "%sEsegui 'abrt-cli report %s' per creare un caso nel Portale clienti di Red " + "Hat\n" + +-#: ../src/cli/list.c:173 ++#: ../src/cli/list.c:176 + msgid "& list [options]" + msgstr "& list [options]" + +-#: ../src/cli/list.c:182 ++#: ../src/cli/list.c:185 + msgid "List only not-reported problems" + msgstr "Elenca solo problemi non riportati" + + #. deprecate -d option with --pretty=full +-#: ../src/cli/list.c:184 ../src/cli/list.c:237 ++#: ../src/cli/list.c:187 ../src/cli/list.c:240 + msgid "Show detailed report" + msgstr "Mostra una notifica dettagliata" + +-#: ../src/cli/list.c:185 ++#: ../src/cli/list.c:188 + msgid "List only the problems more recent than specified timestamp" + msgstr "Elenca solo i problemi più recenti della data specificata" + +-#: ../src/cli/list.c:186 ++#: ../src/cli/list.c:189 + msgid "List only the problems older than specified timestamp" + msgstr "Elenca solo i problemi più vecchi della data specificata" + +-#: ../src/cli/list.c:212 ++#: ../src/cli/list.c:215 + #, c-format + msgid "" + "The Autoreporting feature is disabled. Please consider enabling it by " +@@ -2061,32 +2061,32 @@ msgstr "" + "La funzione di auto-reporting è disabilitata. Abilitarla con il comando\n" + "'abrt-auto-reporting enabled' come utente con privilegi root\n" + +-#: ../src/cli/list.c:229 ++#: ../src/cli/list.c:232 + msgid "& info [options] DIR..." + msgstr "& info [opzioni] DIR..." + +-#: ../src/cli/list.c:238 ++#: ../src/cli/list.c:241 + msgid "Text larger than this will be shown abridged" + msgstr "I testi con dimensioni maggiori di questo verranno mostrati ridotti" + +-#: ../src/cli/list.c:258 ++#: ../src/cli/list.c:261 + #, c-format + msgid "No such problem directory '%s'" + msgstr "Directory '%s' del problema non trovata" + +-#: ../src/cli/status.c:63 ++#: ../src/cli/status.c:66 + msgid "& status" + msgstr "& status" + +-#: ../src/cli/status.c:71 ++#: ../src/cli/status.c:74 + msgid "Print only the problem count without any message" + msgstr "Stampa solo il contatore del problema senza nessun messaggio" + +-#: ../src/cli/status.c:72 ++#: ../src/cli/status.c:75 + msgid "Print only the problems more recent than specified timestamp" + msgstr "Stampa solo i problemi più recenti di un timestamp specificato" + +-#: ../src/cli/status.c:88 ++#: ../src/cli/status.c:91 + #, c-format + msgid "ABRT has detected %u problem(s). For more info run: abrt-cli list%s\n" + msgstr "" +diff --git a/po/ja.po b/po/ja.po +index 25c97de..9673028 100644 +--- a/po/ja.po ++++ b/po/ja.po +@@ -17,7 +17,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: jmoskovc@redhat.com\n" +-"POT-Creation-Date: 2015-07-14 15:37+0200\n" ++"POT-Creation-Date: 2016-06-29 15:31+0200\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +@@ -27,7 +27,7 @@ msgstr "" + "language/ja/)\n" + "Language: ja\n" + "Plural-Forms: nplurals=1; plural=0;\n" +-"X-Generator: Zanata 3.6.2\n" ++"X-Generator: Zanata 3.9.5\n" + + #: ../src/applet/abrt-applet.desktop.in.h:1 + msgid "Automatic Bug Reporting Tool" +@@ -333,7 +333,7 @@ msgstr "ABRT について" + msgid "Quit" + msgstr "終了" + +-#: ../src/daemon/abrt-action-save-package-data.c:378 ++#: ../src/daemon/abrt-action-save-package-data.c:400 + msgid "" + "& [-v] [-c CONFFILE] -d DIR\n" + "\n" +@@ -343,9 +343,9 @@ msgstr "" + "\n" + "パッケージのデータベースに問い合わせを行い、 パッケージとコンポーネント名を保存します" + +-#: ../src/daemon/abrt-action-save-package-data.c:390 ++#: ../src/daemon/abrt-action-save-package-data.c:412 + #: ../src/plugins/abrt-action-analyze-backtrace.c:53 +-#: ../src/plugins/abrt-action-analyze-c.c:78 ++#: ../src/plugins/abrt-action-analyze-c.c:141 + #: ../src/plugins/abrt-action-analyze-oops.c:48 + #: ../src/plugins/abrt-action-analyze-xorg.c:84 + #: ../src/plugins/abrt-action-analyze-python.c:47 +@@ -354,12 +354,12 @@ msgstr "" + msgid "Problem directory" + msgstr "問題ディレクトリ" + +-#: ../src/daemon/abrt-action-save-package-data.c:391 ++#: ../src/daemon/abrt-action-save-package-data.c:413 + msgid "Configuration file" + msgstr "設定ファイル" + +-#: ../src/daemon/abrt-server.c:792 ../src/dbus/abrt-dbus.c:1001 +-#: ../src/dbus/abrt-configuration.c:1002 ../src/daemon/abrtd.c:484 ++#: ../src/daemon/abrt-server.c:792 ../src/dbus/abrt-dbus.c:1004 ++#: ../src/dbus/abrt-configuration.c:1002 ../src/daemon/abrtd.c:465 + msgid "& [options]" + msgstr "& [オプション]" + +@@ -373,85 +373,85 @@ msgstr "NUM をクライアントの uid として使用する" + msgid "Log to syslog" + msgstr "syslog にログする" + +-#: ../src/daemon/abrt-server.c:805 ../src/daemon/abrtd.c:500 ++#: ../src/daemon/abrt-server.c:805 ../src/daemon/abrtd.c:481 + msgid "Add program names to log" + msgstr "ログにプログラム名を追加する" + +-#: ../src/dbus/abrt-dbus.c:132 ++#: ../src/dbus/abrt-dbus.c:131 + msgid "Unknown error" + msgstr "不明なエラーです" + +-#: ../src/dbus/abrt-dbus.c:221 ++#: ../src/dbus/abrt-dbus.c:220 + #, c-format + msgid "'%s' is not a valid problem directory" + msgstr "「%s」は有効な問題ディレクトリではありません" + +-#: ../src/dbus/abrt-dbus.c:256 ++#: ../src/dbus/abrt-dbus.c:255 + #, c-format + msgid "'%s' element can't be modified" + msgstr "'%s' エレメントを修正できません" + +-#: ../src/dbus/abrt-dbus.c:285 ../src/dbus/abrt-dbus.c:498 +-#: ../src/dbus/abrt-dbus.c:560 ../src/dbus/abrt-dbus.c:625 +-#: ../src/dbus/abrt-dbus.c:815 ../src/dbus/abrt-configuration.c:618 ++#: ../src/dbus/abrt-dbus.c:284 ../src/dbus/abrt-dbus.c:497 ++#: ../src/dbus/abrt-dbus.c:559 ../src/dbus/abrt-dbus.c:624 ++#: ../src/dbus/abrt-dbus.c:814 ../src/dbus/abrt-configuration.c:618 + #: ../src/dbus/abrt-configuration.c:683 + #, c-format + msgid "Not Authorized" + msgstr "権限がありません" + +-#: ../src/dbus/abrt-dbus.c:298 ++#: ../src/dbus/abrt-dbus.c:297 + msgid "Can't access the problem for modification" + msgstr "問題にアクセスして修正できません" + +-#: ../src/dbus/abrt-dbus.c:514 ++#: ../src/dbus/abrt-dbus.c:513 + msgid "Chowning directory failed. Check system logs for more details." + msgstr "ディレクトリの所有者変更に失敗しました。詳細はシステムログを確認してください。" + +-#: ../src/dbus/abrt-dbus.c:635 ++#: ../src/dbus/abrt-dbus.c:634 + msgid "Can't access the problem for reading" + msgstr "問題にアクセスして読み込むことができません" + +-#: ../src/dbus/abrt-dbus.c:690 ../src/dbus/abrt-dbus.c:755 +-#: ../src/dbus/abrt-dbus.c:911 ++#: ../src/dbus/abrt-dbus.c:689 ../src/dbus/abrt-dbus.c:754 ++#: ../src/dbus/abrt-dbus.c:910 + #, c-format + msgid "'%s' is not a valid element name" + msgstr "'%s' は有効なエレメント名ではありません" + +-#: ../src/dbus/abrt-dbus.c:711 ++#: ../src/dbus/abrt-dbus.c:710 + #, c-format + msgid "Can't get size of '%s'" + msgstr "'%s' の容量を取得できません" + +-#: ../src/dbus/abrt-dbus.c:726 ++#: ../src/dbus/abrt-dbus.c:725 + msgid "No problem space left" + msgstr "残っている問題領域はありません" + +-#: ../src/dbus/abrt-dbus.c:776 ++#: ../src/dbus/abrt-dbus.c:775 + #, c-format + msgid "Can't delete the element '%s' from the problem directory '%s'" + msgstr "「%s」エレメントを問題ディレクトリの「%s」から削除できません" + +-#: ../src/dbus/abrt-dbus.c:803 ++#: ../src/dbus/abrt-dbus.c:802 + msgid "Can't access the problem" + msgstr "問題にアクセスできません" + +-#: ../src/dbus/abrt-dbus.c:983 ../src/dbus/abrt-configuration.c:983 ++#: ../src/dbus/abrt-dbus.c:986 ../src/dbus/abrt-configuration.c:983 + #, c-format + msgid "" + "The name '%s' has been lost, please check if other service owning the name " + "is not running.\n" + msgstr "'%s' の名前を紛失しました。その名前を持つ他のサービスが実行していないかチェックして下さい。\n" + +-#: ../src/dbus/abrt-dbus.c:1010 ../src/dbus/abrt-configuration.c:1011 +-#: ../src/daemon/abrtd.c:499 ++#: ../src/dbus/abrt-dbus.c:1013 ../src/dbus/abrt-configuration.c:1011 ++#: ../src/daemon/abrtd.c:480 + msgid "Exit after NUM seconds of inactivity" + msgstr "休止状態が NUM 秒以上続いた場合は終了します" + +-#: ../src/dbus/abrt-dbus.c:1028 ../src/dbus/abrt-configuration.c:1021 ++#: ../src/dbus/abrt-dbus.c:1031 ../src/dbus/abrt-configuration.c:1021 + msgid "This program must be run as root." + msgstr "このプログラムは root で実行しなければなりません" + +-#: ../src/daemon/abrtd.c:451 ++#: ../src/daemon/abrtd.c:432 + msgid "" + "The problem data are incomplete. This usually happens when a problem is " + "detected while computer is shutting down or user is logging out. In order to " +@@ -462,11 +462,11 @@ msgstr "" + "問題データは不完全なデータです。コンピューターのシャットダウン中やユーザーのログアウト中に問題が検出されると、こうしたことが発生します。役に立たない問題レポートは提出されないよう、ABRT " + "によりこの問題の送信は許可されません。この問題を解決するため時間をとって開発者にご協力頂ける場合は、開発者に直接ご連絡ください。" + +-#: ../src/daemon/abrtd.c:497 ++#: ../src/daemon/abrtd.c:478 + msgid "Do not daemonize" + msgstr "デーモン化しない" + +-#: ../src/daemon/abrtd.c:498 ++#: ../src/daemon/abrtd.c:479 + msgid "Log to syslog even with -d" + msgstr "-d オプションを使用するとログを syslog へ書き込みます" + +@@ -520,69 +520,69 @@ msgid "Maximal cache size in MiB. Default is " + msgstr "MiB 単位の最大キャッシュ容量。規定値は次のとおりです。" + + #: ../src/daemon/abrt-auto-reporting.c:200 +-#: ../src/daemon/abrt-auto-reporting.c:208 ++#: ../src/daemon/abrt-auto-reporting.c:213 + msgid "& [ " + msgstr "& [ " + +-#: ../src/daemon/abrt-auto-reporting.c:235 ++#: ../src/daemon/abrt-auto-reporting.c:240 + msgid "Turns the authentication off" + msgstr "認証をオフにする" + +-#: ../src/daemon/abrt-auto-reporting.c:236 ++#: ../src/daemon/abrt-auto-reporting.c:241 + msgid "Red Hat Support user name" + msgstr "Red Hat サポートユーザー名" + +-#: ../src/daemon/abrt-auto-reporting.c:237 ++#: ../src/daemon/abrt-auto-reporting.c:242 + msgid "Red Hat Support password, if not given, a prompt for it will be issued" + msgstr "Red Hat Support パスワード、入力しないとあとで入力が求められます" + +-#: ../src/daemon/abrt-auto-reporting.c:238 ++#: ../src/daemon/abrt-auto-reporting.c:243 + msgid "uReport SSL certificate paths or certificate type" + msgstr "uReport SSL 証明書パスまたは証明書タイプ" + +-#: ../src/daemon/abrt-auto-reporting.c:254 ++#: ../src/daemon/abrt-auto-reporting.c:259 + msgid "You also need to specify --username for --password" + msgstr "--password には --username も指定してください" + +-#: ../src/daemon/abrt-auto-reporting.c:260 ++#: ../src/daemon/abrt-auto-reporting.c:265 + msgid "You can use either --username or --certificate" + msgstr "--username または --certificate のいずれかを使用します" + +-#: ../src/daemon/abrt-auto-reporting.c:266 ++#: ../src/daemon/abrt-auto-reporting.c:271 + msgid "You can use either --username or --anonymous" + msgstr "--username または --anonymous のいずれかを使用します" + +-#: ../src/daemon/abrt-auto-reporting.c:272 ++#: ../src/daemon/abrt-auto-reporting.c:277 + msgid "You can use either --anonymous or --certificate" + msgstr "--anonymous または --certificate のいずれかを使用します" + +-#: ../src/daemon/abrt-auto-reporting.c:279 ++#: ../src/daemon/abrt-auto-reporting.c:284 + msgid "Invalid number of arguments" + msgstr "引数の数が無効な数です" + +-#: ../src/daemon/abrt-auto-reporting.c:298 ++#: ../src/daemon/abrt-auto-reporting.c:303 + #, c-format + msgid "Unknown option value: '%s'\n" + msgstr "不明なオプション値です: '%s'\n" + +-#: ../src/daemon/abrt-auto-reporting.c:338 ++#: ../src/daemon/abrt-auto-reporting.c:343 + msgid "Password:" + msgstr "パスワード:" + +-#: ../src/daemon/abrt-auto-reporting.c:341 ++#: ../src/daemon/abrt-auto-reporting.c:346 + msgid "Cannot continue without password\n" + msgstr "パスワードを入力しないと先に進めません\n" + + #. Print only the part before ':' of a string like "username:password" +-#: ../src/daemon/abrt-auto-reporting.c:382 ++#: ../src/daemon/abrt-auto-reporting.c:387 + msgid "HTTP Authenticated auto reporting" + msgstr "HTTP 認証の自動報告" + +-#: ../src/daemon/abrt-auto-reporting.c:384 ++#: ../src/daemon/abrt-auto-reporting.c:389 + msgid "SSL Client Authenticated auto reporting" + msgstr "SSL クライアント認証の自動報告" + +-#: ../src/daemon/abrt-auto-reporting.c:386 ++#: ../src/daemon/abrt-auto-reporting.c:391 + msgid "anonymous auto reporting" + msgstr "anonymous 自動報告" + +@@ -751,7 +751,7 @@ msgstr "%s のバックトレース構文解析に失敗しました" + msgid "Crash thread not found" + msgstr "クラッシュスレッドは見つかりませんでした" + +-#: ../src/plugins/abrt-action-analyze-c.c:67 ++#: ../src/plugins/abrt-action-analyze-c.c:130 + msgid "" + "& [-v] -d DIR\n" + "\n" +@@ -1916,34 +1916,34 @@ msgstr "プライベートレポートが有効になっています、'abrt-cli + msgid "See 'abrt-cli COMMAND --help' for more information" + msgstr "詳細については abrt-cli COMMAND --help を参照してください" + +-#: ../src/cli/list.c:121 ++#: ../src/cli/list.c:124 + #, c-format + msgid "" + "%sRun 'abrt-cli report %s' for creating a case in Red Hat Customer Portal\n" + msgstr "Red Hat カスタマーポータルにケースを作成するため %s'abrt-cli report を実行する%s'\n" + +-#: ../src/cli/list.c:173 ++#: ../src/cli/list.c:176 + msgid "& list [options]" + msgstr "& list [options]" + +-#: ../src/cli/list.c:182 ++#: ../src/cli/list.c:185 + msgid "List only not-reported problems" + msgstr "報告されていない問題のみを表示する" + + #. deprecate -d option with --pretty=full +-#: ../src/cli/list.c:184 ../src/cli/list.c:237 ++#: ../src/cli/list.c:187 ../src/cli/list.c:240 + msgid "Show detailed report" + msgstr "詳細報告を表示する" + +-#: ../src/cli/list.c:185 ++#: ../src/cli/list.c:188 + msgid "List only the problems more recent than specified timestamp" + msgstr "指定したタイムスタンプより新しい問題のみを表示します" + +-#: ../src/cli/list.c:186 ++#: ../src/cli/list.c:189 + msgid "List only the problems older than specified timestamp" + msgstr "指定したタイムスタンプよりも古い問題のみを表示します" + +-#: ../src/cli/list.c:212 ++#: ../src/cli/list.c:215 + #, c-format + msgid "" + "The Autoreporting feature is disabled. Please consider enabling it by " +@@ -1953,32 +1953,32 @@ msgstr "" + "自動報告機能は無効になっています。root の特権を持つユーザーで\n" + "'abrt-auto-reporting enabled' を発行し、この機能を有効にすることを検討してみてください\n" + +-#: ../src/cli/list.c:229 ++#: ../src/cli/list.c:232 + msgid "& info [options] DIR..." + msgstr "& info [オプション] DIR..." + +-#: ../src/cli/list.c:238 ++#: ../src/cli/list.c:241 + msgid "Text larger than this will be shown abridged" + msgstr "これより大きなテキストは要約して表示されます" + +-#: ../src/cli/list.c:258 ++#: ../src/cli/list.c:261 + #, c-format + msgid "No such problem directory '%s'" + msgstr "そのような問題ディレクトリ '%s' はありません" + +-#: ../src/cli/status.c:63 ++#: ../src/cli/status.c:66 + msgid "& status" + msgstr "& status" + +-#: ../src/cli/status.c:71 ++#: ../src/cli/status.c:74 + msgid "Print only the problem count without any message" + msgstr "問題の件数のみを表示し、メッセージは表示しません" + +-#: ../src/cli/status.c:72 ++#: ../src/cli/status.c:75 + msgid "Print only the problems more recent than specified timestamp" + msgstr "指定されたタイムスタンプよりも新しい問題のみを表示する" + +-#: ../src/cli/status.c:88 ++#: ../src/cli/status.c:91 + #, c-format + msgid "ABRT has detected %u problem(s). For more info run: abrt-cli list%s\n" + msgstr "ABRT により %u 件の問題が検出されました。次を実行して詳細を確認してください: abrt-cli list%s\n" +diff --git a/po/ko.po b/po/ko.po +index 22dd209..6684de2 100644 +--- a/po/ko.po ++++ b/po/ko.po +@@ -13,7 +13,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: jmoskovc@redhat.com\n" +-"POT-Creation-Date: 2015-07-14 15:37+0200\n" ++"POT-Creation-Date: 2016-06-29 15:31+0200\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +@@ -23,7 +23,7 @@ msgstr "" + "language/ko/)\n" + "Language: ko\n" + "Plural-Forms: nplurals=1; plural=0;\n" +-"X-Generator: Zanata 3.6.2\n" ++"X-Generator: Zanata 3.9.5\n" + + #: ../src/applet/abrt-applet.desktop.in.h:1 + msgid "Automatic Bug Reporting Tool" +@@ -326,7 +326,7 @@ msgstr "ABRT에 대해 " + msgid "Quit" + msgstr "종료 " + +-#: ../src/daemon/abrt-action-save-package-data.c:378 ++#: ../src/daemon/abrt-action-save-package-data.c:400 + msgid "" + "& [-v] [-c CONFFILE] -d DIR\n" + "\n" +@@ -335,9 +335,9 @@ msgstr "& [-v] [-c CONFFILE] -d DIR\n" + "\n" + "패키지 데이터베이스를 쿼리하고 패키지 및 구성 요소 이름을 저장합니다 " + +-#: ../src/daemon/abrt-action-save-package-data.c:390 ++#: ../src/daemon/abrt-action-save-package-data.c:412 + #: ../src/plugins/abrt-action-analyze-backtrace.c:53 +-#: ../src/plugins/abrt-action-analyze-c.c:78 ++#: ../src/plugins/abrt-action-analyze-c.c:141 + #: ../src/plugins/abrt-action-analyze-oops.c:48 + #: ../src/plugins/abrt-action-analyze-xorg.c:84 + #: ../src/plugins/abrt-action-analyze-python.c:47 +@@ -346,12 +346,12 @@ msgstr "& [-v] [-c CONFFILE] -d DIR\n" + msgid "Problem directory" + msgstr "문제가 있는 디렉토리 " + +-#: ../src/daemon/abrt-action-save-package-data.c:391 ++#: ../src/daemon/abrt-action-save-package-data.c:413 + msgid "Configuration file" + msgstr "설정 파일 " + +-#: ../src/daemon/abrt-server.c:792 ../src/dbus/abrt-dbus.c:1001 +-#: ../src/dbus/abrt-configuration.c:1002 ../src/daemon/abrtd.c:484 ++#: ../src/daemon/abrt-server.c:792 ../src/dbus/abrt-dbus.c:1004 ++#: ../src/dbus/abrt-configuration.c:1002 ../src/daemon/abrtd.c:465 + msgid "& [options]" + msgstr "& [options]" + +@@ -365,85 +365,85 @@ msgstr "NUM을 클라이언트 uid로 사용 " + msgid "Log to syslog" + msgstr "syslog에 로그 " + +-#: ../src/daemon/abrt-server.c:805 ../src/daemon/abrtd.c:500 ++#: ../src/daemon/abrt-server.c:805 ../src/daemon/abrtd.c:481 + msgid "Add program names to log" + msgstr "로그에 프로그램 이름 추가 " + +-#: ../src/dbus/abrt-dbus.c:132 ++#: ../src/dbus/abrt-dbus.c:131 + msgid "Unknown error" + msgstr "알 수 없는 오류" + +-#: ../src/dbus/abrt-dbus.c:221 ++#: ../src/dbus/abrt-dbus.c:220 + #, c-format + msgid "'%s' is not a valid problem directory" + msgstr "'%s'는 유효한 문제 디렉토리가 아닙니다" + +-#: ../src/dbus/abrt-dbus.c:256 ++#: ../src/dbus/abrt-dbus.c:255 + #, c-format + msgid "'%s' element can't be modified" + msgstr "'%s' 요소를 수정할 수 없습니다 " + +-#: ../src/dbus/abrt-dbus.c:285 ../src/dbus/abrt-dbus.c:498 +-#: ../src/dbus/abrt-dbus.c:560 ../src/dbus/abrt-dbus.c:625 +-#: ../src/dbus/abrt-dbus.c:815 ../src/dbus/abrt-configuration.c:618 ++#: ../src/dbus/abrt-dbus.c:284 ../src/dbus/abrt-dbus.c:497 ++#: ../src/dbus/abrt-dbus.c:559 ../src/dbus/abrt-dbus.c:624 ++#: ../src/dbus/abrt-dbus.c:814 ../src/dbus/abrt-configuration.c:618 + #: ../src/dbus/abrt-configuration.c:683 + #, c-format + msgid "Not Authorized" + msgstr "권한이 없습니다 " + +-#: ../src/dbus/abrt-dbus.c:298 ++#: ../src/dbus/abrt-dbus.c:297 + msgid "Can't access the problem for modification" + msgstr "수정하기 위해 문제에 액세스할 수 없습니다 " + +-#: ../src/dbus/abrt-dbus.c:514 ++#: ../src/dbus/abrt-dbus.c:513 + msgid "Chowning directory failed. Check system logs for more details." + msgstr "디렉토리의 소유자 변경에 실패했습니다. 보다 자세한 내용은 시스템 로그를 확인하십시오. " + +-#: ../src/dbus/abrt-dbus.c:635 ++#: ../src/dbus/abrt-dbus.c:634 + msgid "Can't access the problem for reading" + msgstr "문제에 액세스하여 불러올 수 없습니다 " + +-#: ../src/dbus/abrt-dbus.c:690 ../src/dbus/abrt-dbus.c:755 +-#: ../src/dbus/abrt-dbus.c:911 ++#: ../src/dbus/abrt-dbus.c:689 ../src/dbus/abrt-dbus.c:754 ++#: ../src/dbus/abrt-dbus.c:910 + #, c-format + msgid "'%s' is not a valid element name" + msgstr "'%s'은 유효한 요소 이름이 아닙니다 " + +-#: ../src/dbus/abrt-dbus.c:711 ++#: ../src/dbus/abrt-dbus.c:710 + #, c-format + msgid "Can't get size of '%s'" + msgstr "'%s' 용량을 얻을 수 없습니다 " + +-#: ../src/dbus/abrt-dbus.c:726 ++#: ../src/dbus/abrt-dbus.c:725 + msgid "No problem space left" + msgstr "남은 문제 공간이 없음 " + +-#: ../src/dbus/abrt-dbus.c:776 ++#: ../src/dbus/abrt-dbus.c:775 + #, c-format + msgid "Can't delete the element '%s' from the problem directory '%s'" + msgstr "문제 디렉토리 '%s'에서 요소 '%s'를 삭제할 수 없습니다 " + +-#: ../src/dbus/abrt-dbus.c:803 ++#: ../src/dbus/abrt-dbus.c:802 + msgid "Can't access the problem" + msgstr "문제에 액세스할 수 없습니다" + +-#: ../src/dbus/abrt-dbus.c:983 ../src/dbus/abrt-configuration.c:983 ++#: ../src/dbus/abrt-dbus.c:986 ../src/dbus/abrt-configuration.c:983 + #, c-format + msgid "" + "The name '%s' has been lost, please check if other service owning the name " + "is not running.\n" + msgstr "'%s'의 이름이 분실되었습니다. 이 이름을 갖는 다른 서비스가 실행되고 있지 않은지 확인하십시오.\n" + +-#: ../src/dbus/abrt-dbus.c:1010 ../src/dbus/abrt-configuration.c:1011 +-#: ../src/daemon/abrtd.c:499 ++#: ../src/dbus/abrt-dbus.c:1013 ../src/dbus/abrt-configuration.c:1011 ++#: ../src/daemon/abrtd.c:480 + msgid "Exit after NUM seconds of inactivity" + msgstr "NUM 초 동안 동작하지 않을 경우 종료합니다 " + +-#: ../src/dbus/abrt-dbus.c:1028 ../src/dbus/abrt-configuration.c:1021 ++#: ../src/dbus/abrt-dbus.c:1031 ../src/dbus/abrt-configuration.c:1021 + msgid "This program must be run as root." + msgstr "이 프로그램은 root로 실행해야 합니다." + +-#: ../src/daemon/abrtd.c:451 ++#: ../src/daemon/abrtd.c:432 + msgid "" + "The problem data are incomplete. This usually happens when a problem is " + "detected while computer is shutting down or user is logging out. In order to " +@@ -455,11 +455,11 @@ msgstr "" + "정확하게 문제를 보고하기 위해 ABRT는 이 문제를 전송하는 것을 허용하지 않습니다. 시간이 허락하여 이 문제를 해결하기 위해 개발자에게 " + "도움을 주려면 개발자에게 직접 연락을 취하십시오." + +-#: ../src/daemon/abrtd.c:497 ++#: ../src/daemon/abrtd.c:478 + msgid "Do not daemonize" + msgstr "데몬화하지 않습니다 " + +-#: ../src/daemon/abrtd.c:498 ++#: ../src/daemon/abrtd.c:479 + msgid "Log to syslog even with -d" + msgstr "-d를 사용하여 syslog에 로그 " + +@@ -513,69 +513,69 @@ msgid "Maximal cache size in MiB. Default is " + msgstr "MiB 단위의 최대 캐시 용량입니다. 기본값은 다음과 같습니다 " + + #: ../src/daemon/abrt-auto-reporting.c:200 +-#: ../src/daemon/abrt-auto-reporting.c:208 ++#: ../src/daemon/abrt-auto-reporting.c:213 + msgid "& [ " + msgstr "& [ " + +-#: ../src/daemon/abrt-auto-reporting.c:235 ++#: ../src/daemon/abrt-auto-reporting.c:240 + msgid "Turns the authentication off" + msgstr "인증을 해제" + +-#: ../src/daemon/abrt-auto-reporting.c:236 ++#: ../src/daemon/abrt-auto-reporting.c:241 + msgid "Red Hat Support user name" + msgstr "Red Hat Support 사용자 이름" + +-#: ../src/daemon/abrt-auto-reporting.c:237 ++#: ../src/daemon/abrt-auto-reporting.c:242 + msgid "Red Hat Support password, if not given, a prompt for it will be issued" + msgstr "Red Hat Support 암호를 지정하지 않은 경우 이를 요청하는 메세지가 나타납니다" + +-#: ../src/daemon/abrt-auto-reporting.c:238 ++#: ../src/daemon/abrt-auto-reporting.c:243 + msgid "uReport SSL certificate paths or certificate type" + msgstr "uReport SSL 인증서 경로 또는 인증서 유형" + +-#: ../src/daemon/abrt-auto-reporting.c:254 ++#: ../src/daemon/abrt-auto-reporting.c:259 + msgid "You also need to specify --username for --password" + msgstr "--password의 --username을 지정하십시오" + +-#: ../src/daemon/abrt-auto-reporting.c:260 ++#: ../src/daemon/abrt-auto-reporting.c:265 + msgid "You can use either --username or --certificate" + msgstr "--username 또는 --certificate 중 하나를 사용할 수 있습니다" + +-#: ../src/daemon/abrt-auto-reporting.c:266 ++#: ../src/daemon/abrt-auto-reporting.c:271 + msgid "You can use either --username or --anonymous" + msgstr "--username 또는 --anonymous 중 하나를 사용할 수 있습니다" + +-#: ../src/daemon/abrt-auto-reporting.c:272 ++#: ../src/daemon/abrt-auto-reporting.c:277 + msgid "You can use either --anonymous or --certificate" + msgstr "--anonymous 또는 --certificate 중 하나를 사용할 수 있습니다" + +-#: ../src/daemon/abrt-auto-reporting.c:279 ++#: ../src/daemon/abrt-auto-reporting.c:284 + msgid "Invalid number of arguments" + msgstr "잘못된 인수 개수 " + +-#: ../src/daemon/abrt-auto-reporting.c:298 ++#: ../src/daemon/abrt-auto-reporting.c:303 + #, c-format + msgid "Unknown option value: '%s'\n" + msgstr "알 수 없는 옵션 값: '%s'\n" + +-#: ../src/daemon/abrt-auto-reporting.c:338 ++#: ../src/daemon/abrt-auto-reporting.c:343 + msgid "Password:" + msgstr "암호: " + +-#: ../src/daemon/abrt-auto-reporting.c:341 ++#: ../src/daemon/abrt-auto-reporting.c:346 + msgid "Cannot continue without password\n" + msgstr "암호없이 계속 진행할 수 없습니다\n" + + #. Print only the part before ':' of a string like "username:password" +-#: ../src/daemon/abrt-auto-reporting.c:382 ++#: ../src/daemon/abrt-auto-reporting.c:387 + msgid "HTTP Authenticated auto reporting" + msgstr "HTTP 인증 자동 보고" + +-#: ../src/daemon/abrt-auto-reporting.c:384 ++#: ../src/daemon/abrt-auto-reporting.c:389 + msgid "SSL Client Authenticated auto reporting" + msgstr "SSL 클라이언트 인증 자동 보고" + +-#: ../src/daemon/abrt-auto-reporting.c:386 ++#: ../src/daemon/abrt-auto-reporting.c:391 + msgid "anonymous auto reporting" + msgstr "익명으로 자동 보고" + +@@ -743,7 +743,7 @@ msgstr "%s 용 백트레이스 구문 분석 실패 " + msgid "Crash thread not found" + msgstr "충돌 스레드를 찾을 수 없습니다 " + +-#: ../src/plugins/abrt-action-analyze-c.c:67 ++#: ../src/plugins/abrt-action-analyze-c.c:130 + msgid "" + "& [-v] -d DIR\n" + "\n" +@@ -1900,34 +1900,34 @@ msgstr "비공개 보고서가 활성화되어 있습니다. 'abrt-cli -a COMMAN + msgid "See 'abrt-cli COMMAND --help' for more information" + msgstr "보다 자세한 내용은 'abrt-cli COMMAND --help'에서 참조하십시오 " + +-#: ../src/cli/list.c:121 ++#: ../src/cli/list.c:124 + #, c-format + msgid "" + "%sRun 'abrt-cli report %s' for creating a case in Red Hat Customer Portal\n" + msgstr "%s 'abrt-cli report %s'를 실행하여 Red Hat 고객 포털에 기술 문의를 작성합니다 \n" + +-#: ../src/cli/list.c:173 ++#: ../src/cli/list.c:176 + msgid "& list [options]" + msgstr "& list [options]" + +-#: ../src/cli/list.c:182 ++#: ../src/cli/list.c:185 + msgid "List only not-reported problems" + msgstr "보고되지 않는 문제만 나열합니다 " + + #. deprecate -d option with --pretty=full +-#: ../src/cli/list.c:184 ../src/cli/list.c:237 ++#: ../src/cli/list.c:187 ../src/cli/list.c:240 + msgid "Show detailed report" + msgstr "상세 보고를 표시합니다 " + +-#: ../src/cli/list.c:185 ++#: ../src/cli/list.c:188 + msgid "List only the problems more recent than specified timestamp" + msgstr "지정된 타임 스탬프 보다 최신의 문제만 나열 " + +-#: ../src/cli/list.c:186 ++#: ../src/cli/list.c:189 + msgid "List only the problems older than specified timestamp" + msgstr "지정된 타임 스탬프보다 오래된 문제만 나열합니다 " + +-#: ../src/cli/list.c:212 ++#: ../src/cli/list.c:215 + #, c-format + msgid "" + "The Autoreporting feature is disabled. Please consider enabling it by " +@@ -1937,32 +1937,32 @@ msgstr "" + "자동보고 기능은 비활성화되어 있습니다. root 권한을 가진 사용자로\n" + "'abrt-auto-reporting enabled'를 실행하여 이를 활성화합니다\n" + +-#: ../src/cli/list.c:229 ++#: ../src/cli/list.c:232 + msgid "& info [options] DIR..." + msgstr "& info [options] DIR..." + +-#: ../src/cli/list.c:238 ++#: ../src/cli/list.c:241 + msgid "Text larger than this will be shown abridged" + msgstr "이보다 더 큰 텍스트는 요약하여 표시됩니다" + +-#: ../src/cli/list.c:258 ++#: ../src/cli/list.c:261 + #, c-format + msgid "No such problem directory '%s'" + msgstr "이러한 문제 디렉토리 '%s'가 없음 " + +-#: ../src/cli/status.c:63 ++#: ../src/cli/status.c:66 + msgid "& status" + msgstr "& status" + +-#: ../src/cli/status.c:71 ++#: ../src/cli/status.c:74 + msgid "Print only the problem count without any message" + msgstr "아무 메세지를 표시하지 않고 문제의 건수만 출력 " + +-#: ../src/cli/status.c:72 ++#: ../src/cli/status.c:75 + msgid "Print only the problems more recent than specified timestamp" + msgstr "지정된 타임 스탬프 보다 최신의 문제만 출력" + +-#: ../src/cli/status.c:88 ++#: ../src/cli/status.c:91 + #, c-format + msgid "ABRT has detected %u problem(s). For more info run: abrt-cli list%s\n" + msgstr "" +diff --git a/po/pt_BR.po b/po/pt_BR.po +index 8309f5e..7a1098b 100644 +--- a/po/pt_BR.po ++++ b/po/pt_BR.po +@@ -22,24 +22,22 @@ + # Taylon Silmer , 2011 + # Teseu , 2011 + # Vitor Lobo Ramos , 2014 +-# Gcintra , 2015. #zanata +-# Jakub Filak , 2015. #zanata +-# Jonatas Z. de Vasconcellos , 2015. #zanata ++# Daniel Lara , 2016. #zanata + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: jmoskovc@redhat.com\n" +-"POT-Creation-Date: 2015-07-14 15:37+0200\n" ++"POT-Creation-Date: 2016-06-29 15:31+0200\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"PO-Revision-Date: 2015-07-18 11:44-0400\n" +-"Last-Translator: Gcintra \n" ++"PO-Revision-Date: 2016-03-02 01:16-0500\n" ++"Last-Translator: Copied by Zanata \n" + "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/" + "fedora-abrt/language/pt_BR/)\n" + "Language: pt-BR\n" + "Plural-Forms: nplurals=2; plural=(n > 1);\n" +-"X-Generator: Zanata 3.6.2\n" ++"X-Generator: Zanata 3.9.5\n" + + # translation auto-copied from project abrt, version master, document abrt + #: ../src/applet/abrt-applet.desktop.in.h:1 +@@ -410,7 +408,7 @@ msgid "Quit" + msgstr "Sair" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/daemon/abrt-action-save-package-data.c:378 ++#: ../src/daemon/abrt-action-save-package-data.c:400 + msgid "" + "& [-v] [-c CONFFILE] -d DIR\n" + "\n" +@@ -421,9 +419,9 @@ msgstr "" + "Analise o banco de dados do pacote e salve o pacote e nome do componente" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/daemon/abrt-action-save-package-data.c:390 ++#: ../src/daemon/abrt-action-save-package-data.c:412 + #: ../src/plugins/abrt-action-analyze-backtrace.c:53 +-#: ../src/plugins/abrt-action-analyze-c.c:78 ++#: ../src/plugins/abrt-action-analyze-c.c:141 + #: ../src/plugins/abrt-action-analyze-oops.c:48 + #: ../src/plugins/abrt-action-analyze-xorg.c:84 + #: ../src/plugins/abrt-action-analyze-python.c:47 +@@ -433,13 +431,13 @@ msgid "Problem directory" + msgstr "Diretório do problema" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/daemon/abrt-action-save-package-data.c:391 ++#: ../src/daemon/abrt-action-save-package-data.c:413 + msgid "Configuration file" + msgstr "Arquivo de Configuração" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/daemon/abrt-server.c:792 ../src/dbus/abrt-dbus.c:1001 +-#: ../src/dbus/abrt-configuration.c:1002 ../src/daemon/abrtd.c:484 ++#: ../src/daemon/abrt-server.c:792 ../src/dbus/abrt-dbus.c:1004 ++#: ../src/dbus/abrt-configuration.c:1002 ../src/daemon/abrtd.c:465 + msgid "& [options]" + msgstr "& [options]" + +@@ -456,83 +454,83 @@ msgid "Log to syslog" + msgstr "Log para o syslog" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/daemon/abrt-server.c:805 ../src/daemon/abrtd.c:500 ++#: ../src/daemon/abrt-server.c:805 ../src/daemon/abrtd.c:481 + msgid "Add program names to log" + msgstr "Adicionar os nomes dos programas ao log" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:132 ++#: ../src/dbus/abrt-dbus.c:131 + msgid "Unknown error" + msgstr "Erro desconhecido" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:221 ++#: ../src/dbus/abrt-dbus.c:220 + #, c-format + msgid "'%s' is not a valid problem directory" + msgstr "'%s' não é um diretório de problema válido" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:256 ++#: ../src/dbus/abrt-dbus.c:255 + #, c-format + msgid "'%s' element can't be modified" + msgstr "O '%s' não pode ser modificado" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:285 ../src/dbus/abrt-dbus.c:498 +-#: ../src/dbus/abrt-dbus.c:560 ../src/dbus/abrt-dbus.c:625 +-#: ../src/dbus/abrt-dbus.c:815 ../src/dbus/abrt-configuration.c:618 ++#: ../src/dbus/abrt-dbus.c:284 ../src/dbus/abrt-dbus.c:497 ++#: ../src/dbus/abrt-dbus.c:559 ../src/dbus/abrt-dbus.c:624 ++#: ../src/dbus/abrt-dbus.c:814 ../src/dbus/abrt-configuration.c:618 + #: ../src/dbus/abrt-configuration.c:683 + #, c-format + msgid "Not Authorized" + msgstr "Não Autorizado" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:298 ++#: ../src/dbus/abrt-dbus.c:297 + msgid "Can't access the problem for modification" + msgstr "Não é possível acessar o problema para modificação" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:514 ++#: ../src/dbus/abrt-dbus.c:513 + msgid "Chowning directory failed. Check system logs for more details." + msgstr "" + "Erro ao mudar o dono do diretório. Verifique os logs do sistema para mais " + "detalhes." + + # translation auto-copied from project abrt, version master, document abrt, author Jonatas Z. de Vasconcellos +-#: ../src/dbus/abrt-dbus.c:635 ++#: ../src/dbus/abrt-dbus.c:634 + msgid "Can't access the problem for reading" + msgstr "Não é possível acessar o problema para leitura" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:690 ../src/dbus/abrt-dbus.c:755 +-#: ../src/dbus/abrt-dbus.c:911 ++#: ../src/dbus/abrt-dbus.c:689 ../src/dbus/abrt-dbus.c:754 ++#: ../src/dbus/abrt-dbus.c:910 + #, c-format + msgid "'%s' is not a valid element name" + msgstr "'%s' não é um nome válido de elemento" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:711 ++#: ../src/dbus/abrt-dbus.c:710 + #, c-format + msgid "Can't get size of '%s'" + msgstr "Não foi possível obter o tamanho de '%s'" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:726 ++#: ../src/dbus/abrt-dbus.c:725 + msgid "No problem space left" + msgstr "Nenhum problema de espaço." + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:776 ++#: ../src/dbus/abrt-dbus.c:775 + #, c-format + msgid "Can't delete the element '%s' from the problem directory '%s'" + msgstr "Não é possível remover o elemento '%s' do diretório de problema '%s'" + +-#: ../src/dbus/abrt-dbus.c:803 ++#: ../src/dbus/abrt-dbus.c:802 + msgid "Can't access the problem" + msgstr "Não é possível acessar o problema " + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:983 ../src/dbus/abrt-configuration.c:983 ++#: ../src/dbus/abrt-dbus.c:986 ../src/dbus/abrt-configuration.c:983 + #, c-format + msgid "" + "The name '%s' has been lost, please check if other service owning the name " +@@ -542,18 +540,18 @@ msgstr "" + "nome não está em execução.\n" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:1010 ../src/dbus/abrt-configuration.c:1011 +-#: ../src/daemon/abrtd.c:499 ++#: ../src/dbus/abrt-dbus.c:1013 ../src/dbus/abrt-configuration.c:1011 ++#: ../src/daemon/abrtd.c:480 + msgid "Exit after NUM seconds of inactivity" + msgstr "Sai após os segundos NUM de inatividade" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:1028 ../src/dbus/abrt-configuration.c:1021 ++#: ../src/dbus/abrt-dbus.c:1031 ../src/dbus/abrt-configuration.c:1021 + msgid "This program must be run as root." + msgstr "Este programa deve estar sendo executado como root." + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/daemon/abrtd.c:451 ++#: ../src/daemon/abrtd.c:432 + msgid "" + "The problem data are incomplete. This usually happens when a problem is " + "detected while computer is shutting down or user is logging out. In order to " +@@ -569,12 +567,12 @@ msgstr "" + "favor contacte-os diretamente." + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/daemon/abrtd.c:497 ++#: ../src/daemon/abrtd.c:478 + msgid "Do not daemonize" + msgstr "Não criar um daemon" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/daemon/abrtd.c:498 ++#: ../src/daemon/abrtd.c:479 + msgid "Log to syslog even with -d" + msgstr "Registrar no syslog mesmo com o -d" + +@@ -634,71 +632,71 @@ msgstr "Tamanho máximo de cache em MiB. O padrão é" + + # translation auto-copied from project abrt, version master, document abrt + #: ../src/daemon/abrt-auto-reporting.c:200 +-#: ../src/daemon/abrt-auto-reporting.c:208 ++#: ../src/daemon/abrt-auto-reporting.c:213 + msgid "& [ " + msgstr "& [ " + +-#: ../src/daemon/abrt-auto-reporting.c:235 ++#: ../src/daemon/abrt-auto-reporting.c:240 + msgid "Turns the authentication off" + msgstr "Desliga a Autenticação" + +-#: ../src/daemon/abrt-auto-reporting.c:236 ++#: ../src/daemon/abrt-auto-reporting.c:241 + msgid "Red Hat Support user name" + msgstr "Nome do usuário do Red Hat Support" + +-#: ../src/daemon/abrt-auto-reporting.c:237 ++#: ../src/daemon/abrt-auto-reporting.c:242 + msgid "Red Hat Support password, if not given, a prompt for it will be issued" + msgstr "" + "Senha do Red Hat Support, caso não seja fornecida, será enviada uma " + "solicitação " + +-#: ../src/daemon/abrt-auto-reporting.c:238 ++#: ../src/daemon/abrt-auto-reporting.c:243 + msgid "uReport SSL certificate paths or certificate type" + msgstr "Caminhos de certiifcado ou tipo de certificado do uReport SSL" + +-#: ../src/daemon/abrt-auto-reporting.c:254 ++#: ../src/daemon/abrt-auto-reporting.c:259 + msgid "You also need to specify --username for --password" + msgstr "Você também precisa especificar --username para --password" + +-#: ../src/daemon/abrt-auto-reporting.c:260 ++#: ../src/daemon/abrt-auto-reporting.c:265 + msgid "You can use either --username or --certificate" + msgstr "Você pode utilizar --username ou --certificate" + +-#: ../src/daemon/abrt-auto-reporting.c:266 ++#: ../src/daemon/abrt-auto-reporting.c:271 + msgid "You can use either --username or --anonymous" + msgstr "Você pode usar --username ou --anonymous" + +-#: ../src/daemon/abrt-auto-reporting.c:272 ++#: ../src/daemon/abrt-auto-reporting.c:277 + msgid "You can use either --anonymous or --certificate" + msgstr "Você pode usar --anonymous ou --certificate" + +-#: ../src/daemon/abrt-auto-reporting.c:279 ++#: ../src/daemon/abrt-auto-reporting.c:284 + msgid "Invalid number of arguments" + msgstr "Número de argumentos é inválido" + +-#: ../src/daemon/abrt-auto-reporting.c:298 ++#: ../src/daemon/abrt-auto-reporting.c:303 + #, c-format + msgid "Unknown option value: '%s'\n" + msgstr "Valor de opção desconhecida: '%s'\n" + +-#: ../src/daemon/abrt-auto-reporting.c:338 ++#: ../src/daemon/abrt-auto-reporting.c:343 + msgid "Password:" + msgstr "Senha:" + +-#: ../src/daemon/abrt-auto-reporting.c:341 ++#: ../src/daemon/abrt-auto-reporting.c:346 + msgid "Cannot continue without password\n" + msgstr "Não foi possível continuar sem uma senha\n" + + #. Print only the part before ':' of a string like "username:password" +-#: ../src/daemon/abrt-auto-reporting.c:382 ++#: ../src/daemon/abrt-auto-reporting.c:387 + msgid "HTTP Authenticated auto reporting" + msgstr "Reportagem automática de HTTP autenticado" + +-#: ../src/daemon/abrt-auto-reporting.c:384 ++#: ../src/daemon/abrt-auto-reporting.c:389 + msgid "SSL Client Authenticated auto reporting" + msgstr "Reportagem automática de SSL Client autenticado" + +-#: ../src/daemon/abrt-auto-reporting.c:386 ++#: ../src/daemon/abrt-auto-reporting.c:391 + msgid "anonymous auto reporting" + msgstr "Reportagem automática anônima" + +@@ -882,7 +880,7 @@ msgid "Crash thread not found" + msgstr "Opção de travamento não foi encontrada" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/plugins/abrt-action-analyze-c.c:67 ++#: ../src/plugins/abrt-action-analyze-c.c:130 + msgid "" + "& [-v] -d DIR\n" + "\n" +@@ -1320,7 +1318,7 @@ msgstr "Exceção aritmética" + + #: ../src/plugins/abrt-gdb-exploitable:637 + msgid "Division by zero" +-msgstr "Sivisão por zero" ++msgstr "Divisão por zero" + + # translation auto-copied from project abrt, version master, document abrt + #: ../src/plugins/abrt-gdb-exploitable:641 +@@ -2258,7 +2256,7 @@ msgstr "" + msgid "See 'abrt-cli COMMAND --help' for more information" + msgstr "Ver 'abrt-cli COMMAND --help' para mais informações." + +-#: ../src/cli/list.c:121 ++#: ../src/cli/list.c:124 + #, c-format + msgid "" + "%sRun 'abrt-cli report %s' for creating a case in Red Hat Customer Portal\n" +@@ -2266,33 +2264,33 @@ msgstr "" + "%sExecutar 'abrt-cli report %s' para criar um caso no Red Hat Customer " + "Portal\n" + +-#: ../src/cli/list.c:173 ++#: ../src/cli/list.c:176 + msgid "& list [options]" + msgstr "& list [opções]" + +-#: ../src/cli/list.c:182 ++#: ../src/cli/list.c:185 + msgid "List only not-reported problems" + msgstr "Listar somente os problemas não reportados" + + # translation auto-copied from project abrt, version master, document abrt + #. deprecate -d option with --pretty=full +-#: ../src/cli/list.c:184 ../src/cli/list.c:237 ++#: ../src/cli/list.c:187 ../src/cli/list.c:240 + msgid "Show detailed report" + msgstr "Exibir relatório detalhado" + +-#: ../src/cli/list.c:185 ++#: ../src/cli/list.c:188 + msgid "List only the problems more recent than specified timestamp" + msgstr "" + "Listar apenas problemas mais recentes que o carimbo de data e hora " + "especificado" + +-#: ../src/cli/list.c:186 ++#: ../src/cli/list.c:189 + msgid "List only the problems older than specified timestamp" + msgstr "" + "Listar apenas problemas mais recentes que o carimbo de data e hora " + "especificado" + +-#: ../src/cli/list.c:212 ++#: ../src/cli/list.c:215 + #, c-format + msgid "" + "The Autoreporting feature is disabled. Please consider enabling it by " +@@ -2304,36 +2302,36 @@ msgstr "" + "previlégios root.\n" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/cli/list.c:229 ++#: ../src/cli/list.c:232 + msgid "& info [options] DIR..." + msgstr "& info [options] DIR..." + +-#: ../src/cli/list.c:238 ++#: ../src/cli/list.c:241 + msgid "Text larger than this will be shown abridged" + msgstr "Texto maior do que este será exibido abreviado" + +-#: ../src/cli/list.c:258 ++#: ../src/cli/list.c:261 + #, c-format + msgid "No such problem directory '%s'" + msgstr "Não há tal diretório de problemas '%s'" + +-#: ../src/cli/status.c:63 ++#: ../src/cli/status.c:66 + msgid "& status" + msgstr "& status" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/cli/status.c:71 ++#: ../src/cli/status.c:74 + msgid "Print only the problem count without any message" + msgstr "Mostrar apenas a contagem de problema sem mensagem" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/cli/status.c:72 ++#: ../src/cli/status.c:75 + msgid "Print only the problems more recent than specified timestamp" + msgstr "" + "Mostrar apenas problemas mais recentes que a marca de tempo especificada" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/cli/status.c:88 ++#: ../src/cli/status.c:91 + #, c-format + msgid "ABRT has detected %u problem(s). For more info run: abrt-cli list%s\n" + msgstr "" +diff --git a/po/ru.po b/po/ru.po +index cd56d9a..a9390da 100644 +--- a/po/ru.po ++++ b/po/ru.po +@@ -18,7 +18,7 @@ msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: jmoskovc@redhat.com\n" +-"POT-Creation-Date: 2015-07-14 15:37+0200\n" ++"POT-Creation-Date: 2016-06-29 15:31+0200\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +@@ -29,7 +29,7 @@ msgstr "" + "Language: ru\n" + "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " + "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +-"X-Generator: Zanata 3.6.2\n" ++"X-Generator: Zanata 3.9.5\n" + + #: ../src/applet/abrt-applet.desktop.in.h:1 + msgid "Automatic Bug Reporting Tool" +@@ -350,7 +350,7 @@ msgstr "О программе" + msgid "Quit" + msgstr "Выход" + +-#: ../src/daemon/abrt-action-save-package-data.c:378 ++#: ../src/daemon/abrt-action-save-package-data.c:400 + msgid "" + "& [-v] [-c CONFFILE] -d DIR\n" + "\n" +@@ -360,9 +360,9 @@ msgstr "" + "\n" + "Сделать запрос к базе данных и сохранить название пакета и компонента" + +-#: ../src/daemon/abrt-action-save-package-data.c:390 ++#: ../src/daemon/abrt-action-save-package-data.c:412 + #: ../src/plugins/abrt-action-analyze-backtrace.c:53 +-#: ../src/plugins/abrt-action-analyze-c.c:78 ++#: ../src/plugins/abrt-action-analyze-c.c:141 + #: ../src/plugins/abrt-action-analyze-oops.c:48 + #: ../src/plugins/abrt-action-analyze-xorg.c:84 + #: ../src/plugins/abrt-action-analyze-python.c:47 +@@ -371,12 +371,12 @@ msgstr "" + msgid "Problem directory" + msgstr "Каталог с данными сбоя" + +-#: ../src/daemon/abrt-action-save-package-data.c:391 ++#: ../src/daemon/abrt-action-save-package-data.c:413 + msgid "Configuration file" + msgstr "Файл конфигурации" + +-#: ../src/daemon/abrt-server.c:792 ../src/dbus/abrt-dbus.c:1001 +-#: ../src/dbus/abrt-configuration.c:1002 ../src/daemon/abrtd.c:484 ++#: ../src/daemon/abrt-server.c:792 ../src/dbus/abrt-dbus.c:1004 ++#: ../src/dbus/abrt-configuration.c:1002 ../src/daemon/abrtd.c:465 + msgid "& [options]" + msgstr "& [параметры]" + +@@ -390,71 +390,71 @@ msgstr "Использовать NUM как uid клиента" + msgid "Log to syslog" + msgstr "Запись в журнал" + +-#: ../src/daemon/abrt-server.c:805 ../src/daemon/abrtd.c:500 ++#: ../src/daemon/abrt-server.c:805 ../src/daemon/abrtd.c:481 + msgid "Add program names to log" + msgstr "Добавить названия программ в журнал" + +-#: ../src/dbus/abrt-dbus.c:132 ++#: ../src/dbus/abrt-dbus.c:131 + msgid "Unknown error" + msgstr "Неизвестная ошибка" + +-#: ../src/dbus/abrt-dbus.c:221 ++#: ../src/dbus/abrt-dbus.c:220 + #, c-format + msgid "'%s' is not a valid problem directory" + msgstr "Недопустимый каталог с данными сбоя: «%s»" + +-#: ../src/dbus/abrt-dbus.c:256 ++#: ../src/dbus/abrt-dbus.c:255 + #, c-format + msgid "'%s' element can't be modified" + msgstr "Элемент «%s» не может быть изменен" + +-#: ../src/dbus/abrt-dbus.c:285 ../src/dbus/abrt-dbus.c:498 +-#: ../src/dbus/abrt-dbus.c:560 ../src/dbus/abrt-dbus.c:625 +-#: ../src/dbus/abrt-dbus.c:815 ../src/dbus/abrt-configuration.c:618 ++#: ../src/dbus/abrt-dbus.c:284 ../src/dbus/abrt-dbus.c:497 ++#: ../src/dbus/abrt-dbus.c:559 ../src/dbus/abrt-dbus.c:624 ++#: ../src/dbus/abrt-dbus.c:814 ../src/dbus/abrt-configuration.c:618 + #: ../src/dbus/abrt-configuration.c:683 + #, c-format + msgid "Not Authorized" + msgstr "Не разрешено" + +-#: ../src/dbus/abrt-dbus.c:298 ++#: ../src/dbus/abrt-dbus.c:297 + msgid "Can't access the problem for modification" + msgstr "Ошибка доступа к проблеме с целью ее изменения" + +-#: ../src/dbus/abrt-dbus.c:514 ++#: ../src/dbus/abrt-dbus.c:513 + msgid "Chowning directory failed. Check system logs for more details." + msgstr "Не удалось изменить владельца каталога. Проверьте журналы." + + # translation auto-copied from project abrt, version master, document abrt, author Igor Gorbounov +-#: ../src/dbus/abrt-dbus.c:635 ++#: ../src/dbus/abrt-dbus.c:634 + msgid "Can't access the problem for reading" + msgstr "Не удается получить доступ к данным сбоя для чтения" + +-#: ../src/dbus/abrt-dbus.c:690 ../src/dbus/abrt-dbus.c:755 +-#: ../src/dbus/abrt-dbus.c:911 ++#: ../src/dbus/abrt-dbus.c:689 ../src/dbus/abrt-dbus.c:754 ++#: ../src/dbus/abrt-dbus.c:910 + #, c-format + msgid "'%s' is not a valid element name" + msgstr "Недопустимое имя элемента: «%s»" + +-#: ../src/dbus/abrt-dbus.c:711 ++#: ../src/dbus/abrt-dbus.c:710 + #, c-format + msgid "Can't get size of '%s'" + msgstr "Не удалось определить размер «%s»." + +-#: ../src/dbus/abrt-dbus.c:726 ++#: ../src/dbus/abrt-dbus.c:725 + msgid "No problem space left" + msgstr "Недостаточно места" + +-#: ../src/dbus/abrt-dbus.c:776 ++#: ../src/dbus/abrt-dbus.c:775 + #, c-format + msgid "Can't delete the element '%s' from the problem directory '%s'" + msgstr "Ошибка удаления элемента «%s» из каталога «%s»" + + # translation auto-copied from project abrt, version master, document abrt, author Igor Gorbounov +-#: ../src/dbus/abrt-dbus.c:803 ++#: ../src/dbus/abrt-dbus.c:802 + msgid "Can't access the problem" + msgstr "Не удается получить доступ к данным сбоя" + +-#: ../src/dbus/abrt-dbus.c:983 ../src/dbus/abrt-configuration.c:983 ++#: ../src/dbus/abrt-dbus.c:986 ../src/dbus/abrt-configuration.c:983 + #, c-format + msgid "" + "The name '%s' has been lost, please check if other service owning the name " +@@ -463,17 +463,17 @@ msgstr "" + "Имя «%s» было потеряно, проверьте, не работает ли другая служба, " + "использующая это имя.\n" + +-#: ../src/dbus/abrt-dbus.c:1010 ../src/dbus/abrt-configuration.c:1011 +-#: ../src/daemon/abrtd.c:499 ++#: ../src/dbus/abrt-dbus.c:1013 ../src/dbus/abrt-configuration.c:1011 ++#: ../src/daemon/abrtd.c:480 + msgid "Exit after NUM seconds of inactivity" + msgstr "Выйти после NUM секунд бездействия" + +-#: ../src/dbus/abrt-dbus.c:1028 ../src/dbus/abrt-configuration.c:1021 ++#: ../src/dbus/abrt-dbus.c:1031 ../src/dbus/abrt-configuration.c:1021 + msgid "This program must be run as root." + msgstr "" + "Эта программа должна запускаться от имени привелигированного пользователя." + +-#: ../src/daemon/abrtd.c:451 ++#: ../src/daemon/abrtd.c:432 + msgid "" + "The problem data are incomplete. This usually happens when a problem is " + "detected while computer is shutting down or user is logging out. In order to " +@@ -487,11 +487,11 @@ msgstr "" + "об этой ошибке. Если у вас есть время, и вы хотите помочь разработчикам в их " + "усилиях разобраться с этим сбоем, связывайтесь с ними напрямую." + +-#: ../src/daemon/abrtd.c:497 ++#: ../src/daemon/abrtd.c:478 + msgid "Do not daemonize" + msgstr "Не выполнять как службу" + +-#: ../src/daemon/abrtd.c:498 ++#: ../src/daemon/abrtd.c:479 + msgid "Log to syslog even with -d" + msgstr "Запись в журнал даже с -d" + +@@ -546,71 +546,71 @@ msgid "Maximal cache size in MiB. Default is " + msgstr "Максимальный размер кэша в МиБ. По умолчанию:" + + #: ../src/daemon/abrt-auto-reporting.c:200 +-#: ../src/daemon/abrt-auto-reporting.c:208 ++#: ../src/daemon/abrt-auto-reporting.c:213 + msgid "& [ " + msgstr "& [ " + +-#: ../src/daemon/abrt-auto-reporting.c:235 ++#: ../src/daemon/abrt-auto-reporting.c:240 + msgid "Turns the authentication off" + msgstr "Отключает аутентификацию" + +-#: ../src/daemon/abrt-auto-reporting.c:236 ++#: ../src/daemon/abrt-auto-reporting.c:241 + msgid "Red Hat Support user name" + msgstr "Имя пользователя в системе поддержки Red Hat" + +-#: ../src/daemon/abrt-auto-reporting.c:237 ++#: ../src/daemon/abrt-auto-reporting.c:242 + msgid "Red Hat Support password, if not given, a prompt for it will be issued" + msgstr "" + "Пароль доступа к системе поддержки Red Hat. Если не указан, будет предложено " + "его ввести вручную" + +-#: ../src/daemon/abrt-auto-reporting.c:238 ++#: ../src/daemon/abrt-auto-reporting.c:243 + msgid "uReport SSL certificate paths or certificate type" + msgstr "Путь к SSL-сертификату uReport или тип сертификата" + +-#: ../src/daemon/abrt-auto-reporting.c:254 ++#: ../src/daemon/abrt-auto-reporting.c:259 + msgid "You also need to specify --username for --password" + msgstr "Если пароль задан, необходимо определить --username" + +-#: ../src/daemon/abrt-auto-reporting.c:260 ++#: ../src/daemon/abrt-auto-reporting.c:265 + msgid "You can use either --username or --certificate" + msgstr "Укажите --username или --certificate " + +-#: ../src/daemon/abrt-auto-reporting.c:266 ++#: ../src/daemon/abrt-auto-reporting.c:271 + msgid "You can use either --username or --anonymous" + msgstr "Укажите --username или --anonymous" + +-#: ../src/daemon/abrt-auto-reporting.c:272 ++#: ../src/daemon/abrt-auto-reporting.c:277 + msgid "You can use either --anonymous or --certificate" + msgstr "Укажите --anonymous или --certificate" + +-#: ../src/daemon/abrt-auto-reporting.c:279 ++#: ../src/daemon/abrt-auto-reporting.c:284 + msgid "Invalid number of arguments" + msgstr "Недопустимое число аргументов" + +-#: ../src/daemon/abrt-auto-reporting.c:298 ++#: ../src/daemon/abrt-auto-reporting.c:303 + #, c-format + msgid "Unknown option value: '%s'\n" + msgstr "Неизвестное значение: «%s»\n" + +-#: ../src/daemon/abrt-auto-reporting.c:338 ++#: ../src/daemon/abrt-auto-reporting.c:343 + msgid "Password:" + msgstr "Пароль:" + +-#: ../src/daemon/abrt-auto-reporting.c:341 ++#: ../src/daemon/abrt-auto-reporting.c:346 + msgid "Cannot continue without password\n" + msgstr "Для продолжения необходимо ввести пароль.\n" + + #. Print only the part before ':' of a string like "username:password" +-#: ../src/daemon/abrt-auto-reporting.c:382 ++#: ../src/daemon/abrt-auto-reporting.c:387 + msgid "HTTP Authenticated auto reporting" + msgstr "Автоматический отчет для HTTP-подключений" + +-#: ../src/daemon/abrt-auto-reporting.c:384 ++#: ../src/daemon/abrt-auto-reporting.c:389 + msgid "SSL Client Authenticated auto reporting" + msgstr "Автоматический отчет для SSL-подключений" + +-#: ../src/daemon/abrt-auto-reporting.c:386 ++#: ../src/daemon/abrt-auto-reporting.c:391 + msgid "anonymous auto reporting" + msgstr "Автоматический отчет для анонимных подключений" + +@@ -783,7 +783,7 @@ msgstr "Ошибка разбора протокола сбоя %s" + msgid "Crash thread not found" + msgstr "Поток сбоя не найден" + +-#: ../src/plugins/abrt-action-analyze-c.c:67 ++#: ../src/plugins/abrt-action-analyze-c.c:130 + msgid "" + "& [-v] -d DIR\n" + "\n" +@@ -1995,7 +1995,7 @@ msgid "See 'abrt-cli COMMAND --help' for more information" + msgstr "" + "Для получения дополнительной информации выполните «abrt-cli КОМАНДА --help»" + +-#: ../src/cli/list.c:121 ++#: ../src/cli/list.c:124 + #, c-format + msgid "" + "%sRun 'abrt-cli report %s' for creating a case in Red Hat Customer Portal\n" +@@ -2004,28 +2004,28 @@ msgstr "" + "пользователей Red Hat\n" + + # translation auto-copied from project abrt, version master, document abrt, author Igor Gorbounov +-#: ../src/cli/list.c:173 ++#: ../src/cli/list.c:176 + msgid "& list [options]" + msgstr "& list [параметры]" + +-#: ../src/cli/list.c:182 ++#: ../src/cli/list.c:185 + msgid "List only not-reported problems" + msgstr "Показать ошибки, о которых еще не сообщалось" + + #. deprecate -d option with --pretty=full +-#: ../src/cli/list.c:184 ../src/cli/list.c:237 ++#: ../src/cli/list.c:187 ../src/cli/list.c:240 + msgid "Show detailed report" + msgstr "Показать подробный отчёт" + +-#: ../src/cli/list.c:185 ++#: ../src/cli/list.c:188 + msgid "List only the problems more recent than specified timestamp" + msgstr "Дать список сбоев, обнаруженных после указанного момента времени" + +-#: ../src/cli/list.c:186 ++#: ../src/cli/list.c:189 + msgid "List only the problems older than specified timestamp" + msgstr "Дать список сбоев, обнаруженных до указанного момента времени" + +-#: ../src/cli/list.c:212 ++#: ../src/cli/list.c:215 + #, c-format + msgid "" + "The Autoreporting feature is disabled. Please consider enabling it by " +@@ -2035,33 +2035,33 @@ msgstr "" + "Функции автоматического создания отчетов отключены. \n" + "Чтобы их включить, в режиме root выполните: abrt-auto-reporting enabled\n" + +-#: ../src/cli/list.c:229 ++#: ../src/cli/list.c:232 + msgid "& info [options] DIR..." + msgstr "& info [параметры] DIR..." + +-#: ../src/cli/list.c:238 ++#: ../src/cli/list.c:241 + msgid "Text larger than this will be shown abridged" + msgstr "Текст, длина которого превышает указанную, будет усечен" + +-#: ../src/cli/list.c:258 ++#: ../src/cli/list.c:261 + #, c-format + msgid "No such problem directory '%s'" + msgstr "Нет такого каталога: «%s»." + + # translation auto-copied from project abrt, version master, document abrt, author Igor Gorbounov +-#: ../src/cli/status.c:63 ++#: ../src/cli/status.c:66 + msgid "& status" + msgstr "& status" + +-#: ../src/cli/status.c:71 ++#: ../src/cli/status.c:74 + msgid "Print only the problem count without any message" + msgstr "Вывод только числа сбоев" + +-#: ../src/cli/status.c:72 ++#: ../src/cli/status.c:75 + msgid "Print only the problems more recent than specified timestamp" + msgstr "Вывод сбоев, обнаруженных после указанного момента времени" + +-#: ../src/cli/status.c:88 ++#: ../src/cli/status.c:91 + #, c-format + msgid "ABRT has detected %u problem(s). For more info run: abrt-cli list%s\n" + msgstr "" +diff --git a/po/zh_CN.po b/po/zh_CN.po +index f848292..d66dbb8 100644 +--- a/po/zh_CN.po ++++ b/po/zh_CN.po +@@ -15,26 +15,27 @@ + # yusuf , 2011 + # Zamir SUN , 2013 + # Leah Liu , 2015. #zanata ++# Alex Eng , 2016. #zanata + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: jmoskovc@redhat.com\n" +-"POT-Creation-Date: 2015-07-14 15:37+0200\n" ++"POT-Creation-Date: 2016-06-29 15:31+0200\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"PO-Revision-Date: 2015-07-17 08:20-0400\n" +-"Last-Translator: Leah Liu \n" ++"PO-Revision-Date: 2016-05-24 01:05-0400\n" ++"Last-Translator: Copied by Zanata \n" + "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/fedora-" + "abrt/language/zh_CN/)\n" + "Language: zh-CN\n" + "Plural-Forms: nplurals=1; plural=0;\n" +-"X-Generator: Zanata 3.6.2\n" ++"X-Generator: Zanata 3.9.5\n" + + # translation auto-copied from project abrt, version master, document abrt + #: ../src/applet/abrt-applet.desktop.in.h:1 + msgid "Automatic Bug Reporting Tool" +-msgstr "错误自动报告工具" ++msgstr "错误自动报告工具 alex" + + # translation auto-copied from project abrt, version master, document abrt + #: ../src/applet/abrt-applet.desktop.in.h:2 +@@ -370,7 +371,7 @@ msgid "Quit" + msgstr "退出" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/daemon/abrt-action-save-package-data.c:378 ++#: ../src/daemon/abrt-action-save-package-data.c:400 + msgid "" + "& [-v] [-c CONFFILE] -d DIR\n" + "\n" +@@ -380,9 +381,9 @@ msgstr "& [-v] [-c CONFFILE] -d DIR\n" + "查询软件包数据库并保存软件包和组件名称" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/daemon/abrt-action-save-package-data.c:390 ++#: ../src/daemon/abrt-action-save-package-data.c:412 + #: ../src/plugins/abrt-action-analyze-backtrace.c:53 +-#: ../src/plugins/abrt-action-analyze-c.c:78 ++#: ../src/plugins/abrt-action-analyze-c.c:141 + #: ../src/plugins/abrt-action-analyze-oops.c:48 + #: ../src/plugins/abrt-action-analyze-xorg.c:84 + #: ../src/plugins/abrt-action-analyze-python.c:47 +@@ -392,13 +393,13 @@ msgid "Problem directory" + msgstr "问题目录" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/daemon/abrt-action-save-package-data.c:391 ++#: ../src/daemon/abrt-action-save-package-data.c:413 + msgid "Configuration file" + msgstr "配置文件" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/daemon/abrt-server.c:792 ../src/dbus/abrt-dbus.c:1001 +-#: ../src/dbus/abrt-configuration.c:1002 ../src/daemon/abrtd.c:484 ++#: ../src/daemon/abrt-server.c:792 ../src/dbus/abrt-dbus.c:1004 ++#: ../src/dbus/abrt-configuration.c:1002 ../src/daemon/abrtd.c:465 + msgid "& [options]" + msgstr "& [options]" + +@@ -415,80 +416,80 @@ msgid "Log to syslog" + msgstr "记录至 syslog" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/daemon/abrt-server.c:805 ../src/daemon/abrtd.c:500 ++#: ../src/daemon/abrt-server.c:805 ../src/daemon/abrtd.c:481 + msgid "Add program names to log" + msgstr "在日志中添加程序名" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:132 ++#: ../src/dbus/abrt-dbus.c:131 + msgid "Unknown error" + msgstr "未知错误" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:221 ++#: ../src/dbus/abrt-dbus.c:220 + #, c-format + msgid "'%s' is not a valid problem directory" + msgstr "'%s' 不是有效的问题目录" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:256 ++#: ../src/dbus/abrt-dbus.c:255 + #, c-format + msgid "'%s' element can't be modified" + msgstr "无法修改 '%s' 元素" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:285 ../src/dbus/abrt-dbus.c:498 +-#: ../src/dbus/abrt-dbus.c:560 ../src/dbus/abrt-dbus.c:625 +-#: ../src/dbus/abrt-dbus.c:815 ../src/dbus/abrt-configuration.c:618 ++#: ../src/dbus/abrt-dbus.c:284 ../src/dbus/abrt-dbus.c:497 ++#: ../src/dbus/abrt-dbus.c:559 ../src/dbus/abrt-dbus.c:624 ++#: ../src/dbus/abrt-dbus.c:814 ../src/dbus/abrt-configuration.c:618 + #: ../src/dbus/abrt-configuration.c:683 + #, c-format + msgid "Not Authorized" + msgstr "未授权" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:298 ++#: ../src/dbus/abrt-dbus.c:297 + msgid "Can't access the problem for modification" + msgstr "无法访问该问题进行修改" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:514 ++#: ../src/dbus/abrt-dbus.c:513 + msgid "Chowning directory failed. Check system logs for more details." + msgstr "变更目录属主失败。请检查系统日志以了解更多。" + +-#: ../src/dbus/abrt-dbus.c:635 ++#: ../src/dbus/abrt-dbus.c:634 + msgid "Can't access the problem for reading" + msgstr "无法访问该问题进行读取" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:690 ../src/dbus/abrt-dbus.c:755 +-#: ../src/dbus/abrt-dbus.c:911 ++#: ../src/dbus/abrt-dbus.c:689 ../src/dbus/abrt-dbus.c:754 ++#: ../src/dbus/abrt-dbus.c:910 + #, c-format + msgid "'%s' is not a valid element name" + msgstr "'%s' 不是一个有效的元素名" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:711 ++#: ../src/dbus/abrt-dbus.c:710 + #, c-format + msgid "Can't get size of '%s'" + msgstr "无法获取 '%s' 的大小" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:726 ++#: ../src/dbus/abrt-dbus.c:725 + msgid "No problem space left" + msgstr "没有留出问题空间" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:776 ++#: ../src/dbus/abrt-dbus.c:775 + #, c-format + msgid "Can't delete the element '%s' from the problem directory '%s'" + msgstr "无法从问题目录 '%s' 中删除元素 '%s'" + +-#: ../src/dbus/abrt-dbus.c:803 ++#: ../src/dbus/abrt-dbus.c:802 + msgid "Can't access the problem" + msgstr "无法访问该问题" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:983 ../src/dbus/abrt-configuration.c:983 ++#: ../src/dbus/abrt-dbus.c:986 ../src/dbus/abrt-configuration.c:983 + #, c-format + msgid "" + "The name '%s' has been lost, please check if other service owning the name " +@@ -496,18 +497,18 @@ msgid "" + msgstr "名称 '%s' 已丢失,请检查其它拥有该名称的服务是否未运行。\n" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:1010 ../src/dbus/abrt-configuration.c:1011 +-#: ../src/daemon/abrtd.c:499 ++#: ../src/dbus/abrt-dbus.c:1013 ../src/dbus/abrt-configuration.c:1011 ++#: ../src/daemon/abrtd.c:480 + msgid "Exit after NUM seconds of inactivity" + msgstr "闲置 NUM 秒后退出" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:1028 ../src/dbus/abrt-configuration.c:1021 ++#: ../src/dbus/abrt-dbus.c:1031 ../src/dbus/abrt-configuration.c:1021 + msgid "This program must be run as root." + msgstr "此程序必须以 root 权限运行。" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/daemon/abrtd.c:451 ++#: ../src/daemon/abrtd.c:432 + msgid "" + "The problem data are incomplete. This usually happens when a problem is " + "detected while computer is shutting down or user is logging out. In order to " +@@ -519,12 +520,12 @@ msgstr "" + "将不允许您提交该问题。如果您有时间想帮助开发者找出问题的根源,请直接与他们联系。" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/daemon/abrtd.c:497 ++#: ../src/daemon/abrtd.c:478 + msgid "Do not daemonize" + msgstr "不要在后台运行" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/daemon/abrtd.c:498 ++#: ../src/daemon/abrtd.c:479 + msgid "Log to syslog even with -d" + msgstr "即使加入 -d 选项也记录至 syslog" + +@@ -587,70 +588,70 @@ msgstr "以 MiB 计最大缓存尺寸。默认为" + + # translation auto-copied from project abrt, version master, document abrt + #: ../src/daemon/abrt-auto-reporting.c:200 +-#: ../src/daemon/abrt-auto-reporting.c:208 ++#: ../src/daemon/abrt-auto-reporting.c:213 + msgid "& [ " + msgstr "& [ " + +-#: ../src/daemon/abrt-auto-reporting.c:235 ++#: ../src/daemon/abrt-auto-reporting.c:240 + msgid "Turns the authentication off" + msgstr "关闭认证" + +-#: ../src/daemon/abrt-auto-reporting.c:236 ++#: ../src/daemon/abrt-auto-reporting.c:241 + msgid "Red Hat Support user name" + msgstr "Red Hat 支持用户名" + +-#: ../src/daemon/abrt-auto-reporting.c:237 ++#: ../src/daemon/abrt-auto-reporting.c:242 + msgid "Red Hat Support password, if not given, a prompt for it will be issued" + msgstr "Red Hat 支持密码,如果不输入密码则会有提示。" + +-#: ../src/daemon/abrt-auto-reporting.c:238 ++#: ../src/daemon/abrt-auto-reporting.c:243 + msgid "uReport SSL certificate paths or certificate type" + msgstr "uReport SSL 证书路径或者证书类型" + +-#: ../src/daemon/abrt-auto-reporting.c:254 ++#: ../src/daemon/abrt-auto-reporting.c:259 + msgid "You also need to specify --username for --password" + msgstr "您还需要为 --password 指定 --username" + +-#: ../src/daemon/abrt-auto-reporting.c:260 ++#: ../src/daemon/abrt-auto-reporting.c:265 + msgid "You can use either --username or --certificate" + msgstr "您可以使用 --username 或者 --certificate" + +-#: ../src/daemon/abrt-auto-reporting.c:266 ++#: ../src/daemon/abrt-auto-reporting.c:271 + msgid "You can use either --username or --anonymous" + msgstr "您可以使用 --username 或者 --anonymous" + +-#: ../src/daemon/abrt-auto-reporting.c:272 ++#: ../src/daemon/abrt-auto-reporting.c:277 + msgid "You can use either --anonymous or --certificate" + msgstr "您可以使用 --anonymous 或者 --certificate" + +-#: ../src/daemon/abrt-auto-reporting.c:279 ++#: ../src/daemon/abrt-auto-reporting.c:284 + msgid "Invalid number of arguments" + msgstr "无效参数值" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/daemon/abrt-auto-reporting.c:298 ++#: ../src/daemon/abrt-auto-reporting.c:303 + #, c-format + msgid "Unknown option value: '%s'\n" + msgstr "未知选项值:'%s'\n" + +-#: ../src/daemon/abrt-auto-reporting.c:338 ++#: ../src/daemon/abrt-auto-reporting.c:343 + msgid "Password:" + msgstr "密码:" + +-#: ../src/daemon/abrt-auto-reporting.c:341 ++#: ../src/daemon/abrt-auto-reporting.c:346 + msgid "Cannot continue without password\n" + msgstr "需要密码才可继续\n" + + #. Print only the part before ':' of a string like "username:password" +-#: ../src/daemon/abrt-auto-reporting.c:382 ++#: ../src/daemon/abrt-auto-reporting.c:387 + msgid "HTTP Authenticated auto reporting" + msgstr "HTTP 认证的自动报告" + +-#: ../src/daemon/abrt-auto-reporting.c:384 ++#: ../src/daemon/abrt-auto-reporting.c:389 + msgid "SSL Client Authenticated auto reporting" + msgstr "SSL 客户端认证的自动报告" + +-#: ../src/daemon/abrt-auto-reporting.c:386 ++#: ../src/daemon/abrt-auto-reporting.c:391 + msgid "anonymous auto reporting" + msgstr "匿名自动报告" + +@@ -831,7 +832,7 @@ msgid "Crash thread not found" + msgstr "崩溃线程" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/plugins/abrt-action-analyze-c.c:67 ++#: ../src/plugins/abrt-action-analyze-c.c:130 + msgid "" + "& [-v] -d DIR\n" + "\n" +@@ -2164,38 +2165,38 @@ msgstr "启用专用报告,使用 'abrt-cli -a COMMAND' 获取探测到的问 + msgid "See 'abrt-cli COMMAND --help' for more information" + msgstr "详情请查看 'abrt-cli COMMAND --help'" + +-#: ../src/cli/list.c:121 ++#: ../src/cli/list.c:124 + #, c-format + msgid "" + "%sRun 'abrt-cli report %s' for creating a case in Red Hat Customer Portal\n" + msgstr "%s 运行 'abrt-cli report %s' 在 Red Hat 客户门户网站中创建问题单\n" + +-#: ../src/cli/list.c:173 ++#: ../src/cli/list.c:176 + msgid "& list [options]" + msgstr "& list [选项]" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/cli/list.c:182 ++#: ../src/cli/list.c:185 + msgid "List only not-reported problems" + msgstr "只列出未报告的问题" + + # translation auto-copied from project abrt, version master, document abrt + #. deprecate -d option with --pretty=full +-#: ../src/cli/list.c:184 ../src/cli/list.c:237 ++#: ../src/cli/list.c:187 ../src/cli/list.c:240 + msgid "Show detailed report" + msgstr "显示详细报告" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/cli/list.c:185 ++#: ../src/cli/list.c:188 + msgid "List only the problems more recent than specified timestamp" + msgstr "仅列出比指定时间更晚的问题" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/cli/list.c:186 ++#: ../src/cli/list.c:189 + msgid "List only the problems older than specified timestamp" + msgstr "仅列出比指定时间戳更早的问题" + +-#: ../src/cli/list.c:212 ++#: ../src/cli/list.c:215 + #, c-format + msgid "" + "The Autoreporting feature is disabled. Please consider enabling it by " +@@ -2206,37 +2207,37 @@ msgstr "" + "作为有 root 特权的用户使用命令 'abrt-auto-reporting enabled'\n" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/cli/list.c:229 ++#: ../src/cli/list.c:232 + msgid "& info [options] DIR..." + msgstr "& info [选项] DIR..." + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/cli/list.c:238 ++#: ../src/cli/list.c:241 + msgid "Text larger than this will be shown abridged" + msgstr "超出此大小的文字会在显示时被删节" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/cli/list.c:258 ++#: ../src/cli/list.c:261 + #, c-format + msgid "No such problem directory '%s'" + msgstr "没有问题目录 '%s'" + +-#: ../src/cli/status.c:63 ++#: ../src/cli/status.c:66 + msgid "& status" + msgstr "& status" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/cli/status.c:71 ++#: ../src/cli/status.c:74 + msgid "Print only the problem count without any message" + msgstr "仅显示问题计数。" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/cli/status.c:72 ++#: ../src/cli/status.c:75 + msgid "Print only the problems more recent than specified timestamp" + msgstr "仅显示比指定时间更晚的问题。" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/cli/status.c:88 ++#: ../src/cli/status.c:91 + #, c-format + msgid "ABRT has detected %u problem(s). For more info run: abrt-cli list%s\n" + msgstr "ABRT 已检测到 '%u' 个问题。预了解详细信息请执行:abrt-cli list%s\n" +diff --git a/po/zh_TW.po b/po/zh_TW.po +index 75e83e6..e93a848 100644 +--- a/po/zh_TW.po ++++ b/po/zh_TW.po +@@ -6,13 +6,13 @@ + # Chester Cheng , 2012,2014 + # Jiří Moskovčák , 2011 + # Terry Chuang , 2014 +-# Chester Cheng , 2015. #zanata ++# Chester Cheng , 2015. #zanata + # Terry Chuang , 2015. #zanata + msgid "" + msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" + "Report-Msgid-Bugs-To: jmoskovc@redhat.com\n" +-"POT-Creation-Date: 2015-07-14 15:37+0200\n" ++"POT-Creation-Date: 2016-06-29 15:31+0200\n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +@@ -22,7 +22,7 @@ msgstr "" + "abrt/language/zh_TW/)\n" + "Language: zh-TW\n" + "Plural-Forms: nplurals=1; plural=0;\n" +-"X-Generator: Zanata 3.6.2\n" ++"X-Generator: Zanata 3.9.5\n" + + # translation auto-copied from project abrt, version master, document abrt + #: ../src/applet/abrt-applet.desktop.in.h:1 +@@ -371,7 +371,7 @@ msgid "Quit" + msgstr "退出" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/daemon/abrt-action-save-package-data.c:378 ++#: ../src/daemon/abrt-action-save-package-data.c:400 + msgid "" + "& [-v] [-c CONFFILE] -d DIR\n" + "\n" +@@ -381,9 +381,9 @@ msgstr "& [-v] [-c CONFFILE] -d DIR\n" + "查詢軟體包資料庫,並儲存軟體包與元件名稱" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/daemon/abrt-action-save-package-data.c:390 ++#: ../src/daemon/abrt-action-save-package-data.c:412 + #: ../src/plugins/abrt-action-analyze-backtrace.c:53 +-#: ../src/plugins/abrt-action-analyze-c.c:78 ++#: ../src/plugins/abrt-action-analyze-c.c:141 + #: ../src/plugins/abrt-action-analyze-oops.c:48 + #: ../src/plugins/abrt-action-analyze-xorg.c:84 + #: ../src/plugins/abrt-action-analyze-python.c:47 +@@ -393,13 +393,13 @@ msgid "Problem directory" + msgstr "問題目錄" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/daemon/abrt-action-save-package-data.c:391 ++#: ../src/daemon/abrt-action-save-package-data.c:413 + msgid "Configuration file" + msgstr "組態檔" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/daemon/abrt-server.c:792 ../src/dbus/abrt-dbus.c:1001 +-#: ../src/dbus/abrt-configuration.c:1002 ../src/daemon/abrtd.c:484 ++#: ../src/daemon/abrt-server.c:792 ../src/dbus/abrt-dbus.c:1004 ++#: ../src/dbus/abrt-configuration.c:1002 ../src/daemon/abrtd.c:465 + msgid "& [options]" + msgstr "& [選項]" + +@@ -416,81 +416,81 @@ msgid "Log to syslog" + msgstr "紀錄至 syslog" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/daemon/abrt-server.c:805 ../src/daemon/abrtd.c:500 ++#: ../src/daemon/abrt-server.c:805 ../src/daemon/abrtd.c:481 + msgid "Add program names to log" + msgstr "加入程式名稱至紀錄檔" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:132 ++#: ../src/dbus/abrt-dbus.c:131 + msgid "Unknown error" + msgstr "未知錯誤" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:221 ++#: ../src/dbus/abrt-dbus.c:220 + #, c-format + msgid "'%s' is not a valid problem directory" + msgstr "「%s」不是有效的問題目錄" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:256 ++#: ../src/dbus/abrt-dbus.c:255 + #, c-format + msgid "'%s' element can't be modified" + msgstr "無法修改「%s」元素" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:285 ../src/dbus/abrt-dbus.c:498 +-#: ../src/dbus/abrt-dbus.c:560 ../src/dbus/abrt-dbus.c:625 +-#: ../src/dbus/abrt-dbus.c:815 ../src/dbus/abrt-configuration.c:618 ++#: ../src/dbus/abrt-dbus.c:284 ../src/dbus/abrt-dbus.c:497 ++#: ../src/dbus/abrt-dbus.c:559 ../src/dbus/abrt-dbus.c:624 ++#: ../src/dbus/abrt-dbus.c:814 ../src/dbus/abrt-configuration.c:618 + #: ../src/dbus/abrt-configuration.c:683 + #, c-format + msgid "Not Authorized" + msgstr "未授權" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:298 ++#: ../src/dbus/abrt-dbus.c:297 + msgid "Can't access the problem for modification" + msgstr "無法存取問題以修改" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:514 ++#: ../src/dbus/abrt-dbus.c:513 + msgid "Chowning directory failed. Check system logs for more details." + msgstr "目錄擁有者變更失敗。請檢查紀錄檔瞭解更多細節。" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:635 ++#: ../src/dbus/abrt-dbus.c:634 + msgid "Can't access the problem for reading" + msgstr "無法存取問題以閱讀" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:690 ../src/dbus/abrt-dbus.c:755 +-#: ../src/dbus/abrt-dbus.c:911 ++#: ../src/dbus/abrt-dbus.c:689 ../src/dbus/abrt-dbus.c:754 ++#: ../src/dbus/abrt-dbus.c:910 + #, c-format + msgid "'%s' is not a valid element name" + msgstr "「%s」不是有效的元素名稱" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:711 ++#: ../src/dbus/abrt-dbus.c:710 + #, c-format + msgid "Can't get size of '%s'" + msgstr "無法取得「%s」的大小" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:726 ++#: ../src/dbus/abrt-dbus.c:725 + msgid "No problem space left" + msgstr "無剩餘問題空間" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:776 ++#: ../src/dbus/abrt-dbus.c:775 + #, c-format + msgid "Can't delete the element '%s' from the problem directory '%s'" + msgstr "無法從問題目錄「%2$s」刪除「%1$s」元素" + +-#: ../src/dbus/abrt-dbus.c:803 ++#: ../src/dbus/abrt-dbus.c:802 + msgid "Can't access the problem" + msgstr "無法存取問題" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:983 ../src/dbus/abrt-configuration.c:983 ++#: ../src/dbus/abrt-dbus.c:986 ../src/dbus/abrt-configuration.c:983 + #, c-format + msgid "" + "The name '%s' has been lost, please check if other service owning the name " +@@ -498,18 +498,18 @@ msgid "" + msgstr "「%s」名稱已遺失,請確認其他擁有該名稱的服務並未執行中。\n" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:1010 ../src/dbus/abrt-configuration.c:1011 +-#: ../src/daemon/abrtd.c:499 ++#: ../src/dbus/abrt-dbus.c:1013 ../src/dbus/abrt-configuration.c:1011 ++#: ../src/daemon/abrtd.c:480 + msgid "Exit after NUM seconds of inactivity" + msgstr "在停止使用 NUM 秒後離開" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/dbus/abrt-dbus.c:1028 ../src/dbus/abrt-configuration.c:1021 ++#: ../src/dbus/abrt-dbus.c:1031 ../src/dbus/abrt-configuration.c:1021 + msgid "This program must be run as root." + msgstr "此程式必須以 root 身份執行。" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/daemon/abrtd.c:451 ++#: ../src/daemon/abrtd.c:432 + msgid "" + "The problem data are incomplete. This usually happens when a problem is " + "detected while computer is shutting down or user is logging out. In order to " +@@ -521,12 +521,12 @@ msgstr "" + "不會允許您提交此種問題報告。若您有時間,且也想幫助開發者來處理此問題,請直接聯繫開發者。" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/daemon/abrtd.c:497 ++#: ../src/daemon/abrtd.c:478 + msgid "Do not daemonize" + msgstr "不要在幕後運行" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/daemon/abrtd.c:498 ++#: ../src/daemon/abrtd.c:479 + msgid "Log to syslog even with -d" + msgstr "即使加上 -d 參數也紀錄至 syslog" + +@@ -589,69 +589,69 @@ msgstr "最大快取大小,單位為 MiB。預設為 " + + # translation auto-copied from project abrt, version master, document abrt + #: ../src/daemon/abrt-auto-reporting.c:200 +-#: ../src/daemon/abrt-auto-reporting.c:208 ++#: ../src/daemon/abrt-auto-reporting.c:213 + msgid "& [ " + msgstr "& [ " + +-#: ../src/daemon/abrt-auto-reporting.c:235 ++#: ../src/daemon/abrt-auto-reporting.c:240 + msgid "Turns the authentication off" + msgstr "關閉身份認證" + +-#: ../src/daemon/abrt-auto-reporting.c:236 ++#: ../src/daemon/abrt-auto-reporting.c:241 + msgid "Red Hat Support user name" + msgstr "Red Hat Support 使用者名稱" + +-#: ../src/daemon/abrt-auto-reporting.c:237 ++#: ../src/daemon/abrt-auto-reporting.c:242 + msgid "Red Hat Support password, if not given, a prompt for it will be issued" + msgstr "Red Hat Support 密碼;如果未提供密碼,將會發出提示" + +-#: ../src/daemon/abrt-auto-reporting.c:238 ++#: ../src/daemon/abrt-auto-reporting.c:243 + msgid "uReport SSL certificate paths or certificate type" + msgstr "uReport SSL 憑證路徑或憑證類型" + +-#: ../src/daemon/abrt-auto-reporting.c:254 ++#: ../src/daemon/abrt-auto-reporting.c:259 + msgid "You also need to specify --username for --password" + msgstr "使用 --password 時必須指定 --username" + +-#: ../src/daemon/abrt-auto-reporting.c:260 ++#: ../src/daemon/abrt-auto-reporting.c:265 + msgid "You can use either --username or --certificate" + msgstr "您可以使用 --username 或 --certificate" + +-#: ../src/daemon/abrt-auto-reporting.c:266 ++#: ../src/daemon/abrt-auto-reporting.c:271 + msgid "You can use either --username or --anonymous" + msgstr "您可以使用 --username 或 --anonymous" + +-#: ../src/daemon/abrt-auto-reporting.c:272 ++#: ../src/daemon/abrt-auto-reporting.c:277 + msgid "You can use either --anonymous or --certificate" + msgstr "您可以使用 --anonymous 或 --certificate" + +-#: ../src/daemon/abrt-auto-reporting.c:279 ++#: ../src/daemon/abrt-auto-reporting.c:284 + msgid "Invalid number of arguments" + msgstr "引數數量無效" + +-#: ../src/daemon/abrt-auto-reporting.c:298 ++#: ../src/daemon/abrt-auto-reporting.c:303 + #, c-format + msgid "Unknown option value: '%s'\n" + msgstr "選項值不明:「%s」\n" + +-#: ../src/daemon/abrt-auto-reporting.c:338 ++#: ../src/daemon/abrt-auto-reporting.c:343 + msgid "Password:" + msgstr "密碼:" + +-#: ../src/daemon/abrt-auto-reporting.c:341 ++#: ../src/daemon/abrt-auto-reporting.c:346 + msgid "Cannot continue without password\n" + msgstr "沒有密碼無法繼續\n" + + #. Print only the part before ':' of a string like "username:password" +-#: ../src/daemon/abrt-auto-reporting.c:382 ++#: ../src/daemon/abrt-auto-reporting.c:387 + msgid "HTTP Authenticated auto reporting" + msgstr "HTTP 身份認證自動回報" + +-#: ../src/daemon/abrt-auto-reporting.c:384 ++#: ../src/daemon/abrt-auto-reporting.c:389 + msgid "SSL Client Authenticated auto reporting" + msgstr "SSL 用戶端身份憑證自動回報" + +-#: ../src/daemon/abrt-auto-reporting.c:386 ++#: ../src/daemon/abrt-auto-reporting.c:391 + msgid "anonymous auto reporting" + msgstr "匿名自動回報" + +@@ -831,7 +831,7 @@ msgid "Crash thread not found" + msgstr "沒有找到崩潰執行序" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/plugins/abrt-action-analyze-c.c:67 ++#: ../src/plugins/abrt-action-analyze-c.c:130 + msgid "" + "& [-v] -d DIR\n" + "\n" +@@ -2165,38 +2165,38 @@ msgstr "已啟用私密報告,請使用 'abrt-cli -a COMMAND' 以取得偵測 + msgid "See 'abrt-cli COMMAND --help' for more information" + msgstr "請見 'abrt-cli COMMAND --help' 以瞭解更多資訊" + +-#: ../src/cli/list.c:121 ++#: ../src/cli/list.c:124 + #, c-format + msgid "" + "%sRun 'abrt-cli report %s' for creating a case in Red Hat Customer Portal\n" + msgstr "%s執行 'abrt-cli report %s' 以在 Red Hat 客戶入口網站中建立案例\n" + +-#: ../src/cli/list.c:173 ++#: ../src/cli/list.c:176 + msgid "& list [options]" + msgstr "& list [options]" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/cli/list.c:182 ++#: ../src/cli/list.c:185 + msgid "List only not-reported problems" + msgstr "僅列出尚未回報的問題" + + # translation auto-copied from project abrt, version master, document abrt + #. deprecate -d option with --pretty=full +-#: ../src/cli/list.c:184 ../src/cli/list.c:237 ++#: ../src/cli/list.c:187 ../src/cli/list.c:240 + msgid "Show detailed report" + msgstr "顯示詳細的回報" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/cli/list.c:185 ++#: ../src/cli/list.c:188 + msgid "List only the problems more recent than specified timestamp" + msgstr "僅列出比指定的時間戳記更近期的問題" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/cli/list.c:186 ++#: ../src/cli/list.c:189 + msgid "List only the problems older than specified timestamp" + msgstr "僅列出比指定的時間戳記更之前的問題" + +-#: ../src/cli/list.c:212 ++#: ../src/cli/list.c:215 + #, c-format + msgid "" + "The Autoreporting feature is disabled. Please consider enabling it by " +@@ -2207,37 +2207,37 @@ msgstr "" + "身份,透過「abrt-auto-reporting enabled」 來啟用它\n" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/cli/list.c:229 ++#: ../src/cli/list.c:232 + msgid "& info [options] DIR..." + msgstr "& info [選項] DIR..." + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/cli/list.c:238 ++#: ../src/cli/list.c:241 + msgid "Text larger than this will be shown abridged" + msgstr "大於此的文字會刪減顯示" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/cli/list.c:258 ++#: ../src/cli/list.c:261 + #, c-format + msgid "No such problem directory '%s'" + msgstr "沒有這個問題目錄「%s」" + +-#: ../src/cli/status.c:63 ++#: ../src/cli/status.c:66 + msgid "& status" + msgstr "& status" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/cli/status.c:71 ++#: ../src/cli/status.c:74 + msgid "Print only the problem count without any message" + msgstr "僅列印問題數目而不帶任何訊息" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/cli/status.c:72 ++#: ../src/cli/status.c:75 + msgid "Print only the problems more recent than specified timestamp" + msgstr "僅列印比指定的時間戳記更近期的問題" + + # translation auto-copied from project abrt, version master, document abrt +-#: ../src/cli/status.c:88 ++#: ../src/cli/status.c:91 + #, c-format + msgid "ABRT has detected %u problem(s). For more info run: abrt-cli list%s\n" + msgstr "ABRT 已偵測到 %u 項問題。若要取得更多資訊,請執行:abrt-cli list%s\n" +-- +1.8.3.1 + diff --git a/SOURCES/1000-event-don-t-run-the-reporter-bugzilla-h-on-RHEL-and-.patch b/SOURCES/1000-event-don-t-run-the-reporter-bugzilla-h-on-RHEL-and-.patch deleted file mode 100644 index 2e3d91a..0000000 --- a/SOURCES/1000-event-don-t-run-the-reporter-bugzilla-h-on-RHEL-and-.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 0a807593f67427a94269a5521b93ca153ef58d69 Mon Sep 17 00:00:00 2001 -From: Matej Habrnal -Date: Thu, 22 Jan 2015 02:23:21 +0100 -Subject: [PATCH] event: don't run the 'reporter-bugzilla -h' on RHEL and - CentOS - -Running the 'reporter-bugzilla -h' makes sense only on Fedora because of bodhi. - -Signed-off-by: Matej Habrnal ---- - src/plugins/ccpp_event.conf | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/plugins/ccpp_event.conf b/src/plugins/ccpp_event.conf -index f4f3828..174f491 100644 ---- a/src/plugins/ccpp_event.conf -+++ b/src/plugins/ccpp_event.conf -@@ -71,7 +71,7 @@ EVENT=analyze_LocalGDB analyzer=CCpp - # Run GDB plugin to see if crash looks exploitable - abrt-action-analyze-vulnerability - # Run GDB to genereate backtrace -- abrt-action-analyze-ccpp-local --without-bodhi -+ abrt-action-analyze-ccpp-local --without-bz - - - # Bugzilla requires nonempty duphash --- -1.8.3.1 - diff --git a/SOURCES/1002-plugin-set-URL-to-retrace-server.patch b/SOURCES/1002-plugin-set-URL-to-retrace-server.patch deleted file mode 100644 index d7d513a..0000000 --- a/SOURCES/1002-plugin-set-URL-to-retrace-server.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 3eba59afa532d8e8003982bb51f35fd211d3ea1c Mon Sep 17 00:00:00 2001 -From: Matej Habrnal -Date: Fri, 30 Jan 2015 17:52:25 +0100 -Subject: [PATCH] plugin: set URL to retrace server - -Changed default retrace server URL from localhost to retrace.fedoraproject.org. - -Signed-off-by: Matej Habrnal ---- - src/plugins/analyze_CCpp.xml.in | 2 +- - src/plugins/analyze_RetraceServer.xml.in | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/plugins/analyze_CCpp.xml.in b/src/plugins/analyze_CCpp.xml.in -index 6f02692..a7ce4dd 100644 ---- a/src/plugins/analyze_CCpp.xml.in -+++ b/src/plugins/analyze_CCpp.xml.in -@@ -26,7 +26,7 @@ - - -diff --git a/src/plugins/analyze_RetraceServer.xml.in b/src/plugins/analyze_RetraceServer.xml.in -index cf1d25a..e437cac 100644 ---- a/src/plugins/analyze_RetraceServer.xml.in -+++ b/src/plugins/analyze_RetraceServer.xml.in -@@ -12,7 +12,7 @@ - - --- -1.8.3.1 - diff --git a/SOURCES/1004-turn-sosreport-off.patch b/SOURCES/1004-turn-sosreport-off.patch deleted file mode 100644 index 7e98ce5..0000000 --- a/SOURCES/1004-turn-sosreport-off.patch +++ /dev/null @@ -1,25 +0,0 @@ -From b2025098a7d3b7a361e3e23775dcebf70cf15d55 Mon Sep 17 00:00:00 2001 -From: Jakub Filak -Date: Thu, 20 Nov 2014 11:24:39 +0100 -Subject: [PATCH] turn sosreport off - ---- - src/daemon/abrt_event.conf | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/daemon/abrt_event.conf b/src/daemon/abrt_event.conf -index 76d544c..d90bf03 100644 ---- a/src/daemon/abrt_event.conf -+++ b/src/daemon/abrt_event.conf -@@ -67,7 +67,7 @@ EVENT=post-create runlevel= - # Example: if you want to save sosreport immediately at the moment of a crash: - # (alternatively, you can add similar command to EVENT=analyze_foo's, - # if you would rather perform this collection later): --EVENT=post-create -+#EVENT=post-create - nice sosreport --tmp-dir "$DUMP_DIR" --batch \ - --only=anaconda --only=boot --only=devicemapper \ - --only=filesys --only=hardware --only=kernel --only=libraries \ --- -1.8.3.1 - diff --git a/SOURCES/1005-cli-list-revert-patch-7966e5737e8d3af43b1ecdd6a82323.patch b/SOURCES/1005-cli-list-revert-patch-7966e5737e8d3af43b1ecdd6a82323.patch deleted file mode 100644 index 62833f1..0000000 --- a/SOURCES/1005-cli-list-revert-patch-7966e5737e8d3af43b1ecdd6a82323.patch +++ /dev/null @@ -1,115 +0,0 @@ -From c56cc1aac6734e0b2577ae397454862c8a940855 Mon Sep 17 00:00:00 2001 -From: Matej Habrnal -Date: Mon, 30 Nov 2015 17:13:43 +0100 -Subject: [PATCH] cli list: revert patch - '7966e5737e8d3af43b1ecdd6a823234b8d25931d' - -This patch cannot be in CentOS7 because is related only to RHEL. - -Removing the patch here because previous patches depends on this patch and -cannot be applied without conflict. - -Signed-off-by: Matej Habrnal ---- - configure.ac | 2 -- - src/cli/Makefile.am | 3 +-- - src/cli/list.c | 49 ------------------------------------------------- - 3 files changed, 1 insertion(+), 53 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 330dd9c..9a369c7 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -139,7 +139,6 @@ PLUGINS_CONF_DIR='${sysconfdir}/${PACKAGE_NAME}/plugins' - DEFAULT_PLUGINS_CONF_DIR='${datadir}/${PACKAGE_NAME}/conf.d/plugins' - EVENTS_DIR='${datadir}/libreport/events' - EVENTS_CONF_DIR='${sysconfdir}/libreport/events.d' --WORKFLOWS_DIR='${datadir}/libreport/workflows' - ENABLE_SOCKET_OR_DBUS='-DENABLE_DBUS=1' - DEFAULT_DUMP_DIR_MODE=$($PKG_CONFIG --variable=dd_mode libreport) - LIBREPORT_PLUGINS_CONF_DIR=$($PKG_CONFIG --variable=plugins_conf_dir libreport) -@@ -250,7 +249,6 @@ AC_SUBST(VAR_RUN) - AC_SUBST(PLUGINS_CONF_DIR) - AC_SUBST(DEFAULT_PLUGINS_CONF_DIR) - AC_SUBST(EVENTS_CONF_DIR) --AC_SUBST(WORKFLOWS_DIR) - AC_SUBST(EVENTS_DIR) - AC_SUBST(DEFAULT_DUMP_LOCATION) - AC_SUBST(DEFAULT_DUMP_DIR_MODE) -diff --git a/src/cli/Makefile.am b/src/cli/Makefile.am -index a7c76ef..92dc20a 100644 ---- a/src/cli/Makefile.am -+++ b/src/cli/Makefile.am -@@ -17,8 +17,7 @@ abrt_cli_CFLAGS = \ - -I$(srcdir)/../include \ - -I$(srcdir)/../lib \ - $(LIBREPORT_CFLAGS) \ -- $(POLKIT_AGENT_CFLAGS) \ -- -DWORKFLOWS_DIR=\"${WORKFLOWS_DIR}\" -+ $(POLKIT_AGENT_CFLAGS) - - if SUGGEST_AUTOREPORTING - abrt_cli_CFLAGS += -DSUGGEST_AUTOREPORTING=1 -diff --git a/src/cli/list.c b/src/cli/list.c -index e688d2f..d069695 100644 ---- a/src/cli/list.c -+++ b/src/cli/list.c -@@ -77,55 +77,6 @@ static void print_crash(problem_data_t *problem_data, int detailed, int text_siz - /*names_to_skip:*/ NULL, - /*max_text_size:*/ text_size, - MAKEDESC_SHOW_ONLY_LIST | MAKEDESC_SHOW_URLS); -- -- /* -- * If the problem is reportable and has not yet been reported into RHTS -- * and there is at least one applicable Workflow which contains -- * 'report_RHTSupport' event, then append a short message informing -- * user that he can create a new case in Red Hat Customer Portal. -- */ -- const char *const not_reportable = problem_data_get_content_or_NULL(problem_data, FILENAME_NOT_REPORTABLE); -- const char *const reported_to = not_reportable ? NULL : problem_data_get_content_or_NULL(problem_data, FILENAME_REPORTED_TO); -- report_result_t *const report = !reported_to ? NULL : find_in_reported_to_data(reported_to, "RHTSupport"); -- -- if (!not_reportable && !report) -- { -- /* The lines below should be replaced by something simpler, I'd -- * like to see: -- * GHashTable *possible_worfklows = load_applicable_workflows_for_dump(); -- * -- * However, this feature (rhbz#1055565) is intended for RHEL only -- * and I'm not sure whether it's worth to file another bug against -- * libreport and try to improve libreport public API. -- */ -- const char *const dump_dir_name = problem_data_get_content_or_NULL(problem_data, CD_DUMPDIR); -- GList *const wf_names = list_possible_events_problem_data_glist(problem_data, dump_dir_name, "workflow"); -- GHashTable *const possible_workflows = load_workflow_config_data_from_list(wf_names, WORKFLOWS_DIR); -- g_list_free_full(wf_names, free); -- -- int event_found = 0; -- -- GHashTableIter iter; -- gpointer key = NULL; -- gpointer value = NULL; -- -- g_hash_table_iter_init(&iter, possible_workflows); -- while (!event_found && g_hash_table_iter_next(&iter, &key, &value)) -- { -- GList *const event_names = wf_get_event_names((workflow_t *)value); -- event_found = !!g_list_find_custom(event_names, "report_RHTSupport", (GCompareFunc)g_strcmp0); -- g_list_free_full(event_names, free); -- } -- -- g_hash_table_destroy(possible_workflows); -- -- if (event_found) -- { -- char *tmp = xasprintf(_("%sRun 'abrt-cli report %s' for creating a case in Red Hat Customer Portal\n"), desc, dump_dir_name); -- free(desc); -- desc = tmp; -- } -- } - } - fputs(desc, stdout); - free(desc); --- -1.8.3.1 - diff --git a/SPECS/abrt.spec b/SPECS/abrt.spec index fd28e85..0c42919 100644 --- a/SPECS/abrt.spec +++ b/SPECS/abrt.spec @@ -27,13 +27,13 @@ %define desktopvendor fedora %endif -%define libreport_ver 2.1.11-28 +%define libreport_ver 2.1.11-34 %define satyr_ver 0.13-10 Summary: Automatic bug detection and reporting tool Name: abrt Version: 2.1.11 -Release: 36%{?dist} +Release: 45%{?dist} License: GPLv2+ Group: Applications/System URL: https://fedorahosted.org/abrt/ @@ -54,11 +54,6 @@ Patch12: 0012-configui-show-Close-button-in-the-dialog.patch Patch13: 0013-applet-do-not-say-the-report-is-anonymous-when-urepo.patch #Patch14: 0014-spec-abrt-cli-requires-a-pkg-providing-workflows.patch #Patch15: 0015-testsuite-encourage-users-to-create-a-case-in-RHTS.patch - -# This patch is removed by patch -# 1005-cli-list-revert-patch-7966e5737e8d3af43b1ecdd6a82323.patch -# listed below. Without Patch16 is not possible to apply following patches -# without conflict Patch16: 0016-cli-list-show-a-hint-about-creating-a-case-in-RHTS.patch Patch17: 0017-harvest-vmcore-properly-handle-inaccessible-dir-erro.patch Patch18: 0018-don-t-break-the-event-run-by-failures-of-abrt-action.patch @@ -122,8 +117,6 @@ Patch75: 0075-Translation-updates.patch Patch76: 0076-Revert-gdb-disable-loading-of-auto-loaded-files.patch Patch77: 0077-gdb-make-gdb-aware-of-the-abrt-s-debuginfo-dir.patch #Patch78: 0078-spec-update-the-required-gdb-version.patch -# will be removed by -# 1005-cli-list-revert-patch-7966e5737e8d3af43b1ecdd6a82323.patch Patch79: 0079-cli-mark-the-suggestion-text-for-translation.patch Patch80: 0080-auto-reporting-add-options-to-specify-auth-type.patch #Patch81: 0081-testsuite-abrt-auto-reporting-uReport-authentication.patch @@ -250,15 +243,86 @@ Patch183: 0183-abrtd-switch-owner-of-the-dump-location-to-root.patch #Patch185: 0185-testsuite-ccpp-plugin-debug.patch #Patch186: 0186-testsuite-a-a-i-debuginfo-the-set-uid-wrapper-uses-s.patch #Patch187: 0187-testsuite-check-file-system-attributes-of-the-dump-l.patch - -Patch1000: 1000-event-don-t-run-the-reporter-bugzilla-h-on-RHEL-and-.patch -#Patch1001: 1001-spec-added-dependency-to-libreport-centos.patch -Patch1002: 1002-plugin-set-URL-to-retrace-server.patch -#Patch1003: 1003-spec-add-dependenci-on-abrt-retrace-client.patch -Patch1004: 1004-turn-sosreport-off.patch -Patch1005: 1005-cli-list-revert-patch-7966e5737e8d3af43b1ecdd6a82323.patch -#Patch1006: 1006-spec-disable-authenticated-autoreporting.patch # git format-patch 2.1.11-35.el7 -N --start-number 188 --topo-order +#Patch188: 0188-testsuite-port-abrtd-directories-to-journald.patch +#Patch189: 0189-testsuite-ccpp-plugin-debug-fix-logs-bundling.patch +#Patch190: 0190-testsuite-ccpp-plugin-debug-normalize-ABRT_BINARY_CO.patch +#Patch191: 0191-testsuite-search-in-journal-logs-for-the-current-boo.patch +#Patch192: 0192-testsuite-add-test-for-reporter-upload-SSH-keys.patch +#Patch193: 0193-testsuite-add-test-for-reporter-upload-passwd-asking.patch +#Patch194: 0194-testsuite-test-abrt-hook-ccpp-selinux-awareness.patch +#Patch195: 0195-testsuite-abrtd-directories-normalize-ABRT_CONF_DUMP.patch +#Patch196: 0196-testsuite-rhts-test-fix-typo-and-URL-change-in-respo.patch +#Patch197: 0197-testsuite-event-configuration-add-missing-xml-files.patch +#Patch198: 0198-translations-update-zanata-configuration.patch +#Patch199: 0199-testsuite-add-ureport-attachments-test.patch +#Patch200: 0200-testsuite-reporter-upload-appending-results-to-repor.patch +#Patch201: 0201-testsuite-remove-ureport-attachments-from-aux.patch +#Patch202: 0202-testsuite-add-concurrent-processing-test-for-abrtd.patch +#Patch203: 0203-testsuite-reporter-upload-ssh-keys-fixes-to-work-on-.patch +#Patch204: 0204-testsuite-Bugzilla-private-bugs.patch +#Patch205: 0205-testsuite-reply-with-invalid-data-for-unexpected-que.patch +Patch206: 0206-augeas-augtool-save-files-etc-abrt-plugins-oops.conf.patch +Patch207: 0207-vmcore-catch-IOErrors-and-OSErrors.patch +#Patch208: 0208-testsuite-add-a-per-test-timeout-for-15m.patch +Patch209: 0209-lib-hooklib-make-signal_is_fatal-public.patch +Patch210: 0210-ccpp-add-IgnoredPath-option.patch +#Patch211: 0211-testsuite-add-test-for-abrt-hook-ccpp-IgnoredPath-op.patch +#Patch212: 0212-testsuite-add-test-for-AllowedUsers-and-AllowedGroup.patch +Patch213: 0213-ccpp-add-AllowedUsers-and-AllowedGroups-feature.patch +Patch214: 0214-Save-Vendor-and-GPG-Fingerprint.patch +#Patch215: 0215-testsuite-add-tests-for-pgk_vendor-and-pkg_fingerpri.patch +#Patch216: 0216-testsuite-add-rhtsupport-discourage-tests.patch +#Patch217: 0217-testsuite-reporter-rhtsupport-should-attach-whole-du.patch +#Patch218: 0218-testsuite-use-problem-report-API-to-create-descripti.patch +#Patch219: 0219-testsuite-test-for-reporter-mailx-email-formatting.patch +#Patch220: 0220-testsuite-mailx-does-not-create-dead.letter-in-failu.patch +Patch221: 0221-lib-prevent-from-creating-non-root-sub-dirs-in-dump-.patch +# git format-patch 2.1.11-36.el7 -N --start-number 222 --topo-order +Patch222: 0222-ccpp-exit-with-error-if-cannot-get-executable.patch +# git format-patch 2.1.11-37.el7 -N --start-number 223 --topo-order +Patch223: 0223-ccpp-add-xfunc_die-if-cannot-get-executable.patch +# git format-patch 2.1.11-38.el7 -N --start-number 224 --topo-order +#Patch224: 0224-testsuite-augeas-set-DropNotReportableOopses-test.patch +Patch225: 0225-vmcore-generate-reason-file-in-all-cases.patch +#Patch226: 0226-testsuite-fix-the-kernel-vmcore-harvest-test.patch +Patch227: 0227-console-notifications-add-timeout.patch +Patch228: 0228-Fix-memory-leaks-in-abrt-dbus.patch +Patch229: 0229-python-fix-check-for-absolute-path.patch +#Patch230: 0230-testsuite-add-test-for-RequireAbsolutePath-option.patch +# git format-patch 2.1.11-39.el7 -N --start-number 231 --topo-order +#Patch231: 0231-testsuite-add-test-which-tests-log-messages-of-ingor.patch +Patch232: 0232-ccpp-unify-log-message-of-ignored-crashes.patch +Patch233: 0233-abrt-hook-ccpp-save-get_fsuid-return-values-in-int-v.patch +# git format-patch 2.1.11-40.el7 -N --start-number 234 --topo-order +#Patch234: 0234-testsuite-fix-ccpp-plugin-debug-test.patch +#Patch235: 0235-testsuite-mailx-reporting-hardcode-locale-and-timezo.patch +#Patch236: 0236-testsuite-rhts-test-relax-a-grep-pattern-a-bit.patch +#Patch237: 0237-testsuite-mailx-reporting-force-creating-symlink.patch +Patch238: 0238-vmcore-fix-finding-partitions-by-UUID-and-LABEL.patch +#Patch239: 0239-spec-add-utils-linux-to-vmcore-s-Require.patch +Patch240: 0240-vmcore-use-findmnt-to-get-mountpoint.patch +# git format-patch 2.1.11-41.el7 -N --start-number 241 --topo-order +#Patch241: 0241-testsuite-do-not-exit-mailx-notify-event-with-1.patch +#Patch242: 0242-testsuite-add-prepare-to-cli-authentication-test.patch +#Patch243: 0243-testsuite-libreport-plugin-mantisbt-is-not-installed.patch +#Patch244: 0244-testsuite-use-crashing-binary-from-signed-package.patch +Patch245: 0245-daemon-trigger-dump-location-cleanup-after-detection.patch +Patch246: 0246-handle-event-stop-creating-post-create-lock.patch +# git format-patch 2.1.11-42.el7 -N --start-number 247 --topo-order +#Patch247: 0247-testsuite-check-fingerprint-only-if-a-kernel-is-sign.patch +#Patch248: 0248-testsuite-fix-reporter-upload-ssh-keys-test.patch +#Patch249: 0249-testsuite-ccpp-plugin-hook-ignoring-fix-typo.patch +Patch250: 0250-lib-check_recent_crash_file-do-not-produce-error_msg.patch +#Patch251: 0251-testsuite-do-not-die-if-crash-is-not-generated.patch +# git format-patch 2.1.11-43.el7 -N --start-number 252 --topo-order +#Patch252: 0252-testsuite-reporter-rhtsupport-no-longer-uses-checks-.patch +#Patch253: 0253-testsuite-puts-NULL-didn-t-cause-segfault-on-s390x.patch +Patch254: 0254-daemon-send-base-names-from-abrt-server-to-abrtd.patch +# git format-patch 2.1.11-44.el7 -N --start-number 255 --topo-order +#Patch255: 0255-testsuite-make-dumpdir_completedness-test-runnable-o.patch +Patch256: 0256-Translation-updates.patch +# git format-patch 2.1.11-44.el7 -N --start-number 255 --topo-order # git is need for '%%autosetup -S git' which automatically applies all the @@ -371,8 +435,10 @@ Group: System Environment/Libraries Requires: cpio Requires: gdb >= 7.6.1-63 Requires: elfutils +%if 0%{!?rhel:1} # abrt-action-perform-ccpp-analysis wants to run analyze_RetraceServer: Requires: %{name}-retrace-client +%endif Requires: %{name} = %{version}-%{release} Requires: abrt-libs = %{version}-%{release} Requires: libreport-python @@ -434,6 +500,7 @@ Requires: abrt-addon-kerneloops Requires: kexec-tools Requires: abrt-python = %{version}-%{release} Requires: python-augeas +Requires: util-linux %description addon-vmcore This package contains plugin for collecting kernel crash information from @@ -486,13 +553,8 @@ Requires: abrt-addon-ccpp Requires: abrt-addon-python Requires: abrt-addon-xorg %if 0%{?rhel} -%if 0%{?centos_ver} -Requires: libreport-centos >= %{libreport_ver} -Requires: libreport-plugin-mantisbt >= %{libreport_ver} -%else Requires: libreport-rhel >= %{libreport_ver} Requires: libreport-plugin-rhtsupport >= %{libreport_ver} -%endif %else Requires: abrt-retrace-client Requires: libreport-plugin-bugzilla >= %{libreport_ver} @@ -525,13 +587,8 @@ Requires: elfutils Requires: abrt-gui Requires: gnome-abrt %if 0%{?rhel} -%if 0%{?centos_ver} -Requires: libreport-centos >= %{libreport_ver} -Requires: libreport-plugin-mantisbt >= %{libreport_ver} -%else Requires: libreport-rhel >= %{libreport_ver} Requires: libreport-plugin-rhtsupport >= %{libreport_ver} -%endif %else Requires: abrt-retrace-client Requires: libreport-plugin-bugzilla >= %{libreport_ver} @@ -611,7 +668,8 @@ CFLAGS="%{optflags} -Werror" %configure --enable-doxygen-docs --disable-silent-r --enable-native-unwinder \ %endif --enable-dump-time-unwind \ - --enable-suggest-autoreporting + --enable-suggest-autoreporting \ + --enable-authenticated-autoreporting make %{?_smp_mflags} %install @@ -1087,18 +1145,55 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %config(noreplace) %{_sysconfdir}/profile.d/abrt-console-notification.sh %changelog -* Mon Nov 30 2015 Matej Habrnal - 2.1.11-36.el7.centos -- add abrt patches related to CentOS from https://github.com/abrt/abrt/tree/centos7 -- disabled authenticated autoreporting - -* Mon Nov 23 2015 CentOS Sources - 2.1.11-35.el7.centos -- Drop RHTS hint -- Change by David Mansfield -- Per http://bugs.centos.org/view.php?id=7192 -- Remove cli suggestion text patch -- set URL to retrace server -- update to not run sosreport -- Per http://bugs.centos.org/view.php?id=7913 +* Thu Sep 1 2016 Matej Habrnal - 2.1.11-45 +- Translation updates +- Related: #1304240 + +* Thu Aug 18 2016 Matej Habrnal - 2.1.11-44 +- daemon: send base names from abrt-server to abrtd +- Resolves: #1132459 + +* Thu Aug 18 2016 Matej Habrnal - 2.1.11-43 +- check_recent_crash_file do not produce error_msg +- Resolves: #1337186 + +* Mon Aug 01 2016 Matej Habrnal - 2.1.11-42 +- trigger dump location cleanup after detection +- Resolves: #1132459 + +* Tue Jun 14 2016 Matej Habrnal - 2.1.11-41 +- vmcore: fix finding partitions by UUID and LABEL +- Related: rhbz#1147053 + +* Thu May 26 2016 Matej Habrnal - 2.1.11-40 +- ccpp: unify log message of ignored crashes +- Resolves: #1337186 + +* Tue May 03 2016 Matej Habrnal - 2.1.11-39 +- python: fix check for absolute path +- console-notifications: add timeout +- vmcore: generate 'reason' file in all cases +- Fix memory leaks in abrt-dbus +- Resolves: #1250337, #1166633, #1249101, #1319704 + +* Thu Apr 14 2016 Matej Habrnal - 2.1.11-38 +- ccpp: add xfunc_die() if cannot get executable +- Resolves: #1277849 + +* Thu Apr 14 2016 Matej Habrnal - 2.1.11-37 +- ccpp: exit with error if cannot get executable +- Resolves: #1277849 + +* Thu Apr 14 2016 Matej Habrnal - 2.1.11-36 +- lib: prevent from creating non-root sub-dirs in dump dir +- Save Vendor and GPG Fingerprint +- augeas: augtool save /files/etc/abrt/plugins/oops.conf/DropNotReportableOopses +- ccpp: add AllowedUsers and AllowedGroups feature +- ccpp: add IgnoredPath option +- lib: hooklib: make signal_is_fatal() public +- vmcore: catch IOErrors and OSErrors +- translations: update zanata configuration +- Resolves: #1311100, #1277848, #1277849, #1175679 * Fri Oct 30 2015 Jakub Filak - 2.1.11-35 - make /var/spool/abrt owned by root