summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--abrt.spec1
-rw-r--r--lib/Plugins/CCpp.cpp102
-rw-r--r--lib/Utils/DebugDump.h1
-rw-r--r--po/ast.po551
-rw-r--r--po/da.po72
-rw-r--r--po/es.po105
-rw-r--r--po/nl.po68
-rw-r--r--po/pl.po81
-rw-r--r--po/pt_BR.po178
-rw-r--r--src/CLI/Makefile.am2
-rwxr-xr-xsrc/Daemon/abrt-debuginfo-install109
-rw-r--r--src/Gui/ABRTExceptions.py8
-rw-r--r--src/Gui/ABRTPlugin.py27
-rw-r--r--src/Gui/CCMainWindow.py10
-rw-r--r--src/Gui/CellRenderers.py5
-rw-r--r--src/Gui/ConfBackend.py21
-rw-r--r--src/Gui/SettingsDialog.py12
-rw-r--r--src/Hooks/Makefile.am18
-rw-r--r--src/Hooks/abrt-pyhook-helper.cpp138
-rw-r--r--src/Hooks/abrt_exception_handler.py.in53
-rw-r--r--src/Hooks/sitecustomize.py12
22 files changed, 1214 insertions, 361 deletions
diff --git a/.gitignore b/.gitignore
index f92001a..ce402b3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -45,4 +45,5 @@ src/Daemon/abrtd
src/Hooks/abrt_exception_handler.py
src/Hooks/dumpoops
src/Hooks/hookCCpp
+src/Hooks/abrt-pyhook-helper
stamp-h1
diff --git a/abrt.spec b/abrt.spec
index 72be3e4..51f72bb 100644
--- a/abrt.spec
+++ b/abrt.spec
@@ -346,6 +346,7 @@ fi
%files addon-python
%defattr(-,root,root,-)
+%{_bindir}/%{name}-pyhook-helper
%config(noreplace) %{_sysconfdir}/%{name}/pyhook.conf
%{python_sitearch}/ABRTUtils.so
%{_libdir}/%{name}/libPython.so*
diff --git a/lib/Plugins/CCpp.cpp b/lib/Plugins/CCpp.cpp
index 0e0eb3b..7d6708f 100644
--- a/lib/Plugins/CCpp.cpp
+++ b/lib/Plugins/CCpp.cpp
@@ -156,6 +156,91 @@ static pid_t ExecVP(char** pArgs, uid_t uid, std::string& pOutput)
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
+ InvalidRating = -1 // (dummy invalid value)
+};
+
+static const LineRating BestRating = Good;
+
+LineRating rate_line(const std::string & line)
+{
+ bool function = false;
+ bool library = false;
+ bool source_file = false;
+
+#define FOUND(x) (line.find(x) != std::string::npos)
+ if (FOUND(" in ") && !FOUND(" in ??"))
+ function = true;
+
+ if (FOUND(" from "))
+ library = true;
+
+ if(FOUND(" at "))
+ source_file = true;
+#undef FOUND
+
+ /* see the "enum LineRating" comments for possible combinations */
+ if (function && source_file)
+ return Good;
+ if (function && library)
+ return MissingSourceFile;
+ if (function)
+ return MissingLibrary;
+ if (library)
+ return MissingFunction;
+
+ return MissingEverything;
+}
+
+/* returns number of "stars" to show*/
+int rate_backtrace(const std::string & backtrace)
+{
+ int l = backtrace.length();
+ int i;
+ std::string s = "";
+ int multiplier = 0;
+ int rating = 0;
+ int best_possible_rating = 0;
+
+ /*we get the lines from the end, b/c of the rating multiplier
+ which gives weight to the first lines*/
+ for (i=l-1; i>=0; i--)
+ {
+ if (backtrace[i] == '#') /*this divides frames from each other*/
+ {
+ multiplier++;
+ rating += rate_line(s) * multiplier;
+ best_possible_rating += BestRating * multiplier;
+
+ s = ""; /*starting new line*/
+ } else
+ {
+ s=backtrace[i]+s;
+ }
+ }
+
+ /*returning number of "stars" to show*/
+ if (rating==0)
+ return 0;
+ if (rating >= best_possible_rating*0.8)
+ return 4;
+ if (rating >= best_possible_rating*0.6)
+ return 3;
+ if (rating >= best_possible_rating*0.4)
+ return 2;
+ if (rating >= best_possible_rating*0.2)
+ return 1;
+
+ return 0;
+}
+
static void GetBacktrace(const std::string& pDebugDumpDir, std::string& pBacktrace)
{
update_client(_("Getting backtrace..."));
@@ -180,7 +265,7 @@ static void GetBacktrace(const std::string& pDebugDumpDir, std::string& pBacktra
// when/if gdb supports it:
// (https://bugzilla.redhat.com/show_bug.cgi?id=528668):
//args[2] = (char*)"-ex";
- //args[3] = "set debug-file-directory /usr/lib/debug/.build-id:/var/cache/abrt-di/usr/lib/debug/.build-id";
+ //args[3] = "set debug-file-directory /usr/lib/debug:/var/cache/abrt-di/usr/lib/debug";
/*
* Unfortunately, "file BINARY_FILE" doesn't work well if BINARY_FILE
* was deleted (as often happens during system updates):
@@ -571,23 +656,22 @@ static void InstallDebugInfos(const std::string& pDebugDumpDir, std::string& bui
{
update_client(_("Searching for debug-info packages..."));
- int pipein[2], pipeout[2]; //TODO: get rid of pipein. Can we use ExecVP?
- xpipe(pipein);
+ int pipeout[2]; //TODO: can we use ExecVP?
xpipe(pipeout);
pid_t child = fork();
if (child < 0)
{
- /*close(pipein[0]); close(pipeout[0]); - why bother */
- /*close(pipein[1]); close(pipeout[1]); */
+ /*close(pipeout[0]); - why bother */
+ /*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);
+ close(STDIN_FILENO);
+ xopen("/dev/null", O_RDONLY);
/* Not a good idea, we won't see any error messages */
/*close(STDERR_FILENO);*/
@@ -601,7 +685,6 @@ static void InstallDebugInfos(const std::string& pDebugDumpDir, std::string& bui
exit(1);
}
- close(pipein[0]);
close(pipeout[1]);
update_client(_("Downloading and installing debug-info packages..."));
@@ -749,11 +832,12 @@ void CAnalyzerCCpp::CreateReport(const std::string& pDebugDumpDir, int force)
dd.Open(pDebugDumpDir);
dd.SaveText(FILENAME_BACKTRACE, build_ids + backtrace);
-log("BACKTRACE:'%s'", (build_ids + backtrace).c_str());
if (m_bMemoryMap)
{
dd.SaveText(FILENAME_MEMORYMAP, "memory map of the crashed C/C++ application, not implemented yet");
}
+ std::string rating = ssprintf("%d\n", rate_backtrace(backtrace));
+ dd.SaveText(FILENAME_RATING, rating);
}
void CAnalyzerCCpp::Init()
diff --git a/lib/Utils/DebugDump.h b/lib/Utils/DebugDump.h
index d6ff4f9..d56ef36 100644
--- a/lib/Utils/DebugDump.h
+++ b/lib/Utils/DebugDump.h
@@ -39,6 +39,7 @@
#define FILENAME_REASON "reason"
#define FILENAME_COMMENT "comment"
#define FILENAME_REPRODUCE "reproduce"
+#define FILENAME_RATING "rating"
class CDebugDump
{
diff --git a/po/ast.po b/po/ast.po
new file mode 100644
index 0000000..e6e4d7b
--- /dev/null
+++ b/po/ast.po
@@ -0,0 +1,551 @@
+# translation of abrt.master.ast.po to Asturian
+# Astur <malditoastur@gmail.com>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: abrt.master.ast\n"
+"Report-Msgid-Bugs-To: jmoskovc@redhat.com\n"
+"POT-Creation-Date: 2009-10-24 09:37+0000\n"
+"PO-Revision-Date: 2009-10-24 21:43+0100\n"
+"Last-Translator: Marcos Alvarez Costales <marcos.alvarez.costales@gmail.com>\n"
+"Language-Team: Asturian <alministradores@softastur.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Asturian\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: ../src/Gui/ABRTExceptions.py:6
+msgid "Another client is already running, trying to wake it."
+msgstr "Otru veceru yá ta executándose, intentando llevantalu."
+
+#: ../src/Gui/ABRTExceptions.py:13
+msgid "Got unexpected data from daemon (is the database properly updated?)."
+msgstr "Algamáronse datos inesperaos dende'l degorriu (¿ta la Base de Datos correutamente anovada?)"
+
+#: ../src/Gui/ABRTPlugin.py:55
+msgid "Analyzer plugins"
+msgstr "Complementos analizadores"
+
+#: ../src/Gui/ABRTPlugin.py:56
+msgid "Action plugins"
+msgstr "Complementos d'aición"
+
+#: ../src/Gui/ABRTPlugin.py:57
+msgid "Reporter plugins"
+msgstr "Complementos d'informes"
+
+#: ../src/Gui/ABRTPlugin.py:58
+msgid "Database plugins"
+msgstr "Complementos de Bases de Datos"
+
+#: ../src/Gui/ABRTPlugin.py:97
+msgid "Plugin name is not set, can't load it's settings"
+msgstr "Nun ta puestu'l nome del complementu, nun pudo cargase la configuración"
+
+#: ../src/Gui/CCDBusBackend.py:74
+#: ../src/Gui/CCDBusBackend.py:97
+msgid "Can't connect to system dbus"
+msgstr "Nun ye dable coneutase con system dbus"
+
+#: ../src/Gui/CCDBusBackend.py:100
+#: ../src/Gui/CCDBusBackend.py:103
+msgid "Please check if abrt daemon is running"
+msgstr "Por favor, compreba si'l degorriu abrt ta executándose"
+
+#: ../src/Gui/CCDBusBackend.py:155
+msgid ""
+"Daemon did't return valid report info\n"
+"Debuginfo is missing?"
+msgstr ""
+"El degorriu nun devuelve un informe válidu\n"
+"¿Falta la información de la depuración?"
+
+#: ../src/Gui/ccgui.glade.h:1
+msgid " "
+msgstr " "
+
+#: ../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>¡Non informáu!</b>"
+
+#: ../src/Gui/ccgui.glade.h:4
+msgid "<span color=\"white\">Description</span>"
+msgstr "<span color=\"white\">Descripción</span>"
+
+#: ../src/Gui/ccgui.glade.h:5
+msgid "About ABRT"
+msgstr "Tocante a ABRT"
+
+#: ../src/Gui/ccgui.glade.h:6
+msgid "Automatic Bug Reporting Tool"
+msgstr "Ferramienta d'Informe de Fallos Automática"
+
+#: ../src/Gui/ccgui.glade.h:7
+msgid "Delete"
+msgstr "Desaniciar"
+
+#: ../src/Gui/ccgui.glade.h:8
+msgid "Please wait.."
+msgstr "Por favor, espera..."
+
+#: ../src/Gui/ccgui.glade.h:9
+msgid "Plugins"
+msgstr "Complementos"
+
+#: ../src/Gui/ccgui.glade.h:10
+#: ../src/Gui/report.glade.h:2
+msgid "Report"
+msgstr "Informe"
+
+#: ../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"
+"\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/>."
+msgstr ""
+"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"
+"\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/>."
+
+#: ../src/Gui/ccgui.glade.h:16
+msgid "Working..."
+msgstr "Trabayando..."
+
+#: ../src/Gui/ccgui.glade.h:17
+msgid "_Edit"
+msgstr "_Editar"
+
+#: ../src/Gui/ccgui.glade.h:18
+msgid "_File"
+msgstr "_Ficheru"
+
+#: ../src/Gui/ccgui.glade.h:19
+msgid "_Help"
+msgstr "Ai_da"
+
+# Revisar si hay que traducir.
+# Ver como referencia los botones gtk que no habia que traducirlos
+#. add pixbuff separatelly
+#: ../src/Gui/CCMainWindow.py:80
+msgid "Icon"
+msgstr "Iconu"
+
+#: ../src/Gui/CCMainWindow.py:88
+msgid "Package"
+msgstr "Paquete"
+
+#: ../src/Gui/CCMainWindow.py:89
+msgid "Application"
+msgstr "Aplicación"
+
+#: ../src/Gui/CCMainWindow.py:90
+msgid "Date"
+msgstr "Data"
+
+#: ../src/Gui/CCMainWindow.py:91
+msgid "Crash Rate"
+msgstr "Tasa de cayíes"
+
+#: ../src/Gui/CCMainWindow.py:93
+msgid "User"
+msgstr "Usuariu"
+
+#: ../src/Gui/CCMainWindow.py:160
+#, python-format
+msgid ""
+"Can't show the settings dialog\n"
+"%s"
+msgstr ""
+"Nun pudo amosase'l diálogu de configuración\n"
+"%s"
+
+#: ../src/Gui/CCMainWindow.py:181
+#, python-format
+msgid ""
+"Unable to finish current task!\n"
+"%s"
+msgstr ""
+"¡Nun pudo finase la xera actual!\n"
+"%s"
+
+#: ../src/Gui/CCMainWindow.py:198
+#, python-format
+msgid ""
+"Error while loading the dumplist, please check if abrt daemon is running\n"
+" %s"
+msgstr ""
+"Fallu intentando cargar la llista de volcáu, por favor compreba si'l degorriu abrt ta executándose\n"
+"%s"
+
+#: ../src/Gui/CCMainWindow.py:208
+#, python-format
+msgid "Can't get username for uid %s"
+msgstr "Nun pudo algamase'l nome d'usuariu pal uid %s"
+
+#: ../src/Gui/CCMainWindow.py:236
+msgid "<b>This crash has been reported, you can find the report(s) at:</b>\n"
+msgstr "<b>Esta cayía yá se reportó, puedes alcontrar l'informe en:</b>\n"
+
+#: ../src/Gui/CCMainWindow.py:296
+msgid ""
+"Unable to get report!\n"
+"Debuginfo is missing?"
+msgstr ""
+"Nun foi dable algamar l'informe!\n"
+"¿Falta la información de la depuración?"
+
+#: ../src/Gui/CCMainWindow.py:314
+#, python-format
+msgid ""
+"Reporting failed!\n"
+"%s"
+msgstr ""
+"¡L'informe falló!\n"
+"%s"
+
+#: ../src/Gui/CCMainWindow.py:333
+#: ../src/Gui/CCMainWindow.py:360
+#, python-format
+msgid "Error getting the report: %s"
+msgstr "Fallu al algamar l'informe: %s"
+
+#: ../src/Gui/CCReporterDialog.py:167
+msgid "Brief description how to reproduce this or what you did..."
+msgstr "Breve descripción de cómo reproducir esto o lo que ficisti..."
+
+#: ../src/Gui/CCReporterDialog.py:211
+#, python-format
+msgid ""
+"<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>ALVERTENCIA</b>, ¡tas por unviar datos que pueden caltener información sensible!\n"
+"¿De xuru que quies unviar <b>%s</b>?\n"
+
+#: ../src/Gui/dialogs.glade.h:1
+msgid "Report done"
+msgstr "Informe fináu"
+
+# NO TRADUCIR, hacen referencia al boton gkt
+#: ../src/Gui/dialogs.glade.h:2
+#: ../src/Gui/settings.glade.h:27
+msgid "gtk-ok"
+msgstr "gtk-ok"
+
+#: ../src/Gui/PluginSettingsUI.py:18
+msgid "Can't find PluginDialog widget in UI description!"
+msgstr "Nun s'alcuentra'l control visual de PluginDialog na descripción de la interface del usuariu."
+
+#. we shouldn't get here, but just to be safe
+#: ../src/Gui/PluginSettingsUI.py:24
+#, python-format
+msgid "No UI for plugin %s"
+msgstr "Nun hai interface del usuariu pal complementu %s"
+
+#: ../src/Gui/PluginSettingsUI.py:55
+#: ../src/Gui/PluginSettingsUI.py:81
+msgid "combo box is not implemented"
+msgstr "La llista estenderexable nun ta fecha"
+
+#: ../src/Gui/PluginSettingsUI.py:64
+msgid "Nothing to hydrate!"
+msgstr "¡Res pa hidratar!"
+
+#: ../src/Gui/report.glade.h:1
+msgid "Comment"
+msgstr "Comentariu"
+
+#: ../src/Gui/report.glade.h:3
+msgid "Send"
+msgstr "Unviar"
+
+# NO TRADUCIR, hacen referencia al boton gkt
+#: ../src/Gui/report.glade.h:4
+#: ../src/Gui/settings.glade.h:25
+msgid "gtk-cancel"
+msgstr "gtk-cancel"
+
+# NO TRADUCIR, hacen referencia al boton gkt
+#: ../src/Gui/report.glade.h:5
+msgid "gtk-refresh"
+msgstr "gtk-refresh"
+
+#: ../src/Gui/SettingsDialog.py:33
+#: ../src/Gui/SettingsDialog.py:50
+msgid "<b>Select plugin</b>"
+msgstr "<b>Seleiciona un complementu</b>"
+
+#: ../src/Gui/SettingsDialog.py:36
+msgid "<b>Select database backend</b>"
+msgstr "<b>Seleiciona la base de datos de fondu</b>"
+
+#: ../src/Gui/SettingsDialog.py:165
+msgid "Remove this job"
+msgstr "Desaniciar esti trabayu"
+
+#: ../src/Gui/SettingsDialog.py:208
+msgid "Remove this action"
+msgstr "Desaniciar esta aición"
+
+#: ../src/Gui/settings.glade.h:1
+msgid "<b>Analyzer plugin</b>"
+msgstr "<b>Complementos analizadores</b>"
+
+#: ../src/Gui/settings.glade.h:2
+msgid "<b>Associated action</b>"
+msgstr "<b>Aición asociada</b>"
+
+#: ../src/Gui/settings.glade.h:3
+msgid "<b>Plugin</b>"
+msgstr "<b>Complementu</b>"
+
+#: ../src/Gui/settings.glade.h:4
+msgid "<b>Time (or period)</b>"
+msgstr "<b>Tiempu (o periodu)</b>"
+
+#: ../src/Gui/settings.glade.h:5
+msgid "Analyzers, Actions, Reporters"
+msgstr "Analizadores, Aiciones, Informadores"
+
+#: ../src/Gui/settings.glade.h:6
+msgid "Author:"
+msgstr "Autor:"
+
+#: ../src/Gui/settings.glade.h:7
+msgid "Blacklisted packages: "
+msgstr "Paquetes na Blacklist"
+
+#: ../src/Gui/settings.glade.h:8
+msgid "C_onfigure plugin"
+msgstr "C_onfigurar Complementu"
+
+#: ../src/Gui/settings.glade.h:9
+msgid "Check package GPG signature"
+msgstr "Compreba la robla GPG del paquete"
+
+#: ../src/Gui/settings.glade.h:10
+msgid "Common"
+msgstr "Común"
+
+#: ../src/Gui/settings.glade.h:11
+msgid "Cron"
+msgstr "Cron"
+
+#: ../src/Gui/settings.glade.h:12
+msgid "Database backend: "
+msgstr "Backend de la Base de Datos"
+
+#: ../src/Gui/settings.glade.h:13
+msgid "Edit blacklisted packages"
+msgstr "Edita los paquetes de la Blacklist"
+
+#: ../src/Gui/settings.glade.h:14
+msgid "GPG Keys"
+msgstr "Llaves GPG"
+
+#: ../src/Gui/settings.glade.h:15
+msgid "GPG keys: "
+msgstr "Llaves GPG:"
+
+#: ../src/Gui/settings.glade.h:16
+msgid "Global Settings"
+msgstr "Preferencies globales"
+
+#: ../src/Gui/settings.glade.h:17
+msgid "Max coredump storage size(MB):"
+msgstr "Capacidá másima d'almacenamientu del volcáu del núcleu (MB):"
+
+#: ../src/Gui/settings.glade.h:18
+msgid "Nothing selected"
+msgstr "Na esbillao"
+
+#: ../src/Gui/settings.glade.h:19
+msgid "Plugin Details"
+msgstr "Detalles de Complementu"
+
+#: ../src/Gui/settings.glade.h:20
+msgid "Settings"
+msgstr "Preferencies"
+
+#: ../src/Gui/settings.glade.h:21
+msgid "This function is not implemented yet!"
+msgstr "¡Esta función entá nun ta implementada!"
+
+#: ../src/Gui/settings.glade.h:22
+msgid "Version:"
+msgstr "Versión:"
+
+#: ../src/Gui/settings.glade.h:23
+msgid "Web Site:"
+msgstr "Páxina Web:"
+
+# NO TRADUCIR, hacen referencia al boton gkt
+#: ../src/Gui/settings.glade.h:24
+msgid "gtk-add"
+msgstr "gtk-add"
+
+# NO TRADUCIR, hacen referencia al boton gkt
+#: ../src/Gui/settings.glade.h:26
+msgid "gtk-close"
+msgstr "gtk-close"
+
+# NO TRADUCIR, hacen referencia al boton gkt
+#: ../src/Gui/settings.glade.h:28
+msgid "gtk-remove"
+msgstr "gtk-remove"
+
+#: ../src/Applet/Applet.cpp:71
+#, c-format
+msgid "A crash in package %s has been detected"
+msgstr "Deteutóse una cayía nel paquete %s."
+
+#: ../src/Applet/Applet.cpp:130
+msgid "ABRT service has been started"
+msgstr "Executáu serviciu ABRT"
+
+#: ../src/Applet/Applet.cpp:132
+#: ../src/Applet/Applet.cpp:246
+msgid "ABRT service is not running"
+msgstr "El serviciu ABRT nun ta executándose"
+
+#: ../src/Applet/CCApplet.cpp:185
+msgid "Warning"
+msgstr "Avisu"
+
+#: ../src/Daemon/Daemon.cpp:542
+msgid "Report size exceeded the quota. Please check system's MaxCrashReportsSize value in abrt.conf."
+msgstr "El tamañu del informe escede la cuota. Por favor, verifica'l valor de MaxCrashReportsSize del sistema n'abrt.conf."
+
+#: ../lib/Plugins/Bugzilla.cpp:83
+msgid "Empty login and password. Please check Bugzilla.conf"
+msgstr "Usuariu y contraseña ermos. Por favor, compreba'l ficheru Bugzilla.conf"
+
+#: ../lib/Plugins/Bugzilla.cpp:205
+msgid "Bug is already reported: "
+msgstr "Yá s'informó d'esti fallu (bug):"
+
+#: ../lib/Plugins/Bugzilla.cpp:260
+#, c-format
+msgid "Binary file %s will not be reported."
+msgstr "Nun s'informará del ficheru binariu %s."
+
+#: ../lib/Plugins/Bugzilla.cpp:330
+msgid "New bug id: "
+msgstr "Nuevu id del fallu:"
+
+#: ../lib/Plugins/Bugzilla.cpp:399
+msgid "Checking for duplicates..."
+msgstr "Chequeando si hai duplicaos..."
+
+#: ../lib/Plugins/Bugzilla.cpp:402
+#: ../lib/Plugins/Bugzilla.cpp:413
+msgid "Logging into bugzilla..."
+msgstr "Entrando en bugzilla..."
+
+#: ../lib/Plugins/Bugzilla.cpp:405
+msgid "Checking CC..."
+msgstr "Chequeando CC..."
+
+#: ../lib/Plugins/Bugzilla.cpp:425
+msgid "Creating new bug..."
+msgstr "Criando un nuevu informe..."
+
+#: ../lib/Plugins/Bugzilla.cpp:430
+msgid "Logging out..."
+msgstr "Colando..."
+
+#: ../lib/Plugins/Kerneloops.cpp:37
+msgid "Getting local universal unique identification"
+msgstr "Algamando la identificación única universal llocal"
+
+#: ../lib/Plugins/CCpp.cpp:246
+msgid "Getting backtrace..."
+msgstr "Algamando'l backtrace..."
+
+#: ../lib/Plugins/CCpp.cpp:532
+#: ../lib/Plugins/CCpp.cpp:657
+msgid "Searching for debug-info packages..."
+msgstr "Guetando paquetes d'información del depurador..."
+
+#: ../lib/Plugins/CCpp.cpp:594
+#: ../lib/Plugins/CCpp.cpp:690
+msgid "Downloading and installing debug-info packages..."
+msgstr "Baxando ya instalando paquetes d'información del depurador..."
+
+#: ../lib/Plugins/CCpp.cpp:733
+msgid "Getting local universal unique identification..."
+msgstr "Algamando la identificación única universal llocal..."
+
+#: ../lib/Plugins/CCpp.cpp:752
+msgid "Getting global universal unique identification..."
+msgstr "Algamando la identificación única universal global..."
+
+#: ../lib/Plugins/CCpp.cpp:797
+msgid "Starting report creation..."
+msgstr "Aniciando la criación del informe..."
+
+#: ../lib/Plugins/CCpp.cpp:828
+msgid "Skipping debuginfo installation"
+msgstr "Omite la instalación de la información de depuración"
+
+#: ../lib/Plugins/KerneloopsReporter.cpp:101
+msgid "Creating and submitting a report..."
+msgstr "Criando y unviando un informe..."
+
+#: ../lib/Plugins/Logger.cpp:58
+#: ../lib/Plugins/Mailx.cpp:123
+msgid "Creating a report..."
+msgstr "Criando un informe..."
+
+#: ../lib/Plugins/RunApp.cpp:62
+msgid "Executing RunApp plugin..."
+msgstr "Executando complementu RunApp..."
+
+#: ../lib/Plugins/FileTransfer.cpp:63
+#: ../lib/Plugins/FileTransfer.cpp:409
+msgid "FileTransfer: URL not specified"
+msgstr "Tresferencia de ficheru: URL nun especificada"
+
+#: ../lib/Plugins/FileTransfer.cpp:81
+#, c-format
+msgid "Sending archive %s via %s"
+msgstr "Unviando ficheru %s vía %s"
+
+#: ../lib/Plugins/FileTransfer.cpp:336
+msgid "File Transfer: Creating a report..."
+msgstr "Tresferencia de ficheru: Criando un informe..."
+
+#: ../lib/Plugins/FileTransfer.cpp:358
+#: ../lib/Plugins/FileTransfer.cpp:386
+msgid "CFileTransfer::Run(): Cannot create and send an archive: "
+msgstr "CFileTransfer::Run(): nun pudo criase y unviase un ficheru: "
+
+#: ../lib/Plugins/KerneloopsScanner.cpp:79
+msgid "Creating kernel oops crash reports..."
+msgstr "Criando un informe de colingue de kernel oops..."
+
+#: ../lib/Plugins/Mailx.cpp:109
+msgid "Sending an email..."
+msgstr "Unviando un corréu..."
+
+#: ../lib/Plugins/SOSreport.cpp:113
+msgid "Executing SOSreport plugin..."
+msgstr "Executando complementu SOSreport..."
+
+#: ../lib/Plugins/SOSreport.cpp:135
+msgid "running sosreport: "
+msgstr "llanzando sosreport:"
+
+#: ../lib/Plugins/SOSreport.cpp:150
+msgid "done running sosreport"
+msgstr "Sosreport executándose"
+
diff --git a/po/da.po b/po/da.po
index f2f6aa2..4c15e22 100644
--- a/po/da.po
+++ b/po/da.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: abrt\n"
"Report-Msgid-Bugs-To: jmoskovc@redhat.com\n"
-"POT-Creation-Date: 2009-10-15 09:50+0000\n"
-"PO-Revision-Date: 2009-10-16 22:53+0200\n"
+"POT-Creation-Date: 2009-10-26 00:22+0000\n"
+"PO-Revision-Date: 2009-10-26 02:42+0100\n"
"Last-Translator: Kris Thomsen <lakristho@gmail.com>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
"MIME-Version: 1.0\n"
@@ -23,25 +23,27 @@ msgstr "En anden klient kører allerede, prøver at vække den."
msgid "Got unexpected data from daemon (is the database properly updated?)."
msgstr "Modtog uventede data fra dæmon (er databasen opdateret rigtigt?)."
-#: ../src/Gui/ABRTPlugin.py:48
+#: ../src/Gui/ABRTPlugin.py:55
msgid "Analyzer plugins"
msgstr "Analyseringsudvidelsesmoduler"
-#: ../src/Gui/ABRTPlugin.py:49
+#: ../src/Gui/ABRTPlugin.py:56
msgid "Action plugins"
msgstr "Handlingsudvidelsesmoduler"
-#: ../src/Gui/ABRTPlugin.py:50
+#: ../src/Gui/ABRTPlugin.py:57
msgid "Reporter plugins"
msgstr "Rapporteringsudvidelsesmoduler"
-#: ../src/Gui/ABRTPlugin.py:51
+#: ../src/Gui/ABRTPlugin.py:58
msgid "Database plugins"
msgstr "Databaseudvidelsesmoduler"
-#: ../src/Gui/ABRTPlugin.py:90
+#: ../src/Gui/ABRTPlugin.py:97
msgid "Plugin name is not set, can't load it's settings"
-msgstr "Navn for udvidelsesmodul er ikke indstillet, kan ikke indlæse dets indstillinger"
+msgstr ""
+"Navn for udvidelsesmodul er ikke indstillet, kan ikke indlæse dets "
+"indstillinger"
#: ../src/Gui/CCDBusBackend.py:74 ../src/Gui/CCDBusBackend.py:97
msgid "Can't connect to system dbus"
@@ -67,7 +69,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>Ikke rapporteret!</b>"
@@ -168,7 +170,16 @@ msgstr "Nedbrudsrate"
msgid "User"
msgstr "Bruger"
-#: ../src/Gui/CCMainWindow.py:178
+#: ../src/Gui/CCMainWindow.py:160
+#, python-format
+msgid ""
+"Can't show the settings dialog\n"
+"%s"
+msgstr ""
+"Kan ikke vise indstillingsdialogen\n"
+"%s"
+
+#: ../src/Gui/CCMainWindow.py:181
#, python-format
msgid ""
"Unable to finish current task!\n"
@@ -177,7 +188,7 @@ msgstr ""
"Kunne ikke afslutte nuværende handling!\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,17 +198,17 @@ msgstr ""
"kører\n"
" %s"
-#: ../src/Gui/CCMainWindow.py:205
+#: ../src/Gui/CCMainWindow.py:208
#, python-format
msgid "Can't get username for uid %s"
msgstr "Kan ikke hente brugernavn for 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>Dette nedbrud er blevet rapporteret, du kan finde rapporten på: </b>\n"
-#: ../src/Gui/CCMainWindow.py:292
+#: ../src/Gui/CCMainWindow.py:296
msgid ""
"Unable to get report!\n"
"Debuginfo is missing?"
@@ -205,7 +216,7 @@ msgstr ""
"Kunne ikke hente rapport!\n"
"Mangler fejlsøgningsinformation?"
-#: ../src/Gui/CCMainWindow.py:310
+#: ../src/Gui/CCMainWindow.py:314
#, python-format
msgid ""
"Reporting failed!\n"
@@ -214,7 +225,7 @@ msgstr ""
"Rapportering fejlede!\n"
"%s"
-#: ../src/Gui/CCMainWindow.py:329 ../src/Gui/CCMainWindow.py:356
+#: ../src/Gui/CCMainWindow.py:333 ../src/Gui/CCMainWindow.py:360
#, python-format
msgid "Error getting the report: %s"
msgstr "Fejl under hentning af rapporten: %s"
@@ -277,19 +288,19 @@ msgstr "gtk-cancel"
msgid "gtk-refresh"
msgstr "gtk-refresh"
-#: ../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>Vælg udvidelsesmodul</b>"
-#: ../src/Gui/SettingsDialog.py:37
+#: ../src/Gui/SettingsDialog.py:36
msgid "<b>Select database backend</b>"
msgstr "<b>Vælg databasebackend</b>"
-#: ../src/Gui/SettingsDialog.py:168
+#: ../src/Gui/SettingsDialog.py:165
msgid "Remove this job"
msgstr "Fjern dette job"
-#: ../src/Gui/SettingsDialog.py:211
+#: ../src/Gui/SettingsDialog.py:208
msgid "Remove this action"
msgstr "Fjern denne handling"
@@ -463,31 +474,31 @@ msgstr "Logger ud..."
msgid "Getting local universal unique identification"
msgstr "Henter lokal, universal, unik identifikation"
-#: ../lib/Plugins/CCpp.cpp:153
+#: ../lib/Plugins/CCpp.cpp:246
msgid "Getting backtrace..."
msgstr "Henter backtrace..."
-#: ../lib/Plugins/CCpp.cpp:434
+#: ../lib/Plugins/CCpp.cpp:532 ../lib/Plugins/CCpp.cpp:657
msgid "Searching for debug-info packages..."
msgstr "Søger efter pakker med fejlsøgningsinformation..."
-#: ../lib/Plugins/CCpp.cpp:496
+#: ../lib/Plugins/CCpp.cpp:594 ../lib/Plugins/CCpp.cpp:690
msgid "Downloading and installing debug-info packages..."
msgstr "Henter og installerer pakker med fejlsøgningsinformation..."
-#: ../lib/Plugins/CCpp.cpp:558
+#: ../lib/Plugins/CCpp.cpp:733
msgid "Getting local universal unique identification..."
msgstr "Henter lokal, universal, unik identifikation..."
-#: ../lib/Plugins/CCpp.cpp:577
+#: ../lib/Plugins/CCpp.cpp:752
msgid "Getting global universal unique identification..."
msgstr "Henter global, universal, unik identifikation..."
-#: ../lib/Plugins/CCpp.cpp:628
+#: ../lib/Plugins/CCpp.cpp:797
msgid "Starting report creation..."
msgstr "Starter rapportoprettelse..."
-#: ../lib/Plugins/CCpp.cpp:659
+#: ../lib/Plugins/CCpp.cpp:828
msgid "Skipping debuginfo installation"
msgstr "Springer over fejlsøgningsinfo-installation"
@@ -575,13 +586,6 @@ msgstr "færdig med at køre sosreport"
#~ "\n"
#~ "%s"
-#~ msgid ""
-#~ "Can't save plugin settings:\n"
-#~ " %s"
-#~ msgstr ""
-#~ "Kan ikke gemme indstillinger for udvidelsesmoduler:\n"
-#~ " %s"
-
#~ msgid "unknown response from settings dialog"
#~ msgstr "ukendt svar fra indstillingsdialog"
diff --git a/po/es.po b/po/es.po
index 1589f20..56c77c1 100644
--- a/po/es.po
+++ b/po/es.po
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: abrt.master.es\n"
"Report-Msgid-Bugs-To: jmoskovc@redhat.com\n"
-"POT-Creation-Date: 2009-10-22 09:44+0000\n"
-"PO-Revision-Date: 2009-10-22 09:16-0300\n"
-"Last-Translator: Domingo Becker <domingobecker@gmail.com>\n"
+"POT-Creation-Date: 2009-10-24 00:40+0000\n"
+"PO-Revision-Date: 2009-10-24 00:28-0300\n"
+"Last-Translator: Claudio Rodrigo Pereyra Diaz <claudio@pereyradiaz.com.ar>\n"
"Language-Team: Spanish <fedora-trans-es@redhat.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -25,23 +25,23 @@ msgstr "Otro cliente ya está siendo ejecutado, intentando despertarlo."
msgid "Got unexpected data from daemon (is the database properly updated?)."
msgstr "Se obtienen datos inesperados desde el demonio (¿está la Base de Datos correctamente actualizada?)"
-#: ../src/Gui/ABRTPlugin.py:48
+#: ../src/Gui/ABRTPlugin.py:55
msgid "Analyzer plugins"
msgstr "Complementos analizadores"
-#: ../src/Gui/ABRTPlugin.py:49
+#: ../src/Gui/ABRTPlugin.py:56
msgid "Action plugins"
msgstr "Complementos de acción"
-#: ../src/Gui/ABRTPlugin.py:50
+#: ../src/Gui/ABRTPlugin.py:57
msgid "Reporter plugins"
msgstr "Complementos de informes"
-#: ../src/Gui/ABRTPlugin.py:51
+#: ../src/Gui/ABRTPlugin.py:58
msgid "Database plugins"
msgstr "Complementos de Bases de Datos"
-#: ../src/Gui/ABRTPlugin.py:90
+#: ../src/Gui/ABRTPlugin.py:97
msgid "Plugin name is not set, can't load it's settings"
msgstr "No se puso el nombre del complemento, no se puede cargar su configuración"
@@ -72,7 +72,7 @@ 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/CCMainWindow.py:244
msgid "<b>Not reported!</b>"
msgstr "<b>¡No informado!</b>"
@@ -86,7 +86,7 @@ msgstr "Acerca de ABRT"
#: ../src/Gui/ccgui.glade.h:6
msgid "Automatic Bug Reporting Tool"
-msgstr "Acerca de la Herramienta de Informe de Errores Automática"
+msgstr "Herramienta de Informe de Errores Automática"
#: ../src/Gui/ccgui.glade.h:7
msgid "Delete"
@@ -136,10 +136,12 @@ msgstr "_Archivo"
msgid "_Help"
msgstr "Ay_uda"
+# Revisar si hay que traducir.
+# Ver como referencia los botones gtk que no habia que traducirlos
#. add pixbuff separatelly
#: ../src/Gui/CCMainWindow.py:80
msgid "Icon"
-msgstr "icono"
+msgstr "Icono"
#: ../src/Gui/CCMainWindow.py:88
msgid "Package"
@@ -161,7 +163,16 @@ msgstr "Tasa de caídas"
msgid "User"
msgstr "Usuario"
-#: ../src/Gui/CCMainWindow.py:178
+#: ../src/Gui/CCMainWindow.py:160
+#, python-format
+msgid ""
+"Can't show the settings dialog\n"
+"%s"
+msgstr ""
+"No se puede mostrar el diálogo de configuración\n"
+"%s"
+
+#: ../src/Gui/CCMainWindow.py:181
#, python-format
msgid ""
"Unable to finish current task!\n"
@@ -170,7 +181,7 @@ msgstr ""
"¡No se pudo finalizar la tarea actual!\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"
@@ -179,16 +190,16 @@ msgstr ""
"Error intentando cargar la lista de volcado, por favor compruebe si el demonio abrt está siendo ejecutado\n"
"%s"
-#: ../src/Gui/CCMainWindow.py:205
+#: ../src/Gui/CCMainWindow.py:208
#, python-format
msgid "Can't get username for uid %s"
msgstr "No se pudo obtener nombre de usuario para el 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> Esta caída ha sido reportada, usted puede encontrar el informe en:</b>\n"
-#: ../src/Gui/CCMainWindow.py:292
+#: ../src/Gui/CCMainWindow.py:296
msgid ""
"Unable to get report!\n"
"Debuginfo is missing?"
@@ -196,7 +207,7 @@ msgstr ""
"Incapaz de conseguir el informe!\n"
"¿Falta la información de la depuración?"
-#: ../src/Gui/CCMainWindow.py:310
+#: ../src/Gui/CCMainWindow.py:314
#, python-format
msgid ""
"Reporting failed!\n"
@@ -205,8 +216,8 @@ msgstr ""
"¡El informe falló!\n"
"%s"
-#: ../src/Gui/CCMainWindow.py:329
-#: ../src/Gui/CCMainWindow.py:356
+#: ../src/Gui/CCMainWindow.py:333
+#: ../src/Gui/CCMainWindow.py:360
#, python-format
msgid "Error getting the report: %s"
msgstr "Error al obtener el informe: %s"
@@ -226,8 +237,9 @@ msgstr ""
#: ../src/Gui/dialogs.glade.h:1
msgid "Report done"
-msgstr "Informe hecho"
+msgstr "Informe terminado"
+# NO TRADUCIR, hacen referencia al boton gkt
#: ../src/Gui/dialogs.glade.h:2
#: ../src/Gui/settings.glade.h:27
msgid "gtk-ok"
@@ -260,29 +272,31 @@ msgstr "Comentario"
msgid "Send"
msgstr "Enviar"
+# NO TRADUCIR, hacen referencia al boton gkt
#: ../src/Gui/report.glade.h:4
#: ../src/Gui/settings.glade.h:25
msgid "gtk-cancel"
msgstr "gtk-cancel"
+# NO TRADUCIR, hacen referencia al boton gkt
#: ../src/Gui/report.glade.h:5
msgid "gtk-refresh"
msgstr "gtk-refresh"
-#: ../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>Seleccione un complemento</b>"
-#: ../src/Gui/SettingsDialog.py:37
+#: ../src/Gui/SettingsDialog.py:36
msgid "<b>Select database backend</b>"
msgstr "<b>Seleccione la base de datos de fondo</b>"
-#: ../src/Gui/SettingsDialog.py:168
+#: ../src/Gui/SettingsDialog.py:165
msgid "Remove this job"
msgstr "Eliminar este trabajo"
-#: ../src/Gui/SettingsDialog.py:211
+#: ../src/Gui/SettingsDialog.py:208
msgid "Remove this action"
msgstr "Eliminar esta acción"
@@ -316,7 +330,7 @@ msgstr "Paquetes en la Blacklist"
#: ../src/Gui/settings.glade.h:8
msgid "C_onfigure plugin"
-msgstr "C_onfigure Complemento"
+msgstr "C_onfigurar Complemento"
#: ../src/Gui/settings.glade.h:9
msgid "Check package GPG signature"
@@ -344,7 +358,7 @@ msgstr "LLaves GPG"
#: ../src/Gui/settings.glade.h:15
msgid "GPG keys: "
-msgstr "LLaves GPG"
+msgstr "LLaves GPG:"
#: ../src/Gui/settings.glade.h:16
msgid "Global Settings"
@@ -378,17 +392,20 @@ msgstr "Version:"
msgid "Web Site:"
msgstr "Página Web:"
+# NO TRADUCIR, hacen referencia al boton gkt
#: ../src/Gui/settings.glade.h:24
msgid "gtk-add"
msgstr "gtk-add"
+# NO TRADUCIR, hacen referencia al boton gkt
#: ../src/Gui/settings.glade.h:26
msgid "gtk-close"
-msgstr "gtk-cerrado"
+msgstr "gtk-close"
+# NO TRADUCIR, hacen referencia al boton gkt
#: ../src/Gui/settings.glade.h:28
msgid "gtk-remove"
-msgstr "gtk-borra"
+msgstr "gtk-remove"
#: ../src/Applet/Applet.cpp:71
#, c-format
@@ -454,33 +471,33 @@ msgstr "Saliendo..."
msgid "Getting local universal unique identification"
msgstr "Obteniendo la identificación única universal local"
-#: ../lib/Plugins/CCpp.cpp:161
+#: ../lib/Plugins/CCpp.cpp:246
msgid "Getting backtrace..."
msgstr "Obteniendo el backtrace..."
-#: ../lib/Plugins/CCpp.cpp:447
-#: ../lib/Plugins/CCpp.cpp:572
+#: ../lib/Plugins/CCpp.cpp:532
+#: ../lib/Plugins/CCpp.cpp:657
msgid "Searching for debug-info packages..."
msgstr "Buscando paquetes de información del depurador..."
-#: ../lib/Plugins/CCpp.cpp:509
-#: ../lib/Plugins/CCpp.cpp:607
+#: ../lib/Plugins/CCpp.cpp:594
+#: ../lib/Plugins/CCpp.cpp:690
msgid "Downloading and installing debug-info packages..."
msgstr "Descargando e instalando paquetes de información del depurador..."
-#: ../lib/Plugins/CCpp.cpp:650
+#: ../lib/Plugins/CCpp.cpp:733
msgid "Getting local universal unique identification..."
msgstr "Obteniendo la identificación única universal local..."
-#: ../lib/Plugins/CCpp.cpp:669
+#: ../lib/Plugins/CCpp.cpp:752
msgid "Getting global universal unique identification..."
msgstr "Obteniendo la identificación única universal global..."
-#: ../lib/Plugins/CCpp.cpp:714
+#: ../lib/Plugins/CCpp.cpp:797
msgid "Starting report creation..."
msgstr "Iniciando la creación del informe..."
-#: ../lib/Plugins/CCpp.cpp:745
+#: ../lib/Plugins/CCpp.cpp:828
msgid "Skipping debuginfo installation"
msgstr "Omita la instalación de la información de depuración"
@@ -500,7 +517,7 @@ msgstr "Ejecutando complemento RunApp..."
#: ../lib/Plugins/FileTransfer.cpp:63
#: ../lib/Plugins/FileTransfer.cpp:409
msgid "FileTransfer: URL not specified"
-msgstr "FileTransfer: URL no especificada"
+msgstr "Transferencia de archivo: URL no especificada"
#: ../lib/Plugins/FileTransfer.cpp:81
#, c-format
@@ -530,11 +547,11 @@ msgstr "Ejecutando complemento SOSreport..."
#: ../lib/Plugins/SOSreport.cpp:135
msgid "running sosreport: "
-msgstr "lanzando.sosreport"
+msgstr "lanzando sosreport:"
#: ../lib/Plugins/SOSreport.cpp:150
msgid "done running sosreport"
-msgstr "Sosreport.corriendo"
+msgstr "Sosreport corriendo"
#~ msgid "Check CC and add coment +1..."
#~ msgstr "Compruebe CC y añada un comentario +1"
@@ -555,12 +572,6 @@ msgstr "Sosreport.corriendo"
#~ "usuario:\n"
#~ "\n"
#~ "%s"
-#~ msgid ""
-#~ "Can't save plugin settings:\n"
-#~ " %s"
-#~ msgstr ""
-#~ "No se pueden salvar las preferencias del complemento:\n"
-#~ "%s"
#~ msgid "unknown response from settings dialog"
#~ msgstr "Respuesta desconocida del diálogo de preferencias"
#~ msgid "Applet is already running."
diff --git a/po/nl.po b/po/nl.po
index 12f8903..3adf27e 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: abrt\n"
"Report-Msgid-Bugs-To: jmoskovc@redhat.com\n"
-"POT-Creation-Date: 2009-10-16 16:11+0000\n"
-"PO-Revision-Date: 2009-10-16 21:12+0200\n"
+"POT-Creation-Date: 2009-10-23 09:49+0000\n"
+"PO-Revision-Date: 2009-10-23 17:28+0200\n"
"Last-Translator: Geert Warrink <geert.warrink@onsnet.nu>\n"
"Language-Team: nl <nl@li.org>\n"
"MIME-Version: 1.0\n"
@@ -26,23 +26,23 @@ msgid "Got unexpected data from daemon (is the database properly updated?)."
msgstr ""
"Kreeg niet verwachte data van daemon (is de database correct vernieuwd?)."
-#: ../src/Gui/ABRTPlugin.py:48
+#: ../src/Gui/ABRTPlugin.py:55
msgid "Analyzer plugins"
msgstr "Analyse plugins"
-#: ../src/Gui/ABRTPlugin.py:49
+#: ../src/Gui/ABRTPlugin.py:56
msgid "Action plugins"
msgstr "Actie plugins"
-#: ../src/Gui/ABRTPlugin.py:50
+#: ../src/Gui/ABRTPlugin.py:57
msgid "Reporter plugins"
msgstr "Rapporteer plugins"
-#: ../src/Gui/ABRTPlugin.py:51
+#: ../src/Gui/ABRTPlugin.py:58
msgid "Database plugins"
msgstr "Databse plugins"
-#: ../src/Gui/ABRTPlugin.py:90
+#: ../src/Gui/ABRTPlugin.py:97
msgid "Plugin name is not set, can't load it's settings"
msgstr "Plugin naam is niet opgegeven, kan zijn instellingen niet laden"
@@ -70,7 +70,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>Niet gerapporteerd!</b>"
@@ -171,7 +171,16 @@ msgstr "Crash rate"
msgid "User"
msgstr "Gebruiker"
-#: ../src/Gui/CCMainWindow.py:178
+#: ../src/Gui/CCMainWindow.py:160
+#, python-format
+msgid ""
+"Can't show the settings dialog\n"
+"%s"
+msgstr ""
+"Kan de instellingen dialoog niet tonen\n"
+"%s"
+
+#: ../src/Gui/CCMainWindow.py:181
#, python-format
msgid ""
"Unable to finish current task!\n"
@@ -180,7 +189,7 @@ msgstr ""
"Kan huidige taak niet afmaken!\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"
@@ -190,16 +199,16 @@ msgstr ""
"draait\n"
" %s"
-#: ../src/Gui/CCMainWindow.py:205
+#: ../src/Gui/CCMainWindow.py:208
#, python-format
msgid "Can't get username for uid %s"
msgstr "Kan geen gebruikersnaam voor uid %s krijgen"
-#: ../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>Deze crash is gerapporteerd, je kunt het rapport vinden op:</b>\n"
-#: ../src/Gui/CCMainWindow.py:292
+#: ../src/Gui/CCMainWindow.py:296
msgid ""
"Unable to get report!\n"
"Debuginfo is missing?"
@@ -207,7 +216,7 @@ msgstr ""
"Kan geen rapport krijgen!\n"
"Mist debuginfo?"
-#: ../src/Gui/CCMainWindow.py:310
+#: ../src/Gui/CCMainWindow.py:314
#, python-format
msgid ""
"Reporting failed!\n"
@@ -216,7 +225,7 @@ msgstr ""
"Rapporteren mislukte!\n"
"%s"
-#: ../src/Gui/CCMainWindow.py:329 ../src/Gui/CCMainWindow.py:356
+#: ../src/Gui/CCMainWindow.py:333 ../src/Gui/CCMainWindow.py:360
#, python-format
msgid "Error getting the report: %s"
msgstr "Fout tijdens het verkrijgen van het rapport: %s"
@@ -278,19 +287,19 @@ msgstr "gtk-cancel"
msgid "gtk-refresh"
msgstr "gtk-refresh"
-#: ../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>Selecteer een plugin</b>"
-#: ../src/Gui/SettingsDialog.py:37
+#: ../src/Gui/SettingsDialog.py:36
msgid "<b>Select database backend</b>"
msgstr "<b>Selecteer database back-end</b>"
-#: ../src/Gui/SettingsDialog.py:168
+#: ../src/Gui/SettingsDialog.py:165
msgid "Remove this job"
msgstr "Verwijder deze taak"
-#: ../src/Gui/SettingsDialog.py:211
+#: ../src/Gui/SettingsDialog.py:208
msgid "Remove this action"
msgstr "Verwijder deze actie"
@@ -464,31 +473,31 @@ msgstr "Uitloggen..."
msgid "Getting local universal unique identification"
msgstr "Verkrijgen van locale universele unieke identificatie"
-#: ../lib/Plugins/CCpp.cpp:161
+#: ../lib/Plugins/CCpp.cpp:246
msgid "Getting backtrace..."
msgstr "Backtrace ophalen..."
-#: ../lib/Plugins/CCpp.cpp:442
+#: ../lib/Plugins/CCpp.cpp:532 ../lib/Plugins/CCpp.cpp:657
msgid "Searching for debug-info packages..."
msgstr "Zoeken naar debug-info pakketten..."
-#: ../lib/Plugins/CCpp.cpp:504
+#: ../lib/Plugins/CCpp.cpp:594 ../lib/Plugins/CCpp.cpp:692
msgid "Downloading and installing debug-info packages..."
msgstr "Downloaden en installeren van debug-info pakketten..."
-#: ../lib/Plugins/CCpp.cpp:566
+#: ../lib/Plugins/CCpp.cpp:735
msgid "Getting local universal unique identification..."
msgstr "Verkrijgen van locale universele unieke identificatie..."
-#: ../lib/Plugins/CCpp.cpp:585
+#: ../lib/Plugins/CCpp.cpp:754
msgid "Getting global universal unique identification..."
msgstr "Verkrijgen van golbale universele unieke identificatie..."
-#: ../lib/Plugins/CCpp.cpp:630
+#: ../lib/Plugins/CCpp.cpp:799
msgid "Starting report creation..."
msgstr "Beginnen met rapport aanmaken..."
-#: ../lib/Plugins/CCpp.cpp:661
+#: ../lib/Plugins/CCpp.cpp:830
msgid "Skipping debuginfo installation"
msgstr "Sla debuginfo installatie over"
@@ -567,13 +576,6 @@ msgstr "klaar met het draaien van sosreport"
#~ "\n"
#~ "%s"
-#~ msgid ""
-#~ "Can't save plugin settings:\n"
-#~ " %s"
-#~ msgstr ""
-#~ "Kan plugin instellingen niet opslaan:\n"
-#~ " %s"
-
#~ msgid "unknown response from settings dialog"
#~ msgstr "onbekende reactie van de instellingen dialoog"
diff --git a/po/pl.po b/po/pl.po
index ec18c06..74f9eed 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: pl\n"
"Report-Msgid-Bugs-To: jmoskovc@redhat.com\n"
-"POT-Creation-Date: 2009-10-08 17:38+0000\n"
-"PO-Revision-Date: 2009-10-08 19:40+0200\n"
+"POT-Creation-Date: 2009-10-22 15:21+0000\n"
+"PO-Revision-Date: 2009-10-22 17:24+0200\n"
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
"Language-Team: Polish <fedora-trans-pl@redhat.com>\n"
"MIME-Version: 1.0\n"
@@ -24,23 +24,23 @@ msgstr ""
"Otrzymano nieoczekiwane dane od demona (czy baza danych została właściwie "
"zaktualizowana?)."
-#: ../src/Gui/ABRTPlugin.py:48
+#: ../src/Gui/ABRTPlugin.py:55
msgid "Analyzer plugins"
msgstr "Wtyczki analizy"
-#: ../src/Gui/ABRTPlugin.py:49
+#: ../src/Gui/ABRTPlugin.py:56
msgid "Action plugins"
msgstr "Wtyczki działań"
-#: ../src/Gui/ABRTPlugin.py:50
+#: ../src/Gui/ABRTPlugin.py:57
msgid "Reporter plugins"
msgstr "Wtyczki zgłaszania"
-#: ../src/Gui/ABRTPlugin.py:51
+#: ../src/Gui/ABRTPlugin.py:58
msgid "Database plugins"
msgstr "Wtyczki baz danych"
-#: ../src/Gui/ABRTPlugin.py:90
+#: ../src/Gui/ABRTPlugin.py:97
msgid "Plugin name is not set, can't load it's settings"
msgstr "Nie ustawiono nazwy wtyczki, nie można wczytać jej ustawień"
@@ -68,7 +68,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>Nie zgłoszono.</b>"
@@ -171,7 +171,16 @@ msgstr "Częstotliwość awarii"
msgid "User"
msgstr "Użytkownik"
-#: ../src/Gui/CCMainWindow.py:178
+#: ../src/Gui/CCMainWindow.py:160
+#, python-format
+msgid ""
+"Can't show the settings dialog\n"
+"%s"
+msgstr ""
+"Nie można wyświetlić okna dialogowego ustawień\n"
+"%s"
+
+#: ../src/Gui/CCMainWindow.py:181
#, python-format
msgid ""
"Unable to finish current task!\n"
@@ -180,7 +189,7 @@ msgstr ""
"Nie można ukończyć bieżącego zadania.\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"
@@ -190,16 +199,16 @@ msgstr ""
"jest uruchomiony\n"
" %s"
-#: ../src/Gui/CCMainWindow.py:205
+#: ../src/Gui/CCMainWindow.py:208
#, python-format
msgid "Can't get username for uid %s"
msgstr "Nie można uzyskać nazwy użytkownika dla 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>Ta awaria została już zgłoszona. Raporty można znaleźć na:</b>\n"
-#: ../src/Gui/CCMainWindow.py:292
+#: ../src/Gui/CCMainWindow.py:296
msgid ""
"Unable to get report!\n"
"Debuginfo is missing?"
@@ -207,7 +216,7 @@ msgstr ""
"Nie można uzyskać raportu.\n"
"Brak pakietów debuginfo?"
-#: ../src/Gui/CCMainWindow.py:308
+#: ../src/Gui/CCMainWindow.py:314
#, python-format
msgid ""
"Reporting failed!\n"
@@ -216,12 +225,18 @@ msgstr ""
"Zgłoszenie nie powiodło się.\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 "Błąd podczas uzyskiwania raportu: %s"
-#: ../src/Gui/CCReporterDialog.py:98
+#: ../src/Gui/CCReporterDialog.py:167
+msgid "Brief description how to reproduce this or what you did..."
+msgstr ""
+"Krótki opis, jak ponownie wywołać tę awarię lub co robił użytkownik (w "
+"języku angielskim)..."
+
+#: ../src/Gui/CCReporterDialog.py:211
#, python-format
msgid ""
"<b>WARNING</b>, you're about to send data which might contain sensitive "
@@ -232,12 +247,6 @@ msgstr ""
"poufne informacje.\n"
"Na pewno wysłać <b>%s</b>?\n"
-#: ../src/Gui/CCReporterDialog.py:111
-msgid "Brief description how to reproduce this or what you did..."
-msgstr ""
-"Krótki opis, jak ponownie wywołać tę awarię lub co robił użytkownik (w "
-"języku angielskim)..."
-
#: ../src/Gui/dialogs.glade.h:1
msgid "Report done"
msgstr "Raport ukończony"
@@ -277,19 +286,23 @@ msgstr "Wyślij"
msgid "gtk-cancel"
msgstr "gtk-cancel"
-#: ../src/Gui/SettingsDialog.py:34 ../src/Gui/SettingsDialog.py:51
+#: ../src/Gui/report.glade.h:5
+msgid "gtk-refresh"
+msgstr "gtk-refresh"
+
+#: ../src/Gui/SettingsDialog.py:33 ../src/Gui/SettingsDialog.py:50
msgid "<b>Select plugin</b>"
msgstr "<b>Wybór wtyczki</b>"
-#: ../src/Gui/SettingsDialog.py:37
+#: ../src/Gui/SettingsDialog.py:36
msgid "<b>Select database backend</b>"
msgstr "<b>Wybór zaplecza bazy danych</b>"
-#: ../src/Gui/SettingsDialog.py:168
+#: ../src/Gui/SettingsDialog.py:165
msgid "Remove this job"
msgstr "Usuń te zadanie"
-#: ../src/Gui/SettingsDialog.py:211
+#: ../src/Gui/SettingsDialog.py:208
msgid "Remove this action"
msgstr "Usuń tę czynność"
@@ -414,7 +427,7 @@ msgstr "Usługa ABRT nie jest uruchomiona"
msgid "Warning"
msgstr "Ostrzeżenie"
-#: ../src/Daemon/Daemon.cpp:546
+#: ../src/Daemon/Daemon.cpp:542
msgid ""
"Report size exceeded the quota. Please check system's MaxCrashReportsSize "
"value in abrt.conf."
@@ -463,31 +476,31 @@ msgstr "Wylogowywanie..."
msgid "Getting local universal unique identification"
msgstr "Uzyskiwanie lokalnego uniwersalnego, unikalnego identyfikatora"
-#: ../lib/Plugins/CCpp.cpp:146
+#: ../lib/Plugins/CCpp.cpp:244
msgid "Getting backtrace..."
msgstr "Uzyskiwanie wyjątku..."
-#: ../lib/Plugins/CCpp.cpp:415
+#: ../lib/Plugins/CCpp.cpp:530 ../lib/Plugins/CCpp.cpp:655
msgid "Searching for debug-info packages..."
msgstr "Wyszukiwanie pakietów debuginfo..."
-#: ../lib/Plugins/CCpp.cpp:451
+#: ../lib/Plugins/CCpp.cpp:592 ../lib/Plugins/CCpp.cpp:690
msgid "Downloading and installing debug-info packages..."
msgstr "Pobieranie i instalowanie pakietów debuginfo..."
-#: ../lib/Plugins/CCpp.cpp:513
+#: ../lib/Plugins/CCpp.cpp:733
msgid "Getting local universal unique identification..."
msgstr "Uzyskiwanie lokalnego uniwersalnego, unikalnego identyfikatora..."
-#: ../lib/Plugins/CCpp.cpp:532
+#: ../lib/Plugins/CCpp.cpp:752
msgid "Getting global universal unique identification..."
msgstr "Uzyskiwanie globalnego uniwersalnego, unikalnego identyfikatora..."
-#: ../lib/Plugins/CCpp.cpp:583
+#: ../lib/Plugins/CCpp.cpp:797
msgid "Starting report creation..."
msgstr "Uruchamianie tworzenia raportu..."
-#: ../lib/Plugins/CCpp.cpp:612
+#: ../lib/Plugins/CCpp.cpp:828
msgid "Skipping debuginfo installation"
msgstr "Pomijanie instalacji pakietu debuginfo"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index ceb8b0a..58cb4ac 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -1,14 +1,13 @@
# Brazilian Portuguese translation of ABRT.
# This file is distributed under the same license as the ABRT package.
-#
# Igor Pires Soares <igor@projetofedora.org>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: ABRT\n"
"Report-Msgid-Bugs-To: jmoskovc@redhat.com\n"
-"POT-Creation-Date: 2009-10-17 16:06+0000\n"
-"PO-Revision-Date: 2009-10-17 15:59-0300\n"
+"POT-Creation-Date: 2009-10-24 00:40+0000\n"
+"PO-Revision-Date: 2009-10-22 17:49-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"
@@ -24,35 +23,37 @@ msgstr "Outro cliente já está em execução, tentando acordá-lo."
#: ../src/Gui/ABRTExceptions.py:13
msgid "Got unexpected data from daemon (is the database properly updated?)."
-msgstr "Dados inesperados obtidos do daemon (o banco de dados está devidamente atualizado?)."
+msgstr ""
+"Dados inesperados obtidos do daemon (o banco de dados está devidamente "
+"atualizado?)."
-#: ../src/Gui/ABRTPlugin.py:48
+#: ../src/Gui/ABRTPlugin.py:55
msgid "Analyzer plugins"
msgstr "Plugins de análise"
-#: ../src/Gui/ABRTPlugin.py:49
+#: ../src/Gui/ABRTPlugin.py:56
msgid "Action plugins"
msgstr "Plugins de ação"
-#: ../src/Gui/ABRTPlugin.py:50
+#: ../src/Gui/ABRTPlugin.py:57
msgid "Reporter plugins"
msgstr "Plugins de relato"
-#: ../src/Gui/ABRTPlugin.py:51
+#: ../src/Gui/ABRTPlugin.py:58
msgid "Database plugins"
msgstr "Plugins de banco de dados"
-#: ../src/Gui/ABRTPlugin.py:90
+#: ../src/Gui/ABRTPlugin.py:97
msgid "Plugin name is not set, can't load it's settings"
-msgstr "O nome do plugin não está definido, não é possível carregar as configurações dele"
+msgstr ""
+"O nome do plugin não está definido, não é possível carregar as configurações "
+"dele"
-#: ../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 "Não foi possível conectar ao dbus do sistema"
-#: ../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 "Por favor, verifique se o daemon do abrt está em execução"
@@ -72,8 +73,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>Não relatado!</b>"
@@ -101,24 +101,37 @@ msgstr "Por favor aguarde..."
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:2
msgid "Report"
msgstr "Relatar"
#: ../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 ""
-"Este programa é um software livre; você pode redistribuí-lo e/ou modificá-lo sob os termos da Licença Pública Geral GNU (GNU GPL) como publicada pela Free Software Foundation; tanto a versão 2 da Licença ou (a sua escolha) qualquer versão posterior.\n"
+"Este programa é um software livre; você pode redistribuí-lo e/ou modificá-lo "
+"sob os termos da Licença Pública Geral GNU (GNU GPL) como publicada pela "
+"Free Software Foundation; tanto a versão 2 da Licença ou (a sua escolha) "
+"qualquer versão posterior.\n"
"\n"
-"Este programa é distribuído na esperança de que será útil, mas SEM NENHUMA GARANTIA; até mesmo sem a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO A UM PROPÓSITO EM PARTICULAR. Veja a Licença Pública Geral GNU (GNU GPL) para mais detalhes.\n"
+"Este programa é distribuído na esperança de que será útil, mas SEM NENHUMA "
+"GARANTIA; até mesmo sem a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO "
+"A UM PROPÓSITO EM PARTICULAR. Veja a Licença Pública Geral GNU (GNU GPL) "
+"para mais detalhes.\n"
"\n"
-"Você deve ter recebido uma cópia da GNU General Public License (GPL) junto com este programa. Se não, acesse <http://www.gnu.org/licenses/>."
+"Você deve ter recebido uma cópia da GNU General Public License (GPL) junto "
+"com este programa. Se não, acesse <http://www.gnu.org/licenses/>."
#: ../src/Gui/ccgui.glade.h:16
msgid "Working..."
@@ -161,7 +174,16 @@ msgstr "Taxa de travamento"
msgid "User"
msgstr "Usuário"
-#: ../src/Gui/CCMainWindow.py:178
+#: ../src/Gui/CCMainWindow.py:160
+#, python-format
+msgid ""
+"Can't show the settings dialog\n"
+"%s"
+msgstr ""
+"Não foi possível mostrar o diálogo de configurações\n"
+"%s"
+
+#: ../src/Gui/CCMainWindow.py:181
#, python-format
msgid ""
"Unable to finish current task!\n"
@@ -170,25 +192,28 @@ msgstr ""
"Não foi possível finalizar a tarefa atual!\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"
" %s"
msgstr ""
-"Erro ao carregar a lista de despejo, por favor, verifique se o daemon do abrt está em execução\n"
+"Erro ao carregar a lista de despejo, por favor, verifique se o daemon do "
+"abrt está em execução\n"
" %s"
-#: ../src/Gui/CCMainWindow.py:205
+#: ../src/Gui/CCMainWindow.py:208
#, python-format
msgid "Can't get username for uid %s"
msgstr "Não foi possível obter o nome de usuário para o 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>Este travamento foi relatado, você pode localizar o(s) relatório(s) em:</b>\n"
+msgstr ""
+"<b>Este travamento foi relatado, você pode localizar o(s) relatório(s) em:</"
+"b>\n"
-#: ../src/Gui/CCMainWindow.py:292
+#: ../src/Gui/CCMainWindow.py:296
msgid ""
"Unable to get report!\n"
"Debuginfo is missing?"
@@ -196,7 +221,7 @@ msgstr ""
"Não foi possível obter o relatório!\n"
"O debuginfo está faltando?"
-#: ../src/Gui/CCMainWindow.py:310
+#: ../src/Gui/CCMainWindow.py:314
#, python-format
msgid ""
"Reporting failed!\n"
@@ -205,8 +230,7 @@ msgstr ""
"Falha no relato!\n"
"%s"
-#: ../src/Gui/CCMainWindow.py:329
-#: ../src/Gui/CCMainWindow.py:356
+#: ../src/Gui/CCMainWindow.py:333 ../src/Gui/CCMainWindow.py:360
#, python-format
msgid "Error getting the report: %s"
msgstr "Erro ao obter o relatório: %s"
@@ -218,24 +242,27 @@ msgstr "Breve descrição sobre como reproduzir isto ou o que você fazia..."
#: ../src/Gui/CCReporterDialog.py:211
#, 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>AVISO</b>, você está prestes a enviar dados que podem conter informações delicadas.\n"
+"<b>AVISO</b>, você está prestes a enviar dados que podem conter informações "
+"delicadas.\n"
"Você realmente deseja enviar o <b>%s</b>?\n"
#: ../src/Gui/dialogs.glade.h:1
msgid "Report done"
msgstr "Relato concluído"
-#: ../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"
#: ../src/Gui/PluginSettingsUI.py:18
msgid "Can't find PluginDialog widget in UI description!"
-msgstr "Não foi possível localizar o widget PluginDialog na descrição da interface de usuário!"
+msgstr ""
+"Não foi possível localizar o widget PluginDialog na descrição da interface "
+"de usuário!"
#. we shouldn't get here, but just to be safe
#: ../src/Gui/PluginSettingsUI.py:24
@@ -243,8 +270,7 @@ msgstr "Não foi possível localizar o widget PluginDialog na descrição da int
msgid "No UI for plugin %s"
msgstr "Nenhuma interface de usuário para o 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 "caixa de combinação não implementada"
@@ -260,8 +286,7 @@ msgstr "Comentário"
msgid "Send"
msgstr "Enviar"
-#: ../src/Gui/report.glade.h:4
-#: ../src/Gui/settings.glade.h:25
+#: ../src/Gui/report.glade.h:4 ../src/Gui/settings.glade.h:25
msgid "gtk-cancel"
msgstr "gtk-cancel"
@@ -269,20 +294,19 @@ msgstr "gtk-cancel"
msgid "gtk-refresh"
msgstr "gtk-refresh"
-#: ../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>Selecionar plugin</b>"
-#: ../src/Gui/SettingsDialog.py:37
+#: ../src/Gui/SettingsDialog.py:36
msgid "<b>Select database backend</b>"
msgstr "<b>Selecione o backend de banco de dados</b>"
-#: ../src/Gui/SettingsDialog.py:168
+#: ../src/Gui/SettingsDialog.py:165
msgid "Remove this job"
msgstr "Remover este trabalho"
-#: ../src/Gui/SettingsDialog.py:211
+#: ../src/Gui/SettingsDialog.py:208
msgid "Remove this action"
msgstr "Remover esta ação"
@@ -399,8 +423,7 @@ msgstr "Um travamento no pacote %s foi detectado"
msgid "ABRT service has been started"
msgstr "O serviço ABRT foi iniciado"
-#: ../src/Applet/Applet.cpp:132
-#: ../src/Applet/Applet.cpp:246
+#: ../src/Applet/Applet.cpp:132 ../src/Applet/Applet.cpp:246
msgid "ABRT service is not running"
msgstr "O serviço do ABRT não está em execução"
@@ -409,8 +432,12 @@ msgid "Warning"
msgstr "Aviso"
#: ../src/Daemon/Daemon.cpp:542
-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."
+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:83
msgid "Empty login and password. Please check Bugzilla.conf"
@@ -433,8 +460,7 @@ msgstr "Novo id do erro: "
msgid "Checking for duplicates..."
msgstr "Verificando duplicatas..."
-#: ../lib/Plugins/Bugzilla.cpp:402
-#: ../lib/Plugins/Bugzilla.cpp:413
+#: ../lib/Plugins/Bugzilla.cpp:402 ../lib/Plugins/Bugzilla.cpp:413
msgid "Logging into bugzilla..."
msgstr "Autenticando no bugzilla..."
@@ -454,31 +480,31 @@ msgstr "Encerrando sessão..."
msgid "Getting local universal unique identification"
msgstr "Obtendo identificação universal local única"
-#: ../lib/Plugins/CCpp.cpp:161
+#: ../lib/Plugins/CCpp.cpp:246
msgid "Getting backtrace..."
msgstr "Obtendo backtrace..."
-#: ../lib/Plugins/CCpp.cpp:442
+#: ../lib/Plugins/CCpp.cpp:532 ../lib/Plugins/CCpp.cpp:657
msgid "Searching for debug-info packages..."
msgstr "Pesquisando por pacotes debug-info..."
-#: ../lib/Plugins/CCpp.cpp:504
+#: ../lib/Plugins/CCpp.cpp:594 ../lib/Plugins/CCpp.cpp:690
msgid "Downloading and installing debug-info packages..."
msgstr "Baixando e instalando pacotes debug-info..."
-#: ../lib/Plugins/CCpp.cpp:566
+#: ../lib/Plugins/CCpp.cpp:733
msgid "Getting local universal unique identification..."
msgstr "Obtendo identificação universal local única..."
-#: ../lib/Plugins/CCpp.cpp:585
+#: ../lib/Plugins/CCpp.cpp:752
msgid "Getting global universal unique identification..."
msgstr "Obtendo identificação universal global única..."
-#: ../lib/Plugins/CCpp.cpp:630
+#: ../lib/Plugins/CCpp.cpp:797
msgid "Starting report creation..."
msgstr "Iniciando a criação do relatório..."
-#: ../lib/Plugins/CCpp.cpp:661
+#: ../lib/Plugins/CCpp.cpp:828
msgid "Skipping debuginfo installation"
msgstr "Pulando instalação do debuginfo"
@@ -486,8 +512,7 @@ msgstr "Pulando instalação do debuginfo"
msgid "Creating and submitting a report..."
msgstr "Criando e enviando um relatório..."
-#: ../lib/Plugins/Logger.cpp:58
-#: ../lib/Plugins/Mailx.cpp:123
+#: ../lib/Plugins/Logger.cpp:58 ../lib/Plugins/Mailx.cpp:123
msgid "Creating a report..."
msgstr "Criando um relatório..."
@@ -495,8 +520,7 @@ msgstr "Criando um relatório..."
msgid "Executing RunApp plugin..."
msgstr "Executando o plugin RunApp..."
-#: ../lib/Plugins/FileTransfer.cpp:63
-#: ../lib/Plugins/FileTransfer.cpp:409
+#: ../lib/Plugins/FileTransfer.cpp:63 ../lib/Plugins/FileTransfer.cpp:409
msgid "FileTransfer: URL not specified"
msgstr "FileTransfer: URL não especificada"
@@ -509,8 +533,7 @@ msgstr "Enviando o pacote %s via %s"
msgid "File Transfer: Creating a report..."
msgstr "File Transfer: Criando um relatório..."
-#: ../lib/Plugins/FileTransfer.cpp:358
-#: ../lib/Plugins/FileTransfer.cpp:386
+#: ../lib/Plugins/FileTransfer.cpp:358 ../lib/Plugins/FileTransfer.cpp:386
msgid "CFileTransfer::Run(): Cannot create and send an archive: "
msgstr "CFileTransfer::Run(): Não foi possível criar e enviar o pacote: "
@@ -536,16 +559,21 @@ msgstr "Execução do sosreport realizada"
#~ msgid "Check CC and add coment +1..."
#~ msgstr "Verifique o CC e adicione o comentário +1..."
+
#~ msgid "Pending events: %i"
#~ msgstr "Eventos pendentes: %i"
+
#~ msgid "Can't create menu from the description, popup won't be available!\n"
#~ msgstr ""
#~ "Não foi possível criar um menu a partir da descrição, a janela "
#~ "instantânea não estará disponível!\n"
+
#~ msgid "Creating an archive..."
#~ msgstr "Criando um pacote..."
+
#~ msgid "Getting local/global universal unique identification..."
#~ msgstr "Obtendo identificação universal local/global única..."
+
#~ msgid ""
#~ "Error while opening plugin settings UI: \n"
#~ "\n"
@@ -554,16 +582,13 @@ msgstr "Execução do sosreport realizada"
#~ "Erro ao abrir a interface de usuário das configurações do plugin: \n"
#~ "\n"
#~ "%s"
-#~ msgid ""
-#~ "Can't save plugin settings:\n"
-#~ " %s"
-#~ msgstr ""
-#~ "Não foi possível salvar as configurações do plugin:\n"
-#~ " %s"
+
#~ msgid "unknown response from settings dialog"
#~ msgstr "resposta desconhecida do diálogo de configurações"
+
#~ msgid "Applet is already running."
#~ msgstr "O miniaplicativo já está em execução."
+
#~ msgid ""
#~ "This is default handler, you should register your own with "
#~ "ConnectCrashHandler"
@@ -578,18 +603,23 @@ msgstr "Execução do sosreport realizada"
#~ msgstr ""
#~ "Este é o manipulador padrão, você deve registrar o seu próprio com o "
#~ "ConnectCrashHandler"
+
#~ msgid "Out of memory"
#~ msgstr "Memória insuficiente"
+
#~ msgid "Can't load gui description for SettingsDialog!"
#~ msgstr ""
#~ "Não foi possível carregar a descrição da interface gráfica de usuário "
#~ "para o SettingsDialog!"
+
#~ msgid "Name"
#~ msgstr "Nome"
+
#~ msgid "Enabled"
#~ msgstr "Habilitado"
+
#~ msgid "Can't get plugin description"
#~ msgstr "Não foi possível obter a descrição do plugin"
+
#~ msgid "Daemon is not running."
#~ msgstr "O daemon não está em execução."
-
diff --git a/src/CLI/Makefile.am b/src/CLI/Makefile.am
index 7b10bfb..dbeb1c3 100644
--- a/src/CLI/Makefile.am
+++ b/src/CLI/Makefile.am
@@ -27,6 +27,6 @@ man_MANS = abrt-cli.1
EXTRA_DIST = $(man_MANS)
completiondir = $(sysconfdir)/bash_completion.d
-completion_DATA = abrt-cli.bash
+dist_completion_DATA = abrt-cli.bash
DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@
diff --git a/src/Daemon/abrt-debuginfo-install b/src/Daemon/abrt-debuginfo-install
index fc5380b..1f947cd 100755
--- a/src/Daemon/abrt-debuginfo-install
+++ b/src/Daemon/abrt-debuginfo-install
@@ -62,10 +62,6 @@ tempdir=$2
cachedir=$3
debug=false
-count_words() {
- echo $#
-}
-
exec 2>&1
test -f "$core" || exit 2
@@ -78,6 +74,37 @@ mkdir "$tempdir" || exit 2
cd "$tempdir" || exit 2
$debug && echo "Installing rpms to $tempdir"
+
+count_words() {
+ echo $#
+}
+
+cleanup_and_report_missing() {
+# Which debuginfo files are still missing, including those we just unpacked?
+ missing_build_ids=`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
+ echo -n "$build_id "
+ done`
+ $debug && echo "missing_build_ids:$missing_build_ids"
+
+ # If cachedir is specified, tempdir is just a staging area. Delete it
+ if test x"$cachedir" != x""; then
+ $debug && echo "Removing $tempdir"
+ rm -rf "$tempdir"
+ fi
+
+ for missing in $missing_build_ids; do
+ echo "MISSING:$missing"
+ done
+
+ test x"$missing_build_ids" != x"" && echo "`count_words $missing_build_ids` debuginfos can't be found"
+}
+
+
# eu-unstrip output example:
# 0x400000+0x209000 23c77451cf6adff77fc1f5ee2a01d75de6511dda@0x40024c - - [exe]
# or
@@ -86,7 +113,9 @@ $debug && echo "Installing rpms to $tempdir"
# 0x3d15600000+0x208000 20196628d1bc062279622615cc9955554e5bb227@0x3d156001a0 /usr/lib64/libnotify.so.1.1.3 /usr/lib/debug/usr/lib64/libnotify.so.1.1.3.debug libnotify.so.1
# 0x7fd8ae931000+0x62d000 dd49f44f958b5a11a1635523b2f09cb2e45c1734@0x7fd8ae9311a0 /usr/lib64/libgtk-x11-2.0.so.0.1600.6 /usr/lib/debug/usr/lib64/libgtk-x11-2.0.so.0.1600.6.debug
echo "Getting list of build IDs"
-eu_unstrip_OUT=`eu-unstrip "--core=$core" -n 2>&1`
+# Observed errors:
+# eu-unstrip: /var/cache/abrt/ccpp-1256301004-2754/coredump: Callback returned failure
+eu_unstrip_OUT=`eu-unstrip "--core=$core" -n 2>eu_unstrip.ERR`
err=$?
printf "%s\nexitcode:%s\n" "$eu_unstrip_OUT" $err >eu_unstrip.OUT
test $err = 0 || exit 2
@@ -112,24 +141,19 @@ $debug && echo "build_ids:$build_ids"
missing_debuginfo_files=`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
- if test -f "/$file"; then
- mkdir -p "$cachedir/usr/lib/debug/.build-id/$build_id1"
- # Note: this does not preserve symlinks. This is intentional
- $debug && echo Copying "$file" to "$cachedir/$file" >&2
- cp "$file" "$cachedir/$file"
- continue
- fi
fi
test -f "/$file" && continue
echo -n "/$file "
done`
$debug && echo "missing_debuginfo_files:$missing_debuginfo_files"
-test x"$missing_debuginfo_files" = x"" && exit 0
+if test x"$missing_debuginfo_files" = x""; then
+ cleanup_and_report_missing
+ exit 0
+fi
# We'll run something like:
# yum --enablerepo='*debuginfo*' --quiet provides \
@@ -162,7 +186,10 @@ $debug && echo "packages:$packages"
# yum may return "" here if it found no packages (say, if coredump is from a new,
# unreleased package fresh from koji).
-test x"$packages" = x"" && exit 1
+if test x"$packages" = x""; then
+ cleanup_and_report_missing
+ exit 1
+fi
# Redirecting, since progress bar stuff only messes up our output
echo "Downloading `count_words $packages` packages"
@@ -180,45 +207,31 @@ for f in *.rpm; do
rpm2cpio <"$f" 2>>unpack.OUT | cpio -id >>unpack.OUT 2>&1
done
-# Which debuginfo files are still missing, including those we just unpacked?
-missing_build_ids=`for build_id in $build_ids; do
- build_id1=${build_id:0:2}
- build_id2=${build_id:2}
+# Copy debuginfo files to cachedir
+if test x"$cachedir" != x"" && test -d "$cachedir"; then
+ 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"
+ file="usr/lib/debug/.build-id/$build_id1/$build_id2.debug"
- test -f "/$file" && continue
- test x"$cachedir" != x"" \
- && test x"$cachedir" != x"/" \
- && test -f "$cachedir/$file" && continue
-
- if test -f "$file"; then
- # file is one of those we just installed.
- # Cache it if cachedir is specified.
- if test x"$cachedir" != x"" && test -d "$cachedir"; then
+ test -f "/$file" && continue
+ test x"$cachedir" != x"/" && test -f "$cachedir/$file" && continue
+
+ if test -f "$file"; then
+ # file is one of those we just installed.
+ # Cache it if cachedir is specified.
mkdir -p "$cachedir/usr/lib/debug/.build-id/$build_id1"
# Note: this does not preserve symlinks. This is intentional
- $debug && echo Copying "$file" to "$cachedir/$file" >&2
+ $debug && echo Copying2 "$file" to "$cachedir/$file" >&2
cp --remove-destination "$file" "$cachedir/$file"
+ continue
fi
- continue
- fi
- echo -n "$build_id "
-done`
-$debug && echo "missing_build_ids:$missing_build_ids"
-
-# If cachedir is specified, tempdir is just a staging area. Delete it
-if test x"$cachedir" != x""; then
- $debug && echo "Removing $tempdir"
- rm -rf "$tempdir"
+ done
fi
+$debug && echo "missing_build_ids:$missing_build_ids"
-test x"$missing_build_ids" = x"" && exit 0
-
-for missing in $missing_build_ids; do
- echo "MISSING:$missing"
-done
-
-echo "`count_words $missing_build_ids` debuginfos can't be found"
+cleanup_and_report_missing
-exit 1
+test x"$missing_build_ids" != x"" && exit 1
+exit 0
diff --git a/src/Gui/ABRTExceptions.py b/src/Gui/ABRTExceptions.py
index 0d357a3..c4d6b59 100644
--- a/src/Gui/ABRTExceptions.py
+++ b/src/Gui/ABRTExceptions.py
@@ -14,11 +14,3 @@ class WrongData(Exception):
def __str__(self):
return self.what
-
-class ConfBackendInitError(Exception):
- def __init__(self, msg):
- Exception.__init__(self)
- self.what = msg
-
- def __str__(self):
- return self.what
diff --git a/src/Gui/ABRTPlugin.py b/src/Gui/ABRTPlugin.py
index 8d687f8..8483be4 100644
--- a/src/Gui/ABRTPlugin.py
+++ b/src/Gui/ABRTPlugin.py
@@ -11,12 +11,17 @@ Email
Description
"""
from abrt_utils import _
-from ConfBackend import ConfBackendGnomeKeyring
+from ConfBackend import ConfBackendGnomeKeyring, ConfBackendInitError
class PluginSettings(dict):
def __init__(self):
dict.__init__(self)
- self.conf = ConfBackendGnomeKeyring()
+ self.conf = None
+ try:
+ self.conf = ConfBackendGnomeKeyring()
+ except ConfBackendInitError, e:
+ print e
+ pass
def check(self):
for key in ["Password", "Login"]:
@@ -32,16 +37,18 @@ class PluginSettings(dict):
for key in default_settings.keys():
self[str(key)] = str(default_settings[key])
- settings = self.conf.load(name)
- # overwrite defaluts with user setting
- for key in settings.keys():
- # only rewrite keys needed by the plugin
- # e.g we don't want a pass field for logger
- if key in default_settings.keys():
- self[str(key)] = str(settings[key])
+ if self.conf:
+ settings = self.conf.load(name)
+ # overwrite defaluts with user setting
+ for key in settings.keys():
+ # only rewrite keys needed by the plugin
+ # e.g we don't want a pass field for logger
+ if key in default_settings.keys():
+ self[str(key)] = str(settings[key])
def save(self, name):
- self.conf.save(name, self)
+ if self.conf:
+ self.conf.save(name, self)
class PluginInfo():
"""Class to represent common plugin info"""
diff --git a/src/Gui/CCMainWindow.py b/src/Gui/CCMainWindow.py
index eee6884..34c2def 100644
--- a/src/Gui/CCMainWindow.py
+++ b/src/Gui/CCMainWindow.py
@@ -154,9 +154,12 @@ class MainWindow():
def on_miSettings_clicked(self, widget):
dialog = SettingsDialog(self.window, self.ccdaemon)
- dialog.hydrate()
+ try:
+ dialog.hydrate()
+ except Exception, e:
+ gui_error_message(_("Can't show the settings dialog\n%s" % e))
+ return
dialog.show()
- self.ccdaemon.getSettings()
def warning_cb(self, daemon, message=None):
# try to hide the progressbar, we dont really care if it was visible ..
@@ -210,7 +213,8 @@ class MainWindow():
entry.getTime("%c"), entry.getCount(), entry.isReported(), entry])
# activate the last row if any..
if n:
- self.dlist.set_cursor(self.dumpsListStore.get_path(n))
+ # we can use (0,) as path for the first row, but what if API changes?
+ self.dlist.set_cursor(self.dumpsListStore.get_path(self.dumpsListStore.get_iter_first()))
def filter_dumps(self, model, miter, data):
# for later..
diff --git a/src/Gui/CellRenderers.py b/src/Gui/CellRenderers.py
index 0bedf7a..fe17b3e 100644
--- a/src/Gui/CellRenderers.py
+++ b/src/Gui/CellRenderers.py
@@ -38,10 +38,7 @@ class MultilineCellRenderer(gtk.CellRendererText):
def _on_editor_key_press_event(self, editor, event):
if event.state & (gtk.gdk.SHIFT_MASK | gtk.gdk.CONTROL_MASK): return
- if event.keyval in (gtk.keysyms.Return, gtk.keysyms.KP_Enter):
- editor.remove_widget()
- self.emit("edited", editor.get_data("path"), editor.get_text())
- elif event.keyval == gtk.keysyms.Escape:
+ if event.keyval == gtk.keysyms.Escape:
editor.set_text(self.old_text)
editor.remove_widget()
self.emit("editing-canceled")
diff --git a/src/Gui/ConfBackend.py b/src/Gui/ConfBackend.py
index eb94b87..db25984 100644
--- a/src/Gui/ConfBackend.py
+++ b/src/Gui/ConfBackend.py
@@ -1,4 +1,3 @@
-from ABRTExceptions import ConfBackendInitError
from abrt_utils import _
#FIXME: add some backend factory
@@ -8,6 +7,15 @@ try:
except ImportError, e:
gkey = None
+# Exceptions
+class ConfBackendInitError(Exception):
+ def __init__(self, msg):
+ Exception.__init__(self)
+ self.what = msg
+
+ def __str__(self):
+ return self.what
+
class ConfBackend(object):
def __init__(self):
pass
@@ -24,9 +32,14 @@ class ConfBackend(object):
class ConfBackendGnomeKeyring(ConfBackend):
def __init__(self):
ConfBackend.__init__(self)
- self.default_key_ring = gkey.get_default_keyring_sync()
if not gkey.is_available():
raise ConfBackendInitError(_("Can't connect do Gnome Keyring daemon"))
+ try:
+ self.default_key_ring = gkey.get_default_keyring_sync()
+ except:
+ # could happen if keyring daemon is running, but we run gui under
+ # user who is not owner is the running session - using su
+ raise ConfBackendInitError(_("Can't get default keyring"))
def save(self, name, settings):
settings_tmp = settings.copy()
@@ -36,7 +49,7 @@ class ConfBackendGnomeKeyring(ConfBackend):
item_list = []
try:
item_list = gkey.find_items_sync(gkey.ITEM_GENERIC_SECRET, {"AbrtPluginInfo":str(name)})
- except gkey.NoMatchError, ex:
+ except gkey.NoMatchError:
# nothing found
pass
@@ -59,7 +72,7 @@ class ConfBackendGnomeKeyring(ConfBackend):
item_list = None
try:
item_list = gkey.find_items_sync(gkey.ITEM_GENERIC_SECRET, {"AbrtPluginInfo":str(name)})
- except gkey.NoMatchError, ex:
+ except gkey.NoMatchError:
# nothing found
pass
diff --git a/src/Gui/SettingsDialog.py b/src/Gui/SettingsDialog.py
index b3af501..cf42393 100644
--- a/src/Gui/SettingsDialog.py
+++ b/src/Gui/SettingsDialog.py
@@ -1,9 +1,8 @@
import sys
import gtk
-from PluginList import getPluginInfoList, PluginInfoList
+from PluginList import getPluginInfoList
from CC_gui_functions import *
#from PluginSettingsUI import PluginSettingsUI
-from ABRTPlugin import PluginSettings, PluginInfo
from abrt_utils import _
@@ -75,11 +74,11 @@ class SettingsDialog:
try:
self.pluginlist = getPluginInfoList(self.ccdaemon, refresh=True)
except Exception, e:
- print "SettingsDialog: ", e
+ raise Exception("Comunication with daemon has failed, have you restarted the daemon after update?")
## hydrate cron jobs:
for key,val in self.settings["Cron"].iteritems():
- # actionas are separated by ','
+ # actions are separated by ','
actions = val.split(',')
self.settings["Cron"][key] = actions
for plugin in self.pluginlist.getActionPlugins():
@@ -120,11 +119,9 @@ class SettingsDialog:
self.add_AnalyzerAction(action)
def on_bCancelGPGKeys_clicked(self, button):
- print "cancel"
self.wGPGKeys.hide()
def on_bSaveGPGKeys_clicked(self, button):
- print "save"
self.wGPGKeys.hide()
def on_bAddGPGKey_clicked(self, button):
@@ -233,9 +230,6 @@ class SettingsDialog:
def on_bAddAction_clicked(self, button):
self.add_AnalyzerAction()
- def on_cancel_clicked(self,button):
- self.window.hide()
-
def dehydrate(self):
self.ccdaemon.setSettings(self.settings)
diff --git a/src/Hooks/Makefile.am b/src/Hooks/Makefile.am
index be1b1a2..4eb25e2 100644
--- a/src/Hooks/Makefile.am
+++ b/src/Hooks/Makefile.am
@@ -1,5 +1,5 @@
libexec_PROGRAMS = hookCCpp
-bin_PROGRAMS = dumpoops
+bin_PROGRAMS = dumpoops abrt-pyhook-helper
# CCpp
hookCCpp_SOURCES = \
@@ -29,6 +29,18 @@ dumpoops_CPPFLAGS = \
dumpoops_LDADD = \
../../lib/Utils/libABRTUtils.la
+# abrt-pyhook-helper
+abrt_pyhook_helper_SOURCES = \
+ abrt-pyhook-helper.cpp
+abrt_pyhook_helper_CPPFLAGS = \
+ -I$(srcdir)/../../inc \
+ -I$(srcdir)/../../lib/Utils \
+ -DDEBUG_DUMPS_DIR=\"$(DEBUG_DUMPS_DIR)\" \
+ -DVAR_RUN=\"$(VAR_RUN)\" \
+ -D_GNU_SOURCE
+abrt_pyhook_helper_LDADD = \
+ ../../lib/Utils/libABRTUtils.la
+
man_MANS = pyhook.conf.5
python_PYTHON = sitecustomize.py abrt_exception_handler.py
@@ -45,3 +57,7 @@ abrt_exception_handler.py:
# RPM fix: we need to regenerate abrt_exception_handler.py, because it has the default ddir
install-data-local:
sed s,@DEBUG_DUMP_DIR@,$(DEBUG_DUMPS_DIR),g abrt_exception_handler.py.in > abrt_exception_handler.py
+
+install-data-hook:
+ chmod u+s,g+s $(DESTDIR)$(bindir)/abrt-pyhook-helper
+
diff --git a/src/Hooks/abrt-pyhook-helper.cpp b/src/Hooks/abrt-pyhook-helper.cpp
new file mode 100644
index 0000000..4ac6ada
--- /dev/null
+++ b/src/Hooks/abrt-pyhook-helper.cpp
@@ -0,0 +1,138 @@
+/*
+ python-hook-writer.cpp - writes data to the /var/cache/abrt directory
+ with SUID bit
+
+ 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 <argp.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include "DebugDump.h"
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+const char *argp_program_version = "abrt-pyhook-helper " VERSION;
+const char *argp_program_bug_address = "<crash-catcher@lists.fedorahosted.org>";
+
+static char doc[] = "abrt-pyhook-helper -- stores crash data to abrt shared directory";
+
+static struct argp_option options[] = {
+ {"pid" , 'p', "PID" , 0, "PID of process that caused the crash" },
+ {"executable", 'e', "PATH" , 0, "absolute path to the program that crashed" },
+ {"uuid" , 'u', "UUID" , 0, "hash generated from the backtrace"},
+ {"cmdline" , 'c', "TEXT" , 0, "command line of the crashed program"},
+ {"loginuid" , 'l', "UID" , 0, "login UID"},
+ { 0 }
+};
+
+struct arguments
+{
+ char *pid;
+ char *executable;
+ char *uuid;
+ char *cmdline;
+ char *loginuid;
+};
+
+static error_t
+parse_opt (int key, char *arg, struct argp_state *state)
+{
+ /* Get the input argument from argp_parse, which we
+ know is a pointer to our arguments structure. */
+ struct arguments *arguments = (struct arguments*)state->input;
+
+ switch (key)
+ {
+ case 'p': arguments->pid = arg; break;
+ case 'e': arguments->executable = arg; break;
+ case 'u': arguments->uuid = arg; break;
+ case 'c': arguments->cmdline = arg; break;
+ case 'l': arguments->loginuid = arg; break;
+
+ case ARGP_KEY_ARG:
+ argp_usage(state);
+ exit(1);
+ break;
+
+ case ARGP_KEY_END:
+ if (!arguments->pid)
+ {
+ argp_usage(state);
+ exit(1);
+ }
+ break;
+
+ default:
+ return ARGP_ERR_UNKNOWN;
+ }
+ return 0;
+}
+
+/* Our argp parser. */
+static struct argp argp = { options, parse_opt, 0, doc };
+
+int main(int argc, char** argv)
+{
+ struct arguments arguments;
+ argp_parse (&argp, argc, argv, 0, 0, &arguments);
+
+ char path[PATH_MAX];
+ snprintf(path, sizeof(path), "%s/pyhook-%ld-%s", DEBUG_DUMPS_DIR,
+ (long)time(NULL), arguments.pid);
+
+ CDebugDump dd;
+ dd.Create(path, geteuid());
+ dd.SaveText(FILENAME_ANALYZER, "Python");
+ if (arguments.executable)
+ dd.SaveText(FILENAME_EXECUTABLE, arguments.executable);
+ if (arguments.cmdline)
+ dd.SaveText("cmdline", arguments.cmdline);
+ if (arguments.uuid)
+ dd.SaveText("uuid", arguments.uuid);
+ if (arguments.loginuid)
+ dd.SaveText("uid", arguments.loginuid);
+
+ // Read the backtrace from stdin.
+ int c;
+ int capacity = 1024;
+ char *bt = (char*)malloc(capacity);
+ char *btptr = bt;
+ while ((c = getchar()) != EOF)
+ {
+ if (c >= 0 && c <= 255)
+ *btptr++ = (char)c;
+ if (btptr - bt >= capacity - 1)
+ {
+ capacity *= 2;
+ bt = (char*)realloc(bt, capacity);
+ if (!bt)
+ {
+ printf("Error while allocating memory for backtrace.");
+ return 1;
+ }
+ }
+ }
+ *btptr = '\0';
+
+ dd.SaveText("backtrace", bt);
+ free(bt);
+ dd.Close();
+
+ return 0;
+}
diff --git a/src/Hooks/abrt_exception_handler.py.in b/src/Hooks/abrt_exception_handler.py.in
index 8ac7aa2..362aaf2 100644
--- a/src/Hooks/abrt_exception_handler.py.in
+++ b/src/Hooks/abrt_exception_handler.py.in
@@ -45,10 +45,10 @@ def exception_function():
import sys
import os
import syslog
+import subprocess
# abrt lib for saving debugdumps
import ABRTUtils
-
__DUMPHASH = {}
# FIXME: do length limits on obj dumps.
def __dump_class(instance, fd, level=0):
@@ -105,45 +105,20 @@ def __dump_class(instance, fd, level=0):
fd.write("%s%s: %s\n" % (pad, key, value))
def write_dump(pid, tb_uuid, tb):
- import time
- ttime = int(time.time())
- # localstatedir
- dir_name = "@DEBUG_DUMP_DIR@/pyhook-%s-%s" % (ttime, pid)
- dd = ABRTUtils.CDebugDump()
- try:
- #os.mkdir(dir_name)
- dd.Create(dir_name, os.getuid())
- except Exception, e:
- syslog.syslog("abrt: Cannot create dir %s %s" % (dir_name, e))
- return
- # save executable
- fexecutable = open("%s/executable" % dir_name, "w")
+ executable = "Exception raised from python shell"
if sys.argv[0]:
- fexecutable.write(os.path.abspath(sys.argv[0]))
- else:
- fexecutable.write("Exception raised from python shell")
- fexecutable.close()
- # save coredump
- coredump = open("%s/backtrace" % dir_name, "w")
- coredump.write(tb)
- coredump.close()
- # save uuid
- uuid = open("%s/uuid" % dir_name, "w")
- uuid.write(tb_uuid)
- uuid.close()
- # save cmdline
- cmdline = open("%s/cmdline" % dir_name, "w")
- cmdline.write(open("/proc/%s/cmdline" % pid).read().replace('\x00',' '))
- cmdline.close()
- # save uid
- uid = open("%s/uid" % dir_name, "w")
- uid.write(open("/proc/%s/loginuid" % pid).readlines()[0])
- uid.close()
- # save analyzer
- analyzer = open("%s/analyzer" % dir_name, "w")
- analyzer.write("Python")
- analyzer.close()
- dd.Close()
+ executable = os.path.abspath(sys.argv[0])
+
+ command = ["abrt-pyhook-helper"]
+ command.append("--pid=%s" % pid)
+ command.append("--executable=%s" % executable)
+ command.append("--uuid=%s" % tb_uuid)
+ command.append("--cmdline=%s" % open("/proc/%s/cmdline" % pid).read().replace('\x00',' '))
+ command.append("--loginuid=%s" % open("/proc/%s/loginuid" % pid).readlines()[0])
+
+ helper = subprocess.Popen(command, stdin=subprocess.PIPE)
+ helper.communicate(tb)
+ helper.wait()
def __dump_exception(out, text, tracebk):
'write a traceback to "out"'
diff --git a/src/Hooks/sitecustomize.py b/src/Hooks/sitecustomize.py
index 56c6669..32a3747 100644
--- a/src/Hooks/sitecustomize.py
+++ b/src/Hooks/sitecustomize.py
@@ -1,14 +1,16 @@
+# ABRT crash hook
+#
# This special script is placed in
# /usr/local/lib/pythonNNN/site-packages/sitecustomize.py
# and python interpreter runs it automatically everytime
-# some python script is executed
+# some python script is executed.
config = None
conf = {}
try:
config = open("/etc/abrt/pyhook.conf","r")
except:
- #silently ignore if file doesn't exist
+ # Silently ignore if file doesn't exist.
pass
try:
@@ -20,10 +22,14 @@ 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 if this hook doesn't work
+ # 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.
+ # abrtd sets the value to "no" when deactivated and vice versa.
if conf["enabled"] == "yes":
try:
from abrt_exception_handler import *