summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile.am2
-rw-r--r--abrt.spec26
-rw-r--r--configure.ac3
-rw-r--r--doc/DESIGN15
-rw-r--r--doc/PLUGINS-HOWTO59
-rw-r--r--icons/48/Makefile.am11
-rw-r--r--icons/48/abrt00.pngbin0 -> 2791 bytes
-rw-r--r--icons/48/abrt01.pngbin0 -> 2791 bytes
-rw-r--r--icons/48/abrt02.pngbin0 -> 2800 bytes
-rw-r--r--icons/48/abrt03.pngbin0 -> 2707 bytes
-rw-r--r--icons/48/abrt04.pngbin0 -> 2709 bytes
-rw-r--r--icons/48/abrt05.pngbin0 -> 2729 bytes
-rw-r--r--icons/Makefile.am1
-rw-r--r--inc/Makefile.am3
-rw-r--r--lib/Makefile.am2
-rw-r--r--lib/Plugins/Bugzilla.cpp5
-rw-r--r--lib/Plugins/CCpp.conf5
-rw-r--r--lib/Plugins/CCpp.cpp197
-rw-r--r--lib/Plugins/CCpp.h1
-rw-r--r--lib/Plugins/Catcut.cpp4
-rw-r--r--lib/Plugins/Firefox.cpp1022
-rw-r--r--lib/Plugins/Firefox.h51
-rw-r--r--lib/Plugins/Kerneloops.cpp2
-rw-r--r--lib/Plugins/KerneloopsReporter.cpp2
-rw-r--r--lib/Plugins/KerneloopsScanner.cpp4
-rw-r--r--lib/Plugins/Logger.cpp2
-rw-r--r--lib/Plugins/Mailx.cpp183
-rw-r--r--lib/Plugins/Mailx.h10
-rw-r--r--lib/Plugins/Makefile.am12
-rw-r--r--lib/Plugins/Python.cpp2
-rw-r--r--lib/Plugins/RunApp.cpp39
-rw-r--r--lib/Plugins/SOSreport.cpp2
-rw-r--r--lib/Plugins/SQLite3.cpp4
-rw-r--r--lib/Plugins/TicketUploader.cpp49
-rw-r--r--lib/Python/Makefile.am5
-rw-r--r--lib/Python/PyABRTUtils.cpp248
-rw-r--r--lib/Python/PyBindingGenerator.py27
-rw-r--r--lib/Python/PyDebugDump.cpp248
-rw-r--r--lib/Utils/CommLayerInner.cpp2
-rw-r--r--lib/Utils/DebugDump.cpp8
-rw-r--r--lib/Utils/Makefile.am2
-rw-r--r--lib/Utils/make_descr.cpp2
-rw-r--r--lib/Utils/stringops.cpp25
-rw-r--r--po/POTFILES.in1
-rw-r--r--po/da.po182
-rw-r--r--po/de.po273
-rw-r--r--po/es.po54
-rw-r--r--po/fi.po77
-rw-r--r--po/kn.po486
-rw-r--r--po/ml.po482
-rw-r--r--po/mr.po484
-rw-r--r--po/nl.po35
-rw-r--r--po/or.po41
-rw-r--r--po/pl.po52
-rw-r--r--po/pt.po55
-rw-r--r--po/pt_BR.po42
-rw-r--r--po/ta.po477
-rw-r--r--po/te.po484
-rw-r--r--po/zh_CN.po235
-rw-r--r--src/Applet/Applet.cpp9
-rw-r--r--src/Applet/CCApplet.cpp89
-rw-r--r--src/Applet/CCApplet.h22
-rw-r--r--src/Applet/Makefile.am1
-rw-r--r--src/CLI/CLI.cpp14
-rw-r--r--src/CLI/Makefile.am12
-rw-r--r--src/Daemon/CommLayerServerDBus.cpp2
-rw-r--r--src/Daemon/CrashWatcher.cpp2
-rw-r--r--src/Daemon/Daemon.cpp6
-rw-r--r--src/Daemon/MiddleWare.cpp51
-rw-r--r--src/Daemon/PluginManager.cpp179
-rw-r--r--src/Daemon/PluginManager.h34
-rw-r--r--src/Daemon/Settings.cpp62
-rwxr-xr-xsrc/Daemon/abrt-debuginfo-install70
-rw-r--r--src/Daemon/abrt.conf7
-rw-r--r--src/Gui/CCMainWindow.py4
-rw-r--r--src/Gui/CCReporterDialog.py20
-rw-r--r--src/Gui/CC_gui_functions.py2
-rw-r--r--src/Gui/Makefile.am3
-rw-r--r--src/Gui/abrt.desktop.in (renamed from src/Gui/abrt.desktop)4
-rw-r--r--src/Gui/ccgui.glade1
-rw-r--r--src/Gui/report.glade2
-rw-r--r--src/Hooks/CCpp.cpp14
-rw-r--r--src/Hooks/abrt_exception_handler.py.in18
-rw-r--r--src/Hooks/sitecustomize.py4
84 files changed, 3760 insertions, 2617 deletions
diff --git a/Makefile.am b/Makefile.am
index 521271fd..a934526c 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = lib src inc po
+SUBDIRS = lib src inc po icons
EXTRA_DIST = doc/CodingStyle abrt.spec
diff --git a/abrt.spec b/abrt.spec
index 66356d47..955b4723 100644
--- a/abrt.spec
+++ b/abrt.spec
@@ -25,6 +25,7 @@ BuildRequires: gettext
BuildRequires: nss-devel
BuildRequires: polkit-devel
BuildRequires: libzip-devel, libtar-devel, bzip2-devel, zlib-devel
+BuildRequires: intltool
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Requires: %{name}-libs = %{version}-%{release}
Prereq: /usr/sbin/groupadd
@@ -62,6 +63,8 @@ Obsoletes: abrt-applet < 0.0.5
Conflicts: abrt-applet < 0.0.5
Obsoletes: bug-buddy
Provides: bug-buddy
+#FIXME: upgrade workaround
+Requires: abrt-desktop
%description gui
GTK+ wizard for convenient bug reporting.
@@ -78,6 +81,17 @@ Requires: %{name} = %{version}-%{release}
This package contains hook for C/C++ crashed programs and %{name}'s C/C++
analyzer plugin.
+#%package plugin-firefox
+#Summary: %{name}'s Firefox analyzer plugin
+#Group: System Environment/Libraries
+#Requires: gdb >= 7.0-3
+#Requires: elfutils
+#Requires: yum-utils
+#Requires: %{name} = %{version}-%{release}
+
+#%description plugin-firefox
+#This package contains hook for Firefox
+
%package addon-kerneloops
Summary: %{name}'s kerneloops addon
Group: System Environment/Libraries
@@ -198,9 +212,11 @@ Summary: Virtual package to install all necessary packages for usage from deskto
Group: User Interface/Desktops
Requires: %{name} = %{version}-%{release}
Requires: %{name}-plugin-sqlite3, %{name}-plugin-bugzilla, %{name}-plugin-logger
-Requires: %{name}-gui
+# FIXME: upgrade workaround
+#Requires: %{name}-gui
Requires: %{name}-addon-kerneloops
Requires: %{name}-addon-ccpp, %{name}-addon-python
+#Requires: %{name}-plugin-firefox
%description desktop
Virtual package to make easy default instalation on desktop environments.
@@ -272,7 +288,7 @@ fi
%config(noreplace) %{_sysconfdir}/%{name}/%{name}.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/dbus-%{name}.conf
%{_initrddir}/%{name}d
-%dir %attr(1775, root, abrt) /var/cache/%{name}
+%dir %attr(0775, root, abrt) /var/cache/%{name}
%dir /var/cache/%{name}-di
%dir /var/run/%{name}
%dir %{_sysconfdir}/%{name}
@@ -299,6 +315,7 @@ fi
%{_datadir}/%{name}
%{_datadir}/applications/fedora-%{name}.desktop
%{_datadir}/pixmaps/abrt.png
+%{_datadir}/icons/hicolor/48x48/apps/*.png
%{_bindir}/%{name}-applet
%{_sysconfdir}/xdg/autostart/%{name}-applet.desktop
@@ -308,6 +325,9 @@ fi
%{_libdir}/%{name}/libCCpp.so*
%{_libexecdir}/hookCCpp
+#%files plugin-firefox
+#%{_libdir}/%{name}/libFirefox.so*
+
%files addon-kerneloops
%defattr(-,root,root,-)
%config(noreplace) %{_sysconfdir}/%{name}/plugins/Kerneloops.conf
@@ -384,7 +404,7 @@ fi
%defattr(-,root,root,-)
%attr(2755, root, abrt) %{_bindir}/%{name}-pyhook-helper
%config(noreplace) %{_sysconfdir}/%{name}/pyhook.conf
-%{python_sitearch}/ABRTUtils.so
+#%{python_sitearch}/ABRTUtils.so
%{_libdir}/%{name}/libPython.so*
%{python_site}/*.py*
diff --git a/configure.ac b/configure.ac
index a3c6dc37..9123699d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -77,7 +77,6 @@ AC_CONFIG_FILES([
lib/Makefile
lib/Utils/Makefile
lib/Plugins/Makefile
- lib/Python/Makefile
src/Makefile
src/Daemon/Makefile
src/Hooks/Makefile
@@ -87,6 +86,8 @@ AC_CONFIG_FILES([
src/Backtrace/Makefile
inc/Makefile
po/Makefile.in
+ icons/Makefile
+ icons/48/Makefile
])
AC_OUTPUT
diff --git a/doc/DESIGN b/doc/DESIGN
index 78947238..7298b4c8 100644
--- a/doc/DESIGN
+++ b/doc/DESIGN
@@ -107,14 +107,19 @@ The key dbus calls served by abrt-process are:
Development plan
Since current code does not match the planned design, we need to gradually
-change the code to "morph" it into the desired shape. Planned steps:
+change the code to "morph" it into the desired shape.
-* make kerneloops plugin into separate daemon (convert it to a hook
- and get rid of "cron plugins" which are wrong idea since the begining)
-* Make abrtd dbus startable
+Done:
+
+* Make abrtd dbus startable.
+* Add -t TIMEOUT_SEC option to abrtd. {done}
* Make abrt-gui start abrtd on demand, so that abrt-gui can be started
even if abrtd does not run at the moment.
-* Add -t TIMEOUT_SEC option to abrtd.
+
+Planned steps:
+
+* make kerneloops plugin into separate daemon (convert it to a hook
+ and get rid of "cron plugins" which are wrong idea since the begining)
* ???
* ???
* ???
diff --git a/doc/PLUGINS-HOWTO b/doc/PLUGINS-HOWTO
index ef0c6ba6..d8467801 100644
--- a/doc/PLUGINS-HOWTO
+++ b/doc/PLUGINS-HOWTO
@@ -18,57 +18,64 @@ The files that were created when the application crashed (such as core dumps)
are all stored here. In addition, the plugins can write
their output files there, if any.
-Let's discuss the plugin types in detail:
+Plugin types in detail:
+
Action Plugin
-------------
-You use this type of plugin when you need some action to be
-performed when a crash is encountered.
-you have to override one method:
+This type of plugin is useful when you need some action to be performed
+immediately when a crash is encountered (using ActionsAndReporters = ...
+directive in abrt.conf), or if you need some action to be performed
+periodically ([Cron] section in the same file).
+
+You have to override one method:
+
+virtual void Run(const char *dir, const char *args);
+
+The first argument is a directory that contains the current debug
+dump, or all debug dumps for periodic actions.
+The second argument is a string with arguments (specified in config file).
-virtual void Run(const std::string& pActiveDir,
- const std::string& pArgs) = 0;
--This method runs the specified action.
- The first argument is a directory name. It can be either the current debug
- dump dir or a directory that contains all debug dumps.
- The second argument is a string with arguments specified for the action.
Analyzer Plugin
---------------
This plugin has to compute the UUID of the crash. Crashes differ, depending on
where they occur, for example crashes in the kernel differ from crashes in
userspace binaries, which differ from crashes in python scripts. Therefore,
-you need a plugin for each type of application that you want "abrt" to handle.
+you need a plugin for each type of application that you want abrt to handle.
-you have to override these methods:
+You have to override these methods:
-virtual std::string GetLocalUUID(const std::string& pDebugDumpPath) = 0;
+virtual std::string GetLocalUUID(const std::string& pDebugDumpPath);
- This method computes the local UUID of the crash.
-virtual std::string GetGlobalUUID(const std::string& pDebugDumpPath) = 0;
+virtual std::string GetGlobalUUID(const std::string& pDebugDumpPath);
- This method computes the global UUID of the crash.
-NOTE:The difference between local and global UUID is that the local UUID
+{something is fishy here}
+
+NOTE: The difference between local and global UUID is that the local UUID
is specific for the machine architecture on which the crash is encountered.
When the crash is reported, abrt has to use the "-debuginfo" packages
to render a global UUID, which should be independent of the specific
system (the same crash on different architectures/configurations can
yield different local UUIDs but has to have the same global UUID).
-virtual void CreateReport(const std::string& pDebugDumpPath) = 0;
+virtual void CreateReport(const std::string& pDebugDumpPath);
- This method creates the report about the crash and stores it
in the crash's directory.
+
Reporter Plugin
---------------
This plugin receives the entire finished crash report and
posts/reports it somewhere (e.g. logs it, mails it, posts
it on some web tool...)
-you have to override this method:
+You have to override this method:
virtual void Report(const crash_report_t& pCrashReport,
- const std::string& pArgs) = 0;
+ const std::string& pArgs);
-It is self-explanatory, that this method takes the report
and presents it somewhere to the world.
The second argument is a string with arguments specified for the reporter.
@@ -82,30 +89,30 @@ is not the same as some crash before. The database can be local, or in
some centralized location on the network.
you have to override these methods:
-virtual void Connect() = 0;
-virtual void DisConnect() = 0;
+virtual void Connect();
+virtual void DisConnect();
- connect and disconnect from the database
virtual void Insert(const std::string& pUUID,
const std::string& pUID,
const std::string& pDebugDumpPath,
- const std::string& pTime) = 0;
+ const std::string& pTime);
- insert an entry into the database: you use both UID (user ID) and UUID
(ID of the crash)
-virtual void Delete(const std::string& pUUID, const std::string& pUID) = 0;
+virtual void Delete(const std::string& pUUID, const std::string& pUID);
- delete an entry
-virtual void SetReported(const std::string& pUUID, const std::string& pUID) = 0;
+virtual void SetReported(const std::string& pUUID, const std::string& pUID);
- insert information into the database to say that this bug was already
reported (so for example the report plugins won't run several times
for the same bug)
-virtual const vector_database_rows_t GetUIDData(const std::string& pUID) = 0;
+virtual const vector_database_rows_t GetUIDData(const std::string& pUID);
- get database rows for the specified user ID
virtual const database_row_t GetUUIDData(const std::string& pUUID, const
- std::string& pUID) = 0;
+ std::string& pUID);
- get a database row for the specified user ID and UUID
@@ -124,7 +131,7 @@ PLUGIN_INFO(type, plugin_class, name, version, description, email, www)
- "description" is a string with the summary of what the plugin does
- "email" and "www" are strings with the contact info for the author
-for example:
+For example:
PLUGIN_INFO(REPORTER,
CMailx,
"Mailx",
diff --git a/icons/48/Makefile.am b/icons/48/Makefile.am
new file mode 100644
index 00000000..999f2258
--- /dev/null
+++ b/icons/48/Makefile.am
@@ -0,0 +1,11 @@
+icondir=${datadir}/icons/hicolor/48x48/apps
+icon_DATA = \
+ abrt00.png \
+ abrt01.png \
+ abrt02.png \
+ abrt03.png \
+ abrt04.png \
+ abrt05.png
+
+EXTRA_DIST = $(icon_DATA)
+
diff --git a/icons/48/abrt00.png b/icons/48/abrt00.png
new file mode 100644
index 00000000..dc24865e
--- /dev/null
+++ b/icons/48/abrt00.png
Binary files differ
diff --git a/icons/48/abrt01.png b/icons/48/abrt01.png
new file mode 100644
index 00000000..dc24865e
--- /dev/null
+++ b/icons/48/abrt01.png
Binary files differ
diff --git a/icons/48/abrt02.png b/icons/48/abrt02.png
new file mode 100644
index 00000000..14955826
--- /dev/null
+++ b/icons/48/abrt02.png
Binary files differ
diff --git a/icons/48/abrt03.png b/icons/48/abrt03.png
new file mode 100644
index 00000000..cf97a562
--- /dev/null
+++ b/icons/48/abrt03.png
Binary files differ
diff --git a/icons/48/abrt04.png b/icons/48/abrt04.png
new file mode 100644
index 00000000..caa6b33b
--- /dev/null
+++ b/icons/48/abrt04.png
Binary files differ
diff --git a/icons/48/abrt05.png b/icons/48/abrt05.png
new file mode 100644
index 00000000..49c442e5
--- /dev/null
+++ b/icons/48/abrt05.png
Binary files differ
diff --git a/icons/Makefile.am b/icons/Makefile.am
new file mode 100644
index 00000000..06e11378
--- /dev/null
+++ b/icons/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = 48 \ No newline at end of file
diff --git a/inc/Makefile.am b/inc/Makefile.am
index 637ac667..7059cf16 100644
--- a/inc/Makefile.am
+++ b/inc/Makefile.am
@@ -1 +1,2 @@
-EXTRA_DIST = ABRTException.h CrashTypes.h CrashTypesSocket.h abrtlib.h abrt_types.h
+EXTRA_DIST = ABRTException.h CrashTypes.h abrtlib.h abrt_types.h
+# removed: CrashTypesSocket.h
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 6be37e8c..459e2704 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -1 +1 @@
-SUBDIRS = Utils Plugins Python
+SUBDIRS = Utils Plugins \ No newline at end of file
diff --git a/lib/Plugins/Bugzilla.cpp b/lib/Plugins/Bugzilla.cpp
index 06f93342..7ddacf7c 100644
--- a/lib/Plugins/Bugzilla.cpp
+++ b/lib/Plugins/Bugzilla.cpp
@@ -16,7 +16,7 @@
static void create_new_bug_description(const map_crash_report_t& pCrashReport, std::string& pDescription)
{
- pDescription = "abrt detected a crash.\n\n";
+ pDescription = "abrt "VERSION" detected a crash.\n\n";
pDescription += make_description_bz(pCrashReport);
}
@@ -527,8 +527,7 @@ PLUGIN_INFO(REPORTER,
CReporterBugzilla,
"Bugzilla",
"0.0.4",
- "Check if a bug isn't already reported in a bugzilla "
- "and if not, report it.",
+ "Reports bugs to bugzilla",
"npajkovs@redhat.com",
"https://fedorahosted.org/abrt/wiki",
PLUGINS_LIB_DIR"/Bugzilla.GTKBuilder");
diff --git a/lib/Plugins/CCpp.conf b/lib/Plugins/CCpp.conf
index 988ddf32..459dff8c 100644
--- a/lib/Plugins/CCpp.conf
+++ b/lib/Plugins/CCpp.conf
@@ -12,6 +12,11 @@ DebugInfo = install
# debuginfos will be installed to @@LOCALSTATEDIR@@/cache/abrt-di
InstallDebugInfo = yes
+# Additional directories to search for debuginfos.
+# For example, you can list a network-mounted shared store
+# of all debuginfos here.
+# ReadonlyLocalDebugInfoDirs = /path1:/path2:...
+
# Keep @@LOCALSTATEDIR@@/cache/abrt-di
# from growing out-of-bounds.
DebugInfoCacheMB = 4000
diff --git a/lib/Plugins/CCpp.cpp b/lib/Plugins/CCpp.cpp
index 82c5677d..83b0e9a3 100644
--- a/lib/Plugins/CCpp.cpp
+++ b/lib/Plugins/CCpp.cpp
@@ -33,6 +33,8 @@
#include "CommLayerInner.h"
#include "Polkit.h"
+using namespace std;
+
#define CORE_PATTERN_IFACE "/proc/sys/kernel/core_pattern"
#define CORE_PATTERN "|"CCPP_HOOK_PATH" "DEBUG_DUMPS_DIR" %p %s %u"
@@ -48,9 +50,9 @@ CAnalyzerCCpp::CAnalyzerCCpp() :
m_nDebugInfoCacheMB(4000)
{}
-static std::string CreateHash(const std::string& pInput)
+static string CreateHash(const char *pInput)
{
- std::string ret = "";
+ string ret;
HASHContext* hc;
unsigned char hash[SHA1_LENGTH];
unsigned int len;
@@ -61,7 +63,7 @@ static std::string CreateHash(const std::string& pInput)
error_msg_and_die("HASH_Create(HASH_AlgSHA1) failed"); /* paranoia */
}
HASH_Begin(hc);
- HASH_Update(hc, reinterpret_cast<const unsigned char*>(pInput.c_str()), pInput.length());
+ HASH_Update(hc, (const unsigned char*)pInput, strlen(pInput));
HASH_End(hc, hash, &len, sizeof(hash));
HASH_Destroy(hc);
@@ -80,9 +82,9 @@ static std::string CreateHash(const std::string& pInput)
return hash_str;
}
-static std::string concat_str_vector(char **strings)
+static string concat_str_vector(char **strings)
{
- std::string result;
+ string result;
while (*strings)
{
result += *strings++;
@@ -92,7 +94,7 @@ static std::string concat_str_vector(char **strings)
return result;
}
-static pid_t ExecVP(char** pArgs, uid_t uid, std::string& pOutput)
+static pid_t ExecVP(char** pArgs, uid_t uid, string& pOutput)
{
int pipeout[2];
pid_t child;
@@ -100,7 +102,7 @@ static pid_t ExecVP(char** pArgs, uid_t uid, std::string& pOutput)
struct passwd* pw = getpwuid(uid);
if (!pw)
{
- throw CABRTException(EXCEP_PLUGIN, std::string(__func__) + ": cannot get GID for UID.");
+ throw CABRTException(EXCEP_PLUGIN, string(__func__) + ": cannot get GID for UID.");
}
xpipe(pipeout);
@@ -217,7 +219,7 @@ static int rate_backtrace(const char *backtrace)
{
if (backtrace[i] == '#') /* this separates frames from each other */
{
- std::string s(backtrace + i + 1, len);
+ string s(backtrace + i + 1, len);
for (j=0; j<len; j++) /* replace tabs with spaces */
if (s[j] == '\t')
s[j] = ' ';
@@ -249,12 +251,12 @@ static int rate_backtrace(const char *backtrace)
return 0;
}
-static void GetBacktrace(const char *pDebugDumpDir, std::string& pBacktrace)
+static void GetBacktrace(const char *pDebugDumpDir, const char *pDebugInfoDirs, string& pBacktrace)
{
update_client(_("Getting backtrace..."));
- std::string UID;
- std::string executable;
+ string UID;
+ string executable;
{
CDebugDump dd;
dd.Open(pDebugDumpDir);
@@ -270,10 +272,24 @@ static void GetBacktrace(const char *pDebugDumpDir, std::string& pBacktrace)
char* args[11];
args[0] = (char*)"gdb";
args[1] = (char*)"-batch";
+
// when/if gdb supports it:
// (https://bugzilla.redhat.com/show_bug.cgi?id=528668):
args[2] = (char*)"-ex";
- args[3] = (char*)"set debug-file-directory /usr/lib/debug:" DEBUGINFO_CACHE_DIR"/usr/lib/debug";
+ string dfd = "set debug-file-directory /usr/lib/debug";
+ const char *p = pDebugInfoDirs;
+ while (1)
+ {
+ const char *colon_or_nul = strchrnul(p, ':');
+ dfd += ':';
+ dfd.append(p, colon_or_nul - p);
+ dfd += "/usr/lib/debug";
+ if (*colon_or_nul != ':')
+ break;
+ p = colon_or_nul + 1;
+ }
+ args[3] = (char*)dfd.c_str();
+
/*
* Unfortunately, "file BINARY_FILE" doesn't work well if BINARY_FILE
* was deleted (as often happens during system updates):
@@ -282,22 +298,23 @@ static void GetBacktrace(const char *pDebugDumpDir, std::string& pBacktrace)
* See https://bugzilla.redhat.com/show_bug.cgi?id=525721
*/
args[4] = (char*)"-ex";
- args[5] = xasprintf("file %s", executable.c_str());
+ string file = ssprintf("file %s", executable.c_str());
+ args[5] = (char*)file.c_str();
+
args[6] = (char*)"-ex";
- args[7] = xasprintf("core-file %s/"FILENAME_COREDUMP, pDebugDumpDir);
+ string corefile = ssprintf("core-file %s/"FILENAME_COREDUMP, pDebugDumpDir);
+ args[7] = (char*)corefile.c_str();
+
args[8] = (char*)"-ex";
args[9] = (char*)"thread apply all backtrace full";
args[10] = NULL;
ExecVP(args, atoi(UID.c_str()), pBacktrace);
-
- free(args[5]);
- free(args[7]);
}
-static std::string GetIndependentBacktrace(const std::string& pBacktrace)
+static string GetIndependentBacktrace(const char *pBacktrace)
{
- std::string header;
+ string header;
bool in_bracket = false;
bool in_quote = false;
bool in_header = false;
@@ -305,7 +322,7 @@ static std::string GetIndependentBacktrace(const std::string& pBacktrace)
bool has_at = false;
bool has_filename = false;
bool has_bracket = false;
- std::set<std::string> set_headers;
+ set<string> set_headers;
/* Backtrace example:
#0 0x00007f047e21af70 in __nanosleep_nocancel () from /lib64/libc-2.10.1.so
@@ -328,7 +345,7 @@ static std::string GetIndependentBacktrace(const std::string& pBacktrace)
seconds = 1260
ok = true
*/
- const char *bk = pBacktrace.c_str();
+ const char *bk = pBacktrace;
while (*bk)
{
if (bk[0] == '#'
@@ -348,11 +365,11 @@ static std::string GetIndependentBacktrace(const std::string& pBacktrace)
{
in_digit = true;
}
- else if (bk[0] == '\\' && bk[1] == '\"')
+ else if (bk[0] == '\\' && bk[1] == '"')
{
bk++;
}
- else if (*bk == '\"')
+ else if (*bk == '"')
{
in_quote = in_quote == true ? false : true;
}
@@ -406,8 +423,8 @@ static std::string GetIndependentBacktrace(const std::string& pBacktrace)
bk++;
}
- std::string pIndependentBacktrace;
- std::set<std::string>::iterator it = set_headers.begin();
+ string pIndependentBacktrace;
+ set<string>::iterator it = set_headers.begin();
for (; it != set_headers.end(); it++)
{
pIndependentBacktrace += *it;
@@ -416,39 +433,35 @@ static std::string GetIndependentBacktrace(const std::string& pBacktrace)
return pIndependentBacktrace;
}
-static void GetIndependentBuildIdPC(const std::string& pBuildIdPC, std::string& pIndependentBuildIdPC)
+static void GetIndependentBuildIdPC(const char *unstrip_n_output, string& pIndependentBuildIdPC)
{
- int ii = 0;
- while (ii < pBuildIdPC.length())
+ // lines look like this:
+ // 0x400000+0x209000 23c77451cf6adff77fc1f5ee2a01d75de6511dda@0x40024c - - [exe]
+ // 0x400000+0x209000 ab3c8286aac6c043fd1bb1cc2a0b88ec29517d3e@0x40024c /bin/sleep /usr/lib/debug/bin/sleep.debug [exe]
+ // 0x7fff313ff000+0x1000 389c7475e3d5401c55953a425a2042ef62c4c7df@0x7fff313ff2f8 . - linux-vdso.so.1
+ const char *line = unstrip_n_output;
+ while (*line)
{
- std::string line;
- int jj = 0;
-
- while (pBuildIdPC[ii] != '\n' && ii < pBuildIdPC.length())
- {
- line += pBuildIdPC[ii];
- ii++;
- }
- while (line[jj] != '+' && jj < line.length())
+ const char *eol = strchrnul(line, '\n');
+ const char *plus = (char*)memchr(line, '+', eol - line);
+ if (plus)
{
- jj++;
- }
- jj++;
- while (line[jj] != '@' && jj < line.length())
- {
- if (!isspace(line[jj]))
+ while (++plus < eol && *plus != '@')
{
- pIndependentBuildIdPC += line[jj];
+ if (!isspace(*plus))
+ {
+ pIndependentBuildIdPC += *plus;
+ }
}
- jj++;
}
- ii++;
+ if (*eol != '\n') break;
+ line = eol + 1;
}
}
-static std::string run_unstrip_n(const char *pDebugDumpDir)
+static string run_unstrip_n(const char *pDebugDumpDir)
{
- std::string UID;
+ string UID;
{
CDebugDump dd;
dd.Open(pDebugDumpDir);
@@ -461,7 +474,7 @@ static std::string run_unstrip_n(const char *pDebugDumpDir)
args[2] = (char*)"-n";
args[3] = NULL;
- std::string output;
+ string output;
ExecVP(args, atoi(UID.c_str()), output);
free(args[1]);
@@ -481,10 +494,10 @@ static bool is_hexstr(const char* str)
}
return true;
}
-static void InstallDebugInfos(const char *pDebugDumpDir, std::string& build_ids)
+static void InstallDebugInfos(const char *pDebugDumpDir, const char *debuginfo_dirs, string& build_ids)
{
log("Getting module names, file names, build IDs from core file");
- std::string unstrip_list = run_unstrip_n(pDebugDumpDir);
+ string unstrip_list = run_unstrip_n(pDebugDumpDir);
log("Builting list of missing debuginfos");
// lines look like this:
@@ -542,7 +555,7 @@ static void InstallDebugInfos(const char *pDebugDumpDir, std::string& build_ids)
}
//missing vector is unused for now, but TODO: use it to install only needed debuginfos
- std::string package;
+ string package;
{
CDebugDump dd;
dd.Open(pDebugDumpDir);
@@ -629,7 +642,7 @@ Another application is holding the yum lock, cannot continue
bool already_installed = false;
#endif
char buff[1024];
- std::string packageName = package.substr(0, package.rfind("-", package.rfind("-")-1));
+ string packageName = package.substr(0, package.rfind("-", package.rfind("-")-1));
while (fgets(buff, sizeof(buff), pipeout_fp))
{
int last = strlen(buff) - 1;
@@ -662,7 +675,7 @@ Another application is holding the yum lock, cannot continue
fclose(pipeout_fp);
kill(child, SIGTERM);
wait(NULL);
- throw CABRTException(EXCEP_PLUGIN, std::string(__func__) + ": cannot install debuginfos for " + pPackage);
+ throw CABRTException(EXCEP_PLUGIN, string(__func__) + ": cannot install debuginfos for " + pPackage);
}
#endif
}
@@ -674,7 +687,7 @@ Another application is holding the yum lock, cannot continue
/* Needs gdb feature from here: https://bugzilla.redhat.com/show_bug.cgi?id=528668
* It is slated to be in F12/RHEL6.
*/
-static void InstallDebugInfos(const char *pDebugDumpDir, std::string& build_ids)
+static void InstallDebugInfos(const char *pDebugDumpDir, const char *debuginfo_dirs, string& build_ids)
{
update_client(_("Searching for debug-info packages..."));
@@ -703,8 +716,8 @@ static void InstallDebugInfos(const char *pDebugDumpDir, std::string& build_ids)
/* SELinux guys are not happy with /tmp, using /var/run/abrt */
char *tempdir = xasprintf(LOCALSTATEDIR"/run/abrt/tmp-%u-%lu", (int)getpid(), (long)time(NULL));
/* log() goes to stderr/syslog, it's ok to use it here */
- VERB1 log("Executing: %s %s %s %s", "abrt-debuginfo-install", coredump, tempdir, DEBUGINFO_CACHE_DIR);
- execlp("abrt-debuginfo-install", "abrt-debuginfo-install", coredump, tempdir, DEBUGINFO_CACHE_DIR, NULL);
+ VERB1 log("Executing: %s %s %s %s", "abrt-debuginfo-install", coredump, tempdir, debuginfo_dirs);
+ execlp("abrt-debuginfo-install", "abrt-debuginfo-install", coredump, tempdir, debuginfo_dirs, NULL);
exit(1);
}
@@ -750,7 +763,7 @@ static void InstallDebugInfos(const char *pDebugDumpDir, std::string& build_ids)
wait(NULL);
}
-static double get_dir_size(const char *dirname, std::string *worst_file, double *maxsz)
+static double get_dir_size(const char *dirname, string *worst_file, double *maxsz)
{
DIR *dp = opendir(dirname);
if (dp == NULL)
@@ -763,7 +776,7 @@ static double get_dir_size(const char *dirname, std::string *worst_file, double
{
if (dot_or_dotdot(ep->d_name))
continue;
- std::string dname = concat_path_file(dirname, ep->d_name);
+ string dname = concat_path_file(dirname, ep->d_name);
if (lstat(dname.c_str(), &stats) != 0)
continue;
if (S_ISDIR(stats.st_mode))
@@ -801,7 +814,7 @@ static void trim_debuginfo_cache(unsigned max_mb)
{
while (1)
{
- std::string worst_file;
+ string worst_file;
double maxsz = 0;
double cache_sz = get_dir_size(DEBUGINFO_CACHE_DIR, &worst_file, &maxsz);
if (cache_sz / (1024 * 1024) < max_mb)
@@ -813,12 +826,12 @@ static void trim_debuginfo_cache(unsigned max_mb)
}
}
-std::string CAnalyzerCCpp::GetLocalUUID(const char *pDebugDumpDir)
+string CAnalyzerCCpp::GetLocalUUID(const char *pDebugDumpDir)
{
log(_("Getting local universal unique identification..."));
- std::string executable;
- std::string package;
+ string executable;
+ string package;
{
CDebugDump dd;
dd.Open(pDebugDumpDir);
@@ -826,19 +839,19 @@ std::string CAnalyzerCCpp::GetLocalUUID(const char *pDebugDumpDir)
dd.LoadText(FILENAME_PACKAGE, package);
}
- std::string buildIdPC = run_unstrip_n(pDebugDumpDir);
- std::string independentBuildIdPC;
- GetIndependentBuildIdPC(buildIdPC, independentBuildIdPC);
- return CreateHash(package + executable + independentBuildIdPC);
+ string unstrip_n_output = run_unstrip_n(pDebugDumpDir);
+ string independentBuildIdPC;
+ GetIndependentBuildIdPC(unstrip_n_output.c_str(), independentBuildIdPC);
+ return CreateHash((package + executable + independentBuildIdPC).c_str());
}
-std::string CAnalyzerCCpp::GetGlobalUUID(const char *pDebugDumpDir)
+string CAnalyzerCCpp::GetGlobalUUID(const char *pDebugDumpDir)
{
log(_("Getting global universal unique identification..."));
- std::string backtrace;
- std::string executable;
- std::string package;
+ string backtrace;
+ string executable;
+ string package;
{
CDebugDump dd;
dd.Open(pDebugDumpDir);
@@ -846,8 +859,8 @@ std::string CAnalyzerCCpp::GetGlobalUUID(const char *pDebugDumpDir)
dd.LoadText(FILENAME_EXECUTABLE, executable);
dd.LoadText(FILENAME_PACKAGE, package);
}
- std::string independentBacktrace = GetIndependentBacktrace(backtrace);
- return CreateHash(package + executable + independentBacktrace);
+ string independentBacktrace = GetIndependentBacktrace(backtrace.c_str());
+ return CreateHash((package + executable + independentBacktrace).c_str());
}
static bool DebuginfoCheckPolkit(int uid)
@@ -881,9 +894,9 @@ void CAnalyzerCCpp::CreateReport(const char *pDebugDumpDir, int force)
{
update_client(_("Starting report creation..."));
- std::string package;
- std::string backtrace;
- std::string UID;
+ string package;
+ string backtrace;
+ string UID;
CDebugDump dd;
dd.Open(pDebugDumpDir);
@@ -901,18 +914,21 @@ void CAnalyzerCCpp::CreateReport(const char *pDebugDumpDir, int force)
dd.LoadText(FILENAME_UID, UID);
dd.Close(); /* do not keep dir locked longer than needed */
- std::string build_ids;
- if (m_bInstallDebugInfo && DebuginfoCheckPolkit(atoi(UID.c_str()))) {
- if (m_nDebugInfoCacheMB > 0)
+ string build_ids;
+ if (m_bInstallDebugInfo && DebuginfoCheckPolkit(atoi(UID.c_str())))
+ {
+ if (m_nDebugInfoCacheMB > 0)
+ {
trim_debuginfo_cache(m_nDebugInfoCacheMB);
- InstallDebugInfos(pDebugDumpDir, build_ids);
+ }
+ InstallDebugInfos(pDebugDumpDir, m_sDebugInfoDirs.c_str(), build_ids);
}
else
{
VERB1 log(_("Skipping debuginfo installation"));
}
- GetBacktrace(pDebugDumpDir, backtrace);
+ GetBacktrace(pDebugDumpDir, m_sDebugInfoDirs.c_str(), backtrace);
dd.Open(pDebugDumpDir);
dd.SaveText(FILENAME_BACKTRACE, (build_ids + backtrace).c_str());
@@ -926,7 +942,7 @@ void CAnalyzerCCpp::CreateReport(const char *pDebugDumpDir, int force)
void CAnalyzerCCpp::Init()
{
- std::ifstream fInCorePattern;
+ ifstream fInCorePattern;
fInCorePattern.open(CORE_PATTERN_IFACE);
if (fInCorePattern.is_open())
{
@@ -951,22 +967,22 @@ void CAnalyzerCCpp::Init()
}
}
- std::ofstream fOutCorePattern;
+ ofstream fOutCorePattern;
fOutCorePattern.open(CORE_PATTERN_IFACE);
if (fOutCorePattern.is_open())
{
- fOutCorePattern << CORE_PATTERN << std::endl;
+ fOutCorePattern << CORE_PATTERN << endl;
fOutCorePattern.close();
}
}
void CAnalyzerCCpp::DeInit()
{
- std::ofstream fOutCorePattern;
+ ofstream fOutCorePattern;
fOutCorePattern.open(CORE_PATTERN_IFACE);
if (fOutCorePattern.is_open())
{
- fOutCorePattern << m_sOldCorePattern << std::endl;
+ fOutCorePattern << m_sOldCorePattern << endl;
fOutCorePattern.close();
}
}
@@ -999,6 +1015,13 @@ void CAnalyzerCCpp::SetSettings(const map_plugin_settings_t& pSettings)
{
m_bInstallDebugInfo = string_to_bool(it->second.c_str());
}
+ m_sDebugInfoDirs = DEBUGINFO_CACHE_DIR;
+ it = pSettings.find("ReadonlyLocalDebugInfoDirs");
+ if (it != end)
+ {
+ m_sDebugInfoDirs += ':';
+ m_sDebugInfoDirs += it->second;
+ }
}
//ok to delete?
@@ -1016,7 +1039,7 @@ PLUGIN_INFO(ANALYZER,
CAnalyzerCCpp,
"CCpp",
"0.0.1",
- "Simple C/C++ analyzer plugin.",
+ "Analyzes crashes in C/C++ programs",
"zprikryl@redhat.com",
"https://fedorahosted.org/abrt/wiki",
"");
diff --git a/lib/Plugins/CCpp.h b/lib/Plugins/CCpp.h
index 3fa0d99a..26dedead 100644
--- a/lib/Plugins/CCpp.h
+++ b/lib/Plugins/CCpp.h
@@ -35,6 +35,7 @@ class CAnalyzerCCpp : public CAnalyzer
unsigned m_nDebugInfoCacheMB;
std::string m_sOldCorePattern;
std::string m_sDebugInfo;
+ std::string m_sDebugInfoDirs;
public:
CAnalyzerCCpp();
diff --git a/lib/Plugins/Catcut.cpp b/lib/Plugins/Catcut.cpp
index e6d16b4f..cf1d7d9c 100644
--- a/lib/Plugins/Catcut.cpp
+++ b/lib/Plugins/Catcut.cpp
@@ -33,7 +33,7 @@ static void create_new_bug_description(const map_crash_report_t& pCrashReport, s
"-----\n" +
pCrashReport.find(CD_COMMENT)->second[CD_CONTENT];
}
- pDescription = "\nabrt detected a crash.\n" +
+ pDescription = "\nabrt "VERSION" detected a crash.\n" +
howToReproduce +
comment +
"\n\nAdditional information\n"
@@ -573,7 +573,7 @@ PLUGIN_INFO(REPORTER,
CReporterCatcut,
"Catcut",
"0.0.1",
- "Test plugin to report bugs to catcut and if not, report it.",
+ "Reports bugs to catcut",
"dvlasenk@redhat.com",
"https://fedorahosted.org/abrt/wiki",
PLUGINS_LIB_DIR"/Catcut.GTKBuilder");
diff --git a/lib/Plugins/Firefox.cpp b/lib/Plugins/Firefox.cpp
new file mode 100644
index 00000000..68dbd39e
--- /dev/null
+++ b/lib/Plugins/Firefox.cpp
@@ -0,0 +1,1022 @@
+/*
+ Firefox.cpp
+
+ Copyright (C) 2009 Zdenek Prikryl (zprikryl@redhat.com)
+ Copyright (C) 2009 RedHat inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include <sys/wait.h>
+#include <fstream>
+#include <sstream>
+#include <set>
+#include <iomanip>
+#include <nss.h>
+#include <sechash.h>
+#include "abrtlib.h"
+#include "Firefox.h"
+#include "ABRTException.h"
+#include "DebugDump.h"
+#include "CommLayerInner.h"
+#include "Polkit.h"
+
+#define CORE_PATTERN_IFACE "/proc/sys/kernel/core_pattern"
+#define CORE_PATTERN "|"CCPP_HOOK_PATH" "DEBUG_DUMPS_DIR" %p %s %u"
+
+#define FILENAME_COREDUMP "coredump"
+#define FILENAME_BACKTRACE "backtrace"
+#define FILENAME_MEMORYMAP "memorymap"
+
+#define DEBUGINFO_CACHE_DIR LOCALSTATEDIR"/cache/abrt-di"
+
+CAnalyzerFirefox::CAnalyzerFirefox() :
+ m_bMemoryMap(false),
+ m_bInstallDebugInfo(true),
+ m_nDebugInfoCacheMB(4000)
+{}
+
+static std::string CreateHash(const std::string& pInput)
+{
+ std::string ret = "";
+ HASHContext* hc;
+ unsigned char hash[SHA1_LENGTH];
+ unsigned int len;
+
+ hc = HASH_Create(HASH_AlgSHA1);
+ if (!hc)
+ {
+ error_msg_and_die("HASH_Create(HASH_AlgSHA1) failed"); /* paranoia */
+ }
+ HASH_Begin(hc);
+ HASH_Update(hc, reinterpret_cast<const unsigned char*>(pInput.c_str()), pInput.length());
+ HASH_End(hc, hash, &len, sizeof(hash));
+ HASH_Destroy(hc);
+
+ char hash_str[SHA1_LENGTH*2 + 1];
+ char *d = hash_str;
+ unsigned char *s = hash;
+ while (len)
+ {
+ *d++ = "0123456789abcdef"[*s >> 4];
+ *d++ = "0123456789abcdef"[*s & 0xf];
+ s++;
+ len--;
+ }
+ *d = '\0';
+
+ return hash_str;
+}
+
+static std::string concat_str_vector(char **strings)
+{
+ std::string result;
+ while (*strings)
+ {
+ result += *strings++;
+ if (*strings)
+ result += ' ';
+ }
+ return result;
+}
+
+static pid_t ExecVP(char** pArgs, uid_t uid, std::string& pOutput)
+{
+ int pipeout[2];
+ pid_t child;
+
+ struct passwd* pw = getpwuid(uid);
+ if (!pw)
+ {
+ throw CABRTException(EXCEP_PLUGIN, std::string(__func__) + ": cannot get GID for UID.");
+ }
+
+ xpipe(pipeout);
+ child = fork();
+ if (child == -1)
+ {
+ perror_msg_and_die("fork");
+ }
+ if (child == 0)
+ {
+ VERB1 log("Executing: %s", concat_str_vector(pArgs).c_str());
+ close(pipeout[0]); /* read side of the pipe */
+ xmove_fd(pipeout[1], STDOUT_FILENO);
+ /* Make sure stdin is safely open to nothing */
+ close(STDIN_FILENO);
+ if (open("/dev/null", O_RDONLY))
+ if (open("/", O_RDONLY))
+ abort(); /* never happens */
+ /* Not a good idea, we won't see any error messages */
+ /* close(STDERR_FILENO); */
+
+ setgroups(1, &pw->pw_gid);
+ setregid(pw->pw_gid, pw->pw_gid);
+ setreuid(uid, uid);
+ setsid();
+
+ /* Nuke everything which may make setlocale() switch to non-POSIX locale:
+ * we need to avoid having gdb output in some obscure language.
+ */
+ unsetenv("LANG");
+ unsetenv("LC_ALL");
+ unsetenv("LC_COLLATE");
+ unsetenv("LC_CTYPE");
+ unsetenv("LC_MESSAGES");
+ unsetenv("LC_MONETARY");
+ unsetenv("LC_NUMERIC");
+ unsetenv("LC_TIME");
+
+ execvp(pArgs[0], pArgs);
+ /* VERB1 since sometimes we expect errors here */
+ VERB1 perror_msg("Can't execute '%s'", pArgs[0]);
+ exit(1);
+ }
+
+ close(pipeout[1]); /* write side of the pipe */
+
+ int r;
+ char buff[1024];
+ while ((r = read(pipeout[0], buff, sizeof(buff) - 1)) > 0)
+ {
+ buff[r] = '\0';
+ pOutput += buff;
+ }
+
+ close(pipeout[0]);
+ wait(NULL); /* prevent having zombie child process */
+
+ return 0;
+}
+
+enum LineRating
+{
+ // RATING EXAMPLE
+ MissingEverything = 0, // #0 0x0000dead in ?? ()
+ MissingFunction = 1, // #0 0x0000dead in ?? () from /usr/lib/libfoobar.so.4
+ MissingLibrary = 2, // #0 0x0000dead in foobar()
+ MissingSourceFile = 3, // #0 0x0000dead in FooBar::FooBar () from /usr/lib/libfoobar.so.4
+ Good = 4, // #0 0x0000dead in FooBar::crash (this=0x0) at /home/user/foobar.cpp:204
+ BestRating = Good,
+};
+
+static LineRating rate_line(const char *line)
+{
+#define FOUND(x) (strstr(line, x) != NULL)
+ /* see the "enum LineRating" comments for possible combinations */
+ if (FOUND(" at "))
+ return Good;
+ const char *function = strstr(line, " in ");
+ if (function)
+ {
+ if (function[4] == '?') /* " in ??" does not count */
+ {
+ function = NULL;
+ }
+ }
+ bool library = FOUND(" from ");
+ if (function && library)
+ return MissingSourceFile;
+ if (function)
+ return MissingLibrary;
+ if (library)
+ return MissingFunction;
+
+ return MissingEverything;
+#undef FOUND
+}
+
+/* returns number of "stars" to show */
+static int rate_backtrace(const char *backtrace)
+{
+ int i, j, len;
+ int multiplier = 0;
+ int rating = 0;
+ int best_possible_rating = 0;
+
+ /* We look at the frames in reversed order, since:
+ * - rate_line() checks starting from the first line of the frame
+ * (note: it may need to look at more than one line!)
+ * - we increase weight (multiplier) for every frame,
+ * so that topmost frames end up most important
+ */
+ len = 0;
+ for (i = strlen(backtrace) - 1; i >= 0; i--)
+ {
+ if (backtrace[i] == '#') /* this separates frames from each other */
+ {
+ std::string s(backtrace + i + 1, len);
+ for (j=0; j<len; j++) /* replace tabs with spaces */
+ if (s[j] == '\t')
+ s[j] = ' ';
+ multiplier++;
+ rating += rate_line(s.c_str()) * multiplier;
+ best_possible_rating += BestRating * multiplier;
+ len = 0; /* starting new line */
+ }
+ else
+ {
+ len++;
+ }
+ }
+
+ /* Bogus "backtrace" with zero frames? */
+ if (best_possible_rating == 0)
+ return 0;
+
+ /* Returning number of "stars" to show */
+ if (rating*10 >= best_possible_rating*8) /* >= 0.8 */
+ return 4;
+ if (rating*10 >= best_possible_rating*6)
+ return 3;
+ if (rating*10 >= best_possible_rating*4)
+ return 2;
+ if (rating*10 >= best_possible_rating*2)
+ return 1;
+
+ return 0;
+}
+
+static void GetBacktrace(const char *pDebugDumpDir, std::string& pBacktrace)
+{
+ update_client(_("Getting backtrace..."));
+
+ std::string UID;
+ std::string executable;
+ {
+ CDebugDump dd;
+ dd.Open(pDebugDumpDir);
+ dd.LoadText(FILENAME_EXECUTABLE, executable);
+ dd.LoadText(FILENAME_UID, UID);
+ }
+
+ // Workaround for
+ // http://sourceware.org/bugzilla/show_bug.cgi?id=9622
+ unsetenv("TERM");
+ putenv((char*)"TERM=dumb");
+
+ char* args[11];
+ args[0] = (char*)"gdb";
+ args[1] = (char*)"-batch";
+ // when/if gdb supports it:
+ // (https://bugzilla.redhat.com/show_bug.cgi?id=528668):
+ args[2] = (char*)"-ex";
+ args[3] = (char*)"set debug-file-directory /usr/lib/debug:" DEBUGINFO_CACHE_DIR"/usr/lib/debug";
+ /*
+ * Unfortunately, "file BINARY_FILE" doesn't work well if BINARY_FILE
+ * was deleted (as often happens during system updates):
+ * gdb uses specified BINARY_FILE
+ * even if it is completely unrelated to the coredump
+ * See https://bugzilla.redhat.com/show_bug.cgi?id=525721
+ */
+ args[4] = (char*)"-ex";
+ args[5] = xasprintf("file %s", executable.c_str());
+ args[6] = (char*)"-ex";
+ args[7] = xasprintf("core-file %s/"FILENAME_COREDUMP, pDebugDumpDir);
+ args[8] = (char*)"-ex";
+ args[9] = (char*)"thread apply all backtrace full";
+ args[10] = NULL;
+
+ ExecVP(args, atoi(UID.c_str()), pBacktrace);
+
+ free(args[5]);
+ free(args[7]);
+}
+
+static std::string GetIndependentBacktrace(const std::string& pBacktrace)
+{
+ std::string header;
+ bool in_bracket = false;
+ bool in_quote = false;
+ bool in_header = false;
+ bool in_digit = false;
+ bool has_at = false;
+ bool has_filename = false;
+ bool has_bracket = false;
+ std::set<std::string> set_headers;
+
+ /* Backtrace example:
+ #0 0x00007f047e21af70 in __nanosleep_nocancel () from /lib64/libc-2.10.1.so
+
+ Thread 1 (Thread 30750):
+ #0 0x00007f047e21af70 in __nanosleep_nocancel () from /lib64/libc-2.10.1.so
+ No symbol table info available.
+ #1 0x00000000004037bb in rpl_nanosleep (requested_delay=0x7fff8999e400,
+ remaining_delay=0x0) at nanosleep.c:69
+ r = -516
+ delay = {tv_sec = 1260, tv_nsec = 0}
+ t0 = {tv_sec = 12407, tv_nsec = 291505364}
+ #2 0x000000000040322b in xnanosleep (seconds=<value optimized out>)
+ at xnanosleep.c:112
+ overflow = false
+ ts_sleep = {tv_sec = 1260, tv_nsec = 0}
+ __PRETTY_FUNCTION__ = "xnanosleep"
+ #3 0x0000000000401779 in main (argc=2, argv=0x7fff8999e598) at sleep.c:147
+ i = 2
+ seconds = 1260
+ ok = true
+ */
+ const char *bk = pBacktrace.c_str();
+ while (*bk)
+ {
+ if (bk[0] == '#'
+ && bk[1] >= '0' && bk[1] <= '7'
+ && bk[2] == ' ' /* take only #0...#7 (8 last stack frames) */
+ && !in_quote
+ ) {
+ if (in_header && !has_filename)
+ {
+ header = "";
+ }
+ in_header = true;
+ }
+ if (in_header)
+ {
+ if (isdigit(*bk) && !in_quote && !has_at)
+ {
+ in_digit = true;
+ }
+ else if (bk[0] == '\\' && bk[1] == '\"')
+ {
+ bk++;
+ }
+ else if (*bk == '\"')
+ {
+ in_quote = in_quote == true ? false : true;
+ }
+ else if (*bk == '(' && !in_quote)
+ {
+ in_bracket = true;
+ in_digit = false;
+ header += '(';
+ }
+ else if (*bk == ')' && !in_quote)
+ {
+ in_bracket = false;
+ has_bracket = true;
+ in_digit = false;
+ header += ')';
+ }
+ else if (*bk == '\n' && has_filename)
+ {
+ set_headers.insert(header);
+ in_bracket = false;
+ in_quote = false;
+ in_header = false;
+ in_digit = false;
+ has_at = false;
+ has_filename = false;
+ has_bracket = false;
+ header = "";
+ }
+ else if (*bk == ',' && !in_quote)
+ {
+ in_digit = false;
+ }
+ else if (isspace(*bk) && !in_quote)
+ {
+ in_digit = false;
+ }
+ else if (bk[0] == 'a' && bk[1] == 't' && has_bracket && !in_quote)
+ {
+ has_at = true;
+ header += 'a';
+ }
+ else if (bk[0] == ':' && has_at && isdigit(bk[1]) && !in_quote)
+ {
+ has_filename = true;
+ }
+ else if (in_header && !in_digit && !in_quote && !in_bracket)
+ {
+ header += *bk;
+ }
+ }
+ bk++;
+ }
+
+ std::string pIndependentBacktrace;
+ std::set<std::string>::iterator it = set_headers.begin();
+ for (; it != set_headers.end(); it++)
+ {
+ pIndependentBacktrace += *it;
+ }
+ VERB3 log("IndependentBacktrace:'%s'", pIndependentBacktrace.c_str());
+ return pIndependentBacktrace;
+}
+
+static void GetIndependentBuildIdPC(const std::string& pBuildIdPC, std::string& pIndependentBuildIdPC)
+{
+ int ii = 0;
+ while (ii < pBuildIdPC.length())
+ {
+ std::string line;
+ int jj = 0;
+
+ while (pBuildIdPC[ii] != '\n' && ii < pBuildIdPC.length())
+ {
+ line += pBuildIdPC[ii];
+ ii++;
+ }
+ while (line[jj] != '+' && jj < line.length())
+ {
+ jj++;
+ }
+ jj++;
+ while (line[jj] != '@' && jj < line.length())
+ {
+ if (!isspace(line[jj]))
+ {
+ pIndependentBuildIdPC += line[jj];
+ }
+ jj++;
+ }
+ ii++;
+ }
+}
+
+static std::string run_unstrip_n(const char *pDebugDumpDir)
+{
+ std::string UID;
+ {
+ CDebugDump dd;
+ dd.Open(pDebugDumpDir);
+ dd.LoadText(FILENAME_UID, UID);
+ }
+
+ char* args[4];
+ args[0] = (char*)"eu-unstrip";
+ args[1] = xasprintf("--core=%s/"FILENAME_COREDUMP, pDebugDumpDir);
+ args[2] = (char*)"-n";
+ args[3] = NULL;
+
+ std::string output;
+ ExecVP(args, atoi(UID.c_str()), output);
+
+ free(args[1]);
+
+ return output;
+}
+
+#if 0
+/* older code */
+static bool is_hexstr(const char* str)
+{
+ while (*str)
+ {
+ if (!isxdigit(*str))
+ return false;
+ str++;
+ }
+ return true;
+}
+static void InstallDebugInfos(const char *pDebugDumpDir, std::string& build_ids)
+{
+ log("Getting module names, file names, build IDs from core file");
+ std::string unstrip_list = run_unstrip_n(pDebugDumpDir);
+
+ log("Builting list of missing debuginfos");
+ // lines look like this:
+ // 0x400000+0x209000 23c77451cf6adff77fc1f5ee2a01d75de6511dda@0x40024c - - [exe]
+ // 0x400000+0x209000 ab3c8286aac6c043fd1bb1cc2a0b88ec29517d3e@0x40024c /bin/sleep /usr/lib/debug/bin/sleep.debug [exe]
+ // 0x7fff313ff000+0x1000 389c7475e3d5401c55953a425a2042ef62c4c7df@0x7fff313ff2f8 . - linux-vdso.so.1
+ vector_string_t missing;
+ char *dup = xstrdup(unstrip_list.c_str());
+ char *p = dup;
+ char c;
+ do {
+ char* end = strchrnul(p, '\n');
+ c = *end;
+ *end = '\0';
+ char* word2 = strchr(p, ' ');
+ if (!word2)
+ continue;
+ word2++;
+ char* endsp = strchr(word2, ' ');
+ if (!endsp)
+ continue;
+ /* endsp points to 2nd space in the line now*/
+
+ /* This filters out linux-vdso.so, among others */
+ if (strstr(endsp, "[exe]") == NULL && endsp[1] != '/')
+ continue;
+ *endsp = '\0';
+ char* at = strchrnul(word2, '@');
+ *at = '\0';
+
+ bool file_exists = 1;
+ if (word2[0] && word2[1] && is_hexstr(word2))
+ {
+ struct stat sb;
+ char *fn = xasprintf("/usr/lib/debug/.build-id/%.2s/%s.debug", word2, word2 + 2);
+ /* Not lstat: this is a symlink and we want link's TARGET to exist */
+ file_exists = stat(fn, &sb) == 0 && S_ISREG(sb.st_mode);
+ free(fn);
+ build_ids += "build-id ";
+ build_ids += word2;
+ build_ids += file_exists ? " (debuginfo present)\n" : " (debuginfo absent)\n";
+ }
+ log("build_id:%s exists:%d", word2, (int)file_exists);
+ if (!file_exists)
+ missing.push_back(word2);
+
+ p = end + 1;
+ } while (c);
+ free(dup);
+
+ if (missing.size() == 0)
+ {
+ log("All debuginfos are present, not installing debuginfo packages");
+ return;
+ }
+ //missing vector is unused for now, but TODO: use it to install only needed debuginfos
+
+ std::string package;
+ {
+ CDebugDump dd;
+ dd.Open(pDebugDumpDir);
+ dd.LoadText(FILENAME_PACKAGE, package);
+ }
+
+ update_client(_("Searching for debug-info packages..."));
+
+ int pipein[2], pipeout[2];
+ xpipe(pipein);
+ xpipe(pipeout);
+
+ pid_t child = fork();
+ if (child < 0)
+ {
+ /*close(pipein[0]); close(pipeout[0]); - why bother */
+ /*close(pipein[1]); close(pipeout[1]); */
+ perror_msg_and_die("fork");
+ }
+ if (child == 0)
+ {
+ close(pipein[1]);
+ close(pipeout[0]);
+ xmove_fd(pipein[0], STDIN_FILENO);
+ xmove_fd(pipeout[1], STDOUT_FILENO);
+ /* Not a good idea, we won't see any error messages */
+ /*close(STDERR_FILENO);*/
+
+ setsid();
+/* Honestly, I do not know what is worse, pk-debuginfo-install or debuginfo-install:
+
+# pk-debuginfo-install -y -- coreutils-7.2-4.fc11
+1. Getting sources list...OK. Found 16 enabled and 23 disabled sources.
+2. Finding debugging sources...OK. Found 0 disabled debuginfo repos.
+3. Enabling debugging sources...OK. Enabled 0 debugging sources.
+4. Finding debugging packages...Failed to find the package : more than one package found for
+Failed to find the package : more than one package found for
+FAILED. Found no packages to install.
+5. Disabling sources previously enabled...OK. Disabled 0 debugging sources.
+
+:( FAIL!
+
+# debuginfo-install -y -- coreutils-7.2-4.fc11
+Loaded plugins: refresh-packagekit
+Another application is holding the yum lock, cannot continue
+
+:( FAIL!
+
+# debuginfo-install -y -- coreutils-7.2-4.fc11
+(second time in a row - it worked)
+
+*/
+ /* log() goes to stderr/syslog, it's ok to use it here */
+ VERB1 log("Executing: %s %s %s %s", "pk-debuginfo-install", "-y", "--", package.c_str());
+ execlp("pk-debuginfo-install", "pk-debuginfo-install", "-y", "--", package.c_str(), NULL);
+ /* fall back */
+ VERB1 log("Executing: %s %s %s %s", "debuginfo-install", "-y", "--", package.c_str());
+ execlp("debuginfo-install", "debuginfo-install", "-y", "--", package.c_str(), NULL);
+ exit(1);
+ }
+
+ close(pipein[0]);
+ close(pipeout[1]);
+
+ /* Should not be needed (we use -y option), but just in case: */
+ safe_write(pipein[1], "y\n", sizeof("y\n")-1);
+ close(pipein[1]);
+
+ update_client(_("Downloading and installing debug-info packages..."));
+
+ FILE *pipeout_fp = fdopen(pipeout[0], "r");
+ if (pipeout_fp == NULL) /* never happens */
+ {
+ close(pipeout[0]);
+ wait(NULL);
+ return;
+ }
+
+/* glx-utils, for example, do not have glx-utils-debuginfo package.
+ * Disabled code was causing failures in backtrace decoding.
+ * This does not seem to be useful.
+ */
+#ifdef COMPLAIN_IF_NO_DEBUGINFO
+ bool already_installed = false;
+#endif
+ char buff[1024];
+ std::string packageName = package.substr(0, package.rfind("-", package.rfind("-")-1));
+ while (fgets(buff, sizeof(buff), pipeout_fp))
+ {
+ int last = strlen(buff) - 1;
+ if (last >= 0 && buff[last] == '\n')
+ buff[last] = '\0';
+
+ log("%s", buff);
+ update_client("%s", buff); /* maybe only if buff != ""? */
+
+#ifdef COMPLAIN_IF_NO_DEBUGINFO
+ if (already_installed == false)
+ {
+ /* "Package foo-debuginfo-1.2-5.ARCH already installed and latest version" */
+ char* pn = strstr(buff, packageName.c_str());
+ if (pn)
+ {
+ char* already_str = strstr(pn, "already installed and latest version");
+ if (already_str)
+ {
+ already_installed = true;
+ }
+ }
+ }
+
+ if (already_installed == false &&
+ (strstr(buff, "No debuginfo packages available to install") != NULL ||
+ strstr(buff, "Could not find debuginfo for main pkg") != NULL ||
+ strstr(buff, "Could not find debuginfo pkg for dependency package") != NULL))
+ {
+ fclose(pipeout_fp);
+ kill(child, SIGTERM);
+ wait(NULL);
+ throw CABRTException(EXCEP_PLUGIN, std::string(__func__) + ": cannot install debuginfos for " + pPackage);
+ }
+#endif
+ }
+
+ fclose(pipeout_fp);
+ wait(NULL);
+}
+#endif
+/* Needs gdb feature from here: https://bugzilla.redhat.com/show_bug.cgi?id=528668
+ * It is slated to be in F12/RHEL6.
+ */
+static void InstallDebugInfos(const char *pDebugDumpDir, std::string& build_ids)
+{
+ update_client(_("Searching for debug-info packages..."));
+
+ int pipeout[2]; //TODO: can we use ExecVP?
+ xpipe(pipeout);
+
+ pid_t child = fork();
+ if (child < 0)
+ {
+ /*close(pipeout[0]); - why bother */
+ /*close(pipeout[1]); */
+ perror_msg_and_die("fork");
+ }
+ if (child == 0)
+ {
+ close(pipeout[0]);
+ xmove_fd(pipeout[1], STDOUT_FILENO);
+ close(STDIN_FILENO);
+ xopen("/dev/null", O_RDONLY);
+ /* Not a good idea, we won't see any error messages */
+ /*close(STDERR_FILENO);*/
+
+ setsid();
+
+ char *coredump = xasprintf("%s/"FILENAME_COREDUMP, pDebugDumpDir);
+ /* SELinux guys are not happy with /tmp, using /var/run/abrt */
+ char *tempdir = xasprintf(LOCALSTATEDIR"/run/abrt/tmp-%u-%lu", (int)getpid(), (long)time(NULL));
+ /* log() goes to stderr/syslog, it's ok to use it here */
+ VERB1 log("Executing: %s %s %s %s", "abrt-debuginfo-install", coredump, tempdir, DEBUGINFO_CACHE_DIR);
+ execlp("abrt-debuginfo-install", "abrt-debuginfo-install", coredump, tempdir, DEBUGINFO_CACHE_DIR, NULL);
+ exit(1);
+ }
+
+ close(pipeout[1]);
+
+ update_client(_("Downloading and installing debug-info packages..."));
+
+ FILE *pipeout_fp = fdopen(pipeout[0], "r");
+ if (pipeout_fp == NULL) /* never happens */
+ {
+ close(pipeout[0]);
+ wait(NULL);
+ return;
+ }
+
+ char buff[1024];
+ while (fgets(buff, sizeof(buff), pipeout_fp))
+ {
+ int last = strlen(buff) - 1;
+ if (last >= 0 && buff[last] == '\n')
+ buff[last] = '\0';
+
+ if (strncmp(buff, "MISSING:", 8) == 0)
+ {
+ build_ids += "Debuginfo absent: ";
+ build_ids += buff + 8;
+ build_ids += "\n";
+ }
+
+ const char *p = buff;
+ while (*p == ' ' || *p == '\t')
+ {
+ p++;
+ }
+ if (*p)
+ {
+ log("%s", buff);
+ update_client("%s", buff);
+ }
+ }
+
+ fclose(pipeout_fp);
+ wait(NULL);
+}
+
+static double get_dir_size(const char *dirname, std::string *worst_file, double *maxsz)
+{
+ DIR *dp = opendir(dirname);
+ if (dp == NULL)
+ return 0;
+
+ struct dirent *ep;
+ struct stat stats;
+ double size = 0;
+ while ((ep = readdir(dp)) != NULL)
+ {
+ if (dot_or_dotdot(ep->d_name))
+ continue;
+ std::string dname = concat_path_file(dirname, ep->d_name);
+ if (lstat(dname.c_str(), &stats) != 0)
+ continue;
+ if (S_ISDIR(stats.st_mode))
+ {
+ double sz = get_dir_size(dname.c_str(), worst_file, maxsz);
+ size += sz;
+ }
+ else if (S_ISREG(stats.st_mode))
+ {
+ double sz = stats.st_size;
+ size += sz;
+
+ if (worst_file)
+ {
+ /* Calculate "weighted" size and age
+ * w = sz_kbytes * age_mins */
+ sz /= 1024;
+ long age = (time(NULL) - stats.st_mtime) / 60;
+ if (age > 0)
+ sz *= age;
+
+ if (sz > *maxsz)
+ {
+ *maxsz = sz;
+ *worst_file = dname;
+ }
+ }
+ }
+ }
+ closedir(dp);
+ return size;
+}
+
+static void trim_debuginfo_cache(unsigned max_mb)
+{
+ while (1)
+ {
+ std::string worst_file;
+ double maxsz = 0;
+ double cache_sz = get_dir_size(DEBUGINFO_CACHE_DIR, &worst_file, &maxsz);
+ if (cache_sz / (1024 * 1024) < max_mb)
+ break;
+ VERB1 log("%s is %.0f bytes (over %u MB), deleting '%s'",
+ DEBUGINFO_CACHE_DIR, cache_sz, max_mb, worst_file.c_str());
+ if (unlink(worst_file.c_str()) != 0)
+ perror_msg("Can't unlink '%s'", worst_file.c_str());
+ }
+}
+
+std::string CAnalyzerFirefox::GetLocalUUID(const char *pDebugDumpDir)
+{
+ log(_("Getting local universal unique identification..."));
+
+ std::string executable;
+ std::string package;
+ {
+ CDebugDump dd;
+ dd.Open(pDebugDumpDir);
+ dd.LoadText(FILENAME_EXECUTABLE, executable);
+ dd.LoadText(FILENAME_PACKAGE, package);
+ }
+
+ std::string buildIdPC = run_unstrip_n(pDebugDumpDir);
+ std::string independentBuildIdPC;
+ GetIndependentBuildIdPC(buildIdPC, independentBuildIdPC);
+ return CreateHash(package + executable + independentBuildIdPC);
+}
+
+std::string CAnalyzerFirefox::GetGlobalUUID(const char *pDebugDumpDir)
+{
+ log(_("Getting global universal unique identification..."));
+
+ std::string backtrace;
+ std::string executable;
+ std::string package;
+ {
+ CDebugDump dd;
+ dd.Open(pDebugDumpDir);
+ dd.LoadText(FILENAME_BACKTRACE, backtrace);
+ dd.LoadText(FILENAME_EXECUTABLE, executable);
+ dd.LoadText(FILENAME_PACKAGE, package);
+ }
+ std::string independentBacktrace = GetIndependentBacktrace(backtrace);
+ return CreateHash(package + executable + independentBacktrace);
+}
+
+static bool DebuginfoCheckPolkit(int uid)
+{
+ int child_pid = fork();
+ if (child_pid < 0)
+ {
+ perror_msg_and_die("fork");
+ }
+ if (child_pid == 0)
+ {
+ //child
+ if (setuid(uid))
+ exit(1); //paranoia
+ PolkitResult result = polkit_check_authorization(getpid(),
+ "org.fedoraproject.abrt.install-debuginfos");
+ exit(result != PolkitYes); //exit 1 (failure) if not allowed
+ }
+
+ //parent
+ int status;
+ if (waitpid(child_pid, &status, 0) > 0 && WEXITSTATUS(status) == 0)
+ {
+ return true; //authorization OK
+ }
+ log("UID %d is not authorized to install debuginfos", uid);
+ return false;
+}
+
+void CAnalyzerFirefox::CreateReport(const char *pDebugDumpDir, int force)
+{
+ update_client(_("Starting report creation..."));
+
+ std::string package;
+ std::string backtrace;
+ std::string UID;
+
+ CDebugDump dd;
+ dd.Open(pDebugDumpDir);
+
+ if (!force)
+ {
+ bool bt_exists = dd.Exist(FILENAME_BACKTRACE);
+ if (bt_exists)
+ {
+ return; /* backtrace already exists */
+ }
+ }
+
+ dd.LoadText(FILENAME_PACKAGE, package);
+ dd.LoadText(FILENAME_UID, UID);
+ dd.Close(); /* do not keep dir locked longer than needed */
+
+ std::string build_ids;
+ if (m_bInstallDebugInfo && DebuginfoCheckPolkit(atoi(UID.c_str()))) {
+ if (m_nDebugInfoCacheMB > 0)
+ trim_debuginfo_cache(m_nDebugInfoCacheMB);
+ InstallDebugInfos(pDebugDumpDir, build_ids);
+ }
+ else
+ {
+ VERB1 log(_("Skipping debuginfo installation"));
+ }
+
+ GetBacktrace(pDebugDumpDir, backtrace);
+
+ dd.Open(pDebugDumpDir);
+ dd.SaveText(FILENAME_BACKTRACE, (build_ids + backtrace).c_str());
+ if (m_bMemoryMap)
+ {
+ dd.SaveText(FILENAME_MEMORYMAP, "memory map of the crashed C/C++ application, not implemented yet");
+ }
+ dd.SaveText(FILENAME_RATING, to_string(rate_backtrace(backtrace.c_str())).c_str());
+ dd.Close();
+}
+
+void CAnalyzerFirefox::Init()
+{
+ std::ifstream fInCorePattern;
+ fInCorePattern.open(CORE_PATTERN_IFACE);
+ if (fInCorePattern.is_open())
+ {
+ getline(fInCorePattern, m_sOldCorePattern);
+ fInCorePattern.close();
+ }
+ if (m_sOldCorePattern[0] == '|')
+ {
+ if (m_sOldCorePattern == CORE_PATTERN)
+ {
+ log("warning: %s already contains %s, "
+ "did abrt daemon crash recently?",
+ CORE_PATTERN_IFACE, CORE_PATTERN);
+ /* There is no point in "restoring" CORE_PATTERN_IFACE
+ * to CORE_PATTERN on exit. Will restore to a default value:
+ */
+ m_sOldCorePattern = "core";
+ } else {
+ log("warning: %s was already set to run a crash analyser (%s), "
+ "abrt may interfere with it",
+ CORE_PATTERN_IFACE, CORE_PATTERN);
+ }
+ }
+
+ std::ofstream fOutCorePattern;
+ fOutCorePattern.open(CORE_PATTERN_IFACE);
+ if (fOutCorePattern.is_open())
+ {
+ fOutCorePattern << CORE_PATTERN << std::endl;
+ fOutCorePattern.close();
+ }
+}
+
+void CAnalyzerFirefox::DeInit()
+{
+ std::ofstream fOutCorePattern;
+ fOutCorePattern.open(CORE_PATTERN_IFACE);
+ if (fOutCorePattern.is_open())
+ {
+ fOutCorePattern << m_sOldCorePattern << std::endl;
+ fOutCorePattern.close();
+ }
+}
+
+void CAnalyzerFirefox::SetSettings(const map_plugin_settings_t& pSettings)
+{
+ m_pSettings = pSettings;
+
+ map_plugin_settings_t::const_iterator end = pSettings.end();
+ map_plugin_settings_t::const_iterator it;
+ it = pSettings.find("MemoryMap");
+ if (it != end)
+ {
+ m_bMemoryMap = string_to_bool(it->second.c_str());
+ }
+ it = pSettings.find("DebugInfo");
+ if (it != end)
+ {
+ m_sDebugInfo = it->second;
+ }
+ it = pSettings.find("DebugInfoCacheMB");
+ if (it != end)
+ {
+ m_nDebugInfoCacheMB = atoi(it->second.c_str());
+ }
+ it = pSettings.find("InstallDebugInfo");
+ if (it == end) //compat, remove after 0.0.11
+ it = pSettings.find("InstallDebuginfo");
+ if (it != end)
+ {
+ m_bInstallDebugInfo = string_to_bool(it->second.c_str());
+ }
+}
+
+//ok to delete?
+//const map_plugin_settings_t& CAnalyzerCCpp::GetSettings()
+//{
+// m_pSettings["MemoryMap"] = m_bMemoryMap ? "yes" : "no";
+// m_pSettings["DebugInfo"] = m_sDebugInfo;
+// m_pSettings["DebugInfoCacheMB"] = to_string(m_nDebugInfoCacheMB);
+// m_pSettings["InstallDebugInfo"] = m_bInstallDebugInfo ? "yes" : "no";
+//
+// return m_pSettings;
+//}
+
+PLUGIN_INFO(ANALYZER,
+ CAnalyzerFirefox,
+ "Firefox",
+ "0.0.1",
+ "Firefox analyzer plugin.",
+ "zprikryl@redhat.com",
+ "https://fedorahosted.org/abrt/wiki",
+ "");
diff --git a/lib/Plugins/Firefox.h b/lib/Plugins/Firefox.h
new file mode 100644
index 00000000..0669f4fd
--- /dev/null
+++ b/lib/Plugins/Firefox.h
@@ -0,0 +1,51 @@
+/*
+ Firefox.h - header file for Firefox analyzer plugin
+ - it can get UUID and memory maps from core files
+
+ Copyright (C) 2009 Zdenek Prikryl (zprikryl@redhat.com)
+ Copyright (C) 2009 RedHat inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef CCPP_H_
+#define CCPP_H_
+
+#include <string>
+#include "Plugin.h"
+#include "Analyzer.h"
+
+class CAnalyzerFirefox : public CAnalyzer
+{
+ private:
+ bool m_bMemoryMap;
+ bool m_bInstallDebugInfo;
+ unsigned m_nDebugInfoCacheMB;
+ std::string m_sOldCorePattern;
+ std::string m_sDebugInfo;
+
+ public:
+ CAnalyzerFirefox();
+ virtual std::string GetLocalUUID(const char *pDebugDumpDir);
+ virtual std::string GetGlobalUUID(const char *pDebugDumpDir);
+ virtual void CreateReport(const char *pDebugDumpDir, int force);
+ virtual void Init();
+ virtual void DeInit();
+ virtual void SetSettings(const map_plugin_settings_t& pSettings);
+//ok to delete?
+// virtual const map_plugin_settings_t& GetSettings();
+};
+
+#endif /* CCPP */
diff --git a/lib/Plugins/Kerneloops.cpp b/lib/Plugins/Kerneloops.cpp
index b99183c3..2e28cf4a 100644
--- a/lib/Plugins/Kerneloops.cpp
+++ b/lib/Plugins/Kerneloops.cpp
@@ -67,7 +67,7 @@ PLUGIN_INFO(ANALYZER,
CAnalyzerKerneloops,
"Kerneloops",
"0.0.2",
- "Abrt's Kerneloops plugin.",
+ "Analyzes kernel oopses",
"anton@redhat.com",
"https://people.redhat.com/aarapov",
"");
diff --git a/lib/Plugins/KerneloopsReporter.cpp b/lib/Plugins/KerneloopsReporter.cpp
index f7a6cbb8..f38f5031 100644
--- a/lib/Plugins/KerneloopsReporter.cpp
+++ b/lib/Plugins/KerneloopsReporter.cpp
@@ -140,7 +140,7 @@ PLUGIN_INFO(REPORTER,
CKerneloopsReporter,
"KerneloopsReporter",
"0.0.1",
- "Sends the Kerneloops crash information to Kerneloops.org",
+ "Sends kernel oops information to kerneloops.org",
"anton@redhat.com",
"http://people.redhat.com/aarapov",
PLUGINS_LIB_DIR"/KerneloopsReporter.GTKBuilder");
diff --git a/lib/Plugins/KerneloopsScanner.cpp b/lib/Plugins/KerneloopsScanner.cpp
index 8c8cd4b9..3831f9e6 100644
--- a/lib/Plugins/KerneloopsScanner.cpp
+++ b/lib/Plugins/KerneloopsScanner.cpp
@@ -163,7 +163,7 @@ int CKerneloopsScanner::ScanSysLogFile(const char *filename)
*/
sz = statb.st_size + 1024;
if (statb.st_size > (32*1024*1024 - 1024)) {
- xlseek(fd, -(32*1024*1024 - 1024), SEEK_END);
+ xlseek(fd, statb.st_size - (32*1024*1024 - 1024), SEEK_SET);
sz = 32*1024*1024;
}
buffer = (char*)xzalloc(sz);
@@ -184,7 +184,7 @@ PLUGIN_INFO(ACTION,
CKerneloopsScanner,
"KerneloopsScanner",
"0.0.1",
- "Save new Kerneloops crashes into debug dump dir",
+ "Periodically scans for and saves kernel oopses",
"anton@redhat.com",
"http://people.redhat.com/aarapov",
"");
diff --git a/lib/Plugins/Logger.cpp b/lib/Plugins/Logger.cpp
index 6babc732..7267b648 100644
--- a/lib/Plugins/Logger.cpp
+++ b/lib/Plugins/Logger.cpp
@@ -91,7 +91,7 @@ PLUGIN_INFO(REPORTER,
CLogger,
"Logger",
"0.0.1",
- "Write a report to a specific file",
+ "Writes report to a file",
"zprikryl@redhat.com",
"https://fedorahosted.org/abrt/wiki",
PLUGINS_LIB_DIR"/Logger.GTKBuilder");
diff --git a/lib/Plugins/Mailx.cpp b/lib/Plugins/Mailx.cpp
index 1979f9e8..32eeb25c 100644
--- a/lib/Plugins/Mailx.cpp
+++ b/lib/Plugins/Mailx.cpp
@@ -33,168 +33,143 @@ CMailx::CMailx() :
m_sEmailFrom("user@localhost"),
m_sEmailTo("root@localhost"),
m_sSubject("[abrt] full crash report"),
- m_bSendBinaryData(false),
- m_nArgs(0),
- m_pArgs(NULL)
+ m_bSendBinaryData(false)
{}
-void CMailx::FreeMailxArgs()
-{
- int ii;
- for (ii = 0; ii < m_nArgs; ii++)
- {
- free(m_pArgs[ii]);
- }
- free((void*) m_pArgs);
- m_pArgs = NULL;
- m_nArgs = 0;
-}
-
-void CMailx::AddMailxArg(const std::string& pArg)
-{
- m_pArgs = (char**) realloc((void*)m_pArgs, (++m_nArgs) * (sizeof(char*)));
- if (pArg == "")
- {
- m_pArgs[m_nArgs - 1] = NULL;
- }
- else
- {
- m_pArgs[m_nArgs - 1] = strdup(pArg.c_str());
- }
-}
-
-void CMailx::ExecMailx(uid_t uid, const std::string& pText)
+static void exec_and_feed_input(uid_t uid, const char* pText, char **pArgs)
{
int pipein[2];
pid_t child;
- struct passwd* pw = getpwuid(uid);
- if (!pw)
- {
- throw CABRTException(EXCEP_PLUGIN, std::string(__func__) + ": cannot get GID for UID.");
- }
-
xpipe(pipein);
child = fork();
if (child == -1)
{
close(pipein[0]);
close(pipein[1]);
- throw CABRTException(EXCEP_PLUGIN, std::string(__func__) + ": fork failed.");
+ throw CABRTException(EXCEP_PLUGIN, "Can't fork");
}
if (child == 0)
{
-
close(pipein[1]);
xmove_fd(pipein[0], STDIN_FILENO);
- setgroups(1, &pw->pw_gid);
- setregid(pw->pw_gid, pw->pw_gid);
+ struct passwd* pw = getpwuid(uid);
+ gid_t gid = pw ? pw->pw_gid : uid;
+ setgroups(1, &gid);
+ setregid(gid, gid);
setreuid(uid, uid);
- setsid();
+ setsid(); /* why? I propose removing this */
- execvp(MAILX_COMMAND, m_pArgs);
- exit(0);
+ execvp(pArgs[0], pArgs);
+ exit(1); /* exec failed */
}
close(pipein[0]);
- safe_write(pipein[1], pText.c_str(), pText.length());
+ safe_write(pipein[1], pText, strlen(pText));
close(pipein[1]);
- wait(NULL); /* why? */
+ wait(NULL); /* wait for command completion */
}
-void CMailx::SendEmail(const std::string& pSubject, const std::string& pText, const std::string& pUID)
+static char** append_str_to_vector(char **vec, unsigned &size, const char *str)
{
- update_client(_("Sending an email..."));
-
- AddMailxArg("-s");
- AddMailxArg(pSubject);
- AddMailxArg("-r");
- AddMailxArg(m_sEmailFrom);
- AddMailxArg(m_sEmailTo);
- AddMailxArg("");
-
- ExecMailx(atoi(pUID.c_str()), pText);
+ //log("old vec: %p", vec);
+ vec = (char**) xrealloc(vec, (size+2) * sizeof(vec[0]));
+ vec[size] = xstrdup(str);
+ //log("new vec: %p, added [%d] %p", vec, size, vec[size]);
+ size++;
+ vec[size] = NULL;
+ return vec;
}
-std::string CMailx::Report(const map_crash_report_t& pCrashReport,
+std::string CMailx::Report(const map_crash_report_t& pCrashReport,
const map_plugin_settings_t& pSettings, const std::string& pArgs)
{
- update_client(_("Creating a report..."));
-
- std::stringstream emailBody;
- std::stringstream binaryFiles, commonFiles, bigTextFiles, additionalFiles, UUIDFile;
-
- AddMailxArg(MAILX_COMMAND);
+ char **args = NULL;
+ unsigned arg_size = 0;
+ args = append_str_to_vector(args, arg_size, MAILX_COMMAND);
+ std::string binaryFiles, commonFiles, bigTextFiles, additionalFiles, UUIDFile;
map_crash_report_t::const_iterator it;
for (it = pCrashReport.begin(); it != pCrashReport.end(); it++)
{
if (it->second[CD_TYPE] == CD_TXT)
{
- if (it->first != CD_UUID &&
- it->first != FILENAME_ARCHITECTURE &&
- it->first != FILENAME_KERNEL &&
- it->first != FILENAME_PACKAGE)
- {
- additionalFiles << it->first << std::endl;
- additionalFiles << "-----" << std::endl;
- additionalFiles << it->second[CD_CONTENT] << std::endl << std::endl;
+ if (it->first != CD_UUID
+ && it->first != FILENAME_ARCHITECTURE
+ && it->first != FILENAME_KERNEL
+ && it->first != FILENAME_PACKAGE
+ ) {
+ additionalFiles += it->first;
+ additionalFiles += "\n-----\n";
+ additionalFiles += it->second[CD_CONTENT];
+ additionalFiles += "\n\n";
}
else if (it->first == CD_UUID)
{
- UUIDFile << it->first << std::endl;
- UUIDFile << "-----" << std::endl;
- UUIDFile << it->second[CD_CONTENT] << std::endl << std::endl;
+ UUIDFile += it->first;
+ UUIDFile += "\n-----\n";
+ UUIDFile += it->second[CD_CONTENT];
+ UUIDFile += "\n\n";
}
else
{
- commonFiles << it->first << std::endl;
- commonFiles << "-----" << std::endl;
- commonFiles << it->second[CD_CONTENT] << std::endl << std::endl;
+ commonFiles += it->first;
+ commonFiles += "\n-----\n";
+ commonFiles += it->second[CD_CONTENT];
+ commonFiles += "\n\n";
}
}
if (it->second[CD_TYPE] == CD_ATT)
{
- bigTextFiles << it->first << std::endl;
- bigTextFiles << "-----" << std::endl;
- bigTextFiles << it->second[CD_CONTENT] << std::endl << std::endl;
+ bigTextFiles += it->first;
+ bigTextFiles += "\n-----\n";
+ bigTextFiles += it->second[CD_CONTENT];
+ bigTextFiles += "\n\n";
}
if (it->second[CD_TYPE] == CD_BIN)
{
- binaryFiles << " -a " << it->second[CD_CONTENT];
+ binaryFiles += " -a ";
+ binaryFiles += it->second[CD_CONTENT];
if (m_bSendBinaryData)
{
- AddMailxArg("-a");
- AddMailxArg(it->second[CD_CONTENT]);
+ args = append_str_to_vector(args, arg_size, "-a");
+ args = append_str_to_vector(args, arg_size, it->second[CD_CONTENT].c_str());
}
}
}
- emailBody << "Duplicity check" << std::endl;
- emailBody << "=====" << std::endl << std::endl;
- emailBody << UUIDFile.str() << std::endl;
- emailBody << "Common information" << std::endl;
- emailBody << "=====" << std::endl << std::endl;
- emailBody << commonFiles.str() << std::endl;
- emailBody << "Additional information" << std::endl;
- emailBody << "=====" << std::endl << std::endl;
- emailBody << additionalFiles.str() << std::endl;
- emailBody << "Other information" << std::endl;
- emailBody << "=====" << std::endl << std::endl;
- emailBody << bigTextFiles.str() << std::endl;
-
- if (pArgs != "")
- {
- SendEmail(pArgs, emailBody.str(), pCrashReport.find(CD_MWUID)->second[CD_CONTENT]);
- }
- else
+ std::string emailBody = "Duplicity check\n";
+ emailBody += "=====\n\n";
+ emailBody += UUIDFile;
+ emailBody += "\nCommon information\n";
+ emailBody += "=====\n\n";
+ emailBody += commonFiles;
+ emailBody += "\nAdditional information\n";
+ emailBody += "=====\n\n";
+ emailBody += additionalFiles;
+ emailBody += "\nOther information\n";
+ emailBody += "=====\n\n";
+ emailBody += bigTextFiles;
+ emailBody += '\n';
+
+ args = append_str_to_vector(args, arg_size, "-s");
+ args = append_str_to_vector(args, arg_size, (pArgs != "" ? pArgs.c_str() : m_sSubject.c_str()));
+ args = append_str_to_vector(args, arg_size, "-r");
+ args = append_str_to_vector(args, arg_size, m_sEmailFrom.c_str());
+ args = append_str_to_vector(args, arg_size, m_sEmailTo.c_str());
+
+ update_client(_("Sending an email..."));
+ const char *uid_str = pCrashReport.find(CD_MWUID)->second[CD_CONTENT].c_str();
+ exec_and_feed_input(atoi(uid_str), emailBody.c_str(), args);
+
+ while (*args)
{
- SendEmail(m_sSubject, emailBody.str(), pCrashReport.find(CD_MWUID)->second[CD_CONTENT]);
+ free(*args++);
}
-
- FreeMailxArgs();
+ args -= arg_size;
+ free(args);
return "Email was sent to: " + m_sEmailTo;
}
@@ -242,7 +217,7 @@ PLUGIN_INFO(REPORTER,
CMailx,
"Mailx",
"0.0.2",
- "Sends an email with a report via mailx command",
+ "Sends an email with a report (via mailx command)",
"zprikryl@redhat.com",
"https://fedorahosted.org/abrt/wiki",
PLUGINS_LIB_DIR"/Mailx.GTKBuilder");
diff --git a/lib/Plugins/Mailx.h b/lib/Plugins/Mailx.h
index 4aa861f1..d6d66bd8 100644
--- a/lib/Plugins/Mailx.h
+++ b/lib/Plugins/Mailx.h
@@ -35,14 +35,6 @@ class CMailx : public CReporter
std::string m_sSubject;
bool m_bSendBinaryData;
- int m_nArgs;
- char** m_pArgs;
-
- void FreeMailxArgs();
- void AddMailxArg(const std::string& pArg);
- void ExecMailx(uid_t uid, const std::string& pText);
- void SendEmail(const std::string& pSubject, const std::string& pText, const std::string& pUID);
-
public:
CMailx();
@@ -54,4 +46,4 @@ class CMailx : public CReporter
const std::string& pArgs);
};
-#endif /* MAILX_H_ */
+#endif
diff --git a/lib/Plugins/Makefile.am b/lib/Plugins/Makefile.am
index 0502f5e1..9d80d91f 100644
--- a/lib/Plugins/Makefile.am
+++ b/lib/Plugins/Makefile.am
@@ -15,6 +15,7 @@ pluginslib_LTLIBRARIES = \
libTicketUploader.la \
libPython.la \
libFileTransfer.la
+# libFirefox.la
dist_pluginslib_DATA = \
KerneloopsReporter.GTKBuilder Logger.GTKBuilder \
@@ -58,6 +59,17 @@ libCCpp_la_CPPFLAGS = -I$(srcdir)/../../inc -I$(srcdir)/../Utils \
-DLOCALSTATEDIR='"$(localstatedir)"' \
$(NSS_CFLAGS)
+
+# Firefox - disabled for now
+#libFirefox_la_SOURCES = Firefox.cpp Firefox.h
+#libFirefox_la_LDFLAGS = -avoid-version
+#libFirefox_la_LIBADD = $(NSS_LIBS)
+#libFirefox_la_CPPFLAGS = -I$(srcdir)/../../inc -I$(srcdir)/../Utils \
+# -DCCPP_HOOK_PATH=\"${libexecdir}/hookCCpp\" \
+# -DDEBUG_DUMPS_DIR=\"$(DEBUG_DUMPS_DIR)\" \
+# -DLOCALSTATEDIR='"$(localstatedir)"' \
+# $(NSS_CFLAGS)
+
# Kerneloops
libKerneloops_la_SOURCES = Kerneloops.cpp Kerneloops.h
libKerneloops_la_LDFLAGS = -avoid-version
diff --git a/lib/Plugins/Python.cpp b/lib/Plugins/Python.cpp
index 9fb78808..a5e9909d 100644
--- a/lib/Plugins/Python.cpp
+++ b/lib/Plugins/Python.cpp
@@ -51,7 +51,7 @@ PLUGIN_INFO(ANALYZER,
CAnalyzerPython,
"Python",
"0.0.1",
- "Simple Python analyzer plugin.",
+ "Analyzes crashes in Python programs",
"zprikryl@redhat.com, jmoskovc@redhat.com",
"https://fedorahosted.org/abrt/wiki",
"");
diff --git a/lib/Plugins/RunApp.cpp b/lib/Plugins/RunApp.cpp
index e525d89c..f7cbc018 100644
--- a/lib/Plugins/RunApp.cpp
+++ b/lib/Plugins/RunApp.cpp
@@ -21,7 +21,6 @@
#include "RunApp.h"
-#include <stdio.h>
#include "DebugDump.h"
#include "ABRTException.h"
#include "CommLayerInner.h"
@@ -30,28 +29,49 @@
#define COMMAND 0
#define FILENAME 1
+using namespace std;
+
void CActionRunApp::Run(const char *pActionDir, const char *pArgs)
{
- update_client(_("Executing RunApp plugin..."));
+ /* Don't update_client() - actions run at crash time */
+ log("RunApp('%s','%s')", pActionDir, pArgs);
- std::string output;
vector_string_t args;
-
parse_args(pArgs, args, '"');
- FILE *fp = popen(args[COMMAND].c_str(), "r");
+ const char *cmd = args[COMMAND].c_str();
+ if (!cmd[0])
+ {
+ return;
+ }
+
+//FIXME: need to be able to escape " in .conf
+ /* Chdir to the dump dir. Command can analyze component and such.
+ * Example:
+ * test x"`cat component`" = x"xorg-x11-apps" && cp /var/log/Xorg.0.log .
+ */
+//Can do it using chdir() in child if we'd open-code popen
+ string cd_and_cmd = ssprintf("cd '%s'; %s", pActionDir, cmd);
+ VERB1 log("RunApp: executing '%s'", cd_and_cmd.c_str());
+ FILE *fp = popen(cd_and_cmd.c_str(), "r");
if (fp == NULL)
{
- throw CABRTException(EXCEP_PLUGIN, "Can't execute " + args[COMMAND]);
+ /* Happens only on resource starvation (fork fails or out-of-mem) */
+ return;
}
+
+//FIXME: RunApp("gzip -9 </var/log/Xorg.0.log", "Xorg.0.log.gz") fails
+//since we mangle NULs.
+ string output;
char line[1024];
while (fgets(line, 1024, fp) != NULL)
{
- output += line;
+ if (args.size() > FILENAME)
+ output += line;
}
pclose(fp);
- if (args.size() > 1)
+ if (args.size() > FILENAME)
{
CDebugDump dd;
dd.Open(pActionDir);
@@ -63,8 +83,7 @@ PLUGIN_INFO(ACTION,
CActionRunApp,
"RunApp",
"0.0.1",
- "Simple action plugin which runs a command "
- "and it can save command's output",
+ "Runs a command, saves its output",
"zprikryl@redhat.com",
"https://fedorahosted.org/abrt/wiki",
"");
diff --git a/lib/Plugins/SOSreport.cpp b/lib/Plugins/SOSreport.cpp
index 287c01e9..65d01a72 100644
--- a/lib/Plugins/SOSreport.cpp
+++ b/lib/Plugins/SOSreport.cpp
@@ -116,7 +116,7 @@ PLUGIN_INFO(ACTION,
CActionSOSreport,
"SOSreport",
"0.0.2",
- "Run sosreport, save the output in the crash dump",
+ "Runs sosreport, saves the output",
"gavin@redhat.com",
"https://fedorahosted.org/abrt/wiki",
"");
diff --git a/lib/Plugins/SQLite3.cpp b/lib/Plugins/SQLite3.cpp
index 3aad0545..cc639da3 100644
--- a/lib/Plugins/SQLite3.cpp
+++ b/lib/Plugins/SQLite3.cpp
@@ -34,7 +34,7 @@
// after a while, we can drop support for update, so a table can stay in
// normal limits
-static const char* upate_sql_commands[][ABRT_TABLE_VERSION + 1] = {
+static const char *const upate_sql_commands[][ABRT_TABLE_VERSION + 1] = {
// v0 -> *
{
// v0 -> v0
@@ -421,7 +421,7 @@ PLUGIN_INFO(DATABASE,
CSQLite3,
"SQLite3",
"0.0.2",
- "SQLite3 database plugin.",
+ "Keeps SQLite3 database about all crashes",
"zprikryl@redhat.com,jmoskovc@redhat.com",
"https://fedorahosted.org/abrt/wiki",
"");
diff --git a/lib/Plugins/TicketUploader.cpp b/lib/Plugins/TicketUploader.cpp
index 76bda400..847efdc0 100644
--- a/lib/Plugins/TicketUploader.cpp
+++ b/lib/Plugins/TicketUploader.cpp
@@ -295,28 +295,47 @@ string CTicketUploader::Report(const map_crash_report_t& pCrashReport,
}
// generate a reciept telling md5sum and encryption key
- ostringstream msgbuf;
+ // note: do not internationalize these strings!
+ string msg;
if (have_ticket_name)
- msgbuf << _("Please copy this into ticket: ") << ticket_name << endl;
+ {
+ msg += "Please copy this into ticket: ";
+ msg += ticket_name;
+ msg += '\n';
+ }
else
- msgbuf << _("Please send this to your technical support: ") << endl;
+ {
+ msg += "Please send this to your technical support:\n";
+ }
if (do_upload)
- msgbuf << _("RHUPLOAD: This report was sent to ") + upload_url << endl;
+ {
+ msg += "RHUPLOAD: This report was sent to ";
+ msg += upload_url;
+ msg += '\n';
+ }
else
- msgbuf << _("RHUPLOAD: This report was copied into /tmp/: ") << endl;
+ {
+ msg += "RHUPLOAD: This report was copied into /tmp/:\n";
+ }
if (have_ticket_name)
- msgbuf << _("TICKET: ") << ticket_name << endl;
- msgbuf << _("FILE: ") << outfile_basename << endl;
- msgbuf << _("MD5SUM: ") << endl;
- msgbuf << md5sum;
+ {
+ msg += "TICKET: ";
+ msg += ticket_name;
+ msg += '\n';
+ }
+ msg += "FILE: ";
+ msg += outfile_basename;
+ msg += "\nMD5SUM:\n";
+ msg += md5sum;
if (do_encrypt)
{
- msgbuf << _("KEY: aes-128-cbc") << endl;
- msgbuf << key;
+ msg += "KEY: aes-128-cbc\n";
+ msg += key;
}
- msgbuf << _("END: ") << endl;
+ msg += "END:\n";
- error_msg("%s", msgbuf.str().c_str());
+ /* warn the client: */
+ error_msg("%s", msg.c_str());
string ret;
if (do_upload)
@@ -400,7 +419,7 @@ PLUGIN_INFO(REPORTER,
CTicketUploader,
"TicketUploader",
"0.0.1",
- "input ticket# and customer name from user, send report to FTP",
+ "Asks ticket# and customer name from user, sends report to FTP",
"gavin@redhat.com",
- "https://fedorahosted.org/abtr/wiki",
+ "https://fedorahosted.org/abrt/wiki",
PLUGINS_LIB_DIR"/TicketUploader.GTKBuilder");
diff --git a/lib/Python/Makefile.am b/lib/Python/Makefile.am
deleted file mode 100644
index dd9eecaa..00000000
--- a/lib/Python/Makefile.am
+++ /dev/null
@@ -1,5 +0,0 @@
-pyexec_LTLIBRARIES = ABRTUtils.la
-ABRTUtils_la_SOURCES = PyDebugDump.cpp
-ABRTUtils_la_LDFLAGS = -module -avoid-version
-ABRTUtils_la_LIBADD = ../Utils/libABRTUtils.la
-ABRTUtils_la_CPPFLAGS = -fPIC -shared `python-config --cflags` -I../Utils
diff --git a/lib/Python/PyABRTUtils.cpp b/lib/Python/PyABRTUtils.cpp
deleted file mode 100644
index e56ba076..00000000
--- a/lib/Python/PyABRTUtils.cpp
+++ /dev/null
@@ -1,248 +0,0 @@
-/* This file was generated by PyBindGen 0.10.0 */
-#define PY_SSIZE_T_CLEAN
-#include <Python.h>
-#include <stddef.h>
-
-
-#if PY_VERSION_HEX < 0x020400F0
-
-#define PyEval_ThreadsInitialized() 1
-
-#define Py_CLEAR(op) \
- do { \
- if (op) { \
- PyObject *tmp = (PyObject *)(op); \
- (op) = NULL; \
- Py_DECREF(tmp); \
- } \
- } while (0)
-
-
-#define Py_VISIT(op) \
- do { \
- if (op) { \
- int vret = visit((PyObject *)(op), arg); \
- if (vret) \
- return vret; \
- } \
- } while (0)
-
-#endif
-
-
-
-#if PY_VERSION_HEX < 0x020500F0
-
-typedef int Py_ssize_t;
-# define PY_SSIZE_T_MAX INT_MAX
-# define PY_SSIZE_T_MIN INT_MIN
-typedef inquiry lenfunc;
-typedef intargfunc ssizeargfunc;
-typedef intobjargproc ssizeobjargproc;
-
-#endif
-
-
-#if __GNUC__ > 2
-# define PYBINDGEN_UNUSED(param) param __attribute__((__unused__))
-#elif __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
-# define PYBINDGEN_UNUSED(param) __attribute__((__unused__)) param
-#else
-# define PYBINDGEN_UNUSED(param)
-#endif /* !__GNUC__ */
-
-#include "../Utils/DebugDump.h"
-/* --- forward declarations --- */
-
-
-typedef struct {
- PyObject_HEAD
- CDebugDump *obj;
-} PyCDebugDump;
-
-
-extern PyTypeObject PyCDebugDump_Type;
-
-static PyMethodDef ABRTUtils_functions[] = {
- {NULL, NULL, 0, NULL}
-};
-/* --- classes --- */
-
-
-
-static int
-_wrap_PyCDebugDump__tp_init(PyCDebugDump *self, PyObject *args, PyObject *kwargs)
-{
- const char *keywords[] = {NULL};
-
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "", (char **) keywords)) {
- return -1;
- }
- self->obj = new CDebugDump();
- return 0;
-}
-
-
-PyObject *
-_wrap_PyCDebugDump_Close(PyCDebugDump *self)
-{
- PyObject *py_retval;
-
- self->obj->Close();
- Py_INCREF(Py_None);
- py_retval = Py_None;
- return py_retval;
-}
-
-
-PyObject *
-_wrap_PyCDebugDump_Create(PyCDebugDump *self, PyObject *args, PyObject *kwargs)
-{
- PyObject *py_retval;
- char *pFilename2;
- char *pUID2;
- const char *keywords[] = {"pFilename", "pUID", NULL};
-
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "ss", (char **) keywords, &pFilename2, &pUID2)) {
- return NULL;
- }
- self->obj->Create(pFilename2);
- Py_INCREF(Py_None);
- py_retval = Py_None;
- return py_retval;
-}
-
-
-PyObject *
-_wrap_PyCDebugDump_SaveText(PyCDebugDump *self, PyObject *args, PyObject *kwargs)
-{
- PyObject *py_retval;
- char *pName2;
- char *pData2;
- const char *keywords[] = {"pName", "pData", NULL};
-
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "ss", (char **) keywords, &pName2, &pData2)) {
- return NULL;
- }
- self->obj->SaveText(pName2, pData2);
- Py_INCREF(Py_None);
- py_retval = Py_None;
- return py_retval;
-}
-
-static PyMethodDef PyCDebugDump_methods[] = {
- {(char *) "Close", (PyCFunction) _wrap_PyCDebugDump_Close, METH_NOARGS, NULL },
- {(char *) "Create", (PyCFunction) _wrap_PyCDebugDump_Create, METH_KEYWORDS|METH_VARARGS, NULL },
- {(char *) "SaveText", (PyCFunction) _wrap_PyCDebugDump_SaveText, METH_KEYWORDS|METH_VARARGS, NULL },
- {NULL, NULL, 0, NULL}
-};
-
-static void
-_wrap_PyCDebugDump__tp_dealloc(PyCDebugDump *self)
-{
- CDebugDump *tmp = self->obj;
- self->obj = NULL;
- delete tmp;
- self->ob_type->tp_free((PyObject*)self);
-}
-
-static PyObject*
-_wrap_PyCDebugDump__tp_richcompare (PyCDebugDump *self, PyCDebugDump *other, int opid)
-{
-
- if (!PyObject_IsInstance((PyObject*) other, (PyObject*) &PyCDebugDump_Type)) {
- Py_INCREF(Py_NotImplemented);
- return Py_NotImplemented;
- }
- switch (opid)
- {
- case Py_LT:
- Py_INCREF(Py_NotImplemented);
- return Py_NotImplemented;
- case Py_LE:
- Py_INCREF(Py_NotImplemented);
- return Py_NotImplemented;
- case Py_EQ:
- Py_INCREF(Py_NotImplemented);
- return Py_NotImplemented;
- case Py_NE:
- Py_INCREF(Py_NotImplemented);
- return Py_NotImplemented;
- case Py_GE:
- Py_INCREF(Py_NotImplemented);
- return Py_NotImplemented;
- case Py_GT:
- Py_INCREF(Py_NotImplemented);
- return Py_NotImplemented;
- } /* closes switch (opid) */
- Py_INCREF(Py_NotImplemented);
- return Py_NotImplemented;
-}
-
-PyTypeObject PyCDebugDump_Type = {
- PyObject_HEAD_INIT(NULL)
- 0, /* ob_size */
- (char *) "ABRTUtils.CDebugDump", /* tp_name */
- sizeof(PyCDebugDump), /* tp_basicsize */
- 0, /* tp_itemsize */
- /* methods */
- (destructor)_wrap_PyCDebugDump__tp_dealloc, /* tp_dealloc */
- (printfunc)0, /* tp_print */
- (getattrfunc)NULL, /* tp_getattr */
- (setattrfunc)NULL, /* tp_setattr */
- (cmpfunc)NULL, /* tp_compare */
- (reprfunc)NULL, /* tp_repr */
- (PyNumberMethods*)NULL, /* tp_as_number */
- (PySequenceMethods*)NULL, /* tp_as_sequence */
- (PyMappingMethods*)NULL, /* tp_as_mapping */
- (hashfunc)NULL, /* tp_hash */
- (ternaryfunc)NULL, /* tp_call */
- (reprfunc)NULL, /* tp_str */
- (getattrofunc)NULL, /* tp_getattro */
- (setattrofunc)NULL, /* tp_setattro */
- (PyBufferProcs*)NULL, /* tp_as_buffer */
- Py_TPFLAGS_DEFAULT, /* tp_flags */
- NULL, /* Documentation string */
- (traverseproc)NULL, /* tp_traverse */
- (inquiry)NULL, /* tp_clear */
- (richcmpfunc)_wrap_PyCDebugDump__tp_richcompare, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- (getiterfunc)NULL, /* tp_iter */
- (iternextfunc)NULL, /* tp_iternext */
- (struct PyMethodDef*)PyCDebugDump_methods, /* tp_methods */
- (struct PyMemberDef*)0, /* tp_members */
- 0, /* tp_getset */
- NULL, /* tp_base */
- NULL, /* tp_dict */
- (descrgetfunc)NULL, /* tp_descr_get */
- (descrsetfunc)NULL, /* tp_descr_set */
- 0, /* tp_dictoffset */
- (initproc)_wrap_PyCDebugDump__tp_init, /* tp_init */
- (allocfunc)PyType_GenericAlloc, /* tp_alloc */
- (newfunc)PyType_GenericNew, /* tp_new */
- (freefunc)0, /* tp_free */
- (inquiry)NULL, /* tp_is_gc */
- NULL, /* tp_bases */
- NULL, /* tp_mro */
- NULL, /* tp_cache */
- NULL, /* tp_subclasses */
- NULL, /* tp_weaklist */
- (destructor) NULL /* tp_del */
-};
-
-
-
-PyMODINIT_FUNC
-initABRTUtils(void)
-{
- PyObject *m;
- m = Py_InitModule3((char *) "ABRTUtils", ABRTUtils_functions, NULL);
- if (m == NULL) {
- return;
- }
- /* Register the 'CDebugDump' class */
- if (PyType_Ready(&PyCDebugDump_Type)) {
- return;
- }
- PyModule_AddObject(m, (char *) "CDebugDump", (PyObject *) &PyCDebugDump_Type);
-}
diff --git a/lib/Python/PyBindingGenerator.py b/lib/Python/PyBindingGenerator.py
deleted file mode 100644
index a2d62d59..00000000
--- a/lib/Python/PyBindingGenerator.py
+++ /dev/null
@@ -1,27 +0,0 @@
-from pybindgen import *
-import sys
-"""
- void Open(const std::string& pDir);
- void Create(const std::string& pDir);
- void Delete();
- void Close();
-
- bool Exist(const std::string& pFileName);
-
- void LoadText(const std::string& pName, std::string& pData);
- void LoadBinary(const std::string& pName, char** pData, unsigned int* pSize);
-
- void SaveText(const std::string& pName, const std::string& pData);
- void SaveBinary(const std::string& pName, const char* pData, const unsigned int pSize);
-
- void InitGetNextFile();
- bool GetNextFile(std::string& pFileName, std::string& pContent, bool& pIsTextFile);
-"""
-mod = Module('ABRTUtils')
-mod.add_include('"../Utils/DebugDump.h"')
-klass = mod.add_class('CDebugDump')
-klass.add_constructor([])
-klass.add_method('Create', None, [param('char*', 'pFilename')])
-klass.add_method('Close', None, [])
-klass.add_method('SaveText', None, [param('char*', 'pName'), param('char*', 'pData')])
-mod.generate(sys.stdout)
diff --git a/lib/Python/PyDebugDump.cpp b/lib/Python/PyDebugDump.cpp
deleted file mode 100644
index 0f6de47b..00000000
--- a/lib/Python/PyDebugDump.cpp
+++ /dev/null
@@ -1,248 +0,0 @@
-/* This file was generated by PyBindGen 0.10.0 */
-#define PY_SSIZE_T_CLEAN
-#include <Python.h>
-#include <stddef.h>
-
-
-#if PY_VERSION_HEX < 0x020400F0
-
-#define PyEval_ThreadsInitialized() 1
-
-#define Py_CLEAR(op) \
- do { \
- if (op) { \
- PyObject *tmp = (PyObject *)(op); \
- (op) = NULL; \
- Py_DECREF(tmp); \
- } \
- } while (0)
-
-
-#define Py_VISIT(op) \
- do { \
- if (op) { \
- int vret = visit((PyObject *)(op), arg); \
- if (vret) \
- return vret; \
- } \
- } while (0)
-
-#endif
-
-
-
-#if PY_VERSION_HEX < 0x020500F0
-
-typedef int Py_ssize_t;
-# define PY_SSIZE_T_MAX INT_MAX
-# define PY_SSIZE_T_MIN INT_MIN
-typedef inquiry lenfunc;
-typedef intargfunc ssizeargfunc;
-typedef intobjargproc ssizeobjargproc;
-
-#endif
-
-
-#if __GNUC__ > 2
-# define PYBINDGEN_UNUSED(param) param __attribute__((__unused__))
-#elif __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
-# define PYBINDGEN_UNUSED(param) __attribute__((__unused__)) param
-#else
-# define PYBINDGEN_UNUSED(param)
-#endif /* !__GNUC__ */
-
-#include "../Utils/DebugDump.h"
-/* --- forward declarations --- */
-
-
-typedef struct {
- PyObject_HEAD
- CDebugDump *obj;
-} PyCDebugDump;
-
-
-extern PyTypeObject PyCDebugDump_Type;
-
-static PyMethodDef ABRTUtils_functions[] = {
- {NULL, NULL, 0, NULL}
-};
-/* --- classes --- */
-
-
-
-static int
-_wrap_PyCDebugDump__tp_init(PyCDebugDump *self, PyObject *args, PyObject *kwargs)
-{
- static const char *const keywords[] = {NULL};
-
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "", (char **) keywords)) {
- return -1;
- }
- self->obj = new CDebugDump();
- return 0;
-}
-
-
-PyObject *
-_wrap_PyCDebugDump_Close(PyCDebugDump *self)
-{
- PyObject *py_retval;
-
- self->obj->Close();
- Py_INCREF(Py_None);
- py_retval = Py_None;
- return py_retval;
-}
-
-
-PyObject *
-_wrap_PyCDebugDump_Create(PyCDebugDump *self, PyObject *args, PyObject *kwargs)
-{
- PyObject *py_retval;
- char *pFilename2;
- int pUID2;
- static const char *const keywords[] = {"pFilename", "pUID", NULL};
-
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "si", (char **) keywords, &pFilename2, &pUID2)) {
- return NULL;
- }
- self->obj->Create(pFilename2, pUID2);
- Py_INCREF(Py_None);
- py_retval = Py_None;
- return py_retval;
-}
-
-
-PyObject *
-_wrap_PyCDebugDump_SaveText(PyCDebugDump *self, PyObject *args, PyObject *kwargs)
-{
- PyObject *py_retval;
- char *pName2;
- char *pData2;
- static const char *const keywords[] = {"pName", "pData", NULL};
-
- if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "ss", (char **) keywords, &pName2, &pData2)) {
- return NULL;
- }
- self->obj->SaveText(pName2, pData2);
- Py_INCREF(Py_None);
- py_retval = Py_None;
- return py_retval;
-}
-
-static PyMethodDef PyCDebugDump_methods[] = {
- {(char *) "Close", (PyCFunction) _wrap_PyCDebugDump_Close, METH_NOARGS, NULL },
- {(char *) "Create", (PyCFunction) _wrap_PyCDebugDump_Create, METH_KEYWORDS|METH_VARARGS, NULL },
- {(char *) "SaveText", (PyCFunction) _wrap_PyCDebugDump_SaveText, METH_KEYWORDS|METH_VARARGS, NULL },
- {NULL, NULL, 0, NULL}
-};
-
-static void
-_wrap_PyCDebugDump__tp_dealloc(PyCDebugDump *self)
-{
- CDebugDump *tmp = self->obj;
- self->obj = NULL;
- delete tmp;
- self->ob_type->tp_free((PyObject*)self);
-}
-
-static PyObject*
-_wrap_PyCDebugDump__tp_richcompare (PyCDebugDump *self, PyCDebugDump *other, int opid)
-{
-
- if (!PyObject_IsInstance((PyObject*) other, (PyObject*) &PyCDebugDump_Type)) {
- Py_INCREF(Py_NotImplemented);
- return Py_NotImplemented;
- }
- switch (opid)
- {
- case Py_LT:
- Py_INCREF(Py_NotImplemented);
- return Py_NotImplemented;
- case Py_LE:
- Py_INCREF(Py_NotImplemented);
- return Py_NotImplemented;
- case Py_EQ:
- Py_INCREF(Py_NotImplemented);
- return Py_NotImplemented;
- case Py_NE:
- Py_INCREF(Py_NotImplemented);
- return Py_NotImplemented;
- case Py_GE:
- Py_INCREF(Py_NotImplemented);
- return Py_NotImplemented;
- case Py_GT:
- Py_INCREF(Py_NotImplemented);
- return Py_NotImplemented;
- } /* closes switch (opid) */
- Py_INCREF(Py_NotImplemented);
- return Py_NotImplemented;
-}
-
-PyTypeObject PyCDebugDump_Type = {
- PyObject_HEAD_INIT(NULL)
- 0, /* ob_size */
- (char *) "ABRTUtils.CDebugDump", /* tp_name */
- sizeof(PyCDebugDump), /* tp_basicsize */
- 0, /* tp_itemsize */
- /* methods */
- (destructor)_wrap_PyCDebugDump__tp_dealloc, /* tp_dealloc */
- (printfunc)0, /* tp_print */
- (getattrfunc)NULL, /* tp_getattr */
- (setattrfunc)NULL, /* tp_setattr */
- (cmpfunc)NULL, /* tp_compare */
- (reprfunc)NULL, /* tp_repr */
- (PyNumberMethods*)NULL, /* tp_as_number */
- (PySequenceMethods*)NULL, /* tp_as_sequence */
- (PyMappingMethods*)NULL, /* tp_as_mapping */
- (hashfunc)NULL, /* tp_hash */
- (ternaryfunc)NULL, /* tp_call */
- (reprfunc)NULL, /* tp_str */
- (getattrofunc)NULL, /* tp_getattro */
- (setattrofunc)NULL, /* tp_setattro */
- (PyBufferProcs*)NULL, /* tp_as_buffer */
- Py_TPFLAGS_DEFAULT, /* tp_flags */
- NULL, /* Documentation string */
- (traverseproc)NULL, /* tp_traverse */
- (inquiry)NULL, /* tp_clear */
- (richcmpfunc)_wrap_PyCDebugDump__tp_richcompare, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- (getiterfunc)NULL, /* tp_iter */
- (iternextfunc)NULL, /* tp_iternext */
- (struct PyMethodDef*)PyCDebugDump_methods, /* tp_methods */
- (struct PyMemberDef*)0, /* tp_members */
- 0, /* tp_getset */
- NULL, /* tp_base */
- NULL, /* tp_dict */
- (descrgetfunc)NULL, /* tp_descr_get */
- (descrsetfunc)NULL, /* tp_descr_set */
- 0, /* tp_dictoffset */
- (initproc)_wrap_PyCDebugDump__tp_init, /* tp_init */
- (allocfunc)PyType_GenericAlloc, /* tp_alloc */
- (newfunc)PyType_GenericNew, /* tp_new */
- (freefunc)0, /* tp_free */
- (inquiry)NULL, /* tp_is_gc */
- NULL, /* tp_bases */
- NULL, /* tp_mro */
- NULL, /* tp_cache */
- NULL, /* tp_subclasses */
- NULL, /* tp_weaklist */
- (destructor) NULL /* tp_del */
-};
-
-
-
-PyMODINIT_FUNC
-initABRTUtils(void)
-{
- PyObject *m;
- m = Py_InitModule3((char *) "ABRTUtils", ABRTUtils_functions, NULL);
- if (m == NULL) {
- return;
- }
- /* Register the 'CDebugDump' class */
- if (PyType_Ready(&PyCDebugDump_Type)) {
- return;
- }
- PyModule_AddObject(m, (char *) "CDebugDump", (PyObject *) &PyCDebugDump_Type);
-}
diff --git a/lib/Utils/CommLayerInner.cpp b/lib/Utils/CommLayerInner.cpp
index 307fe66d..133e97d2 100644
--- a/lib/Utils/CommLayerInner.cpp
+++ b/lib/Utils/CommLayerInner.cpp
@@ -72,7 +72,7 @@ void update_client(const char *fmt, ...)
int used = vasprintf(&msg, fmt, p);
va_end(p);
if (used < 0)
- return;
+ return;
s_pObs->Status(msg, peer, key);
}
diff --git a/lib/Utils/DebugDump.cpp b/lib/Utils/DebugDump.cpp
index ba11d965..2883d01f 100644
--- a/lib/Utils/DebugDump.cpp
+++ b/lib/Utils/DebugDump.cpp
@@ -74,7 +74,7 @@ void CDebugDump::Open(const char *pDir)
bool CDebugDump::Exist(const char* pPath)
{
- std::string fullPath = m_sDebugDumpDir + "/" + pPath;
+ std::string fullPath = concat_path_file(m_sDebugDumpDir.c_str(), pPath);
return ExistFileDir(fullPath.c_str());
}
@@ -433,7 +433,7 @@ void CDebugDump::LoadText(const char* pName, std::string& pData)
{
throw CABRTException(EXCEP_DD_OPEN, "CDebugDump::LoadText(): DebugDump is not opened.");
}
- std::string fullPath = m_sDebugDumpDir + '/' + pName;
+ std::string fullPath = concat_path_file(m_sDebugDumpDir.c_str(), pName);
LoadTextFile(fullPath.c_str(), pData);
}
@@ -443,7 +443,7 @@ void CDebugDump::SaveText(const char* pName, const char* pData)
{
throw CABRTException(EXCEP_DD_OPEN, "CDebugDump::SaveText(): DebugDump is not opened.");
}
- std::string fullPath = m_sDebugDumpDir + "/" + pName;
+ std::string fullPath = concat_path_file(m_sDebugDumpDir.c_str(), pName);
SaveBinaryFile(fullPath.c_str(), pData, strlen(pData));
}
void CDebugDump::SaveBinary(const char* pName, const char* pData, unsigned pSize)
@@ -452,7 +452,7 @@ void CDebugDump::SaveBinary(const char* pName, const char* pData, unsigned pSize
{
throw CABRTException(EXCEP_DD_OPEN, "CDebugDump::SaveBinary(): DebugDump is not opened.");
}
- std::string fullPath = m_sDebugDumpDir + "/" + pName;
+ std::string fullPath = concat_path_file(m_sDebugDumpDir.c_str(), pName);
SaveBinaryFile(fullPath.c_str(), pData, pSize);
}
diff --git a/lib/Utils/Makefile.am b/lib/Utils/Makefile.am
index f752992d..eae41483 100644
--- a/lib/Utils/Makefile.am
+++ b/lib/Utils/Makefile.am
@@ -4,6 +4,7 @@ lib_LTLIBRARIES = libABRTUtils.la
# time.cpp
# xconnect.cpp
+# removed: CrashTypesSocket.cpp
libABRTUtils_la_SOURCES = \
stringops.cpp \
xfuncs.cpp \
@@ -14,7 +15,6 @@ libABRTUtils_la_SOURCES = \
skip_whitespace.cpp \
popen_and_save_output.cpp \
parse_release.cpp \
- CrashTypesSocket.cpp \
DebugDump.h DebugDump.cpp \
CommLayerInner.h CommLayerInner.cpp \
abrt_dbus.h abrt_dbus.cpp \
diff --git a/lib/Utils/make_descr.cpp b/lib/Utils/make_descr.cpp
index 1352149e..0c096143 100644
--- a/lib/Utils/make_descr.cpp
+++ b/lib/Utils/make_descr.cpp
@@ -75,7 +75,7 @@ string make_description_bz(const map_crash_report_t& pCrashReport)
&& filename != FILENAME_RELEASE
&& filename != CD_REPRODUCE
&& filename != CD_COMMENT
- ) {
+ ) {
add_content(was_multiline, description, filename.c_str(), content.c_str());
}
}
diff --git a/lib/Utils/stringops.cpp b/lib/Utils/stringops.cpp
index 1b3793fc..dc71b5bd 100644
--- a/lib/Utils/stringops.cpp
+++ b/lib/Utils/stringops.cpp
@@ -3,24 +3,33 @@
void parse_args(const char *psArgs, vector_string_t& pArgs, int quote)
{
unsigned ii;
- bool is_quote = false;
+ bool inside_quotes = false;
std::string item;
for (ii = 0; psArgs[ii]; ii++)
{
- if (quote != -1 && psArgs[ii] == quote)
+ if (quote != -1)
{
- is_quote = !is_quote;
+ if (psArgs[ii] == quote)
+ {
+ inside_quotes = !inside_quotes;
+ continue;
+ }
+ /* inside quotes we support escaping with \x */
+ if (inside_quotes && psArgs[ii] == '\\' && psArgs[ii+1])
+ {
+ ii++;
+ item += psArgs[ii];
+ continue;
+ }
}
- else if (psArgs[ii] == ',' && !is_quote)
+ if (psArgs[ii] == ',' && !inside_quotes)
{
pArgs.push_back(item);
item.clear();
+ continue;
}
- else
- {
- item += psArgs[ii];
- }
+ item += psArgs[ii];
}
if (item.size() != 0)
diff --git a/po/POTFILES.in b/po/POTFILES.in
index c02cf9f7..6f5c266f 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -19,6 +19,7 @@ src/Gui/PluginSettingsUI.py
src/Gui/report.glade
src/Gui/SettingsDialog.py
src/Gui/settings.glade
+src/Gui/abrt.desktop.in
src/Applet/Applet.cpp
src/Applet/CCApplet.cpp
src/Daemon/Daemon.cpp
diff --git a/po/da.po b/po/da.po
index 4c15e22c..3ae461d8 100644
--- a/po/da.po
+++ b/po/da.po
@@ -3,12 +3,13 @@
# This file is distributed under the same license as the abrt package.
# Kris Thomsen <lakristho@gmail.com>, 2009.
#
+#: ../src/Gui/CCReporterDialog.py:191
msgid ""
msgstr ""
"Project-Id-Version: abrt\n"
"Report-Msgid-Bugs-To: jmoskovc@redhat.com\n"
-"POT-Creation-Date: 2009-10-26 00:22+0000\n"
-"PO-Revision-Date: 2009-10-26 02:42+0100\n"
+"POT-Creation-Date: 2009-11-16 14:52+0000\n"
+"PO-Revision-Date: 2009-11-16 16:19+0100\n"
"Last-Translator: Kris Thomsen <lakristho@gmail.com>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
"MIME-Version: 1.0\n"
@@ -61,7 +62,7 @@ msgstr ""
"Dæmonen returnerede ikke gyldig rapportinformation\n"
"Mangler fejlsøgningsinformation?"
-#: ../src/Gui/ccgui.glade.h:1
+#: ../src/Gui/ccgui.glade.h:1 ../src/Gui/report.glade.h:1
msgid " "
msgstr " "
@@ -81,7 +82,7 @@ msgstr "<span color=\"white\">Beskrivelse</span>"
msgid "About ABRT"
msgstr "Om ABRT"
-#: ../src/Gui/ccgui.glade.h:6
+#: ../src/Gui/ccgui.glade.h:6 ../src/Gui/abrt.desktop.in.h:1
msgid "Automatic Bug Reporting Tool"
msgstr "Automatisk værktøj til fejlrapportering"
@@ -97,7 +98,7 @@ msgstr "Vent venligst.."
msgid "Plugins"
msgstr "Udvidelsesmoduler"
-#: ../src/Gui/ccgui.glade.h:10 ../src/Gui/report.glade.h:2
+#: ../src/Gui/ccgui.glade.h:10 ../src/Gui/report.glade.h:4
msgid "Report"
msgstr "Rapportér"
@@ -163,8 +164,8 @@ msgid "Date"
msgstr "Dato"
#: ../src/Gui/CCMainWindow.py:91
-msgid "Crash Rate"
-msgstr "Nedbrudsrate"
+msgid "Crash count"
+msgstr "Nedbrudsantal"
#: ../src/Gui/CCMainWindow.py:93
msgid "User"
@@ -230,12 +231,40 @@ msgstr ""
msgid "Error getting the report: %s"
msgstr "Fejl under hentning af rapporten: %s"
-#: ../src/Gui/CCReporterDialog.py:167
+#: ../src/Gui/CCReporterDialog.py:177
msgid "Brief description how to reproduce this or what you did..."
msgstr ""
"Kort beskrivelse om hvordan fejlen kan gentages eller hvad du gjorde..."
-#: ../src/Gui/CCReporterDialog.py:211
+#: ../src/Gui/CCReporterDialog.py:219
+#, python-format
+msgid ""
+"Reporting disabled because the backtrace is unusable.\n"
+"Please try to install debuginfo manually using command:<span color=\"blue\"> "
+"debuginfo-install %s </span>\n"
+"then use Refresh button to regenerate the backtrace."
+msgstr ""
+"Rapportering er deaktiveret fordi backtracen ikke indeholder brugbare "
+"informationer!\n"
+"Prøv venligst at installere debuginfo manuelt ved at bruge kommandoen:<span "
+"color=\"blue\"> debuginfo-install %s </span>\n"
+"brug derefter Genopfrisk-knappen til at regenerere backtracen."
+
+#: ../src/Gui/CCReporterDialog.py:221
+msgid "The bactrace is unusable, you can't report this!"
+msgstr ""
+"Backtracen indeholder ikke brugbare informationer. Du får intet ud af at "
+"indsende den!"
+
+#: ../src/Gui/CCReporterDialog.py:227
+msgid ""
+"The bactrace is incomplete, please make sure you provide good steps to "
+"reproduce."
+msgstr ""
+"Backtracen er ufuldstændig. Husk at angive en god vejledning til hvordan man "
+"reproducerer fejlen."
+
+#: ../src/Gui/CCReporterDialog.py:272
#, python-format
msgid ""
"<b>WARNING</b>, you're about to send data which might contain sensitive "
@@ -272,21 +301,17 @@ msgstr "comboboks er ikke implementeret"
msgid "Nothing to hydrate!"
msgstr "Intet at hydrere!"
-#: ../src/Gui/report.glade.h:1
+#: ../src/Gui/report.glade.h:2
msgid "Comment"
msgstr "Kommentér"
#: ../src/Gui/report.glade.h:3
-msgid "Send"
-msgstr "Send"
-
-#: ../src/Gui/report.glade.h:4 ../src/Gui/settings.glade.h:25
-msgid "gtk-cancel"
-msgstr "gtk-cancel"
+msgid "How to reproduce (in a few simple steps)"
+msgstr "Hvordan man reproducerer (i få simple trin)"
#: ../src/Gui/report.glade.h:5
-msgid "gtk-refresh"
-msgstr "gtk-refresh"
+msgid "Send"
+msgstr "Send"
#: ../src/Gui/SettingsDialog.py:33 ../src/Gui/SettingsDialog.py:50
msgid "<b>Select plugin</b>"
@@ -400,6 +425,10 @@ msgstr "Websted:"
msgid "gtk-add"
msgstr "gtk-add"
+#: ../src/Gui/settings.glade.h:25
+msgid "gtk-cancel"
+msgstr "gtk-cancel"
+
#: ../src/Gui/settings.glade.h:26
msgid "gtk-close"
msgstr "gtk-close"
@@ -408,24 +437,24 @@ msgstr "gtk-close"
msgid "gtk-remove"
msgstr "gtk-remove"
-#: ../src/Applet/Applet.cpp:71
+#: ../src/Gui/abrt.desktop.in.h:2
+msgid "View and report application crashes"
+msgstr "Vis og rapportér programnedbrud"
+
+#: ../src/Applet/Applet.cpp:79
#, c-format
msgid "A crash in package %s has been detected"
msgstr "Der blev fundet et nedbrud i pakke %s"
-#: ../src/Applet/Applet.cpp:130
-msgid "ABRT service has been started"
-msgstr "ABRT-tjenesten er blevet startet"
-
-#: ../src/Applet/Applet.cpp:132 ../src/Applet/Applet.cpp:246
+#: ../src/Applet/Applet.cpp:253
msgid "ABRT service is not running"
msgstr "ABRT-service kører ikke"
-#: ../src/Applet/CCApplet.cpp:185
+#: ../src/Applet/CCApplet.cpp:189
msgid "Warning"
msgstr "Advarsel"
-#: ../src/Daemon/Daemon.cpp:542
+#: ../src/Daemon/Daemon.cpp:520
msgid ""
"Report size exceeded the quota. Please check system's MaxCrashReportsSize "
"value in abrt.conf."
@@ -433,40 +462,37 @@ msgstr ""
"Rapportstørrelse overskred den tilladte størrelse. Kontrollér systemets "
"MaxCrashReportsSize-værdien i abrt.conf."
-#: ../lib/Plugins/Bugzilla.cpp:83
-msgid "Empty login and password. Please check Bugzilla.conf"
-msgstr "Tom logind og adgangskode. Kontrollér Bugzilla.conf"
-
-#: ../lib/Plugins/Bugzilla.cpp:205
-msgid "Bug is already reported: "
-msgstr "Fejl er allerede rapporteret: "
-
-#: ../lib/Plugins/Bugzilla.cpp:260
+#: ../lib/Plugins/Bugzilla.cpp:209
#, c-format
-msgid "Binary file %s will not be reported."
-msgstr "Binærfil %s vil ikke blive rapporteret."
+msgid "Bug is already reported: %i"
+msgstr "Fejlen er allerede rapporteret: %i"
-#: ../lib/Plugins/Bugzilla.cpp:330
-msgid "New bug id: "
-msgstr "Ny bug-id: "
+#: ../lib/Plugins/Bugzilla.cpp:271
+#, c-format
+msgid "New bug id: %i"
+msgstr "Ny bug-id: %i"
-#: ../lib/Plugins/Bugzilla.cpp:399
+#: ../lib/Plugins/Bugzilla.cpp:364
msgid "Checking for duplicates..."
msgstr "Kontrollerer for dubletter..."
-#: ../lib/Plugins/Bugzilla.cpp:402 ../lib/Plugins/Bugzilla.cpp:413
+#: ../lib/Plugins/Bugzilla.cpp:367
msgid "Logging into bugzilla..."
msgstr "Logger ind på bugzilla..."
-#: ../lib/Plugins/Bugzilla.cpp:405
+#: ../lib/Plugins/Bugzilla.cpp:371
+msgid "Empty login and password. Please check Bugzilla.conf"
+msgstr "Tom logind og adgangskode. Kontrollér Bugzilla.conf"
+
+#: ../lib/Plugins/Bugzilla.cpp:377
msgid "Checking CC..."
msgstr "Kontrollerer for CC..."
-#: ../lib/Plugins/Bugzilla.cpp:425
+#: ../lib/Plugins/Bugzilla.cpp:386
msgid "Creating new bug..."
msgstr "Opretter ny fejl..."
-#: ../lib/Plugins/Bugzilla.cpp:430
+#: ../lib/Plugins/Bugzilla.cpp:390
msgid "Logging out..."
msgstr "Logger ud..."
@@ -474,83 +500,99 @@ msgstr "Logger ud..."
msgid "Getting local universal unique identification"
msgstr "Henter lokal, universal, unik identifikation"
-#: ../lib/Plugins/CCpp.cpp:246
+#: ../lib/Plugins/CCpp.cpp:254
msgid "Getting backtrace..."
msgstr "Henter backtrace..."
-#: ../lib/Plugins/CCpp.cpp:532 ../lib/Plugins/CCpp.cpp:657
+#: ../lib/Plugins/CCpp.cpp:552 ../lib/Plugins/CCpp.cpp:679
msgid "Searching for debug-info packages..."
msgstr "Søger efter pakker med fejlsøgningsinformation..."
-#: ../lib/Plugins/CCpp.cpp:594 ../lib/Plugins/CCpp.cpp:690
+#: ../lib/Plugins/CCpp.cpp:614 ../lib/Plugins/CCpp.cpp:713
msgid "Downloading and installing debug-info packages..."
msgstr "Henter og installerer pakker med fejlsøgningsinformation..."
-#: ../lib/Plugins/CCpp.cpp:733
+#: ../lib/Plugins/CCpp.cpp:818
msgid "Getting local universal unique identification..."
msgstr "Henter lokal, universal, unik identifikation..."
-#: ../lib/Plugins/CCpp.cpp:752
+#: ../lib/Plugins/CCpp.cpp:837
msgid "Getting global universal unique identification..."
msgstr "Henter global, universal, unik identifikation..."
-#: ../lib/Plugins/CCpp.cpp:797
+#: ../lib/Plugins/CCpp.cpp:882
msgid "Starting report creation..."
msgstr "Starter rapportoprettelse..."
-#: ../lib/Plugins/CCpp.cpp:828
+#: ../lib/Plugins/CCpp.cpp:912
msgid "Skipping debuginfo installation"
msgstr "Springer over fejlsøgningsinfo-installation"
-#: ../lib/Plugins/KerneloopsReporter.cpp:101
+#: ../lib/Plugins/KerneloopsReporter.cpp:102
msgid "Creating and submitting a report..."
msgstr "Opretter og indsender en rapport..."
-#: ../lib/Plugins/Logger.cpp:58 ../lib/Plugins/Mailx.cpp:123
+#: ../lib/Plugins/Logger.cpp:65
msgid "Creating a report..."
msgstr "Opretter en rapport..."
-#: ../lib/Plugins/RunApp.cpp:62
+#: ../lib/Plugins/RunApp.cpp:35
msgid "Executing RunApp plugin..."
msgstr "Udfører RunApp-udvidelsesmodul..."
-#: ../lib/Plugins/FileTransfer.cpp:63 ../lib/Plugins/FileTransfer.cpp:409
+#: ../lib/Plugins/FileTransfer.cpp:63 ../lib/Plugins/FileTransfer.cpp:384
msgid "FileTransfer: URL not specified"
msgstr "Filoverførsel: URL ikke angivet"
-#: ../lib/Plugins/FileTransfer.cpp:81
+#: ../lib/Plugins/FileTransfer.cpp:67
#, c-format
-msgid "Sending archive %s via %s"
-msgstr "Sender arkiv %s via %s"
+msgid "Sending archive %s to %s"
+msgstr "Sender arkiv %s til %s"
-#: ../lib/Plugins/FileTransfer.cpp:336
+#: ../lib/Plugins/FileTransfer.cpp:309
msgid "File Transfer: Creating a report..."
msgstr "Filoverførsel: Opretter en rapport..."
-#: ../lib/Plugins/FileTransfer.cpp:358 ../lib/Plugins/FileTransfer.cpp:386
-msgid "CFileTransfer::Run(): Cannot create and send an archive: "
-msgstr "CFileTransfer::Run(): Kan ikke oprette og sende et arkiv: "
+#: ../lib/Plugins/FileTransfer.cpp:334
+#, c-format
+msgid "Can't create and send an archive: %s"
+msgstr "Kan ikke oprette og sende arkiv: %s"
+
+#: ../lib/Plugins/FileTransfer.cpp:359
+#, c-format
+msgid "Can't create and send an archive %s"
+msgstr "Kan ikke oprette og sende arkiv %s"
-#: ../lib/Plugins/KerneloopsScanner.cpp:79
+#: ../lib/Plugins/KerneloopsScanner.cpp:84
msgid "Creating kernel oops crash reports..."
msgstr "Opretter rapporter om kerne-oops-nedbrud..."
-#: ../lib/Plugins/Mailx.cpp:109
+#: ../lib/Plugins/Mailx.cpp:163
msgid "Sending an email..."
msgstr "Sender en e-post..."
-#: ../lib/Plugins/SOSreport.cpp:113
+#: ../lib/Plugins/SOSreport.cpp:69
msgid "Executing SOSreport plugin..."
msgstr "Udfører SOSreport-udvidelsesmodul..."
-#: ../lib/Plugins/SOSreport.cpp:135
-msgid "running sosreport: "
-msgstr "kører sosreport: "
+#: ../lib/Plugins/SOSreport.cpp:91
+#, c-format
+msgid "running sosreport: %s"
+msgstr "kører sosreport: %s"
-#: ../lib/Plugins/SOSreport.cpp:150
+#: ../lib/Plugins/SOSreport.cpp:95
msgid "done running sosreport"
msgstr "færdig med at køre sosreport"
+#~ msgid "ABRT service has been started"
+#~ msgstr "ABRT-tjenesten er blevet startet"
+
+#~ msgid "gtk-refresh"
+#~ msgstr "gtk-refresh"
+
+#~ msgid "Binary file %s will not be reported."
+#~ msgstr "Binærfil %s vil ikke blive rapporteret."
+
#~ msgid "Check CC and add coment +1..."
#~ msgstr "Kontrollér CC og tilføj kommentar +1..."
diff --git a/po/de.po b/po/de.po
index 65cab68b..8cbe81b4 100644
--- a/po/de.po
+++ b/po/de.po
@@ -8,14 +8,15 @@
# Hedda Peters <hpeters@redhat.com>, 2009.
# Marcus Nitzschke <kenda@fedoraproject.org>, 2009.
# Dominik Sandjaja <dominiksandjaja@fedoraproject.org>, 2009.
+#: ../src/Gui/CCReporterDialog.py:191
msgid ""
msgstr ""
"Project-Id-Version: abrt.master.de\n"
"Report-Msgid-Bugs-To: jmoskovc@redhat.com\n"
-"POT-Creation-Date: 2009-10-30 10:16+0000\n"
-"PO-Revision-Date: 2009-10-30 14:53+0100\n"
+"POT-Creation-Date: 2009-11-16 20:25+0000\n"
+"PO-Revision-Date: 2009-11-17 00:37+0100\n"
"Last-Translator: Fabian Affolter <fab@fedoraproject.org>\n"
-"Language-Team: \n"
+"Language-Team: <>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -28,7 +29,9 @@ msgstr "Ein anderer Client läuft bereits, versuche ihn zu wecken."
#: ../src/Gui/ABRTExceptions.py:13
msgid "Got unexpected data from daemon (is the database properly updated?)."
-msgstr "Unerwartete Daten vom Daemon erhalten (ist die Datenbank korrekt aktualisisert?)"
+msgstr ""
+"Unerwartete Daten vom Daemon erhalten (ist die Datenbank korrekt "
+"aktualisisert?)"
#: ../src/Gui/ABRTPlugin.py:55
msgid "Analyzer plugins"
@@ -50,13 +53,11 @@ msgstr "Datenbank-Plugins"
msgid "Plugin name is not set, can't load it's settings"
msgstr "Plugin-Name nicht gesetzt, kann die Einstellungen nicht laden"
-#: ../src/Gui/CCDBusBackend.py:74
-#: ../src/Gui/CCDBusBackend.py:97
+#: ../src/Gui/CCDBusBackend.py:74 ../src/Gui/CCDBusBackend.py:97
msgid "Can't connect to system dbus"
msgstr "Kann nicht mit System-Dbus verbinden"
-#: ../src/Gui/CCDBusBackend.py:100
-#: ../src/Gui/CCDBusBackend.py:103
+#: ../src/Gui/CCDBusBackend.py:100 ../src/Gui/CCDBusBackend.py:103
msgid "Please check if abrt daemon is running"
msgstr "Bitte überprüfen Sie, ob der abrt-Daemon läuft"
@@ -68,7 +69,7 @@ msgstr ""
"Daemon lieferte keine gültige Berichtsinfo\n"
"Fehlt Debuginfo?"
-#: ../src/Gui/ccgui.glade.h:1
+#: ../src/Gui/ccgui.glade.h:1 ../src/Gui/report.glade.h:1
msgid " "
msgstr " "
@@ -76,8 +77,7 @@ msgstr " "
msgid "(C) 2009 Red Hat, Inc."
msgstr "(C) 2009 Red Hat, Inc."
-#: ../src/Gui/ccgui.glade.h:3
-#: ../src/Gui/CCMainWindow.py:244
+#: ../src/Gui/ccgui.glade.h:3 ../src/Gui/CCMainWindow.py:244
msgid "<b>Not reported!</b>"
msgstr "<b>Nicht berichtet!</b>"
@@ -89,7 +89,7 @@ msgstr "<span color=\"white\">Beschreibung</span>"
msgid "About ABRT"
msgstr "Ãœber ABRT"
-#: ../src/Gui/ccgui.glade.h:6
+#: ../src/Gui/ccgui.glade.h:6 ../src/Gui/abrt.desktop.in.h:1
msgid "Automatic Bug Reporting Tool"
msgstr "Automatic Bug Reporting Tool"
@@ -105,24 +105,37 @@ msgstr "Bitte warten ..."
msgid "Plugins"
msgstr "Plugins"
-#: ../src/Gui/ccgui.glade.h:10
-#: ../src/Gui/report.glade.h:2
+#: ../src/Gui/ccgui.glade.h:10 ../src/Gui/report.glade.h:4
msgid "Report"
msgstr "Bericht"
#: ../src/Gui/ccgui.glade.h:11
msgid ""
-"This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\n"
+"This program is free software; you can redistribute it and/or modify it "
+"under the terms of the GNU General Public License as published by the Free "
+"Software Foundation; either version 2 of the License, or (at your option) "
+"any later version.\n"
"\n"
-"This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n"
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for "
+"more details.\n"
"\n"
-"You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>."
+"You should have received a copy of the GNU General Public License along with "
+"this program. If not, see <http://www.gnu.org/licenses/>."
msgstr ""
-"Dieses Programm ist freie Software. Sie können es unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß Version 2 der Lizenz oder (nach Ihrer Option) jeder späteren Version.\n"
+"Dieses Programm ist freie Software. Sie können es unter den Bedingungen der "
+"GNU General Public License, wie von der Free Software Foundation "
+"veröffentlicht, weitergeben und/oder modifizieren, entweder gemäß Version 2 "
+"der Lizenz oder (nach Ihrer Option) jeder späteren Version.\n"
"\n"
-"Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, dass es Ihnen von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne die implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK. Details finden Sie in der GNU General Public License.\n"
+"Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, dass es Ihnen "
+"von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne die "
+"implizite Garantie der MARKTREIFE oder der VERWENDBARKEIT FÃœR EINEN "
+"BESTIMMTEN ZWECK. Details finden Sie in der GNU General Public License.\n"
"\n"
-"Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem Programm erhalten haben. Falls nicht, siehe <http://www.gnu.org/licenses/>."
+"Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem "
+"Programm erhalten haben. Falls nicht, siehe <http://www.gnu.org/licenses/>."
#: ../src/Gui/ccgui.glade.h:16
msgid "Working..."
@@ -158,8 +171,8 @@ msgid "Date"
msgstr "Datum"
#: ../src/Gui/CCMainWindow.py:91
-msgid "Crash Rate"
-msgstr "Absturzrate"
+msgid "Crash count"
+msgstr "Absturz-Anzahl"
#: ../src/Gui/CCMainWindow.py:93
msgid "User"
@@ -170,9 +183,7 @@ msgstr "Benutzer"
msgid ""
"Can't show the settings dialog\n"
"%s"
-msgstr ""
-"Der Einstellungsdialog kann nicht angezeigt werden\n"
-"%s"
+msgstr "Der Einstellungsdialog %s kann nicht angezeigt werden"
#: ../src/Gui/CCMainWindow.py:181
#, python-format
@@ -189,7 +200,8 @@ msgid ""
"Error while loading the dumplist, please check if abrt daemon is running\n"
" %s"
msgstr ""
-"Fehler beim Laden der Dump-Liste. Bitte überprüfen Sie, ob der abrt-Daemon läuft\n"
+"Fehler beim Laden der Dump-Liste. Bitte überprüfen Sie, ob der abrt-Daemon "
+"läuft\n"
" %s"
#: ../src/Gui/CCMainWindow.py:208
@@ -199,7 +211,8 @@ msgstr "Benutzername für UID %s kann nicht ermittelt werden"
#: ../src/Gui/CCMainWindow.py:236
msgid "<b>This crash has been reported, you can find the report(s) at:</b>\n"
-msgstr "<b>Dieser Absturz wurde gemeldet, der Bericht befindet sich unter:</b>\n"
+msgstr ""
+"<b>Dieser Absturz wurde gemeldet, der Bericht befindet sich unter:</b>\n"
#: ../src/Gui/CCMainWindow.py:296
msgid ""
@@ -218,31 +231,57 @@ msgstr ""
"Berichterstellung fehlgeschlagen!\n"
"%s"
-#: ../src/Gui/CCMainWindow.py:333
-#: ../src/Gui/CCMainWindow.py:360
+#: ../src/Gui/CCMainWindow.py:333 ../src/Gui/CCMainWindow.py:360
#, python-format
msgid "Error getting the report: %s"
msgstr "Fehler beim Abrufen des Berichts: %s"
-#: ../src/Gui/CCReporterDialog.py:171
+#: ../src/Gui/CCReporterDialog.py:177
msgid "Brief description how to reproduce this or what you did..."
-msgstr "Kurze Beschreibung, wie dies reproduziert werden kann bzw. was Sie taten ..."
+msgstr ""
+"Kurze Beschreibung, wie dies reproduziert werden kann bzw. was Sie taten ..."
+
+#: ../src/Gui/CCReporterDialog.py:219
+#, python-format
+msgid ""
+"Reporting disabled because the backtrace is unusable.\n"
+"Please try to install debuginfo manually using command:<span color=\"blue\"> "
+"debuginfo-install %s </span>\n"
+"then use Refresh button to regenerate the backtrace."
+msgstr ""
+"Reporting disabled because the backtrace is unusable.\n"
+"Please try to install debuginfo manually using command:<span color=\"blue\"> "
+"debuginfo-install %s </span>\n"
+"then use Refresh button to regenerate the backtrace."
+
+#: ../src/Gui/CCReporterDialog.py:221
+msgid "The bactrace is unusable, you can't report this!"
+msgstr "Der Backtrace ist unbrauchbar, Sie können dies nicht melden!"
+
+#: ../src/Gui/CCReporterDialog.py:227
+msgid ""
+"The bactrace is incomplete, please make sure you provide good steps to "
+"reproduce."
+msgstr ""
+"Der Backtrace ist unvollständig, bitte stellen Sie sicher, dass alle "
+"Schritt zu reproduzieren vorhanden sind."
-#: ../src/Gui/CCReporterDialog.py:215
+#: ../src/Gui/CCReporterDialog.py:272
#, python-format
msgid ""
-"<b>WARNING</b>, you're about to send data which might contain sensitive information.\n"
+"<b>WARNING</b>, you're about to send data which might contain sensitive "
+"information.\n"
"Do you really want to send <b>%s</b>?\n"
msgstr ""
-"<b>WARNUNG</b>, Sie sind im Begriff, möglicherweise sensible Daten zu senden.\n"
+"<b>WARNUNG</b>, Sie sind im Begriff, möglicherweise sensible Daten zu "
+"senden.\n"
"Möchten Sie wirklich senden<b>%s</b>?\n"
#: ../src/Gui/dialogs.glade.h:1
msgid "Report done"
msgstr "Bericht fertiggestellt"
-#: ../src/Gui/dialogs.glade.h:2
-#: ../src/Gui/settings.glade.h:27
+#: ../src/Gui/dialogs.glade.h:2 ../src/Gui/settings.glade.h:27
msgid "gtk-ok"
msgstr "gtk-ok"
@@ -256,8 +295,7 @@ msgstr "Kann PluginDialog-Widget nicht in UI-Beschreibung finden!"
msgid "No UI for plugin %s"
msgstr "Kein UI für Plugin %s"
-#: ../src/Gui/PluginSettingsUI.py:55
-#: ../src/Gui/PluginSettingsUI.py:81
+#: ../src/Gui/PluginSettingsUI.py:55 ../src/Gui/PluginSettingsUI.py:81
msgid "combo box is not implemented"
msgstr "Combo-Box ist nicht implementiert"
@@ -265,25 +303,19 @@ msgstr "Combo-Box ist nicht implementiert"
msgid "Nothing to hydrate!"
msgstr "Nichts zum Hydrieren!"
-#: ../src/Gui/report.glade.h:1
+#: ../src/Gui/report.glade.h:2
msgid "Comment"
msgstr "Kommentar"
#: ../src/Gui/report.glade.h:3
-msgid "Send"
-msgstr "Senden"
-
-#: ../src/Gui/report.glade.h:4
-#: ../src/Gui/settings.glade.h:25
-msgid "gtk-cancel"
-msgstr "gtk-cancel"
+msgid "How to reproduce (in a few simple steps)"
+msgstr "Wie kann der Fehler wieder erzeugt werden (in einfachen Schritten)"
#: ../src/Gui/report.glade.h:5
-msgid "gtk-refresh"
-msgstr "gtk-refresh"
+msgid "Send"
+msgstr "Senden"
-#: ../src/Gui/SettingsDialog.py:33
-#: ../src/Gui/SettingsDialog.py:50
+#: ../src/Gui/SettingsDialog.py:33 ../src/Gui/SettingsDialog.py:50
msgid "<b>Select plugin</b>"
msgstr "<b>Plugin wählen</b>"
@@ -395,6 +427,10 @@ msgstr "Webseite:"
msgid "gtk-add"
msgstr "gtk-add"
+#: ../src/Gui/settings.glade.h:25
+msgid "gtk-cancel"
+msgstr "gtk-cancel"
+
#: ../src/Gui/settings.glade.h:26
msgid "gtk-close"
msgstr "gtk-close"
@@ -403,62 +439,62 @@ msgstr "gtk-close"
msgid "gtk-remove"
msgstr "gtk-remove"
-#: ../src/Applet/Applet.cpp:76
+#: ../src/Gui/abrt.desktop.in.h:2
+msgid "View and report application crashes"
+msgstr "Anwendungsabstürze einsehen und berichten"
+
+#: ../src/Applet/Applet.cpp:79
#, c-format
msgid "A crash in package %s has been detected"
msgstr "In Paket %s wurde ein Absturz entdeckt!"
-#: ../src/Applet/Applet.cpp:135
-msgid "ABRT service has been started"
-msgstr "ABRT-Dienst wurde gestartet"
-
-#: ../src/Applet/Applet.cpp:137
-#: ../src/Applet/Applet.cpp:251
+#: ../src/Applet/Applet.cpp:253
msgid "ABRT service is not running"
msgstr "ABRT-Dienst wird nicht ausgeführt."
-#: ../src/Applet/CCApplet.cpp:185
+#: ../src/Applet/CCApplet.cpp:196
msgid "Warning"
msgstr "Warnung"
-#: ../src/Daemon/Daemon.cpp:543
-msgid "Report size exceeded the quota. Please check system's MaxCrashReportsSize value in abrt.conf."
-msgstr "Berichtgröße überschreitet die maximale Größe. Bitte überprüfen Sie Ihren MaxCrashReportsSize-Wert in abrt.conf."
-
-#: ../lib/Plugins/Bugzilla.cpp:253
-msgid "Bug is already reported: "
-msgstr "Fehler wurde bereits gemeldet:"
+#: ../src/Daemon/Daemon.cpp:520
+msgid ""
+"Report size exceeded the quota. Please check system's MaxCrashReportsSize "
+"value in abrt.conf."
+msgstr ""
+"Berichtgröße überschreitet die maximale Größe. Bitte überprüfen Sie Ihren "
+"MaxCrashReportsSize-Wert in abrt.conf."
-#: ../lib/Plugins/Bugzilla.cpp:317
+#: ../lib/Plugins/Bugzilla.cpp:209
#, c-format
-msgid "Binary file %s will not be reported."
-msgstr "Binärdatei %s wird nicht gemeldet."
+msgid "Bug is already reported: %i"
+msgstr "Fehler wurde bereits gemeldet: %i"
-#: ../lib/Plugins/Bugzilla.cpp:398
-msgid "New bug id: "
-msgstr "Neue Fehler-ID:"
+#: ../lib/Plugins/Bugzilla.cpp:271
+#, c-format
+msgid "New bug id: %i"
+msgstr "Neue Fehler-ID: %i"
-#: ../lib/Plugins/Bugzilla.cpp:447
+#: ../lib/Plugins/Bugzilla.cpp:364
msgid "Checking for duplicates..."
msgstr "Auf Duplikate überprüfen ..."
-#: ../lib/Plugins/Bugzilla.cpp:450
+#: ../lib/Plugins/Bugzilla.cpp:367
msgid "Logging into bugzilla..."
msgstr "Bei Bugzilla anmelden ..."
-#: ../lib/Plugins/Bugzilla.cpp:454
+#: ../lib/Plugins/Bugzilla.cpp:371
msgid "Empty login and password. Please check Bugzilla.conf"
msgstr "Leerer Benutzername und Passwort. Bitte überprüfen Sie Bugzilla.conf."
-#: ../lib/Plugins/Bugzilla.cpp:460
+#: ../lib/Plugins/Bugzilla.cpp:377
msgid "Checking CC..."
msgstr "CC überprüfen ..."
-#: ../lib/Plugins/Bugzilla.cpp:469
+#: ../lib/Plugins/Bugzilla.cpp:386
msgid "Creating new bug..."
msgstr "Neuen Fehlerbericht erstellen ..."
-#: ../lib/Plugins/Bugzilla.cpp:473
+#: ../lib/Plugins/Bugzilla.cpp:390
msgid "Logging out..."
msgstr "Abmelden ..."
@@ -466,114 +502,131 @@ msgstr "Abmelden ..."
msgid "Getting local universal unique identification"
msgstr "Rufe lokale, universelle, eindeutige Identifikation ab"
-#: ../lib/Plugins/CCpp.cpp:235
+#: ../lib/Plugins/CCpp.cpp:254
msgid "Getting backtrace..."
msgstr "Backtrace abrufen ..."
-#: ../lib/Plugins/CCpp.cpp:523
-#: ../lib/Plugins/CCpp.cpp:650
+#: ../lib/Plugins/CCpp.cpp:552 ../lib/Plugins/CCpp.cpp:679
msgid "Searching for debug-info packages..."
msgstr "debug-info-Pakete suchen ..."
-#: ../lib/Plugins/CCpp.cpp:585
-#: ../lib/Plugins/CCpp.cpp:683
+#: ../lib/Plugins/CCpp.cpp:614 ../lib/Plugins/CCpp.cpp:713
msgid "Downloading and installing debug-info packages..."
msgstr "debug-info-Pakete herunterladen und installieren ..."
-#: ../lib/Plugins/CCpp.cpp:725
+#: ../lib/Plugins/CCpp.cpp:818
msgid "Getting local universal unique identification..."
msgstr "Lokale, universelle, eindeutige Identifikation abrufen ..."
-#: ../lib/Plugins/CCpp.cpp:744
+#: ../lib/Plugins/CCpp.cpp:837
msgid "Getting global universal unique identification..."
msgstr "Globale, universelle, eindeutige Identifikation abrufen ..."
-#: ../lib/Plugins/CCpp.cpp:789
+#: ../lib/Plugins/CCpp.cpp:882
msgid "Starting report creation..."
msgstr "Berichterstellung beginnen ..."
-#: ../lib/Plugins/CCpp.cpp:820
+#: ../lib/Plugins/CCpp.cpp:912
msgid "Skipping debuginfo installation"
msgstr "debuginfo-Installation wird übersprungen"
-#: ../lib/Plugins/KerneloopsReporter.cpp:101
+#: ../lib/Plugins/KerneloopsReporter.cpp:102
msgid "Creating and submitting a report..."
msgstr "Einen Bericht erstellen und einreichen ..."
-#: ../lib/Plugins/Logger.cpp:58
-#: ../lib/Plugins/Mailx.cpp:123
+#: ../lib/Plugins/Logger.cpp:65
msgid "Creating a report..."
msgstr "Einen Bericht erstellen ..."
-#: ../lib/Plugins/RunApp.cpp:62
-msgid "Executing RunApp plugin..."
-msgstr "RunApp-Plugin ausführen ..."
-
-#: ../lib/Plugins/FileTransfer.cpp:63
-#: ../lib/Plugins/FileTransfer.cpp:408
+#: ../lib/Plugins/FileTransfer.cpp:63 ../lib/Plugins/FileTransfer.cpp:384
msgid "FileTransfer: URL not specified"
msgstr "Dateiübertragung: URL nicht angegeben"
-#: ../lib/Plugins/FileTransfer.cpp:80
+#: ../lib/Plugins/FileTransfer.cpp:67
#, c-format
-msgid "Sending archive %s via %s"
+msgid "Sending archive %s to %s"
msgstr "Archiv %s via %s senden"
-#: ../lib/Plugins/FileTransfer.cpp:335
+#: ../lib/Plugins/FileTransfer.cpp:309
msgid "File Transfer: Creating a report..."
msgstr "Dateiübertragung: Einen Bericht erstellen ..."
-#: ../lib/Plugins/FileTransfer.cpp:357
-#: ../lib/Plugins/FileTransfer.cpp:385
-msgid "CFileTransfer::Run(): Cannot create and send an archive: "
-msgstr "CFileTransfer::Run(): Kann kein Archiv erzeugen und senden: "
+#: ../lib/Plugins/FileTransfer.cpp:334
+#, c-format
+msgid "Can't create and send an archive: %s"
+msgstr "Kann kein Archiv erzeugen und senden: %s"
+
+#: ../lib/Plugins/FileTransfer.cpp:359
+#, c-format
+msgid "Can't create and send an archive %s"
+msgstr "Kann kein Archiv erzeugen und senden %s"
-#: ../lib/Plugins/KerneloopsScanner.cpp:81
+#: ../lib/Plugins/KerneloopsScanner.cpp:84
msgid "Creating kernel oops crash reports..."
msgstr "Kernel-Oops-Crash-Berichte erzeugen ..."
-#: ../lib/Plugins/Mailx.cpp:109
+#: ../lib/Plugins/Mailx.cpp:163
msgid "Sending an email..."
msgstr "Eine E-Mail senden ..."
-#: ../lib/Plugins/SOSreport.cpp:113
+#: ../lib/Plugins/SOSreport.cpp:69
msgid "Executing SOSreport plugin..."
msgstr "SOSreport-Plugin ausführen ..."
-#: ../lib/Plugins/SOSreport.cpp:135
-msgid "running sosreport: "
-msgstr "sosreport ausführen: "
+#: ../lib/Plugins/SOSreport.cpp:91
+#, c-format
+msgid "running sosreport: %s"
+msgstr "sosreport ausführen: %s"
-#: ../lib/Plugins/SOSreport.cpp:150
+#: ../lib/Plugins/SOSreport.cpp:95
msgid "done running sosreport"
msgstr "Ausführung von sosreport abgeschlossen"
+#~ msgid "ABRT service has been started"
+#~ msgstr "ABRT-Dienst wurde gestartet"
+
+#~ msgid "Executing RunApp plugin..."
+#~ msgstr "RunApp-Plugin ausführen ..."
+
+#~ msgid "gtk-refresh"
+#~ msgstr "gtk-refresh"
+
+#~ msgid "Binary file %s will not be reported."
+#~ msgstr "Binärdatei %s wird nicht gemeldet."
+
#~ msgid "Check CC and add coment +1..."
#~ msgstr "CC überprüfen und Kommentar hinzufügen +1 ..."
+
#~ msgid "Pending events: %i"
#~ msgstr "Ausstehende Ereignisse: %i"
+
#~ msgid "Can't create menu from the description, popup won't be available!\n"
#~ msgstr ""
#~ "Kann kein Menü aus der Beschreibung erzeugen, Popup wird nicht verfügbar "
#~ "sein!\n"
+
#~ msgid "Creating an archive..."
#~ msgstr "Ein Archiv erzeugen ..."
+
#~ msgid "Applet is already running."
#~ msgstr "Applet wird beläuft ausgeführt bereits."
+
#~ msgid ""
#~ "This is default handler, you should register your own with "
#~ "ConnectCrashHandler"
#~ msgstr ""
#~ "Dies ist der Standard-Handler, Sie sollten Ihren eigenen mittels "
#~ "ConnectCrashHandler registrieren"
+
#~ msgid ""
#~ "This is default handler, you should register your own with "
#~ "ConnectQuotaExceedHandler"
#~ msgstr ""
#~ "Dies ist der Standard-Handler, Sie sollten Ihren eigenen mittels "
#~ "ConnectQuotaExceedHandler registrieren"
+
#~ msgid "Out of memory"
#~ msgstr "Nicht genug Speicher"
+
#~ msgid "Getting local/global universal unique identification..."
#~ msgstr "Lokale/globale, universelle, eindeutige Identifikation abrufen ..."
-
diff --git a/po/es.po b/po/es.po
index 293101f7..fd967ba9 100644
--- a/po/es.po
+++ b/po/es.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: abrt.master.es\n"
"Report-Msgid-Bugs-To: jmoskovc@redhat.com\n"
-"POT-Creation-Date: 2009-11-10 09:32+0000\n"
-"PO-Revision-Date: 2009-11-10 08:31-0300\n"
+"POT-Creation-Date: 2009-11-16 14:52+0000\n"
+"PO-Revision-Date: 2009-11-16 11:54-0300\n"
"Last-Translator: Domingo Becker <domingobecker@gmail.com>\n"
"Language-Team: Spanish <fedora-trans-es@redhat.com>\n"
"MIME-Version: 1.0\n"
@@ -86,6 +86,7 @@ msgid "About ABRT"
msgstr "Acerca de ABRT"
#: ../src/Gui/ccgui.glade.h:6
+#: ../src/Gui/abrt.desktop.in.h:1
msgid "Automatic Bug Reporting Tool"
msgstr "Herramienta de Informe de Errores Automática"
@@ -426,59 +427,58 @@ msgstr "gtk-close"
msgid "gtk-remove"
msgstr "gtk-remove"
+#: ../src/Gui/abrt.desktop.in.h:2
+msgid "View and report application crashes"
+msgstr "Ver e informar el cuelgue de una aplicación"
+
#: ../src/Applet/Applet.cpp:79
#, c-format
msgid "A crash in package %s has been detected"
msgstr "Ha sido detectado una caída en el paquete %s."
-#: ../src/Applet/Applet.cpp:138
-msgid "ABRT service has been started"
-msgstr "El servicio ABRT ha sido ejecutado"
-
-#: ../src/Applet/Applet.cpp:140
-#: ../src/Applet/Applet.cpp:254
+#: ../src/Applet/Applet.cpp:253
msgid "ABRT service is not running"
msgstr "El servicio ABRT no se está ejecutando"
-#: ../src/Applet/CCApplet.cpp:185
+#: ../src/Applet/CCApplet.cpp:189
msgid "Warning"
msgstr "Aviso"
-#: ../src/Daemon/Daemon.cpp:519
+#: ../src/Daemon/Daemon.cpp:520
msgid "Report size exceeded the quota. Please check system's MaxCrashReportsSize value in abrt.conf."
msgstr "El tamaño del informe excede la cuota. Por favor, verifique el valor de MaxCrashReportsSize del sistema en abrt.conf."
-#: ../lib/Plugins/Bugzilla.cpp:240
+#: ../lib/Plugins/Bugzilla.cpp:209
#, c-format
msgid "Bug is already reported: %i"
msgstr "El error ya ha sido informado: %i"
-#: ../lib/Plugins/Bugzilla.cpp:302
+#: ../lib/Plugins/Bugzilla.cpp:271
#, c-format
msgid "New bug id: %i"
msgstr "Nuevo id del error: %i"
-#: ../lib/Plugins/Bugzilla.cpp:395
+#: ../lib/Plugins/Bugzilla.cpp:364
msgid "Checking for duplicates..."
msgstr "Chequeando si hay duplicados..."
-#: ../lib/Plugins/Bugzilla.cpp:398
+#: ../lib/Plugins/Bugzilla.cpp:367
msgid "Logging into bugzilla..."
msgstr "Ingresando a bugzilla..."
-#: ../lib/Plugins/Bugzilla.cpp:402
+#: ../lib/Plugins/Bugzilla.cpp:371
msgid "Empty login and password. Please check Bugzilla.conf"
msgstr "Usuario y contraseña vacios. Por favor compruebe el archivo Bugzilla.conf"
-#: ../lib/Plugins/Bugzilla.cpp:408
+#: ../lib/Plugins/Bugzilla.cpp:377
msgid "Checking CC..."
msgstr "Chequeando CC..."
-#: ../lib/Plugins/Bugzilla.cpp:417
+#: ../lib/Plugins/Bugzilla.cpp:386
msgid "Creating new bug..."
msgstr "Creando un nuevo informe..."
-#: ../lib/Plugins/Bugzilla.cpp:421
+#: ../lib/Plugins/Bugzilla.cpp:390
msgid "Logging out..."
msgstr "Saliendo..."
@@ -520,17 +520,16 @@ msgstr "Omita la instalación de la información de depuración"
msgid "Creating and submitting a report..."
msgstr "Creando y enviando un informe..."
-#: ../lib/Plugins/Logger.cpp:57
-#: ../lib/Plugins/Mailx.cpp:124
+#: ../lib/Plugins/Logger.cpp:65
msgid "Creating a report..."
msgstr "Creando un informe..."
-#: ../lib/Plugins/RunApp.cpp:64
+#: ../lib/Plugins/RunApp.cpp:35
msgid "Executing RunApp plugin..."
msgstr "Ejecutando complemento RunApp..."
#: ../lib/Plugins/FileTransfer.cpp:63
-#: ../lib/Plugins/FileTransfer.cpp:381
+#: ../lib/Plugins/FileTransfer.cpp:384
msgid "FileTransfer: URL not specified"
msgstr "Transferencia de archivo: URL no especificada"
@@ -557,20 +556,23 @@ msgstr "No se puede crear y enviar un archivo %s"
msgid "Creating kernel oops crash reports..."
msgstr "Creando un informe de cuelgue de kernel oops..."
-#: ../lib/Plugins/Mailx.cpp:109
+#: ../lib/Plugins/Mailx.cpp:163
msgid "Sending an email..."
msgstr "Enviando un correo..."
-#: ../lib/Plugins/SOSreport.cpp:100
+#: ../lib/Plugins/SOSreport.cpp:69
msgid "Executing SOSreport plugin..."
msgstr "Ejecutando complemento SOSreport..."
-#: ../lib/Plugins/SOSreport.cpp:122
+#: ../lib/Plugins/SOSreport.cpp:91
#, c-format
msgid "running sosreport: %s"
msgstr "ejecutando sosreport: %s"
-#: ../lib/Plugins/SOSreport.cpp:137
+#: ../lib/Plugins/SOSreport.cpp:95
msgid "done running sosreport"
msgstr "Sosreport corriendo"
+#~ msgid "ABRT service has been started"
+#~ msgstr "El servicio ABRT ha sido ejecutado"
+
diff --git a/po/fi.po b/po/fi.po
index ccd1e70b..14189ba9 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -2,18 +2,21 @@
# Copyright (C) 2009 abrt's COPYRIGHT HOLDER
# This file is distributed under the same license as the abrt package.
# Ville-Pekka Vainio <vpivaini@cs.helsinki.fi>, 2009.
+#: ../src/Gui/CCReporterDialog.py:191
msgid ""
msgstr ""
"Project-Id-Version: abrt\n"
"Report-Msgid-Bugs-To: jmoskovc@redhat.com\n"
-"POT-Creation-Date: 2009-11-08 20:52+0000\n"
-"PO-Revision-Date: 2009-11-08 23:07+0200\n"
+"POT-Creation-Date: 2009-11-13 15:23+0000\n"
+"PO-Revision-Date: 2009-11-13 20:41+0300\n"
"Last-Translator: Ville-Pekka Vainio <vpivaini@cs.helsinki.fi>\n"
"Language-Team: Finnish <laatu@lokalisointi.org>\n"
+"Language: fi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Virtaal 0.4.1\n"
#: ../src/Gui/ABRTExceptions.py:6
msgid "Another client is already running, trying to wake it."
@@ -96,7 +99,7 @@ msgstr "Odota hetki..."
msgid "Plugins"
msgstr "Liitännäiset"
-#: ../src/Gui/ccgui.glade.h:10 ../src/Gui/report.glade.h:3
+#: ../src/Gui/ccgui.glade.h:10 ../src/Gui/report.glade.h:4
msgid "Report"
msgstr "Raportti"
@@ -161,8 +164,8 @@ msgid "Date"
msgstr "Päiväys"
#: ../src/Gui/CCMainWindow.py:91
-msgid "Crash Rate"
-msgstr "Kaatumisaste"
+msgid "Crash count"
+msgstr "Kaatumisten määrä"
#: ../src/Gui/CCMainWindow.py:93
msgid "User"
@@ -228,15 +231,15 @@ msgstr ""
msgid "Error getting the report: %s"
msgstr "Raportin noutaminen epäonnistui: %s"
-#: ../src/Gui/CCReporterDialog.py:173
+#: ../src/Gui/CCReporterDialog.py:177
msgid "Brief description how to reproduce this or what you did..."
msgstr ""
"Lyhyt kuvaus siitä, miten tämän pystyy toistamaan tai mitä olit tekemässä..."
-#: ../src/Gui/CCReporterDialog.py:201
+#: ../src/Gui/CCReporterDialog.py:219
#, python-format
msgid ""
-"Reporting disabled because the backtrace is unusable!\n"
+"Reporting disabled because the backtrace is unusable.\n"
"Please try to install debuginfo manually using command:<span color=\"blue\"> "
"debuginfo-install %s </span>\n"
"then use Refresh button to regenerate the backtrace."
@@ -248,11 +251,11 @@ msgstr ""
"Käytä sitten Päivitä-painiketta virheenjäljitystietojen generoimiseksi "
"uudelleen."
-#: ../src/Gui/CCReporterDialog.py:203
+#: ../src/Gui/CCReporterDialog.py:221
msgid "The bactrace is unusable, you can't report this!"
msgstr "Virheenjäljitystiedot ovat hyödyttömät, tätä ei voi raportoida!"
-#: ../src/Gui/CCReporterDialog.py:209
+#: ../src/Gui/CCReporterDialog.py:227
msgid ""
"The bactrace is incomplete, please make sure you provide good steps to "
"reproduce."
@@ -260,7 +263,7 @@ msgstr ""
"Virheenjäljitystiedot ovat epätäydelliset, varmista että olet kertonut "
"tarkat vaiheet virheen toistamiseen."
-#: ../src/Gui/CCReporterDialog.py:247
+#: ../src/Gui/CCReporterDialog.py:272
#, python-format
msgid ""
"<b>WARNING</b>, you're about to send data which might contain sensitive "
@@ -301,7 +304,11 @@ msgstr "Graafista käyttöliittymää ei voi näyttää!"
msgid "Comment"
msgstr "Kommentti"
-#: ../src/Gui/report.glade.h:4
+#: ../src/Gui/report.glade.h:3
+msgid "How to reproduce (in a few simple steps)"
+msgstr "Kuinka tämän voi toistaa (muutamalla helpolla toimenpiteellä)"
+
+#: ../src/Gui/report.glade.h:5
msgid "Send"
msgstr "Lähetä"
@@ -446,7 +453,7 @@ msgstr "ABRT-palvelu ei ole käytössä"
msgid "Warning"
msgstr "Varoitus"
-#: ../src/Daemon/Daemon.cpp:531
+#: ../src/Daemon/Daemon.cpp:520
msgid ""
"Report size exceeded the quota. Please check system's MaxCrashReportsSize "
"value in abrt.conf."
@@ -454,37 +461,37 @@ msgstr ""
"Raportin koko ylitti sille annetun rajan. Tarkista järjestelmän "
"MaxCrashReportsSize-arvo abrt.conf-tiedostossa."
-#: ../lib/Plugins/Bugzilla.cpp:316
+#: ../lib/Plugins/Bugzilla.cpp:209
#, c-format
msgid "Bug is already reported: %i"
msgstr "Ohjelmavirheestä on jo tehty ilmoitus: %i"
-#: ../lib/Plugins/Bugzilla.cpp:378
+#: ../lib/Plugins/Bugzilla.cpp:271
#, c-format
msgid "New bug id: %i"
msgstr "Uuden ohjelmavirheilmoituksen tunnus: %i"
-#: ../lib/Plugins/Bugzilla.cpp:471
+#: ../lib/Plugins/Bugzilla.cpp:364
msgid "Checking for duplicates..."
msgstr "Etsitään samanlaisia..."
-#: ../lib/Plugins/Bugzilla.cpp:474
+#: ../lib/Plugins/Bugzilla.cpp:367
msgid "Logging into bugzilla..."
msgstr "Kirjaudutaan bugzillaan..."
-#: ../lib/Plugins/Bugzilla.cpp:478
+#: ../lib/Plugins/Bugzilla.cpp:371
msgid "Empty login and password. Please check Bugzilla.conf"
msgstr "Käyttäjätunnus ja salasana ovat tyhjiä. Tarkista Bugzilla.conf"
-#: ../lib/Plugins/Bugzilla.cpp:484
+#: ../lib/Plugins/Bugzilla.cpp:377
msgid "Checking CC..."
msgstr "Tarkistetaan CC..."
-#: ../lib/Plugins/Bugzilla.cpp:493
+#: ../lib/Plugins/Bugzilla.cpp:386
msgid "Creating new bug..."
msgstr "Luodaan uusi ohjelmavirheilmoitus..."
-#: ../lib/Plugins/Bugzilla.cpp:497
+#: ../lib/Plugins/Bugzilla.cpp:390
msgid "Logging out..."
msgstr "Kirjaudutaan ulos..."
@@ -492,31 +499,31 @@ msgstr "Kirjaudutaan ulos..."
msgid "Getting local universal unique identification"
msgstr "Haetaan paikallinen ainutkertainen tunnus"
-#: ../lib/Plugins/CCpp.cpp:228
+#: ../lib/Plugins/CCpp.cpp:254
msgid "Getting backtrace..."
msgstr "Haetaan pinolistausta..."
-#: ../lib/Plugins/CCpp.cpp:526 ../lib/Plugins/CCpp.cpp:653
+#: ../lib/Plugins/CCpp.cpp:552 ../lib/Plugins/CCpp.cpp:679
msgid "Searching for debug-info packages..."
msgstr "Etsitään debug-info-paketteja..."
-#: ../lib/Plugins/CCpp.cpp:588 ../lib/Plugins/CCpp.cpp:687
+#: ../lib/Plugins/CCpp.cpp:614 ../lib/Plugins/CCpp.cpp:713
msgid "Downloading and installing debug-info packages..."
msgstr "Ladataan ja asennetaan debug-info-paketteja..."
-#: ../lib/Plugins/CCpp.cpp:792
+#: ../lib/Plugins/CCpp.cpp:818
msgid "Getting local universal unique identification..."
msgstr "Haetaan paikallinen ainutkertainen tunnus..."
-#: ../lib/Plugins/CCpp.cpp:811
+#: ../lib/Plugins/CCpp.cpp:837
msgid "Getting global universal unique identification..."
msgstr "Haetaan yleinen ainutkertainen tunnus..."
-#: ../lib/Plugins/CCpp.cpp:856
+#: ../lib/Plugins/CCpp.cpp:882
msgid "Starting report creation..."
msgstr "Aloitetaan ilmoituksen tekeminen..."
-#: ../lib/Plugins/CCpp.cpp:886
+#: ../lib/Plugins/CCpp.cpp:912
msgid "Skipping debuginfo installation"
msgstr "Ohitetaan debuginfon asennus"
@@ -524,15 +531,15 @@ msgstr "Ohitetaan debuginfon asennus"
msgid "Creating and submitting a report..."
msgstr "Luodaan ja lähetetään ilmoitus..."
-#: ../lib/Plugins/Logger.cpp:57 ../lib/Plugins/Mailx.cpp:124
+#: ../lib/Plugins/Logger.cpp:65
msgid "Creating a report..."
msgstr "Luodaan ilmoitus..."
-#: ../lib/Plugins/RunApp.cpp:64
+#: ../lib/Plugins/RunApp.cpp:35
msgid "Executing RunApp plugin..."
msgstr "Suoritetaan RunApp-liitännäinen..."
-#: ../lib/Plugins/FileTransfer.cpp:63 ../lib/Plugins/FileTransfer.cpp:381
+#: ../lib/Plugins/FileTransfer.cpp:63 ../lib/Plugins/FileTransfer.cpp:384
msgid "FileTransfer: URL not specified"
msgstr "FileTransfer: URL:ää ei ole määritelty"
@@ -559,20 +566,20 @@ msgstr "Ei voitu luoda ja lähettää arkistoa %s"
msgid "Creating kernel oops crash reports..."
msgstr "Luodaan kernel oops -kaatumisilmoituksia..."
-#: ../lib/Plugins/Mailx.cpp:109
+#: ../lib/Plugins/Mailx.cpp:163
msgid "Sending an email..."
msgstr "Lähetetään sähköpostia..."
-#: ../lib/Plugins/SOSreport.cpp:100
+#: ../lib/Plugins/SOSreport.cpp:69
msgid "Executing SOSreport plugin..."
msgstr "Suoritetaan SOSreport-liitännäinen..."
-#: ../lib/Plugins/SOSreport.cpp:122
+#: ../lib/Plugins/SOSreport.cpp:91
#, c-format
msgid "running sosreport: %s"
msgstr "suoritetaan sosreport: %s"
-#: ../lib/Plugins/SOSreport.cpp:137
+#: ../lib/Plugins/SOSreport.cpp:95
msgid "done running sosreport"
msgstr "sosreportin suoritus valmistui"
diff --git a/po/kn.po b/po/kn.po
index e1b3a9f8..2aa379cb 100644
--- a/po/kn.po
+++ b/po/kn.po
@@ -2,13 +2,14 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
+#: ../src/Gui/CCReporterDialog.py:191
# Shankar Prasad <svenkate@redhat.com>, 2009.
msgid ""
msgstr ""
"Project-Id-Version: abrt.master.kn\n"
"Report-Msgid-Bugs-To: jmoskovc@redhat.com\n"
-"POT-Creation-Date: 2009-09-29 14:46+0200\n"
-"PO-Revision-Date: 2009-09-23 12:04+0530\n"
+"POT-Creation-Date: 2009-11-12 03:54+0000\n"
+"PO-Revision-Date: 2009-11-12 12:42+0530\n"
"Last-Translator: Shankar Prasad <svenkate@redhat.com>\n"
"Language-Team: Kannada <en@li.org>\n"
"MIME-Version: 1.0\n"
@@ -17,41 +18,45 @@ msgstr ""
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/Gui/ABRTExceptions.py:4
+#: ../src/Gui/ABRTExceptions.py:6
msgid "Another client is already running, trying to wake it."
msgstr "ಇನà³à²¨à³Šà²‚ದೠಕà³à²²à³ˆà²‚ಟà³â€Œ ಈಗಾಗಲೆ ಚಾಲನೆಯಲà³à²²à²¿à²¦à³†, ಅದನà³à²¨à³ ಎಚà³à²šà²°à²—ೊಳಿಸಲೠಪà³à²°à²¯à²¤à³à²¨à²¿à²¸à²²à²¾à²—à³à²¤à³à²¤à²¿à²¦à³†."
-#: src/Gui/ABRTExceptions.py:10
+#: ../src/Gui/ABRTExceptions.py:13
msgid "Got unexpected data from daemon (is the database properly updated?)."
msgstr ""
"ಡೆಮನà³â€Œà²¨à²¿à²‚ದ ಅನಿರೀಕà³à²·à²¿à²¤à²µà²¾à²¦ ದತà³à²¤à²¾à²‚ಶವೠಮರಳಿದೆ (ದತà³à²¤à²¸à²‚ಚಯವನà³à²¨à³ ಸಮರà³à²ªà²•à²µà²¾à²—ಿ ಅಪà³â€Œà²¡à³‡à²Ÿà³ "
"ಮಾಡಲಾಗಿದೆಯೆ?)."
-#: src/Gui/ABRTPlugin.py:26
+#: ../src/Gui/ABRTPlugin.py:55
msgid "Analyzer plugins"
msgstr "ವಿಶà³à²²à³‡à²·à²•à²¦ ಪà³à²²à²—à³â€Œà²‡à²¨à³â€Œà²—ಳà³"
-#: src/Gui/ABRTPlugin.py:27
+#: ../src/Gui/ABRTPlugin.py:56
msgid "Action plugins"
msgstr "ಕà³à²°à²¿à²¯à³†à²¯ ಪà³à²²à²—à³â€Œà²‡à²¨à³â€Œà²—ಳà³"
-#: src/Gui/ABRTPlugin.py:28
+#: ../src/Gui/ABRTPlugin.py:57
msgid "Reporter plugins"
msgstr "ವರದಿಗಾರ ಪà³à²²à²—à³â€Œà²‡à²¨à³â€Œà²—ಳà³"
-#: src/Gui/ABRTPlugin.py:29
+#: ../src/Gui/ABRTPlugin.py:58
msgid "Database plugins"
msgstr "ದತà³à²¤à²¸à²‚ಚಯ ಪà³à²²à²—à³â€Œà²‡à²¨à³â€Œà²—ಳà³"
-#: src/Gui/CCDBusBackend.py:143
-msgid "Can't connect to dbus"
-msgstr "dbus ನೊಂದಿಗೆ ಸಂಪರà³à²• ಕಲà³à²ªà²¿à²¸à²²à³ ಸಾಧà³à²¯à²µà²¾à²—ಿಲà³à²²"
+#: ../src/Gui/ABRTPlugin.py:97
+msgid "Plugin name is not set, can't load it's settings"
+msgstr "ಪà³à²²à²—à³â€Œà²‡à²¨à³ ಹೆಸರನà³à²¨à³ ಹೊಂದಿಸಲಾಗಿಲà³à²², ಅದರ ಸಿದà³à²§à²¤à³†à²—ಳನà³à²¨à³ ಲೋಡೠಮಾಡಲೠಸಾಧà³à²¯à²µà²¾à²—ಿಲà³à²²"
-#: src/Gui/CCDBusBackend.py:169
-msgid "Please check if abrt daemon is running."
+#: ../src/Gui/CCDBusBackend.py:74 ../src/Gui/CCDBusBackend.py:97
+msgid "Can't connect to system dbus"
+msgstr "ವà³à²¯à²µà²¸à³à²¥à³†à²¯ dbus ನೊಂದಿಗೆ ಸಂಪರà³à²• ಕಲà³à²ªà²¿à²¸à²²à³ ಸಾಧà³à²¯à²µà²¾à²—ಿಲà³à²²"
+
+#: ../src/Gui/CCDBusBackend.py:100 ../src/Gui/CCDBusBackend.py:103
+msgid "Please check if abrt daemon is running"
msgstr "abrt ಡೆಮನೠಚಾಲನೆಯಲà³à²²à²¿à²¦à³†à²¯à³† ಎಂದೠಪರಿಶೀಲಿಸಿ."
-#: src/Gui/CCDBusBackend.py:187
+#: ../src/Gui/CCDBusBackend.py:155
msgid ""
"Daemon did't return valid report info\n"
"Debuginfo is missing?"
@@ -59,27 +64,47 @@ msgstr ""
"ಡೆಮನà³â€Œ ಒಂದೠಮಾನà³à²¯à²µà²¾à²¦ ವರದಿ ಮಾಹಿತಿಯನà³à²¨à³ ಮರಳಿಸಿಲà³à²²\n"
"ದೋಷನಿವಾರಣಾ ಮಾಹಿತಿಯೠಕಾಣಿಸà³à²¤à³à²¤à²¿à²²à³à²²?"
-#: src/Gui/ccgui.glade:6
-msgid "Please wait.."
-msgstr "ದಯವಿಟà³à²Ÿà³ ಕಾಯಿರಿ.."
-
-#: src/Gui/ccgui.glade:16
-msgid "Working..."
-msgstr "ಕೆಲಸ ಮಾಡà³à²¤à³à²¤à²¿à²¦à³†..."
-
-#: src/Gui/ccgui.glade:49
+#: ../src/Gui/ccgui.glade.h:1 ../src/Gui/report.glade.h:1
msgid " "
msgstr " "
-#: src/Gui/ccgui.glade:68
+#: ../src/Gui/ccgui.glade.h:2
+msgid "(C) 2009 Red Hat, Inc."
+msgstr "(C) 2009 Red Hat, Inc."
+
+#: ../src/Gui/ccgui.glade.h:3 ../src/Gui/CCMainWindow.py:244
+msgid "<b>Not reported!</b>"
+msgstr "<b>ವರದಿ ಮಾಡಲಾಗಿಲà³à²²!</b>"
+
+#: ../src/Gui/ccgui.glade.h:4
+msgid "<span color=\"white\">Description</span>"
+msgstr "<span color=\"white\">ವಿವರಣೆ</span>"
+
+#: ../src/Gui/ccgui.glade.h:5
msgid "About ABRT"
msgstr "ABRT ಬಗೆಗಿನ ಮಾಹಿತಿ"
-#: src/Gui/ccgui.glade:74
-msgid "(C) 2009 Red Hat, Inc."
-msgstr "(C) 2009 Red Hat, Inc."
+#: ../src/Gui/ccgui.glade.h:6
+msgid "Automatic Bug Reporting Tool"
+msgstr "ಸà³à²µà²¯à²‚ಚಾಲಿತ ದೋಷ ವರದಿ ಮಾಡà³à²µ ಉಪಕರಣ"
+
+#: ../src/Gui/ccgui.glade.h:7
+msgid "Delete"
+msgstr "ಅಳಿಸà³"
-#: src/Gui/ccgui.glade:75
+#: ../src/Gui/ccgui.glade.h:8
+msgid "Please wait.."
+msgstr "ದಯವಿಟà³à²Ÿà³ ಕಾಯಿರಿ.."
+
+#: ../src/Gui/ccgui.glade.h:9
+msgid "Plugins"
+msgstr "ಪà³à²²à²—à³â€Œà²‡à²¨à³â€Œà²—ಳà³"
+
+#: ../src/Gui/ccgui.glade.h:10 ../src/Gui/report.glade.h:4
+msgid "Report"
+msgstr "ವರದಿ"
+
+#: ../src/Gui/ccgui.glade.h:11
msgid ""
"This program is free software; you can redistribute it and/or modify it "
"under the terms of the GNU General Public License as published by the Free "
@@ -107,68 +132,57 @@ msgstr ""
"You should have received a copy of the GNU General Public License along with "
"this program. If not, see <http://www.gnu.org/licenses/>."
-#: src/Gui/ccgui.glade:106
-msgid "Automatic Bug Reporting Tool"
-msgstr "ಸà³à²µà²¯à²‚ಚಾಲಿತ ದೋಷ ವರದಿ ಮಾಡà³à²µ ಉಪಕರಣ"
-
-#: src/Gui/ccgui.glade:118
-msgid "_File"
-msgstr "ಕಡತ(_F)"
+#: ../src/Gui/ccgui.glade.h:16
+msgid "Working..."
+msgstr "ಕೆಲಸ ಮಾಡà³à²¤à³à²¤à²¿à²¦à³†..."
-#: src/Gui/ccgui.glade:138
+#: ../src/Gui/ccgui.glade.h:17
msgid "_Edit"
msgstr "ಸಂಪಾದನೆ (_E)"
-#: src/Gui/ccgui.glade:146
-msgid "Plugins"
-msgstr "ಪà³à²²à²—à³â€Œà²‡à²¨à³â€Œà²—ಳà³"
+#: ../src/Gui/ccgui.glade.h:18
+msgid "_File"
+msgstr "ಕಡತ(_F)"
-#: src/Gui/ccgui.glade:164
+#: ../src/Gui/ccgui.glade.h:19
msgid "_Help"
msgstr "ಸಹಾಯ (_H)"
-#: src/Gui/ccgui.glade:194 src/Gui/ccgui.glade:195
-msgid "Delete"
-msgstr "ಅಳಿಸà³"
-
-#: src/Gui/ccgui.glade:207 src/Gui/ccgui.glade:208 src/Gui/ccgui.glade:335
-#: src/Gui/report.glade:7 src/Gui/report.glade:24
-msgid "Report"
-msgstr "ವರದಿ"
-
-#: src/Gui/ccgui.glade:255
-msgid "<span color=\"white\">Description</span>"
-msgstr "<span color=\"white\">ವಿವರಣೆ</span>"
-
-#: src/Gui/ccgui.glade:297 src/Gui/CCMainWindow.py:239
-msgid "<b>Not reported!</b>"
-msgstr "<b>ವರದಿ ಮಾಡಲಾಗಿಲà³à²²!</b>"
-
-#: src/Gui/CCMainWindow.py:80
+#. add pixbuff separatelly
+#: ../src/Gui/CCMainWindow.py:80
msgid "Icon"
msgstr "ಚಿಹà³à²¨à³†"
-#: src/Gui/CCMainWindow.py:88
+#: ../src/Gui/CCMainWindow.py:88
msgid "Package"
msgstr "ಪà³à²¯à²¾à²•à³‡à²œà³"
-#: src/Gui/CCMainWindow.py:89
+#: ../src/Gui/CCMainWindow.py:89
msgid "Application"
msgstr "ಅನà³à²µà²¯"
-#: src/Gui/CCMainWindow.py:90
+#: ../src/Gui/CCMainWindow.py:90
msgid "Date"
msgstr "ದಿನಾಂಕ"
-#: src/Gui/CCMainWindow.py:91
-msgid "Crash Rate"
-msgstr "ಕà³à²¸à²¿à²¤à²¦ ದರ"
+#: ../src/Gui/CCMainWindow.py:91
+msgid "Crash count"
+msgstr "ಕà³à²¸à²¿à²¤à²¦ ಎಣಿಕೆ"
-#: src/Gui/CCMainWindow.py:93
+#: ../src/Gui/CCMainWindow.py:93
msgid "User"
msgstr "ಬಳಕೆದಾರ"
-#: src/Gui/CCMainWindow.py:177
+#: ../src/Gui/CCMainWindow.py:160
+#, python-format
+msgid ""
+"Can't show the settings dialog\n"
+"%s"
+msgstr ""
+"ಸಿದà³à²§à²¤à³†à²—ಳ ಸಂವಾದವನà³à²¨à³ ತೋರಿಸಲೠಸಾಧà³à²¯à²µà²¿à²²à³à²²\n"
+"%s"
+
+#: ../src/Gui/CCMainWindow.py:181
#, python-format
msgid ""
"Unable to finish current task!\n"
@@ -177,7 +191,7 @@ msgstr ""
"ಪà³à²°à²¸à²•à³à²¤ ಕಾರà³à²¯à²µà²¨à³à²¨à³ ಪೂರà³à²£à²—ೊಳಿಸಲಾಗಿಲà³à²²!\n"
"%s"
-#: src/Gui/CCMainWindow.py:194
+#: ../src/Gui/CCMainWindow.py:198
#, python-format
msgid ""
"Error while loading the dumplist, please check if abrt daemon is running\n"
@@ -187,17 +201,16 @@ msgstr ""
"ಎಂದೠದಯವಿಟà³à²Ÿà³ ಪರಿಶೀಲಿಸಿ\n"
" %s"
-#: src/Gui/CCMainWindow.py:204
+#: ../src/Gui/CCMainWindow.py:208
#, python-format
msgid "Can't get username for uid %s"
msgstr "uid %s ಗಾಗಿ ಬಳಕೆದಾರ ಹೆಸರನà³à²¨à³ ಪಡೆಯಲಾಗಲಿಲà³à²²"
-#: src/Gui/CCMainWindow.py:231
+#: ../src/Gui/CCMainWindow.py:236
msgid "<b>This crash has been reported, you can find the report(s) at:</b>\n"
-msgstr ""
-"<b>ಈ ಕà³à²¸à²¿à²¤à²µà²¨à³à²¨à³ ವರದಿ ಮಾಡಲಾಗಿದೆ, ಈ ವರದಿಯನà³à²¨à³ ನೀವೠಇಲà³à²²à²¿ ಕಾಣಬಹà³à²¦à²¾à²—ಿದೆ:</b>\n"
+msgstr "<b>ಈ ಕà³à²¸à²¿à²¤à²µà²¨à³à²¨à³ ವರದಿ ಮಾಡಲಾಗಿದೆ, ಈ ವರದಿಯನà³à²¨à³ ನೀವೠಇಲà³à²²à²¿ ಕಾಣಬಹà³à²¦à²¾à²—ಿದೆ:</b>\n"
-#: src/Gui/CCMainWindow.py:291
+#: ../src/Gui/CCMainWindow.py:296
msgid ""
"Unable to get report!\n"
"Debuginfo is missing?"
@@ -205,7 +218,7 @@ msgstr ""
"ವರದಿಯನà³à²¨à³ ಪಡೆಯಲೠಸಾಧà³à²¯à²µà²¾à²—ಿಲà³à²²!\n"
"ದೋಷನಿವಾರಣಾ ಮಾಹಿತಿ ಕಾಣೆಯಾಗಿದೆ?"
-#: src/Gui/CCMainWindow.py:306
+#: ../src/Gui/CCMainWindow.py:314
#, python-format
msgid ""
"Reporting failed!\n"
@@ -214,12 +227,40 @@ msgstr ""
"ವರದಿ ಮಾಡà³à²µà²²à³à²²à²¿ ವಿಫಲಗೊಂಡಿದೆ!\n"
"%s"
-#: src/Gui/CCMainWindow.py:338
+#: ../src/Gui/CCMainWindow.py:333 ../src/Gui/CCMainWindow.py:360
#, python-format
msgid "Error getting the report: %s"
msgstr "ವರದಿಯನà³à²¨à³ ಪಡೆಯà³à²µà²²à³à²²à²¿ ದೋಷ ಉಂಟಾಗಿದೆ: %s"
-#: src/Gui/CCReporterDialog.py:98
+#: ../src/Gui/CCReporterDialog.py:177
+msgid "Brief description how to reproduce this or what you did..."
+msgstr ""
+"ಇದನà³à²¨à³ ಪà³à²¨à²ƒ ಮಾಡà³à²µà³à²¦à³ ಹೇಗೆ ಅಥವ ನೀವೠà²à²¨à³ ಮಾಡಿದà³à²¦à³€à²°à²¿ ಎನà³à²¨à³à²µà³à²¦à²° ಬಗೆಗಿನ ಸಂಕà³à²·à²¿à²ªà³à²¤ "
+"ವಿವರಣೆ..."
+
+#: ../src/Gui/CCReporterDialog.py:219
+#, python-format
+msgid ""
+"Reporting disabled because the backtrace is unusable.\n"
+"Please try to install debuginfo manually using command:<span color=\"blue\"> "
+"debuginfo-install %s </span>\n"
+"then use Refresh button to regenerate the backtrace."
+msgstr ""
+"ಬà³à²¯à²¾à²•à³â€Œà²Ÿà³à²°à³‡à²¸à³ ಬಳಸಲೠಯೋಗà³à²¯à²µà²¾à²—ಿರದೆ ಇರà³à²µà²¦à²°à²¿à²‚ದ ವರದಿ ಮಾಡà³à²µà³à²¦à²¨à³à²¨à³ ಅಶಕà³à²¤à²—ೊಳಿಸಲಾಗಿದೆ.\n"
+"<span color=\"blue\"> debuginfo-install %s </span> ಆಜà³à²¯à³†à²¯à²¨à³à²¨à³ ಬಳಸಿಕೊಂಡೠ\n"
+"ದೋಷನಿವಾರಣಾ ಮಾಹಿತಿಯನà³à²¨à³ ಅನà³à²¸à³à²¥à²¾à²ªà²¿à²¸à²¿ ನಂತರ ಪà³à²¨à²¶à³à²šà³‡à²¤à²¨à²—ೊಳಿಸೠಗà³à²‚ಡಿಯನà³à²¨à³ ಬಳಸಿಕೊಂಡೠಬà³à²¯à²¾à²•à³â€Œà²Ÿà³à²°à³‡à²¸à³ ಅನà³à²¨à³ ಮರಳಿ ಉತà³à²ªà²¾à²¦à²¿à²¸à²¿."
+
+#: ../src/Gui/CCReporterDialog.py:221
+msgid "The bactrace is unusable, you can't report this!"
+msgstr "ಬà³à²¯à²¾à²•à³â€Œà²Ÿà³à²°à³‡à²¸à³ ಬಳಸಲೠಯೋಗà³à²¯à²µà²¾à²—ಿಲà³à²². ನೀವೠಇದನà³à²¨à³ ವರದಿ ಮಾಡಲೠಸಾಧà³à²¯à²µà²¿à²²à³à²²!"
+
+#: ../src/Gui/CCReporterDialog.py:227
+msgid ""
+"The bactrace is incomplete, please make sure you provide good steps to "
+"reproduce."
+msgstr "ಬà³à²¯à²¾à²•à³â€Œà²Ÿà³à²°à³‡à²¸à³ ಅಪೂರà³à²£à²—ೊಂಡಿದೆ, ಇದನà³à²¨à³ ಮರಳಿ ಉತà³à²ªà²¾à²¦à²¿à²¸à²²à³ ಉತà³à²¤à²®à²µà²¾à²¦ ವಿವರಣೆಯà³à²•à³à²¤ ಸೂಚನೆಗಳನà³à²¨à³ ಒದಗಿಸಿದà³à²§à³€à²°à²¿ ಎಂದೠಖಚಿತಪಡಿಸಿಕೊಳà³à²³à²¿."
+
+#: ../src/Gui/CCReporterDialog.py:272
#, python-format
msgid ""
"<b>WARNING</b>, you're about to send data which might contain sensitive "
@@ -230,192 +271,186 @@ msgstr ""
"ಕಳà³à²¹à²¿à²¸à²²à²¿à²¦à³à²¦à³€à²°à²¿.\n"
"ನೀವೠನಿಜವಾಗಿಯೂ <b>%s</b> ಅನà³à²¨à³ ಕಳà³à²¹à²¿à²¸à²¬à³‡à²•à³†?\n"
-#: src/Gui/CCReporterDialog.py:111
-msgid "Brief description how to reproduce this or what you did..."
-msgstr ""
-"ಇದನà³à²¨à³ ಪà³à²¨à²ƒ ಮಾಡà³à²µà³à²¦à³ ಹೇಗೆ ಅಥವ ನೀವೠà²à²¨à³ ಮಾಡಿದà³à²¦à³€à²°à²¿ ಎನà³à²¨à³à²µà³à²¦à²° ಬಗೆಗಿನ ಸಂಕà³à²·à²¿à²ªà³à²¤ "
-"ವಿವರಣೆ..."
-
-#: src/Gui/dialogs.glade:7
+#: ../src/Gui/dialogs.glade.h:1
msgid "Report done"
msgstr "ವರದಿಯನà³à²¨à³ ಪೂರà³à²£à²—ೊಳಿಸಲಾಗಿದೆ"
-#: src/Gui/dialogs.glade:47 src/Gui/settings.glade:695
-#: src/Gui/settings.glade:785
+#: ../src/Gui/dialogs.glade.h:2 ../src/Gui/settings.glade.h:27
msgid "gtk-ok"
msgstr "gtk-ok"
-#: src/Gui/PluginSettingsUI.py:17
+#: ../src/Gui/PluginSettingsUI.py:18
msgid "Can't find PluginDialog widget in UI description!"
msgstr "UI ವಿವರಣೆಯಲà³à²²à²¿ PluginDialog ವಿಜೆಟೠಕಂಡೠಬಂದಿಲà³à²²!"
-#: src/Gui/PluginSettingsUI.py:21
+#. we shouldn't get here, but just to be safe
+#: ../src/Gui/PluginSettingsUI.py:24
#, python-format
msgid "No UI for plugin %s"
msgstr "ಪà³à²²à²—à³â€Œà²‡à²¨à³â€Œ %s ಗಾಗಿ ಯಾವà³à²¦à³† UI ಇಲà³à²²"
-#: src/Gui/PluginSettingsUI.py:38 src/Gui/PluginSettingsUI.py:64
+#: ../src/Gui/PluginSettingsUI.py:55 ../src/Gui/PluginSettingsUI.py:81
msgid "combo box is not implemented"
msgstr "ಸಂಯೋಜನಾ ಚೌಕವನà³à²¨à³ ಅನà³à²µà²¯à²¿à²¸à²²à²¾à²—ಿಲà³à²²"
-#: src/Gui/PluginSettingsUI.py:47
+#: ../src/Gui/PluginSettingsUI.py:64
msgid "Nothing to hydrate!"
msgstr "ಹೈಡà³à²°à³‡à²Ÿà³ ಮಾಡಲೠà²à²¨à³‚ ಇಲà³à²²!"
-#: src/Gui/report.glade:64
+#: ../src/Gui/report.glade.h:2
msgid "Comment"
msgstr "ಅಭಿಪà³à²°à²¾à²¯"
-#: src/Gui/report.glade:104 src/Gui/settings.glade:682
-#: src/Gui/settings.glade:797
-msgid "gtk-cancel"
-msgstr "gtk-cancel"
+#: ../src/Gui/report.glade.h:3
+msgid "How to reproduce (in a few simple steps)"
+msgstr "ಹೇಗೆ ಮರಳಿ ಉತà³à²ªà²¾à²¦à²¿à²¸à²¬à²¹à³à²¦à³ (ಕೆಲವೠಸರಳ ಹಂತಗಳಲà³à²²à²¿)"
-#: src/Gui/report.glade:119
+#: ../src/Gui/report.glade.h:5
msgid "Send"
msgstr "ಕಳà³à²¹à²¿à²¸à³"
-#: src/Gui/SettingsDialog.py:34 src/Gui/SettingsDialog.py:51
+#: ../src/Gui/SettingsDialog.py:33 ../src/Gui/SettingsDialog.py:50
msgid "<b>Select plugin</b>"
msgstr "<b>ಪà³à²²à²—à³â€Œà²‡à²¨à³ ಅನà³à²¨à³ ಆರಿಸಿ</b>"
-#: src/Gui/SettingsDialog.py:37
+#: ../src/Gui/SettingsDialog.py:36
msgid "<b>Select database backend</b>"
msgstr "<b>ದತà³à²¤à²¸à²‚ಚಯ ಬà³à²¯à²¾à²•à³†à²‚ಡೠಅನà³à²¨à³ ಆರಿಸಿ</b>"
-#: src/Gui/SettingsDialog.py:165
+#: ../src/Gui/SettingsDialog.py:165
msgid "Remove this job"
msgstr "ಈ ಕಾರà³à²¯à²µà²¨à³à²¨à³ ತೆಗೆದೠಹಾಕಿ"
-#: src/Gui/SettingsDialog.py:208
+#: ../src/Gui/SettingsDialog.py:208
msgid "Remove this action"
msgstr "ಈ ಕà³à²°à²¿à²¯à³†à²¯à²¨à³à²¨à³ ತೆಗೆದೠಹಾಕಿ"
-#: src/Gui/settings.glade:6
-msgid "Settings"
-msgstr "ಸಿದà³à²§à²¤à³†à²—ಳà³"
+#: ../src/Gui/settings.glade.h:1
+msgid "<b>Analyzer plugin</b>"
+msgstr "<b>ವಿಶà³à²²à³‡à²·à²•à²¦ ಪà³à²²à²—à³â€Œà²‡à²¨à³â€Œà²—ಳà³</b>"
-#: src/Gui/settings.glade:46 src/Gui/settings.glade:55
-#: src/Gui/settings.glade:107 src/Gui/settings.glade:120
-#: src/Gui/settings.glade:133
-msgid "Nothing selected"
-msgstr "à²à²¨à²¨à³à²¨à³‚ ಆರಿಸಲಾಗಿಲà³à²²"
+#: ../src/Gui/settings.glade.h:2
+msgid "<b>Associated action</b>"
+msgstr "<b>ಸಂಬಂಧಿತ ಕಾರà³à²¯</b>"
-#: src/Gui/settings.glade:72
-msgid "Web Site:"
-msgstr "ಜಾಲತಾಣ:"
+#: ../src/Gui/settings.glade.h:3
+msgid "<b>Plugin</b>"
+msgstr "<b>ಪà³à²²à²—à³â€Œà²‡à²¨à³</b>"
+
+#: ../src/Gui/settings.glade.h:4
+msgid "<b>Time (or period)</b>"
+msgstr "<b>ಸಮಯ (ಅಥವ ಕಾಲಾವಧಿ)</b>"
+
+#: ../src/Gui/settings.glade.h:5
+msgid "Analyzers, Actions, Reporters"
+msgstr "ವಿಶà³à²²à³‡à²·à²•à²—ಳà³, ಕà³à²°à²¿à²¯à³†à²—ಳà³, ವರದಿಗಾರರà³"
-#: src/Gui/settings.glade:84
+#: ../src/Gui/settings.glade.h:6
msgid "Author:"
msgstr "ಕತೃ:"
-#: src/Gui/settings.glade:97
-msgid "Version:"
-msgstr "ಆವೃತà³à²¤à²¿:"
-
-#: src/Gui/settings.glade:152
-msgid "Plugin Details"
-msgstr "ಪà³à²²à²—à³â€Œà²‡à²¨à³â€Œ ವಿವರಗಳà³"
+#: ../src/Gui/settings.glade.h:7
+msgid "Blacklisted packages: "
+msgstr "ಕಪà³à²ªà³à²ªà²Ÿà³à²Ÿà²¿à²—ೆ ಸೇರಿಸಲಾದ ಪà³à²¯à²¾à²•à³‡à²œà³à²—ಳà³: "
-#: src/Gui/settings.glade:179
+#: ../src/Gui/settings.glade.h:8
msgid "C_onfigure plugin"
msgstr "ಪà³à²²à²—à³â€Œà²‡à²¨à³â€Œ ಅನà³à²¨à³ ಸಂರಚಿಸà³(_o)"
-#: src/Gui/settings.glade:191
-msgid "gtk-close"
-msgstr "gtk-close"
-
-#: src/Gui/settings.glade:221
-msgid "Global Settings"
-msgstr "ಜಾಗತಿಕ ಸಿದà³à²§à²¤à³†à²—ಳà³"
-
-#: src/Gui/settings.glade:240
+#: ../src/Gui/settings.glade.h:9
msgid "Check package GPG signature"
msgstr "ಪà³à²¯à²¾à²•à³‡à²œà²¿à²¨ GPG ಸಹಿಯನà³à²¨à³ ಪರಿಶೀಲಿಸà³"
-#: src/Gui/settings.glade:256
+#: ../src/Gui/settings.glade.h:10
+msgid "Common"
+msgstr "ಸಾಮಾನà³à²¯"
+
+#: ../src/Gui/settings.glade.h:11
+msgid "Cron"
+msgstr "Cron"
+
+#: ../src/Gui/settings.glade.h:12
msgid "Database backend: "
msgstr "ದತà³à²¤à²¸à²‚ಚಯ ಬà³à²¯à²¾à²•à³†à²‚ಡà³: "
-#: src/Gui/settings.glade:281
-msgid "Blacklisted packages: "
-msgstr "ಕಪà³à²ªà³à²ªà²Ÿà³à²Ÿà²¿à²—ೆ ಸೇರಿಸಲಾದ ಪà³à²¯à²¾à²•à³‡à²œà³à²—ಳà³: "
+#: ../src/Gui/settings.glade.h:13
+msgid "Edit blacklisted packages"
+msgstr "ಕಪà³à²ªà³à²ªà²Ÿà³à²Ÿà²¿à²—ೆ ಸೇರಿಸಲಾದ ಪà³à²¯à²¾à²•à³‡à²œà³à²—ಳನà³à²¨à³ ಸಂಪಾದಿಸಿ"
-#: src/Gui/settings.glade:294
-msgid "Max coredump storage size(MB):"
-msgstr "ಗರಿಷà³à²Ÿ ಕೋರೠಬಿಸà³à²¡à³ ಶೇಖರಣಾ ಗಾತà³à²°(MB):"
+#: ../src/Gui/settings.glade.h:14
+msgid "GPG Keys"
+msgstr "GPG ಕೀಲಿಗಳà³"
-#: src/Gui/settings.glade:307
+#: ../src/Gui/settings.glade.h:15
msgid "GPG keys: "
msgstr "GPG ಕೀಲಿಗಳà³: "
-#: src/Gui/settings.glade:349
-msgid "Edit blacklisted packages"
-msgstr "ಕಪà³à²ªà³à²ªà²Ÿà³à²Ÿà²¿à²—ೆ ಸೇರಿಸಲಾದ ಪà³à²¯à²¾à²•à³‡à²œà³à²—ಳನà³à²¨à³ ಸಂಪಾದಿಸಿ"
+#: ../src/Gui/settings.glade.h:16
+msgid "Global Settings"
+msgstr "ಜಾಗತಿಕ ಸಿದà³à²§à²¤à³†à²—ಳà³"
-#: src/Gui/settings.glade:408
-msgid "Common"
-msgstr "ಸಾಮಾನà³à²¯"
+#: ../src/Gui/settings.glade.h:17
+msgid "Max coredump storage size(MB):"
+msgstr "ಗರಿಷà³à²Ÿ ಕೋರೠಬಿಸà³à²¡à³ ಶೇಖರಣಾ ಗಾತà³à²°(MB):"
-#: src/Gui/settings.glade:438
-msgid "<b>Plugin</b>"
-msgstr "<b>ಪà³à²²à²—à³â€Œà²‡à²¨à³</b>"
+#: ../src/Gui/settings.glade.h:18
+msgid "Nothing selected"
+msgstr "à²à²¨à²¨à³à²¨à³‚ ಆರಿಸಲಾಗಿಲà³à²²"
-#: src/Gui/settings.glade:448
-msgid "<b>Time (or period)</b>"
-msgstr "<b>ಸಮಯ (ಅಥವ ಕಾಲಾವಧಿ)</b>"
+#: ../src/Gui/settings.glade.h:19
+msgid "Plugin Details"
+msgstr "ಪà³à²²à²—à³â€Œà²‡à²¨à³â€Œ ವಿವರಗಳà³"
-#: src/Gui/settings.glade:510 src/Gui/settings.glade:624
-#: src/Gui/settings.glade:761
-msgid "gtk-add"
-msgstr "gtk-add"
+#: ../src/Gui/settings.glade.h:20
+msgid "Settings"
+msgstr "ಸಿದà³à²§à²¤à³†à²—ಳà³"
-#: src/Gui/settings.glade:534
-msgid "Cron"
-msgstr "Cron"
+#: ../src/Gui/settings.glade.h:21
+msgid "This function is not implemented yet!"
+msgstr "ಈ ಕà³à²°à²¿à²¯à³†à²¯à²¨à³à²¨à³ ಇನà³à²¨à³‚ ಸಹ ಅನà³à²µà²¯à²¿à²¸à²²à²¾à²—ಿಲà³à²²!"
-#: src/Gui/settings.glade:551
-msgid "<b>Analyzer plugin</b>"
-msgstr "<b>ವಿಶà³à²²à³‡à²·à²•à²¦ ಪà³à²²à²—à³â€Œà²‡à²¨à³â€Œà²—ಳà³</b>"
+#: ../src/Gui/settings.glade.h:22
+msgid "Version:"
+msgstr "ಆವೃತà³à²¤à²¿:"
-#: src/Gui/settings.glade:561
-msgid "<b>Associated action</b>"
-msgstr "<b>ಸಂಬಂಧಿತ ಕಾರà³à²¯</b>"
+#: ../src/Gui/settings.glade.h:23
+msgid "Web Site:"
+msgstr "ಜಾಲತಾಣ:"
-#: src/Gui/settings.glade:648
-msgid "Analyzers, Actions, Reporters"
-msgstr "ವಿಶà³à²²à³‡à²·à²•à²—ಳà³, ಕà³à²°à²¿à²¯à³†à²—ಳà³, ವರದಿಗಾರರà³"
+#: ../src/Gui/settings.glade.h:24
+msgid "gtk-add"
+msgstr "gtk-add"
-#: src/Gui/settings.glade:700
-msgid "This function is not implemented yet!"
-msgstr "ಈ ಕà³à²°à²¿à²¯à³†à²¯à²¨à³à²¨à³ ಇನà³à²¨à³‚ ಸಹ ಅನà³à²µà²¯à²¿à²¸à²²à²¾à²—ಿಲà³à²²!"
+#: ../src/Gui/settings.glade.h:25
+msgid "gtk-cancel"
+msgstr "gtk-cancel"
-#: src/Gui/settings.glade:738
-msgid "GPG Keys"
-msgstr "GPG ಕೀಲಿಗಳà³"
+#: ../src/Gui/settings.glade.h:26
+msgid "gtk-close"
+msgstr "gtk-close"
-#: src/Gui/settings.glade:773
+#: ../src/Gui/settings.glade.h:28
msgid "gtk-remove"
msgstr "gtk-remove"
-#: src/Applet/Applet.cpp:71
+#: ../src/Applet/Applet.cpp:79
#, c-format
msgid "A crash in package %s has been detected"
msgstr "ಪà³à²¯à²¾à²•à³‡à²œà³â€Œ %s ನಲà³à²²à²¿ ಒಂದೠಕà³à²¸à²¿à²¤à²µà³ ಕಂಡà³à²¬à²‚ದಿದೆ"
-#: src/Applet/Applet.cpp:130
+#: ../src/Applet/Applet.cpp:138
msgid "ABRT service has been started"
msgstr "ABRT ಸೇವೆಯನà³à²¨à³ ಆರಂಭಿಸಲಾಗಿದೆ"
-#: src/Applet/Applet.cpp:132 src/Applet/Applet.cpp:246
+#: ../src/Applet/Applet.cpp:140 ../src/Applet/Applet.cpp:254
msgid "ABRT service is not running"
msgstr "ABRT ಸೇವೆಯೠಚಾಲನೆಯಲà³à²²à²¿à²²à³à²²"
-#: src/Applet/CCApplet.cpp:185
+#: ../src/Applet/CCApplet.cpp:185
msgid "Warning"
msgstr "ಎಚà³à²šà²°à²¿à²•à³†"
-#: src/Daemon/Daemon.cpp:546
+#: ../src/Daemon/Daemon.cpp:520
msgid ""
"Report size exceeded the quota. Please check system's MaxCrashReportsSize "
"value in abrt.conf."
@@ -423,122 +458,125 @@ msgstr ""
"ವರದಿಯ ಗಾತà³à²°à²µà³ ಕೋಟವನà³à²¨à³ ಮೀರಿದೆ. abrt.conf ನಲà³à²²à²¿ ವà³à²¯à²µà²¸à³à²¥à³†à²¯ MaxCrashReportsSize ಅನà³à²¨à³ "
"ಪರಿಶೀಲಿಸಿ."
-#: lib/Plugins/Bugzilla.cpp:83
-msgid "Empty login and password. Please check Bugzilla.conf"
-msgstr ""
-"ಬಳಕೆದಾರ ಹೆಸರೠಹಾಗೠಗà³à²ªà³à²¤à²ªà²¦à²µà³ ಖಾಲಿ ಇದೆ. ದಯವಿಟà³à²Ÿà³ Bugzilla.conf ಅನà³à²¨à³ ಪರಿಶೀಲಿಸಿ"
-
-#: lib/Plugins/Bugzilla.cpp:227
-msgid "Bug is already reported: "
-msgstr "ದೋಷವನà³à²¨à³ ಈಗಾಗಲೆ ವರದಿ ಮಾಡಲಾಗಿದೆ: "
-
-#: lib/Plugins/Bugzilla.cpp:282
+#: ../lib/Plugins/Bugzilla.cpp:209
#, c-format
-msgid "Binary file %s will not be reported."
-msgstr "ಬೈನರಿ ಕಡತ %s ಅನà³à²¨à³ ವರದಿ ಮಾಡಲಾಗà³à²µà³à²¦à²¿à²²à³à²²."
+msgid "Bug is already reported: %i"
+msgstr "ದೋಷವನà³à²¨à³ ಈಗಾಗಲೆ ವರದಿ ಮಾಡಲಾಗಿದೆ: %i"
-#: lib/Plugins/Bugzilla.cpp:352
-msgid "New bug id: "
-msgstr "ಹೊಸ ದೋಷ ವರದಿಯ à²à²¡à²¿: "
+#: ../lib/Plugins/Bugzilla.cpp:271
+#, c-format
+msgid "New bug id: %i"
+msgstr "ಹೊಸ ದೋಷ ವರದಿಯ à²à²¡à²¿: %i"
-#: lib/Plugins/Bugzilla.cpp:421
+#: ../lib/Plugins/Bugzilla.cpp:364
msgid "Checking for duplicates..."
msgstr "ದà³à²µà²¿à²ªà³à²°à²¤à²¿à²—ಳಿಗಾಗಿ ಪರಿಶೀಲಿಸಲಾಗà³à²¤à³à²¤à²¿à²¦à³†..."
-#: lib/Plugins/Bugzilla.cpp:424 lib/Plugins/Bugzilla.cpp:436
+#: ../lib/Plugins/Bugzilla.cpp:367
msgid "Logging into bugzilla..."
msgstr "ಬಗà³â€Œà²à²¿à²²à³à²²à²¾à²—ೆ ಪà³à²°à²µà³‡à²¶à²¿à²¸à²²à²¾à²—à³à²¤à³à²¤à²¿à²¦à³†..."
-#: lib/Plugins/Bugzilla.cpp:427
-msgid "Check CC and add coment +1..."
-msgstr "CC ಅನà³à²¨à³ ಪರಿಶೀಲಿಸಿ ಹಾಗೠ+1 ಎಂದೠಅಭಿಪà³à²°à²¾à²¯à²µà²¨à³à²¨à³ ಸೇರಿಸà³..."
+#: ../lib/Plugins/Bugzilla.cpp:371
+msgid "Empty login and password. Please check Bugzilla.conf"
+msgstr "ಬಳಕೆದಾರ ಹೆಸರೠಹಾಗೠಗà³à²ªà³à²¤à²ªà²¦à²µà³ ಖಾಲಿ ಇದೆ. ದಯವಿಟà³à²Ÿà³ Bugzilla.conf ಅನà³à²¨à³ ಪರಿಶೀಲಿಸಿ"
+
+#: ../lib/Plugins/Bugzilla.cpp:377
+msgid "Checking CC..."
+msgstr "CC ಅನà³à²¨à³ ಪರಿಶೀಲಿಸಲಾಗà³à²¤à³à²¤à²¿à²¦à³†..."
-#: lib/Plugins/Bugzilla.cpp:448
+#: ../lib/Plugins/Bugzilla.cpp:386
msgid "Creating new bug..."
msgstr "ಹೊಸ ದೋಷ ವರದಿಯನà³à²¨à³ ರಚಿಸಲಾಗà³à²¤à³à²¤à²¿à²¦à³†..."
-#: lib/Plugins/Bugzilla.cpp:453
+#: ../lib/Plugins/Bugzilla.cpp:390
msgid "Logging out..."
msgstr "ನಿರà³à²—ಮಿಸಲಾಗà³à²¤à³à²¤à²¿à²¦à³†..."
-#: lib/Plugins/Kerneloops.cpp:37
+#: ../lib/Plugins/Kerneloops.cpp:37
msgid "Getting local universal unique identification"
msgstr "ಸà³à²¥à²³à³€à²¯ ಜಾಗತಿಕ ವಿಶಿಷà³à²Ÿ ಗà³à²°à³à²¤à²¨à³à²¨à³ ಪಡೆಯಲಾಗà³à²¤à³à²¤à²¿à²¦à³†"
-#: lib/Plugins/CCpp.cpp:146
+#: ../lib/Plugins/CCpp.cpp:254
msgid "Getting backtrace..."
msgstr "ಬà³à²¯à²¾à²•à³â€Œà²Ÿà³à²°à³‡à²¸à³ ಅನà³à²¨à³ ಪಡೆಯಲಾಗà³à²¤à³à²¤à²¿à²¦à³†..."
-#: lib/Plugins/CCpp.cpp:410
+#: ../lib/Plugins/CCpp.cpp:552 ../lib/Plugins/CCpp.cpp:679
msgid "Searching for debug-info packages..."
msgstr "ದೋಷ ನಿವಾರಣ ಮಾಹಿತಿ ಪà³à²¯à²¾à²•à³‡à²œà³à²—ಳಿಗಾಗಿ ಹà³à²¡à³à²•à²²à²¾à²—à³à²¤à³à²¤à²¿à²¦à³†..."
-#: lib/Plugins/CCpp.cpp:444
+#: ../lib/Plugins/CCpp.cpp:614 ../lib/Plugins/CCpp.cpp:713
msgid "Downloading and installing debug-info packages..."
msgstr "ದೋಷ ನಿವಾರಣ ಮಾಹಿತಿ ಪà³à²¯à²¾à²•à³‡à²œà³à²—ಳನà³à²¨à³ ಡೌನà³â€Œà²²à³‹à²¡à³ ಮಾಡಲಾಗà³à²¤à³à²¤à²¿à²¦à³†..."
-#: lib/Plugins/CCpp.cpp:506
+#: ../lib/Plugins/CCpp.cpp:818
msgid "Getting local universal unique identification..."
msgstr "ಸà³à²¥à²³à³€à²¯ ಜಾಗತಿಕ ವಿಶಿಷà³à²Ÿ ಗà³à²°à³à²¤à²¨à³à²¨à³ ಪಡೆಯಲಾಗà³à²¤à³à²¤à²¿à²¦à³†..."
-#: lib/Plugins/CCpp.cpp:525
+#: ../lib/Plugins/CCpp.cpp:837
msgid "Getting global universal unique identification..."
msgstr "ಸಾರà³à²µà²¤à³à²°à²¿à²• ಜಾಗತಿಕ ವಿಶಿಷà³à²Ÿ ಗà³à²°à³à²¤à²¨à³à²¨à³ ಪಡೆಯಲಾಗà³à²¤à³à²¤à²¿à²¦à³†..."
-#: lib/Plugins/CCpp.cpp:576
+#: ../lib/Plugins/CCpp.cpp:882
msgid "Starting report creation..."
msgstr "ವರದಿ ರಚನೆಯನà³à²¨à³ ಆರಂಭಿಸಲಾಗà³à²¤à³à²¤à²¿à²¦à³†..."
-#: lib/Plugins/CCpp.cpp:605
+#: ../lib/Plugins/CCpp.cpp:912
msgid "Skipping debuginfo installation"
msgstr "debuginfo ಅನà³à²¸à³à²¥à²¾à²ªà²¨à³†à²¯à²¨à³à²¨à³ ಉಪೇಕà³à²·à²¿à²¸à²²à²¾à²—à³à²¤à³à²¤à²¿à²¦à³†"
-#: lib/Plugins/KerneloopsReporter.cpp:101
+#: ../lib/Plugins/KerneloopsReporter.cpp:102
msgid "Creating and submitting a report..."
msgstr "ಒಂದೠವರದಿಯನà³à²¨à³ ರಚಿಸಿ ಸಲà³à²²à²¿à²¸à²²à²¾à²—à³à²¤à³à²¤à²¿à²¦à³†..."
-#: lib/Plugins/Logger.cpp:58 lib/Plugins/Mailx.cpp:123
+#: ../lib/Plugins/Logger.cpp:65 ../lib/Plugins/Mailx.cpp:124
msgid "Creating a report..."
msgstr "ಒಂದೠವರದಿಯನà³à²¨à³ ರಚಿಸಲಾಗà³à²¤à³à²¤à²¿à²¦à³†..."
-#: lib/Plugins/RunApp.cpp:62
+#: ../lib/Plugins/RunApp.cpp:64
msgid "Executing RunApp plugin..."
msgstr "RunApp ಪà³à²²à²—à³â€Œà²‡à²¨à³ ಅನà³à²¨à³ ಕಾರà³à²¯à²—ತಗೊಳಿಸಲಾಗà³à²¤à³à²¤à²¿à²¦à³†..."
-#: lib/Plugins/FileTransfer.cpp:60 lib/Plugins/FileTransfer.cpp:355
+#: ../lib/Plugins/FileTransfer.cpp:63 ../lib/Plugins/FileTransfer.cpp:384
msgid "FileTransfer: URL not specified"
msgstr "ಕಡತ ವರà³à²—ಾವಣೆ: URL ಅನà³à²¨à³ ಸೂಚಿಸಲಾಗಿಲà³à²²"
-#: lib/Plugins/FileTransfer.cpp:77
+#: ../lib/Plugins/FileTransfer.cpp:67
#, c-format
-msgid "Sending archive %s via %s"
-msgstr "ಆರà³à²•à³ˆà²µà³ %s ಅನà³à²¨à³ %s ಮೂಲಕ ಕಳà³à²¹à²¿à²¸à²²à²¾à²—à³à²¤à³à²¤à²¿à²¦à³†"
+msgid "Sending archive %s to %s"
+msgstr "ಆರà³à²•à³ˆà²µà³ %s ಅನà³à²¨à³ %s ಗೆ ಕಳà³à²¹à²¿à²¸à²²à²¾à²—à³à²¤à³à²¤à²¿à²¦à³†"
-#: lib/Plugins/FileTransfer.cpp:284
+#: ../lib/Plugins/FileTransfer.cpp:309
msgid "File Transfer: Creating a report..."
msgstr "ಕಡತ ವರà³à²—ಾವಣೆ: ಒಂದೠವರದಿಯನà³à²¨à³ ರಚಿಸಲಾಗà³à²¤à³à²¤à²¿à²¦à³†..."
-#: lib/Plugins/FileTransfer.cpp:305 lib/Plugins/FileTransfer.cpp:334
-msgid "CFileTransfer::Run(): Cannot create and send an archive: "
-msgstr ""
-"CFileTransfer::Run(): ಒಂದೠಆರà³à²•à³ˆà²µà³ ಅನà³à²¨à³ ರಚಿಸಲೠಹಾಗೠಕಳà³à²¹à²¿à²¸à²²à³ ಸಾಧà³à²¯à²µà²¾à²—ಿಲà³à²²: "
+#: ../lib/Plugins/FileTransfer.cpp:334
+#, c-format
+msgid "Can't create and send an archive: %s"
+msgstr "ಒಂದೠಆರà³à²•à³ˆà²µà³ ಅನà³à²¨à³ ರಚಿಸಲೠಹಾಗೠಕಳà³à²¹à²¿à²¸à²²à³ ಸಾಧà³à²¯à²µà²¾à²—ಿಲà³à²²: %s"
+
+#: ../lib/Plugins/FileTransfer.cpp:359
+#, c-format
+msgid "Can't create and send an archive %s"
+msgstr "ಒಂದೠಆರà³à²•à³ˆà²µà³ %s ಅನà³à²¨à³ ರಚಿಸಲೠಹಾಗೠಕಳà³à²¹à²¿à²¸à²²à³ ಸಾಧà³à²¯à²µà²¾à²—ಿಲà³à²²"
-#: lib/Plugins/KerneloopsScanner.cpp:79
+#: ../lib/Plugins/KerneloopsScanner.cpp:84
msgid "Creating kernel oops crash reports..."
msgstr "ಕರà³à²¨à²²à³ oops ಕà³à²¸à²¿à²¤ ವರದಿಗಳನà³à²¨à³ ರಚಿಸಲಾಗà³à²¤à³à²¤à²¿à²¦à³†..."
-#: lib/Plugins/Mailx.cpp:109
+#: ../lib/Plugins/Mailx.cpp:109
msgid "Sending an email..."
msgstr "ಒಂದೠಇಮೈಲೠಅನà³à²¨à³ ಕಳà³à²¹à²¿à²¸à²²à²¾à²—à³à²¤à³à²¤à²¿à²¦à³†..."
-#: lib/Plugins/SOSreport.cpp:113
+#: ../lib/Plugins/SOSreport.cpp:100
msgid "Executing SOSreport plugin..."
msgstr "SOSreport ಪà³à²²à²—à³â€Œà²‡à²¨à³ ಅನà³à²¨à³ ಕಾರà³à²¯à²—ತಗೊಳಿಸಲಾಗà³à²¤à³à²¤à²¿à²¦à³†..."
-#: lib/Plugins/SOSreport.cpp:135
-msgid "running sosreport: "
-msgstr "sosreport ಅನà³à²¨à³ ಚಲಾಯಿಸಲಾಗà³à²¤à³à²¤à²¿à²¦à³†: "
+#: ../lib/Plugins/SOSreport.cpp:122
+#, c-format
+msgid "running sosreport: %s"
+msgstr "sosreport ಅನà³à²¨à³ ಚಲಾಯಿಸಲಾಗà³à²¤à³à²¤à²¿à²¦à³†: %s"
-#: lib/Plugins/SOSreport.cpp:150
+#: ../lib/Plugins/SOSreport.cpp:137
msgid "done running sosreport"
msgstr "sosreport ಅನà³à²¨à³ ಚಲಾಯಿಸà³à²µà³à²¦à³ ಪೂರà³à²£à²—ೊಂಡಿದೆ"
+
diff --git a/po/ml.po b/po/ml.po
index da74da4e..5b935f56 100644
--- a/po/ml.po
+++ b/po/ml.po
@@ -4,12 +4,13 @@
# This file is distributed under the same license as the PACKAGE package.
# ANI PETER <apeter@redhat.com>, 2009
#
+#: ../src/Gui/CCReporterDialog.py:191
msgid ""
msgstr ""
"Project-Id-Version: abrt.master.ml\n"
"Report-Msgid-Bugs-To: jmoskovc@redhat.com\n"
-"POT-Creation-Date: 2009-09-29 14:46+0200\n"
-"PO-Revision-Date: 2009-09-23 09:59+0530\n"
+"POT-Creation-Date: 2009-11-12 09:30+0000\n"
+"PO-Revision-Date: 2009-11-16 13:06+0530\n"
"Last-Translator: \n"
"Language-Team: <en@li.org>\n"
"MIME-Version: 1.0\n"
@@ -17,39 +18,43 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
-#: src/Gui/ABRTExceptions.py:4
+#: ../src/Gui/ABRTExceptions.py:6
msgid "Another client is already running, trying to wake it."
msgstr "മറàµà´±àµŠà´°àµ à´•àµà´²àµˆà´¨àµà´±àµ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´•àµà´•àµà´¨àµà´¨àµ, ലഭàµà´¯à´®à´¾à´•àµà´•àµà´µà´¾à´¨àµâ€ à´¶àµà´°à´®à´¿à´•àµà´•àµà´¨àµà´¨àµ."
-#: src/Gui/ABRTExceptions.py:10
+#: ../src/Gui/ABRTExceptions.py:13
msgid "Got unexpected data from daemon (is the database properly updated?)."
msgstr "ഡെമണിലàµâ€ നിനàµà´¨àµà´‚ à´…à´ªàµà´°à´¤àµ€à´•àµà´·à´¿à´¤à´®à´¾à´¯ ഡേറàµà´±à´¾ ലഭിചàµà´šàµ (à´ˆ ഡേറàµà´±à´¾à´¬àµ†à´¯à´¿à´¸àµ ശരിയായി à´ªàµà´¤àµà´•àµà´•à´¿à´¯àµ‹?)."
-#: src/Gui/ABRTPlugin.py:26
+#: ../src/Gui/ABRTPlugin.py:55
msgid "Analyzer plugins"
msgstr "അനലൈസരàµâ€ à´ªàµà´²à´—à´¿à´¨àµà´•à´³àµâ€"
-#: src/Gui/ABRTPlugin.py:27
+#: ../src/Gui/ABRTPlugin.py:56
msgid "Action plugins"
msgstr "ആകàµà´·à´¨àµâ€ à´ªàµà´²à´—à´¿à´¨àµà´•à´³àµâ€"
-#: src/Gui/ABRTPlugin.py:28
+#: ../src/Gui/ABRTPlugin.py:57
msgid "Reporter plugins"
msgstr "റിപോരàµâ€à´Ÿàµà´Ÿà´°àµâ€ à´ªàµà´²à´—à´¿à´¨àµà´•à´³àµâ€"
-#: src/Gui/ABRTPlugin.py:29
+#: ../src/Gui/ABRTPlugin.py:58
msgid "Database plugins"
msgstr "ഡേറàµà´±à´¾à´¬àµ†à´¯à´¿à´¸àµ à´ªàµà´²à´—à´¿à´¨àµà´•à´³àµâ€"
-#: src/Gui/CCDBusBackend.py:143
-msgid "Can't connect to dbus"
-msgstr "dbus-ലേകàµà´•àµ കണകàµà´Ÿàµ ചെയàµà´¯àµà´µà´¾à´¨àµâ€ സാധàµà´¯à´®à´²àµà´²"
+#: ../src/Gui/ABRTPlugin.py:97
+msgid "Plugin name is not set, can't load it's settings"
+msgstr "à´ªàµà´²à´—à´¿à´¨àµâ€ നാമം സജàµà´œà´®à´²àµà´², സജàµà´œàµ€à´•à´°à´£à´™àµà´™à´³àµâ€ ലഭàµà´¯à´®à´¾à´•àµà´•àµà´µà´¾à´¨àµâ€ സാധàµà´¯à´®à´²àµà´²"
-#: src/Gui/CCDBusBackend.py:169
-msgid "Please check if abrt daemon is running."
-msgstr "abrt ഡെമണàµâ€ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´•àµà´•àµà´¨àµà´¨àµà´£àµà´Ÿàµ‹ à´Žà´¨àµà´¨àµàµ പരിശോധികàµà´•àµà´•."
+#: ../src/Gui/CCDBusBackend.py:74 ../src/Gui/CCDBusBackend.py:97
+msgid "Can't connect to system dbus"
+msgstr "സിസàµà´±àµà´±à´‚ dbus-ലേകàµà´•àµ കണകàµà´Ÿàµ ചെയàµà´¯àµà´µà´¾à´¨àµâ€ സാധàµà´¯à´®à´²àµà´²"
-#: src/Gui/CCDBusBackend.py:187
+#: ../src/Gui/CCDBusBackend.py:100 ../src/Gui/CCDBusBackend.py:103
+msgid "Please check if abrt daemon is running"
+msgstr "abrt ഡെമണàµâ€ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´•àµà´•àµà´¨àµà´¨àµà´£àµà´Ÿàµ‹ à´Žà´¨àµà´¨àµàµ പരിശോധികàµà´•àµà´•"
+
+#: ../src/Gui/CCDBusBackend.py:155
msgid ""
"Daemon did't return valid report info\n"
"Debuginfo is missing?"
@@ -57,27 +62,47 @@ msgstr ""
"ശരിയായ റിപോരàµâ€à´Ÿàµà´Ÿàµ വിവരം ഡെമണàµâ€ ലഭàµà´¯à´®à´¾à´•àµà´•à´¿à´¯à´¿à´²àµà´²\n"
"Debuginfo ലഭàµà´¯à´®à´²àµà´²àµ‡?"
-#: src/Gui/ccgui.glade:6
-msgid "Please wait.."
-msgstr "ദയവായി കാതàµà´¤à´¿à´°à´¿à´•àµà´•àµà´•..."
-
-#: src/Gui/ccgui.glade:16
-msgid "Working..."
-msgstr "à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´•àµà´•àµà´¨àµà´¨àµ..."
-
-#: src/Gui/ccgui.glade:49
+#: ../src/Gui/ccgui.glade.h:1 ../src/Gui/report.glade.h:1
msgid " "
msgstr " "
-#: src/Gui/ccgui.glade:68
+#: ../src/Gui/ccgui.glade.h:2
+msgid "(C) 2009 Red Hat, Inc."
+msgstr "(C) 2009 Red Hat, Inc."
+
+#: ../src/Gui/ccgui.glade.h:3 ../src/Gui/CCMainWindow.py:244
+msgid "<b>Not reported!</b>"
+msgstr "<b>രേഖപàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´¿à´¯à´¿à´Ÿàµà´Ÿà´¿à´²àµà´²!</b>"
+
+#: ../src/Gui/ccgui.glade.h:4
+msgid "<span color=\"white\">Description</span>"
+msgstr "<span color=\"white\">വിവരണം</span>"
+
+#: ../src/Gui/ccgui.glade.h:5
msgid "About ABRT"
msgstr "ABRT സംബനàµà´§à´¿à´šàµà´šàµàµ"
-#: src/Gui/ccgui.glade:74
-msgid "(C) 2009 Red Hat, Inc."
-msgstr "(C) 2009 Red Hat, Inc."
+#: ../src/Gui/ccgui.glade.h:6
+msgid "Automatic Bug Reporting Tool"
+msgstr "à´“à´Ÿàµà´Ÿàµ‹à´®à´¾à´±àµà´±à´¿à´•àµ ബഗൠരേഖപàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´²àµâ€ à´ªàµà´°à´¯àµ‹à´—à´‚"
+
+#: ../src/Gui/ccgui.glade.h:7
+msgid "Delete"
+msgstr "വെടàµà´Ÿà´¿ നീകàµà´•àµà´•"
-#: src/Gui/ccgui.glade:75
+#: ../src/Gui/ccgui.glade.h:8
+msgid "Please wait.."
+msgstr "ദയവായി കാതàµà´¤à´¿à´°à´¿à´•àµà´•àµà´•..."
+
+#: ../src/Gui/ccgui.glade.h:9
+msgid "Plugins"
+msgstr "à´ªàµà´²à´—à´¿à´¨àµà´•à´³àµâ€"
+
+#: ../src/Gui/ccgui.glade.h:10 ../src/Gui/report.glade.h:4
+msgid "Report"
+msgstr "റിപോരàµâ€à´Ÿàµà´Ÿàµ"
+
+#: ../src/Gui/ccgui.glade.h:11
msgid ""
"This program is free software; you can redistribute it and/or modify it "
"under the terms of the GNU General Public License as published by the Free "
@@ -103,68 +128,57 @@ msgstr ""
"à´ˆ à´ªàµà´°àµ‹à´—àµà´°à´¾à´®à´¿à´¨àµŠà´ªàµà´ªà´‚ നിങàµà´™à´³àµâ€à´•àµà´•àµàµ à´—àµà´¨àµ ജനറലàµâ€ പബàµà´³à´¿à´•àµ ലൈസനàµâ€à´¸à´¿à´¨àµà´±àµ† ഒരൠപകരàµâ€à´ªàµà´ªàµà´‚ ലഭിചàµà´šà´¿à´°à´¿à´•àµà´•à´£à´‚, "
"ഇലàµà´²à´¾à´¯àµ†à´™àµà´•à´¿à´²àµâ€, <http://www.gnu.org/licenses/> കാണàµà´•."
-#: src/Gui/ccgui.glade:106
-msgid "Automatic Bug Reporting Tool"
-msgstr "à´“à´Ÿàµà´Ÿàµ‹à´®à´¾à´±àµà´±à´¿à´•àµ ബഗൠരേഖപàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´²àµâ€ à´ªàµà´°à´¯àµ‹à´—à´‚"
-
-#: src/Gui/ccgui.glade:118
-msgid "_File"
-msgstr "_ഫയലàµâ€"
+#: ../src/Gui/ccgui.glade.h:16
+msgid "Working..."
+msgstr "à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´•àµà´•àµà´¨àµà´¨àµ..."
-#: src/Gui/ccgui.glade:138
+#: ../src/Gui/ccgui.glade.h:17
msgid "_Edit"
msgstr "_à´šà´¿à´Ÿàµà´Ÿà´ªàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµà´•"
-#: src/Gui/ccgui.glade:146
-msgid "Plugins"
-msgstr "à´ªàµà´²à´—à´¿à´¨àµà´•à´³àµâ€"
+#: ../src/Gui/ccgui.glade.h:18
+msgid "_File"
+msgstr "_ഫയലàµâ€"
-#: src/Gui/ccgui.glade:164
+#: ../src/Gui/ccgui.glade.h:19
msgid "_Help"
msgstr "_സഹായം"
-#: src/Gui/ccgui.glade:194 src/Gui/ccgui.glade:195
-msgid "Delete"
-msgstr "വെടàµà´Ÿà´¿ നീകàµà´•àµà´•"
-
-#: src/Gui/ccgui.glade:207 src/Gui/ccgui.glade:208 src/Gui/ccgui.glade:335
-#: src/Gui/report.glade:7 src/Gui/report.glade:24
-msgid "Report"
-msgstr "റിപോരàµâ€à´Ÿàµà´Ÿàµ"
-
-#: src/Gui/ccgui.glade:255
-msgid "<span color=\"white\">Description</span>"
-msgstr "<span color=\"white\">വിവരണം</span>"
-
-#: src/Gui/ccgui.glade:297 src/Gui/CCMainWindow.py:239
-msgid "<b>Not reported!</b>"
-msgstr "<b>രേഖപàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´¿à´¯à´¿à´Ÿàµà´Ÿà´¿à´²àµà´²!</b>"
-
-#: src/Gui/CCMainWindow.py:80
+#. add pixbuff separatelly
+#: ../src/Gui/CCMainWindow.py:80
msgid "Icon"
msgstr "à´šà´¿à´¹àµà´¨à´‚"
-#: src/Gui/CCMainWindow.py:88
+#: ../src/Gui/CCMainWindow.py:88
msgid "Package"
msgstr "പാകàµà´•àµ‡à´œàµ"
-#: src/Gui/CCMainWindow.py:89
+#: ../src/Gui/CCMainWindow.py:89
msgid "Application"
msgstr "à´ªàµà´°à´¯àµ‹à´—à´‚"
-#: src/Gui/CCMainWindow.py:90
+#: ../src/Gui/CCMainWindow.py:90
msgid "Date"
msgstr "തീയതി"
-#: src/Gui/CCMainWindow.py:91
-msgid "Crash Rate"
-msgstr "à´•àµà´°à´¾à´·àµ റേറàµà´±àµ"
+#: ../src/Gui/CCMainWindow.py:91
+msgid "Crash count"
+msgstr "à´•àµà´°à´¾à´·àµ കൌണàµà´Ÿàµ"
-#: src/Gui/CCMainWindow.py:93
+#: ../src/Gui/CCMainWindow.py:93
msgid "User"
msgstr "ഉപയോകàµà´¤à´¾à´µàµàµ"
-#: src/Gui/CCMainWindow.py:177
+#: ../src/Gui/CCMainWindow.py:160
+#, python-format
+msgid ""
+"Can't show the settings dialog\n"
+"%s"
+msgstr ""
+"സജàµà´œàµ€à´•à´°à´£à´™àµà´™à´³àµâ€à´•àµà´•àµà´³àµà´³ ഡയലോഗൠകാണികàµà´•àµà´µà´¾à´¨àµâ€ സാധàµà´¯à´®à´²àµà´²\n"
+"%s"
+
+#: ../src/Gui/CCMainWindow.py:181
#, python-format
msgid ""
"Unable to finish current task!\n"
@@ -173,7 +187,7 @@ msgstr ""
"നിലവിലàµà´³àµà´³ ജോലി പൂരàµâ€à´¤àµà´¤à´¿à´¯à´¾à´•àµà´•àµà´µà´¾à´¨àµâ€ സാധിചàµà´šà´¿à´²àµà´²!\n"
"%s"
-#: src/Gui/CCMainWindow.py:194
+#: ../src/Gui/CCMainWindow.py:198
#, python-format
msgid ""
"Error while loading the dumplist, please check if abrt daemon is running\n"
@@ -182,16 +196,16 @@ msgstr ""
"dumplist ലഭàµà´¯à´®à´¾à´•àµà´•àµà´®àµà´ªàµ‹à´³àµâ€ പിശകàµ, ദയവായി abrt ഡെമണàµâ€ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´•àµà´•àµà´¨àµà´¨àµà´£àµà´Ÿàµ‹ à´Žà´¨àµà´¨àµàµ പരിശോധികàµà´•àµà´•.\n"
" %s"
-#: src/Gui/CCMainWindow.py:204
+#: ../src/Gui/CCMainWindow.py:208
#, python-format
msgid "Can't get username for uid %s"
msgstr "uid %s-à´¨àµà´³àµà´³ ഉപയോകàµà´¤àµƒà´¨à´¾à´®à´‚ ലഭàµà´¯à´®à´¾à´•àµà´•àµà´µà´¾à´¨àµâ€ സാധàµà´¯à´®à´²àµà´²"
-#: src/Gui/CCMainWindow.py:231
+#: ../src/Gui/CCMainWindow.py:236
msgid "<b>This crash has been reported, you can find the report(s) at:</b>\n"
msgstr "<b>à´ˆ തകരാറàµàµ രേഖപàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´¿à´¯à´¿à´Ÿàµà´Ÿàµà´£àµà´Ÿàµàµ. à´ˆ റിപോരàµâ€à´Ÿàµà´Ÿàµ ഇവിടെ ലഭàµà´¯à´®à´¾à´£àµàµ:</b>\n"
-#: src/Gui/CCMainWindow.py:291
+#: ../src/Gui/CCMainWindow.py:296
msgid ""
"Unable to get report!\n"
"Debuginfo is missing?"
@@ -199,7 +213,7 @@ msgstr ""
"റിപോരàµâ€à´Ÿàµà´Ÿàµ ലഭികàµà´•àµà´µà´¾à´¨àµâ€ സാധിചàµà´šà´¿à´²àµà´²!\n"
"Debuginfo ലഭàµà´¯à´®à´²àµà´²àµ‡?"
-#: src/Gui/CCMainWindow.py:306
+#: ../src/Gui/CCMainWindow.py:314
#, python-format
msgid ""
"Reporting failed!\n"
@@ -208,12 +222,41 @@ msgstr ""
"റിപോരàµâ€à´Ÿàµà´Ÿàµ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ!\n"
"%s"
-#: src/Gui/CCMainWindow.py:338
+#: ../src/Gui/CCMainWindow.py:333 ../src/Gui/CCMainWindow.py:360
#, python-format
msgid "Error getting the report: %s"
msgstr "റിപോരàµâ€à´Ÿàµà´Ÿàµ ലഭികàµà´•àµà´¨àµà´¨à´¤à´¿à´²àµâ€ പിശകàµ: %s"
-#: src/Gui/CCReporterDialog.py:98
+#: ../src/Gui/CCReporterDialog.py:177
+msgid "Brief description how to reproduce this or what you did..."
+msgstr "ഇതെങàµà´™à´¨àµ† ഉണàµà´Ÿà´¾à´¯à´¿ à´Žà´¨àµà´¨àµàµ വിവരികàµà´•àµà´¨àµà´¨àµ..."
+
+#: ../src/Gui/CCReporterDialog.py:219
+#, python-format
+msgid ""
+"Reporting disabled because the backtrace is unusable.\n"
+"Please try to install debuginfo manually using command:<span color=\"blue\"> "
+"debuginfo-install %s </span>\n"
+"then use Refresh button to regenerate the backtrace."
+msgstr ""
+"ബാകàµà´•àµà´Ÿàµà´°àµ†à´¯à´¿à´¸àµ ഉപയോഗപàµà´°à´¦à´®à´²àµà´²à´¾à´¤àµà´¤à´¤à´¿à´¨à´¾à´²àµâ€ റിപോരàµâ€à´Ÿàµà´Ÿà´¿à´™àµ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¨ രഹിതമാണàµàµ.\n"
+"ദയവായി debuginfo à´ˆ കമാനàµâ€à´¡àµ ഉപയോഗിചàµà´šàµàµ ഇനàµâ€à´¸àµà´±àµà´±àµ‹à´³àµâ€ ചെയàµà´¯àµà´µà´¾à´¨àµâ€ à´¶àµà´°à´®à´¿à´•àµà´•àµà´•:<span color=\"blue\"> "
+"debuginfo-install %s </span>\n"
+"ശേഷം à´ªàµà´¤àµà´•àµà´•àµà´• ബടàµà´Ÿà´£àµâ€ ഉപയോഗിചàµà´šàµàµ ബാകàµà´•àµà´Ÿàµà´°àµ†à´¯à´¿à´¸àµ തയàµà´¯à´¾à´±à´¾à´•àµà´•àµà´µà´¾à´¨àµâ€ à´¶àµà´°à´®à´¿à´•àµà´•àµà´•."
+
+#: ../src/Gui/CCReporterDialog.py:221
+msgid "The bactrace is unusable, you can't report this!"
+msgstr "ബാകàµà´•àµà´Ÿàµà´°àµ†à´¯à´¿à´¸àµ ഉപയോഗികàµà´•àµà´µà´¾à´¨àµâ€ സാധàµà´¯à´®à´²àµà´², നിങàµà´™à´³àµâ€à´•àµà´•àµàµ രേഖപàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµà´µà´¾à´¨àµâ€ സാധàµà´¯à´®à´²àµà´²!"
+
+#: ../src/Gui/CCReporterDialog.py:227
+msgid ""
+"The bactrace is incomplete, please make sure you provide good steps to "
+"reproduce."
+msgstr ""
+"ബാകàµà´•àµà´Ÿàµà´°àµ†à´¯à´¿à´¸àµ പൂരàµâ€à´£àµà´£à´®à´²àµà´², ലഭàµà´¯à´®à´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµà´³àµà´³ ഉതàµà´¤à´® രീതികളàµâ€ ദയവായി "
+"നലàµâ€à´•àµà´•."
+
+#: ../src/Gui/CCReporterDialog.py:272
#, python-format
msgid ""
"<b>WARNING</b>, you're about to send data which might contain sensitive "
@@ -223,190 +266,186 @@ msgstr ""
"<b>à´®àµà´¨àµà´¨à´±à´¿à´¯à´¿à´ªàµà´ªàµàµ</b>, à´ªàµà´°à´§à´¾à´¨ വിവരങàµà´™à´³à´Ÿà´™àµà´™àµà´¨àµà´¨ ഡേറàµà´±à´¾ നിങàµà´™à´³àµâ€ അയയàµà´•àµà´•àµà´µà´¾à´¨àµâ€ à´¤àµà´Ÿà´™àµà´™àµà´¨àµà´¨àµ.\n"
"നിങàµà´™à´³àµâ€à´•àµà´•àµ <b>%s</b> അയയàµà´•àµà´•à´£à´®àµ‹?\n"
-#: src/Gui/CCReporterDialog.py:111
-msgid "Brief description how to reproduce this or what you did..."
-msgstr "ഇതെങàµà´™à´¨àµ† ഉണàµà´Ÿà´¾à´¯à´¿ à´Žà´¨àµà´¨àµàµ വിവരികàµà´•àµà´¨àµà´¨àµ..."
-
-#: src/Gui/dialogs.glade:7
+#: ../src/Gui/dialogs.glade.h:1
msgid "Report done"
msgstr "റിപോരàµâ€à´Ÿàµà´Ÿàµ പൂരàµâ€à´¤àµà´¤à´¿à´¯à´¾à´¯à´¿"
-#: src/Gui/dialogs.glade:47 src/Gui/settings.glade:695
-#: src/Gui/settings.glade:785
+#: ../src/Gui/dialogs.glade.h:2 ../src/Gui/settings.glade.h:27
msgid "gtk-ok"
msgstr "gtk-ok"
-#: src/Gui/PluginSettingsUI.py:17
+#: ../src/Gui/PluginSettingsUI.py:18
msgid "Can't find PluginDialog widget in UI description!"
msgstr "UI വിവരണതàµà´¤à´¿à´²àµâ€ PluginDialog വിഡàµà´œà´±àµà´±àµ ലഭàµà´¯à´®à´²àµà´²!"
-#: src/Gui/PluginSettingsUI.py:21
+#. we shouldn't get here, but just to be safe
+#: ../src/Gui/PluginSettingsUI.py:24
#, python-format
msgid "No UI for plugin %s"
msgstr "%s-à´¨àµàµ UI à´ªàµà´²à´—à´¿à´¨àµâ€ ലഭàµà´¯à´®à´²àµà´²"
-#: src/Gui/PluginSettingsUI.py:38 src/Gui/PluginSettingsUI.py:64
+#: ../src/Gui/PluginSettingsUI.py:55 ../src/Gui/PluginSettingsUI.py:81
msgid "combo box is not implemented"
msgstr "കോംബോ ബോകàµà´¸àµ ലഭàµà´¯à´®à´¾à´•àµà´•à´¿à´¯à´¿à´Ÿàµà´Ÿà´¿à´²àµà´²"
-#: src/Gui/PluginSettingsUI.py:47
+#: ../src/Gui/PluginSettingsUI.py:64
msgid "Nothing to hydrate!"
msgstr "ഹൈഡàµà´°àµ‡à´±àµà´±àµ ചെയàµà´¯àµà´µà´¾à´¨àµŠà´¨àµà´¨àµà´®à´¿à´²àµà´²!"
-#: src/Gui/report.glade:64
+#: ../src/Gui/report.glade.h:2
msgid "Comment"
msgstr "à´…à´­à´¿à´ªàµà´°à´¾à´¯à´‚"
-#: src/Gui/report.glade:104 src/Gui/settings.glade:682
-#: src/Gui/settings.glade:797
-msgid "gtk-cancel"
-msgstr "gtk-cancel"
+#: ../src/Gui/report.glade.h:3
+msgid "How to reproduce (in a few simple steps)"
+msgstr "à´Žà´™àµà´™à´¨àµ† ലഭàµà´¯à´®à´¾à´•àµà´•à´¾à´‚ (ലളിതമായ രീതിയിലàµâ€)"
-#: src/Gui/report.glade:119
+#: ../src/Gui/report.glade.h:5
msgid "Send"
msgstr "അയയàµà´•àµà´•àµà´•"
-#: src/Gui/SettingsDialog.py:34 src/Gui/SettingsDialog.py:51
+#: ../src/Gui/SettingsDialog.py:33 ../src/Gui/SettingsDialog.py:50
msgid "<b>Select plugin</b>"
msgstr "<b>à´ªàµà´²à´—à´¿à´¨àµâ€ തെരഞàµà´žàµ†à´Ÿàµà´•àµà´•àµà´•</b>"
-#: src/Gui/SettingsDialog.py:37
+#: ../src/Gui/SettingsDialog.py:36
msgid "<b>Select database backend</b>"
msgstr "<b>ഡേറàµà´±à´¾à´¬àµ†à´¯à´¿à´¸àµ ബാകàµà´•àµ†à´¨àµâ€à´¡àµ തെരഞàµà´žàµ†à´Ÿàµà´•àµà´•àµà´•</b>"
-#: src/Gui/SettingsDialog.py:165
+#: ../src/Gui/SettingsDialog.py:165
msgid "Remove this job"
msgstr "à´ˆ ജോലി നീകàµà´•à´‚ ചെയàµà´¯àµà´•"
-#: src/Gui/SettingsDialog.py:208
+#: ../src/Gui/SettingsDialog.py:208
msgid "Remove this action"
msgstr "à´ˆ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿ നീകàµà´•à´‚ ചെയàµà´¯àµà´•"
-#: src/Gui/settings.glade:6
-msgid "Settings"
-msgstr "സജàµà´œàµ€à´•à´°à´£à´™àµà´™à´³àµâ€"
+#: ../src/Gui/settings.glade.h:1
+msgid "<b>Analyzer plugin</b>"
+msgstr "<b>അനലൈസരàµâ€ à´ªàµà´²à´—à´¿à´¨àµà´•à´³àµâ€</b>"
-#: src/Gui/settings.glade:46 src/Gui/settings.glade:55
-#: src/Gui/settings.glade:107 src/Gui/settings.glade:120
-#: src/Gui/settings.glade:133
-msgid "Nothing selected"
-msgstr "à´’à´¨àµà´¨àµà´‚ തെരഞàµà´žàµ†à´Ÿàµà´¤àµà´¤à´¿à´Ÿàµà´Ÿà´¿à´²àµà´²"
+#: ../src/Gui/settings.glade.h:2
+msgid "<b>Associated action</b>"
+msgstr "<b>à´…à´¨àµà´¬à´¨àµà´§à´¿à´šàµà´šàµà´³àµà´³ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿</b>"
-#: src/Gui/settings.glade:72
-msgid "Web Site:"
-msgstr "വെബൠസൈറàµà´±àµ:"
+#: ../src/Gui/settings.glade.h:3
+msgid "<b>Plugin</b>"
+msgstr "<b>à´ªàµà´²à´—à´¿à´¨àµâ€</b>"
-#: src/Gui/settings.glade:84
+#: ../src/Gui/settings.glade.h:4
+msgid "<b>Time (or period)</b>"
+msgstr "<b>സമയം (à´…à´²àµà´²àµ†à´™àµà´•à´¿à´²àµâ€ കാലാവധി)</b>"
+
+#: ../src/Gui/settings.glade.h:5
+msgid "Analyzers, Actions, Reporters"
+msgstr "അനലൈസറàµà´•à´³àµâ€, à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´•à´³àµâ€, റിപàµà´ªàµ‹à´°àµâ€à´Ÿàµà´Ÿà´±àµà´•à´³àµâ€"
+
+#: ../src/Gui/settings.glade.h:6
msgid "Author:"
msgstr "രചയിതാവàµàµ:"
-#: src/Gui/settings.glade:97
-msgid "Version:"
-msgstr "ലകàµà´•à´‚: "
-
-#: src/Gui/settings.glade:152
-msgid "Plugin Details"
-msgstr "à´ªàµà´²à´—à´¿à´¨àµâ€ വിശദാംശങàµà´™à´³àµâ€"
+#: ../src/Gui/settings.glade.h:7
+msgid "Blacklisted packages: "
+msgstr "ബാകàµà´•àµà´²à´¿à´¸àµà´±àµà´±à´¡àµ പാകàµà´•àµ‡à´œàµà´•à´³àµâ€: "
-#: src/Gui/settings.glade:179
+#: ../src/Gui/settings.glade.h:8
msgid "C_onfigure plugin"
msgstr "à´ªàµà´²à´—à´¿à´¨àµâ€ à´•àµà´°_മീകരികàµà´•àµà´•"
-#: src/Gui/settings.glade:191
-msgid "gtk-close"
-msgstr "gtk-close"
-
-#: src/Gui/settings.glade:221
-msgid "Global Settings"
-msgstr "à´—àµà´²àµ‹à´¬à´²àµâ€ സജàµà´œàµ€à´•à´°à´£à´™àµà´™à´³àµâ€"
-
-#: src/Gui/settings.glade:240
+#: ../src/Gui/settings.glade.h:9
msgid "Check package GPG signature"
msgstr "പാകàµà´•àµ‡à´œàµ GPG à´’à´ªàµà´ªàµ പരിശോധികàµà´•àµà´•"
-#: src/Gui/settings.glade:256
+#: ../src/Gui/settings.glade.h:10
+msgid "Common"
+msgstr "സാധാരണ"
+
+#: ../src/Gui/settings.glade.h:11
+msgid "Cron"
+msgstr "à´•àµà´°àµ‹à´£àµâ€"
+
+#: ../src/Gui/settings.glade.h:12
msgid "Database backend: "
msgstr "ഡേറàµà´±à´¾à´¬àµ†à´¯à´¿à´¸àµ ബാകàµà´•àµ†à´¨àµâ€à´¡àµ:"
-#: src/Gui/settings.glade:281
-msgid "Blacklisted packages: "
-msgstr "ബാകàµà´•àµà´²à´¿à´¸àµà´±àµà´±à´¡àµ പാകàµà´•àµ‡à´œàµà´•à´³àµâ€: "
+#: ../src/Gui/settings.glade.h:13
+msgid "Edit blacklisted packages"
+msgstr "ബാകàµà´•àµà´²à´¿à´¸àµà´±àµà´±à´¡àµ പാകàµà´•àµ‡à´œàµà´•à´³àµâ€ à´šà´¿à´Ÿàµà´Ÿà´ªàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµà´•"
-#: src/Gui/settings.glade:294
-msgid "Max coredump storage size(MB):"
-msgstr "à´à´±àµà´±à´µàµà´‚ കൂടിയ കോരàµâ€à´¡à´‚പൠസàµà´±àµà´±àµ‹à´±àµ‡à´œàµ à´µàµà´¯à´¾à´ªàµà´¤à´¿(MB):"
+#: ../src/Gui/settings.glade.h:14
+msgid "GPG Keys"
+msgstr "GPG കീകളàµâ€"
-#: src/Gui/settings.glade:307
+#: ../src/Gui/settings.glade.h:15
msgid "GPG keys: "
msgstr "GPG കീകളàµâ€: "
-#: src/Gui/settings.glade:349
-msgid "Edit blacklisted packages"
-msgstr "ബാകàµà´•àµà´²à´¿à´¸àµà´±àµà´±à´¡àµ പാകàµà´•àµ‡à´œàµà´•à´³àµâ€ à´šà´¿à´Ÿàµà´Ÿà´ªàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµà´•"
+#: ../src/Gui/settings.glade.h:16
+msgid "Global Settings"
+msgstr "à´—àµà´²àµ‹à´¬à´²àµâ€ സജàµà´œàµ€à´•à´°à´£à´™àµà´™à´³àµâ€"
-#: src/Gui/settings.glade:408
-msgid "Common"
-msgstr "സാധാരണ"
+#: ../src/Gui/settings.glade.h:17
+msgid "Max coredump storage size(MB):"
+msgstr "à´à´±àµà´±à´µàµà´‚ കൂടിയ കോരàµâ€à´¡à´‚പൠസàµà´±àµà´±àµ‹à´±àµ‡à´œàµ à´µàµà´¯à´¾à´ªàµà´¤à´¿(MB):"
-#: src/Gui/settings.glade:438
-msgid "<b>Plugin</b>"
-msgstr "<b>à´ªàµà´²à´—à´¿à´¨àµâ€</b>"
+#: ../src/Gui/settings.glade.h:18
+msgid "Nothing selected"
+msgstr "à´’à´¨àµà´¨àµà´‚ തെരഞàµà´žàµ†à´Ÿàµà´¤àµà´¤à´¿à´Ÿàµà´Ÿà´¿à´²àµà´²"
-#: src/Gui/settings.glade:448
-msgid "<b>Time (or period)</b>"
-msgstr "<b>സമയം (à´…à´²àµà´²àµ†à´™àµà´•à´¿à´²àµâ€ കാലാവധി)</b>"
+#: ../src/Gui/settings.glade.h:19
+msgid "Plugin Details"
+msgstr "à´ªàµà´²à´—à´¿à´¨àµâ€ വിശദാംശങàµà´™à´³àµâ€"
-#: src/Gui/settings.glade:510 src/Gui/settings.glade:624
-#: src/Gui/settings.glade:761
-msgid "gtk-add"
-msgstr "gtk-add"
+#: ../src/Gui/settings.glade.h:20
+msgid "Settings"
+msgstr "സജàµà´œàµ€à´•à´°à´£à´™àµà´™à´³àµâ€"
-#: src/Gui/settings.glade:534
-msgid "Cron"
-msgstr "à´•àµà´°àµ‹à´£àµâ€"
+#: ../src/Gui/settings.glade.h:21
+msgid "This function is not implemented yet!"
+msgstr "à´«à´‚à´—àµà´·à´¨àµâ€ ഇതàµà´µà´°àµ† ലഭàµà´¯à´®à´¾à´•àµà´•à´¿à´¯à´¿à´Ÿàµà´Ÿà´¿à´²àµà´²!"
-#: src/Gui/settings.glade:551
-msgid "<b>Analyzer plugin</b>"
-msgstr "<b>അനലൈസരàµâ€ à´ªàµà´²à´—à´¿à´¨àµà´•à´³àµâ€</b>"
+#: ../src/Gui/settings.glade.h:22
+msgid "Version:"
+msgstr "ലകàµà´•à´‚: "
-#: src/Gui/settings.glade:561
-msgid "<b>Associated action</b>"
-msgstr "<b>à´…à´¨àµà´¬à´¨àµà´§à´¿à´šàµà´šàµà´³àµà´³ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿</b>"
+#: ../src/Gui/settings.glade.h:23
+msgid "Web Site:"
+msgstr "വെബൠസൈറàµà´±àµ:"
-#: src/Gui/settings.glade:648
-msgid "Analyzers, Actions, Reporters"
-msgstr "അനലൈസറàµà´•à´³àµâ€, à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´•à´³àµâ€, റിപàµà´ªàµ‹à´°àµâ€à´Ÿàµà´Ÿà´±àµà´•à´³àµâ€"
+#: ../src/Gui/settings.glade.h:24
+msgid "gtk-add"
+msgstr "gtk-add"
-#: src/Gui/settings.glade:700
-msgid "This function is not implemented yet!"
-msgstr "à´«à´‚à´—àµà´·à´¨àµâ€ ഇതàµà´µà´°àµ† ലഭàµà´¯à´®à´¾à´•àµà´•à´¿à´¯à´¿à´Ÿàµà´Ÿà´¿à´²àµà´²!"
+#: ../src/Gui/settings.glade.h:25
+msgid "gtk-cancel"
+msgstr "gtk-cancel"
-#: src/Gui/settings.glade:738
-msgid "GPG Keys"
-msgstr "GPG കീകളàµâ€"
+#: ../src/Gui/settings.glade.h:26
+msgid "gtk-close"
+msgstr "gtk-close"
-#: src/Gui/settings.glade:773
+#: ../src/Gui/settings.glade.h:28
msgid "gtk-remove"
msgstr "gtk-remove"
-#: src/Applet/Applet.cpp:71
+#: ../src/Applet/Applet.cpp:79
#, c-format
msgid "A crash in package %s has been detected"
msgstr "പാകàµà´•àµ‡à´œàµ %s-à´²àµâ€ ഒരൠതകരാറàµà´£àµà´Ÿàµàµ"
-#: src/Applet/Applet.cpp:130
+#: ../src/Applet/Applet.cpp:138
msgid "ABRT service has been started"
msgstr "ABRT സരàµâ€à´µàµ€à´¸àµ ആരംഭിചàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ"
-#: src/Applet/Applet.cpp:132 src/Applet/Applet.cpp:246
+#: ../src/Applet/Applet.cpp:140 ../src/Applet/Applet.cpp:254
msgid "ABRT service is not running"
msgstr "ABRT സരàµâ€à´µàµ€à´¸àµ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´•àµà´•àµà´¨àµà´¨à´¿à´²àµà´²"
-#: src/Applet/CCApplet.cpp:185
+#: ../src/Applet/CCApplet.cpp:185
msgid "Warning"
msgstr "à´®àµà´¨àµà´¨à´±à´¿à´¯à´¿à´ªàµà´ªàµàµ"
-#: src/Daemon/Daemon.cpp:546
+#: ../src/Daemon/Daemon.cpp:520
msgid ""
"Report size exceeded the quota. Please check system's MaxCrashReportsSize "
"value in abrt.conf."
@@ -414,120 +453,125 @@ msgstr ""
"à´µàµà´¯à´¾à´ªàµà´¤à´¿ കോടàµà´Ÿà´¯àµ‡à´•àµà´•à´¾à´³àµâ€ കൂടിയതായി രേഖപàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµà´•. ദയവായി abrt.conf-à´²àµà´³àµà´³ സിസàµà´±àµà´±à´¤àµà´¤à´¿à´¨àµà´±àµ† "
"MaxCrashReportsSize മൂലàµà´²àµà´¯à´‚ പരിശോധികàµà´•àµà´•."
-#: lib/Plugins/Bugzilla.cpp:83
-msgid "Empty login and password. Please check Bugzilla.conf"
-msgstr "ലോഗിനàµà´‚ അടയാളവാകàµà´•àµà´‚ ശൂനàµà´¯à´‚. ദയവായി Bugzilla.conf പരിശോധികàµà´•àµà´•"
-
-#: lib/Plugins/Bugzilla.cpp:227
-msgid "Bug is already reported: "
-msgstr "ബഗൠരേഖപàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ: "
-
-#: lib/Plugins/Bugzilla.cpp:282
+#: ../lib/Plugins/Bugzilla.cpp:209
#, c-format
-msgid "Binary file %s will not be reported."
-msgstr "ബൈനറി ഫയലàµâ€ %s റിപോരàµâ€à´Ÿàµà´Ÿàµ ചെയàµà´¯àµà´¨àµà´¨à´¤à´²àµà´²."
+msgid "Bug is already reported: %i"
+msgstr "ബഗൠരേഖപàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´¿à´¯à´¿à´Ÿàµà´Ÿàµà´£àµà´Ÿàµàµ: %i"
-#: lib/Plugins/Bugzilla.cpp:352
-msgid "New bug id: "
-msgstr "à´ªàµà´¤à´¿à´¯ ബഗൠid: "
+#: ../lib/Plugins/Bugzilla.cpp:271
+#, c-format
+msgid "New bug id: %i"
+msgstr "à´ªàµà´¤à´¿à´¯ ബഗൠid: %i"
-#: lib/Plugins/Bugzilla.cpp:421
+#: ../lib/Plugins/Bugzilla.cpp:364
msgid "Checking for duplicates..."
msgstr "ഒരേപോലàµà´³àµà´³à´µà´¯àµà´•àµà´•à´¾à´¯à´¿ തെരയàµà´¨àµà´¨àµ..."
-#: lib/Plugins/Bugzilla.cpp:424 lib/Plugins/Bugzilla.cpp:436
+#: ../lib/Plugins/Bugzilla.cpp:367
msgid "Logging into bugzilla..."
msgstr "ബഗàµà´¸à´¿à´²à´¯à´¿à´²àµ‡à´•àµà´•àµ à´ªàµà´°à´µàµ‡à´¶à´¿à´•àµà´•àµà´¨àµà´¨àµ..."
-#: lib/Plugins/Bugzilla.cpp:427
-msgid "Check CC and add coment +1..."
-msgstr "CC പരിശോധിചàµà´šàµàµ coment +1 ചേരàµâ€à´•àµà´•àµà´•..."
+#: ../lib/Plugins/Bugzilla.cpp:371
+msgid "Empty login and password. Please check Bugzilla.conf"
+msgstr "ലോഗിനàµà´‚ അടയാളവാകàµà´•àµà´‚ ശൂനàµà´¯à´‚. ദയവായി Bugzilla.conf പരിശോധികàµà´•àµà´•"
+
+#: ../lib/Plugins/Bugzilla.cpp:377
+msgid "Checking CC..."
+msgstr "CC പരിശോധികàµà´•àµà´¨àµà´¨àµ..."
-#: lib/Plugins/Bugzilla.cpp:448
+#: ../lib/Plugins/Bugzilla.cpp:386
msgid "Creating new bug..."
msgstr "à´ªàµà´¤à´¿à´¯ ബഗൠഉണàµà´Ÿà´¾à´•àµà´•àµà´¨àµà´¨àµ..."
-#: lib/Plugins/Bugzilla.cpp:453
+#: ../lib/Plugins/Bugzilla.cpp:390
msgid "Logging out..."
msgstr "ലോഗൌടàµà´Ÿàµ ചെയàµà´¯àµà´¨àµà´¨àµ..."
-#: lib/Plugins/Kerneloops.cpp:37
+#: ../lib/Plugins/Kerneloops.cpp:37
msgid "Getting local universal unique identification"
msgstr "ലോകàµà´•à´²àµâ€ യൂണിവേഴàµà´¸à´²àµâ€ à´¯àµà´£àµ€à´•àµà´•àµ തിരിചàµà´šà´±à´¿à´¯à´²àµâ€ ലഭികàµà´•àµà´¨àµà´¨àµ"
-#: lib/Plugins/CCpp.cpp:146
+#: ../lib/Plugins/CCpp.cpp:254
msgid "Getting backtrace..."
msgstr "ബാകàµà´•àµà´Ÿàµà´°àµ†à´¯à´¿à´¸àµ ലഭികàµà´•àµà´¨àµà´¨àµ..."
-#: lib/Plugins/CCpp.cpp:410
+#: ../lib/Plugins/CCpp.cpp:552 ../lib/Plugins/CCpp.cpp:679
msgid "Searching for debug-info packages..."
msgstr "debug-info പാകàµà´•àµ‡à´œàµà´•à´³àµâ€à´•àµà´•à´¾à´¯à´¿ തെരയàµà´¨àµà´¨àµ..."
-#: lib/Plugins/CCpp.cpp:444
+#: ../lib/Plugins/CCpp.cpp:614 ../lib/Plugins/CCpp.cpp:713
msgid "Downloading and installing debug-info packages..."
msgstr "debug-info പാകàµà´•àµ‡à´œàµà´•à´³àµâ€ ഡൌണàµâ€à´²àµ‹à´Ÿàµ ചെയàµà´¤àµàµ ഇനàµâ€à´¸àµà´±àµà´±àµ‹à´³àµâ€ ചെയàµà´¯àµà´¨àµà´¨àµ..."
-#: lib/Plugins/CCpp.cpp:506
+#: ../lib/Plugins/CCpp.cpp:818
msgid "Getting local universal unique identification..."
msgstr "ലോകàµà´•à´²àµâ€ യൂണിവേഴàµà´¸à´²àµâ€ à´¯àµà´£àµ€à´•àµà´•àµ തിരിചàµà´šà´±à´¿à´¯à´²àµâ€ ലഭികàµà´•àµà´¨àµà´¨àµ..."
-#: lib/Plugins/CCpp.cpp:525
+#: ../lib/Plugins/CCpp.cpp:837
msgid "Getting global universal unique identification..."
msgstr "à´—àµà´²àµ‹à´¬à´²àµâ€ യൂണിവേഴàµà´¸à´²àµâ€ à´¯àµà´£àµ€à´•àµà´•àµ തിരിചàµà´šà´±à´¿à´¯à´²àµâ€ ലഭികàµà´•àµà´¨àµà´¨àµ..."
-#: lib/Plugins/CCpp.cpp:576
+#: ../lib/Plugins/CCpp.cpp:882
msgid "Starting report creation..."
msgstr "റിപോരàµâ€à´Ÿàµà´Ÿàµ ഉണàµà´Ÿà´¾à´•àµà´•àµà´µà´¾à´¨àµâ€ à´¤àµà´Ÿà´™àµà´™àµà´¨àµà´¨àµ..."
-#: lib/Plugins/CCpp.cpp:605
+#: ../lib/Plugins/CCpp.cpp:912
msgid "Skipping debuginfo installation"
msgstr "debuginfo ഇനàµâ€à´¸àµà´±àµà´±à´²àµ‡à´·à´¨àµâ€ ഉപേകàµà´·à´¿à´•àµà´•àµà´¨àµà´¨àµ"
-#: lib/Plugins/KerneloopsReporter.cpp:101
+#: ../lib/Plugins/KerneloopsReporter.cpp:102
msgid "Creating and submitting a report..."
msgstr "ഒരൠറിപോരàµâ€à´Ÿàµà´Ÿàµ ഉണàµà´Ÿà´¾à´•àµà´•à´¿ സമരàµâ€à´ªàµà´ªà´¿à´•àµà´•àµà´¨àµà´¨àµ..."
-#: lib/Plugins/Logger.cpp:58 lib/Plugins/Mailx.cpp:123
+#: ../lib/Plugins/Logger.cpp:65 ../lib/Plugins/Mailx.cpp:124
msgid "Creating a report..."
msgstr "ഒരൠറിപോരàµâ€à´Ÿàµà´Ÿàµ ഉണàµà´Ÿà´¾à´•àµà´•àµà´¨àµà´¨àµ..."
-#: lib/Plugins/RunApp.cpp:62
+#: ../lib/Plugins/RunApp.cpp:64
msgid "Executing RunApp plugin..."
msgstr "RunApp à´ªàµà´²à´—à´¿à´¨àµâ€ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´ªàµà´ªà´¿à´•àµà´•àµà´¨àµà´¨àµ..."
-#: lib/Plugins/FileTransfer.cpp:60 lib/Plugins/FileTransfer.cpp:355
+#: ../lib/Plugins/FileTransfer.cpp:63 ../lib/Plugins/FileTransfer.cpp:384
msgid "FileTransfer: URL not specified"
msgstr "ഫയലàµâ€ നീകàµà´•à´‚ ചെയàµà´¯à´²àµâ€: URL നലàµâ€à´•à´¿à´¯à´¿à´Ÿàµà´Ÿà´¿à´²àµà´²"
-#: lib/Plugins/FileTransfer.cpp:77
+#: ../lib/Plugins/FileTransfer.cpp:67
#, c-format
-msgid "Sending archive %s via %s"
-msgstr "ആരàµâ€à´•àµà´•àµˆà´µàµ %s, %s വഴി അയയàµà´•àµà´•àµà´¨àµà´¨àµ"
+msgid "Sending archive %s to %s"
+msgstr "ആരàµâ€à´•àµà´•àµˆà´µàµ %s, %s-ലേകàµà´•àµ അയയàµà´•àµà´•àµà´¨àµà´¨àµ"
-#: lib/Plugins/FileTransfer.cpp:284
+#: ../lib/Plugins/FileTransfer.cpp:309
msgid "File Transfer: Creating a report..."
msgstr "ഫയലàµâ€ നീകàµà´•à´‚ ചെയàµà´¯à´²àµâ€: റിപോരàµâ€à´Ÿàµà´Ÿàµ ഉണàµà´Ÿà´¾à´•àµà´•àµà´¨àµà´¨àµ..."
-#: lib/Plugins/FileTransfer.cpp:305 lib/Plugins/FileTransfer.cpp:334
-msgid "CFileTransfer::Run(): Cannot create and send an archive: "
-msgstr "CFileTransfer::Run(): ഒരൠആരàµâ€à´•àµà´•àµˆà´µàµ ഉണàµà´Ÿà´¾à´•àµà´•à´¿ അയയàµà´•àµà´•àµà´µà´¾à´¨àµâ€ സാധàµà´¯à´®à´²àµà´²: "
+#: ../lib/Plugins/FileTransfer.cpp:334
+#, c-format
+msgid "Can't create and send an archive: %s"
+msgstr "ഒരൠആരàµâ€à´•àµà´•àµˆà´µàµ ഉണàµà´Ÿà´¾à´•àµà´•à´¿ അയയàµà´•àµà´•àµà´µà´¾à´¨àµâ€ സാധàµà´¯à´®à´²àµà´²: %s"
+
+#: ../lib/Plugins/FileTransfer.cpp:359
+#, c-format
+msgid "Can't create and send an archive %s"
+msgstr "ഒരൠആരàµâ€à´•àµà´•àµˆà´µàµ %s ഉണàµà´Ÿà´¾à´•àµà´•à´¿ അയയàµà´•àµà´•àµà´µà´¾à´¨àµâ€ സാധàµà´¯à´®à´²àµà´²"
-#: lib/Plugins/KerneloopsScanner.cpp:79
+#: ../lib/Plugins/KerneloopsScanner.cpp:84
msgid "Creating kernel oops crash reports..."
msgstr "കേരàµâ€à´£à´²àµâ€ oops à´•àµà´°à´¾à´·àµ റിപോരàµâ€à´Ÿàµà´Ÿàµà´•à´³àµâ€ ഉണàµà´Ÿà´¾à´•àµà´•àµà´¨àµà´¨àµ..."
-#: lib/Plugins/Mailx.cpp:109
+#: ../lib/Plugins/Mailx.cpp:109
msgid "Sending an email..."
msgstr "ഒരൠഈമെയിലàµâ€ അയയàµà´•àµà´•àµà´¨àµà´¨àµ..."
-#: lib/Plugins/SOSreport.cpp:113
+#: ../lib/Plugins/SOSreport.cpp:100
msgid "Executing SOSreport plugin..."
msgstr "SOSreport à´ªàµà´²à´—à´¿à´¨àµâ€ à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´ªàµà´ªà´¿à´•àµà´•àµà´¨àµà´¨àµ..."
-#: lib/Plugins/SOSreport.cpp:135
-msgid "running sosreport: "
-msgstr "sosreport à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´ªàµà´ªà´¿à´•àµà´•àµà´¨àµà´¨àµ: "
+#: ../lib/Plugins/SOSreport.cpp:122
+#, c-format
+msgid "running sosreport: %s"
+msgstr "sosreport à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¿à´ªàµà´ªà´¿à´•àµà´•àµà´¨àµà´¨àµ: %s"
-#: lib/Plugins/SOSreport.cpp:150
+#: ../lib/Plugins/SOSreport.cpp:137
msgid "done running sosreport"
msgstr "sosreport à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¨à´‚ പൂരàµâ€à´¤àµà´¤à´¿à´¯à´¾à´¯à´¿"
+
diff --git a/po/mr.po b/po/mr.po
index 71a71397..9be84953 100644
--- a/po/mr.po
+++ b/po/mr.po
@@ -2,13 +2,14 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
+#: ../src/Gui/CCReporterDialog.py:191
# Sandeep Shedmake <sshedmak@redhat.com>, 2009.
msgid ""
msgstr ""
"Project-Id-Version: abrt.master\n"
"Report-Msgid-Bugs-To: jmoskovc@redhat.com\n"
-"POT-Creation-Date: 2009-09-29 14:46+0200\n"
-"PO-Revision-Date: 2009-09-23 12:30+0530\n"
+"POT-Creation-Date: 2009-11-16 03:07+0000\n"
+"PO-Revision-Date: 2009-11-16 13:51+0530\n"
"Last-Translator: Sandeep Shedmake <sshedmak@redhat.com>\n"
"Language-Team: Marathi <fedora-trans-mr@redhat.com>\n"
"MIME-Version: 1.0\n"
@@ -17,39 +18,43 @@ msgstr ""
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-#: src/Gui/ABRTExceptions.py:4
+#: ../src/Gui/ABRTExceptions.py:6
msgid "Another client is already running, trying to wake it."
msgstr "इतर कà¥à¤²à¤¾à¤à¤‚ट आधिपासूनच कारà¥à¤¯à¤°à¤¤ आहे, सकà¥à¤°à¥€à¤¯ करणà¥à¤¯à¤¾à¤šà¤¾ पà¥à¤°à¤¯à¤¤à¥à¤¨ करत आहे."
-#: src/Gui/ABRTExceptions.py:10
+#: ../src/Gui/ABRTExceptions.py:13
msgid "Got unexpected data from daemon (is the database properly updated?)."
msgstr "डिमनपासून अनपेकà¥à¤·à¥€à¤¤ डाटा पà¥à¤°à¤¾à¤ªà¥à¤¤ à¤à¤¾à¤²à¥‡ (माहितीकोष योगà¥à¤¯à¤°à¤¿à¤¤à¥à¤¯à¤¾ सà¥à¤§à¤¾à¤°à¥€à¤¤ केले?)."
-#: src/Gui/ABRTPlugin.py:26
+#: ../src/Gui/ABRTPlugin.py:55
msgid "Analyzer plugins"
msgstr "अनलाइजर पà¥à¤²à¤—इनà¥à¤¸à¥"
-#: src/Gui/ABRTPlugin.py:27
+#: ../src/Gui/ABRTPlugin.py:56
msgid "Action plugins"
msgstr "कृती पà¥à¤²à¤—इनà¥à¤¸à¥"
-#: src/Gui/ABRTPlugin.py:28
+#: ../src/Gui/ABRTPlugin.py:57
msgid "Reporter plugins"
msgstr "रिपोरà¥à¤Ÿà¤° पà¥à¤²à¤—इनà¥à¤¸à¥"
-#: src/Gui/ABRTPlugin.py:29
+#: ../src/Gui/ABRTPlugin.py:58
msgid "Database plugins"
msgstr "डाटाबेस पà¥à¤²à¤—इनà¥à¤¸à¥"
-#: src/Gui/CCDBusBackend.py:143
-msgid "Can't connect to dbus"
-msgstr "dbus शी जà¥à¤³à¤µà¤£à¥€ करणà¥à¤¯à¤¾à¤¸ अशकà¥à¤¯"
+#: ../src/Gui/ABRTPlugin.py:97
+msgid "Plugin name is not set, can't load it's settings"
+msgstr "पà¥à¤²à¤—इनचे नाव सेट नाही, संरचना दाखल करणे अशकà¥à¤¯"
-#: src/Gui/CCDBusBackend.py:169
-msgid "Please check if abrt daemon is running."
-msgstr "abrt डीमन कारà¥à¤¯à¤°à¤¤ आहे कृपया याची तपासणी करा."
+#: ../src/Gui/CCDBusBackend.py:74 ../src/Gui/CCDBusBackend.py:97
+msgid "Can't connect to system dbus"
+msgstr "पà¥à¤°à¤£à¤¾à¤²à¥€ dbus शी जà¥à¤³à¤µà¤£à¥€ करणà¥à¤¯à¤¾à¤¸ अशकà¥à¤¯"
-#: src/Gui/CCDBusBackend.py:187
+#: ../src/Gui/CCDBusBackend.py:100 ../src/Gui/CCDBusBackend.py:103
+msgid "Please check if abrt daemon is running"
+msgstr "abrt डीमन कारà¥à¤¯à¤°à¤¤ आहे कृपया याची तपासणी करा"
+
+#: ../src/Gui/CCDBusBackend.py:155
msgid ""
"Daemon did't return valid report info\n"
"Debuginfo is missing?"
@@ -57,27 +62,47 @@ msgstr ""
"डीमनने वैध अहवाल माहिती पà¥à¤°à¤µà¤²à¥€ नाही\n"
"Debuginfo आढळले नाही?"
-#: src/Gui/ccgui.glade:6
-msgid "Please wait.."
-msgstr "कृपया थांबा.."
-
-#: src/Gui/ccgui.glade:16
-msgid "Working..."
-msgstr "कारà¥à¤¯à¤°à¤¤ आहे..."
-
-#: src/Gui/ccgui.glade:49
+#: ../src/Gui/ccgui.glade.h:1 ../src/Gui/report.glade.h:1
msgid " "
msgstr " "
-#: src/Gui/ccgui.glade:68
+#: ../src/Gui/ccgui.glade.h:2
+msgid "(C) 2009 Red Hat, Inc."
+msgstr "(C) 2009 Red Hat, Inc."
+
+#: ../src/Gui/ccgui.glade.h:3 ../src/Gui/CCMainWindow.py:244
+msgid "<b>Not reported!</b>"
+msgstr "<b>कळवले नाही!</b>"
+
+#: ../src/Gui/ccgui.glade.h:4
+msgid "<span color=\"white\">Description</span>"
+msgstr "<span color=\"white\">वरà¥à¤£à¤¨</span>"
+
+#: ../src/Gui/ccgui.glade.h:5
msgid "About ABRT"
msgstr "ABRT विषयी"
-#: src/Gui/ccgui.glade:74
-msgid "(C) 2009 Red Hat, Inc."
-msgstr "(C) 2009 Red Hat, Inc."
+#: ../src/Gui/ccgui.glade.h:6 ../src/Gui/abrt.desktop.in.h:1
+msgid "Automatic Bug Reporting Tool"
+msgstr "सà¥à¤µà¤¯à¤‚ बग रिपोरà¥à¤Ÿà¥€à¤‚ग उपकरन"
+
+#: ../src/Gui/ccgui.glade.h:7
+msgid "Delete"
+msgstr "नषà¥à¤Ÿ करा"
-#: src/Gui/ccgui.glade:75
+#: ../src/Gui/ccgui.glade.h:8
+msgid "Please wait.."
+msgstr "कृपया थांबा.."
+
+#: ../src/Gui/ccgui.glade.h:9
+msgid "Plugins"
+msgstr "पà¥à¤²à¤—इनà¥à¤¸à¥"
+
+#: ../src/Gui/ccgui.glade.h:10 ../src/Gui/report.glade.h:4
+msgid "Report"
+msgstr "रिपोरà¥à¤Ÿ"
+
+#: ../src/Gui/ccgui.glade.h:11
msgid ""
"This program is free software; you can redistribute it and/or modify it "
"under the terms of the GNU General Public License as published by the Free "
@@ -105,68 +130,57 @@ msgstr ""
"You should have received a copy of the GNU General Public License along with "
"this program. If not, see <http://www.gnu.org/licenses/>."
-#: src/Gui/ccgui.glade:106
-msgid "Automatic Bug Reporting Tool"
-msgstr "सà¥à¤µà¤¯à¤‚ बग रिपोरà¥à¤Ÿà¥€à¤‚ग उपकरन"
-
-#: src/Gui/ccgui.glade:118
-msgid "_File"
-msgstr "फाइल (_F)"
+#: ../src/Gui/ccgui.glade.h:16
+msgid "Working..."
+msgstr "कारà¥à¤¯à¤°à¤¤ आहे..."
-#: src/Gui/ccgui.glade:138
+#: ../src/Gui/ccgui.glade.h:17
msgid "_Edit"
msgstr "संपादीत करा (_E)"
-#: src/Gui/ccgui.glade:146
-msgid "Plugins"
-msgstr "पà¥à¤²à¤—इनà¥à¤¸à¥"
+#: ../src/Gui/ccgui.glade.h:18
+msgid "_File"
+msgstr "फाइल (_F)"
-#: src/Gui/ccgui.glade:164
+#: ../src/Gui/ccgui.glade.h:19
msgid "_Help"
msgstr "मदत (_H)"
-#: src/Gui/ccgui.glade:194 src/Gui/ccgui.glade:195
-msgid "Delete"
-msgstr "नषà¥à¤Ÿ करा"
-
-#: src/Gui/ccgui.glade:207 src/Gui/ccgui.glade:208 src/Gui/ccgui.glade:335
-#: src/Gui/report.glade:7 src/Gui/report.glade:24
-msgid "Report"
-msgstr "रिपोरà¥à¤Ÿ"
-
-#: src/Gui/ccgui.glade:255
-msgid "<span color=\"white\">Description</span>"
-msgstr "<span color=\"white\">वरà¥à¤£à¤¨</span>"
-
-#: src/Gui/ccgui.glade:297 src/Gui/CCMainWindow.py:239
-msgid "<b>Not reported!</b>"
-msgstr "<b>कळवले नाही!</b>"
-
-#: src/Gui/CCMainWindow.py:80
+#. add pixbuff separatelly
+#: ../src/Gui/CCMainWindow.py:80
msgid "Icon"
msgstr "चिनà¥à¤¹"
-#: src/Gui/CCMainWindow.py:88
+#: ../src/Gui/CCMainWindow.py:88
msgid "Package"
msgstr "संकà¥à¤²"
-#: src/Gui/CCMainWindow.py:89
+#: ../src/Gui/CCMainWindow.py:89
msgid "Application"
msgstr "à¤à¤ªà¥à¤²à¤¿à¤•à¥‡à¤¶à¤¨"
-#: src/Gui/CCMainWindow.py:90
+#: ../src/Gui/CCMainWindow.py:90
msgid "Date"
msgstr "दिनांक"
-#: src/Gui/CCMainWindow.py:91
-msgid "Crash Rate"
+#: ../src/Gui/CCMainWindow.py:91
+msgid "Crash count"
msgstr "कà¥à¤°à¥…श दर"
-#: src/Gui/CCMainWindow.py:93
+#: ../src/Gui/CCMainWindow.py:93
msgid "User"
msgstr "वापरकरà¥à¤¤à¤¾"
-#: src/Gui/CCMainWindow.py:177
+#: ../src/Gui/CCMainWindow.py:160
+#, python-format
+msgid ""
+"Can't show the settings dialog\n"
+"%s"
+msgstr ""
+"संरचना संवाद दाखवणे अशकà¥à¤¯\n"
+"%s"
+
+#: ../src/Gui/CCMainWindow.py:181
#, python-format
msgid ""
"Unable to finish current task!\n"
@@ -175,7 +189,7 @@ msgstr ""
"सधà¥à¤¯à¤¾à¤šà¥‡ कारà¥à¤¯ पूरà¥à¤£ करणà¥à¤¯à¤¾à¤¸ अशकà¥à¤¯!\n"
"%s"
-#: src/Gui/CCMainWindow.py:194
+#: ../src/Gui/CCMainWindow.py:198
#, python-format
msgid ""
"Error while loading the dumplist, please check if abrt daemon is running\n"
@@ -184,16 +198,16 @@ msgstr ""
"डंपलिसà¥à¤Ÿ लोड करतेवेळी तà¥à¤°à¥à¤Ÿà¥€ आढळली, कृपया abrt डिमन\n"
" %s चालवत आहे याची खातà¥à¤°à¥€ करा"
-#: src/Gui/CCMainWindow.py:204
+#: ../src/Gui/CCMainWindow.py:208
#, python-format
msgid "Can't get username for uid %s"
msgstr "uid %s करीता वापरकरà¥à¤¤à¥à¤¯à¤¾à¤šà¥‡ नाव पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अशकà¥à¤¯"
-#: src/Gui/CCMainWindow.py:231
+#: ../src/Gui/CCMainWindow.py:236
msgid "<b>This crash has been reported, you can find the report(s) at:</b>\n"
msgstr "<b>हा कà¥à¤°à¥…श कळवला गेला आहेन, तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ अहवाल येथे आढळेल:</b>\n"
-#: src/Gui/CCMainWindow.py:291
+#: ../src/Gui/CCMainWindow.py:296
msgid ""
"Unable to get report!\n"
"Debuginfo is missing?"
@@ -201,7 +215,7 @@ msgstr ""
"रिपोरà¥à¤Ÿ पà¥à¤°à¤¾à¤ªà¥à¤¤ करणà¥à¤¯à¤¾à¤¸ अशकà¥à¤¯!\n"
"Debuginfo आढळले नाही?"
-#: src/Gui/CCMainWindow.py:306
+#: ../src/Gui/CCMainWindow.py:314
#, python-format
msgid ""
"Reporting failed!\n"
@@ -210,12 +224,39 @@ msgstr ""
"रिपोरà¥à¤Ÿà¥€à¤‚ग अपयशी!\n"
"%s"
-#: src/Gui/CCMainWindow.py:338
+#: ../src/Gui/CCMainWindow.py:333 ../src/Gui/CCMainWindow.py:360
#, python-format
msgid "Error getting the report: %s"
msgstr "अहवाल पà¥à¤°à¤¾à¤ªà¥à¤¤ करतेवेळी तà¥à¤°à¥à¤Ÿà¥€: %s"
-#: src/Gui/CCReporterDialog.py:98
+#: ../src/Gui/CCReporterDialog.py:177
+msgid "Brief description how to reproduce this or what you did..."
+msgstr "हे कसे निरà¥à¤®à¤¾à¤£ होते किंवा तà¥à¤®à¥à¤¹à¥€ काय केले याचे थोडकà¥à¤¯à¤¾à¤¤ वरà¥à¤£à¤¨..."
+
+#: ../src/Gui/CCReporterDialog.py:219
+#, python-format
+msgid ""
+"Reporting disabled because the backtrace is unusable.\n"
+"Please try to install debuginfo manually using command:<span color=\"blue\"> "
+"debuginfo-install %s </span>\n"
+"then use Refresh button to regenerate the backtrace."
+msgstr ""
+"बॅकटà¥à¤°à¥‡à¤¸à¥ असà¥à¤¥à¥€à¤° असलà¥à¤¯à¤¾à¤®à¥à¤³à¥‡ अहवाल कळवणे असमरà¥à¤¥à¥€à¤¤ आहे.\n"
+"कृपया आदेश:<span color=\"blue\"> debuginfo-install %s </span> याचा वापर करून "
+"debuginfo सà¥à¤µà¤¤à¤ƒ पà¥à¤°à¤¤à¤¿à¤·à¥à¤ à¤¾à¤ªà¥€à¤¤ करणà¥à¤¯à¤¾à¤šà¤¾ पà¥à¤°à¤¯à¤¤à¥à¤¨ करा\n"
+"व तà¥à¤¯à¤¾à¤¨à¤‚तर बॅकटà¥à¤°à¥‡à¤¸ पà¥à¤¨à¤ƒà¤¨à¤¿à¤°à¥à¤®à¤¾à¤£ करणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ ताजे करा बटणाचा वापर करा."
+
+#: ../src/Gui/CCReporterDialog.py:221
+msgid "The bactrace is unusable, you can't report this!"
+msgstr "बॅकटà¥à¤°à¥‡à¤¸à¥ असà¥à¤¥à¥€à¤° आहे, तà¥à¤®à¥à¤¹à¥€ कळवू शकत नाही!"
+
+#: ../src/Gui/CCReporterDialog.py:227
+msgid ""
+"The bactrace is incomplete, please make sure you provide good steps to "
+"reproduce."
+msgstr "बॅकटà¥à¤°à¥‡à¤¸à¥ अपूरà¥à¤£ आहे, कृपया निरà¥à¤®à¤¾à¤£ करणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ योगà¥à¤¯ पदà¥à¤§à¤¤ पà¥à¤°à¤µà¤¾."
+
+#: ../src/Gui/CCReporterDialog.py:272
#, python-format
msgid ""
"<b>WARNING</b>, you're about to send data which might contain sensitive "
@@ -225,190 +266,186 @@ msgstr ""
"<b>सावधान</b>, तà¥à¤®à¥à¤¹à¥€ संवेदनशील माहिती असलेला डाटा पाठवणार आहात.\n"
"तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ नकà¥à¤•à¥€ <b>%s</b> पाठवायचे?\n"
-#: src/Gui/CCReporterDialog.py:111
-msgid "Brief description how to reproduce this or what you did..."
-msgstr "हे कसे निरà¥à¤®à¤¾à¤£ होते किंवा तà¥à¤®à¥à¤¹à¥€ काय केले याचे थोडकà¥à¤¯à¤¾à¤¤ वरà¥à¤£à¤¨..."
-
-#: src/Gui/dialogs.glade:7
+#: ../src/Gui/dialogs.glade.h:1
msgid "Report done"
msgstr "तपशील पूरà¥à¤£ à¤à¤¾à¤²à¥‡"
-#: src/Gui/dialogs.glade:47 src/Gui/settings.glade:695
-#: src/Gui/settings.glade:785
+#: ../src/Gui/dialogs.glade.h:2 ../src/Gui/settings.glade.h:27
msgid "gtk-ok"
msgstr "gtk-ok"
-#: src/Gui/PluginSettingsUI.py:17
+#: ../src/Gui/PluginSettingsUI.py:18
msgid "Can't find PluginDialog widget in UI description!"
msgstr "UI वरà¥à¤£à¤¨à¤®à¤§à¥à¤¯à¥‡ PluginDialog विजेट आढळले नाही!"
-#: src/Gui/PluginSettingsUI.py:21
+#. we shouldn't get here, but just to be safe
+#: ../src/Gui/PluginSettingsUI.py:24
#, python-format
msgid "No UI for plugin %s"
msgstr "पà¥à¤²à¤—इन %s करीता UI आढळले नाही"
-#: src/Gui/PluginSettingsUI.py:38 src/Gui/PluginSettingsUI.py:64
+#: ../src/Gui/PluginSettingsUI.py:55 ../src/Gui/PluginSettingsUI.py:81
msgid "combo box is not implemented"
msgstr "कॉमà¥à¤¬à¥‹ बॉकà¥à¤¸ लागू केले नाही"
-#: src/Gui/PluginSettingsUI.py:47
+#: ../src/Gui/PluginSettingsUI.py:64
msgid "Nothing to hydrate!"
msgstr "hydrate करीता काहिच आढळले नाही!"
-#: src/Gui/report.glade:64
+#: ../src/Gui/report.glade.h:2
msgid "Comment"
msgstr "टिपणà¥à¤£à¥€"
-#: src/Gui/report.glade:104 src/Gui/settings.glade:682
-#: src/Gui/settings.glade:797
-msgid "gtk-cancel"
-msgstr "gtk-cancel"
+#: ../src/Gui/report.glade.h:3
+msgid "How to reproduce (in a few simple steps)"
+msgstr "कसे निरà¥à¤®à¤¾à¤£ करायचे (सोपà¥à¤¯à¤¾ पदà¥à¤§à¤¤à¥€à¤¤)"
-#: src/Gui/report.glade:119
+#: ../src/Gui/report.glade.h:5
msgid "Send"
msgstr "पाठवा"
-#: src/Gui/SettingsDialog.py:34 src/Gui/SettingsDialog.py:51
+#: ../src/Gui/SettingsDialog.py:33 ../src/Gui/SettingsDialog.py:50
msgid "<b>Select plugin</b>"
msgstr "<b>पà¥à¤²à¤—इन नीवडा</b>"
-#: src/Gui/SettingsDialog.py:37
+#: ../src/Gui/SettingsDialog.py:36
msgid "<b>Select database backend</b>"
msgstr "<b>महितीकोष बॅकà¤à¤‚ड</b>"
-#: src/Gui/SettingsDialog.py:165
+#: ../src/Gui/SettingsDialog.py:165
msgid "Remove this job"
msgstr "हे कारà¥à¤¯ काढून टाका"
-#: src/Gui/SettingsDialog.py:208
+#: ../src/Gui/SettingsDialog.py:208
msgid "Remove this action"
msgstr "ही कृती काढून टाका"
-#: src/Gui/settings.glade:6
-msgid "Settings"
-msgstr "सेटिंगà¥à¤¸à¥"
+#: ../src/Gui/settings.glade.h:1
+msgid "<b>Analyzer plugin</b>"
+msgstr "<b>अनलाइजर पà¥à¤²à¤—इन</b>"
-#: src/Gui/settings.glade:46 src/Gui/settings.glade:55
-#: src/Gui/settings.glade:107 src/Gui/settings.glade:120
-#: src/Gui/settings.glade:133
-msgid "Nothing selected"
-msgstr "काहिच नीवडले नाही"
+#: ../src/Gui/settings.glade.h:2
+msgid "<b>Associated action</b>"
+msgstr "<b>संबंधीत कृती</b>"
-#: src/Gui/settings.glade:72
-msgid "Web Site:"
-msgstr "संकेत सà¥à¤¥à¤³:"
+#: ../src/Gui/settings.glade.h:3
+msgid "<b>Plugin</b>"
+msgstr "<b>पà¥à¤²à¤—इन</b>"
+
+#: ../src/Gui/settings.glade.h:4
+msgid "<b>Time (or period)</b>"
+msgstr "<b>वेळ (किंवा कारà¥à¤¯à¤•à¤¾à¤³)</b>"
+
+#: ../src/Gui/settings.glade.h:5
+msgid "Analyzers, Actions, Reporters"
+msgstr "अनलाइजरà¥à¤¸à¥, कृती, रिपोरà¥à¤Ÿà¤°à¥à¤¸à¥"
-#: src/Gui/settings.glade:84
+#: ../src/Gui/settings.glade.h:6
msgid "Author:"
msgstr "लेखक:"
-#: src/Gui/settings.glade:97
-msgid "Version:"
-msgstr "आवृतà¥à¤¤à¥€:"
-
-#: src/Gui/settings.glade:152
-msgid "Plugin Details"
-msgstr "पà¥à¤²à¤—इनचे तपशील"
+#: ../src/Gui/settings.glade.h:7
+msgid "Blacklisted packages: "
+msgstr "बà¥à¤²à¥…कलिसà¥à¤Ÿà¥‡à¤¡ संकà¥à¤²: "
-#: src/Gui/settings.glade:179
+#: ../src/Gui/settings.glade.h:8
msgid "C_onfigure plugin"
msgstr "पà¥à¤²à¤—इन संरचीत करा (_o)"
-#: src/Gui/settings.glade:191
-msgid "gtk-close"
-msgstr "gtk-close"
-
-#: src/Gui/settings.glade:221
-msgid "Global Settings"
-msgstr "जागतिक संरचना"
-
-#: src/Gui/settings.glade:240
+#: ../src/Gui/settings.glade.h:9
msgid "Check package GPG signature"
msgstr "संकà¥à¤²à¤šà¥€ GPG सà¥à¤µà¤¾à¤•à¥à¤·à¤°à¥€ तपासा"
-#: src/Gui/settings.glade:256
+#: ../src/Gui/settings.glade.h:10
+msgid "Common"
+msgstr "सामानà¥à¤¯"
+
+#: ../src/Gui/settings.glade.h:11
+msgid "Cron"
+msgstr "कà¥à¤°à¥‰à¤¨"
+
+#: ../src/Gui/settings.glade.h:12
msgid "Database backend: "
msgstr "डाटाबेसचे बॅकà¤à¤‚ड: "
-#: src/Gui/settings.glade:281
-msgid "Blacklisted packages: "
-msgstr "बà¥à¤²à¥…कलिसà¥à¤Ÿà¥‡à¤¡ संकà¥à¤²: "
+#: ../src/Gui/settings.glade.h:13
+msgid "Edit blacklisted packages"
+msgstr "बà¥à¤²à¥…कलिसà¥à¤Ÿà¥‡à¤¡ संकà¥à¤² संपादीत करा"
-#: src/Gui/settings.glade:294
-msgid "Max coredump storage size(MB):"
-msgstr "कोरडंप सà¥à¤Ÿà¥‹à¤°à¥‡à¤œà¤šà¥‡ कमाल आकार (MB):"
+#: ../src/Gui/settings.glade.h:14
+msgid "GPG Keys"
+msgstr "GPG किजà¥"
-#: src/Gui/settings.glade:307
+#: ../src/Gui/settings.glade.h:15
msgid "GPG keys: "
msgstr "GPG किजà¥: "
-#: src/Gui/settings.glade:349
-msgid "Edit blacklisted packages"
-msgstr "बà¥à¤²à¥…कलिसà¥à¤Ÿà¥‡à¤¡ संकà¥à¤² संपादीत करा"
+#: ../src/Gui/settings.glade.h:16
+msgid "Global Settings"
+msgstr "जागतिक संरचना"
-#: src/Gui/settings.glade:408
-msgid "Common"
-msgstr "सामानà¥à¤¯"
+#: ../src/Gui/settings.glade.h:17
+msgid "Max coredump storage size(MB):"
+msgstr "कोरडंप सà¥à¤Ÿà¥‹à¤°à¥‡à¤œà¤šà¥‡ कमाल आकार (MB):"
-#: src/Gui/settings.glade:438
-msgid "<b>Plugin</b>"
-msgstr "<b>पà¥à¤²à¤—इन</b>"
+#: ../src/Gui/settings.glade.h:18
+msgid "Nothing selected"
+msgstr "काहिच नीवडले नाही"
-#: src/Gui/settings.glade:448
-msgid "<b>Time (or period)</b>"
-msgstr "<b>वेळ (किंवा कारà¥à¤¯à¤•à¤¾à¤³)</b>"
+#: ../src/Gui/settings.glade.h:19
+msgid "Plugin Details"
+msgstr "पà¥à¤²à¤—इनचे तपशील"
-#: src/Gui/settings.glade:510 src/Gui/settings.glade:624
-#: src/Gui/settings.glade:761
-msgid "gtk-add"
-msgstr "gtk-add"
+#: ../src/Gui/settings.glade.h:20
+msgid "Settings"
+msgstr "सेटिंगà¥à¤¸à¥"
-#: src/Gui/settings.glade:534
-msgid "Cron"
-msgstr "कà¥à¤°à¥‰à¤¨"
+#: ../src/Gui/settings.glade.h:21
+msgid "This function is not implemented yet!"
+msgstr "हे फंकà¥à¤¶à¤¨ अजूनही लागू केले नाही!"
-#: src/Gui/settings.glade:551
-msgid "<b>Analyzer plugin</b>"
-msgstr "<b>अनलाइजर पà¥à¤²à¤—इन</b>"
+#: ../src/Gui/settings.glade.h:22
+msgid "Version:"
+msgstr "आवृतà¥à¤¤à¥€:"
-#: src/Gui/settings.glade:561
-msgid "<b>Associated action</b>"
-msgstr "<b>संबंधीत कृती</b>"
+#: ../src/Gui/settings.glade.h:23
+msgid "Web Site:"
+msgstr "संकेत सà¥à¤¥à¤³:"
-#: src/Gui/settings.glade:648
-msgid "Analyzers, Actions, Reporters"
-msgstr "अनलाइजरà¥à¤¸à¥, कृती, रिपोरà¥à¤Ÿà¤°à¥à¤¸à¥"
+#: ../src/Gui/settings.glade.h:24
+msgid "gtk-add"
+msgstr "gtk-add"
-#: src/Gui/settings.glade:700
-msgid "This function is not implemented yet!"
-msgstr "हे फंकà¥à¤¶à¤¨ अजूनही लागू केले नाही!"
+#: ../src/Gui/settings.glade.h:25
+msgid "gtk-cancel"
+msgstr "gtk-cancel"
-#: src/Gui/settings.glade:738
-msgid "GPG Keys"
-msgstr "GPG किजà¥"
+#: ../src/Gui/settings.glade.h:26
+msgid "gtk-close"
+msgstr "gtk-close"
-#: src/Gui/settings.glade:773
+#: ../src/Gui/settings.glade.h:28
msgid "gtk-remove"
msgstr "gtk-remove"
-#: src/Applet/Applet.cpp:71
+#: ../src/Gui/abrt.desktop.in.h:2
+msgid "View and report application crashes"
+msgstr "à¤à¤ªà¥à¤²à¤¿à¤•à¥‡à¤¶à¤¨ कà¥à¤°à¥…शचे दृषà¥à¤¯ व अहवाल"
+
+#: ../src/Applet/Applet.cpp:79
#, c-format
msgid "A crash in package %s has been detected"
msgstr "संकà¥à¤² %s मधील कà¥à¤°à¥…श ओळखले गेले आहे"
-#: src/Applet/Applet.cpp:130
-msgid "ABRT service has been started"
-msgstr "ABRT सेवा सà¥à¤°à¥‚ à¤à¤¾à¤²à¥€ आहे"
-
-#: src/Applet/Applet.cpp:132 src/Applet/Applet.cpp:246
+#: ../src/Applet/Applet.cpp:253
msgid "ABRT service is not running"
msgstr "ABRT सेवा कारà¥à¤¯à¤°à¤¤ नाही"
-#: src/Applet/CCApplet.cpp:185
+#: ../src/Applet/CCApplet.cpp:185
msgid "Warning"
msgstr "सावधानता"
-#: src/Daemon/Daemon.cpp:546
+#: ../src/Daemon/Daemon.cpp:520
msgid ""
"Report size exceeded the quota. Please check system's MaxCrashReportsSize "
"value in abrt.conf."
@@ -416,120 +453,125 @@ msgstr ""
"रिपोरà¥à¤Ÿà¤šà¤¾ आकार कोटापेकà¥à¤·à¤¾ जासà¥à¤¤ आहे. कृपया पà¥à¤°à¤£à¤¾à¤²à¥€à¤šà¥€ MaxCrashReportsSize मूलà¥à¤¯ abrt."
"conf अंतरà¥à¤—त तपासा."
-#: lib/Plugins/Bugzilla.cpp:83
-msgid "Empty login and password. Please check Bugzilla.conf"
-msgstr "रिकामे पà¥à¤°à¤µà¥‡à¤¶ व पासवरà¥à¤¡. कृपया Bugzilla.conf तपासा"
-
-#: lib/Plugins/Bugzilla.cpp:227
-msgid "Bug is already reported: "
-msgstr "बग आधिपासूनच कळवले: "
-
-#: lib/Plugins/Bugzilla.cpp:282
+#: ../lib/Plugins/Bugzilla.cpp:209
#, c-format
-msgid "Binary file %s will not be reported."
-msgstr "बायनरी फाइल %s कळवले जाणार नाही."
+msgid "Bug is already reported: %i"
+msgstr "बग आधिपासूनच कळवले: %i"
-#: lib/Plugins/Bugzilla.cpp:352
-msgid "New bug id: "
-msgstr "नवीन बग id: "
+#: ../lib/Plugins/Bugzilla.cpp:271
+#, c-format
+msgid "New bug id: %i"
+msgstr "नवीन बग id: %i"
-#: lib/Plugins/Bugzilla.cpp:421
+#: ../lib/Plugins/Bugzilla.cpp:364
msgid "Checking for duplicates..."
msgstr "हà¥à¤¬à¥‡à¤¹à¥à¤¬ करीता तपासत आहे..."
-#: lib/Plugins/Bugzilla.cpp:424 lib/Plugins/Bugzilla.cpp:436
+#: ../lib/Plugins/Bugzilla.cpp:367
msgid "Logging into bugzilla..."
msgstr "बगà¤à¥€à¤²à¤¾à¤®à¤§à¥à¤¯à¥‡ पà¥à¤°à¤µà¥‡à¤¶ करत आहे..."
-#: lib/Plugins/Bugzilla.cpp:427
-msgid "Check CC and add coment +1..."
-msgstr "CC तपासा व टिपणà¥à¤£à¥€ +1 समावेश करा..."
+#: ../lib/Plugins/Bugzilla.cpp:371
+msgid "Empty login and password. Please check Bugzilla.conf"
+msgstr "रिकामे पà¥à¤°à¤µà¥‡à¤¶ व पासवरà¥à¤¡. कृपया Bugzilla.conf तपासा"
+
+#: ../lib/Plugins/Bugzilla.cpp:377
+msgid "Checking CC..."
+msgstr "CC तपासत आहे..."
-#: lib/Plugins/Bugzilla.cpp:448
+#: ../lib/Plugins/Bugzilla.cpp:386
msgid "Creating new bug..."
msgstr "नवीन बग निरà¥à¤®à¤¾à¤£ करत आहे..."
-#: lib/Plugins/Bugzilla.cpp:453
+#: ../lib/Plugins/Bugzilla.cpp:390
msgid "Logging out..."
msgstr "बाहेर पडत आहे..."
-#: lib/Plugins/Kerneloops.cpp:37
+#: ../lib/Plugins/Kerneloops.cpp:37
msgid "Getting local universal unique identification"
msgstr "सà¥à¤¥à¤¾à¤¨à¥€à¤¯ यूनीवरà¥à¤¸à¤²à¥ ओळख पà¥à¤°à¤¾à¤ªà¥à¤¤ करत आहे"
-#: lib/Plugins/CCpp.cpp:146
+#: ../lib/Plugins/CCpp.cpp:254
msgid "Getting backtrace..."
msgstr "backtrace पà¥à¤°à¤¾à¤ªà¥à¤¤ करत आहे..."
-#: lib/Plugins/CCpp.cpp:410
+#: ../lib/Plugins/CCpp.cpp:552 ../lib/Plugins/CCpp.cpp:679
msgid "Searching for debug-info packages..."
msgstr "debug-info संकà¥à¤²à¤¾à¤‚करीता शोधत आहे..."
-#: lib/Plugins/CCpp.cpp:444
+#: ../lib/Plugins/CCpp.cpp:614 ../lib/Plugins/CCpp.cpp:713
msgid "Downloading and installing debug-info packages..."
msgstr "debug-info संकà¥à¤² डाऊनलोड व पà¥à¤°à¤¤à¤¿à¤·à¥à¤ à¤¾à¤ªà¥€à¤¤ करत आहे..."
-#: lib/Plugins/CCpp.cpp:506
+#: ../lib/Plugins/CCpp.cpp:818
msgid "Getting local universal unique identification..."
msgstr "लोकल लोकल à¤à¤•à¤®à¥‡à¤µ ओळख पà¥à¤°à¤¾à¤ªà¥à¤¤ करत आहे..."
-#: lib/Plugins/CCpp.cpp:525
+#: ../lib/Plugins/CCpp.cpp:837
msgid "Getting global universal unique identification..."
msgstr "लोकल गà¥à¤²à¥‹à¤¬à¤² à¤à¤•à¤®à¥‡à¤µ ओळख पà¥à¤°à¤¾à¤ªà¥à¤¤ करत आहे..."
-#: lib/Plugins/CCpp.cpp:576
+#: ../lib/Plugins/CCpp.cpp:882
msgid "Starting report creation..."
msgstr "अहवाल निरà¥à¤®à¤¾à¤£ सà¥à¤°à¥‚ करा..."
-#: lib/Plugins/CCpp.cpp:605
+#: ../lib/Plugins/CCpp.cpp:912
msgid "Skipping debuginfo installation"
msgstr "debuginfo पà¥à¤°à¤¤à¤¿à¤·à¥à¤ à¤¾à¤ªà¤¨ वगळत आहे"
-#: lib/Plugins/KerneloopsReporter.cpp:101
+#: ../lib/Plugins/KerneloopsReporter.cpp:102
msgid "Creating and submitting a report..."
msgstr "अहवाल निरà¥à¤®à¤¾à¤£ व सादर करत आहे..."
-#: lib/Plugins/Logger.cpp:58 lib/Plugins/Mailx.cpp:123
+#: ../lib/Plugins/Logger.cpp:65
msgid "Creating a report..."
msgstr "अहवाल निरà¥à¤®à¤¾à¤£ करत आहे..."
-#: lib/Plugins/RunApp.cpp:62
+#: ../lib/Plugins/RunApp.cpp:35
msgid "Executing RunApp plugin..."
msgstr "RunApp पà¥à¤²à¤—इन चालवत आहे..."
-#: lib/Plugins/FileTransfer.cpp:60 lib/Plugins/FileTransfer.cpp:355
+#: ../lib/Plugins/FileTransfer.cpp:63 ../lib/Plugins/FileTransfer.cpp:384
msgid "FileTransfer: URL not specified"
msgstr "FileTransfer: URL दिले नाही"
-#: lib/Plugins/FileTransfer.cpp:77
+#: ../lib/Plugins/FileTransfer.cpp:67
#, c-format
-msgid "Sending archive %s via %s"
-msgstr "%2$s दà¥à¤µà¤¾à¤°à¥‡ आरà¥à¤•à¤¾à¤‡à¤µà¥à¤¹ %1$s पाठवत आहे"
+msgid "Sending archive %s to %s"
+msgstr "आरà¥à¤•à¤¾à¤‡à¤µà¥à¤¹ %s, याला %s करीता पाठवत आहे"
-#: lib/Plugins/FileTransfer.cpp:284
+#: ../lib/Plugins/FileTransfer.cpp:309
msgid "File Transfer: Creating a report..."
msgstr "फाइल सà¥à¤¥à¤¾à¤¨à¤¾à¤‚तरन: अहवाल निरà¥à¤®à¤¾à¤£ करत आहे..."
-#: lib/Plugins/FileTransfer.cpp:305 lib/Plugins/FileTransfer.cpp:334
-msgid "CFileTransfer::Run(): Cannot create and send an archive: "
-msgstr "CFileTransfer::Run(): आरà¥à¤•à¤¾à¤‡à¤µà¥à¤¹ निरà¥à¤®à¤¾à¤£ करणे व पाठवणे अशकà¥à¤¯: "
+#: ../lib/Plugins/FileTransfer.cpp:334
+#, c-format
+msgid "Can't create and send an archive: %s"
+msgstr "आरà¥à¤•à¤¾à¤‡à¤µà¥à¤¹à¤šà¥‡ निरà¥à¤®à¤¾à¤£ व तà¥à¤¯à¤¾à¤‚स पाठवणे अशकà¥à¤¯: %s"
+
+#: ../lib/Plugins/FileTransfer.cpp:359
+#, c-format
+msgid "Can't create and send an archive %s"
+msgstr "आरà¥à¤•à¤¾à¤‡à¤µà¥à¤¹ %s निरà¥à¤®à¤¾à¤£ व तà¥à¤¯à¤¾à¤‚स पाठवणे अशकà¥à¤¯"
-#: lib/Plugins/KerneloopsScanner.cpp:79
+#: ../lib/Plugins/KerneloopsScanner.cpp:84
msgid "Creating kernel oops crash reports..."
msgstr "kernel oops कà¥à¤°à¥…श अहवाल निरà¥à¤®à¤¾à¤£ करत आहे..."
-#: lib/Plugins/Mailx.cpp:109
+#: ../lib/Plugins/Mailx.cpp:163
msgid "Sending an email..."
msgstr "ईमेल पाठवत आहे..."
-#: lib/Plugins/SOSreport.cpp:113
+#: ../lib/Plugins/SOSreport.cpp:69
msgid "Executing SOSreport plugin..."
msgstr "SOSreport पà¥à¤²à¤—इन चालवत आहे..."
-#: lib/Plugins/SOSreport.cpp:135
-msgid "running sosreport: "
-msgstr "sosreport चालवत आहे: "
+#: ../lib/Plugins/SOSreport.cpp:91
+#, c-format
+msgid "running sosreport: %s"
+msgstr "sosreport चालवत आहे: %s"
-#: lib/Plugins/SOSreport.cpp:150
+#: ../lib/Plugins/SOSreport.cpp:95
msgid "done running sosreport"
msgstr "sosreport चालवणे यशसà¥à¤µà¥€"
+
diff --git a/po/nl.po b/po/nl.po
index 2831bfd0..e2ffbc5f 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -4,20 +4,21 @@
# This file is distributed under the same license as the PACKAGE package.
#
#
-#: ../src/Gui/CCReporterDialog.py:191
# Geert Warrink <geert.warrink@onsnet.nu>, 2009.
# Richard van der Luit <nippur@fedoraproject.org>, 2009.
+# Geert Warrink <geert.warrink@onsnet.nu>, 2009.
+#: ../src/Gui/CCReporterDialog.py:191
msgid ""
msgstr ""
"Project-Id-Version: abrt.master\n"
"Report-Msgid-Bugs-To: jmoskovc@redhat.com\n"
-"POT-Creation-Date: 2009-11-11 09:31+0000\n"
-"PO-Revision-Date: 2009-11-11 13:12+0100\n"
-"Last-Translator: Richard van der Luit <nippur@fedoraproject.org>\n"
-"Language-Team: Dutch <nl@li.org>\n"
+"POT-Creation-Date: 2009-11-15 14:58+0000\n"
+"PO-Revision-Date: 2009-11-15 20:02+0100\n"
+"Last-Translator: Geert Warrink <geert.warrink@onsnet.nu>\n"
+"Language-Team: nl <fedora-trans-list@redhat.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
+"Content-Transfer-Encoding: \n"
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@@ -27,7 +28,8 @@ msgstr "Andere client draait al, probeer het te wekken."
#: ../src/Gui/ABRTExceptions.py:13
msgid "Got unexpected data from daemon (is the database properly updated?)."
-msgstr "Kreeg niet verwachte data van daemon (is de database correct vernieuwd?)."
+msgstr ""
+"Kreeg niet verwachte data van daemon (is de database correct vernieuwd?)."
#: ../src/Gui/ABRTPlugin.py:55
msgid "Analyzer plugins"
@@ -85,7 +87,7 @@ msgstr "<span color=\"white\">Beschrijving</span>"
msgid "About ABRT"
msgstr "Over ABRT"
-#: ../src/Gui/ccgui.glade.h:6
+#: ../src/Gui/ccgui.glade.h:6 ../src/Gui/abrt.desktop.in.h:1
msgid "Automatic Bug Reporting Tool"
msgstr "Automatisch bug rapporteer gereedschap"
@@ -435,6 +437,10 @@ msgstr "gtk-close"
msgid "gtk-remove"
msgstr "gtk-remove"
+#: ../src/Gui/abrt.desktop.in.h:2
+msgid "View and report application crashes"
+msgstr "Bekijk en rapporteer crashes van toepassingen"
+
#: ../src/Applet/Applet.cpp:79
#, c-format
msgid "A crash in package %s has been detected"
@@ -530,11 +536,11 @@ msgstr "Sla debuginfo installatie over"
msgid "Creating and submitting a report..."
msgstr "Aanmaken en indienen van rapport..."
-#: ../lib/Plugins/Logger.cpp:65 ../lib/Plugins/Mailx.cpp:124
+#: ../lib/Plugins/Logger.cpp:65
msgid "Creating a report..."
msgstr "Rapport aanmaken..."
-#: ../lib/Plugins/RunApp.cpp:64
+#: ../lib/Plugins/RunApp.cpp:35
msgid "Executing RunApp plugin..."
msgstr "RunApp plugin draaien..."
@@ -565,20 +571,19 @@ msgstr "Kan archief %s niet aanmaken en versturen"
msgid "Creating kernel oops crash reports..."
msgstr "Aanmaken van kernel oops crash rapporten..."
-#: ../lib/Plugins/Mailx.cpp:109
+#: ../lib/Plugins/Mailx.cpp:163
msgid "Sending an email..."
msgstr "Versturen van email..."
-#: ../lib/Plugins/SOSreport.cpp:100
+#: ../lib/Plugins/SOSreport.cpp:69
msgid "Executing SOSreport plugin..."
msgstr "Uitvoeren van SOSreport plugin..."
-#: ../lib/Plugins/SOSreport.cpp:122
+#: ../lib/Plugins/SOSreport.cpp:91
#, c-format
msgid "running sosreport: %s"
msgstr "sosreport draaien: %s"
-#: ../lib/Plugins/SOSreport.cpp:137
+#: ../lib/Plugins/SOSreport.cpp:95
msgid "done running sosreport"
msgstr "klaar met het draaien van sosreport"
-
diff --git a/po/or.po b/po/or.po
index 91999458..49637605 100644
--- a/po/or.po
+++ b/po/or.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: abrt.master.or\n"
"Report-Msgid-Bugs-To: jmoskovc@redhat.com\n"
-"POT-Creation-Date: 2009-11-12 03:54+0000\n"
-"PO-Revision-Date: 2009-11-12 18:06+0530\n"
+"POT-Creation-Date: 2009-11-18 08:52+0000\n"
+"PO-Revision-Date: 2009-11-18 18:04+0530\n"
"Last-Translator: Manoj Kumar Giri <mgiri@redhat.com>\n"
"Language-Team: Oriya <oriya-it@googlegroups.com>\n"
"MIME-Version: 1.0\n"
@@ -29,6 +29,7 @@ msgstr ""
"\n"
"\n"
"\n"
+"\n"
#: ../src/Gui/ABRTExceptions.py:6
msgid "Another client is already running, trying to wake it."
@@ -94,7 +95,7 @@ msgstr "<span color=\"white\">ବରà­à¬£à­à¬£à¬¨à¬¾</span>"
msgid "About ABRT"
msgstr "ABRT ବିଷୟରେ"
-#: ../src/Gui/ccgui.glade.h:6
+#: ../src/Gui/ccgui.glade.h:6 ../src/Gui/abrt.desktop.in.h:1
msgid "Automatic Bug Reporting Tool"
msgstr "ସà­à­±à­Ÿà¬‚ଚାଳିତ ତà­à¬°à­à¬Ÿà¬¿ ନିବାରଣ ସାଧନ"
@@ -252,8 +253,8 @@ msgid ""
"then use Refresh button to regenerate the backtrace."
msgstr ""
"ଖବର କରିବା ପà­à¬°à¬•à­à¬°à¬¿à­Ÿà¬¾à¬•à­ ନିଷà­à¬•à­à¬°à¬¿à­Ÿ କରାଯାଇଛି କାରଣ ବà­à­Ÿà¬¾à¬•à¬Ÿà­à¬°à­‡à¬¸à¬Ÿà¬¿ ବà­à­Ÿà¬¬à¬¹à¬¾à¬° ଉପଯୋଗୀ ନà­à¬¹à¬à¥¤\n"
-"ଦୟାକରି ତà­à¬°à­à¬Ÿà¬¿ ନିବାରଣ ସୂଚନାକୠà¬à¬¹à¬¿ ନିରà­à¬¦à­à¬¦à­‡à¬¶à¬•à­ ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରି ହସà­à¬¤à¬•à­ƒà¬¤ ଭାବରେ ସà­à¬¥à¬¾à¬ªà¬¨ କରନà­à¬¤à­:<span color=\"blue\"> "
-"debuginfo-install %s </span>\n"
+"ଦୟାକରି ତà­à¬°à­à¬Ÿà¬¿ ନିବାରଣ ସୂଚନାକୠà¬à¬¹à¬¿ ନିରà­à¬¦à­à¬¦à­‡à¬¶à¬•à­ ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରି ହସà­à¬¤à¬•à­ƒà¬¤ ଭାବରେ ସà­à¬¥à¬¾à¬ªà¬¨ କରନà­à¬¤à­:<span "
+"color=\"blue\"> debuginfo-install %s </span>\n"
"ତାପରେ ବà­à­Ÿà¬¾à¬•à¬Ÿà­à¬°à­‡à¬¸à¬•à­ ପà­à¬¨à¬ƒà¬¨à¬¿à¬°à­à¬®à¬¾à¬£ କରିବା ପାଇଠସତେଜନ କରିବା ବଟନକୠବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରନà­à¬¤à­à¥¤"
#: ../src/Gui/CCReporterDialog.py:221
@@ -265,8 +266,8 @@ msgid ""
"The bactrace is incomplete, please make sure you provide good steps to "
"reproduce."
msgstr ""
-"ବà­à­Ÿà¬¾à¬•à¬Ÿà­à¬°à­‡à¬¸à¬Ÿà¬¿ ସମà­à¬ªà­‚ରà­à¬£à­à¬£ ହୋଇନାହିà¬, ଦୟାକରି ନିଶà­à¬šà¬¿à¬¤ କରନà­à¬¤à­ ଯେ ଆପଣ ପà­à¬¨à¬ƒ ଉତà­à¬ªà¬¾à¬¦à¬¨ କରିବା ପାଇଠ"
-"ଉତà­à¬¤à¬® ପଦକà­à¬·à­‡à¬ª ପà­à¬°à¬¦à¬¾à¬¨ କରିଛନà­à¬¤à¬¿à¥¤"
+"ବà­à­Ÿà¬¾à¬•à¬Ÿà­à¬°à­‡à¬¸à¬Ÿà¬¿ ସମà­à¬ªà­‚ରà­à¬£à­à¬£ ହୋଇନାହିà¬, ଦୟାକରି ନିଶà­à¬šà¬¿à¬¤ କରନà­à¬¤à­ ଯେ ଆପଣ ପà­à¬¨à¬ƒ ଉତà­à¬ªà¬¾à¬¦à¬¨ କରିବା ପାଇଠଉତà­à¬¤à¬® "
+"ପଦକà­à¬·à­‡à¬ª ପà­à¬°à¬¦à¬¾à¬¨ କରିଛନà­à¬¤à¬¿à¥¤"
#: ../src/Gui/CCReporterDialog.py:272
#, python-format
@@ -440,20 +441,20 @@ msgstr "gtk-close"
msgid "gtk-remove"
msgstr "gtk-remove"
+#: ../src/Gui/abrt.desktop.in.h:2
+msgid "View and report application crashes"
+msgstr "ପà­à¬°à­Ÿà­‹à¬— ବିନାଶକୠଦେଖନà­à¬¤à­ à¬à¬¬à¬‚ ଖବର କରନà­à¬¤à­"
+
#: ../src/Applet/Applet.cpp:79
#, c-format
msgid "A crash in package %s has been detected"
msgstr "ପà­à­Ÿà¬¾à¬•à­‡à¬œ %s ରେ ଗୋଟିଠବିନାଶ ଚିହà­à¬¨à¬¾à¬ªà¬¡à¬¼à¬¿à¬›à¬¿"
-#: ../src/Applet/Applet.cpp:138
-msgid "ABRT service has been started"
-msgstr "ABRT ସରà­à¬­à¬¿à¬¸ ଆରମà­à¬­ ହୋଇସାରିଛି"
-
-#: ../src/Applet/Applet.cpp:140 ../src/Applet/Applet.cpp:254
+#: ../src/Applet/Applet.cpp:253
msgid "ABRT service is not running"
msgstr "ABRT ସରà­à¬­à¬¿à¬¸à¬Ÿà¬¿ ଚାଲà­à¬¨à¬¾à¬¹à¬¿à¬"
-#: ../src/Applet/CCApplet.cpp:185
+#: ../src/Applet/CCApplet.cpp:196
msgid "Warning"
msgstr "ଚେତାବନୀ"
@@ -535,14 +536,10 @@ msgstr "ତà­à¬°à­à¬Ÿà¬¿à¬¨à¬¿à¬¬à¬¾à¬°à¬£ ସୂଚନା ସà­à¬¥à¬¾à¬ªà¬¨à
msgid "Creating and submitting a report..."
msgstr "ବିବରଣୀ ନିରà­à¬®à¬¾à¬£ କରି ଦାଖଲ କରà­à¬…ଛି..."
-#: ../lib/Plugins/Logger.cpp:65 ../lib/Plugins/Mailx.cpp:124
+#: ../lib/Plugins/Logger.cpp:65
msgid "Creating a report..."
msgstr "ବିବରଣୀ ନିରà­à¬®à¬¾à¬£ କରà­à¬…ଛି..."
-#: ../lib/Plugins/RunApp.cpp:64
-msgid "Executing RunApp plugin..."
-msgstr "RunApp ପà­à¬²à¬—ଇନକୠନିଷà­à¬ªà¬¾à¬¦à¬¨ କରà­à¬…ଛି..."
-
#: ../lib/Plugins/FileTransfer.cpp:63 ../lib/Plugins/FileTransfer.cpp:384
msgid "FileTransfer: URL not specified"
msgstr "ଫାଇଲ ପରିବହନ: URL ଉଲà­à¬²à­‡à¬– କରାହୋଇନାହିà¬"
@@ -570,20 +567,20 @@ msgstr "ଗୋଟିଠଅଭିଲେଖ ନିରà­à¬®à¬¾à¬£ କରି ପà¬
msgid "Creating kernel oops crash reports..."
msgstr "କରà­à¬£à­à¬£à¬² oops ନଷà­à¬Ÿ ବିବରଣୀଗà­à¬¡à¬¼à¬¿à¬•à­ ନିରà­à¬®à¬¾à¬£ କରà­à¬…ଛି..."
-#: ../lib/Plugins/Mailx.cpp:109
+#: ../lib/Plugins/Mailx.cpp:163
msgid "Sending an email..."
msgstr "ଗୋଟିଠଇମେଲ ପଠାଉଅଛି..."
-#: ../lib/Plugins/SOSreport.cpp:100
+#: ../lib/Plugins/SOSreport.cpp:69
msgid "Executing SOSreport plugin..."
msgstr "SOSreport ପà­à¬²à¬—ଇନକୠନିଷà­à¬ªà¬¾à¬¦à¬¨ କରà­à¬…ଛି..."
-#: ../lib/Plugins/SOSreport.cpp:122
+#: ../lib/Plugins/SOSreport.cpp:91
#, c-format
msgid "running sosreport: %s"
msgstr "sosreport ଚାଲà­à¬…ଛି: %s"
-#: ../lib/Plugins/SOSreport.cpp:137
+#: ../lib/Plugins/SOSreport.cpp:95
msgid "done running sosreport"
msgstr "sosreport ଚଲାଇବା ସମାପà­à¬¤ ହେଲା"
diff --git a/po/pl.po b/po/pl.po
index a27f0811..c97f69bf 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: pl\n"
"Report-Msgid-Bugs-To: jmoskovc@redhat.com\n"
-"POT-Creation-Date: 2009-11-09 23:17+0000\n"
-"PO-Revision-Date: 2009-11-10 00:19+0100\n"
+"POT-Creation-Date: 2009-11-16 16:28+0000\n"
+"PO-Revision-Date: 2009-11-16 17:29+0100\n"
"Last-Translator: Piotr DrÄ…g <piotrdrag@gmail.com>\n"
"Language-Team: Polish <fedora-trans-pl@redhat.com>\n"
"MIME-Version: 1.0\n"
@@ -81,7 +81,7 @@ msgstr "<span color=\"white\">Opis</span>"
msgid "About ABRT"
msgstr "Informacje o ABRT"
-#: ../src/Gui/ccgui.glade.h:6
+#: ../src/Gui/ccgui.glade.h:6 ../src/Gui/abrt.desktop.in.h:1
msgid "Automatic Bug Reporting Tool"
msgstr "Narzędzie do automatycznego zgłaszania błędów"
@@ -438,24 +438,24 @@ msgstr "gtk-close"
msgid "gtk-remove"
msgstr "gtk-remove"
+#: ../src/Gui/abrt.desktop.in.h:2
+msgid "View and report application crashes"
+msgstr "Wyświetlanie i zgłaszanie awarii aplikacji"
+
#: ../src/Applet/Applet.cpp:79
#, c-format
msgid "A crash in package %s has been detected"
msgstr "Wykryto awariÄ™ pakietu %s"
-#: ../src/Applet/Applet.cpp:138
-msgid "ABRT service has been started"
-msgstr "Usługa ABRT została uruchomiona"
-
-#: ../src/Applet/Applet.cpp:140 ../src/Applet/Applet.cpp:254
+#: ../src/Applet/Applet.cpp:253
msgid "ABRT service is not running"
msgstr "Usługa ABRT nie jest uruchomiona"
-#: ../src/Applet/CCApplet.cpp:185
+#: ../src/Applet/CCApplet.cpp:189
msgid "Warning"
msgstr "Ostrzeżenie"
-#: ../src/Daemon/Daemon.cpp:519
+#: ../src/Daemon/Daemon.cpp:520
msgid ""
"Report size exceeded the quota. Please check system's MaxCrashReportsSize "
"value in abrt.conf."
@@ -463,37 +463,37 @@ msgstr ""
"Wielkość raportu przekroczyła dozwolone ograniczenie. Proszę sprawdzić "
"wartość zmiennej MaxCrashReportsSize w pliku abrt.conf"
-#: ../lib/Plugins/Bugzilla.cpp:240
+#: ../lib/Plugins/Bugzilla.cpp:209
#, c-format
msgid "Bug is already reported: %i"
msgstr "Błąd został już wcześniej zgłoszony: %i"
-#: ../lib/Plugins/Bugzilla.cpp:302
+#: ../lib/Plugins/Bugzilla.cpp:271
#, c-format
msgid "New bug id: %i"
msgstr "Identyfikator nowego błędu: %i"
-#: ../lib/Plugins/Bugzilla.cpp:395
+#: ../lib/Plugins/Bugzilla.cpp:364
msgid "Checking for duplicates..."
msgstr "Sprawdzanie duplikatów..."
-#: ../lib/Plugins/Bugzilla.cpp:398
+#: ../lib/Plugins/Bugzilla.cpp:367
msgid "Logging into bugzilla..."
msgstr "Logowanie do Bugzilli..."
-#: ../lib/Plugins/Bugzilla.cpp:402
+#: ../lib/Plugins/Bugzilla.cpp:371
msgid "Empty login and password. Please check Bugzilla.conf"
msgstr "Pola login i hasło są puste. Proszę sprawdzić plik Bugzilla.conf"
-#: ../lib/Plugins/Bugzilla.cpp:408
+#: ../lib/Plugins/Bugzilla.cpp:377
msgid "Checking CC..."
msgstr "Sprawdzanie listy CC..."
-#: ../lib/Plugins/Bugzilla.cpp:417
+#: ../lib/Plugins/Bugzilla.cpp:386
msgid "Creating new bug..."
msgstr "Dodawanie nowego błędu..."
-#: ../lib/Plugins/Bugzilla.cpp:421
+#: ../lib/Plugins/Bugzilla.cpp:390
msgid "Logging out..."
msgstr "Wylogowywanie..."
@@ -533,15 +533,11 @@ msgstr "Pomijanie instalacji pakietu debuginfo"
msgid "Creating and submitting a report..."
msgstr "Tworzenie i wysyłanie raportu..."
-#: ../lib/Plugins/Logger.cpp:57 ../lib/Plugins/Mailx.cpp:124
+#: ../lib/Plugins/Logger.cpp:65
msgid "Creating a report..."
msgstr "Tworzenie raportu..."
-#: ../lib/Plugins/RunApp.cpp:64
-msgid "Executing RunApp plugin..."
-msgstr "Wykonywanie wtyczki RunApp..."
-
-#: ../lib/Plugins/FileTransfer.cpp:63 ../lib/Plugins/FileTransfer.cpp:381
+#: ../lib/Plugins/FileTransfer.cpp:63 ../lib/Plugins/FileTransfer.cpp:384
msgid "FileTransfer: URL not specified"
msgstr "Wtyczka przesyłania plików: nie podano adresu URL"
@@ -568,19 +564,19 @@ msgstr "Nie można utworzyć i wysłać archiwum %s"
msgid "Creating kernel oops crash reports..."
msgstr "Tworzenie raportów awarii \"kernel oops\""
-#: ../lib/Plugins/Mailx.cpp:109
+#: ../lib/Plugins/Mailx.cpp:163
msgid "Sending an email..."
msgstr "Wysłanie wiadomości e-mail..."
-#: ../lib/Plugins/SOSreport.cpp:100
+#: ../lib/Plugins/SOSreport.cpp:69
msgid "Executing SOSreport plugin..."
msgstr "Wykonywanie wtyczki SOSreport..."
-#: ../lib/Plugins/SOSreport.cpp:122
+#: ../lib/Plugins/SOSreport.cpp:91
#, c-format
msgid "running sosreport: %s"
msgstr "wykonywanie sosreport: %s"
-#: ../lib/Plugins/SOSreport.cpp:137
+#: ../lib/Plugins/SOSreport.cpp:95
msgid "done running sosreport"
msgstr "ukończono wykonywanie sosreport"
diff --git a/po/pt.po b/po/pt.po
index 2c3741d6..94823076 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: abrt\n"
"Report-Msgid-Bugs-To: jmoskovc@redhat.com\n"
-"POT-Creation-Date: 2009-11-09 20:50+0000\n"
+"POT-Creation-Date: 2009-11-17 14:56+0000\n"
"PO-Revision-Date: \n"
"Last-Translator: Rui Gouveia <rui.gouveia@globaltek.pt>\n"
"Language-Team: PT <fedora-trans-pt@redhat.com>\n"
@@ -81,6 +81,7 @@ msgid "About ABRT"
msgstr "Acerca do ABRT"
#: ../src/Gui/ccgui.glade.h:6
+#: ../src/Gui/abrt.desktop.in.h:1
msgid "Automatic Bug Reporting Tool"
msgstr "Ferramenta Automática para Reportar Erros"
@@ -412,59 +413,58 @@ msgstr "gtk-close"
msgid "gtk-remove"
msgstr "gtk-remove"
+#: ../src/Gui/abrt.desktop.in.h:2
+msgid "View and report application crashes"
+msgstr "Ver e reportar crashes de aplicações"
+
#: ../src/Applet/Applet.cpp:79
#, c-format
msgid "A crash in package %s has been detected"
msgstr "Foi detectado um crash no pacote %s"
-#: ../src/Applet/Applet.cpp:138
-msgid "ABRT service has been started"
-msgstr "O serviço ABRT foi iniciado"
-
-#: ../src/Applet/Applet.cpp:140
-#: ../src/Applet/Applet.cpp:254
+#: ../src/Applet/Applet.cpp:253
msgid "ABRT service is not running"
msgstr "O serviço ABRT não está a correr"
-#: ../src/Applet/CCApplet.cpp:185
+#: ../src/Applet/CCApplet.cpp:196
msgid "Warning"
msgstr "Aviso"
-#: ../src/Daemon/Daemon.cpp:519
+#: ../src/Daemon/Daemon.cpp:520
msgid "Report size exceeded the quota. Please check system's MaxCrashReportsSize value in abrt.conf."
msgstr "O relatório excedeu a cota. Por favor, verifique o valor MaxCrashReportsSize em abrt.conf."
-#: ../lib/Plugins/Bugzilla.cpp:240
+#: ../lib/Plugins/Bugzilla.cpp:209
#, c-format
msgid "Bug is already reported: %i"
msgstr "Erro já foi reportado: %i"
-#: ../lib/Plugins/Bugzilla.cpp:302
+#: ../lib/Plugins/Bugzilla.cpp:271
#, c-format
msgid "New bug id: %i"
msgstr "Novo ID de erro: %i"
-#: ../lib/Plugins/Bugzilla.cpp:395
+#: ../lib/Plugins/Bugzilla.cpp:364
msgid "Checking for duplicates..."
msgstr "A procurar por duplicados..."
-#: ../lib/Plugins/Bugzilla.cpp:398
+#: ../lib/Plugins/Bugzilla.cpp:367
msgid "Logging into bugzilla..."
msgstr "A iniciar sessão no bugzilla..."
-#: ../lib/Plugins/Bugzilla.cpp:402
+#: ../lib/Plugins/Bugzilla.cpp:371
msgid "Empty login and password. Please check Bugzilla.conf"
msgstr "Nome de utilizador e senha vazios. Por favor, verifique Bugzilla.conf"
-#: ../lib/Plugins/Bugzilla.cpp:408
+#: ../lib/Plugins/Bugzilla.cpp:377
msgid "Checking CC..."
msgstr "A verificar CC..."
-#: ../lib/Plugins/Bugzilla.cpp:417
+#: ../lib/Plugins/Bugzilla.cpp:386
msgid "Creating new bug..."
msgstr "A criar novo erro..."
-#: ../lib/Plugins/Bugzilla.cpp:421
+#: ../lib/Plugins/Bugzilla.cpp:390
msgid "Logging out..."
msgstr "A Terminar Sessão..."
@@ -506,17 +506,12 @@ msgstr "A passar à frente a instalação do debuginfo"
msgid "Creating and submitting a report..."
msgstr "A criar e enviar relatório..."
-#: ../lib/Plugins/Logger.cpp:57
-#: ../lib/Plugins/Mailx.cpp:124
+#: ../lib/Plugins/Logger.cpp:65
msgid "Creating a report..."
msgstr "A criar relatório..."
-#: ../lib/Plugins/RunApp.cpp:64
-msgid "Executing RunApp plugin..."
-msgstr "A executar plugin RunApp..."
-
#: ../lib/Plugins/FileTransfer.cpp:63
-#: ../lib/Plugins/FileTransfer.cpp:381
+#: ../lib/Plugins/FileTransfer.cpp:384
msgid "FileTransfer: URL not specified"
msgstr "FileTransfer: URL não especificado"
@@ -543,23 +538,27 @@ msgstr "Não foi possível criar e enviar um arquivo %s"
msgid "Creating kernel oops crash reports..."
msgstr "A criar relatório oops de crash do kernel..."
-#: ../lib/Plugins/Mailx.cpp:109
+#: ../lib/Plugins/Mailx.cpp:163
msgid "Sending an email..."
msgstr "A enviar E-mail..."
-#: ../lib/Plugins/SOSreport.cpp:100
+#: ../lib/Plugins/SOSreport.cpp:69
msgid "Executing SOSreport plugin..."
msgstr "A executar plugin do SOSreport..."
-#: ../lib/Plugins/SOSreport.cpp:122
+#: ../lib/Plugins/SOSreport.cpp:91
#, c-format
msgid "running sosreport: %s"
msgstr "A executar sosreport: %s"
-#: ../lib/Plugins/SOSreport.cpp:137
+#: ../lib/Plugins/SOSreport.cpp:95
msgid "done running sosreport"
msgstr "execução do sosreport terminou"
+#~ msgid "ABRT service has been started"
+#~ msgstr "O serviço ABRT foi iniciado"
+#~ msgid "Executing RunApp plugin..."
+#~ msgstr "A executar plugin RunApp..."
#~ msgid "gtk-refresh"
#~ msgstr "gtk-refresh"
#~ msgid "Binary file %s will not be reported."
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 6a77a961..2ae0488e 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: ABRT\n"
"Report-Msgid-Bugs-To: jmoskovc@redhat.com\n"
-"POT-Creation-Date: 2009-11-09 23:24+0000\n"
-"PO-Revision-Date: 2009-11-10 00:46-0300\n"
+"POT-Creation-Date: 2009-11-15 20:29+0000\n"
+"PO-Revision-Date: 2009-11-15 19:59-0300\n"
"Last-Translator: Igor Pires Soares <igor@projetofedora.org>\n"
"Language-Team: Brazilian Portuguese <fedora-trans-pt_br@redhat.com>\n"
"MIME-Version: 1.0\n"
@@ -86,6 +86,7 @@ msgid "About ABRT"
msgstr "Sobre o ABRT"
#: ../src/Gui/ccgui.glade.h:6
+#: ../src/Gui/abrt.desktop.in.h:1
msgid "Automatic Bug Reporting Tool"
msgstr "Ferramenta para o relato automático de erros"
@@ -417,6 +418,10 @@ msgstr "gtk-close"
msgid "gtk-remove"
msgstr "gtk-remove"
+#: ../src/Gui/abrt.desktop.in.h:2
+msgid "View and report application crashes"
+msgstr "Veja e relate travamentos de aplicativos"
+
#: ../src/Applet/Applet.cpp:79
#, c-format
msgid "A crash in package %s has been detected"
@@ -435,41 +440,41 @@ msgstr "O serviço do ABRT não está em execução"
msgid "Warning"
msgstr "Aviso"
-#: ../src/Daemon/Daemon.cpp:519
+#: ../src/Daemon/Daemon.cpp:520
msgid "Report size exceeded the quota. Please check system's MaxCrashReportsSize value in abrt.conf."
msgstr "O tamanho do relatório excedeu a cota. Por favor, verifique o valor MaxCrashReportsSize do sistema no abrt.conf."
-#: ../lib/Plugins/Bugzilla.cpp:240
+#: ../lib/Plugins/Bugzilla.cpp:209
#, c-format
msgid "Bug is already reported: %i"
msgstr "O erro já foi relatado: %i"
-#: ../lib/Plugins/Bugzilla.cpp:302
+#: ../lib/Plugins/Bugzilla.cpp:271
#, c-format
msgid "New bug id: %i"
msgstr "Novo id do erro: %i"
-#: ../lib/Plugins/Bugzilla.cpp:395
+#: ../lib/Plugins/Bugzilla.cpp:364
msgid "Checking for duplicates..."
msgstr "Verificando duplicatas..."
-#: ../lib/Plugins/Bugzilla.cpp:398
+#: ../lib/Plugins/Bugzilla.cpp:367
msgid "Logging into bugzilla..."
msgstr "Autenticando no bugzilla..."
-#: ../lib/Plugins/Bugzilla.cpp:402
+#: ../lib/Plugins/Bugzilla.cpp:371
msgid "Empty login and password. Please check Bugzilla.conf"
msgstr "Nome de usuário e senha vazios. Por favor, verifique o Bugzilla.conf"
-#: ../lib/Plugins/Bugzilla.cpp:408
+#: ../lib/Plugins/Bugzilla.cpp:377
msgid "Checking CC..."
msgstr "Verificando CC..."
-#: ../lib/Plugins/Bugzilla.cpp:417
+#: ../lib/Plugins/Bugzilla.cpp:386
msgid "Creating new bug..."
msgstr "Criando novo erro..."
-#: ../lib/Plugins/Bugzilla.cpp:421
+#: ../lib/Plugins/Bugzilla.cpp:390
msgid "Logging out..."
msgstr "Encerrando sessão..."
@@ -511,17 +516,16 @@ msgstr "Pulando instalação do debuginfo"
msgid "Creating and submitting a report..."
msgstr "Criando e enviando um relatório..."
-#: ../lib/Plugins/Logger.cpp:57
-#: ../lib/Plugins/Mailx.cpp:124
+#: ../lib/Plugins/Logger.cpp:65
msgid "Creating a report..."
msgstr "Criando um relatório..."
-#: ../lib/Plugins/RunApp.cpp:64
+#: ../lib/Plugins/RunApp.cpp:35
msgid "Executing RunApp plugin..."
msgstr "Executando o plugin RunApp..."
#: ../lib/Plugins/FileTransfer.cpp:63
-#: ../lib/Plugins/FileTransfer.cpp:381
+#: ../lib/Plugins/FileTransfer.cpp:384
msgid "FileTransfer: URL not specified"
msgstr "FileTransfer: URL não especificada"
@@ -548,20 +552,20 @@ msgstr "Não foi possível criar e enviar o pacote %s"
msgid "Creating kernel oops crash reports..."
msgstr "Criando relatórios de oops do kernel no travamento..."
-#: ../lib/Plugins/Mailx.cpp:109
+#: ../lib/Plugins/Mailx.cpp:163
msgid "Sending an email..."
msgstr "Enviando email..."
-#: ../lib/Plugins/SOSreport.cpp:100
+#: ../lib/Plugins/SOSreport.cpp:69
msgid "Executing SOSreport plugin..."
msgstr "Executando o plugin SOSreport..."
-#: ../lib/Plugins/SOSreport.cpp:122
+#: ../lib/Plugins/SOSreport.cpp:91
#, c-format
msgid "running sosreport: %s"
msgstr "executando o sosreport: %s"
-#: ../lib/Plugins/SOSreport.cpp:137
+#: ../lib/Plugins/SOSreport.cpp:95
msgid "done running sosreport"
msgstr "Execução do sosreport realizada"
diff --git a/po/ta.po b/po/ta.po
index d34893c9..8c1c1bd7 100644
--- a/po/ta.po
+++ b/po/ta.po
@@ -2,13 +2,14 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
+#: ../src/Gui/CCReporterDialog.py:191
# I. Felix <ifelix@redhat.com>, 2009.
msgid ""
msgstr ""
"Project-Id-Version: abrt.master.ta\n"
"Report-Msgid-Bugs-To: jmoskovc@redhat.com\n"
-"POT-Creation-Date: 2009-09-29 14:46+0200\n"
-"PO-Revision-Date: 2009-09-23 22:37+0530\n"
+"POT-Creation-Date: 2009-11-12 09:30+0000\n"
+"PO-Revision-Date: 2009-11-13 15:49+0530\n"
"Last-Translator: I. Felix <ifelix@redhat.com>\n"
"Language-Team: Tamil <fedora-trans-ta@redhat.com>\n"
"MIME-Version: 1.0\n"
@@ -23,40 +24,45 @@ msgstr ""
"\n"
"\n"
"\n"
+"\n"
-#: src/Gui/ABRTExceptions.py:4
+#: ../src/Gui/ABRTExceptions.py:6
msgid "Another client is already running, trying to wake it."
msgstr "வேற௠கிளையன௠à®à®±à¯à®•à®©à®µà¯‡ இயஙà¯à®•à®¿à®•à¯à®•à¯Šà®£à¯à®Ÿà®¿à®°à¯à®•à¯à®•à®¿à®±à®¤à¯, அதனை எழà¯à®ªà¯à®ª à®®à¯à®¯à®±à¯à®šà®¿à®•à¯à®•à®¿à®±à®¤à¯."
-#: src/Gui/ABRTExceptions.py:10
+#: ../src/Gui/ABRTExceptions.py:13
msgid "Got unexpected data from daemon (is the database properly updated?)."
msgstr "டீமானà¯à®•à¯à®•à¯ எதிரà¯à®ªà®¾à®°à®¾à®¤ தரவ௠பெறபà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ (தரவà¯à®¤à¯à®¤à®³à®®à¯ சரியாக மேமà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à®¾?)."
-#: src/Gui/ABRTPlugin.py:26
+#: ../src/Gui/ABRTPlugin.py:55
msgid "Analyzer plugins"
msgstr "ஆயà¯à®µà®¿ கூடà¯à®¤à®²à¯ இணைபà¯à®ªà¯à®•à®³à¯"
-#: src/Gui/ABRTPlugin.py:27
+#: ../src/Gui/ABRTPlugin.py:56
msgid "Action plugins"
msgstr "செயல௠கூடà¯à®¤à®²à¯ இணைபà¯à®ªà¯à®•à®³à¯"
-#: src/Gui/ABRTPlugin.py:28
+#: ../src/Gui/ABRTPlugin.py:57
msgid "Reporter plugins"
msgstr "ரிபà¯à®ªà¯‹à®°à¯à®Ÿà®°à¯ கூடà¯à®¤à®²à¯ இணைபà¯à®ªà¯à®•à®³à¯"
-#: src/Gui/ABRTPlugin.py:29
+#: ../src/Gui/ABRTPlugin.py:58
msgid "Database plugins"
msgstr "தரவà¯à®¤à¯à®¤à®³ கூடà¯à®¤à®²à¯ இணைபà¯à®ªà¯à®•à®³à¯"
-#: src/Gui/CCDBusBackend.py:143
-msgid "Can't connect to dbus"
-msgstr "dbusஉடன௠இணைகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ"
+#: ../src/Gui/ABRTPlugin.py:97
+msgid "Plugin name is not set, can't load it's settings"
+msgstr "கூடà¯à®¤à®²à¯ இணைபà¯à®ªà¯ பெயர௠அமைகà¯à®•à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ, அதன௠அமைவà¯à®•à®³à¯ˆ à®à®±à¯à®± à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ"
+
+#: ../src/Gui/CCDBusBackend.py:74 ../src/Gui/CCDBusBackend.py:97
+msgid "Can't connect to system dbus"
+msgstr "கணினி dbusஉடன௠இணைகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ"
-#: src/Gui/CCDBusBackend.py:169
-msgid "Please check if abrt daemon is running."
+#: ../src/Gui/CCDBusBackend.py:100 ../src/Gui/CCDBusBackend.py:103
+msgid "Please check if abrt daemon is running"
msgstr "abrt டீமான௠இயஙà¯à®•à®¿à®©à®¾à®²à¯ சோதிகà¯à®•à®µà¯à®®à¯."
-#: src/Gui/CCDBusBackend.py:187
+#: ../src/Gui/CCDBusBackend.py:155
msgid ""
"Daemon did't return valid report info\n"
"Debuginfo is missing?"
@@ -64,27 +70,47 @@ msgstr ""
"டீமான௠சரியான அறிகà¯à®•à¯ˆ தகவலை கொடà¯à®•à¯à®•à®µà®¿à®²à¯à®²à¯ˆ\n"
"Debuginfo விடà¯à®ªà®Ÿà¯à®Ÿà®¤à®¾?"
-#: src/Gui/ccgui.glade:6
-msgid "Please wait.."
-msgstr "காதà¯à®¤à®¿à®°à¯à®•à¯à®•à®µà¯à®®à¯.."
-
-#: src/Gui/ccgui.glade:16
-msgid "Working..."
-msgstr "வேலை செயà¯à®•à®¿à®±à®¤à¯..."
-
-#: src/Gui/ccgui.glade:49
+#: ../src/Gui/ccgui.glade.h:1 ../src/Gui/report.glade.h:1
msgid " "
msgstr " "
-#: src/Gui/ccgui.glade:68
+#: ../src/Gui/ccgui.glade.h:2
+msgid "(C) 2009 Red Hat, Inc."
+msgstr "(C) 2009 Red Hat, Inc."
+
+#: ../src/Gui/ccgui.glade.h:3 ../src/Gui/CCMainWindow.py:244
+msgid "<b>Not reported!</b>"
+msgstr "<b>அறிகà¯à®•à¯ˆà®¯à®¿à®Ÿà®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ!</b>"
+
+#: ../src/Gui/ccgui.glade.h:4
+msgid "<span color=\"white\">Description</span>"
+msgstr "<span color=\"white\">விளகà¯à®•à®®à¯</span>"
+
+#: ../src/Gui/ccgui.glade.h:5
msgid "About ABRT"
msgstr "ABRT பறà¯à®±à®¿"
-#: src/Gui/ccgui.glade:74
-msgid "(C) 2009 Red Hat, Inc."
-msgstr "(C) 2009 Red Hat, Inc."
+#: ../src/Gui/ccgui.glade.h:6
+msgid "Automatic Bug Reporting Tool"
+msgstr "தானியகà¯à®• பிழை அறிகà¯à®•à¯ˆà®¯à®¿à®Ÿà¯à®®à¯ கரà¯à®µà®¿"
-#: src/Gui/ccgui.glade:75
+#: ../src/Gui/ccgui.glade.h:7
+msgid "Delete"
+msgstr "நீகà¯à®•à¯"
+
+#: ../src/Gui/ccgui.glade.h:8
+msgid "Please wait.."
+msgstr "காதà¯à®¤à®¿à®°à¯à®•à¯à®•à®µà¯à®®à¯.."
+
+#: ../src/Gui/ccgui.glade.h:9
+msgid "Plugins"
+msgstr "கூடà¯à®¤à®²à¯ இணைபà¯à®ªà¯à®•à®³à¯"
+
+#: ../src/Gui/ccgui.glade.h:10 ../src/Gui/report.glade.h:4
+msgid "Report"
+msgstr "அறிகà¯à®•à¯ˆ"
+
+#: ../src/Gui/ccgui.glade.h:11
msgid ""
"This program is free software; you can redistribute it and/or modify it "
"under the terms of the GNU General Public License as published by the Free "
@@ -112,68 +138,57 @@ msgstr ""
"You should have received a copy of the GNU General Public License along with "
"this program. If not, see <http://www.gnu.org/licenses/>."
-#: src/Gui/ccgui.glade:106
-msgid "Automatic Bug Reporting Tool"
-msgstr "தானியகà¯à®• பிழை அறிகà¯à®•à¯ˆà®¯à®¿à®Ÿà¯à®®à¯ கரà¯à®µà®¿"
-
-#: src/Gui/ccgui.glade:118
-msgid "_File"
-msgstr "கோபà¯à®ªà¯ (_F)"
+#: ../src/Gui/ccgui.glade.h:16
+msgid "Working..."
+msgstr "வேலை செயà¯à®•à®¿à®±à®¤à¯..."
-#: src/Gui/ccgui.glade:138
+#: ../src/Gui/ccgui.glade.h:17
msgid "_Edit"
msgstr "திரà¯à®¤à¯à®¤à®µà¯à®®à¯ (_E)"
-#: src/Gui/ccgui.glade:146
-msgid "Plugins"
-msgstr "கூடà¯à®¤à®²à¯ இணைபà¯à®ªà¯à®•à®³à¯"
+#: ../src/Gui/ccgui.glade.h:18
+msgid "_File"
+msgstr "கோபà¯à®ªà¯ (_F)"
-#: src/Gui/ccgui.glade:164
+#: ../src/Gui/ccgui.glade.h:19
msgid "_Help"
msgstr "உதவி (_H)"
-#: src/Gui/ccgui.glade:194 src/Gui/ccgui.glade:195
-msgid "Delete"
-msgstr "நீகà¯à®•à¯"
-
-#: src/Gui/ccgui.glade:207 src/Gui/ccgui.glade:208 src/Gui/ccgui.glade:335
-#: src/Gui/report.glade:7 src/Gui/report.glade:24
-msgid "Report"
-msgstr "அறிகà¯à®•à¯ˆ"
-
-#: src/Gui/ccgui.glade:255
-msgid "<span color=\"white\">Description</span>"
-msgstr "<span color=\"white\">விளகà¯à®•à®®à¯</span>"
-
-#: src/Gui/ccgui.glade:297 src/Gui/CCMainWindow.py:239
-msgid "<b>Not reported!</b>"
-msgstr "<b>அறிகà¯à®•à¯ˆà®¯à®¿à®Ÿà®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ!</b>"
-
-#: src/Gui/CCMainWindow.py:80
+#. add pixbuff separatelly
+#: ../src/Gui/CCMainWindow.py:80
msgid "Icon"
msgstr "சினà¯à®©à®®à¯"
-#: src/Gui/CCMainWindow.py:88
+#: ../src/Gui/CCMainWindow.py:88
msgid "Package"
msgstr "தொகà¯à®ªà¯à®ªà¯"
-#: src/Gui/CCMainWindow.py:89
+#: ../src/Gui/CCMainWindow.py:89
msgid "Application"
msgstr "பயனà¯à®ªà®¾à®Ÿà¯"
-#: src/Gui/CCMainWindow.py:90
+#: ../src/Gui/CCMainWindow.py:90
msgid "Date"
msgstr "தேதி"
-#: src/Gui/CCMainWindow.py:91
-msgid "Crash Rate"
+#: ../src/Gui/CCMainWindow.py:91
+msgid "Crash count"
msgstr "சேதம௠விகிதமà¯"
-#: src/Gui/CCMainWindow.py:93
+#: ../src/Gui/CCMainWindow.py:93
msgid "User"
msgstr "பயனரà¯"
-#: src/Gui/CCMainWindow.py:177
+#: ../src/Gui/CCMainWindow.py:160
+#, python-format
+msgid ""
+"Can't show the settings dialog\n"
+"%s"
+msgstr ""
+"அமைவà¯à®•à®³à¯ உரையாடலை காடà¯à®Ÿ à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ\n"
+"%s"
+
+#: ../src/Gui/CCMainWindow.py:181
#, python-format
msgid ""
"Unable to finish current task!\n"
@@ -182,7 +197,7 @@ msgstr ""
"நடபà¯à®ªà¯ பணியை à®®à¯à®Ÿà®¿à®•à¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ!\n"
"%s"
-#: src/Gui/CCMainWindow.py:194
+#: ../src/Gui/CCMainWindow.py:198
#, python-format
msgid ""
"Error while loading the dumplist, please check if abrt daemon is running\n"
@@ -191,16 +206,16 @@ msgstr ""
"இநà¯à®¤ dumplistà® à®à®±à¯à®±à¯à®®à¯ போத௠பிழை, abrt டீமான௠இயஙà¯à®•à¯à®•à®¿à®±à®¤à®¾ என பாரà¯à®•à¯à®•à®µà¯à®®à¯\n"
" %s"
-#: src/Gui/CCMainWindow.py:204
+#: ../src/Gui/CCMainWindow.py:208
#, python-format
msgid "Can't get username for uid %s"
msgstr "uid %sகà¯à®•à¯ பயனரà¯à®ªà¯†à®¯à®°à¯ˆ பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ"
-#: src/Gui/CCMainWindow.py:231
+#: ../src/Gui/CCMainWindow.py:236
msgid "<b>This crash has been reported, you can find the report(s) at:</b>\n"
msgstr "<b>இநà¯à®¤ சேதம௠அறிகà¯à®•à¯ˆà®¯à®¿à®Ÿà®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯, நீஙà¯à®•à®³à¯ அறிகà¯à®•à¯ˆ(களை) இதில௠தேடலாமà¯:</b>\n"
-#: src/Gui/CCMainWindow.py:291
+#: ../src/Gui/CCMainWindow.py:296
msgid ""
"Unable to get report!\n"
"Debuginfo is missing?"
@@ -208,7 +223,7 @@ msgstr ""
"அறிகà¯à®•à¯ˆà®¯à¯ˆ பெற à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ!\n"
"Debuginfo விடà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à®¾?"
-#: src/Gui/CCMainWindow.py:306
+#: ../src/Gui/CCMainWindow.py:314
#, python-format
msgid ""
"Reporting failed!\n"
@@ -217,12 +232,41 @@ msgstr ""
"அறிகà¯à®•à¯ˆà®¯à®¿à®Ÿà¯à®¤à®²à¯ தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯!\n"
"%s"
-#: src/Gui/CCMainWindow.py:338
+#: ../src/Gui/CCMainWindow.py:333 ../src/Gui/CCMainWindow.py:360
#, python-format
msgid "Error getting the report: %s"
msgstr "அறிகà¯à®•à¯ˆà®¯à¯ˆ பெறà¯à®®à¯ போத௠பிழை: %s"
-#: src/Gui/CCReporterDialog.py:98
+#: ../src/Gui/CCReporterDialog.py:177
+msgid "Brief description how to reproduce this or what you did..."
+msgstr "இதனை மீணà¯à®Ÿà¯à®®à¯ உரà¯à®µà®¾à®•à¯à®•à¯à®µà®¤à®±à¯à®•à®¾à®© சà¯à®°à¯à®•à¯à®• விளகà¯à®•à®®à¯ அலà¯à®²à®¤à¯ நீஙà¯à®•à®³à¯ எனà¯à®© செயà¯à®¤à¯€à®°à¯à®•à®³à¯..."
+
+#: ../src/Gui/CCReporterDialog.py:219
+#, python-format
+msgid ""
+"Reporting disabled because the backtrace is unusable.\n"
+"Please try to install debuginfo manually using command:<span color=\"blue\"> "
+"debuginfo-install %s </span>\n"
+"then use Refresh button to regenerate the backtrace."
+msgstr ""
+"Reporting disabled because the backtrace is unusable.\n"
+"Please try to install debuginfo manually using command:<span color=\"blue\"> "
+"debuginfo-install %s </span>\n"
+"then use Refresh button to regenerate the backtrace."
+
+#: ../src/Gui/CCReporterDialog.py:221
+msgid "The bactrace is unusable, you can't report this!"
+msgstr "bactrace஠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤ à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ, இதனை நீஙà¯à®•à®³à¯ அறிகà¯à®•à¯ˆà®¯à®¿à®Ÿ à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯!"
+
+#: ../src/Gui/CCReporterDialog.py:227
+msgid ""
+"The bactrace is incomplete, please make sure you provide good steps to "
+"reproduce."
+msgstr ""
+"The bactrace is incomplete, please make sure you provide good steps to "
+"reproduce."
+
+#: ../src/Gui/CCReporterDialog.py:272
#, python-format
msgid ""
"<b>WARNING</b>, you're about to send data which might contain sensitive "
@@ -232,190 +276,186 @@ msgstr ""
"<b>எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ</b>, நீஙà¯à®•à®³à¯ அனà¯à®ªà¯à®ª இரà¯à®•à¯à®•à¯à®®à¯ தரவ௠சில உணரà¯à®µà®¾à®°à¯à®¨à¯à®¤ தகவலà¯à®•à®³à¯ˆ கொணà¯à®Ÿà®¿à®°à¯à®•à¯à®•à¯à®®à¯.\n"
"நீஙà¯à®•à®³à¯ <b>%s</b>஠அனà¯à®ªà¯à®ª வேணà¯à®Ÿà¯à®®à¯?\n"
-#: src/Gui/CCReporterDialog.py:111
-msgid "Brief description how to reproduce this or what you did..."
-msgstr "இதனை மீணà¯à®Ÿà¯à®®à¯ உரà¯à®µà®¾à®•à¯à®•à¯à®µà®¤à®±à¯à®•à®¾à®© சà¯à®°à¯à®•à¯à®• விளகà¯à®•à®®à¯ அலà¯à®²à®¤à¯ நீஙà¯à®•à®³à¯ எனà¯à®© செயà¯à®¤à¯€à®°à¯à®•à®³à¯..."
-
-#: src/Gui/dialogs.glade:7
+#: ../src/Gui/dialogs.glade.h:1
msgid "Report done"
msgstr "அறிகà¯à®•à¯ˆ à®®à¯à®Ÿà®¿à®¨à¯à®¤à®¤à¯"
-#: src/Gui/dialogs.glade:47 src/Gui/settings.glade:695
-#: src/Gui/settings.glade:785
+#: ../src/Gui/dialogs.glade.h:2 ../src/Gui/settings.glade.h:27
msgid "gtk-ok"
msgstr "gtk-ok"
-#: src/Gui/PluginSettingsUI.py:17
+#: ../src/Gui/PluginSettingsUI.py:18
msgid "Can't find PluginDialog widget in UI description!"
msgstr "PluginDialog விடà¯à®œà¯†à®Ÿà¯à®Ÿà¯ˆ UI விளகà¯à®•à®¤à¯à®¤à®¿à®²à¯ தேட à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ!"
-#: src/Gui/PluginSettingsUI.py:21
+#. we shouldn't get here, but just to be safe
+#: ../src/Gui/PluginSettingsUI.py:24
#, python-format
msgid "No UI for plugin %s"
msgstr "UI கூடà¯à®¤à®²à¯ இணைபà¯à®ªà¯ %sஇல௠இலà¯à®²à¯ˆ"
-#: src/Gui/PluginSettingsUI.py:38 src/Gui/PluginSettingsUI.py:64
+#: ../src/Gui/PluginSettingsUI.py:55 ../src/Gui/PluginSettingsUI.py:81
msgid "combo box is not implemented"
msgstr "காமà¯à®ªà¯‹ பெடà¯à®Ÿà®¿ செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ"
-#: src/Gui/PluginSettingsUI.py:47
+#: ../src/Gui/PluginSettingsUI.py:64
msgid "Nothing to hydrate!"
msgstr "hydrate செயà¯à®¯ ஒனà¯à®±à¯à®®à®¿à®²à¯à®²à¯ˆ!"
-#: src/Gui/report.glade:64
+#: ../src/Gui/report.glade.h:2
msgid "Comment"
msgstr "கà¯à®±à®¿à®ªà¯à®ªà¯"
-#: src/Gui/report.glade:104 src/Gui/settings.glade:682
-#: src/Gui/settings.glade:797
-msgid "gtk-cancel"
-msgstr "gtk-cancel"
+#: ../src/Gui/report.glade.h:3
+msgid "How to reproduce (in a few simple steps)"
+msgstr "எவà¯à®µà®¾à®±à¯ மறà¯à®‰à®±à¯à®ªà®¤à¯à®¤à®¿ செயà¯à®µà®¤à¯ (சில எளிய வழிமà¯à®±à¯ˆà®•à®³à®¿à®²à¯)"
-#: src/Gui/report.glade:119
+#: ../src/Gui/report.glade.h:5
msgid "Send"
msgstr "அனà¯à®ªà¯à®ªà¯"
-#: src/Gui/SettingsDialog.py:34 src/Gui/SettingsDialog.py:51
+#: ../src/Gui/SettingsDialog.py:33 ../src/Gui/SettingsDialog.py:50
msgid "<b>Select plugin</b>"
msgstr "<b>கூடà¯à®¤à®²à¯ இணைபà¯à®ªà¯ˆ தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯</b>"
-#: src/Gui/SettingsDialog.py:37
+#: ../src/Gui/SettingsDialog.py:36
msgid "<b>Select database backend</b>"
msgstr "<b>தரவà¯à®¤à¯à®¤à®³ பினà¯à®¤à®³à®¤à¯à®¤à¯ˆ தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯</b>"
-#: src/Gui/SettingsDialog.py:165
+#: ../src/Gui/SettingsDialog.py:165
msgid "Remove this job"
msgstr "இநà¯à®¤ பணியை நீகà¯à®•à¯"
-#: src/Gui/SettingsDialog.py:208
+#: ../src/Gui/SettingsDialog.py:208
msgid "Remove this action"
msgstr "இநà¯à®¤ செயலை நீகà¯à®•à¯"
-#: src/Gui/settings.glade:6
-msgid "Settings"
-msgstr "அமைவà¯à®•à®³à¯"
+#: ../src/Gui/settings.glade.h:1
+msgid "<b>Analyzer plugin</b>"
+msgstr "<b>ஆயà¯à®µà®¿ கூடà¯à®¤à®²à¯ இணைபà¯à®ªà¯à®•à®³à¯</b>"
-#: src/Gui/settings.glade:46 src/Gui/settings.glade:55
-#: src/Gui/settings.glade:107 src/Gui/settings.glade:120
-#: src/Gui/settings.glade:133
-msgid "Nothing selected"
-msgstr "எதà¯à®µà¯à®®à¯ தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ"
+#: ../src/Gui/settings.glade.h:2
+msgid "<b>Associated action</b>"
+msgstr "<b>தொடரà¯à®ªà¯à®Ÿà¯ˆà®¯ செயலà¯</b>"
-#: src/Gui/settings.glade:72
-msgid "Web Site:"
-msgstr "இணைய தளமà¯:"
+#: ../src/Gui/settings.glade.h:3
+msgid "<b>Plugin</b>"
+msgstr "<b>கூடà¯à®¤à®²à¯ இணைபà¯à®ªà¯</b>"
-#: src/Gui/settings.glade:84
+#: ../src/Gui/settings.glade.h:4
+msgid "<b>Time (or period)</b>"
+msgstr "<b>நேரம௠(அலà¯à®²à®¤à¯ காலமà¯)</b>"
+
+#: ../src/Gui/settings.glade.h:5
+msgid "Analyzers, Actions, Reporters"
+msgstr "பகà¯à®ªà¯à®ªà®¾à®¯à¯à®µà®¿à®•à®³à¯, செயலà¯à®•à®³à¯, அறிகà¯à®•à¯ˆà®¯à®¾à®³à®°à¯à®•à®³à¯"
+
+#: ../src/Gui/settings.glade.h:6
msgid "Author:"
msgstr "ஆசிரியரà¯"
-#: src/Gui/settings.glade:97
-msgid "Version:"
-msgstr "பதிபà¯à®ªà¯:"
-
-#: src/Gui/settings.glade:152
-msgid "Plugin Details"
-msgstr "கூடà¯à®¤à®²à¯ இணைபà¯à®ªà¯ விவரஙà¯à®•à®³à¯"
+#: ../src/Gui/settings.glade.h:7
+msgid "Blacklisted packages: "
+msgstr "நீகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿ தொகà¯à®ªà¯à®ªà¯à®•à®³à¯:"
-#: src/Gui/settings.glade:179
+#: ../src/Gui/settings.glade.h:8
msgid "C_onfigure plugin"
msgstr "கூடà¯à®¤à®²à¯ இணைபà¯à®ªà¯ˆ கடà¯à®Ÿà®®à¯ˆ (_o)"
-#: src/Gui/settings.glade:191
-msgid "gtk-close"
-msgstr "gtk-close"
-
-#: src/Gui/settings.glade:221
-msgid "Global Settings"
-msgstr "பொதà¯à®µà®¾à®© அமைவà¯à®•à®³à¯"
-
-#: src/Gui/settings.glade:240
+#: ../src/Gui/settings.glade.h:9
msgid "Check package GPG signature"
msgstr "தொகà¯à®ªà¯à®ªà¯ GPG கையொபà¯à®ªà®¤à¯à®¤à¯ˆ சரிபாரà¯"
-#: src/Gui/settings.glade:256
+#: ../src/Gui/settings.glade.h:10
+msgid "Common"
+msgstr "பொதà¯"
+
+#: ../src/Gui/settings.glade.h:11
+msgid "Cron"
+msgstr "Cron"
+
+#: ../src/Gui/settings.glade.h:12
msgid "Database backend: "
msgstr "தரவà¯à®¤à¯à®¤à®³ பினà¯à®¤à®³à®®à¯:"
-#: src/Gui/settings.glade:281
-msgid "Blacklisted packages: "
-msgstr "நீகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿ தொகà¯à®ªà¯à®ªà¯à®•à®³à¯:"
+#: ../src/Gui/settings.glade.h:13
+msgid "Edit blacklisted packages"
+msgstr "நீகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿ தொகà¯à®ªà¯à®ªà¯à®•à®³à¯ˆ திரà¯à®¤à¯à®¤à¯"
-#: src/Gui/settings.glade:294
-msgid "Max coredump storage size(MB):"
-msgstr "அதிகபடà¯à®š coredump சேமிபà¯à®ªà®• அளவà¯(MB):"
+#: ../src/Gui/settings.glade.h:14
+msgid "GPG Keys"
+msgstr "GPG விசைகளà¯"
-#: src/Gui/settings.glade:307
+#: ../src/Gui/settings.glade.h:15
msgid "GPG keys: "
msgstr "GPG விசைகளà¯: "
-#: src/Gui/settings.glade:349
-msgid "Edit blacklisted packages"
-msgstr "நீகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿ தொகà¯à®ªà¯à®ªà¯à®•à®³à¯ˆ திரà¯à®¤à¯à®¤à¯"
+#: ../src/Gui/settings.glade.h:16
+msgid "Global Settings"
+msgstr "பொதà¯à®µà®¾à®© அமைவà¯à®•à®³à¯"
-#: src/Gui/settings.glade:408
-msgid "Common"
-msgstr "பொதà¯"
+#: ../src/Gui/settings.glade.h:17
+msgid "Max coredump storage size(MB):"
+msgstr "அதிகபடà¯à®š coredump சேமிபà¯à®ªà®• அளவà¯(MB):"
-#: src/Gui/settings.glade:438
-msgid "<b>Plugin</b>"
-msgstr "<b>கூடà¯à®¤à®²à¯ இணைபà¯à®ªà¯</b>"
+#: ../src/Gui/settings.glade.h:18
+msgid "Nothing selected"
+msgstr "எதà¯à®µà¯à®®à¯ தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ"
-#: src/Gui/settings.glade:448
-msgid "<b>Time (or period)</b>"
-msgstr "<b>நேரம௠(அலà¯à®²à®¤à¯ காலமà¯)</b>"
+#: ../src/Gui/settings.glade.h:19
+msgid "Plugin Details"
+msgstr "கூடà¯à®¤à®²à¯ இணைபà¯à®ªà¯ விவரஙà¯à®•à®³à¯"
-#: src/Gui/settings.glade:510 src/Gui/settings.glade:624
-#: src/Gui/settings.glade:761
-msgid "gtk-add"
-msgstr "gtk-add"
+#: ../src/Gui/settings.glade.h:20
+msgid "Settings"
+msgstr "அமைவà¯à®•à®³à¯"
-#: src/Gui/settings.glade:534
-msgid "Cron"
-msgstr "Cron"
+#: ../src/Gui/settings.glade.h:21
+msgid "This function is not implemented yet!"
+msgstr "இநà¯à®¤ செயலà¯à®ªà®¾à®Ÿà¯ இதà¯à®µà®°à¯ˆ செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ!"
-#: src/Gui/settings.glade:551
-msgid "<b>Analyzer plugin</b>"
-msgstr "<b>ஆயà¯à®µà®¿ கூடà¯à®¤à®²à¯ இணைபà¯à®ªà¯à®•à®³à¯</b>"
+#: ../src/Gui/settings.glade.h:22
+msgid "Version:"
+msgstr "பதிபà¯à®ªà¯:"
-#: src/Gui/settings.glade:561
-msgid "<b>Associated action</b>"
-msgstr "<b>தொடரà¯à®ªà¯à®Ÿà¯ˆà®¯ செயலà¯</b>"
+#: ../src/Gui/settings.glade.h:23
+msgid "Web Site:"
+msgstr "இணைய தளமà¯:"
-#: src/Gui/settings.glade:648
-msgid "Analyzers, Actions, Reporters"
-msgstr "பகà¯à®ªà¯à®ªà®¾à®¯à¯à®µà®¿à®•à®³à¯, செயலà¯à®•à®³à¯, அறிகà¯à®•à¯ˆà®¯à®¾à®³à®°à¯à®•à®³à¯"
+#: ../src/Gui/settings.glade.h:24
+msgid "gtk-add"
+msgstr "gtk-add"
-#: src/Gui/settings.glade:700
-msgid "This function is not implemented yet!"
-msgstr "இநà¯à®¤ செயலà¯à®ªà®¾à®Ÿà¯ இதà¯à®µà®°à¯ˆ செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ!"
+#: ../src/Gui/settings.glade.h:25
+msgid "gtk-cancel"
+msgstr "gtk-cancel"
-#: src/Gui/settings.glade:738
-msgid "GPG Keys"
-msgstr "GPG விசைகளà¯"
+#: ../src/Gui/settings.glade.h:26
+msgid "gtk-close"
+msgstr "gtk-close"
-#: src/Gui/settings.glade:773
+#: ../src/Gui/settings.glade.h:28
msgid "gtk-remove"
msgstr "gtk-remove"
-#: src/Applet/Applet.cpp:71
+#: ../src/Applet/Applet.cpp:79
#, c-format
msgid "A crash in package %s has been detected"
msgstr "தொகà¯à®ªà¯à®ªà¯ %s இல௠ஒர௠சேதம௠கணà¯à®Ÿà®±à®¿à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-#: src/Applet/Applet.cpp:130
+#: ../src/Applet/Applet.cpp:138
msgid "ABRT service has been started"
msgstr "ABRT சேவை தà¯à®µà®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
-#: src/Applet/Applet.cpp:132 src/Applet/Applet.cpp:246
+#: ../src/Applet/Applet.cpp:140 ../src/Applet/Applet.cpp:254
msgid "ABRT service is not running"
msgstr "ABRT சேவை இயஙà¯à®•à®µà®¿à®²à¯à®²à¯ˆ"
-#: src/Applet/CCApplet.cpp:185
+#: ../src/Applet/CCApplet.cpp:185
msgid "Warning"
msgstr "எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ"
-#: src/Daemon/Daemon.cpp:546
+#: ../src/Daemon/Daemon.cpp:520
msgid ""
"Report size exceeded the quota. Please check system's MaxCrashReportsSize "
"value in abrt.conf."
@@ -423,120 +463,125 @@ msgstr ""
"அறிகà¯à®•à¯ˆ அளவ௠ஒதà¯à®•à¯à®•à¯€à®Ÿà¯à®Ÿà¯ˆ தாணà¯à®Ÿà®¿à®¯à®¤à¯. உஙà¯à®•à®³à¯ MaxCrashReportsSize மதிபà¯à®ªà¯ˆ abrt.conf.இல௠"
"சரிபாரà¯à®•à¯à®•à®µà¯à®®à¯."
-#: lib/Plugins/Bugzilla.cpp:83
-msgid "Empty login and password. Please check Bugzilla.conf"
-msgstr "வெறà¯à®±à¯ பà¯à®•à¯à®ªà®¤à®¿à®µà¯ மறà¯à®±à¯à®®à¯ கடவà¯à®šà¯à®šà¯Šà®²à¯. Bugzilla.conf஠சரி பாரà¯à®•à¯à®•à®µà¯à®®à¯"
-
-#: lib/Plugins/Bugzilla.cpp:227
-msgid "Bug is already reported: "
-msgstr "பிழை à®à®±à¯à®•à®©à®µà¯‡ அறிகà¯à®•à¯ˆà®¯à®¿à®Ÿà®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯:"
-
-#: lib/Plugins/Bugzilla.cpp:282
+#: ../lib/Plugins/Bugzilla.cpp:209
#, c-format
-msgid "Binary file %s will not be reported."
-msgstr "பைனரி கோபà¯à®ªà¯ %s அறிகà¯à®•à¯ˆà®¯à®¿à®Ÿà®ªà¯à®ªà®Ÿà®¾à®¤à¯."
+msgid "Bug is already reported: %i"
+msgstr "பிழை à®à®±à¯à®•à®©à®µà¯‡ அறிகà¯à®•à¯ˆà®¯à®¿à®Ÿà®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯: %i"
-#: lib/Plugins/Bugzilla.cpp:352
-msgid "New bug id: "
-msgstr "பà¯à®¤à®¿à®¯ பிழை கà¯à®±à®¿à®¯à¯€à®Ÿà¯: "
+#: ../lib/Plugins/Bugzilla.cpp:271
+#, c-format
+msgid "New bug id: %i"
+msgstr "பà¯à®¤à®¿à®¯ பிழை கà¯à®±à®¿à®¯à¯€à®Ÿà¯: %i"
-#: lib/Plugins/Bugzilla.cpp:421
+#: ../lib/Plugins/Bugzilla.cpp:364
msgid "Checking for duplicates..."
msgstr "போலிகளà¯à®•à¯à®•à¯ சரிபாரà¯à®•à¯à®•à®¿à®±à®¤à¯..."
-#: lib/Plugins/Bugzilla.cpp:424 lib/Plugins/Bugzilla.cpp:436
+#: ../lib/Plugins/Bugzilla.cpp:367
msgid "Logging into bugzilla..."
msgstr "bugzillaவில௠உளà¯à®¨à¯à®´à¯ˆà®•à®¿à®±à®¤à¯..."
-#: lib/Plugins/Bugzilla.cpp:427
-msgid "Check CC and add coment +1..."
-msgstr "CC aமறà¯à®±à¯à®®à¯ add coment +1கà¯à®•à¯ சோதிகà¯à®•à®¿à®±à®¤à¯..."
+#: ../lib/Plugins/Bugzilla.cpp:371
+msgid "Empty login and password. Please check Bugzilla.conf"
+msgstr "வெறà¯à®±à¯ பà¯à®•à¯à®ªà®¤à®¿à®µà¯ மறà¯à®±à¯à®®à¯ கடவà¯à®šà¯à®šà¯Šà®²à¯. Bugzilla.conf஠சரி பாரà¯à®•à¯à®•à®µà¯à®®à¯"
+
+#: ../lib/Plugins/Bugzilla.cpp:377
+msgid "Checking CC..."
+msgstr "CCகà¯à®•à¯ சரிபாரà¯à®•à¯à®•à®¿à®±à®¤à¯..."
-#: lib/Plugins/Bugzilla.cpp:448
+#: ../lib/Plugins/Bugzilla.cpp:386
msgid "Creating new bug..."
msgstr "பà¯à®¤à®¿à®¯ பிழையை உரà¯à®µà®¾à®•à¯à®•à¯à®•à®¿à®±à®¤à¯..."
-#: lib/Plugins/Bugzilla.cpp:453
+#: ../lib/Plugins/Bugzilla.cpp:390
msgid "Logging out..."
msgstr "வெளியேறà¯à®•à®¿à®±à®¤à¯..."
-#: lib/Plugins/Kerneloops.cpp:37
+#: ../lib/Plugins/Kerneloops.cpp:37
msgid "Getting local universal unique identification"
msgstr "உளà¯à®³à®®à¯ˆ உலகளாவிய தனி அடையாளதà¯à®¤à¯ˆ பெறà¯à®•à®¿à®±à®¤à¯"
-#: lib/Plugins/CCpp.cpp:146
+#: ../lib/Plugins/CCpp.cpp:254
msgid "Getting backtrace..."
msgstr "backtrace஠பெறà¯à®•à®¿à®±à®¤à¯..."
-#: lib/Plugins/CCpp.cpp:410
+#: ../lib/Plugins/CCpp.cpp:552 ../lib/Plugins/CCpp.cpp:679
msgid "Searching for debug-info packages..."
msgstr "debug-info தொகà¯à®ªà¯à®ªà¯à®•à®³à¯à®•à¯à®•à¯ தேடà¯à®•à®¿à®±à®¤à¯..."
-#: lib/Plugins/CCpp.cpp:444
+#: ../lib/Plugins/CCpp.cpp:614 ../lib/Plugins/CCpp.cpp:713
msgid "Downloading and installing debug-info packages..."
msgstr "debug-info தொகà¯à®ªà¯à®ªà¯à®•à®³à¯ˆ பதிவிறகà¯à®•à®¿ நிறà¯à®µà¯à®•à®¿à®±à®¤à¯..."
-#: lib/Plugins/CCpp.cpp:506
+#: ../lib/Plugins/CCpp.cpp:818
msgid "Getting local universal unique identification..."
msgstr "உளà¯à®³à®®à¯ˆ உலகளாவிய தனி அடையாளதà¯à®¤à¯ˆ பெறà¯à®•à®¿à®±à®¤à¯..."
-#: lib/Plugins/CCpp.cpp:525
+#: ../lib/Plugins/CCpp.cpp:837
msgid "Getting global universal unique identification..."
msgstr "à®®à¯à®´à¯à®®à¯ˆà®¯à®¾à®© உலகளாவிய தனி அடையாளதà¯à®¤à¯ˆ பெறà¯à®•à®¿à®±à®¤à¯..."
-#: lib/Plugins/CCpp.cpp:576
+#: ../lib/Plugins/CCpp.cpp:882
msgid "Starting report creation..."
msgstr "அறிகà¯à®•à¯ˆ உரà¯à®µà®¾à®•à¯à®•à®¤à¯à®¤à¯ˆ தà¯à®µà®•à¯à®•à¯à®•à®¿à®±à®¤à¯..."
-#: lib/Plugins/CCpp.cpp:605
+#: ../lib/Plugins/CCpp.cpp:912
msgid "Skipping debuginfo installation"
msgstr "debuginfo நிறà¯à®µà®²à¯ˆ தவிரà¯à®¤à¯à®¤à®¤à¯"
-#: lib/Plugins/KerneloopsReporter.cpp:101
+#: ../lib/Plugins/KerneloopsReporter.cpp:102
msgid "Creating and submitting a report..."
msgstr "ஒர௠அறிகà¯à®•à¯ˆà®¯à¯ˆ உரà¯à®µà®¾à®•à¯à®•à®¿ சமரà¯à®ªà¯à®ªà®¿à®•à¯à®•à®¿à®±à®¤à¯..."
-#: lib/Plugins/Logger.cpp:58 lib/Plugins/Mailx.cpp:123
+#: ../lib/Plugins/Logger.cpp:65 ../lib/Plugins/Mailx.cpp:124
msgid "Creating a report..."
msgstr "ஒர௠அறிகà¯à®•à¯ˆà®¯à¯ˆ உரà¯à®µà®¾à®•à¯à®•à¯à®•à®¿à®±à®¤à¯..."
-#: lib/Plugins/RunApp.cpp:62
+#: ../lib/Plugins/RunApp.cpp:64
msgid "Executing RunApp plugin..."
msgstr "RunApp கூடà¯à®¤à®²à¯ இணைபà¯à®ªà¯ˆ இயகà¯à®•à¯à®•à®¿à®±à®¤à¯..."
-#: lib/Plugins/FileTransfer.cpp:60 lib/Plugins/FileTransfer.cpp:355
+#: ../lib/Plugins/FileTransfer.cpp:63 ../lib/Plugins/FileTransfer.cpp:384
msgid "FileTransfer: URL not specified"
msgstr "கோபà¯à®ªà¯ இடமாறà¯à®±à®®à¯: URL கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ"
-#: lib/Plugins/FileTransfer.cpp:77
+#: ../lib/Plugins/FileTransfer.cpp:67
#, c-format
-msgid "Sending archive %s via %s"
+msgid "Sending archive %s to %s"
msgstr "காபà¯à®ªà¯ %sà® %sவழியாக அனà¯à®ªà¯à®ªà¯à®•à®¿à®±à®¤à¯"
-#: lib/Plugins/FileTransfer.cpp:284
+#: ../lib/Plugins/FileTransfer.cpp:309
msgid "File Transfer: Creating a report..."
msgstr "கோபà¯à®ªà¯ இடமாறà¯à®±à®®à¯: ஒர௠அறிகà¯à®•à¯ˆ உரà¯à®µà®¾à®•à¯à®•à¯à®•à®¿à®±à®¤à¯..."
-#: lib/Plugins/FileTransfer.cpp:305 lib/Plugins/FileTransfer.cpp:334
-msgid "CFileTransfer::Run(): Cannot create and send an archive: "
-msgstr "CFileTransfer::Run(): ஒர௠காபà¯à®ªà®¿à®©à¯ˆ உரà¯à®µà®¾à®•à¯à®• மறà¯à®±à¯à®®à¯ அனà¯à®ªà¯à®ª à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: "
+#: ../lib/Plugins/FileTransfer.cpp:334
+#, c-format
+msgid "Can't create and send an archive: %s"
+msgstr "ஒர௠காபà¯à®ªà¯ உரà¯à®µà®¾à®•à¯à®• மறà¯à®±à¯à®®à¯ அனà¯à®ªà¯à®ª à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ: %s"
+
+#: ../lib/Plugins/FileTransfer.cpp:359
+#, c-format
+msgid "Can't create and send an archive %s"
+msgstr "ஒர௠காபà¯à®ªà¯ %s உரà¯à®µà®¾à®•à¯à®• மறà¯à®±à¯à®®à¯ அனà¯à®ªà¯à®ª à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ"
-#: lib/Plugins/KerneloopsScanner.cpp:79
+#: ../lib/Plugins/KerneloopsScanner.cpp:84
msgid "Creating kernel oops crash reports..."
msgstr "கரà¯à®©à®²à¯ oops கà¯à®°à®·à¯à®•à®³à¯ˆ அறிகà¯à®•à¯ˆà®•à®³à¯ˆ உரà¯à®µà®¾à®•à¯à®•à¯à®•à®¿à®±à®¤à¯..."
-#: lib/Plugins/Mailx.cpp:109
+#: ../lib/Plugins/Mailx.cpp:109
msgid "Sending an email..."
msgstr "ஒர௠மினà¯à®©à®žà¯à®šà®²à¯ அனà¯à®ªà¯à®ªà¯à®•à®¿à®±à®¤à¯..."
-#: lib/Plugins/SOSreport.cpp:113
+#: ../lib/Plugins/SOSreport.cpp:100
msgid "Executing SOSreport plugin..."
msgstr "SOSreport கூடà¯à®¤à®²à¯ இணைபà¯à®ªà¯ˆ இயகà¯à®•à¯à®•à®¿à®±à®¤à¯..."
-#: lib/Plugins/SOSreport.cpp:135
-msgid "running sosreport: "
-msgstr "sosreport஠இயகà¯à®•à¯à®•à®¿à®±à®¤à¯: "
+#: ../lib/Plugins/SOSreport.cpp:122
+#, c-format
+msgid "running sosreport: %s"
+msgstr "sosreport஠இயகà¯à®•à¯à®•à®¿à®±à®¤à¯: %s"
-#: lib/Plugins/SOSreport.cpp:150
+#: ../lib/Plugins/SOSreport.cpp:137
msgid "done running sosreport"
msgstr "sosreport஠இயகà¯à®•à®¿à®¯à®¤à¯"
+
diff --git a/po/te.po b/po/te.po
index f8c38881..8b9a405b 100644
--- a/po/te.po
+++ b/po/te.po
@@ -2,59 +2,64 @@
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
#
+#: ../src/Gui/CCReporterDialog.py:191
# Krishna Babu K <kkrothap@redhat.com>, 2009.
msgid ""
msgstr ""
"Project-Id-Version: abrt.master.te\n"
"Report-Msgid-Bugs-To: jmoskovc@redhat.com\n"
-"POT-Creation-Date: 2009-09-29 14:46+0200\n"
-"PO-Revision-Date: 2009-09-23 12:34+0530\n"
+"POT-Creation-Date: 2009-11-12 03:54+0000\n"
+"PO-Revision-Date: 2009-11-12 12:17+0530\n"
"Last-Translator: Krishna Babu K <kkrothap@redhat.com>\n"
"Language-Team: Telugu <en@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n\n"
"\n"
"\n"
"\n"
"\n"
"\n"
-#: src/Gui/ABRTExceptions.py:4
+#: ../src/Gui/ABRTExceptions.py:6
msgid "Another client is already running, trying to wake it."
msgstr "వేరొక à°•à±à°²à±ˆà°‚టౠయిపà±à°ªà°Ÿà°¿à°•à±‡ నడà±à°šà±à°šà±à°¨à±à°¨à°¦à°¿, దానిని మేలà±à°•à±Šà°²à±à°ªà±à°Ÿà°•à± యతà±à°¨à°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿."
-#: src/Gui/ABRTExceptions.py:10
+#: ../src/Gui/ABRTExceptions.py:13
msgid "Got unexpected data from daemon (is the database properly updated?)."
msgstr "డెమోనà±â€Œà°¨à±à°‚à°¡à°¿ à°…à°¨à±à°•à±‹à°¨à°¿ డాటా పొందినది (డాటాబేసౠసరిగా నవీకరించబడిందా?)."
-#: src/Gui/ABRTPlugin.py:26
+#: ../src/Gui/ABRTPlugin.py:55
msgid "Analyzer plugins"
msgstr "విశà±à°²à±‡à°·à°•à°¿ à°ªà±à°²à°—à°¿à°¨à±à°¸à±"
-#: src/Gui/ABRTPlugin.py:27
+#: ../src/Gui/ABRTPlugin.py:56
msgid "Action plugins"
msgstr "à°šà°°à±à°¯à°¾ à°ªà±à°²à°—à°¿à°¨à±à°¸à±"
-#: src/Gui/ABRTPlugin.py:28
+#: ../src/Gui/ABRTPlugin.py:57
msgid "Reporter plugins"
msgstr "నివేదకి à°ªà±à°²à°—à°¿à°¨à±à°¸à±"
-#: src/Gui/ABRTPlugin.py:29
+#: ../src/Gui/ABRTPlugin.py:58
msgid "Database plugins"
msgstr "డాటాబేసౠపà±à°²à°—à°¿à°¨à±à°¸à±"
-#: src/Gui/CCDBusBackend.py:143
-msgid "Can't connect to dbus"
-msgstr "dbusà°•à± à°…à°¨à±à°¸à°‚ధానమౠకాలేకపోయింది"
+#: ../src/Gui/ABRTPlugin.py:97
+msgid "Plugin name is not set, can't load it's settings"
+msgstr "à°ªà±à°²à°—ినౠనామమౠఅమరà±à°šà°¬à°¡à°²à±‡à°¦à±, దాని అమరికలనౠలోడౠచేయలేదà±"
-#: src/Gui/CCDBusBackend.py:169
-msgid "Please check if abrt daemon is running."
-msgstr "abrt డెమోనౠనడà±à°¸à±à°¤à±à°‚టే దయచేసి పరిశీలించà±à°®à±."
+#: ../src/Gui/CCDBusBackend.py:74 ../src/Gui/CCDBusBackend.py:97
+msgid "Can't connect to system dbus"
+msgstr "సిసà±à°Ÿà°®à± dbusà°•à± à°…à°¨à±à°¸à°‚ధానమౠకాలేకపోయింది"
-#: src/Gui/CCDBusBackend.py:187
+#: ../src/Gui/CCDBusBackend.py:100 ../src/Gui/CCDBusBackend.py:103
+msgid "Please check if abrt daemon is running"
+msgstr "abrt డెమోనౠనడà±à°¸à±à°¤à±à°‚టే దయచేసి పరిశీలించà±à°®à±"
+
+#: ../src/Gui/CCDBusBackend.py:155
msgid ""
"Daemon did't return valid report info\n"
"Debuginfo is missing?"
@@ -62,27 +67,47 @@ msgstr ""
"డెమోనౠచెలà±à°²à±à°¨à°Ÿà±à°µà°‚à°Ÿà°¿ నివేదిక సమాచారమà±à°¨à± తిరిగియిచà±à°šà±à°Ÿ లేదà±\n"
"డీబగà±â€Œà°¸à°®à°¾à°šà°¾à°°à°®à± తపà±à°ªà°¿à°ªà±‹à°¯à°¿à°‚దా?"
-#: src/Gui/ccgui.glade:6
-msgid "Please wait.."
-msgstr "దయచేసి వేచివà±à°‚à°¡à±..."
-
-#: src/Gui/ccgui.glade:16
-msgid "Working..."
-msgstr "పనిచేయà±à°šà±à°¨à±à°¨à°¦à°¿..."
-
-#: src/Gui/ccgui.glade:49
+#: ../src/Gui/ccgui.glade.h:1 ../src/Gui/report.glade.h:1
msgid " "
msgstr " "
-#: src/Gui/ccgui.glade:68
+#: ../src/Gui/ccgui.glade.h:2
+msgid "(C) 2009 Red Hat, Inc."
+msgstr "(C) 2009 Red Hat, Inc."
+
+#: ../src/Gui/ccgui.glade.h:3 ../src/Gui/CCMainWindow.py:244
+msgid "<b>Not reported!</b>"
+msgstr "<b>నివేదించబడలేదà±!</b>"
+
+#: ../src/Gui/ccgui.glade.h:4
+msgid "<span color=\"white\">Description</span>"
+msgstr "<span color=\"white\">వివరణ</span>"
+
+#: ../src/Gui/ccgui.glade.h:5
msgid "About ABRT"
msgstr "ABRT à°—à±à°°à°¿à°‚à°šà°¿"
-#: src/Gui/ccgui.glade:74
-msgid "(C) 2009 Red Hat, Inc."
-msgstr "(C) 2009 Red Hat, Inc."
+#: ../src/Gui/ccgui.glade.h:6
+msgid "Automatic Bug Reporting Tool"
+msgstr "à°¸à±à°µà°¯à°‚చాలక బగౠనివేదీకరణ సాధనమà±"
+
+#: ../src/Gui/ccgui.glade.h:7
+msgid "Delete"
+msgstr "తొలగించà±"
-#: src/Gui/ccgui.glade:75
+#: ../src/Gui/ccgui.glade.h:8
+msgid "Please wait.."
+msgstr "దయచేసి వేచివà±à°‚à°¡à±..."
+
+#: ../src/Gui/ccgui.glade.h:9
+msgid "Plugins"
+msgstr "à°ªà±à°²à°—à°¿à°¨à±à°²à±"
+
+#: ../src/Gui/ccgui.glade.h:10 ../src/Gui/report.glade.h:4
+msgid "Report"
+msgstr "నివేదించà±"
+
+#: ../src/Gui/ccgui.glade.h:11
msgid ""
"This program is free software; you can redistribute it and/or modify it "
"under the terms of the GNU General Public License as published by the Free "
@@ -108,68 +133,57 @@ msgstr ""
"à°ˆ à°ªà±à°°à±‹à°—à±à°°à°¾à°®à± తో మీరౠGNU జనరలౠపబà±à°²à°¿à°•à± లైసెనà±à°¸à± నకలà±à°¨à± పొంది ఉంటారà±. పొందకపోతే, <http://www.gnu."
"org/licenses/> చూడండి."
-#: src/Gui/ccgui.glade:106
-msgid "Automatic Bug Reporting Tool"
-msgstr "à°¸à±à°µà°¯à°‚చాలక బగౠనివేదీకరణ సాధనమà±"
-
-#: src/Gui/ccgui.glade:118
-msgid "_File"
-msgstr "దసà±à°¤à±à°°à°®à± (_F)"
+#: ../src/Gui/ccgui.glade.h:16
+msgid "Working..."
+msgstr "పనిచేయà±à°šà±à°¨à±à°¨à°¦à°¿..."
-#: src/Gui/ccgui.glade:138
+#: ../src/Gui/ccgui.glade.h:17
msgid "_Edit"
msgstr "సరికూరà±à°šà± (_E)"
-#: src/Gui/ccgui.glade:146
-msgid "Plugins"
-msgstr "à°ªà±à°²à°—à°¿à°¨à±à°²à±"
+#: ../src/Gui/ccgui.glade.h:18
+msgid "_File"
+msgstr "దసà±à°¤à±à°°à°®à± (_F)"
-#: src/Gui/ccgui.glade:164
+#: ../src/Gui/ccgui.glade.h:19
msgid "_Help"
msgstr "సహాయమౠ(_H)"
-#: src/Gui/ccgui.glade:194 src/Gui/ccgui.glade:195
-msgid "Delete"
-msgstr "తొలగించà±"
-
-#: src/Gui/ccgui.glade:207 src/Gui/ccgui.glade:208 src/Gui/ccgui.glade:335
-#: src/Gui/report.glade:7 src/Gui/report.glade:24
-msgid "Report"
-msgstr "నివేదించà±"
-
-#: src/Gui/ccgui.glade:255
-msgid "<span color=\"white\">Description</span>"
-msgstr "<span color=\"white\">వివరణ</span>"
-
-#: src/Gui/ccgui.glade:297 src/Gui/CCMainWindow.py:239
-msgid "<b>Not reported!</b>"
-msgstr "<b>నివేదించబడలేదà±!</b>"
-
-#: src/Gui/CCMainWindow.py:80
+#. add pixbuff separatelly
+#: ../src/Gui/CCMainWindow.py:80
msgid "Icon"
msgstr "à°ªà±à°°à°¤à°¿à°®"
-#: src/Gui/CCMainWindow.py:88
+#: ../src/Gui/CCMainWindow.py:88
msgid "Package"
msgstr "à°ªà±à°¯à°¾à°•à±‡à°œà±€"
-#: src/Gui/CCMainWindow.py:89
+#: ../src/Gui/CCMainWindow.py:89
msgid "Application"
msgstr "à°…à°¨à±à°µà°°à±à°¤à°¨à°®à±"
-#: src/Gui/CCMainWindow.py:90
+#: ../src/Gui/CCMainWindow.py:90
msgid "Date"
msgstr "తేది"
-#: src/Gui/CCMainWindow.py:91
-msgid "Crash Rate"
-msgstr "à°•à±à°°à°¾à°·à± రేటà±"
+#: ../src/Gui/CCMainWindow.py:91
+msgid "Crash count"
+msgstr "à°•à±à°°à°¾à°·à± కౌంటà±"
-#: src/Gui/CCMainWindow.py:93
+#: ../src/Gui/CCMainWindow.py:93
msgid "User"
msgstr "వినియోగదారి"
-#: src/Gui/CCMainWindow.py:177
+#: ../src/Gui/CCMainWindow.py:160
+#, python-format
+msgid ""
+"Can't show the settings dialog\n"
+"%s"
+msgstr ""
+"అమరికల డైలాగà±â€Œà°¨à± చూపలేదà±\n"
+"%s"
+
+#: ../src/Gui/CCMainWindow.py:181
#, python-format
msgid ""
"Unable to finish current task!\n"
@@ -178,7 +192,7 @@ msgstr ""
"à°ªà±à°°à°¸à±à°¤à±à°¤ à°•à°°à±à°¤à°µà±à°¯à°®à±à°¨à± పూరà±à°¤à°¿à°šà±‡à°¯à°²à±‡à°• పోయింది!\n"
"%s"
-#: src/Gui/CCMainWindow.py:194
+#: ../src/Gui/CCMainWindow.py:198
#, python-format
msgid ""
"Error while loading the dumplist, please check if abrt daemon is running\n"
@@ -187,16 +201,16 @@ msgstr ""
"à°¡à°‚à°ªà±à°œà°¾à°¬à°¿à°¤à°¾à°¨à± లోడà±à°šà±‡à°¯à±à°Ÿà°²à±‹ దోషమà±, దయచేసి abrt డెమోనౠనడà±à°¸à±à°¤à±à°¨à±à°¨à°¦à±‹ లేదో పరిశీలించండి\n"
" %s"
-#: src/Gui/CCMainWindow.py:204
+#: ../src/Gui/CCMainWindow.py:208
#, python-format
msgid "Can't get username for uid %s"
msgstr "uid %s కొరకౠవినియోగదారి నామమà±à°¨à± పొందలేకపోయింది"
-#: src/Gui/CCMainWindow.py:231
+#: ../src/Gui/CCMainWindow.py:236
msgid "<b>This crash has been reported, you can find the report(s) at:</b>\n"
msgstr "<b>à°ˆ à°•à±à°°à°¾à°·à± నివేదించబడింది, మీరౠనివేదికలనౠదీనివదà±à°¦ à°•à°¨à±à°—ొనవచà±à°šà±à°¨à±:</b>\n"
-#: src/Gui/CCMainWindow.py:291
+#: ../src/Gui/CCMainWindow.py:296
msgid ""
"Unable to get report!\n"
"Debuginfo is missing?"
@@ -204,7 +218,7 @@ msgstr ""
"నివేదికనౠపొందలేక పోయింది!\n"
"డీబగà±â€Œà°¸à°®à°¾à°šà°¾à°°à°®à± తపà±à°ªà°¿à°ªà±‹à°¯à°¿à°‚దా?"
-#: src/Gui/CCMainWindow.py:306
+#: ../src/Gui/CCMainWindow.py:314
#, python-format
msgid ""
"Reporting failed!\n"
@@ -213,12 +227,41 @@ msgstr ""
"నివేదించà±à°Ÿ విఫలమైంది!\n"
"%s"
-#: src/Gui/CCMainWindow.py:338
+#: ../src/Gui/CCMainWindow.py:333 ../src/Gui/CCMainWindow.py:360
#, python-format
msgid "Error getting the report: %s"
msgstr "నివేదికనౠపొందà±à°Ÿà°²à±‹ దోషమà±: %s"
-#: src/Gui/CCReporterDialog.py:98
+#: ../src/Gui/CCReporterDialog.py:177
+msgid "Brief description how to reproduce this or what you did..."
+msgstr "దీనిని మరలా యెలా రాబటà±à°Ÿà°¾à°²à°¿ అనేదాని à°—à±à°°à°¿à°‚à°šà°¿ మరియౠమీరౠయేమి చేయాలి అనేదాని à°—à±à°°à°¿à°‚à°šà°¿ సోదాహరణమà±..."
+
+#: ../src/Gui/CCReporterDialog.py:219
+#, python-format
+msgid ""
+"Reporting disabled because the backtrace is unusable.\n"
+"Please try to install debuginfo manually using command:<span color=\"blue\"> "
+"debuginfo-install %s </span>\n"
+"then use Refresh button to regenerate the backtrace."
+msgstr ""
+"బాకà±â€Œà°Ÿà±à°°à±‡à°¸à± నిరà±à°ªà°¯à±‹à°—మైంది à°•à°¨à±à°• నివేదీకరణ అచేతనమైంది.\n"
+"à°ˆ ఆదేశానà±à°¨à°¿ à°µà±à°ªà°¯à±‹à°—à°¿à°‚à°šà°¿ డీబగà±â€Œà°¯à°¿à°¨à±â€Œà°«à±‹à°¨à± మానవీయంగా సంసà±à°¥à°¾à°ªà°¿à°‚à°šà±à°Ÿà°•à± à°ªà±à°°à°¯à°¤à±à°¨à°¿à°‚à°šà°‚à°¡à°¿: <span color=\"blue\"> "
+"debuginfo-install %s </span>\n"
+"à°…à°ªà±à°ªà±à°¡à± బాకà±â€Œà°Ÿà±à°°à±‡à°¸à±â€Œà°¨à± తిరిగి à°µà±à°¦à±à°­à°µà°¿à°‚పచేయà±à°Ÿà°•à± రీఫà±à°°à±†à°·à± బటనౠవà±à°ªà°¯à±‹à°—à°¿à°‚à°šà°‚à°¡à°¿."
+
+#: ../src/Gui/CCReporterDialog.py:221
+msgid "The bactrace is unusable, you can't report this!"
+msgstr "బాకà±â€Œà°Ÿà±à°°à±‡à°¸à± à°µà±à°ªà°¯à±‹à°—à°¿à°‚à°šà±à°Ÿà°•à± వీలà±à°•à°¾à°¨à°¿à°¦à°¿, దీనిని మీరౠనివేదించ లేదà±!"
+
+#: ../src/Gui/CCReporterDialog.py:227
+msgid ""
+"The bactrace is incomplete, please make sure you provide good steps to "
+"reproduce."
+msgstr ""
+"బాకà±â€Œà°Ÿà±à°°à±‡à°¸à± అసంపూరà±à°¤à°¿à°—à°¾ à°µà±à°‚ది, దానిని తిరిగివà±à°¤à±à°ªà°¨à±à°¨à°‚ చేయà±à°Ÿà°•à± దయచేసి మీరౠమంచి "
+"à°¸à±à°Ÿà±†à°ªà±à°¸à±à°¨à± యిచà±à°šà±à°¨à°Ÿà±à°²à± చూచà±à°•à±‹à°‚à°¡à°¿."
+
+#: ../src/Gui/CCReporterDialog.py:272
#, python-format
msgid ""
"<b>WARNING</b>, you're about to send data which might contain sensitive "
@@ -228,190 +271,186 @@ msgstr ""
"<b>హెచà±à°šà°°à°¿à°•</b>, మీరౠసà±à°¨à±à°¨à°¿à°¤à°®à±ˆà°¨ సమాచారమౠకలిగివà±à°‚డౠడాటానౠపంపà±à°¬à±‹à°µà±à°šà±à°¨à±à°¨à°¾à°°à±.\n"
"మీరౠనిజంగా పంపాలని à°…à°¨à±à°•à±Šà°¨à±à°šà±à°¨à±à°¨à°¾à°°à°¾ <b>%s</b>?\n"
-#: src/Gui/CCReporterDialog.py:111
-msgid "Brief description how to reproduce this or what you did..."
-msgstr "దీనిని మరలా యెలా రాబటà±à°Ÿà°¾à°²à°¿ అనేదాని à°—à±à°°à°¿à°‚à°šà°¿ మరియౠమీరౠయేమి చేయాలి అనేదాని à°—à±à°°à°¿à°‚à°šà°¿ సోదాహరణమà±..."
-
-#: src/Gui/dialogs.glade:7
+#: ../src/Gui/dialogs.glade.h:1
msgid "Report done"
msgstr "నివేదిక అయినది"
-#: src/Gui/dialogs.glade:47 src/Gui/settings.glade:695
-#: src/Gui/settings.glade:785
+#: ../src/Gui/dialogs.glade.h:2 ../src/Gui/settings.glade.h:27
msgid "gtk-ok"
msgstr "gtk-ok"
-#: src/Gui/PluginSettingsUI.py:17
+#: ../src/Gui/PluginSettingsUI.py:18
msgid "Can't find PluginDialog widget in UI description!"
msgstr "UI వివరణనందౠపà±à°²à°—à°¿à°¨à±â€Œà°¡à±ˆà°²à°¾à°—ౠవిడà±à°œà°Ÿà±â€Œà°¨à± à°•à°¨à±à°—ొనలేక పోయింది!"
-#: src/Gui/PluginSettingsUI.py:21
+#. we shouldn't get here, but just to be safe
+#: ../src/Gui/PluginSettingsUI.py:24
#, python-format
msgid "No UI for plugin %s"
msgstr "à°ªà±à°²à°—ినౠ%s కొరకౠUI లేదà±"
-#: src/Gui/PluginSettingsUI.py:38 src/Gui/PluginSettingsUI.py:64
+#: ../src/Gui/PluginSettingsUI.py:55 ../src/Gui/PluginSettingsUI.py:81
msgid "combo box is not implemented"
msgstr "కాంబో పెటà±à°Ÿà±† అభివృదà±à°¦à°¿ పరచలేదà±"
-#: src/Gui/PluginSettingsUI.py:47
+#: ../src/Gui/PluginSettingsUI.py:64
msgid "Nothing to hydrate!"
msgstr "హైడà±à°°à±‡à°Ÿà± à°…à°—à±à°Ÿà°•à± à°à°®à±€à°²à±‡à°¦à±!"
-#: src/Gui/report.glade:64
+#: ../src/Gui/report.glade.h:2
msgid "Comment"
msgstr "à°µà±à°¯à°¾à°–à±à°¯à°¾à°¨à°®à±"
-#: src/Gui/report.glade:104 src/Gui/settings.glade:682
-#: src/Gui/settings.glade:797
-msgid "gtk-cancel"
-msgstr "gtk-cancel"
+#: ../src/Gui/report.glade.h:3
+msgid "How to reproduce (in a few simple steps)"
+msgstr "ఎలా తిరిగివà±à°¤à±à°ªà°¨à±à°¨à°‚ చేయాలి (కొదà±à°¦à°¿ à°¸à±à°Ÿà±†à°ªà±à°¸à±à°²à±‹)"
-#: src/Gui/report.glade:119
+#: ../src/Gui/report.glade.h:5
msgid "Send"
msgstr "పంపà±à°®à±"
-#: src/Gui/SettingsDialog.py:34 src/Gui/SettingsDialog.py:51
+#: ../src/Gui/SettingsDialog.py:33 ../src/Gui/SettingsDialog.py:50
msgid "<b>Select plugin</b>"
msgstr "<b>à°ªà±à°²à°—ినౠయెంచà±à°•à±Šà°¨à±à°®à±</b>"
-#: src/Gui/SettingsDialog.py:37
+#: ../src/Gui/SettingsDialog.py:36
msgid "<b>Select database backend</b>"
msgstr "<b>డాటాబేసౠబà±à°¯à°¾à°•à±†à°‚డౠయెంపికచేయà±à°®à±</b>"
-#: src/Gui/SettingsDialog.py:165
+#: ../src/Gui/SettingsDialog.py:165
msgid "Remove this job"
msgstr "à°ˆ జాబà±â€Œà°¨à± తీసివేయà±à°®à±"
-#: src/Gui/SettingsDialog.py:208
+#: ../src/Gui/SettingsDialog.py:208
msgid "Remove this action"
msgstr "à°ˆ à°šà°°à±à°¯à°¨à± తీసివేయà±à°®à±"
-#: src/Gui/settings.glade:6
-msgid "Settings"
-msgstr "అమరికలà±"
+#: ../src/Gui/settings.glade.h:1
+msgid "<b>Analyzer plugin</b>"
+msgstr "<b>విశà±à°²à±‡à°·à°•à°¿ à°ªà±à°²à°—à°¿à°¨à±à°¸à±</b>"
-#: src/Gui/settings.glade:46 src/Gui/settings.glade:55
-#: src/Gui/settings.glade:107 src/Gui/settings.glade:120
-#: src/Gui/settings.glade:133
-msgid "Nothing selected"
-msgstr "à°à°¦à±€ యెంపికకాలేదà±"
+#: ../src/Gui/settings.glade.h:2
+msgid "<b>Associated action</b>"
+msgstr "<b>సంభందిత à°šà°°à±à°¯</b>"
-#: src/Gui/settings.glade:72
-msgid "Web Site:"
-msgstr "వెబౠసైటà±:"
+#: ../src/Gui/settings.glade.h:3
+msgid "<b>Plugin</b>"
+msgstr "<b>à°ªà±à°²à°—à°¿à°¨à±</b>"
-#: src/Gui/settings.glade:84
+#: ../src/Gui/settings.glade.h:4
+msgid "<b>Time (or period)</b>"
+msgstr "<b>సమయం (లేదా కాలం)</b>"
+
+#: ../src/Gui/settings.glade.h:5
+msgid "Analyzers, Actions, Reporters"
+msgstr "విశà±à°²à±‡à°·à°•à°¿à°²à±, à°šà°°à±à°¯à°²à±, నివేదికలà±"
+
+#: ../src/Gui/settings.glade.h:6
msgid "Author:"
msgstr "మూలకరà±à°¤:"
-#: src/Gui/settings.glade:97
-msgid "Version:"
-msgstr "వరà±à°·à°¨à±:"
-
-#: src/Gui/settings.glade:152
-msgid "Plugin Details"
-msgstr "à°ªà±à°²à°—ినౠవివరమà±à°²à±"
+#: ../src/Gui/settings.glade.h:7
+msgid "Blacklisted packages: "
+msgstr "à°¬à±à°²à°¾à°•à±â€Œà°²à°¿à°¸à±à°Ÿà±ˆà°¨ à°ªà±à°¯à°¾à°•à±‡à°œà±€à°²à±: "
-#: src/Gui/settings.glade:179
+#: ../src/Gui/settings.glade.h:8
msgid "C_onfigure plugin"
msgstr "à°ªà±à°²à°—ినౠఆకృతీకరించà±à°®à± (_o)"
-#: src/Gui/settings.glade:191
-msgid "gtk-close"
-msgstr "gtk-close"
-
-#: src/Gui/settings.glade:221
-msgid "Global Settings"
-msgstr "సారà±à°µà°¤à±à°°à°¿à°• అమరికలà±"
-
-#: src/Gui/settings.glade:240
+#: ../src/Gui/settings.glade.h:9
msgid "Check package GPG signature"
msgstr "à°ªà±à°¯à°¾à°•à±‡à°œà±€ GPG సంతకమà±à°¨à± పరిశీలించà±à°®à±"
-#: src/Gui/settings.glade:256
+#: ../src/Gui/settings.glade.h:10
+msgid "Common"
+msgstr "ఉమà±à°®à°¡à°¿"
+
+#: ../src/Gui/settings.glade.h:11
+msgid "Cron"
+msgstr "à°•à±à°°à°¾à°¨à±"
+
+#: ../src/Gui/settings.glade.h:12
msgid "Database backend: "
msgstr "డాటాబేసౠబà±à°¯à°¾à°•à±†à°‚à°¡à±: "
-#: src/Gui/settings.glade:281
-msgid "Blacklisted packages: "
-msgstr "à°¬à±à°²à°¾à°•à±â€Œà°²à°¿à°¸à±à°Ÿà±ˆà°¨ à°ªà±à°¯à°¾à°•à±‡à°œà±€à°²à±: "
+#: ../src/Gui/settings.glade.h:13
+msgid "Edit blacklisted packages"
+msgstr "à°¬à±à°²à°¾à°•à±â€Œà°²à°¿à°¸à±à°Ÿà± చేసిన à°ªà±à°¯à°¾à°•à±‡à°œà±€à°²à°¨à± సరికూరà±à°šà±à°®à±"
-#: src/Gui/settings.glade:294
-msgid "Max coredump storage size(MB):"
-msgstr "à°—à°°à°¿à°·à±à°Ÿ కొరà±â€Œà°¡à°‚పౠనిలà±à°µ పరిమాణమà±(MB):"
+#: ../src/Gui/settings.glade.h:14
+msgid "GPG Keys"
+msgstr "GPG కీలà±"
-#: src/Gui/settings.glade:307
+#: ../src/Gui/settings.glade.h:15
msgid "GPG keys: "
msgstr "GPG కీలà±: "
-#: src/Gui/settings.glade:349
-msgid "Edit blacklisted packages"
-msgstr "à°¬à±à°²à°¾à°•à±â€Œà°²à°¿à°¸à±à°Ÿà± చేసిన à°ªà±à°¯à°¾à°•à±‡à°œà±€à°²à°¨à± సరికూరà±à°šà±à°®à±"
+#: ../src/Gui/settings.glade.h:16
+msgid "Global Settings"
+msgstr "సారà±à°µà°¤à±à°°à°¿à°• అమరికలà±"
-#: src/Gui/settings.glade:408
-msgid "Common"
-msgstr "ఉమà±à°®à°¡à°¿"
+#: ../src/Gui/settings.glade.h:17
+msgid "Max coredump storage size(MB):"
+msgstr "à°—à°°à°¿à°·à±à°Ÿ కొరà±â€Œà°¡à°‚పౠనిలà±à°µ పరిమాణమà±(MB):"
-#: src/Gui/settings.glade:438
-msgid "<b>Plugin</b>"
-msgstr "<b>à°ªà±à°²à°—à°¿à°¨à±</b>"
+#: ../src/Gui/settings.glade.h:18
+msgid "Nothing selected"
+msgstr "à°à°¦à±€ యెంపికకాలేదà±"
-#: src/Gui/settings.glade:448
-msgid "<b>Time (or period)</b>"
-msgstr "<b>సమయం (లేదా కాలం)</b>"
+#: ../src/Gui/settings.glade.h:19
+msgid "Plugin Details"
+msgstr "à°ªà±à°²à°—ినౠవివరమà±à°²à±"
-#: src/Gui/settings.glade:510 src/Gui/settings.glade:624
-#: src/Gui/settings.glade:761
-msgid "gtk-add"
-msgstr "gtk-add"
+#: ../src/Gui/settings.glade.h:20
+msgid "Settings"
+msgstr "అమరికలà±"
-#: src/Gui/settings.glade:534
-msgid "Cron"
-msgstr "à°•à±à°°à°¾à°¨à±"
+#: ../src/Gui/settings.glade.h:21
+msgid "This function is not implemented yet!"
+msgstr "à°ˆ à°ªà±à°°à°®à±‡à°¯à°‚ యింకా అమలà±à°²à±‹à°•à°¿ రాలేదà±!"
-#: src/Gui/settings.glade:551
-msgid "<b>Analyzer plugin</b>"
-msgstr "<b>విశà±à°²à±‡à°·à°•à°¿ à°ªà±à°²à°—à°¿à°¨à±à°¸à±</b>"
+#: ../src/Gui/settings.glade.h:22
+msgid "Version:"
+msgstr "వరà±à°·à°¨à±:"
-#: src/Gui/settings.glade:561
-msgid "<b>Associated action</b>"
-msgstr "<b>సంభందిత à°šà°°à±à°¯</b>"
+#: ../src/Gui/settings.glade.h:23
+msgid "Web Site:"
+msgstr "వెబౠసైటà±:"
-#: src/Gui/settings.glade:648
-msgid "Analyzers, Actions, Reporters"
-msgstr "విశà±à°²à±‡à°·à°•à°¿à°²à±, à°šà°°à±à°¯à°²à±, నివేదికలà±"
+#: ../src/Gui/settings.glade.h:24
+msgid "gtk-add"
+msgstr "gtk-add"
-#: src/Gui/settings.glade:700
-msgid "This function is not implemented yet!"
-msgstr "à°ˆ à°ªà±à°°à°®à±‡à°¯à°‚ యింకా అమలà±à°²à±‹à°•à°¿ రాలేదà±!"
+#: ../src/Gui/settings.glade.h:25
+msgid "gtk-cancel"
+msgstr "gtk-cancel"
-#: src/Gui/settings.glade:738
-msgid "GPG Keys"
-msgstr "GPG కీలà±"
+#: ../src/Gui/settings.glade.h:26
+msgid "gtk-close"
+msgstr "gtk-close"
-#: src/Gui/settings.glade:773
+#: ../src/Gui/settings.glade.h:28
msgid "gtk-remove"
msgstr "gtk-remove"
-#: src/Applet/Applet.cpp:71
+#: ../src/Applet/Applet.cpp:79
#, c-format
msgid "A crash in package %s has been detected"
msgstr "à°ªà±à°¯à°¾à°•à±‡à°œà±€ %s నందౠవొక à°•à±à°°à°¾à°·à± à°—à±à°°à±à°¤à°¿à°‚చబడింది"
-#: src/Applet/Applet.cpp:130
+#: ../src/Applet/Applet.cpp:138
msgid "ABRT service has been started"
msgstr "ABRT సేవ à°ªà±à°°à°¾à°°à°‚భించబడింది"
-#: src/Applet/Applet.cpp:132 src/Applet/Applet.cpp:246
+#: ../src/Applet/Applet.cpp:140 ../src/Applet/Applet.cpp:254
msgid "ABRT service is not running"
msgstr "ABRT సేవ నడà±à°šà±à°Ÿà°²à±‡à°¦à±"
-#: src/Applet/CCApplet.cpp:185
+#: ../src/Applet/CCApplet.cpp:185
msgid "Warning"
msgstr "హెచà±à°šà°°à°¿à°•"
-#: src/Daemon/Daemon.cpp:546
+#: ../src/Daemon/Daemon.cpp:520
msgid ""
"Report size exceeded the quota. Please check system's MaxCrashReportsSize "
"value in abrt.conf."
@@ -419,120 +458,125 @@ msgstr ""
"నివేదిక పరిమాణమౠకోటానౠమించినది. abrt.conf నందౠసిసà±à°Ÿà°®à± యొకà±à°• MaxCrashReportsSize విలà±à°µà°¨à± "
"పరిశీలించండి."
-#: lib/Plugins/Bugzilla.cpp:83
-msgid "Empty login and password. Please check Bugzilla.conf"
-msgstr "ఖాళీ లాగినౠమరియౠసంకేతపదమà±. దయచేసి Bugzilla.conf పరిశీలించండి"
-
-#: lib/Plugins/Bugzilla.cpp:227
-msgid "Bug is already reported: "
-msgstr "బగౠయిపà±à°ªà°Ÿà°¿à°•à±‡ నివేదించబడింది: "
-
-#: lib/Plugins/Bugzilla.cpp:282
+#: ../lib/Plugins/Bugzilla.cpp:209
#, c-format
-msgid "Binary file %s will not be reported."
-msgstr "బైనరీ దసà±à°¤à±à°°à°®à± %s నివేదించబడబోదà±."
+msgid "Bug is already reported: %i"
+msgstr "బగౠయిపà±à°ªà°Ÿà°¿à°•à±‡ నివేదించబడింది: %i"
-#: lib/Plugins/Bugzilla.cpp:352
-msgid "New bug id: "
-msgstr "కొతà±à°¤ బగౠid: "
+#: ../lib/Plugins/Bugzilla.cpp:271
+#, c-format
+msgid "New bug id: %i"
+msgstr "కొతà±à°¤ బగౠid: %i"
-#: lib/Plugins/Bugzilla.cpp:421
+#: ../lib/Plugins/Bugzilla.cpp:364
msgid "Checking for duplicates..."
msgstr "నకిలీల కొరకౠపరిశీలించà±à°šà±à°¨à±à°¨à°¦à°¿..."
-#: lib/Plugins/Bugzilla.cpp:424 lib/Plugins/Bugzilla.cpp:436
+#: ../lib/Plugins/Bugzilla.cpp:367
msgid "Logging into bugzilla..."
msgstr "బగà±â€Œà°œà°¿à°²à±à°²à°¾ లోనికి లాగినౠఅవà±à°¤à±‹à°‚ది..."
-#: lib/Plugins/Bugzilla.cpp:427
-msgid "Check CC and add coment +1..."
-msgstr "CCనౠపరిశీలించà±à°®à± మరియౠవà±à°¯à°¾à°–à±à°¯à°¾à°¨à°®à± జతచేయà±à°®à± +1..."
+#: ../lib/Plugins/Bugzilla.cpp:371
+msgid "Empty login and password. Please check Bugzilla.conf"
+msgstr "ఖాళీ లాగినౠమరియౠసంకేతపదమà±. దయచేసి Bugzilla.conf పరిశీలించండి"
+
+#: ../lib/Plugins/Bugzilla.cpp:377
+msgid "Checking CC..."
+msgstr "CC పరిశీలించà±à°šà±à°¨à±à°¨à°¦à°¿..."
-#: lib/Plugins/Bugzilla.cpp:448
+#: ../lib/Plugins/Bugzilla.cpp:386
msgid "Creating new bug..."
msgstr "కొతà±à°¤ బగà±â€Œà°¨à± సృషà±à°Ÿà°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿..."
-#: lib/Plugins/Bugzilla.cpp:453
+#: ../lib/Plugins/Bugzilla.cpp:390
msgid "Logging out..."
msgstr "లాగà±à°…à°µà±à°Ÿà± à°…à°µà±à°šà±à°¨à±à°¨à°¦à°¿..."
-#: lib/Plugins/Kerneloops.cpp:37
+#: ../lib/Plugins/Kerneloops.cpp:37
msgid "Getting local universal unique identification"
msgstr "లోకలౠయూనివరà±à°¸à°²à± à°¯à±à°¨à°¿à°•à± à°—à±à°°à±à°¤à°¿à°‚à°ªà±à°¨à± పొందà±à°¤à±‹à°‚ది"
-#: lib/Plugins/CCpp.cpp:146
+#: ../lib/Plugins/CCpp.cpp:254
msgid "Getting backtrace..."
msgstr "బాకà±â€Œà°Ÿà±à°°à±‡à°¸à± పొందà±à°šà±à°¨à±à°¨à°¦à°¿..."
-#: lib/Plugins/CCpp.cpp:410
+#: ../lib/Plugins/CCpp.cpp:552 ../lib/Plugins/CCpp.cpp:679
msgid "Searching for debug-info packages..."
msgstr "డీబగà±-సమాచార à°ªà±à°¯à°¾à°•à±‡à°œà±€à°² కొరకౠశోధించà±à°šà±à°¨à±à°¨à°¦à°¿..."
-#: lib/Plugins/CCpp.cpp:444
+#: ../lib/Plugins/CCpp.cpp:614 ../lib/Plugins/CCpp.cpp:713
msgid "Downloading and installing debug-info packages..."
msgstr "డీబగà±-సమాచార à°ªà±à°¯à°¾à°•à±‡à°œà±€à°²à°¨à± డౌనà±â€Œà°²à±‹à°¡à± చేయà±à°šà±à°¨à±à°¨à°¦à°¿ మరియౠసంసà±à°¥à°¾à°ªà°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿..."
-#: lib/Plugins/CCpp.cpp:506
+#: ../lib/Plugins/CCpp.cpp:818
msgid "Getting local universal unique identification..."
msgstr "లోకలౠయూనివరà±à°¸à°²à± à°¯à±à°¨à°¿à°•à± à°—à±à°°à±à°¤à°¿à°‚à°ªà±à°¨à± పొందà±à°šà±à°¨à±à°¨à°¦à°¿..."
-#: lib/Plugins/CCpp.cpp:525
+#: ../lib/Plugins/CCpp.cpp:837
msgid "Getting global universal unique identification..."
msgstr "à°—à±à°²à±‹à°¬à°²à± యూనివరà±à°¸à°²à± à°¯à±à°¨à°¿à°•à± à°—à±à°°à±à°¤à°¿à°‚à°ªà±à°¨à± పొందà±à°šà±à°¨à±à°¨à°¦à°¿..."
-#: lib/Plugins/CCpp.cpp:576
+#: ../lib/Plugins/CCpp.cpp:882
msgid "Starting report creation..."
msgstr "నివేదిక సృషà±à°Ÿà±€à°•à°°à°£à°¨à± à°ªà±à°°à°¾à°°à°‚à°­à°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿..."
-#: lib/Plugins/CCpp.cpp:605
+#: ../lib/Plugins/CCpp.cpp:912
msgid "Skipping debuginfo installation"
msgstr "డీబగà±â€Œà°¸à°®à°¾à°šà°¾à°° సంసà±à°¥à°¾à°ªà°¨à°¨à± దాటవేసà±à°¤à±‹à°‚ది"
-#: lib/Plugins/KerneloopsReporter.cpp:101
+#: ../lib/Plugins/KerneloopsReporter.cpp:102
msgid "Creating and submitting a report..."
msgstr "నివేదికనౠసృషà±à°Ÿà°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿ మరియౠఅపà±à°ªà°œà±†à°ªà±à°ªà±à°šà±à°¨à±à°¨à°¦à°¿..."
-#: lib/Plugins/Logger.cpp:58 lib/Plugins/Mailx.cpp:123
+#: ../lib/Plugins/Logger.cpp:65 ../lib/Plugins/Mailx.cpp:124
msgid "Creating a report..."
msgstr "నివేదికనౠసృషà±à°Ÿà°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿..."
-#: lib/Plugins/RunApp.cpp:62
+#: ../lib/Plugins/RunApp.cpp:64
msgid "Executing RunApp plugin..."
msgstr "RunApp à°ªà±à°²à°—ినౠనిరà±à°µà°°à±à°¤à°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿..."
-#: lib/Plugins/FileTransfer.cpp:60 lib/Plugins/FileTransfer.cpp:355
+#: ../lib/Plugins/FileTransfer.cpp:63 ../lib/Plugins/FileTransfer.cpp:384
msgid "FileTransfer: URL not specified"
msgstr "దసà±à°¤à±à°°à°¬à°¦à°²à±€à°•à°°à°£: URL తెలà±à°ªà°¬à°¡à°²à±‡à°¦à±"
-#: lib/Plugins/FileTransfer.cpp:77
+#: ../lib/Plugins/FileTransfer.cpp:67
#, c-format
-msgid "Sending archive %s via %s"
-msgstr "ఆరà±à°šà°¿à°µà± %sనౠ%s à°¦à±à°µà°¾à°°à°¾ పంపà±à°šà±à°¨à±à°¨à°¦à°¿"
+msgid "Sending archive %s to %s"
+msgstr "ఆరà±à°šà°¿à°µà± %sనౠ%s కౠపంపà±à°šà±à°¨à±à°¨à°¦à°¿"
-#: lib/Plugins/FileTransfer.cpp:284
+#: ../lib/Plugins/FileTransfer.cpp:309
msgid "File Transfer: Creating a report..."
msgstr "దసà±à°¤à±à°° బదిలీకరణ: నివేదికనౠసృషà±à°Ÿà°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿..."
-#: lib/Plugins/FileTransfer.cpp:305 lib/Plugins/FileTransfer.cpp:334
-msgid "CFileTransfer::Run(): Cannot create and send an archive: "
-msgstr "CFileTransfer::Run(): ఆరà±à°šà°¿à°µà±à°¨à± సృషà±à°Ÿà°¿à°‚చలేదౠమరియౠపంపలేదà±: "
+#: ../lib/Plugins/FileTransfer.cpp:334
+#, c-format
+msgid "Can't create and send an archive: %s"
+msgstr "ఆరà±à°šà°¿à°µà±à°¨à± సృషà±à°Ÿà°¿à°‚చలేదౠమరియౠపంపలేదà±: %s"
+
+#: ../lib/Plugins/FileTransfer.cpp:359
+#, c-format
+msgid "Can't create and send an archive %s"
+msgstr "ఆరà±à°šà°¿à°µà± %sనౠసృషà±à°Ÿà°¿à°‚చలేదౠమరియౠపంపలేదà±"
-#: lib/Plugins/KerneloopsScanner.cpp:79
+#: ../lib/Plugins/KerneloopsScanner.cpp:84
msgid "Creating kernel oops crash reports..."
msgstr "కెరà±à°¨à°²à± oops à°•à±à°°à°¾à°·à± నివేదికలనౠసృషà±à°Ÿà°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿..."
-#: lib/Plugins/Mailx.cpp:109
+#: ../lib/Plugins/Mailx.cpp:109
msgid "Sending an email..."
msgstr "ఈమెయిలౠపంపà±à°šà±à°¨à±à°¨à°¦à°¿..."
-#: lib/Plugins/SOSreport.cpp:113
+#: ../lib/Plugins/SOSreport.cpp:100
msgid "Executing SOSreport plugin..."
msgstr "SOSreport à°ªà±à°²à°—ినౠనిరà±à°µà°°à±à°¤à°¿à°‚à°šà±à°šà±à°¨à±à°¨à°¦à°¿..."
-#: lib/Plugins/SOSreport.cpp:135
-msgid "running sosreport: "
-msgstr "sosreport నడà±à°ªà±à°šà±à°¨à±à°¨à°¦à°¿: "
+#: ../lib/Plugins/SOSreport.cpp:122
+#, c-format
+msgid "running sosreport: %s"
+msgstr "sosreport నడà±à°ªà±à°šà±à°¨à±à°¨à°¦à°¿: %s"
-#: lib/Plugins/SOSreport.cpp:150
+#: ../lib/Plugins/SOSreport.cpp:137
msgid "done running sosreport"
msgstr "sosreport నడà±à°ªà±à°Ÿ అయినది"
+
diff --git a/po/zh_CN.po b/po/zh_CN.po
index be4c6859..7a1d2796 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -2,12 +2,13 @@
# This file is distributed under the same license as the PACKAGE package.
# Eunju Kim <eukim@redhat.com>, 2009.
# cyrushmh <cyrushmh@vip.qq.com;cyrusyzgtt@gmail.com>, 2009.
+#: ../src/Gui/CCReporterDialog.py:191
msgid ""
msgstr ""
"Project-Id-Version: abrt.master\n"
"Report-Msgid-Bugs-To: jmoskovc@redhat.com\n"
-"POT-Creation-Date: 2009-10-08 04:40+0000\n"
-"PO-Revision-Date: 2009-10-08 15:08+0800\n"
+"POT-Creation-Date: 2009-11-18 08:52+0000\n"
+"PO-Revision-Date: 2009-11-18 17:28+0800\n"
"Last-Translator: cyrushmh <cyrushmh@vip.qq.com;cyrusyzgtt@gmail.com>\n"
"Language-Team: cvsl10n <>\n"
"MIME-Version: 1.0\n"
@@ -27,23 +28,23 @@ msgstr "å¦ä¸€ç”¨æˆ·æœºå·²åœ¨è¿è¡Œä¸­ï¼Œå°è¯•å”¤é†’中。"
msgid "Got unexpected data from daemon (is the database properly updated?)."
msgstr "从Daemon得到éžé¢„期的数æ®ï¼ˆæ•°æ®åº“有å¦æ­£ç¡®æ›´æ–°ï¼Ÿï¼‰"
-#: ../src/Gui/ABRTPlugin.py:48
+#: ../src/Gui/ABRTPlugin.py:55
msgid "Analyzer plugins"
msgstr "Analyzer æ’件 "
-#: ../src/Gui/ABRTPlugin.py:49
+#: ../src/Gui/ABRTPlugin.py:56
msgid "Action plugins"
msgstr "Action æ’件 "
-#: ../src/Gui/ABRTPlugin.py:50
+#: ../src/Gui/ABRTPlugin.py:57
msgid "Reporter plugins"
msgstr "Reporter æ’件 "
-#: ../src/Gui/ABRTPlugin.py:51
+#: ../src/Gui/ABRTPlugin.py:58
msgid "Database plugins"
msgstr "Database æ’件 "
-#: ../src/Gui/ABRTPlugin.py:90
+#: ../src/Gui/ABRTPlugin.py:97
msgid "Plugin name is not set, can't load it's settings"
msgstr "æ’件å未设定,无法装载其设置。"
@@ -63,7 +64,7 @@ msgstr ""
"Daemon没有返回有效的报告内容。\n"
"调试内容是å¦ç¼ºå¤±ï¼Ÿ"
-#: ../src/Gui/ccgui.glade.h:1
+#: ../src/Gui/ccgui.glade.h:1 ../src/Gui/report.glade.h:1
msgid " "
msgstr " "
@@ -71,7 +72,7 @@ msgstr " "
msgid "(C) 2009 Red Hat, Inc."
msgstr "(C) 2009 Red Hat, Inc."
-#: ../src/Gui/ccgui.glade.h:3 ../src/Gui/CCMainWindow.py:240
+#: ../src/Gui/ccgui.glade.h:3 ../src/Gui/CCMainWindow.py:244
msgid "<b>Not reported!</b>"
msgstr "<b>没有报告!</b> "
@@ -83,7 +84,7 @@ msgstr "<span color=\"white\">说明</span> "
msgid "About ABRT"
msgstr "关于 ABRT "
-#: ../src/Gui/ccgui.glade.h:6
+#: ../src/Gui/ccgui.glade.h:6 ../src/Gui/abrt.desktop.in.h:1
msgid "Automatic Bug Reporting Tool"
msgstr "自动错误回报工具 (ABRT) "
@@ -99,7 +100,7 @@ msgstr "请ç¨å€™â€¦â€¦"
msgid "Plugins"
msgstr "æ’件"
-#: ../src/Gui/ccgui.glade.h:10 ../src/Gui/report.glade.h:2
+#: ../src/Gui/ccgui.glade.h:10 ../src/Gui/report.glade.h:4
msgid "Report"
msgstr "报告 "
@@ -162,14 +163,23 @@ msgid "Date"
msgstr "日期 "
#: ../src/Gui/CCMainWindow.py:91
-msgid "Crash Rate"
-msgstr "当机比率"
+msgid "Crash count"
+msgstr "崩溃计数"
#: ../src/Gui/CCMainWindow.py:93
msgid "User"
msgstr "用户 "
-#: ../src/Gui/CCMainWindow.py:178
+#: ../src/Gui/CCMainWindow.py:160
+#, python-format
+msgid ""
+"Can't show the settings dialog\n"
+"%s"
+msgstr ""
+"ä¸èƒ½æ˜¾ç¤ºè®¾ç½®å¯¹è¯æ¡†\n"
+"%s"
+
+#: ../src/Gui/CCMainWindow.py:181
#, python-format
msgid ""
"Unable to finish current task!\n"
@@ -178,7 +188,7 @@ msgstr ""
"ä¸èƒ½å®Œç»“现有程åºï¼\n"
"%s"
-#: ../src/Gui/CCMainWindow.py:195
+#: ../src/Gui/CCMainWindow.py:198
#, python-format
msgid ""
"Error while loading the dumplist, please check if abrt daemon is running\n"
@@ -187,16 +197,16 @@ msgstr ""
"dumplist装入时å‘生错误,请检查 abrt daemon是å¦è¿è¡Œä¸­\n"
" %s "
-#: ../src/Gui/CCMainWindow.py:205
+#: ../src/Gui/CCMainWindow.py:208
#, python-format
msgid "Can't get username for uid %s"
msgstr "找ä¸åˆ° uid %s 的用户å称"
-#: ../src/Gui/CCMainWindow.py:232
+#: ../src/Gui/CCMainWindow.py:236
msgid "<b>This crash has been reported, you can find the report(s) at:</b>\n"
msgstr "<b>这个错误已ç»æŠ¥å‘Šï¼Œä½ å¯ä»¥åœ¨è¿™ä¸ªåœ°ç‚¹æ‰¾åˆ°è¿™ä¸ªæŠ¥å‘Šï¼š</b>\n"
-#: ../src/Gui/CCMainWindow.py:292
+#: ../src/Gui/CCMainWindow.py:296
msgid ""
"Unable to get report!\n"
"Debuginfo is missing?"
@@ -204,7 +214,7 @@ msgstr ""
"未能å–得报告书ï¼\n"
"会是因为调试数æ®çš„缺失å—?"
-#: ../src/Gui/CCMainWindow.py:308
+#: ../src/Gui/CCMainWindow.py:314
#, python-format
msgid ""
"Reporting failed!\n"
@@ -213,12 +223,39 @@ msgstr ""
"报告失败ï¼\n"
"%s "
-#: ../src/Gui/CCMainWindow.py:340
+#: ../src/Gui/CCMainWindow.py:333 ../src/Gui/CCMainWindow.py:360
#, python-format
msgid "Error getting the report: %s"
msgstr "å–得报告时出错:%s"
-#: ../src/Gui/CCReporterDialog.py:98
+#: ../src/Gui/CCReporterDialog.py:177
+msgid "Brief description how to reproduce this or what you did..."
+msgstr "简述如何å¯ä»¥å†æ¬¡è®©è¿™é—®é¢˜å‡ºçŽ°ï¼Œæˆ–æè¿°ä½ åšè¿‡ä»€ä¹ˆâ€¦â€¦"
+
+#: ../src/Gui/CCReporterDialog.py:219
+#, python-format
+msgid ""
+"Reporting disabled because the backtrace is unusable.\n"
+"Please try to install debuginfo manually using command:<span color=\"blue\"> "
+"debuginfo-install %s </span>\n"
+"then use Refresh button to regenerate the backtrace."
+msgstr ""
+"报告功能被ç¦ç”¨å› ä¸ºå‘åŽè¿½è¸ªæ˜¯ä¸å¯ç”¨çš„。\n"
+"请å°è¯•ç”¨å‘½ä»¤æ¥æ‰‹åŠ¨å®‰è£… debuginfo:<span color=\"blue\"> debuginfo-install %s "
+"</span>\n"
+"然åŽæŒ‰åˆ·æ–°æŒ‰é’®æ¥é‡æ–°ç”Ÿæˆå‘åŽè¿½è¸ªä¿¡æ¯ã€‚"
+
+#: ../src/Gui/CCReporterDialog.py:221
+msgid "The bactrace is unusable, you can't report this!"
+msgstr "å‘åŽè¿½è¸ªä¿¡æ¯æ˜¯ä¸å¯ç”¨çš„,您ä¸èƒ½æŠ¥å‘Šæ­¤é”™è¯¯ï¼"
+
+#: ../src/Gui/CCReporterDialog.py:227
+msgid ""
+"The bactrace is incomplete, please make sure you provide good steps to "
+"reproduce."
+msgstr "å‘åŽè¿½è¸ªä¿¡æ¯æ˜¯ä¸å®Œå…¨çš„,请确定您æ供了用于å†çŽ°ï¼ˆé”™è¯¯ï¼‰çš„好步骤。"
+
+#: ../src/Gui/CCReporterDialog.py:272
#, python-format
msgid ""
"<b>WARNING</b>, you're about to send data which might contain sensitive "
@@ -228,10 +265,6 @@ msgstr ""
"<b>警告</b>,将è¦ä¼ é€çš„æ•°æ®å¯èƒ½å«æœ‰æœºå¯†æƒ…报。\n"
"你确定è¦ä¼ é€<b>%s</b>å—?\n"
-#: ../src/Gui/CCReporterDialog.py:111
-msgid "Brief description how to reproduce this or what you did..."
-msgstr "简述如何å¯ä»¥å†æ¬¡è®©è¿™é—®é¢˜å‡ºçŽ°ï¼Œæˆ–æè¿°ä½ åšè¿‡ä»€ä¹ˆâ€¦â€¦"
-
#: ../src/Gui/dialogs.glade.h:1
msgid "Report done"
msgstr "报告完æˆ"
@@ -250,39 +283,39 @@ msgstr "找ä¸åˆ° PluginDialog 的用户界é¢è¯´æ˜Žï¼"
msgid "No UI for plugin %s"
msgstr "æ’件 %s 并未有用户界é¢"
-#: ../src/Gui/PluginSettingsUI.py:41 ../src/Gui/PluginSettingsUI.py:67
+#: ../src/Gui/PluginSettingsUI.py:55 ../src/Gui/PluginSettingsUI.py:81
msgid "combo box is not implemented"
msgstr "combo box还未被建构"
-#: ../src/Gui/PluginSettingsUI.py:50
+#: ../src/Gui/PluginSettingsUI.py:64
msgid "Nothing to hydrate!"
msgstr "没有需è¦hydrate的东西ï¼"
-#: ../src/Gui/report.glade.h:1
+#: ../src/Gui/report.glade.h:2
msgid "Comment"
msgstr "注释"
#: ../src/Gui/report.glade.h:3
+msgid "How to reproduce (in a few simple steps)"
+msgstr "如何(以简å•æ­¥éª¤ï¼‰å†çŽ°"
+
+#: ../src/Gui/report.glade.h:5
msgid "Send"
msgstr "å‘é€"
-#: ../src/Gui/report.glade.h:4 ../src/Gui/settings.glade.h:25
-msgid "gtk-cancel"
-msgstr "gtk-cancel"
-
-#: ../src/Gui/SettingsDialog.py:34 ../src/Gui/SettingsDialog.py:51
+#: ../src/Gui/SettingsDialog.py:33 ../src/Gui/SettingsDialog.py:50
msgid "<b>Select plugin</b>"
msgstr "<b>选择æ’件</b>"
-#: ../src/Gui/SettingsDialog.py:37
+#: ../src/Gui/SettingsDialog.py:36
msgid "<b>Select database backend</b>"
msgstr "<b>选择数æ®åº“çš„åŽå°</b>"
-#: ../src/Gui/SettingsDialog.py:168
+#: ../src/Gui/SettingsDialog.py:165
msgid "Remove this job"
msgstr "删除这项工作"
-#: ../src/Gui/SettingsDialog.py:211
+#: ../src/Gui/SettingsDialog.py:208
msgid "Remove this action"
msgstr "删除这个动作"
@@ -382,6 +415,10 @@ msgstr "网站:"
msgid "gtk-add"
msgstr "gtk-add"
+#: ../src/Gui/settings.glade.h:25
+msgid "gtk-cancel"
+msgstr "gtk-cancel"
+
#: ../src/Gui/settings.glade.h:26
msgid "gtk-close"
msgstr "gtk-close"
@@ -390,63 +427,60 @@ msgstr "gtk-close"
msgid "gtk-remove"
msgstr "gtk-remove"
-#: ../src/Applet/Applet.cpp:71
+#: ../src/Gui/abrt.desktop.in.h:2
+msgid "View and report application crashes"
+msgstr "查看和报告应用程åºå´©æºƒæƒ…况"
+
+#: ../src/Applet/Applet.cpp:79
#, c-format
msgid "A crash in package %s has been detected"
msgstr "å‘现了%s软件包的错误记录ï¼"
-#: ../src/Applet/Applet.cpp:130
-msgid "ABRT service has been started"
-msgstr "ABRT æœåŠ¡å·²ç»å¼•å¯¼äº†"
-
-#: ../src/Applet/Applet.cpp:132 ../src/Applet/Applet.cpp:246
+#: ../src/Applet/Applet.cpp:253
msgid "ABRT service is not running"
msgstr "ABRTæœåŠ¡å¹¶æœªè®¾ç½®ä¸ºè¿è¡Œ"
-#: ../src/Applet/CCApplet.cpp:185
+#: ../src/Applet/CCApplet.cpp:196
msgid "Warning"
msgstr "警告"
-#: ../src/Daemon/Daemon.cpp:546
+#: ../src/Daemon/Daemon.cpp:520
msgid ""
"Report size exceeded the quota. Please check system's MaxCrashReportsSize "
"value in abrt.conf."
msgstr "é…é¢è¶…出。请检查您在 abrt.conf 中的 MaxCrashReportsSize 数值。"
-#: ../lib/Plugins/Bugzilla.cpp:83
-msgid "Empty login and password. Please check Bugzilla.conf"
-msgstr "没有设置登录åŠå£ä»¤ã€‚请检查Bugzilla.conf文件"
-
-#: ../lib/Plugins/Bugzilla.cpp:227
-msgid "Bug is already reported: "
-msgstr "错误已报告了:"
-
-#: ../lib/Plugins/Bugzilla.cpp:282
+#: ../lib/Plugins/Bugzilla.cpp:209
#, c-format
-msgid "Binary file %s will not be reported."
-msgstr "%s 是二进制文件,将ä¸ä¼šéšæŠ¥å‘Šæ交。"
+msgid "Bug is already reported: %i"
+msgstr "错误已报告了:%i"
-#: ../lib/Plugins/Bugzilla.cpp:352
-msgid "New bug id: "
-msgstr "新的错误 id: "
+#: ../lib/Plugins/Bugzilla.cpp:271
+#, c-format
+msgid "New bug id: %i"
+msgstr "新的错误 id:%i"
-#: ../lib/Plugins/Bugzilla.cpp:421
+#: ../lib/Plugins/Bugzilla.cpp:364
msgid "Checking for duplicates..."
msgstr "检查有å¦é‡å¤â€¦â€¦"
-#: ../lib/Plugins/Bugzilla.cpp:424 ../lib/Plugins/Bugzilla.cpp:436
+#: ../lib/Plugins/Bugzilla.cpp:367
msgid "Logging into bugzilla..."
msgstr "往bugzilla登录中……"
-#: ../lib/Plugins/Bugzilla.cpp:427
-msgid "Check CC and add coment +1..."
-msgstr "确认 CC åŽæ³¨é‡Š +1 增加... "
+#: ../lib/Plugins/Bugzilla.cpp:371
+msgid "Empty login and password. Please check Bugzilla.conf"
+msgstr "没有设置登录åŠå£ä»¤ã€‚请检查Bugzilla.conf文件"
+
+#: ../lib/Plugins/Bugzilla.cpp:377
+msgid "Checking CC..."
+msgstr "检查 CC……"
-#: ../lib/Plugins/Bugzilla.cpp:448
+#: ../lib/Plugins/Bugzilla.cpp:386
msgid "Creating new bug..."
msgstr "新的错误报告生æˆä¸­â€¦â€¦"
-#: ../lib/Plugins/Bugzilla.cpp:453
+#: ../lib/Plugins/Bugzilla.cpp:390
msgid "Logging out..."
msgstr "正在登出……"
@@ -454,83 +488,98 @@ msgstr "正在登出……"
msgid "Getting local universal unique identification"
msgstr "正在å–得局域的UUID"
-#: ../lib/Plugins/CCpp.cpp:146
+#: ../lib/Plugins/CCpp.cpp:254
msgid "Getting backtrace..."
msgstr "正在å–得逆å‘跟踪数æ®â€¦â€¦"
-#: ../lib/Plugins/CCpp.cpp:415
+#: ../lib/Plugins/CCpp.cpp:552 ../lib/Plugins/CCpp.cpp:679
msgid "Searching for debug-info packages..."
msgstr "debug-info 软件包寻找中……"
-#: ../lib/Plugins/CCpp.cpp:451
+#: ../lib/Plugins/CCpp.cpp:614 ../lib/Plugins/CCpp.cpp:713
msgid "Downloading and installing debug-info packages..."
msgstr "debug-info 软件包下载åŠå®‰è£…中……"
-#: ../lib/Plugins/CCpp.cpp:513
+#: ../lib/Plugins/CCpp.cpp:818
msgid "Getting local universal unique identification..."
msgstr "正在å–得局域的UUID……"
-#: ../lib/Plugins/CCpp.cpp:532
+#: ../lib/Plugins/CCpp.cpp:837
msgid "Getting global universal unique identification..."
msgstr "正在å–得全局的UUID……"
-#: ../lib/Plugins/CCpp.cpp:583
+#: ../lib/Plugins/CCpp.cpp:882
msgid "Starting report creation..."
msgstr "报告书生æˆå¼•å¯¼â€¦â€¦"
-#: ../lib/Plugins/CCpp.cpp:612
+#: ../lib/Plugins/CCpp.cpp:912
msgid "Skipping debuginfo installation"
msgstr "çœç•¥ %s 软件包的调试数æ®å®‰è£…"
-#: ../lib/Plugins/KerneloopsReporter.cpp:101
+#: ../lib/Plugins/KerneloopsReporter.cpp:102
msgid "Creating and submitting a report..."
msgstr "报告书生æˆåŠä¼ é€ä¸­â€¦â€¦"
-#: ../lib/Plugins/Logger.cpp:58 ../lib/Plugins/Mailx.cpp:123
+#: ../lib/Plugins/Logger.cpp:65
msgid "Creating a report..."
msgstr "报告书生æˆä¸­â€¦â€¦"
-#: ../lib/Plugins/RunApp.cpp:62
-msgid "Executing RunApp plugin..."
-msgstr "RunApp æ’件执行中..."
-
-#: ../lib/Plugins/FileTransfer.cpp:63 ../lib/Plugins/FileTransfer.cpp:409
+#: ../lib/Plugins/FileTransfer.cpp:63 ../lib/Plugins/FileTransfer.cpp:384
msgid "FileTransfer: URL not specified"
msgstr "文件传é€ï¼š URL未指定"
-#: ../lib/Plugins/FileTransfer.cpp:81
+#: ../lib/Plugins/FileTransfer.cpp:67
#, c-format
-msgid "Sending archive %s via %s"
-msgstr "ä¼ é€åŽ‹ç¼©æ¡£ %s,通过 %s"
+msgid "Sending archive %s to %s"
+msgstr "正在传é€å½’æ¡£ %s 至 %s"
-#: ../lib/Plugins/FileTransfer.cpp:336
+#: ../lib/Plugins/FileTransfer.cpp:309
msgid "File Transfer: Creating a report..."
msgstr "文件传é€ï¼šæŠ¥å‘Šä¹¦ç”Ÿæˆä¸­â€¦â€¦"
-#: ../lib/Plugins/FileTransfer.cpp:358 ../lib/Plugins/FileTransfer.cpp:386
-msgid "CFileTransfer::Run(): Cannot create and send an archive: "
-msgstr "CFileTransfer::Run(): ä¸èƒ½åˆ›å»ºåŠä¼ é€åŽ‹ç¼©æ¡£ï¼š"
+#: ../lib/Plugins/FileTransfer.cpp:334
+#, c-format
+msgid "Can't create and send an archive: %s"
+msgstr "ä¸èƒ½åˆ›å»ºåŠå‘é€å½’档:%s"
+
+#: ../lib/Plugins/FileTransfer.cpp:359
+#, c-format
+msgid "Can't create and send an archive %s"
+msgstr "ä¸èƒ½åˆ›å»ºåŠä¼ é€å½’æ¡£ %s"
-#: ../lib/Plugins/KerneloopsScanner.cpp:79
+#: ../lib/Plugins/KerneloopsScanner.cpp:84
msgid "Creating kernel oops crash reports..."
msgstr "内核 oops 错误报告书生æˆä¸­â€¦â€¦"
-#: ../lib/Plugins/Mailx.cpp:109
+#: ../lib/Plugins/Mailx.cpp:163
msgid "Sending an email..."
msgstr "电邮传é€ä¸­â€¦â€¦"
-#: ../lib/Plugins/SOSreport.cpp:113
+#: ../lib/Plugins/SOSreport.cpp:69
msgid "Executing SOSreport plugin..."
msgstr "SOSreport æ’件执行中……"
-#: ../lib/Plugins/SOSreport.cpp:135
-msgid "running sosreport: "
-msgstr "sosreport 执行中……"
+#: ../lib/Plugins/SOSreport.cpp:91
+#, c-format
+msgid "running sosreport: %s"
+msgstr "sosreport 执行中:%s"
-#: ../lib/Plugins/SOSreport.cpp:150
+#: ../lib/Plugins/SOSreport.cpp:95
msgid "done running sosreport"
msgstr "sosreport 执行完结"
+#~ msgid "ABRT service has been started"
+#~ msgstr "ABRT æœåŠ¡å·²ç»å¼•å¯¼äº†"
+
+#~ msgid "Binary file %s will not be reported."
+#~ msgstr "%s 是二进制文件,将ä¸ä¼šéšæŠ¥å‘Šæ交。"
+
+#~ msgid "Check CC and add coment +1..."
+#~ msgstr "确认 CC åŽæ³¨é‡Š +1 增加... "
+
+#~ msgid "Executing RunApp plugin..."
+#~ msgstr "RunApp æ’件执行中..."
+
#~ msgid "Applet is already running."
#~ msgstr "å°æ¡¯å¼å·²åœ¨è¿è¡Œä¸­ã€‚"
diff --git a/src/Applet/Applet.cpp b/src/Applet/Applet.cpp
index 2eed556a..46278c62 100644
--- a/src/Applet/Applet.cpp
+++ b/src/Applet/Applet.cpp
@@ -134,10 +134,9 @@ static void NameOwnerChanged(DBusMessage* signal)
return;
}
- if (new_owner[0])
- applet->Enable(_("ABRT service has been started"));
- else
- applet->Disable(_("ABRT service is not running"));
+// hide icon if it's visible - as NM and don't show it, if it's not
+ if(!new_owner[0])
+ applet->HideIcon();
}
static DBusHandlerResult handle_message(DBusConnection* conn, DBusMessage* msg, void* user_data)
@@ -202,7 +201,7 @@ int main(int argc, char** argv)
default:
error_msg_and_die(
"Usage: abrt-applet [-v]\n"
- "\nOptions:"
+ "\nOptions:"
"\n\t-v\tVerbose"
);
}
diff --git a/src/Applet/CCApplet.cpp b/src/Applet/CCApplet.cpp
index bae0cf8b..e6a3cf07 100644
--- a/src/Applet/CCApplet.cpp
+++ b/src/Applet/CCApplet.cpp
@@ -108,9 +108,20 @@ You should have received a copy of the GNU General Public License along with thi
CApplet::CApplet()
{
- m_pStatusIcon = gtk_status_icon_new_from_stock(GTK_STOCK_DIALOG_WARNING);
m_bDaemonRunning = true;
-
+ /* set-up icon buffers */
+ m_iAnimator = 0;
+ m_iAnimationStage = ICON_DEFAULT;
+ m_bIconsLoaded = load_icons();
+ /* - animation - */
+ if(m_bIconsLoaded == true)
+ {
+ m_pStatusIcon = gtk_status_icon_new_from_pixbuf(icon_stages_buff[ICON_DEFAULT]);
+ }
+ else
+ {
+ m_pStatusIcon = gtk_status_icon_new_from_stock(GTK_STOCK_DIALOG_WARNING);
+ }
notify_init("ABRT");
m_pNotification = notify_notification_new_with_status_icon("Warning", NULL, NULL, m_pStatusIcon);
notify_notification_set_urgency(m_pNotification, NOTIFY_URGENCY_CRITICAL);
@@ -186,7 +197,7 @@ void CApplet::CrashNotify(const char *format, ...)
if (gtk_status_icon_is_embedded(m_pStatusIcon))
notify_notification_show(m_pNotification, &err);
if (err != NULL)
- g_print(err->message);
+ error_msg(err->message);
}
void CApplet::OnAppletActivate_CB(GtkStatusIcon *status_icon, gpointer user_data)
@@ -215,7 +226,11 @@ void CApplet::OnMenuPopup_cb(GtkStatusIcon *status_icon,
guint activate_time,
gpointer user_data)
{
- if (((CApplet *)user_data)->m_pMenu != NULL)
+ CApplet *applet = (CApplet *)user_data;
+ /* stop the animation */
+ applet->stop_animate_icon();
+
+ if (applet->m_pMenu != NULL)
{
gtk_menu_popup(GTK_MENU(((CApplet *)user_data)->m_pMenu),
NULL, NULL,
@@ -227,8 +242,9 @@ void CApplet::OnMenuPopup_cb(GtkStatusIcon *status_icon,
void CApplet::ShowIcon()
{
gtk_status_icon_set_visible(m_pStatusIcon, true);
- //Active wait for icon to be REALLY visible in status area
- //while(!gtk_status_icon_is_embedded(m_pStatusIcon)) continue;
+ /* only animate if all icons are loaded, use the "gtk-warning" instead */
+ if(m_bIconsLoaded)
+ animate_icon();
}
void CApplet::onHide_cb(GtkMenuItem *menuitem, gpointer applet)
@@ -243,10 +259,11 @@ void CApplet::onAbout_cb(GtkMenuItem *menuitem, gpointer dialog)
gtk_widget_hide(GTK_WIDGET(dialog));
}
-//void CApplet::HideIcon()
-//{
-// gtk_status_icon_set_visible(m_pStatusIcon, false);
-//}
+void CApplet::HideIcon()
+{
+ gtk_status_icon_set_visible(m_pStatusIcon, false);
+ stop_animate_icon();
+}
void CApplet::Disable(const char *reason)
{
@@ -279,6 +296,58 @@ void CApplet::Enable(const char *reason)
ShowIcon();
}
+gboolean CApplet::update_icon(void *user_data)
+{
+ CApplet* applet = (CApplet*)user_data;
+ if(applet->m_pStatusIcon && applet->m_iAnimationStage < ICON_STAGE_LAST){
+ gtk_status_icon_set_from_pixbuf(applet->m_pStatusIcon,
+ applet->icon_stages_buff[applet->m_iAnimationStage++]);
+ }
+ else
+ error_msg("icon is null");
+ if(applet->m_iAnimationStage == ICON_STAGE_LAST){
+ applet->m_iAnimationStage = 0;
+ }
+ return true;
+}
+
+void CApplet::animate_icon()
+{
+ if(m_iAnimator == 0)
+ {
+ m_iAnimator = g_timeout_add(100, update_icon, this);
+ }
+}
+
+void CApplet::stop_animate_icon()
+{
+ /* animator should be 0 if icons are not loaded, so this should be safe */
+ if(m_iAnimator != 0){
+ g_source_remove(m_iAnimator);
+ gtk_status_icon_set_from_pixbuf(m_pStatusIcon, icon_stages_buff[ICON_DEFAULT]);
+ m_iAnimator = 0;
+ }
+}
+
+bool CApplet::load_icons()
+{
+ int stage;
+ for(stage = ICON_DEFAULT; stage < ICON_STAGE_LAST; stage++)
+ {
+ char name[sizeof(ICON_DIR"/abrt%02d.png")];
+ GError *error = NULL;
+ if(snprintf(name, sizeof(ICON_DIR"/abrt%02d.png"),ICON_DIR"/abrt%02d.png", stage) > 0){
+ icon_stages_buff[stage] = gdk_pixbuf_new_from_file(name, &error);
+ if(error != NULL){
+ error_msg("Can't load pixbuf from %s, animation is disabled!", name);
+ return false;
+ }
+ }
+ }
+ return true;
+}
+
+
//int CApplet::AddEvent(int pUUID, const std::string& pProgname)
//{
// m_mapEvents[pUUID] = "pProgname";
diff --git a/src/Applet/CCApplet.h b/src/Applet/CCApplet.h
index 5c42c36c..538eda51 100644
--- a/src/Applet/CCApplet.h
+++ b/src/Applet/CCApplet.h
@@ -39,12 +39,28 @@ class CApplet
NotifyNotification *m_pNotification;
// std::map<int, std::string> m_mapEvents;
bool m_bDaemonRunning;
+ int m_iAnimationStage;
+ guint m_iAnimator;
+ bool m_bIconsLoaded;
+
+ enum ICON_STAGES
+ {
+ ICON_DEFAULT,
+ ICON_STAGE1,
+ ICON_STAGE2,
+ ICON_STAGE3,
+ ICON_STAGE4,
+ ICON_STAGE5,
+ /* this must be always the last */
+ ICON_STAGE_LAST
+ } icon_stages;
+ GdkPixbuf *icon_stages_buff[ICON_STAGE_LAST];
public:
CApplet();
~CApplet();
void ShowIcon();
-// void HideIcon();
+ void HideIcon();
//void DisableIcon();
// void BlinkIcon(bool pBlink);
void SetIconTooltip(const char *format, ...);
@@ -67,6 +83,10 @@ class CApplet
gpointer user_data);
static void onHide_cb(GtkMenuItem *menuitem, gpointer applet);
static void onAbout_cb(GtkMenuItem *menuitem, gpointer applet);
+ static gboolean update_icon(void *data);
+ void animate_icon();
+ void stop_animate_icon();
+ bool load_icons();
};
#endif
diff --git a/src/Applet/Makefile.am b/src/Applet/Makefile.am
index d0980440..6fca43ab 100644
--- a/src/Applet/Makefile.am
+++ b/src/Applet/Makefile.am
@@ -15,6 +15,7 @@ abrt_applet_CPPFLAGS = \
-DDEBUG_DUMPS_DIR=\"$(DEBUG_DUMPS_DIR)\" \
-DPLUGINS_LIB_DIR=\"$(PLUGINS_LIB_DIR)\" \
-DPLUGINS_CONF_DIR=\"$(PLUGINS_CONF_DIR)\" \
+ -DICON_DIR=\"${datadir}/icons/hicolor/48x48/apps\" \
$(GTK_CFLAGS) \
$(DBUS_CFLAGS) \
-D_GNU_SOURCE
diff --git a/src/CLI/CLI.cpp b/src/CLI/CLI.cpp
index edc8df00..9f2db3f0 100644
--- a/src/CLI/CLI.cpp
+++ b/src/CLI/CLI.cpp
@@ -17,7 +17,6 @@
*/
#include <getopt.h>
#include "ABRTException.h"
-#include "ABRTSocket.h"
#include "abrtlib.h"
#include "abrt_dbus.h"
#include "DBusCommon.h"
@@ -99,20 +98,19 @@ static const struct option longopts[] =
};
/* Gets the program name from the first command line argument. */
-static char *progname(char *argv0)
+static const char *progname(const char *argv0)
{
- char* name = strrchr(argv0, '/');
+ const char* name = strrchr(argv0, '/');
if (name)
return ++name;
- else
- return argv0;
+ return argv0;
}
/* Prints abrt-cli version and some help text. */
static void usage(char *argv0)
{
- char *name = progname(argv0);
- printf("%s " VERSION "\n\n", name);
+ const char *name = progname(argv0);
+ printf("%s "VERSION"\n\n", name);
/* Message has embedded tabs. */
printf(_("Usage: %s [OPTION]\n\n"
@@ -167,7 +165,7 @@ int main(int argc, char** argv)
return 1;
case 'V':
case OPT_VERSION:
- printf("%s " VERSION "\n", progname(argv[0]));
+ printf("%s "VERSION"\n", progname(argv[0]));
return 0;
}
if (c == -1)
diff --git a/src/CLI/Makefile.am b/src/CLI/Makefile.am
index dbeb1c38..e84d426a 100644
--- a/src/CLI/Makefile.am
+++ b/src/CLI/Makefile.am
@@ -1,15 +1,11 @@
bin_PROGRAMS = abrt-cli
+# removed: ABRTSocket.h ABRTSocket.cpp
abrt_cli_SOURCES = \
CLI.cpp \
- ABRTSocket.h \
- ABRTSocket.cpp \
- run-command.h \
- run-command.cpp \
- report.h \
- report.cpp \
- dbus.h \
- dbus.cpp
+ run-command.h run-command.cpp \
+ report.h report.cpp \
+ dbus.h dbus.cpp
abrt_cli_CPPFLAGS = \
-I$(srcdir)/../../inc \
diff --git a/src/Daemon/CommLayerServerDBus.cpp b/src/Daemon/CommLayerServerDBus.cpp
index ed7e3858..2c2ca3a5 100644
--- a/src/Daemon/CommLayerServerDBus.cpp
+++ b/src/Daemon/CommLayerServerDBus.cpp
@@ -352,7 +352,7 @@ static int handle_GetPluginSettings(DBusMessage* call, DBusMessage* reply)
long unix_uid = get_remote_uid(call);
VERB1 log("got %s('%s') call from uid %ld", "GetPluginSettings", PluginName, unix_uid);
- map_plugin_settings_t plugin_settings = g_pPluginManager->GetPluginSettings(PluginName, to_string(unix_uid));
+ map_plugin_settings_t plugin_settings = g_pPluginManager->GetPluginSettings(PluginName, to_string(unix_uid).c_str());
DBusMessageIter iter;
dbus_message_iter_init_append(reply, &iter);
diff --git a/src/Daemon/CrashWatcher.cpp b/src/Daemon/CrashWatcher.cpp
index e684277c..f8595157 100644
--- a/src/Daemon/CrashWatcher.cpp
+++ b/src/Daemon/CrashWatcher.cpp
@@ -113,7 +113,7 @@ map_crash_report_t GetJobResult(const char* pUUID, const char* pUID, int force)
/* FIXME: starting from here, any shared data must be protected with a mutex.
* For example, CreateCrashReport does:
- * g_pPluginManager->GetDatabase(g_settings_sDatabase);
+ * g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str());
* which is unsafe wrt concurrent updates to g_pPluginManager state.
*/
mw_result_t res = CreateCrashReport(pUUID, pUID, force, crashReport);
diff --git a/src/Daemon/Daemon.cpp b/src/Daemon/Daemon.cpp
index 53c44d3f..087d5373 100644
--- a/src/Daemon/Daemon.cpp
+++ b/src/Daemon/Daemon.cpp
@@ -223,7 +223,7 @@ static void SetUpMW()
set_string_t::iterator it_p = g_settings_setEnabledPlugins.begin();
for (; it_p != g_settings_setEnabledPlugins.end(); it_p++)
{
- g_pPluginManager->RegisterPlugin(*it_p);
+ g_pPluginManager->RegisterPlugin(it_p->c_str());
}
VERB1 log("Adding actions or reporters");
vector_pair_string_string_t::iterator it_ar = g_settings_vectorActionsAndReporters.begin();
@@ -685,9 +685,9 @@ static void sanitize_dump_dir_rights()
/* 00777 bits are usual "rwxrwxrwx" access rights */
ensure_writable_dir(DEBUG_DUMPS_DIR, 0775, "abrt");
/* debuginfo cache */
- ensure_writable_dir(DEBUG_DUMPS_DIR"-di", 0755, "root");
+ ensure_writable_dir(DEBUG_DUMPS_DIR"-di", 0755, "root");
/* temp dir */
- ensure_writable_dir(VAR_RUN"/abrt", 0755, "root");
+ ensure_writable_dir(VAR_RUN"/abrt", 0755, "root");
}
int main(int argc, char** argv)
diff --git a/src/Daemon/MiddleWare.cpp b/src/Daemon/MiddleWare.cpp
index 0bc358e1..66bdea67 100644
--- a/src/Daemon/MiddleWare.cpp
+++ b/src/Daemon/MiddleWare.cpp
@@ -184,7 +184,7 @@ mw_result_t CreateCrashReport(const char *pUUID,
database_row_t row;
if (pUUID[0] != '\0')
{
- CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase);
+ CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str());
database->Connect();
row = database->GetUUIDData(pUUID, pUID);
database->DisConnect();
@@ -278,17 +278,21 @@ void RunActionsAndReporters(const char *pDebugDumpDir)
{
try
{
- if (g_pPluginManager->GetPluginType(it_ar->first) == REPORTER)
+ VERB3 log("RunActionsAndReporters: checking %s", it_ar->first.c_str());
+ plugin_type_t tp = g_pPluginManager->GetPluginType(it_ar->first.c_str());
+ if (tp == REPORTER)
{
- CReporter* reporter = g_pPluginManager->GetReporter(it_ar->first);
+ CReporter* reporter = g_pPluginManager->GetReporter(it_ar->first.c_str());
map_crash_report_t crashReport;
DebugDumpToCrashReport(pDebugDumpDir, crashReport);
+ VERB2 log("%s.Report(...)", it_ar->first.c_str());
reporter->Report(crashReport, plugin_settings, it_ar->second);
}
- else if (g_pPluginManager->GetPluginType(it_ar->first) == ACTION)
+ else if (tp == ACTION)
{
- CAction* action = g_pPluginManager->GetAction(it_ar->first);
+ CAction* action = g_pPluginManager->GetAction(it_ar->first.c_str());
+ VERB2 log("%s.Run('%s','%s')", it_ar->first.c_str(), pDebugDumpDir, it_ar->second.c_str());
action->Run(pDebugDumpDir, it_ar->second.c_str());
}
}
@@ -375,27 +379,31 @@ report_status_t Report(const map_crash_report_t& pCrashReport,
}
}
- // analyzer with package name (CCpp:xrog-x11-app) has higher priority
+ // analyzer with package name (CCpp:xorg-x11-app) has higher priority
std::string key = analyzer + ":" + packageName;
+ map_analyzer_actions_and_reporters_t::iterator end = s_mapAnalyzerActionsAndReporters.end();
map_analyzer_actions_and_reporters_t::iterator keyPtr = s_mapAnalyzerActionsAndReporters.find(key);
- if (keyPtr == s_mapAnalyzerActionsAndReporters.end())
+ if (keyPtr == end)
{
// if there is no such settings, then try default analyzer
keyPtr = s_mapAnalyzerActionsAndReporters.find(analyzer);
+ key = analyzer;
}
std::string message;
- if (keyPtr != s_mapAnalyzerActionsAndReporters.end())
+ if (keyPtr != end)
{
+ VERB2 log("Found AnalyzerActionsAndReporters for '%s'", key.c_str());
+
vector_pair_string_string_t::iterator it_r = keyPtr->second.begin();
for (; it_r != keyPtr->second.end(); it_r++)
{
std::string pluginName = it_r->first;
try
{
- if (g_pPluginManager->GetPluginType(pluginName) == REPORTER)
+ if (g_pPluginManager->GetPluginType(pluginName.c_str()) == REPORTER)
{
- CReporter* reporter = g_pPluginManager->GetReporter(pluginName);
+ CReporter* reporter = g_pPluginManager->GetReporter(pluginName.c_str());
#if 0 /* Using ~user/.abrt/ is bad wrt security */
std::string home = "";
map_plugin_settings_t oldSettings;
@@ -433,12 +441,12 @@ report_status_t Report(const map_crash_report_t& pCrashReport,
{
ret[pluginName].push_back("0");
ret[pluginName].push_back(e.what());
- update_client("Reporting via %s' was not successful: %s", pluginName.c_str(), e.what());
+ update_client("Reporting via '%s' was not successful: %s", pluginName.c_str(), e.what());
}
}
}
- CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase);
+ CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str());
database->Connect();
database->SetReported(UUID, UID, message);
database->DisConnect();
@@ -456,7 +464,7 @@ void DeleteDebugDumpDir(const char *pDebugDumpDir)
std::string DeleteCrashInfo(const char *pUUID,
const char *pUID)
{
- CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase);
+ CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str());
database->Connect();
database_row_t row = database->GetUUIDData(pUUID, pUID);
database->Delete(pUUID, pUID);
@@ -476,7 +484,7 @@ std::string DeleteCrashInfo(const char *pUUID,
static bool IsDebugDumpSaved(const char *pUID,
const char *pDebugDumpDir)
{
- CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase);
+ CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str());
database->Connect();
vector_database_rows_t rows = database->GetUIDData(pUID);
database->DisConnect();
@@ -604,9 +612,9 @@ static void RunAnalyzerActions(const char *pAnalyzer, const char *pDebugDumpDir)
std::string pluginName = it_a->first;
try
{
- if (g_pPluginManager->GetPluginType(pluginName) == ACTION)
+ if (g_pPluginManager->GetPluginType(pluginName.c_str()) == ACTION)
{
- CAction* action = g_pPluginManager->GetAction(pluginName);
+ CAction* action = g_pPluginManager->GetAction(pluginName.c_str());
action->Run(pDebugDumpDir, it_a->second.c_str());
}
}
@@ -635,7 +643,7 @@ static mw_result_t SaveDebugDumpToDatabase(const char *pUUID,
const char *pDebugDumpDir,
map_crash_info_t& pCrashInfo)
{
- CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase);
+ CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str());
database->Connect();
database->Insert(pUUID, pUID, pDebugDumpDir, pTime);
database_row_t row = database->GetUUIDData(pUUID, pUID);
@@ -657,7 +665,7 @@ static mw_result_t SaveDebugDumpToDatabase(const char *pUUID,
std::string getDebugDumpDir(const char *pUUID,
const char *pUID)
{
- CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase);
+ CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str());
database->Connect();
database_row_t row = database->GetUUIDData(pUUID, pUID);
database->DisConnect();
@@ -712,7 +720,7 @@ mw_result_t GetCrashInfo(const char *pUUID,
map_crash_info_t& pCrashInfo)
{
pCrashInfo.clear();
- CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase);
+ CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str());
database->Connect();
database_row_t row = database->GetUUIDData(pUUID, pUID);
database->DisConnect();
@@ -757,14 +765,14 @@ mw_result_t GetCrashInfo(const char *pUUID,
vector_pair_string_string_t GetUUIDsOfCrash(const char *pUID)
{
- CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase);
+ CDatabase* database = g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str());
vector_database_rows_t rows;
database->Connect();
rows = database->GetUIDData(pUID);
database->DisConnect();
vector_pair_string_string_t UUIDsUIDs;
- int ii;
+ unsigned ii;
for (ii = 0; ii < rows.size(); ii++)
{
UUIDsUIDs.push_back(make_pair(rows[ii].m_sUUID, rows[ii].m_sUID));
@@ -783,5 +791,6 @@ void AddAnalyzerActionOrReporter(const char *pAnalyzer,
void AddActionOrReporter(const char *pActionOrReporter,
const char *pArgs)
{
+ VERB3 log("AddActionOrReporter('%s','%s')", pActionOrReporter, pArgs);
s_vectorActionsAndReporters.push_back(make_pair(std::string(pActionOrReporter), std::string(pArgs)));
}
diff --git a/src/Daemon/PluginManager.cpp b/src/Daemon/PluginManager.cpp
index 5b871515..3867ec9b 100644
--- a/src/Daemon/PluginManager.cpp
+++ b/src/Daemon/PluginManager.cpp
@@ -30,7 +30,7 @@
/**
* Text representation of plugin types.
*/
-static const char* const plugin_type_str[] = {
+static const char *const plugin_type_str[] = {
"Analyzer",
"Action",
"Reporter",
@@ -38,61 +38,60 @@ static const char* const plugin_type_str[] = {
};
-bool LoadPluginSettings(const std::string& pPath, map_plugin_settings_t& pSettings)
+bool LoadPluginSettings(const char *pPath, map_plugin_settings_t& pSettings)
{
std::ifstream fIn;
- fIn.open(pPath.c_str());
- if (fIn.is_open())
+ fIn.open(pPath);
+ if (!fIn.is_open())
+ return false;
+
+ std::string line;
+ while (!fIn.eof())
{
- std::string line;
- while (!fIn.eof())
+ getline(fIn, line);
+
+ int ii;
+ bool is_value = false;
+ bool valid = false;
+ bool in_quote = false;
+ std::string key;
+ std::string value;
+ for (ii = 0; ii < line.length(); ii++)
{
- getline(fIn, line);
-
- int ii;
- bool is_value = false;
- bool valid = false;
- bool in_quote = false;
- std::string key = "";
- std::string value = "";
- for (ii = 0; ii < line.length(); ii++)
+ if (line[ii] == '\"')
{
- if (line[ii] == '\"')
- {
- in_quote = in_quote == true ? false : true;
- }
- if (isspace(line[ii]) && !in_quote)
- {
- continue;
- }
- if (line[ii] == '#' && !in_quote && key == "")
- {
- break;
- }
- if (line[ii] == '=' && !in_quote)
- {
- is_value = true;
- continue;
- }
- if (!is_value)
- {
- key += line[ii];
- }
- else
- {
- valid = true;
- value += line[ii];
- }
+ in_quote = in_quote == true ? false : true;
}
- if (valid && !in_quote)
+ if (isspace(line[ii]) && !in_quote)
{
- pSettings[key] = value;
+ continue;
+ }
+ if (line[ii] == '#' && !in_quote && key == "")
+ {
+ break;
+ }
+ if (line[ii] == '=' && !in_quote)
+ {
+ is_value = true;
+ continue;
+ }
+ if (!is_value)
+ {
+ key += line[ii];
+ }
+ else
+ {
+ valid = true;
+ value += line[ii];
}
}
- fIn.close();
- return true;
+ if (valid && !in_quote)
+ {
+ pSettings[key] = value;
+ }
}
- return false;
+ fIn.close();
+ return true;
}
/**
@@ -101,9 +100,9 @@ bool LoadPluginSettings(const std::string& pPath, map_plugin_settings_t& pSettin
* @param settings Plugin's settings.
* @return if it success it returns true, otherwise it returns false.
*/
-static bool SavePluginSettings(const std::string& pPath, const map_plugin_settings_t& pSettings)
+static bool SavePluginSettings(const char *pPath, const map_plugin_settings_t& pSettings)
{
- FILE* fOut = fopen(pPath.c_str(), "w");
+ FILE* fOut = fopen(pPath, "w");
if (fOut)
{
fprintf(fOut, "# Settings were written by abrt\n");
@@ -141,7 +140,7 @@ void CPluginManager::LoadPlugins()
{
name.erase(0, sizeof(PLUGINS_LIB_PREFIX) - 1);
name.erase(name.length() - sizeof(PLUGINS_LIB_EXTENSION));
- LoadPlugin(name);
+ LoadPlugin(name.c_str());
}
}
}
@@ -151,40 +150,39 @@ void CPluginManager::LoadPlugins()
void CPluginManager::UnLoadPlugins()
{
- map_abrt_plugins_t::iterator it_p;
- while ((it_p = m_mapABRTPlugins.begin()) != m_mapABRTPlugins.end())
+ map_abrt_plugins_t::iterator it;
+ while ((it = m_mapABRTPlugins.begin()) != m_mapABRTPlugins.end())
{
- std::string pluginName = it_p->first;
- UnLoadPlugin(pluginName);
+ UnLoadPlugin(it->first.c_str());
}
}
-void CPluginManager::LoadPlugin(const std::string& pName)
+void CPluginManager::LoadPlugin(const char *pName)
{
if (m_mapABRTPlugins.find(pName) == m_mapABRTPlugins.end())
{
CABRTPlugin* abrtPlugin = NULL;
try
{
- std::string libPath = PLUGINS_LIB_DIR"/"PLUGINS_LIB_PREFIX + pName + "."PLUGINS_LIB_EXTENSION;
+ std::string libPath = ssprintf(PLUGINS_LIB_DIR"/"PLUGINS_LIB_PREFIX"%s."PLUGINS_LIB_EXTENSION, pName);
abrtPlugin = new CABRTPlugin(libPath.c_str());
if (abrtPlugin->GetMagicNumber() != PLUGINS_MAGIC_NUMBER ||
(abrtPlugin->GetType() < ANALYZER && abrtPlugin->GetType() > DATABASE))
{
throw CABRTException(EXCEP_PLUGIN, "CPluginManager::LoadPlugin(): non-compatible plugin");
}
- log("Plugin %s (%s) succesfully loaded", pName.c_str(), abrtPlugin->GetVersion());
+ log("Plugin %s (%s) succesfully loaded", pName, abrtPlugin->GetVersion());
m_mapABRTPlugins[pName] = abrtPlugin;
}
catch (CABRTException& e)
{
delete abrtPlugin;
- error_msg("Failed to load plugin %s: %s", pName.c_str(), e.what());
+ error_msg("Failed to load plugin %s: %s", pName, e.what());
}
}
}
-void CPluginManager::UnLoadPlugin(const std::string& pName)
+void CPluginManager::UnLoadPlugin(const char *pName)
{
map_abrt_plugins_t::iterator abrt_plugin = m_mapABRTPlugins.find(pName);
if (abrt_plugin != m_mapABRTPlugins.end())
@@ -192,11 +190,11 @@ void CPluginManager::UnLoadPlugin(const std::string& pName)
UnRegisterPlugin(pName);
delete abrt_plugin->second;
m_mapABRTPlugins.erase(abrt_plugin);
- log("Plugin %s successfully unloaded", pName.c_str());
+ log("Plugin %s successfully unloaded", pName);
}
}
-void CPluginManager::RegisterPlugin(const std::string& pName)
+void CPluginManager::RegisterPlugin(const char *pName)
{
map_abrt_plugins_t::iterator abrt_plugin = m_mapABRTPlugins.find(pName);
if (abrt_plugin != m_mapABRTPlugins.end())
@@ -206,7 +204,7 @@ void CPluginManager::RegisterPlugin(const std::string& pName)
CPlugin* plugin = abrt_plugin->second->PluginNew();
map_plugin_settings_t pluginSettings;
- LoadPluginSettings(PLUGINS_CONF_DIR"/" + pName + "."PLUGINS_CONF_EXTENSION, pluginSettings);
+ LoadPluginSettings(ssprintf(PLUGINS_CONF_DIR"/%s."PLUGINS_CONF_EXTENSION, pName).c_str(), pluginSettings);
try
{
plugin->Init();
@@ -215,7 +213,7 @@ void CPluginManager::RegisterPlugin(const std::string& pName)
catch (CABRTException& e)
{
log("Can't initialize plugin %s(%s): %s",
- pName.c_str(),
+ pName,
plugin_type_str[abrt_plugin->second->GetType()],
e.what()
);
@@ -223,13 +221,12 @@ void CPluginManager::RegisterPlugin(const std::string& pName)
return;
}
m_mapPlugins[pName] = plugin;
- log("Registered plugin %s(%s)", pName.c_str(), plugin_type_str[abrt_plugin->second->GetType()]);
+ log("Registered plugin %s(%s)", pName, plugin_type_str[abrt_plugin->second->GetType()]);
}
}
}
-void CPluginManager::RegisterPluginDBUS(const std::string& pName,
- const char * pDBUSSender)
+void CPluginManager::RegisterPluginDBUS(const char *pName, const char *pDBUSSender)
{
int polkit_result = polkit_check_authorization(pDBUSSender,
"org.fedoraproject.abrt.change-daemon-settings");
@@ -242,7 +239,7 @@ void CPluginManager::RegisterPluginDBUS(const std::string& pName,
}
}
-void CPluginManager::UnRegisterPlugin(const std::string& pName)
+void CPluginManager::UnRegisterPlugin(const char *pName)
{
map_abrt_plugins_t::iterator abrt_plugin = m_mapABRTPlugins.find(pName);
if (abrt_plugin != m_mapABRTPlugins.end())
@@ -253,13 +250,12 @@ void CPluginManager::UnRegisterPlugin(const std::string& pName)
plugin->second->DeInit();
delete plugin->second;
m_mapPlugins.erase(plugin);
- log("UnRegistered plugin %s(%s)", pName.c_str(), plugin_type_str[abrt_plugin->second->GetType()]);
+ log("UnRegistered plugin %s(%s)", pName, plugin_type_str[abrt_plugin->second->GetType()]);
}
}
}
-void CPluginManager::UnRegisterPluginDBUS(const std::string& pName,
- const char * pDBUSSender)
+void CPluginManager::UnRegisterPluginDBUS(const char *pName, const char *pDBUSSender)
{
int polkit_result = polkit_check_authorization(pDBUSSender,
"org.fedoraproject.abrt.change-daemon-settings");
@@ -273,77 +269,68 @@ void CPluginManager::UnRegisterPluginDBUS(const std::string& pName,
}
-CAnalyzer* CPluginManager::GetAnalyzer(const std::string& pName)
+CAnalyzer* CPluginManager::GetAnalyzer(const char *pName)
{
map_plugins_t::iterator plugin = m_mapPlugins.find(pName);
if (plugin == m_mapPlugins.end())
{
- throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetAnalyzer():"
- "Analyzer plugin: '"+pName+"' is not registered.");
+ throw CABRTException(EXCEP_PLUGIN, ssprintf("Plugin '%s' is not registered", pName));
}
if (m_mapABRTPlugins[pName]->GetType() != ANALYZER)
{
- throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetAnalyzer():"
- "Plugin: '"+pName+"' is not analyzer plugin.");
+ throw CABRTException(EXCEP_PLUGIN, ssprintf("Plugin '%s' is not an analyzer plugin", pName));
}
return (CAnalyzer*)(plugin->second);
}
-CReporter* CPluginManager::GetReporter(const std::string& pName)
+CReporter* CPluginManager::GetReporter(const char *pName)
{
map_plugins_t::iterator plugin = m_mapPlugins.find(pName);
if (plugin == m_mapPlugins.end())
{
- throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetReporter():"
- "Reporter plugin: '"+pName+"' is not registered.");
+ throw CABRTException(EXCEP_PLUGIN, ssprintf("Plugin '%s' is not registered", pName));
}
if (m_mapABRTPlugins[pName]->GetType() != REPORTER)
{
- throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetReporter():"
- "Plugin: '"+pName+"' is not reporter plugin.");
+ throw CABRTException(EXCEP_PLUGIN, ssprintf("Plugin '%s' is not a reporter plugin", pName));
}
return (CReporter*)(plugin->second);
}
-CAction* CPluginManager::GetAction(const std::string& pName)
+CAction* CPluginManager::GetAction(const char *pName)
{
map_plugins_t::iterator plugin = m_mapPlugins.find(pName);
if (plugin == m_mapPlugins.end())
{
- throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetAction():"
- "Action plugin: '"+pName+"' is not registered.");
+ throw CABRTException(EXCEP_PLUGIN, ssprintf("Plugin '%s' is not registered", pName));
}
if (m_mapABRTPlugins[pName]->GetType() != ACTION)
{
- throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetAction():"
- "Plugin: '"+pName+"' is not action plugin.");
+ throw CABRTException(EXCEP_PLUGIN, ssprintf("Plugin '%s' is not an action plugin", pName));
}
return (CAction*)(plugin->second);
}
-CDatabase* CPluginManager::GetDatabase(const std::string& pName)
+CDatabase* CPluginManager::GetDatabase(const char *pName)
{
map_plugins_t::iterator plugin = m_mapPlugins.find(pName);
if (plugin == m_mapPlugins.end())
{
- throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetDatabase():"
- "Database plugin: '"+pName+"' is not registered.");
+ throw CABRTException(EXCEP_PLUGIN, ssprintf("Plugin '%s' is not registered", pName));
}
if (m_mapABRTPlugins[pName]->GetType() != DATABASE)
{
- throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetDatabase():"
- "Plugin: '"+pName+"' is not database plugin.");
+ throw CABRTException(EXCEP_PLUGIN, ssprintf("Plugin '%s' is not a database plugin", pName));
}
return (CDatabase*)(plugin->second);
}
-plugin_type_t CPluginManager::GetPluginType(const std::string& pName)
+plugin_type_t CPluginManager::GetPluginType(const char *pName)
{
map_plugins_t::iterator plugin = m_mapPlugins.find(pName);
if (plugin == m_mapPlugins.end())
{
- throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetPluginType():"
- "Plugin: '"+pName+"' is not registered.");
+ throw CABRTException(EXCEP_PLUGIN, ssprintf("Plugin '%s' is not registered", pName));
}
return m_mapABRTPlugins[pName]->GetType();
}
@@ -370,8 +357,8 @@ vector_map_string_t CPluginManager::GetPluginsInfo()
return ret;
}
-void CPluginManager::SetPluginSettings(const std::string& pName,
- const std::string& pUID,
+void CPluginManager::SetPluginSettings(const char *pName,
+ const char *pUID,
const map_plugin_settings_t& pSettings)
{
map_abrt_plugins_t::iterator abrt_plugin = m_mapABRTPlugins.find(pName);
@@ -444,8 +431,8 @@ void CPluginManager::SetPluginSettings(const std::string& pName,
#endif
}
-map_plugin_settings_t CPluginManager::GetPluginSettings(const std::string& pName,
- const std::string& pUID)
+map_plugin_settings_t CPluginManager::GetPluginSettings(const char *pName,
+ const char *pUID)
{
map_plugin_settings_t ret;
map_abrt_plugins_t::iterator abrt_plugin = m_mapABRTPlugins.find(pName);
diff --git a/src/Daemon/PluginManager.h b/src/Daemon/PluginManager.h
index d4914db6..0d3400b2 100644
--- a/src/Daemon/PluginManager.h
+++ b/src/Daemon/PluginManager.h
@@ -74,68 +74,66 @@ class CPluginManager
* A method, which loads particular plugin.
* @param pName A plugin name.
*/
- void LoadPlugin(const std::string& pName);
+ void LoadPlugin(const char *pName);
/**
* A method, which unloads particular plugin.
* @param pName A plugin name.
*/
- void UnLoadPlugin(const std::string& pName);
+ void UnLoadPlugin(const char *pName);
/**
* A method, which registers particular plugin.
* @param pName A plugin name.
*/
- void RegisterPlugin(const std::string& pName);
+ void RegisterPlugin(const char *pName);
/**
* A method, which unregister particular plugin.
* @param pName A plugin name.
*/
- void UnRegisterPlugin(const std::string& pName);
+ void UnRegisterPlugin(const char *pName);
/**
* A method, which registers particular plugin,
* called via DBUS
* @param pName A plugin name.
* @param pDBUSSender DBUS user identification
*/
- void RegisterPluginDBUS(const std::string& pName,
- const char * pDBUSSender);
+ void RegisterPluginDBUS(const char *pName, const char *pDBUSSender);
/**
* A method, which unregister particular plugin,
* called via DBUS
* @param pName A plugin name.
* @param pDBUSSender DBUS user identification
*/
- void UnRegisterPluginDBUS(const std::string& pName,
- const char * pDBUSSender);
+ void UnRegisterPluginDBUS(const char *pName, const char *pDBUSSender);
/**
* A method, which returns instance of particular analyzer plugin.
* @param pName A plugin name.
* @return An analyzer plugin.
*/
- CAnalyzer* GetAnalyzer(const std::string& pName);
+ CAnalyzer* GetAnalyzer(const char *pName);
/**
* A method, which returns instance of particular reporter plugin.
* @param pName A plugin name.
* @return A reporter plugin.
*/
- CReporter* GetReporter(const std::string& pName);
+ CReporter* GetReporter(const char *pName);
/**
* A method, which returns instance of particular action plugin.
* @param pName A plugin name.
* @return An action plugin.
*/
- CAction* GetAction(const std::string& pName);
+ CAction* GetAction(const char *pName);
/**
* A method, which returns instance of particular database plugin.
* @param pName A plugin name.
* @return A database plugin.
*/
- CDatabase* GetDatabase(const std::string& pName);
+ CDatabase* GetDatabase(const char *pName);
/**
* A method, which returns type of particular plugin.
* @param pName A plugin name.
* @return A plugin type.
*/
- plugin_type_t GetPluginType(const std::string& pName);
+ plugin_type_t GetPluginType(const char *pName);
/**
* A method, which gets all plugins info (event those plugins which are
* disabled). It can be send via DBus to GUI and displayed to an user.
@@ -150,8 +148,8 @@ class CPluginManager
* @param pUID An uid of user.
* @param pSettings A plugin's settings.
*/
- void SetPluginSettings(const std::string& pName,
- const std::string& pUID,
+ void SetPluginSettings(const char *pName,
+ const char *pUID,
const map_plugin_settings_t& pSettings);
/**
* A method, which returns plugin's settings according to user.
@@ -159,8 +157,8 @@ class CPluginManager
* @param pUID An uid of user.
* @return Plugin's settings accorting to user.
*/
- map_plugin_settings_t GetPluginSettings(const std::string& pName,
- const std::string& pUID);
+ map_plugin_settings_t GetPluginSettings(const char *pName,
+ const char *pUID);
};
/**
@@ -170,6 +168,6 @@ class CPluginManager
* @param settings A readed plugin's settings.
* @return if it success it returns true, otherwise it returns false.
*/
-bool LoadPluginSettings(const std::string& pPath,
+bool LoadPluginSettings(const char *pPath,
map_plugin_settings_t& pSettings);
#endif /*PLUGINMANAGER_H_*/
diff --git a/src/Daemon/Settings.cpp b/src/Daemon/Settings.cpp
index cefd35a4..327851f5 100644
--- a/src/Daemon/Settings.cpp
+++ b/src/Daemon/Settings.cpp
@@ -78,8 +78,11 @@ static set_string_t ParseList(const char* pList)
return set;
}
+/* (What format do we parse here?) */
static vector_pair_string_string_t ParseListWithArgs(const char *pValue)
{
+ VERB3 log(" ParseListWithArgs(%s)", pValue);
+
vector_pair_string_string_t pluginsWithArgs;
unsigned int ii;
std::string item;
@@ -88,39 +91,55 @@ static vector_pair_string_string_t ParseListWithArgs(const char *pValue)
bool is_arg = false;
for (ii = 0; pValue[ii]; ii++)
{
- if (pValue[ii] == '\"')
+ if (is_quote && pValue[ii] == '\\' && pValue[ii+1])
+ {
+ item += pValue[ii];
+ ii++;
+ item += pValue[ii];
+ continue;
+ }
+ if (pValue[ii] == '"')
{
is_quote = !is_quote;
item += pValue[ii];
+ continue;
+ }
+ if (is_quote)
+ {
+ item += pValue[ii];
+ continue;
}
- else if (pValue[ii] == '(' && !is_quote)
+ if (pValue[ii] == '(')
{
action = item;
item = "";
is_arg = true;
+ continue;
}
- else if (pValue[ii] == ')' && is_arg && !is_quote)
+ if (pValue[ii] == ')' && is_arg)
{
+ VERB3 log(" adding (%s,%s)", action.c_str(), item.c_str());
pluginsWithArgs.push_back(make_pair(action, item));
item = "";
is_arg = false;
action = "";
+ continue;
}
- else if (pValue[ii] == ',' && !is_quote && !is_arg)
+ if (pValue[ii] == ',' && !is_arg)
{
if (item != "")
{
+ VERB3 log(" adding (%s,%s)", item.c_str(), "");
pluginsWithArgs.push_back(make_pair(item, ""));
item = "";
}
+ continue;
}
- else
- {
- item += pValue[ii];
- }
+ item += pValue[ii];
}
if (item != "")
{
+ VERB3 log(" adding (%s,%s)", item.c_str(), "");
pluginsWithArgs.push_back(make_pair(item, ""));
}
return pluginsWithArgs;
@@ -228,6 +247,7 @@ static void ParseAnalyzerActionsAndReporters()
set_string_t::iterator it_keys = keys.begin();
for (; it_keys != keys.end(); it_keys++)
{
+ VERB2 log("AnalyzerActionsAndReporters['%s']=...", it_keys->c_str());
g_settings_mapAnalyzerActionsAndReporters[*it_keys] = actionsAndReporters;
}
}
@@ -254,42 +274,50 @@ void LoadSettings()
std::string value;
for (ii = 0; ii < line.length(); ii++)
{
+ if (is_quote && line[ii] == '\\' && ii+1 < line.length())
+ {
+ value += line[ii];
+ ii++;
+ value += line[ii];
+ continue;
+ }
if (isspace(line[ii]) && !is_quote)
{
continue;
}
- else if (line[ii] == '#' && !is_quote && key == "")
+ if (line[ii] == '#' && !is_quote && key == "")
{
break;
}
- else if (line[ii] == '[' && !is_quote)
+ if (line[ii] == '[' && !is_quote)
{
is_section = true;
section = "";
+ continue;
}
- else if (line[ii] == '\"')
+ if (line[ii] == '"')
{
is_quote = !is_quote;
value += line[ii];
+ continue;
}
- else if (is_section)
+ if (is_section)
{
if (line[ii] == ']')
{
break;
}
section += line[ii];
+ continue;
}
- else if (line[ii] == '=' && !is_quote)
+ if (line[ii] == '=' && !is_quote)
{
is_key = false;
key = value;
value = "";
+ continue;
}
- else
- {
- value += line[ii];
- }
+ value += line[ii];
}
if (!is_key && !is_quote)
{
diff --git a/src/Daemon/abrt-debuginfo-install b/src/Daemon/abrt-debuginfo-install
index b3d72922..17639033 100755
--- a/src/Daemon/abrt-debuginfo-install
+++ b/src/Daemon/abrt-debuginfo-install
@@ -9,7 +9,7 @@
# - debuginfo-install aborts if yum lock is busy
# - pk-debuginfo-install was observed to hang
#
-# Usage: abrt-debuginfo-install CORE TEMPDIR [CACHEDIR]
+# Usage: abrt-debuginfo-install CORE TEMPDIR [CACHEDIR[:DEBUGINFODIR1:DEBUGINFODIR2...]]
# If CACHEDIR is specified, debuginfos should be installed there.
# If not, debuginfos should be installed into TEMPDIR.
#
@@ -60,7 +60,8 @@
core=$1
tempdir=$2
-cachedir=$3
+debuginfodirs="${3//:/ }"
+cachedir="${3%%:*}"
debug=false
exec 2>&1
@@ -81,25 +82,39 @@ count_words() {
}
print_missing_build_ids() {
+ local build_id
+ local build_id1
+ local build_id2
+ local file
+ local d
for build_id in $build_ids; do
build_id1=${build_id:0:2}
build_id2=${build_id:2}
file="usr/lib/debug/.build-id/$build_id1/$build_id2.debug"
test -f "/$file" && continue
- test -f "$cachedir/$file" && continue
+ for d in $debuginfodirs; do
+ test -f "$d/$file" && continue 2
+ done
echo -n "$build_id "
done
}
print_missing_debuginfos() {
+ local build_id
+ local build_id1
+ local build_id2
+ local file
+ local d
for build_id in $build_ids; do
build_id1=${build_id:0:2}
build_id2=${build_id:2}
file="usr/lib/debug/.build-id/$build_id1/$build_id2.debug"
- if test x"$cachedir" != x"" && test x"$cachedir" != x"/" ; then
- test -f "$cachedir/$file" && continue
- fi
test -f "/$file" && continue
+ if test x"$cachedir" != x""; then
+ for d in $debuginfodirs; do
+ test -f "$d/$file" && continue 2
+ done
+ fi
echo -n "/$file "
done
}
@@ -162,6 +177,14 @@ print_package_names() {
}
download_packages() {
+ local pkg
+ local err
+ local file
+ local build_id
+ local build_id1
+ local build_id2
+ local d
+
## Download with one command (too silent):
## Redirecting, since progress bar stuff only messes up our output
##yumdownloader --enablerepo='*debuginfo*' --quiet $packages >yumdownloader.OUT 2>&1
@@ -181,13 +204,13 @@ download_packages() {
: $((i++))
done
- for f in *.rpm; do
+ for file in *.rpm; do
# Happens if no .rpm's were downloaded (yumdownloader problem)
# In this case, $f is the literal "*.rpm" string
- test -f "$f" || exit 2
- echo "Unpacking: $f"
- echo "Processing: $f" >>unpack.OUT
- rpm2cpio <"$f" 2>>unpack.OUT | cpio -id >>unpack.OUT 2>&1
+ test -f "$file" || exit 2
+ echo "Unpacking: $file"
+ echo "Processing: $file" >>unpack.OUT
+ rpm2cpio <"$file" 2>>unpack.OUT | cpio -id >>unpack.OUT 2>&1
done
# Copy debuginfo files to cachedir
@@ -198,15 +221,19 @@ download_packages() {
file="usr/lib/debug/.build-id/$build_id1/$build_id2.debug"
+ # Do not copy it if it can be found in any of $debuginfodirs
test -f "/$file" && continue
- test x"$cachedir" != x"/" && test -f "$cachedir/$file" && continue
+ if test x"$cachedir" != x""; then
+ for d in $debuginfodirs; do
+ test -f "$d/$file" && continue 2
+ done
+ fi
if test -f "$file"; then
- # file is one of those we just installed.
- # Cache it if cachedir is specified.
+ # File is one of those we just installed, cache it.
mkdir -p "$cachedir/usr/lib/debug/.build-id/$build_id1"
# Note: this does not preserve symlinks. This is intentional
- $debug && echo Copying2 "$file" to "$cachedir/$file" >&2
+ $debug && echo Copying "$file" to "$cachedir/$file" >&2
cp --remove-destination "$file" "$cachedir/$file"
continue
fi
@@ -253,17 +280,12 @@ $debug && echo "build_ids:$build_ids"
# which usually causes yum to download updated filelists,
# which in turn takes several minutes and annoys users.
iter=0
-while true; do
- : $((iter++))
- test $iter -gt 2 && break
-
+while test $((++iter)) -le 2; do
# Analyze $build_ids and check which debuginfos are present
missing_debuginfo_files=`print_missing_debuginfos`
$debug && echo "missing_debuginfo_files:$missing_debuginfo_files"
- if test x"$missing_debuginfo_files" = x""; then
- break
- fi
+ test x"$missing_debuginfo_files" = x"" && break
# Map $missing_debuginfo_files to package names.
# yum is run here.
@@ -272,9 +294,7 @@ while true; do
# yum may return "" here if it found no packages (say, if coredump
# is from a new, unreleased package fresh from koji).
- if test x"$packages" = x""; then
- continue
- fi
+ test x"$packages" = x"" && continue
num_packages=`count_words $packages`
echo "Downloading $num_packages packages"
diff --git a/src/Daemon/abrt.conf b/src/Daemon/abrt.conf
index e9845e58..028f582d 100644
--- a/src/Daemon/abrt.conf
+++ b/src/Daemon/abrt.conf
@@ -10,20 +10,21 @@ OpenGPGPublicKeys = /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
# Blacklisted packages
BlackList = nspluginwrapper
# Enabled plugins. There has to be exactly one database plugin
-EnabledPlugins = SQLite3, CCpp, Logger, Kerneloops, KerneloopsScanner, KerneloopsReporter, Bugzilla, Python
+EnabledPlugins = SQLite3, CCpp, Logger, Kerneloops, KerneloopsScanner, KerneloopsReporter, Bugzilla, Python, RunApp
# Database
Database = SQLite3
# Max size for crash storage [MiB]
MaxCrashReportsSize = 1000
# Vector of actions and reporters which are activated immediately after a crash occurs
-# ActionsAndReporters = Mailx("[abrt] new crash was detected")
+#ActionsAndReporters = Mailx("[abrt] new crash was detected")
+ActionsAndReporters = RunApp("test x\"`cat component`\" = x\"xorg-x11-server-Xorg\" && cp /var/log/Xorg.0.log .")
# Reporters association with analyzers
[ AnalyzerActionsAndReporters ]
Kerneloops = KerneloopsReporter
CCpp = Bugzilla, Logger
Python = Bugzilla, Logger
-# CCpp : xorg-x11-apps = RunApp("date", "RunApp")
+#CCpp:xorg-x11-apps = RunApp("date", "date.txt")
# Repeated calling of Action plugins
[ Cron ]
diff --git a/src/Gui/CCMainWindow.py b/src/Gui/CCMainWindow.py
index 31ebb410..3ada6f25 100644
--- a/src/Gui/CCMainWindow.py
+++ b/src/Gui/CCMainWindow.py
@@ -325,7 +325,7 @@ class MainWindow():
try:
self.ccdaemon.getReport(report["_MWUUID"][2], force=1)
except Exception, e:
- # FIXME #3 dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NoReply: Did not receive a reply
+ # FIXME #3 dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NoReply: Did not receive a reply
# do this async and wait for yum to end with debuginfoinstal
if self.timer:
gobject.source_remove(self.timer)
@@ -352,7 +352,7 @@ class MainWindow():
try:
self.ccdaemon.getReport(dump.getUUID())
except Exception, e:
- # FIXME #3 dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NoReply: Did not receive a reply
+ # FIXME #3 dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NoReply: Did not receive a reply
# do this async and wait for yum to end with debuginfoinstal
if self.timer:
gobject.source_remove(self.timer)
diff --git a/src/Gui/CCReporterDialog.py b/src/Gui/CCReporterDialog.py
index 61e65526..5db06963 100644
--- a/src/Gui/CCReporterDialog.py
+++ b/src/Gui/CCReporterDialog.py
@@ -43,7 +43,7 @@ class ReporterDialog():
self.tvComment = self.wTree.get_widget("tvComment")
self.tvComment.connect("focus-in-event", self.on_comment_focus_cb)
self.comment_changed = False
-
+
# "how to reproduce" textview
self.tevHowToReproduce = self.wTree.get_widget("tevHowToReproduce")
self.how_to_changed = False
@@ -79,7 +79,6 @@ class ReporterDialog():
self.tvReport.insert_column(column,0)
# connect the signals
self.tvReport.connect_after("size-allocate", self.on_window_resize)
- self.wTree.get_widget("bSend").connect("clicked", self.on_send_clicked)
# start with the warning hidden, so it's not visible when there is no rating
self.wTree.get_widget("ebErrors").hide()
self.hydrate()
@@ -88,10 +87,10 @@ class ReporterDialog():
def on_response(self, dialog, response_id, daemon ):
# thu button has been pressed (probably)
if response_id == gtk.RESPONSE_APPLY:
- if not self.check_settings(daemon):
+ if not (self.check_settings(daemon) and self.check_report()):
dialog.stop_emission("response")
self.wTree.get_widget("bSend").stop_emission("clicked")
-
+
def on_send_toggled(self, cell, path, model):
model[path][3] = not model[path][3]
@@ -229,7 +228,7 @@ class ReporterDialog():
else:
ebErrors.hide()
bSend.set_sensitive(True)
-
+
if self.report[item][TYPE] != 's':
# item name 0| value 1| editable? 2| toggled? 3| visible?(attachment)4
if self.report[item][EDITABLE] == 'y':
@@ -263,8 +262,11 @@ class ReporterDialog():
else:
del self.report["How to reproduce"]
- def on_send_clicked(self, button):
- #def on_apply_clicked(self, button, treeview):
+ def check_report(self):
+ # FIXME: what to do if user press "Not to send BT and then press cancel"
+ # it uncheck the backtrace and let him to edit it, and then user might
+ # not noticed, that he is not sending the BT, so should we warn user about this
+ # or check the BT automatically?
attributes = ["item", "content", "editable", "send", "attachment"]
for row in self.reportListStore:
rowe = dict(zip(attributes, row))
@@ -273,8 +275,10 @@ class ReporterDialog():
"Do you really want to send <b>%s</b>?\n" % rowe["item"]), self.window)
if result == gtk.RESPONSE_NO:
row[attributes.index("send")] = False
+ if result in (gtk.RESPONSE_CANCEL, gtk.RESPONSE_DELETE_EVENT):
+ return False
self.dehydrate()
- self.window.response(gtk.RESPONSE_APPLY)
+ return True
def run(self):
result = self.window.run()
diff --git a/src/Gui/CC_gui_functions.py b/src/Gui/CC_gui_functions.py
index a2ad70f6..bfc13188 100644
--- a/src/Gui/CC_gui_functions.py
+++ b/src/Gui/CC_gui_functions.py
@@ -143,7 +143,7 @@ def gui_question_dialog ( message, parent_dialog=None,
gtk.DIALOG_MODAL|gtk.DIALOG_DESTROY_WITH_PARENT,
message_type, gtk.BUTTONS_YES_NO,
message )
-
+ dialog.add_button("gtk-cancel", gtk.RESPONSE_CANCEL)
dialog.set_markup(message)
if parent_dialog:
dialog.set_position (gtk.WIN_POS_CENTER_ON_PARENT)
diff --git a/src/Gui/Makefile.am b/src/Gui/Makefile.am
index 87d996ca..7f61bbce 100644
--- a/src/Gui/Makefile.am
+++ b/src/Gui/Makefile.am
@@ -22,6 +22,9 @@ pixmap_DATA = abrt.png
CLEANFILES := $(notdir $(wildcard *~)) $(notdir $(wildcard *\#)) $(notdir $(wildcard \.\#*)) $(notdir $(wildcard *.pyc))
+abrt.desktop:
+ intltool-merge -d ../../po abrt.desktop.in abrt.desktop
+
install-exec-hook:
for b in $(bin_SCRIPTS); do \
sed 's:/usr/share:$(datadir):g' -i $(DESTDIR)$(bindir)/$$b || exit $$?; \
diff --git a/src/Gui/abrt.desktop b/src/Gui/abrt.desktop.in
index 5498a0aa..99d7f8f8 100644
--- a/src/Gui/abrt.desktop
+++ b/src/Gui/abrt.desktop.in
@@ -1,7 +1,7 @@
[Desktop Entry]
Encoding=UTF-8
-Name=Automatic Bug Reporting Tool
-Comment=View and report application crashes
+_Name=Automatic Bug Reporting Tool
+_Comment=View and report application crashes
Exec=abrt-gui
Icon=abrt
Terminal=false
diff --git a/src/Gui/ccgui.glade b/src/Gui/ccgui.glade
index 89163771..e9fd96f0 100644
--- a/src/Gui/ccgui.glade
+++ b/src/Gui/ccgui.glade
@@ -105,6 +105,7 @@ Zdenek Prikryl &lt;zprikryl@redhat.com&gt;</property>
<widget class="GtkWindow" id="main_window3">
<property name="title" translatable="yes">Automatic Bug Reporting Tool</property>
<property name="window_position">center</property>
+ <property name="icon">/usr/share/pixmaps/abrt.png</property>
<child>
<widget class="GtkVBox" id="vbox4">
<property name="visible">True</property>
diff --git a/src/Gui/report.glade b/src/Gui/report.glade
index ce21acb1..428c4ec7 100644
--- a/src/Gui/report.glade
+++ b/src/Gui/report.glade
@@ -197,7 +197,7 @@
<child>
<widget class="GtkButton" id="bSend">
<property name="label" translatable="yes">Send</property>
- <property name="response_id">-5</property>
+ <property name="response_id">-10</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
diff --git a/src/Hooks/CCpp.cpp b/src/Hooks/CCpp.cpp
index 3ab8f406..2b753819 100644
--- a/src/Hooks/CCpp.cpp
+++ b/src/Hooks/CCpp.cpp
@@ -65,7 +65,7 @@ static char* get_cmdline(pid_t pid)
if (len > 0)
{
/* In Linux, there is always one trailing NUL byte,
- * prevent it from being replaced by space below.
+ * prevent it from being replaced by space below.
*/
if (cmdline[len - 1] == '\0')
len--;
@@ -164,22 +164,20 @@ int main(int argc, char** argv)
try
{
- char* executable;
- char* cmdline;
- executable = get_executable(pid);
- cmdline = get_cmdline(pid);
- if (executable == NULL || cmdline == NULL)
+ char* executable = get_executable(pid);
+ if (executable == NULL)
{
- error_msg_and_die("can not get proc info for pid %u", (int)pid);
+ error_msg_and_die("can't read /proc/%u/exe link", (int)pid);
}
if (strstr(executable, "/abrt"))
{
/* free(executable); - why bother? */
- /* free(cmdline); */
error_msg_and_die("pid %u is '%s', not dumping it to avoid abrt recursion",
(int)pid, executable);
}
+ char* cmdline = get_cmdline(pid); /* never NULL */
+
char path[PATH_MAX];
snprintf(path, sizeof(path), "%s/ccpp-%ld-%u", dddir, (long)time(NULL), (int)pid);
diff --git a/src/Hooks/abrt_exception_handler.py.in b/src/Hooks/abrt_exception_handler.py.in
index 5514f1a4..c7f72530 100644
--- a/src/Hooks/abrt_exception_handler.py.in
+++ b/src/Hooks/abrt_exception_handler.py.in
@@ -46,8 +46,6 @@ import sys
import os
import syslog
import subprocess
-# abrt lib for saving debugdumps
-import ABRTUtils
__DUMPHASH = {}
# FIXME: do length limits on obj dumps.
@@ -108,7 +106,7 @@ def write_dump(pid, tb_uuid, tb):
executable = "Exception raised from python shell"
if sys.argv[0]:
executable = os.path.abspath(sys.argv[0])
-
+
command = ["abrt-pyhook-helper"]
command.append("--pid=%s" % pid)
command.append("--executable=%s" % executable)
@@ -180,12 +178,12 @@ def handleMyException((etype, value, tb)):
# ignore uncaught ctrl-c
if etype == KeyboardInterrupt:
return sys.__excepthook__(etype, value, tb)
-
+
try:
import os.path
from hashlib import md5
import traceback
-
+
syslog.syslog("abrt: Pyhook: Detected unhandled exception in %s " % sys.argv[0])
elist = traceback.format_exception (etype, value, tb)
tblast = traceback.extract_tb(tb, limit=None)
@@ -199,20 +197,20 @@ def handleMyException((etype, value, tb)):
ll.extend(tblast[:3])
ll[0] = os.path.basename(tblast[0])
tblast = ll
-
+
m = md5()
ntext = ""
for t in tblast:
ntext += str(t) + ":"
m.update(str(t))
-
+
tb_uuid = str(m.hexdigest())[:8]
text += tb_uuid + " " + ntext
-
+
text += extxt[0]
text += "\n"
text += "".join(elist)
-
+
trace = tb
while trace.tb_next:
trace = trace.tb_next
@@ -223,7 +221,7 @@ def handleMyException((etype, value, tb)):
text += "%s: %s\n" % (key, val)
except:
pass
-
+
# add coredump saving
write_dump(os.getpid(), tb_uuid, text)
except: #silently ignore any error in this hook, to not interfere with the python scripts
diff --git a/src/Hooks/sitecustomize.py b/src/Hooks/sitecustomize.py
index 32a3747b..5787c03f 100644
--- a/src/Hooks/sitecustomize.py
+++ b/src/Hooks/sitecustomize.py
@@ -22,13 +22,13 @@ try:
line = config.readline().lower().replace(' ','').strip('\n').split('=')
conf[line[0]] = line[1]
except:
- # Ignore silently everything, because we don't want to bother user
+ # Ignore silently everything, because we don't want to bother user
# if this hook doesn't work.
pass
if conf.has_key("enabled"):
# Prevent abrt exception handler from running when the abrtd daemon is
- # not active.
+ # not active.
# abrtd sets the value to "no" when deactivated and vice versa.
if conf["enabled"] == "yes":
try: