[PackageKit-commit] packagekit: Branch 'master' - 27 commits

Richard Hughes hughsient at kemper.freedesktop.org
Sun Nov 23 09:39:37 PST 2008


 backends/yum/yumBackend.py                 |    2 
 backends/zypp/pk-backend-zypp.cpp          |   28 +
 client/Makefile.am                         |    1 
 client/pk-console.c                        |   80 ++---
 client/pk-generate-pack.c                  |    6 
 client/pk-monitor.c                        |    6 
 configure.ac                               |    2 
 contrib/packagekit-plugin/src/contents.cpp |  195 ++++++++----
 contrib/packagekit-plugin/src/contents.h   |    9 
 contrib/packagekit-plugin/src/plugin.cpp   |   11 
 contrib/packagekit-plugin/src/plugin.h     |    4 
 contrib/packagekit-plugin/tests/test.html  |   13 
 lib/packagekit-glib/egg-test.c             |    6 
 lib/packagekit-glib/pk-client.c            |  442 +++++++++++++++--------------
 lib/packagekit-glib/pk-client.h            |    1 
 lib/packagekit-glib/pk-desktop.c           |   68 ++++
 lib/packagekit-glib/pk-desktop.h           |    5 
 lib/python/packagekit/client.py            |   20 -
 lib/python/packagekit/misc.py              |    5 
 po/de.po                                   |  270 +++++------------
 po/fi.po                                   |  155 +---------
 po/pt_BR.po                                |  350 ++++++++--------------
 po/sk.po                                   |  239 ++++++---------
 po/zh_CN.po                                |  163 ++--------
 src/Makefile.am                            |    1 
 src/pk-main.c                              |    6 
 src/pk-post-trans.c                        |   21 +
 src/pk-security-polkit.c                   |   18 -
 src/pk-syslog.c                            |    6 
 src/pk-transaction-list.c                  |    2 
 30 files changed, 970 insertions(+), 1165 deletions(-)

New commits:
commit 65b8a05197bebda4470586f28c593b3e04f475f8
Author: Richard Hughes <richard at hughsie.com>
Date:   Sun Nov 23 17:19:15 2008 +0000

    bugfix: enable translations in the client tools. Fixes fd#18674

diff --git a/client/Makefile.am b/client/Makefile.am
index 84fec80..45ae396 100644
--- a/client/Makefile.am
+++ b/client/Makefile.am
@@ -12,6 +12,7 @@ INCLUDES =						\
 	-DSYSCONFDIR=\""$(sysconfdir)"\" 		\
 	-DLIBDIR=\""$(libdir)"\" 			\
 	-DVERSION="\"$(VERSION)\"" 			\
+	-DPACKAGE_LOCALE_DIR=\"$(localedir)\"		\
 	-DPK_DATA=\"$(pkgdatadir)\"			\
 	-DPK_DB_DIR=\""$(PK_DB_DIR)"\" 			\
 	-DEGG_LOG_FILE=\""$(PK_LOG_DIR)/PackageKit"\"	\
diff --git a/client/pk-console.c b/client/pk-console.c
index c11f8fc..1a007a9 100644
--- a/client/pk-console.c
+++ b/client/pk-console.c
@@ -33,6 +33,7 @@
 #include <packagekit-glib/packagekit.h>
 #include <sys/types.h>
 #include <pwd.h>
+#include <locale.h>
 
 #include "egg-debug.h"
 #include "egg-string.h"
@@ -1664,6 +1665,11 @@ main (int argc, char *argv[])
 		{ NULL}
 	};
 
+	setlocale (LC_ALL, "");
+	bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
+	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+	textdomain (GETTEXT_PACKAGE);
+
 	if (! g_thread_supported ())
 		g_thread_init (NULL);
 	dbus_g_thread_init ();
diff --git a/client/pk-generate-pack.c b/client/pk-generate-pack.c
index 55f84b4..55dbc5b 100644
--- a/client/pk-generate-pack.c
+++ b/client/pk-generate-pack.c
@@ -24,6 +24,7 @@
 
 #include <unistd.h>
 #include <signal.h>
+#include <locale.h>
 #include <glib.h>
 #include <glib/gi18n.h>
 #include <glib/gstdio.h>
@@ -192,6 +193,11 @@ main (int argc, char *argv[])
 		{ NULL}
 	};
 
+	setlocale (LC_ALL, "");
+	bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
+	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+	textdomain (GETTEXT_PACKAGE);
+
 	if (! g_thread_supported ())
 		g_thread_init (NULL);
 
diff --git a/client/pk-monitor.c b/client/pk-monitor.c
index 58572d8..16a31c6 100644
--- a/client/pk-monitor.c
+++ b/client/pk-monitor.c
@@ -24,6 +24,7 @@
 #include <string.h>
 #include <unistd.h>
 #include <stdlib.h>
+#include <locale.h>
 #include <glib.h>
 #include <glib/gi18n.h>
 #include <dbus/dbus-glib.h>
@@ -117,6 +118,11 @@ main (int argc, char *argv[])
 		{ NULL}
 	};
 
+	setlocale (LC_ALL, "");
+	bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
+	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+	textdomain (GETTEXT_PACKAGE);
+
 	if (! g_thread_supported ())
 		g_thread_init (NULL);
 	dbus_g_thread_init ();
diff --git a/src/Makefile.am b/src/Makefile.am
index cf53125..0124055 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -15,6 +15,7 @@ INCLUDES =						\
 	$(POLKIT_CFLAGS)				\
 	$(PYTHON_CFLAGS)				\
 	$(LIBNM_CFLAGS)					\
+	-DPACKAGE_LOCALE_DIR=\"$(localedir)\"		\
 	-DBINDIR=\"$(bindir)\"			 	\
 	-DSBINDIR=\"$(sbindir)\"		 	\
 	-DDATADIR=\"$(datadir)\"			\
diff --git a/src/pk-main.c b/src/pk-main.c
index 85ae3d7..40184b0 100644
--- a/src/pk-main.c
+++ b/src/pk-main.c
@@ -26,6 +26,7 @@
 #include <signal.h>
 #include <unistd.h>
 #include <stdlib.h>
+#include <locale.h>
 #include <glib.h>
 #include <glib/gi18n.h>
 #include <dbus/dbus-glib.h>
@@ -199,6 +200,11 @@ main (int argc, char *argv[])
 		{ NULL}
 	};
 
+	setlocale (LC_ALL, "");
+	bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
+	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+	textdomain (GETTEXT_PACKAGE);
+
 	if (! g_thread_supported ())
 		g_thread_init (NULL);
 	dbus_g_thread_init ();
commit e63577b1d039ae123a6f5dac255d5db0db3f8453
Merge: 8bac4a8... 038859c...
Author: Richard Hughes <richard at hughsie.com>
Date:   Sun Nov 23 17:06:25 2008 +0000

    Merge branch 'master' of git+ssh://hughsie@git.packagekit.org/srv/git/PackageKit

commit 038859c3ecc2f173ba50cf966fe531affeb5dc1f
Author: sainrysec <sainrysec at gmail.com>
Date:   Sun Nov 23 11:50:07 2008 +0000

    finish zh_CN.po
    
    Transmitted-via: Transifex (translate.fedoraproject.org)

diff --git a/po/zh_CN.po b/po/zh_CN.po
index 4ddeab5..5db10ac 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -1,20 +1,22 @@
 # 简体中文翻译
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) 2008 THE 'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the  package.
 # Chen Yu <jcomee at gmail.com>, 2008
 # 甘露(Gan Lu) <rhythm.gan at gmail.com>, 2008
-#
+# 闫丰刚 (sainry)<sainry at gmail.com> 2008
+# 
+# 
 msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-11-19 16:26+0000\n"
-"PO-Revision-Date: 2008-10-30 23:41+0700\n"
+"POT-Creation-Date: 2008-11-20 01:35+0000\n"
+"PO-Revision-Date: 2008-11-23 19:47+0800\n"
 "Last-Translator: 甘露(Gan Lu) <rhythm.gan at gmail.com>\n"
 "Language-Team: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
+"Content-Transfer-Encoding: 8bit"
 
 #. TRANSLATORS: this is a header for the package that can be updated
 #: ../client/pk-console.c:286
@@ -151,79 +153,71 @@ msgstr "该工具无法得到 '%s' 的文件清单:%s"
 #: ../client/pk-console.c:1054
 #, c-format
 msgid "File already exists: %s"
-msgstr ""
+msgstr "文件已存在: %s"
 
 #. TRANSLATORS: follows a list of packages to install
 #: ../client/pk-console.c:1059 ../client/pk-console.c:1115
 #: ../client/pk-console.c:1190
-#, fuzzy
 msgid "Getting package list"
-msgstr "正在获得软件包信息..."
+msgstr "正在获得软件包列表..."
 
 #. TRANSLATORS: There was an error getting the list of packages. The detailed error follows
 #: ../client/pk-console.c:1065 ../client/pk-console.c:1121
 #: ../client/pk-console.c:1196
-#, fuzzy, c-format
+#, c-format
 msgid "This tool could not get package list: %s"
-msgstr "该工具无法删除本软件包:%s"
+msgstr "该工具无法得到软件表列表:%s"
 
 #. TRANSLATORS: There was an error saving the list
 #: ../client/pk-console.c:1076
-#, fuzzy, c-format
 msgid "Failed to save to disk"
-msgstr "无法得到最后一次时间"
+msgstr "存盘失败"
 
 #. TRANSLATORS: There was an error getting the list. The filename follows
 #: ../client/pk-console.c:1110 ../client/pk-console.c:1185
 #, c-format
 msgid "File does not exist: %s"
-msgstr ""
+msgstr "文件不存在 : %s"
 
 #. TRANSLATORS: header to a list of packages newly added
 #: ../client/pk-console.c:1142
-#, fuzzy
 msgid "Packages to add"
-msgstr "PackageKit 监视器"
+msgstr "添加软件包"
 
 #. TRANSLATORS: header to a list of packages removed
 #: ../client/pk-console.c:1150
-#, fuzzy
 msgid "Packages to remove"
-msgstr "PackageKit 服务"
+msgstr "删除软件包"
 
 #. TRANSLATORS: We didn't find any differences
 #: ../client/pk-console.c:1218
-#, fuzzy, c-format
 msgid "No new packages need to be installed"
-msgstr "该软件包 '%s' 无法安装:%s"
+msgstr "没有新的软件包安装"
 
 #. TRANSLATORS: follows a list of packages to install
 #: ../client/pk-console.c:1224
 msgid "To install"
-msgstr ""
+msgstr "安装"
 
 #. TRANSLATORS: searching takes some time....
 #: ../client/pk-console.c:1235
 msgid "Searching for package: "
-msgstr ""
+msgstr "搜索软件包: "
 
 #. TRANSLATORS: package was not found -- this is the end of a string ended in ...
 #: ../client/pk-console.c:1239
-#, fuzzy
 msgid "not found."
-msgstr "目录没有找到"
+msgstr "没有找到"
 
 #. TRANSLATORS: We didn't find any packages to install
 #: ../client/pk-console.c:1250
-#, fuzzy, c-format
 msgid "No packages can be found to install"
-msgstr "没有为你系统发现软件包"
+msgstr "找不到软件包安装"
 
 #. TRANSLATORS: installing new packages from package list
 #: ../client/pk-console.c:1256
-#, fuzzy
 msgid "Installing packages"
-msgstr "正在下载软件包"
+msgstr "正在安装软件包..."
 
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
 #: ../client/pk-console.c:1292
@@ -302,7 +296,7 @@ msgid "Subcommands:"
 msgstr "子命令:"
 
 #: ../client/pk-console.c:1657 ../client/pk-generate-pack.c:183
-#: ../client/pk-monitor.c:114 ../src/pk-main.c:196
+#: ../client/pk-monitor.c:114 ../src/pk-main.c:190
 msgid "Show extra debugging information"
 msgstr "显示额外的调试信息"
 
@@ -326,7 +320,7 @@ msgstr "该工具无法连接到系统 DBUS。"
 #. TRANSLATORS: The user specified an incorrect filter
 #: ../client/pk-console.c:1770
 msgid "The filter specified was invalid"
-msgstr ""
+msgstr "过滤器指定非法"
 
 #: ../client/pk-console.c:1787
 msgid "You need to specify a search type, e.g. name"
@@ -402,14 +396,12 @@ msgid "You need to specify a package to find the files for"
 msgstr "你需要指定某个软件包已找到相关文件"
 
 #: ../client/pk-console.c:1969
-#, fuzzy
 msgid "You need to specify a list file to create"
-msgstr "你需要指定某个时间期限"
+msgstr "你需要指定一个要创建的文件序列"
 
 #: ../client/pk-console.c:1977 ../client/pk-console.c:1985
-#, fuzzy
 msgid "You need to specify a list file to open"
-msgstr "你需要指定某个时间期限"
+msgstr "你需要指定一个文件序列来打开"
 
 #. TRANSLATORS: The user tried to use an unsupported option on the command line
 #: ../client/pk-console.c:2038
@@ -522,7 +514,6 @@ msgstr "PackageKit 监视器"
 
 #. TRANSLATORS: The package was not found in any software sources
 #: ../client/pk-tools-common.c:114
-#, c-format
 msgid "The package could not be found"
 msgstr "无法找到该软件包"
 
@@ -606,90 +597,6 @@ msgstr "PackageKit 服务包"
 msgid "PackageKit Package List"
 msgstr "PackageKit 软件包清单"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:1
-msgid "Accept EULA"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:2
-msgid "Authentication is required to accept a EULA"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:3
-msgid "Authentication is required to change software source parameters"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:4
-msgid ""
-"Authentication is required to consider a key used for signing packages as "
-"trusted"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:5
-msgid "Authentication is required to install a signed package"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:6
-msgid "Authentication is required to install an untrusted package"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:7
-msgid "Authentication is required to refresh the system sources"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:8
-msgid "Authentication is required to remove packages"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:9
-msgid "Authentication is required to rollback a transaction"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:10
-msgid ""
-"Authentication is required to set the network proxy used for downloading "
-"packages"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:11
-msgid "Authentication is required to update packages"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:12
-msgid "Change software source parameters"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:13
-msgid "Install local file"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:14
-msgid "Install untrusted local file"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:15
-msgid "Refresh system sources"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:16
-msgid "Remove package"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:17
-msgid "Rollback to a previous transaction"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:18
-msgid "Set network proxy"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:19
-msgid "Trust a key used for signing packages"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:20
-msgid "Update packages"
-msgstr ""
-
 #: ../src/pk-main.c:85
 msgid "Startup failed due to security policies on this machine."
 msgstr "由于本机的安全策略导致启动失败"
@@ -708,39 +615,39 @@ msgid ""
 "directory:"
 msgstr "org.freedesktop.PackageKit.conf 没有安装到系统目录中:"
 
-#: ../src/pk-main.c:192
+#: ../src/pk-main.c:186
 msgid "Packaging backend to use, e.g. dummy"
 msgstr "使用的打包后端,例如“伪”后端"
 
-#: ../src/pk-main.c:194
+#: ../src/pk-main.c:188
 msgid "Daemonize and detach from the terminal"
 msgstr "后台化并从终端中分离"
 
-#: ../src/pk-main.c:198
+#: ../src/pk-main.c:192
 msgid "Disable the idle timer"
 msgstr "禁止空间计时器"
 
-#: ../src/pk-main.c:200
+#: ../src/pk-main.c:194
 msgid "Show version and exit"
 msgstr "显示版本并退出"
 
-#: ../src/pk-main.c:202
+#: ../src/pk-main.c:196
 msgid "Exit after a small delay"
 msgstr "稍稍延迟后退出"
 
-#: ../src/pk-main.c:204
+#: ../src/pk-main.c:198
 msgid "Exit after the engine has loaded"
 msgstr "引擎载入后退出"
 
-#: ../src/pk-main.c:214
+#: ../src/pk-main.c:207
 msgid "PackageKit service"
 msgstr "PackageKit 服务"
 
-#: ../src/pk-main.c:250
+#: ../src/pk-main.c:243
 msgid "Cannot connect to the system bus"
 msgstr "无法连接到系统总线"
 
-#: ../src/pk-main.c:296
+#: ../src/pk-main.c:292
 #, c-format
 msgid "Error trying to start: %s\n"
 msgstr "出现错误当尝试启动 %s\n"
commit 4ec0e0f57f7be0aae71c71c97ea7f287494a06ca
Author: Ville-Pekka Vainio <vpivaini at cs.helsinki.fi>
Date:   Sun Nov 23 09:30:54 2008 +0000

    Updated Finnish translation
    
    Transmitted-via: Transifex (translate.fedoraproject.org)

diff --git a/po/fi.po b/po/fi.po
index c11215a..673ce0e 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: packagekit\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-11-19 16:26+0000\n"
-"PO-Revision-Date: 2008-11-01 14:18+0200\n"
+"POT-Creation-Date: 2008-11-20 01:35+0000\n"
+"PO-Revision-Date: 2008-11-23 11:29+0200\n"
 "Last-Translator: Ville-Pekka Vainio <vpivaini at cs.helsinki.fi>\n"
 "Language-Team: Finnish <laatu at lokalisointi.org>\n"
 "MIME-Version: 1.0\n"
@@ -152,79 +152,71 @@ msgstr "Tämä työkalu ei voinut hakea paketin ”%s” tiedostoluetteloa: %s"
 #: ../client/pk-console.c:1054
 #, c-format
 msgid "File already exists: %s"
-msgstr ""
+msgstr "Tiedosto on jo olemassa: %s"
 
 #. TRANSLATORS: follows a list of packages to install
 #: ../client/pk-console.c:1059 ../client/pk-console.c:1115
 #: ../client/pk-console.c:1190
-#, fuzzy
 msgid "Getting package list"
-msgstr "Haetaan pakettitietoja..."
+msgstr "Haetaan pakettiluetteloa"
 
 #. TRANSLATORS: There was an error getting the list of packages. The detailed error follows
 #: ../client/pk-console.c:1065 ../client/pk-console.c:1121
 #: ../client/pk-console.c:1196
-#, fuzzy, c-format
+#, c-format
 msgid "This tool could not get package list: %s"
-msgstr "Tämä työkalu ei voinut poistaa paketteja: %s"
+msgstr "Tämä työkalu ei voinut hakea pakettiluetteloa: %s"
 
 #. TRANSLATORS: There was an error saving the list
 #: ../client/pk-console.c:1076
-#, fuzzy, c-format
 msgid "Failed to save to disk"
-msgstr "Edellistä aikaa ei saatu"
+msgstr "Tallennus epäonnistui"
 
 #. TRANSLATORS: There was an error getting the list. The filename follows
 #: ../client/pk-console.c:1110 ../client/pk-console.c:1185
 #, c-format
 msgid "File does not exist: %s"
-msgstr ""
+msgstr "Tiedostoa ei ole olemassa: %s"
 
 #. TRANSLATORS: header to a list of packages newly added
 #: ../client/pk-console.c:1142
-#, fuzzy
 msgid "Packages to add"
-msgstr "PackageKit-tarkkailija"
+msgstr "Lisättävät paketit"
 
 #. TRANSLATORS: header to a list of packages removed
 #: ../client/pk-console.c:1150
-#, fuzzy
 msgid "Packages to remove"
-msgstr "PackageKit-palvelu"
+msgstr "Poistettavat paketit"
 
 #. TRANSLATORS: We didn't find any differences
 #: ../client/pk-console.c:1218
-#, fuzzy, c-format
 msgid "No new packages need to be installed"
-msgstr "Pakettia ”%s” ei voitu asentaa: %s"
+msgstr "Yhtään uutta pakettia ei tarvitse asentaa"
 
 #. TRANSLATORS: follows a list of packages to install
 #: ../client/pk-console.c:1224
 msgid "To install"
-msgstr ""
+msgstr "Asennetaan"
 
 #. TRANSLATORS: searching takes some time....
 #: ../client/pk-console.c:1235
 msgid "Searching for package: "
-msgstr ""
+msgstr "Etsitään pakettia: "
 
 #. TRANSLATORS: package was not found -- this is the end of a string ended in ...
 #: ../client/pk-console.c:1239
-#, fuzzy
 msgid "not found."
-msgstr "Hakemistoa ei löytynyt"
+msgstr "ei löytynyt."
 
 #. TRANSLATORS: We didn't find any packages to install
 #: ../client/pk-console.c:1250
-#, fuzzy, c-format
 msgid "No packages can be found to install"
-msgstr "Järjestelmääsi sopivia paketteja ei löytynyt"
+msgstr "Asennettavia paketteja ei löytynyt"
 
 #. TRANSLATORS: installing new packages from package list
 #: ../client/pk-console.c:1256
-#, fuzzy
 msgid "Installing packages"
-msgstr "Ladataan paketteja"
+msgstr "Asennetaan paketteja"
 
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
 #: ../client/pk-console.c:1292
@@ -303,7 +295,7 @@ msgid "Subcommands:"
 msgstr "Alikomennot:"
 
 #: ../client/pk-console.c:1657 ../client/pk-generate-pack.c:183
-#: ../client/pk-monitor.c:114 ../src/pk-main.c:196
+#: ../client/pk-monitor.c:114 ../src/pk-main.c:190
 msgid "Show extra debugging information"
 msgstr "Näytä ylimääräisiä virheenjäljitystietoja"
 
@@ -322,12 +314,12 @@ msgstr "Lopeta odottamatta toimintojen valmistumista"
 #. TRANSLATORS: This is when we could not connect to the system bus, and is fatal
 #: ../client/pk-console.c:1685
 msgid "This tool could not connect to system DBUS."
-msgstr "Tänä työkalu ei voinut yhdistää järjestelmän DBUSiin."
+msgstr "Tämä työkalu ei voinut yhdistää järjestelmän DBUSiin."
 
 #. TRANSLATORS: The user specified an incorrect filter
 #: ../client/pk-console.c:1770
 msgid "The filter specified was invalid"
-msgstr ""
+msgstr "Annettu suodin oli virheellinen"
 
 #: ../client/pk-console.c:1787
 msgid "You need to specify a search type, e.g. name"
@@ -403,14 +395,12 @@ msgid "You need to specify a package to find the files for"
 msgstr "On annettava paketti, jonka tiedostoja etsitään"
 
 #: ../client/pk-console.c:1969
-#, fuzzy
 msgid "You need to specify a list file to create"
-msgstr "Aika on annettava"
+msgstr "Anna luotavan luettelotiedoston nimi"
 
 #: ../client/pk-console.c:1977 ../client/pk-console.c:1985
-#, fuzzy
 msgid "You need to specify a list file to open"
-msgstr "Aika on annettava"
+msgstr "Anna avattavan luettelotiedoston nimi"
 
 #. TRANSLATORS: The user tried to use an unsupported option on the command line
 #: ../client/pk-console.c:2038
@@ -526,7 +516,6 @@ msgstr "PackageKit-tarkkailija"
 
 #. TRANSLATORS: The package was not found in any software sources
 #: ../client/pk-tools-common.c:114
-#, c-format
 msgid "The package could not be found"
 msgstr "Pakettia ei löytynyt"
 
@@ -610,90 +599,6 @@ msgstr "PackageKit-huoltopakkaus"
 msgid "PackageKit Package List"
 msgstr "PackageKit-pakettiluettelo"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:1
-msgid "Accept EULA"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:2
-msgid "Authentication is required to accept a EULA"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:3
-msgid "Authentication is required to change software source parameters"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:4
-msgid ""
-"Authentication is required to consider a key used for signing packages as "
-"trusted"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:5
-msgid "Authentication is required to install a signed package"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:6
-msgid "Authentication is required to install an untrusted package"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:7
-msgid "Authentication is required to refresh the system sources"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:8
-msgid "Authentication is required to remove packages"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:9
-msgid "Authentication is required to rollback a transaction"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:10
-msgid ""
-"Authentication is required to set the network proxy used for downloading "
-"packages"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:11
-msgid "Authentication is required to update packages"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:12
-msgid "Change software source parameters"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:13
-msgid "Install local file"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:14
-msgid "Install untrusted local file"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:15
-msgid "Refresh system sources"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:16
-msgid "Remove package"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:17
-msgid "Rollback to a previous transaction"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:18
-msgid "Set network proxy"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:19
-msgid "Trust a key used for signing packages"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:20
-msgid "Update packages"
-msgstr ""
-
 #: ../src/pk-main.c:85
 msgid "Startup failed due to security policies on this machine."
 msgstr "Käynnistys epäonnistui tämän koneen turvakäytäntöjen vuoksi"
@@ -715,39 +620,39 @@ msgstr ""
 "Tiedostoa org.freedesktop.PackageKit.conf ei ole asennettu "
 "järjestelmähakemistoon:"
 
-#: ../src/pk-main.c:192
+#: ../src/pk-main.c:186
 msgid "Packaging backend to use, e.g. dummy"
 msgstr "Käytettävä paketinhallintajärjestelmä-taustaosa, esim. dummy"
 
-#: ../src/pk-main.c:194
+#: ../src/pk-main.c:188
 msgid "Daemonize and detach from the terminal"
 msgstr "Tee taustaprosessiksi ja irrota päätteestä"
 
-#: ../src/pk-main.c:198
+#: ../src/pk-main.c:192
 msgid "Disable the idle timer"
 msgstr "Poista toimettomuusajastin käytöstä"
 
-#: ../src/pk-main.c:200
+#: ../src/pk-main.c:194
 msgid "Show version and exit"
 msgstr "Näytä versio ja lopeta"
 
-#: ../src/pk-main.c:202
+#: ../src/pk-main.c:196
 msgid "Exit after a small delay"
 msgstr "Sulje pienen viiveen jälkeen"
 
-#: ../src/pk-main.c:204
+#: ../src/pk-main.c:198
 msgid "Exit after the engine has loaded"
 msgstr "Sulje sen jälkeen, kun moottori on ladattu"
 
-#: ../src/pk-main.c:214
+#: ../src/pk-main.c:207
 msgid "PackageKit service"
 msgstr "PackageKit-palvelu"
 
-#: ../src/pk-main.c:250
+#: ../src/pk-main.c:243
 msgid "Cannot connect to the system bus"
 msgstr "Ei voida yhdistää järjestelmäväylään"
 
-#: ../src/pk-main.c:296
+#: ../src/pk-main.c:292
 #, c-format
 msgid "Error trying to start: %s\n"
 msgstr "Virhe yritettäessä käynnistää: %s\n"
commit 8bac4a8bd01f0e24faa7a46669c999e7a4378b3b
Author: Richard Hughes <richard at hughsie.com>
Date:   Sat Nov 22 17:30:34 2008 +0000

    trivial: don't warn if we can't get the caller, it shouldn't be of interest

diff --git a/src/pk-security-polkit.c b/src/pk-security-polkit.c
index 9ef31f2..450f260 100644
--- a/src/pk-security-polkit.c
+++ b/src/pk-security-polkit.c
@@ -72,7 +72,7 @@ pk_security_caller_new_from_sender (PkSecurity *security, const gchar *sender)
 	dbus_error_init (&dbus_error);
 	caller = polkit_caller_new_from_dbus_name (security->priv->connection, sender, &dbus_error);
 	if (dbus_error_is_set (&dbus_error)) {
-		egg_warning ("failed to get caller %s: %s\n", dbus_error.name, dbus_error.message);
+		egg_debug ("failed to get caller %s: %s", dbus_error.name, dbus_error.message);
 		dbus_error_free (&dbus_error);
 	}
 
commit 692c533f08a98f4f45776f2d988570c442ec911e
Author: root <root at hughsie-laptop.(none)>
Date:   Fri Nov 21 17:17:03 2008 +0000

    trivial: fix a critical warning in the self test code as the caller is no longer allowed to be NULL

diff --git a/src/pk-security-polkit.c b/src/pk-security-polkit.c
index 42aa95c..9ef31f2 100644
--- a/src/pk-security-polkit.c
+++ b/src/pk-security-polkit.c
@@ -386,8 +386,6 @@ pk_security_test (EggTest *test)
 {
 	PkSecurity *security;
 	const gchar *action;
-	gboolean ret;
-	gchar *error;
 
 	if (!egg_test_start (test, "PkSecurity"))
 		return;
@@ -403,7 +401,7 @@ pk_security_test (EggTest *test)
 	egg_test_title (test, "map valid role to action");
 	action = pk_security_role_to_action (security, FALSE, PK_ROLE_ENUM_UPDATE_PACKAGES);
 	if (egg_strequal (action, "org.freedesktop.packagekit.system-update"))
-		egg_test_success (test, NULL, error);
+		egg_test_success (test, NULL);
 	else
 		egg_test_failed (test, "did not get correct action '%s'", action);
 
@@ -411,20 +409,10 @@ pk_security_test (EggTest *test)
 	egg_test_title (test, "map invalid role to action");
 	action = pk_security_role_to_action (security, FALSE, PK_ROLE_ENUM_SEARCH_NAME);
 	if (action == NULL)
-		egg_test_success (test, NULL, error);
+		egg_test_success (test, NULL);
 	else
 		egg_test_failed (test, "did not get correct action '%s'", action);
 
-	/************************************************************/
-	egg_test_title (test, "get the default backend");
-	error = NULL;
-	ret = pk_security_action_is_allowed (security, NULL, FALSE, PK_ROLE_ENUM_UPDATE_PACKAGES, &error);
-	if (ret == FALSE)
-		egg_test_success (test, "did not authenticate update-package, error '%s'", error);
-	else
-		egg_test_failed (test, "authenticated update-package!");
-	g_free (error);
-
 	g_object_unref (security);
 
 	egg_test_end (test);
commit 32303e722a4d66a98b66a4a2d092c5af1267aa85
Author: root <root at hughsie-laptop.(none)>
Date:   Fri Nov 21 17:16:18 2008 +0000

    trivial: fix make check by using the correct instance variable

diff --git a/src/pk-syslog.c b/src/pk-syslog.c
index 3706139..908a9f8 100644
--- a/src/pk-syslog.c
+++ b/src/pk-syslog.c
@@ -130,13 +130,13 @@ egg_test_syslog (EggTest *test)
 
 	/************************************************************/
 	egg_test_title (test, "get an instance");
-	syslog = pk_syslog_new ();
-	if (syslog != NULL)
+	self = pk_syslog_new ();
+	if (self != NULL)
 		egg_test_success (test, NULL);
 	else
 		egg_test_failed (test, NULL);
 
-	g_object_unref (syslog);
+	g_object_unref (self);
 
 	egg_test_end (test);
 }
commit d2294b68aa9f27c7149828aeccc5f9184b07cb9a
Author: root <root at hughsie-laptop.(none)>
Date:   Fri Nov 21 17:15:23 2008 +0000

    trivial: fix a small memory leak in the PkDesktop self check code

diff --git a/lib/packagekit-glib/pk-desktop.c b/lib/packagekit-glib/pk-desktop.c
index 0cb89fc..2ba2824 100644
--- a/lib/packagekit-glib/pk-desktop.c
+++ b/lib/packagekit-glib/pk-desktop.c
@@ -362,6 +362,7 @@ pk_desktop_test (EggTest *test)
 		egg_test_success (test, NULL);
 	else
 		egg_test_failed (test, "package was: %s", package);
+	g_free (package);
 
 	/************************************************************/
 	egg_test_title (test, "get files");
commit d066efcb458efcc72364d17b054ebdefe151adc3
Author: root <root at hughsie-laptop.(none)>
Date:   Fri Nov 21 17:14:49 2008 +0000

    trivial: egg whitepspace fix

diff --git a/lib/packagekit-glib/egg-test.c b/lib/packagekit-glib/egg-test.c
index bba2cce..0826299 100644
--- a/lib/packagekit-glib/egg-test.c
+++ b/lib/packagekit-glib/egg-test.c
@@ -214,7 +214,7 @@ egg_test_title (EggTest *test, const gchar *format, ...)
 	g_vasprintf (&va_args_buffer, format, args);
 	va_end (args);
 	g_print ("> check #%u\t%s: \t%s...", test->total+1, test->type, va_args_buffer);
-	g_free(va_args_buffer);
+	g_free (va_args_buffer);
 
 	test->total++;
 }
@@ -236,7 +236,7 @@ egg_test_success (EggTest *test, const gchar *format, ...)
 	g_vasprintf (&va_args_buffer, format, args);
 	va_end (args);
 	g_print ("...OK [%s]\n", va_args_buffer);
-	g_free(va_args_buffer);
+	g_free (va_args_buffer);
 finish:
 	test->succeeded++;
 }
@@ -257,7 +257,7 @@ egg_test_failed (EggTest *test, const gchar *format, ...)
 	g_vasprintf (&va_args_buffer, format, args);
 	va_end (args);
 	g_print ("FAILED [%s]\n", va_args_buffer);
-	g_free(va_args_buffer);
+	g_free (va_args_buffer);
 failed:
 	exit (1);
 }
commit 99efaa75bea4a01890b146f5f9ca1ab74b898e13
Author: Richard Hughes <richard at hughsie.com>
Date:   Fri Nov 21 17:04:10 2008 +0000

    bugfix: tidy up the error handling in PkClient so we always fix up remote errors

diff --git a/lib/packagekit-glib/pk-client.c b/lib/packagekit-glib/pk-client.c
index 4141f53..e37d964 100644
--- a/lib/packagekit-glib/pk-client.c
+++ b/lib/packagekit-glib/pk-client.c
@@ -185,70 +185,6 @@ pk_client_error_get_type (void)
  ******************************************************************************/
 
 /**
- * pk_client_error_set:
- *
- * Sets the correct error code (if allowed) and print to the screen
- * as a warning.
- **/
-static gboolean
-pk_client_error_set (GError **error, gint code, const gchar *format, ...)
-{
-	va_list args;
-	gchar *buffer = NULL;
-	gboolean ret = TRUE;
-
-	va_start (args, format);
-	g_vasprintf (&buffer, format, args);
-	va_end (args);
-
-	/* dumb */
-	if (error == NULL) {
-		egg_warning ("No error set, so can't set: %s", buffer);
-		ret = FALSE;
-		goto out;
-	}
-
-	/* already set */
-	if (*error != NULL) {
-		egg_warning ("not NULL error!");
-		g_clear_error (error);
-	}
-
-	/* propogate */
-	g_set_error (error, PK_CLIENT_ERROR, code, "%s", buffer);
-
-out:
-	g_free(buffer);
-	return ret;
-}
-
-/**
- * pk_client_error_print:
- * @error: a %GError
- *
- * Prints the error to the screen.
- *
- * Return value: %TRUE if error was printed
- **/
-gboolean
-pk_client_error_print (GError **error)
-{
-	const gchar *name;
-
-	if (error != NULL && *error != NULL) {
-		/* get some proper debugging */
-		if ((*error)->domain == DBUS_GERROR &&
-		    (*error)->code == DBUS_GERROR_REMOTE_EXCEPTION)
-			name = dbus_g_error_get_name (*error);
-		else
-			name = g_quark_to_string ((*error)->domain);
-		egg_debug ("ERROR: %s: %s", name, (*error)->message);
-		return TRUE;
-	}
-	return FALSE;
-}
-
-/**
  * pk_client_error_fixup:
  * @error: a %GError
  **/
@@ -289,6 +225,11 @@ pk_client_error_fixup (GError **error)
 			egg_debug ("fixing up code from %s to %i", name, code);
 			(*error)->code = code;
 		}
+		if (g_str_has_prefix ((*error)->message, "org.freedesktop.packagekit.")) {
+			egg_debug ("fixing up code for Policykit auth failure");
+			g_error_free (*error);
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED_AUTH, "PolicyKit authorization failure");
+		}
 		return TRUE;
 	}
 	return FALSE;
@@ -415,8 +356,8 @@ pk_client_set_use_buffer (PkClient *client, gboolean use_buffer, GError **error)
 
 	/* are we doing this without any need? */
 	if (client->priv->use_buffer) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED,
-				     "already set use_buffer!");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "already set use_buffer!");
 		return FALSE;
 	}
 
@@ -442,8 +383,8 @@ pk_client_set_synchronous (PkClient *client, gboolean synchronous, GError **erro
 
 	/* are we doing this without any need? */
 	if (client->priv->synchronous) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED,
-				     "already set synchronous!");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "already set synchronous!");
 		return FALSE;
 	}
 
@@ -938,7 +879,8 @@ pk_client_get_allow_cancel (PkClient *client, gboolean *allow_cancel, GError **e
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	ret = dbus_g_proxy_call (client->priv->proxy, "GetAllowCancel", error,
@@ -1022,7 +964,8 @@ pk_client_get_status (PkClient *client, PkStatusEnum *status, GError **error)
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	ret = dbus_g_proxy_call (client->priv->proxy, "GetStatus", error,
@@ -1060,7 +1003,8 @@ pk_client_get_package (PkClient *client, gchar **package, GError **error)
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	ret = dbus_g_proxy_call (client->priv->proxy, "GetPackageLast", error,
@@ -1099,7 +1043,8 @@ pk_client_get_progress (PkClient *client, guint *percentage, guint *subpercentag
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	ret = dbus_g_proxy_call (client->priv->proxy, "GetProgress", error,
@@ -1138,7 +1083,8 @@ pk_client_get_role (PkClient *client, PkRoleEnum *role, gchar **text, GError **e
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 
@@ -1193,8 +1139,8 @@ pk_client_cancel (PkClient *client, GError **error)
 
 	/* we cannot cancel a client in ::Finished() */
 	if (client->priv->is_finishing) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED,
-				     "unable to cancel client in finished handler");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "unable to cancel client in finished handler");
 		return FALSE;
 	}
 
@@ -1243,10 +1189,12 @@ pk_client_allocate_transaction_id (PkClient *client, GError **error)
 	/* get a new ID */
 	ret = pk_control_allocate_transaction_id (client->priv->control, &tid, &error_local);
 	if (!ret) {
-		if (error_local->code == PK_CONTROL_ERROR_CANNOT_START_DAEMON)
-			pk_client_error_set (error, PK_CLIENT_ERROR_CANNOT_START_DAEMON, "cannot start daemon: %s", error_local->message);
-		else
-			pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "failed to get a TID: %s (%i)", error_local->message, error_local->code);
+		if (error != NULL) {
+			if (error_local->code == PK_CONTROL_ERROR_CANNOT_START_DAEMON)
+				*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_CANNOT_START_DAEMON, "cannot start daemon: %s", error_local->message);
+			else
+				*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "failed to get a TID: %s (%i)", error_local->message, error_local->code);
+		}
 		g_error_free (error_local);
 		return FALSE;
 	}
@@ -1259,7 +1207,8 @@ pk_client_allocate_transaction_id (PkClient *client, GError **error)
 	ret = pk_client_set_tid (client, tid, &error_local);
 	g_free (tid);
 	if (!ret) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "failed to set TID: %s", error_local->message);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "failed to set TID: %s", error_local->message);
 		g_error_free (error_local);
 		return FALSE;
 	}
@@ -1287,7 +1236,8 @@ pk_client_get_updates (PkClient *client, PkBitfield filters, GError **error)
 
 	/* ensure we are not trying to run without reset */
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
 		return FALSE;
 	}
 
@@ -1302,7 +1252,8 @@ pk_client_get_updates (PkClient *client, PkBitfield filters, GError **error)
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	filter_text = pk_filter_bitfield_to_text (filters);
@@ -1341,7 +1292,8 @@ pk_client_get_categories (PkClient *client, GError **error)
 
 	/* ensure we are not trying to run without reset */
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
 		return FALSE;
 	}
 
@@ -1359,7 +1311,8 @@ pk_client_get_categories (PkClient *client, GError **error)
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	ret = dbus_g_proxy_call (client->priv->proxy, "GetCategories", error,
@@ -1390,7 +1343,8 @@ pk_client_update_system_action (PkClient *client, GError **error)
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	ret = dbus_g_proxy_call (client->priv->proxy, "UpdateSystem", error,
@@ -1423,14 +1377,15 @@ pk_client_update_system (PkClient *client, GError **error)
 
 	/* ensure we are not trying to run without reset */
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
 		return FALSE;
 	}
 
 	/* get and set a new ID */
-	ret = pk_client_allocate_transaction_id (client, error);
+	ret = pk_client_allocate_transaction_id (client, &error_pk);
 	if (!ret)
-		return FALSE;
+		goto out;
 
 	/* save this so we can re-issue it */
 	client->priv->role = PK_ROLE_ENUM_UPDATE_SYSTEM;
@@ -1446,14 +1401,16 @@ pk_client_update_system (PkClient *client, GError **error)
 			g_clear_error (&error_pk);
 
 			/* get a new tid */
-			ret = pk_client_allocate_transaction_id (client, error);
+			ret = pk_client_allocate_transaction_id (client, &error_pk);
 			if (!ret)
-				return FALSE;
+				goto out;
 
 			/* retry the action now we have got auth */
 			ret = pk_client_update_system_action (client, &error_pk);
 		}
 	}
+
+out:
 	/* we failed one of these, return the error to the user */
 	if (!ret) {
 		pk_client_error_fixup (&error_pk);
@@ -1495,7 +1452,8 @@ pk_client_search_name (PkClient *client, PkBitfield filters, const gchar *search
 
 	/* ensure we are not trying to run without reset */
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
 		return FALSE;
 	}
 
@@ -1511,7 +1469,8 @@ pk_client_search_name (PkClient *client, PkBitfield filters, const gchar *search
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	filter_text = pk_filter_bitfield_to_text (filters);
@@ -1556,7 +1515,8 @@ pk_client_search_details (PkClient *client, PkBitfield filters, const gchar *sea
 
 	/* ensure we are not trying to run without reset */
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
 		return FALSE;
 	}
 
@@ -1572,7 +1532,8 @@ pk_client_search_details (PkClient *client, PkBitfield filters, const gchar *sea
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	filter_text = pk_filter_bitfield_to_text (filters);
@@ -1615,7 +1576,8 @@ pk_client_search_group (PkClient *client, PkBitfield filters, const gchar *searc
 
 	/* ensure we are not trying to run without reset */
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
 		return FALSE;
 	}
 
@@ -1631,7 +1593,8 @@ pk_client_search_group (PkClient *client, PkBitfield filters, const gchar *searc
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	filter_text = pk_filter_bitfield_to_text (filters);
@@ -1674,7 +1637,8 @@ pk_client_search_file (PkClient *client, PkBitfield filters, const gchar *search
 
 	/* ensure we are not trying to run without reset */
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
 		return FALSE;
 	}
 
@@ -1690,7 +1654,8 @@ pk_client_search_file (PkClient *client, PkBitfield filters, const gchar *search
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	filter_text = pk_filter_bitfield_to_text (filters);
@@ -1736,7 +1701,8 @@ pk_client_get_depends (PkClient *client, PkBitfield filters, gchar **package_ids
 
 	/* ensure we are not trying to run without reset */
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
 		return FALSE;
 	}
 
@@ -1744,8 +1710,8 @@ pk_client_get_depends (PkClient *client, PkBitfield filters, gchar **package_ids
 	ret = pk_package_ids_check (package_ids);
 	if (!ret) {
 		package_ids_temp = pk_package_ids_to_text (package_ids);
-		pk_client_error_set (error, PK_CLIENT_ERROR_INVALID_INPUT,
-				     "package_ids '%s' are not valid", package_ids_temp);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_INVALID_INPUT, "package_ids '%s' are not valid", package_ids_temp);
 		g_free (package_ids_temp);
 		return FALSE;
 	}
@@ -1763,7 +1729,8 @@ pk_client_get_depends (PkClient *client, PkBitfield filters, gchar **package_ids
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	filter_text = pk_filter_bitfield_to_text (filters);
@@ -1806,7 +1773,8 @@ pk_client_download_packages (PkClient *client, gchar **package_ids, const gchar
 
 	/* ensure we are not trying to run without reset */
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
 		return FALSE;
 	}
 
@@ -1814,8 +1782,8 @@ pk_client_download_packages (PkClient *client, gchar **package_ids, const gchar
 	ret = pk_package_ids_check (package_ids);
 	if (!ret) {
 		package_ids_temp = pk_package_ids_to_text (package_ids);
-		pk_client_error_set (error, PK_CLIENT_ERROR_INVALID_INPUT,
-				     "package_ids '%s' are not valid", package_ids_temp);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_INVALID_INPUT, "package_ids '%s' are not valid", package_ids_temp);
 		g_free (package_ids_temp);
 		return FALSE;
 	}
@@ -1833,7 +1801,8 @@ pk_client_download_packages (PkClient *client, gchar **package_ids, const gchar
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	ret = dbus_g_proxy_call (client->priv->proxy, "DownloadPackages", error,
@@ -1851,7 +1820,6 @@ pk_client_download_packages (PkClient *client, gchar **package_ids, const gchar
 	return ret;
 }
 
-
 /**
  * pk_client_get_packages:
  * @client: a valid #PkClient instance
@@ -1873,7 +1841,8 @@ pk_client_get_packages (PkClient *client, PkBitfield filters, GError **error)
 
 	/* ensure we are not trying to run without reset */
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
 		return FALSE;
 	}
 
@@ -1888,7 +1857,8 @@ pk_client_get_packages (PkClient *client, PkBitfield filters, GError **error)
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	filter_text = pk_filter_bitfield_to_text (filters);
@@ -1931,7 +1901,8 @@ pk_client_set_locale (PkClient *client, const gchar *code, GError **error)
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	ret = dbus_g_proxy_call (client->priv->proxy, "SetLocale", error,
@@ -1966,7 +1937,8 @@ pk_client_get_requires (PkClient *client, PkBitfield filters, gchar **package_id
 
 	/* ensure we are not trying to run without reset */
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
 		return FALSE;
 	}
 
@@ -1974,8 +1946,8 @@ pk_client_get_requires (PkClient *client, PkBitfield filters, gchar **package_id
 	ret = pk_package_ids_check (package_ids);
 	if (!ret) {
 		package_ids_temp = pk_package_ids_to_text (package_ids);
-		pk_client_error_set (error, PK_CLIENT_ERROR_INVALID_INPUT,
-				     "package_ids '%s' are not valid", package_ids_temp);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_INVALID_INPUT, "package_ids '%s' are not valid", package_ids_temp);
 		g_free (package_ids_temp);
 		return FALSE;
 	}
@@ -1993,7 +1965,8 @@ pk_client_get_requires (PkClient *client, PkBitfield filters, gchar **package_id
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	filter_text = pk_filter_bitfield_to_text (filters);
@@ -2044,7 +2017,8 @@ pk_client_what_provides (PkClient *client, PkBitfield filters, PkProvidesEnum pr
 
 	/* ensure we are not trying to run without reset */
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
 		return FALSE;
 	}
 
@@ -2063,7 +2037,8 @@ pk_client_what_provides (PkClient *client, PkBitfield filters, PkProvidesEnum pr
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	filter_text = pk_filter_bitfield_to_text (filters);
@@ -2108,7 +2083,8 @@ pk_client_get_update_detail (PkClient *client, gchar **package_ids, GError **err
 
 	/* ensure we are not trying to run without reset */
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
 		return FALSE;
 	}
 
@@ -2116,8 +2092,8 @@ pk_client_get_update_detail (PkClient *client, gchar **package_ids, GError **err
 	ret = pk_package_ids_check (package_ids);
 	if (!ret) {
 		package_ids_temp = pk_package_ids_to_text (package_ids);
-		pk_client_error_set (error, PK_CLIENT_ERROR_INVALID_INPUT,
-				     "package_ids '%s' are not valid", package_ids_temp);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_INVALID_INPUT, "package_ids '%s' are not valid", package_ids_temp);
 		g_free (package_ids_temp);
 		return FALSE;
 	}
@@ -2137,7 +2113,8 @@ pk_client_get_update_detail (PkClient *client, gchar **package_ids, GError **err
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	ret = dbus_g_proxy_call (client->priv->proxy, "GetUpdateDetail", error,
@@ -2176,7 +2153,8 @@ pk_client_rollback (PkClient *client, const gchar *transaction_id, GError **erro
 
 	/* ensure we are not trying to run without reset */
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
 		return FALSE;
 	}
 
@@ -2191,7 +2169,8 @@ pk_client_rollback (PkClient *client, const gchar *transaction_id, GError **erro
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	ret = dbus_g_proxy_call (client->priv->proxy, "Rollback", error,
@@ -2234,7 +2213,8 @@ pk_client_resolve (PkClient *client, PkBitfield filters, gchar **packages, GErro
 
 	/* ensure we are not trying to run without reset */
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
 		return FALSE;
 	}
 
@@ -2250,7 +2230,8 @@ pk_client_resolve (PkClient *client, PkBitfield filters, gchar **packages, GErro
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	filter_text = pk_filter_bitfield_to_text (filters);
@@ -2294,7 +2275,8 @@ pk_client_get_details (PkClient *client, gchar **package_ids, GError **error)
 
 	/* ensure we are not trying to run without reset */
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
 		return FALSE;
 	}
 
@@ -2302,8 +2284,8 @@ pk_client_get_details (PkClient *client, gchar **package_ids, GError **error)
 	ret = pk_package_ids_check (package_ids);
 	if (!ret) {
 		package_ids_temp = pk_package_ids_to_text (package_ids);
-		pk_client_error_set (error, PK_CLIENT_ERROR_INVALID_INPUT,
-				     "package_ids '%s' are not valid", package_ids_temp);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_INVALID_INPUT, "package_ids '%s' are not valid", package_ids_temp);
 		g_free (package_ids_temp);
 		return FALSE;
 	}
@@ -2323,7 +2305,8 @@ pk_client_get_details (PkClient *client, gchar **package_ids, GError **error)
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	ret = dbus_g_proxy_call (client->priv->proxy, "GetDetails", error,
@@ -2361,7 +2344,8 @@ pk_client_get_distro_upgrades (PkClient *client, GError **error)
 
 	/* ensure we are not trying to run without reset */
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
 		return FALSE;
 	}
 
@@ -2379,7 +2363,8 @@ pk_client_get_distro_upgrades (PkClient *client, GError **error)
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	ret = dbus_g_proxy_call (client->priv->proxy, "GetDistroUpgrades", error,
@@ -2418,7 +2403,8 @@ pk_client_get_files (PkClient *client, gchar **package_ids, GError **error)
 
 	/* ensure we are not trying to run without reset */
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
 		return FALSE;
 	}
 
@@ -2426,8 +2412,8 @@ pk_client_get_files (PkClient *client, gchar **package_ids, GError **error)
 	ret = pk_package_ids_check (package_ids);
 	if (!ret) {
 		package_ids_temp = pk_package_ids_to_text (package_ids);
-		pk_client_error_set (error, PK_CLIENT_ERROR_INVALID_INPUT,
-				     "package_ids '%s' are not valid", package_ids_temp);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_INVALID_INPUT, "package_ids '%s' are not valid", package_ids_temp);
 		g_free (package_ids_temp);
 		return FALSE;
 	}
@@ -2443,7 +2429,8 @@ pk_client_get_files (PkClient *client, gchar **package_ids, GError **error)
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	ret = dbus_g_proxy_call (client->priv->proxy, "GetFiles", error,
@@ -2477,7 +2464,7 @@ pk_client_remove_packages_action (PkClient *client, gchar **package_ids,
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	ret = dbus_g_proxy_call (client->priv->proxy, "RemovePackages", error,
@@ -2516,7 +2503,8 @@ pk_client_remove_packages (PkClient *client, gchar **package_ids, gboolean allow
 
 	/* ensure we are not trying to run without reset */
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
 		return FALSE;
 	}
 
@@ -2524,16 +2512,16 @@ pk_client_remove_packages (PkClient *client, gchar **package_ids, gboolean allow
 	ret = pk_package_ids_check (package_ids);
 	if (!ret) {
 		package_ids_temp = pk_package_ids_to_text (package_ids);
-		pk_client_error_set (error, PK_CLIENT_ERROR_INVALID_INPUT,
-				     "package_ids '%s' are not valid", package_ids_temp);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_INVALID_INPUT, "package_ids '%s' are not valid", package_ids_temp);
 		g_free (package_ids_temp);
 		return FALSE;
 	}
 
 	/* get and set a new ID */
-	ret = pk_client_allocate_transaction_id (client, error);
+	ret = pk_client_allocate_transaction_id (client, &error_pk);
 	if (!ret)
-		return FALSE;
+		goto out;
 
 	/* save this so we can re-issue it */
 	client->priv->role = PK_ROLE_ENUM_REMOVE_PACKAGES;
@@ -2552,14 +2540,16 @@ pk_client_remove_packages (PkClient *client, gchar **package_ids, gboolean allow
 			g_clear_error (&error_pk);
 
 			/* get a new tid */
-			ret = pk_client_allocate_transaction_id (client, error);
+			ret = pk_client_allocate_transaction_id (client, &error_pk);
 			if (!ret)
-				return FALSE;
+				goto out;
 
 			/* retry the action now we have got auth */
 			ret = pk_client_remove_packages_action (client, package_ids, allow_deps, autoremove, &error_pk);
 		}
 	}
+
+out:
 	/* we failed one of these, return the error to the user */
 	if (!ret) {
 		pk_client_error_fixup (&error_pk);
@@ -2592,7 +2582,7 @@ pk_client_refresh_cache_action (PkClient *client, gboolean force, GError **error
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	ret = dbus_g_proxy_call (client->priv->proxy, "RefreshCache", error,
@@ -2625,14 +2615,15 @@ pk_client_refresh_cache (PkClient *client, gboolean force, GError **error)
 
 	/* ensure we are not trying to run without reset */
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
 		return FALSE;
 	}
 
 	/* get and set a new ID */
-	ret = pk_client_allocate_transaction_id (client, error);
+	ret = pk_client_allocate_transaction_id (client, &error_pk);
 	if (!ret)
-		return FALSE;
+		goto out;
 
 	/* save this so we can re-issue it */
 	client->priv->role = PK_ROLE_ENUM_REFRESH_CACHE;
@@ -2649,14 +2640,16 @@ pk_client_refresh_cache (PkClient *client, gboolean force, GError **error)
 			g_clear_error (&error_pk);
 
 			/* get a new tid */
-			ret = pk_client_allocate_transaction_id (client, error);
+			ret = pk_client_allocate_transaction_id (client, &error_pk);
 			if (!ret)
-				return FALSE;
+				goto out;
 
 			/* retry the action now we have got auth */
 			ret = pk_client_refresh_cache_action (client, force, &error_pk);
 		}
 	}
+
+out:
 	/* we failed one of these, return the error to the user */
 	if (!ret) {
 		pk_client_error_fixup (&error_pk);
@@ -2689,7 +2682,7 @@ pk_client_install_package_action (PkClient *client, gchar **package_ids, GError
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	ret = dbus_g_proxy_call (client->priv->proxy, "InstallPackages", error,
@@ -2721,7 +2714,8 @@ pk_client_install_packages (PkClient *client, gchar **package_ids, GError **erro
 
 	/* ensure we are not trying to run without reset */
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
 		return FALSE;
 	}
 
@@ -2729,16 +2723,16 @@ pk_client_install_packages (PkClient *client, gchar **package_ids, GError **erro
 	ret = pk_package_ids_check (package_ids);
 	if (!ret) {
 		package_ids_temp = pk_package_ids_to_text (package_ids);
-		pk_client_error_set (error, PK_CLIENT_ERROR_INVALID_INPUT,
-				     "package_ids '%s' are not valid", package_ids_temp);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_INVALID_INPUT, "package_ids '%s' are not valid", package_ids_temp);
 		g_free (package_ids_temp);
 		return FALSE;
 	}
 
 	/* get and set a new ID */
-	ret = pk_client_allocate_transaction_id (client, error);
+	ret = pk_client_allocate_transaction_id (client, &error_pk);
 	if (!ret)
-		return FALSE;
+		goto out;
 
 	/* save this so we can re-issue it */
 	client->priv->role = PK_ROLE_ENUM_INSTALL_PACKAGES;
@@ -2755,14 +2749,16 @@ pk_client_install_packages (PkClient *client, gchar **package_ids, GError **erro
 			g_clear_error (&error_pk);
 
 			/* get a new tid */
-			ret = pk_client_allocate_transaction_id (client, error);
+			ret = pk_client_allocate_transaction_id (client, &error_pk);
 			if (!ret)
-				return FALSE;
+				goto out;
 
 			/* retry the action now we have got auth */
 			ret = pk_client_install_package_action (client, package_ids, &error_pk);
 		}
 	}
+
+out:
 	/* we failed one of these, return the error to the user */
 	if (!ret) {
 		pk_client_error_fixup (&error_pk);
@@ -2797,7 +2793,7 @@ pk_client_install_signature_action (PkClient *client, PkSigTypeEnum type, const
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	type_text = pk_sig_type_enum_to_text (type);
@@ -2834,14 +2830,15 @@ pk_client_install_signature (PkClient *client, PkSigTypeEnum type, const gchar *
 
 	/* ensure we are not trying to run without reset */
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
 		return FALSE;
 	}
 
 	/* get and set a new ID */
-	ret = pk_client_allocate_transaction_id (client, error);
+	ret = pk_client_allocate_transaction_id (client, &error_pk);
 	if (!ret)
-		return FALSE;
+		goto out;
 
 	/* save this so we can re-issue it */
 	client->priv->role = PK_ROLE_ENUM_INSTALL_SIGNATURE;
@@ -2859,14 +2856,16 @@ pk_client_install_signature (PkClient *client, PkSigTypeEnum type, const gchar *
 			g_clear_error (&error_pk);
 
 			/* get a new tid */
-			ret = pk_client_allocate_transaction_id (client, error);
+			ret = pk_client_allocate_transaction_id (client, &error_pk);
 			if (!ret)
-				return FALSE;
+				goto out;
 
 			/* retry the action now we have got auth */
 			ret = pk_client_install_signature_action (client, type, key_id, package_id, &error_pk);
 		}
 	}
+
+out:
 	/* we failed one of these, return the error to the user */
 	if (!ret) {
 		pk_client_error_fixup (&error_pk);
@@ -2899,7 +2898,7 @@ pk_client_update_packages_action (PkClient *client, gchar **package_ids, GError
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	ret = dbus_g_proxy_call (client->priv->proxy, "UpdatePackages", error,
@@ -2931,7 +2930,8 @@ pk_client_update_packages (PkClient *client, gchar **package_ids, GError **error
 
 	/* ensure we are not trying to run without reset */
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
 		return FALSE;
 	}
 
@@ -2939,16 +2939,16 @@ pk_client_update_packages (PkClient *client, gchar **package_ids, GError **error
 	ret = pk_package_ids_check (package_ids);
 	if (!ret) {
 		package_ids_temp = pk_package_ids_to_text (package_ids);
-		pk_client_error_set (error, PK_CLIENT_ERROR_INVALID_INPUT,
-				     "package_ids '%s' are not valid", package_ids_temp);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_INVALID_INPUT, "package_ids '%s' are not valid", package_ids_temp);
 		g_free (package_ids_temp);
 		return FALSE;
 	}
 
 	/* get and set a new ID */
-	ret = pk_client_allocate_transaction_id (client, error);
+	ret = pk_client_allocate_transaction_id (client, &error_pk);
 	if (!ret)
-		return FALSE;
+		goto out;
 
 	/* save this so we can re-issue it */
 	client->priv->role = PK_ROLE_ENUM_UPDATE_PACKAGES;
@@ -2969,14 +2969,16 @@ pk_client_update_packages (PkClient *client, gchar **package_ids, GError **error
 			g_clear_error (&error_pk);
 
 			/* get a new tid */
-			ret = pk_client_allocate_transaction_id (client, error);
+			ret = pk_client_allocate_transaction_id (client, &error_pk);
 			if (!ret)
-				return FALSE;
+				goto out;
 
 			/* retry the action now we have got auth */
 			ret = pk_client_update_packages_action (client, package_ids, &error_pk);
 		}
 	}
+
+out:
 	/* we failed one of these, return the error to the user */
 	if (!ret) {
 		pk_client_error_fixup (&error_pk);
@@ -3009,7 +3011,7 @@ pk_client_install_files_action (PkClient *client, gboolean trusted, gchar **file
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	ret = dbus_g_proxy_call (client->priv->proxy, "InstallFiles", error,
@@ -3065,7 +3067,7 @@ pk_client_install_files (PkClient *client, gboolean trusted, gchar **files_rel,
 	guint i;
 	guint length;
 	gboolean ret;
-	gchar **files;
+	gchar **files = NULL;
 	gchar *file;
 	GError *error_pk = NULL; /* we can't use the same error as we might be NULL */
 
@@ -3075,14 +3077,15 @@ pk_client_install_files (PkClient *client, gboolean trusted, gchar **files_rel,
 
 	/* ensure we are not trying to run without reset */
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
 		return FALSE;
 	}
 
 	/* get and set a new ID */
-	ret = pk_client_allocate_transaction_id (client, error);
+	ret = pk_client_allocate_transaction_id (client, &error_pk);
 	if (!ret)
-		return FALSE;
+		goto out;
 
 	/* convert all the relative paths to absolute ones */
 	files = g_strdupv (files_rel);
@@ -3115,14 +3118,16 @@ pk_client_install_files (PkClient *client, gboolean trusted, gchar **files_rel,
 			g_clear_error (&error_pk);
 
 			/* get a new tid */
-			ret = pk_client_allocate_transaction_id (client, error);
+			ret = pk_client_allocate_transaction_id (client, &error_pk);
 			if (!ret)
-				return FALSE;
+				goto out;
 
 			/* retry the action now we have got auth */
 			ret = pk_client_install_files_action (client, trusted, files, &error_pk);
 		}
 	}
+
+out:
 	/* we failed one of these, return the error to the user */
 	if (!ret) {
 		pk_client_error_fixup (&error_pk);
@@ -3162,7 +3167,8 @@ pk_client_get_repo_list (PkClient *client, PkBitfield filters, GError **error)
 
 	/* ensure we are not trying to run without reset */
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
 		return FALSE;
 	}
 
@@ -3177,7 +3183,8 @@ pk_client_get_repo_list (PkClient *client, PkBitfield filters, GError **error)
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	filter_text = pk_filter_bitfield_to_text (filters);
@@ -3211,7 +3218,7 @@ pk_client_accept_eula_action (PkClient *client, const gchar *eula_id, GError **e
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	ret = dbus_g_proxy_call (client->priv->proxy, "AcceptEula", error,
@@ -3242,14 +3249,15 @@ pk_client_accept_eula (PkClient *client, const gchar *eula_id, GError **error)
 
 	/* ensure we are not trying to run without reset */
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
 		return FALSE;
 	}
 
 	/* get and set a new ID */
-	ret = pk_client_allocate_transaction_id (client, error);
+	ret = pk_client_allocate_transaction_id (client, &error_pk);
 	if (!ret)
-		return FALSE;
+		goto out;
 
 	/* save this so we can re-issue it */
 	client->priv->role = PK_ROLE_ENUM_ACCEPT_EULA;
@@ -3265,14 +3273,16 @@ pk_client_accept_eula (PkClient *client, const gchar *eula_id, GError **error)
 			g_clear_error (&error_pk);
 
 			/* get a new tid */
-			ret = pk_client_allocate_transaction_id (client, error);
+			ret = pk_client_allocate_transaction_id (client, &error_pk);
 			if (!ret)
-				return FALSE;
+				goto out;
 
 			/* retry the action now we have got auth */
 			ret = pk_client_accept_eula_action (client, eula_id, &error_pk);
 		}
 	}
+
+out:
 	/* we failed one of these, return the error to the user */
 	if (!ret) {
 		pk_client_error_fixup (&error_pk);
@@ -3305,7 +3315,7 @@ pk_client_repo_enable_action (PkClient *client, const gchar *repo_id, gboolean e
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	ret = dbus_g_proxy_call (client->priv->proxy, "RepoEnable", error,
@@ -3338,14 +3348,15 @@ pk_client_repo_enable (PkClient *client, const gchar *repo_id, gboolean enabled,
 
 	/* ensure we are not trying to run without reset */
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
 		return FALSE;
 	}
 
 	/* get and set a new ID */
-	ret = pk_client_allocate_transaction_id (client, error);
+	ret = pk_client_allocate_transaction_id (client, &error_pk);
 	if (!ret)
-		return FALSE;
+		goto out;
 
 	/* save this so we can re-issue it */
 	client->priv->role = PK_ROLE_ENUM_REPO_ENABLE;
@@ -3361,14 +3372,16 @@ pk_client_repo_enable (PkClient *client, const gchar *repo_id, gboolean enabled,
 			g_clear_error (&error_pk);
 
 			/* get a new tid */
-			ret = pk_client_allocate_transaction_id (client, error);
+			ret = pk_client_allocate_transaction_id (client, &error_pk);
 			if (!ret)
-				return FALSE;
+				goto out;
 
 			/* retry the action now we have got auth */
 			ret = pk_client_repo_enable_action (client, repo_id, enabled, &error_pk);
 		}
 	}
+
+out:
 	/* we failed one of these, return the error to the user */
 	if (!ret) {
 		pk_client_error_fixup (&error_pk);
@@ -3387,8 +3400,6 @@ pk_client_repo_enable (PkClient *client, const gchar *repo_id, gboolean enabled,
 	return ret;
 }
 
-
-
 /**
  * pk_client_repo_set_data_action:
  **/
@@ -3404,7 +3415,7 @@ pk_client_repo_set_data_action (PkClient *client, const gchar *repo_id,
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	ret = dbus_g_proxy_call (client->priv->proxy, "RepoSetData", error,
@@ -3443,14 +3454,15 @@ pk_client_repo_set_data (PkClient *client, const gchar *repo_id, const gchar *pa
 
 	/* ensure we are not trying to run without reset */
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
 		return FALSE;
 	}
 
 	/* get and set a new ID */
-	ret = pk_client_allocate_transaction_id (client, error);
+	ret = pk_client_allocate_transaction_id (client, &error_pk);
 	if (!ret)
-		return FALSE;
+		goto out;
 
 	/* save this so we can re-issue it */
 	client->priv->role = PK_ROLE_ENUM_REPO_SET_DATA;
@@ -3466,14 +3478,16 @@ pk_client_repo_set_data (PkClient *client, const gchar *repo_id, const gchar *pa
 			g_clear_error (&error_pk);
 
 			/* get a new tid */
-			ret = pk_client_allocate_transaction_id (client, error);
+			ret = pk_client_allocate_transaction_id (client, &error_pk);
 			if (!ret)
-				return FALSE;
+				goto out;
 
 			/* retry the action now we have got auth */
 			ret = pk_client_repo_set_data_action (client, repo_id, parameter, value, &error_pk);
 		}
 	}
+
+out:
 	/* we failed one of these, return the error to the user */
 	if (!ret) {
 		pk_client_error_fixup (&error_pk);
@@ -3514,7 +3528,8 @@ pk_client_is_caller_active (PkClient *client, gboolean *is_active, GError **erro
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	ret = dbus_g_proxy_call (client->priv->proxy, "IsCallerActive", error,
@@ -3545,7 +3560,8 @@ pk_client_get_old_transactions (PkClient *client, guint number, GError **error)
 
 	/* ensure we are not trying to run without reset */
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "TID already set to %s", client->priv->tid);
 		return FALSE;
 	}
 
@@ -3560,7 +3576,8 @@ pk_client_get_old_transactions (PkClient *client, guint number, GError **error)
 
 	/* check to see if we have a valid proxy */
 	if (client->priv->proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_NO_TID, "No proxy for transaction");
 		return FALSE;
 	}
 	ret = dbus_g_proxy_call (client->priv->proxy, "GetOldTransactions", error,
@@ -3600,13 +3617,15 @@ pk_client_requeue (PkClient *client, GError **error)
 
 	/* we are no longer waiting, we are setting up */
 	if (priv->role == PK_ROLE_ENUM_UNKNOWN) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_ROLE_UNKNOWN, "role unknown for reque");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_ROLE_UNKNOWN, "role unknown for reque");
 		return FALSE;
 	}
 
 	/* are we still running? */
 	if (!client->priv->is_finished) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED, "not finished, so cannot requeue");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "not finished, so cannot requeue");
 		return FALSE;
 	}
 
@@ -3668,7 +3687,8 @@ pk_client_requeue (PkClient *client, GError **error)
 	else if (priv->role == PK_ROLE_ENUM_GET_DISTRO_UPGRADES)
 		ret = pk_client_get_distro_upgrades (client, error);
 	else {
-		pk_client_error_set (error, PK_CLIENT_ERROR_ROLE_UNKNOWN, "role unknown for reque");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_ROLE_UNKNOWN, "role unknown for reque");
 		return FALSE;
 	}
 	pk_client_error_fixup (error);
@@ -3696,8 +3716,8 @@ pk_client_set_tid (PkClient *client, const gchar *tid, GError **error)
 	g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
 
 	if (client->priv->tid != NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_ALREADY_TID,
-				     "cannot set the tid on an already set client");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_ALREADY_TID, "cannot set the tid on an already set client");
 		return FALSE;
 	}
 
@@ -3705,8 +3725,8 @@ pk_client_set_tid (PkClient *client, const gchar *tid, GError **error)
 	proxy = dbus_g_proxy_new_for_name (client->priv->connection,
 					   PK_DBUS_SERVICE, tid, PK_DBUS_INTERFACE_TRANSACTION);
 	if (proxy == NULL) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_ALREADY_TID,
-				     "Cannot connect to PackageKit tid %s", tid);
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_ALREADY_TID, "Cannot connect to PackageKit tid %s", tid);
 		return FALSE;
 	}
 
@@ -4200,8 +4220,8 @@ pk_client_reset (PkClient *client, GError **error)
 	   the whole point of a sync client is we don't handle this signal
 	   and we'll clear the package cache if we allow this */
 	if (client->priv->is_finishing && client->priv->synchronous) {
-		pk_client_error_set (error, PK_CLIENT_ERROR_FAILED,
-				     "unable to reset synchronous client in finished handler");
+		if (error != NULL)
+			*error = g_error_new (PK_CLIENT_ERROR, PK_CLIENT_ERROR_FAILED, "unable to reset synchronous client in finished handler");
 		return FALSE;
 	}
 
diff --git a/lib/packagekit-glib/pk-client.h b/lib/packagekit-glib/pk-client.h
index 0eda682..37f4df8 100644
--- a/lib/packagekit-glib/pk-client.h
+++ b/lib/packagekit-glib/pk-client.h
@@ -157,7 +157,6 @@ struct _PkClientClass
 
 GQuark		 pk_client_error_quark			(void);
 GType		 pk_client_error_get_type		(void);
-gboolean	 pk_client_error_print			(GError		**error);
 
 GType		 pk_client_get_type			(void) G_GNUC_CONST;
 PkClient	*pk_client_new				(void);
commit fe867c78f3e37eddd0be2b819aed5741201d7335
Author: Richard Hughes <richard at hughsie.com>
Date:   Fri Nov 21 17:02:15 2008 +0000

    bugfix: make the transaction uncommit cleanup longer as clients running under valgrind can take more than 5 seconds to authenticate

diff --git a/src/pk-transaction-list.c b/src/pk-transaction-list.c
index 1065f9d..897d84f 100644
--- a/src/pk-transaction-list.c
+++ b/src/pk-transaction-list.c
@@ -56,7 +56,7 @@ static void     pk_transaction_list_finalize	(GObject        *object);
 #define PK_TRANSACTION_LIST_KEEP_FINISHED_TIMEOUT	5
 
 /* how long the tid is valid before it's destroyed, in seconds */
-#define PK_TRANSACTION_LIST_CREATE_COMMIT_TIMEOUT	5
+#define PK_TRANSACTION_LIST_CREATE_COMMIT_TIMEOUT	30
 
 /* the interval between each CST, in seconds */
 #define PK_TRANSACTION_WEDGE_CHECK			10
commit 97448a1590c7e27d76c4c9acee00f2d5d178f3bb
Author: root <root at hughsie-laptop.(none)>
Date:   Fri Nov 21 16:37:58 2008 +0000

    trivial: remove the 'quoting' around some user visible strings

diff --git a/client/pk-console.c b/client/pk-console.c
index a1df86d..c11f8fc 100644
--- a/client/pk-console.c
+++ b/client/pk-console.c
@@ -286,29 +286,29 @@ pk_console_update_detail_cb (PkClient *client, const PkUpdateDetailObj *detail,
 	g_print ("%s\n", _("Details about the update:"));
 	g_print ("  package:    '%s-%s.%s'\n", detail->id->name, detail->id->version, detail->id->arch);
 	if (!egg_strzero (detail->updates))
-		g_print ("  updates:    '%s'\n", detail->updates);
+		g_print ("  updates:    %s\n", detail->updates);
 	if (!egg_strzero (detail->obsoletes))
-		g_print ("  obsoletes:  '%s'\n", detail->obsoletes);
+		g_print ("  obsoletes:  %s\n", detail->obsoletes);
 	if (!egg_strzero (detail->vendor_url))
-		g_print ("  vendor URL: '%s'\n", detail->vendor_url);
+		g_print ("  vendor URL: %s\n", detail->vendor_url);
 	if (!egg_strzero (detail->bugzilla_url))
-		g_print ("  bug URL:    '%s'\n", detail->bugzilla_url);
+		g_print ("  bug URL:    %s\n", detail->bugzilla_url);
 	if (!egg_strzero (detail->cve_url))
-		g_print ("  cve URL:    '%s'\n", detail->cve_url);
+		g_print ("  cve URL:    %s\n", detail->cve_url);
 	if (detail->restart != PK_RESTART_ENUM_NONE)
-		g_print ("  restart:    '%s'\n", pk_restart_enum_to_text (detail->restart));
+		g_print ("  restart:    %s\n", pk_restart_enum_to_text (detail->restart));
 	if (!egg_strzero (detail->update_text))
-		g_print ("  update_text:'%s'\n", detail->update_text);
+		g_print ("  update_text:%s\n", detail->update_text);
 	if (!egg_strzero (detail->changelog))
-		g_print ("  changelog:  '%s'\n", detail->changelog);
+		g_print ("  changelog:  %s\n", detail->changelog);
 	if (detail->state != PK_UPDATE_STATE_ENUM_UNKNOWN)
-		g_print ("  state:      '%s'\n", pk_update_state_enum_to_text (detail->state));
+		g_print ("  state:      %s\n", pk_update_state_enum_to_text (detail->state));
 	issued = pk_iso8601_from_date (detail->issued);
 	if (!egg_strzero (issued))
-		g_print ("  issued:     '%s'\n", issued);
+		g_print ("  issued:     %s\n", issued);
 	updated = pk_iso8601_from_date (detail->updated);
 	if (!egg_strzero (updated))
-		g_print ("  updated:    '%s'\n", updated);
+		g_print ("  updated:    %s\n", updated);
 	g_free (issued);
 	g_free (updated);
 }
@@ -592,7 +592,7 @@ pk_console_install_stuff (PkClient *client, gchar **packages, GError **error)
 			installed = pk_console_is_installed (packages[i]);
 			if (installed) {
 				/* TRANSLATORS: The package is already installed on the system */
-				*error = g_error_new (1, 0, _("The package '%s' is already installed"), packages[i]);
+				*error = g_error_new (1, 0, _("The package %s is already installed"), packages[i]);
 				ret = FALSE;
 				break;
 			}
@@ -600,7 +600,7 @@ pk_console_install_stuff (PkClient *client, gchar **packages, GError **error)
 			package_id = pk_console_perhaps_resolve (client, pk_bitfield_value (PK_FILTER_ENUM_NOT_INSTALLED), packages[i], &error_local);
 			if (package_id == NULL) {
 				/* TRANSLATORS: The package name was not found in any software sources. The detailed error follows */
-				*error = g_error_new (1, 0, _("The package '%s' could not be installed: %s"), packages[i], error_local->message);
+				*error = g_error_new (1, 0, _("The package %s could not be installed: %s"), packages[i], error_local->message);
 				g_error_free (error_local);
 				ret = FALSE;
 				break;
@@ -716,7 +716,7 @@ pk_console_remove_packages (PkClient *client, gchar **packages, GError **error)
 		package_id = pk_console_perhaps_resolve (client, pk_bitfield_value (PK_FILTER_ENUM_INSTALLED), packages[i], &error_local);
 		if (package_id == NULL) {
 			/* TRANSLATORS: The package name was not found in the installed list. The detailed error follows */
-			*error = g_error_new (1, 0, _("This tool could not remove '%s': %s"), packages[i], error_local->message);
+			*error = g_error_new (1, 0, _("This tool could not remove %s: %s"), packages[i], error_local->message);
 			g_error_free (error_local);
 			ret = FALSE;
 			break;
@@ -777,7 +777,7 @@ pk_console_remove_packages (PkClient *client, gchar **packages, GError **error)
 		ret = pk_console_remove_only (client, package_ids, FALSE, &error_local);
 		if (!ret) {
 			/* TRANSLATORS: There was an error removing the packages. The detailed error follows */
-			*error = g_error_new (1, 0, _("This tool could not remove the packages: '%s'"), error_local->message);
+			*error = g_error_new (1, 0, _("This tool could not remove the packages: %s"), error_local->message);
 			g_error_free (error_local);
 		}
 		goto out;
@@ -842,7 +842,7 @@ pk_console_download_packages (PkClient *client, gchar **packages, const gchar *d
 			package_id = pk_console_perhaps_resolve (client, pk_bitfield_value (PK_FILTER_ENUM_NONE), packages[i], &error_local);
 			if (package_id == NULL) {
 				/* TRANSLATORS: The package name was not found in any software sources */
-				*error = g_error_new (1, 0, _("This tool could not download the package '%s' as it could not be found"), packages[i]);
+				*error = g_error_new (1, 0, _("This tool could not download the package %s as it could not be found"), packages[i]);
 				g_error_free (error_local);
 				ret = FALSE;
 				break;
@@ -900,7 +900,7 @@ pk_console_update_package (PkClient *client, const gchar *package, GError **erro
 	package_id = pk_console_perhaps_resolve (client, pk_bitfield_value (PK_FILTER_ENUM_INSTALLED), package, &error_local);
 	if (package_id == NULL) {
 		/* TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows */
-		*error = g_error_new (1, 0, _("This tool could not update '%s': %s"), package, error_local->message);
+		*error = g_error_new (1, 0, _("This tool could not update %s: %s"), package, error_local->message);
 		g_error_free (error_local);
 		return FALSE;
 	}
@@ -909,7 +909,7 @@ pk_console_update_package (PkClient *client, const gchar *package, GError **erro
 	ret = pk_client_update_packages (client, package_ids, error);
 	if (!ret) {
 		/* TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows */
-		*error = g_error_new (1, 0, _("This tool could not update '%s': %s"), package, error_local->message);
+		*error = g_error_new (1, 0, _("This tool could not update %s: %s"), package, error_local->message);
 		g_error_free (error_local);
 	}
 	g_strfreev (package_ids);
@@ -931,7 +931,7 @@ pk_console_get_requires (PkClient *client, PkBitfield filters, const gchar *pack
 	package_id = pk_console_perhaps_resolve (client, pk_bitfield_value (PK_FILTER_ENUM_NONE), package, &error_local);
 	if (package_id == NULL) {
 		/* TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows */
-		*error = g_error_new (1, 0, _("This tool could not get the requirements for '%s': %s"), package, error_local->message);
+		*error = g_error_new (1, 0, _("This tool could not get the requirements for %s: %s"), package, error_local->message);
 		g_error_free (error_local);
 		return FALSE;
 	}
@@ -939,7 +939,7 @@ pk_console_get_requires (PkClient *client, PkBitfield filters, const gchar *pack
 	ret = pk_client_get_requires (client, filters, package_ids, TRUE, &error_local);
 	if (!ret) {
 		/* TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows */
-		*error = g_error_new (1, 0, _("This tool could not get the requirements for '%s': %s"), package, error_local->message);
+		*error = g_error_new (1, 0, _("This tool could not get the requirements for %s: %s"), package, error_local->message);
 		g_error_free (error_local);
 	}
 	g_strfreev (package_ids);
@@ -961,7 +961,7 @@ pk_console_get_depends (PkClient *client, PkBitfield filters, const gchar *packa
 	package_id = pk_console_perhaps_resolve (client, pk_bitfield_value (PK_FILTER_ENUM_NONE), package, &error_local);
 	if (package_id == NULL) {
 		/* TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows */
-		*error = g_error_new (1, 0, _("This tool could not get the dependencies for '%s': %s"), package, error_local->message);
+		*error = g_error_new (1, 0, _("This tool could not get the dependencies for %s: %s"), package, error_local->message);
 		g_error_free (error_local);
 		return FALSE;
 	}
@@ -969,7 +969,7 @@ pk_console_get_depends (PkClient *client, PkBitfield filters, const gchar *packa
 	ret = pk_client_get_depends (client, filters, package_ids, FALSE, &error_local);
 	if (!ret) {
 		/* TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows */
-		*error = g_error_new (1, 0, _("This tool could not get the dependencies for '%s': %s"), package, error_local->message);
+		*error = g_error_new (1, 0, _("This tool could not get the dependencies for %s: %s"), package, error_local->message);
 		g_error_free (error_local);
 	}
 	g_strfreev (package_ids);
@@ -991,7 +991,7 @@ pk_console_get_details (PkClient *client, const gchar *package, GError **error)
 	package_id = pk_console_perhaps_resolve (client, pk_bitfield_value (PK_FILTER_ENUM_NONE), package, &error_local);
 	if (package_id == NULL) {
 		/* TRANSLATORS: There was an error getting the details about the package. The detailed error follows */
-		*error = g_error_new (1, 0, _("This tool could not get package details for '%s': %s"), package, error_local->message);
+		*error = g_error_new (1, 0, _("This tool could not get package details for %s: %s"), package, error_local->message);
 		g_error_free (error_local);
 		return FALSE;
 	}
@@ -999,7 +999,7 @@ pk_console_get_details (PkClient *client, const gchar *package, GError **error)
 	ret = pk_client_get_details (client, package_ids, &error_local);
 	if (!ret) {
 		/* TRANSLATORS: There was an error getting the details about the package. The detailed error follows */
-		*error = g_error_new (1, 0, _("This tool could not get package details for '%s': %s"), package, error_local->message);
+		*error = g_error_new (1, 0, _("This tool could not get package details for %s: %s"), package, error_local->message);
 		g_error_free (error_local);
 	}
 	g_strfreev (package_ids);
@@ -1021,7 +1021,7 @@ pk_console_get_files (PkClient *client, const gchar *package, GError **error)
 	package_id = pk_console_perhaps_resolve (client, pk_bitfield_value (PK_FILTER_ENUM_NONE), package, &error_local);
 	if (package_id == NULL) {
 		/* TRANSLATORS: The package name was not found in any software sources. The detailed error follows */
-		*error = g_error_new (1, 0, _("This tool could not find the files for '%s': %s"), package, error_local->message);
+		*error = g_error_new (1, 0, _("This tool could not find the files for %s: %s"), package, error_local->message);
 		g_error_free (error_local);
 		return FALSE;
 	}
@@ -1029,7 +1029,7 @@ pk_console_get_files (PkClient *client, const gchar *package, GError **error)
 	ret = pk_client_get_files (client, package_ids, error);
 	if (!ret) {
 		/* TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows */
-		*error = g_error_new (1, 0, _("This tool could not get the file list for '%s': %s"), package, error_local->message);
+		*error = g_error_new (1, 0, _("This tool could not get the file list for %s: %s"), package, error_local->message);
 		g_error_free (error_local);
 	}
 	g_strfreev (package_ids);
@@ -1232,7 +1232,7 @@ pk_console_list_install (PkClient *client, const gchar *file, GError **error)
 	for (i=0; i<length; i++) {
 		obj = pk_package_list_get_obj (new, i);
 		/* TRANSLATORS: searching takes some time.... */
-		g_print ("%.0f%%\t%s '%s'...", (100.0f/length)*i, _("Searching for package: "), obj->id->name);
+		g_print ("%.0f%%\t%s %s...", (100.0f/length)*i, _("Searching for package: "), obj->id->name);
 		package_id = pk_console_perhaps_resolve (client, filters, obj->id->name, &error_local);
 		if (package_id == NULL) {
 			/* TRANSLATORS: package was not found -- this is the end of a string ended in ... */
@@ -1289,7 +1289,7 @@ pk_console_get_update_detail (PkClient *client, const gchar *package, GError **e
 	package_id = pk_console_perhaps_resolve (client, pk_bitfield_value (PK_FILTER_ENUM_INSTALLED), package, &error_local);
 	if (package_id == NULL) {
 		/* TRANSLATORS: The package name was not found in any software sources. The detailed error follows */
-		*error = g_error_new (1, 0, _("This tool could not find the update details for '%s': %s"), package, error_local->message);
+		*error = g_error_new (1, 0, _("This tool could not find the update details for %s: %s"), package, error_local->message);
 		g_error_free (error_local);
 		return FALSE;
 	}
@@ -1297,7 +1297,7 @@ pk_console_get_update_detail (PkClient *client, const gchar *package, GError **e
 	ret = pk_client_get_update_detail (client, package_ids, &error_local);
 	if (!ret) {
 		/* TRANSLATORS: There was an error getting the details about the update for the package. The detailed error follows */
-		*error = g_error_new (1, 0, _("This tool could not get the update details for '%s': %s"), package, error_local->message);
+		*error = g_error_new (1, 0, _("This tool could not get the update details for %s: %s"), package, error_local->message);
 		g_error_free (error_local);
 	}
 	g_strfreev (package_ids);
@@ -1358,12 +1358,12 @@ pk_console_details_cb (PkClient *client, const PkDetailsObj *details, gpointer d
 
 	/* TRANSLATORS: This a list of details about the package */
 	g_print ("%s\n", _("Package description"));
-	g_print ("  package:     '%s-%s.%s'\n", details->id->name, details->id->version, details->id->arch);
-	g_print ("  license:     '%s'\n", details->license);
-	g_print ("  group:       '%s'\n", pk_group_enum_to_text (details->group));
-	g_print ("  description: '%s'\n", details->description);
-	g_print ("  size:        '%lu' bytes\n", (long unsigned int) details->size);
-	g_print ("  url:         '%s'\n", details->url);
+	g_print ("  package:     %s-%s.%s\n", details->id->name, details->id->version, details->id->arch);
+	g_print ("  license:     %s\n", details->license);
+	g_print ("  group:       %s\n", pk_group_enum_to_text (details->group));
+	g_print ("  description: %s\n", details->description);
+	g_print ("  size:        %lu bytes\n", (long unsigned int) details->size);
+	g_print ("  url:         %s\n", details->url);
 }
 
 /**
@@ -1767,7 +1767,7 @@ main (int argc, char *argv[])
 		filters = pk_filter_bitfield_from_text (filter);
 		if (filters == 0) {
 			/* TRANSLATORS: The user specified an incorrect filter */
-			error = g_error_new (1, 0, "%s: '%s'", _("The filter specified was invalid"), filter);
+			error = g_error_new (1, 0, "%s: %s", _("The filter specified was invalid"), filter);
 			goto out;
 		}
 	}
@@ -1845,7 +1845,7 @@ main (int argc, char *argv[])
 		}
 		ret = g_file_test (value, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR);
 		if (!ret) {
-			error = g_error_new (1, 0, "%s: '%s'", _("Directory not found"), value);
+			error = g_error_new (1, 0, "%s: %s", _("Directory not found"), value);
 			goto out;
 		}
 		ret = pk_console_download_packages (client_async, argv, value, &error);
commit d043b66985ac26553e24d0c3b781b03dec127316
Author: Richard Hughes <richard at hughsie.com>
Date:   Fri Nov 21 15:01:35 2008 +0000

    feature: remove the 'desktopnames' parameter from the x-packagekit-plugin code and add the desktop icon if installed
    
    Specifying a desktop file would allow the user to launch a different application to the one they specified
    as the package. This would be bad. We can use the pk_desktop_get_shown_for_package() api call to get the
    best desktop file, and so we can use the icon in this case.

diff --git a/contrib/packagekit-plugin/src/contents.cpp b/contrib/packagekit-plugin/src/contents.cpp
index 179079d..149690e 100644
--- a/contrib/packagekit-plugin/src/contents.cpp
+++ b/contrib/packagekit-plugin/src/contents.cpp
@@ -80,13 +80,12 @@ splitString(const gchar *str)
 	return v;
 }
 
-PkpContents::PkpContents(const gchar *displayName, const gchar *packageNames, const gchar *desktopNames) :
+PkpContents::PkpContents(const gchar *displayName, const gchar *packageNames) :
 	mPlugin(0),
 	mStatus(IN_PROGRESS),
 	mAppInfo(0),
 	mDisplayName(displayName),
 	mPackageNames(splitString(packageNames)),
-	mDesktopNames(splitString(desktopNames)),
 	mLayout(0),
 	mInstallPackageProxy(0),
 	mInstallPackageCall(0)
@@ -119,6 +118,7 @@ void PkpContents::recheck()
 	mStatus = IN_PROGRESS;
 	mAvailableVersion = "";
 	mAvailablePackageName = "";
+	mInstalledPackageName = "";
 
 	for (std::vector<std::string>::iterator i = mPackageNames.begin(); i != mPackageNames.end(); i++) {
 		GError *error = NULL;
@@ -138,8 +138,6 @@ void PkpContents::recheck()
 		g_strfreev (package_ids);
 	}
 
-	findAppInfo();
-
 	if (mClients.empty() && getStatus() == IN_PROGRESS)
 		setStatus(UNAVAILABLE);
 }
@@ -188,6 +186,12 @@ PkpContents::setAvailablePackageName(const gchar *name)
 }
 
 void
+PkpContents::setInstalledPackageName(const gchar *name)
+{
+	mInstalledPackageName = name;
+}
+
+void
 PkpContents::setInstalledVersion(const gchar *version)
 {
 	mInstalledVersion = version;
@@ -257,8 +261,7 @@ get_style(PangoFontDescription **font_desc, guint32 *foreground, guint32 *backgr
 	GdkColor link_color = { 0, 0, 0, 0xeeee };
 	GdkColor *tmp = NULL;
 
-	gtk_widget_style_get (GTK_WIDGET (window),
-						 "link-color", &tmp, NULL);
+	gtk_widget_style_get (GTK_WIDGET (window), "link-color", &tmp, NULL);
 	if (tmp != NULL) {
 		link_color = *tmp;
 		gdk_color_free(tmp);
@@ -292,7 +295,7 @@ PkpContents::ensureLayout(cairo_t *cr, PangoFontDescription *font_desc, guint32
 		break;
 	case INSTALLED:
 		if (mAppInfo != 0) {
-			append_markup(markup, "\n<span color='#%06x' underline='single'>", link_color >> 8);
+			append_markup(markup, "<span color='#%06x' underline='single'>", link_color >> 8);
 			/* TRANSLATORS: run an applicaiton */
 			append_markup(markup, _("Run %s"), mDisplayName.c_str());
 			append_markup(markup, "</span>");
@@ -324,7 +327,7 @@ PkpContents::ensureLayout(cairo_t *cr, PangoFontDescription *font_desc, guint32
 		append_markup(markup, "</span>");
 		break;
 	case AVAILABLE:
-		append_markup(markup, "\n<span color='#%06x' underline='single'>", link_color >> 8);
+		append_markup(markup, "<span color='#%06x' underline='single'>", link_color >> 8);
 		/* TRANSLATORS: To install a package */
 		append_markup(markup, _("Install %s now"), mDisplayName.c_str());
 		append_markup(markup, "</span>");
@@ -360,28 +363,111 @@ PkpContents::setPlugin(PkpPluginInstance *plugin)
 	mPlugin = plugin;
 }
 
+gchar *
+PkpContents::getBestDesktopFile()
+{
+	GPtrArray *array = NULL;
+	PkDesktop *desktop;
+	gboolean ret;
+	gchar *data = NULL;
+	const gchar *package;
+
+	/* open desktop database */
+	desktop = pk_desktop_new();
+	ret = pk_desktop_open_database(desktop, NULL);
+	if (!ret)
+		goto out;
+
+	/* get files */
+	package = mInstalledPackageName.c_str();
+	array = pk_desktop_get_shown_for_package(desktop, package, NULL);
+	if (array == NULL)
+		goto out;
+	if (array->len == 0)
+		goto out;
+
+	/* just use the first entry */
+	data = g_strdup((const gchar*) g_ptr_array_index(array, 0));
+
+out:
+	if (array != NULL) {
+		g_ptr_array_foreach(array, (GFunc) g_free, NULL);
+		g_ptr_array_free (array, TRUE);
+	}
+	g_object_unref(desktop);
+	return data;
+}
+
+gchar *
+PkpContents::getPackageIcon()
+{
+	gboolean ret;
+	GKeyFile *file;
+	gchar *data = NULL;
+	const gchar *filename;
+
+	/* get data from the best file */
+	file = g_key_file_new();
+	filename = getBestDesktopFile();
+	if (filename == NULL)
+		goto out;
+
+	ret = g_key_file_load_from_file(file, filename, G_KEY_FILE_NONE, NULL);
+	if (!ret) {
+		g_warning("failed to open %s", filename);
+		goto out;
+	}
+	data = g_key_file_get_string(file, G_KEY_FILE_DESKTOP_GROUP, G_KEY_FILE_DESKTOP_KEY_ICON, NULL);
+	g_key_file_free(file);
+out:
+	return data;
+}
+
 void
 PkpContents::draw(cairo_t *cr)
 {
 	guint32 foreground, background, link;
 	PangoFontDescription *font_desc;
-
+	guint x = mPlugin->getX();
+	guint y = mPlugin->getY();
+	cairo_surface_t *surface = NULL;
+	const gchar *filename;
+	GtkIconTheme *theme;
+	GdkPixbuf *pixbuf;
+
+	/* get properties */
 	get_style(&font_desc, &foreground, &background, &link);
 
+        /* fill background */
 	set_source_from_rgba(cr, background);
-	cairo_rectangle(cr, mPlugin->getX(), mPlugin->getY(), mPlugin->getWidth(), mPlugin->getHeight());
+	cairo_rectangle(cr, x, y, mPlugin->getWidth(), mPlugin->getHeight());
 	cairo_fill(cr);
 
+        /* grey outline */
 	cairo_set_source_rgb(cr, 0.5, 0.5, 0.5);
-	cairo_rectangle(cr, mPlugin->getX() + 0.5, mPlugin->getY() + 0.5, mPlugin->getWidth() - 1, mPlugin->getHeight() - 1);
+	cairo_rectangle(cr, x + 0.5, y + 0.5, mPlugin->getWidth() - 1, mPlugin->getHeight() - 1);
 	cairo_set_line_width(cr, 1);
 	cairo_stroke(cr);
 
-	ensureLayout(cr, font_desc, link);
-	int width, height;
-	pango_layout_get_pixel_size(mLayout, &width, &height);
 
-	cairo_move_to(cr, mPlugin->getX() + MARGIN, mPlugin->getY() + MARGIN);
+	/* get themed icon */
+	filename = getPackageIcon();
+	if (filename == NULL)
+		filename = "package-x-generic";
+	theme = gtk_icon_theme_get_default();
+	pixbuf = gtk_icon_theme_load_icon(theme, filename, 48, GTK_ICON_LOOKUP_FORCE_SIZE, NULL);
+	if (pixbuf == NULL)
+		goto skip;
+	gdk_cairo_set_source_pixbuf(cr, pixbuf, x + MARGIN, y + MARGIN);
+	cairo_rectangle(cr, x + MARGIN, y + MARGIN, 48, 48);
+	cairo_fill(cr);
+	cairo_surface_destroy(surface);
+	g_object_unref(pixbuf);
+
+skip:
+	/* write text */
+	ensureLayout(cr, font_desc, link);
+	cairo_move_to(cr,(x + MARGIN*2) + 48, y + MARGIN + MARGIN);
 	set_source_from_rgba(cr, foreground);
 	pango_cairo_show_layout(cr, mLayout);
 }
@@ -434,8 +520,8 @@ PkpContents::getLinkIndex(int x, int y)
 	if (!mLayout)
 		return -1;
 
-	x -= MARGIN;
-	y -= MARGIN;
+	x -= (MARGIN * 2) + 48;
+	y -= (MARGIN * 2);
 
 	int index;
 	int trailing;
@@ -548,49 +634,6 @@ get_server_timestamp()
 	gtk_widget_destroy(invisible);
 }
 
-static gboolean
-validate_name(const gchar *name)
-{
-	const gchar *p;
-
-	for (p = name; *p; p++) {
-		char c = *p;
-		if (!((c >= 'A' && c <= 'Z') ||
-		      (c >= 'a' && c <= 'z') ||
-		      (c >= '0' && c <= '9') ||
-		      (c == '.') ||
-		      (c == '_') ||
-		      (c == '-')))
-			return FALSE;
-	}
-
-	return TRUE;
-}
-
-void
-PkpContents::findAppInfo()
-{
-	for (std::vector<std::string>::iterator i = mDesktopNames.begin(); i != mDesktopNames.end(); i++) {
-		if (!validate_name(i->c_str())) {
-			g_warning("Bad desktop name: '%s'", i->c_str());
-			continue;
-		}
-
-		/* The "id" taken be g_desktop_app_info_new() is weirdly 'foo.desktop' not 'foo' */
-		char *id = g_strconcat(i->c_str(), ".desktop", NULL);
-		GDesktopAppInfo *desktopAppInfo = g_desktop_app_info_new(id);
-		g_free(id);
-
-		if (desktopAppInfo) {
-			mAppInfo = G_APP_INFO(desktopAppInfo);
-			break;
-		}
-	}
-
-	if (mAppInfo != 0)
-		setStatus(INSTALLED);
-}
-
 void
 PkpContents::runApplication (Time time)
 {
@@ -650,9 +693,9 @@ PkpContents::installPackage (Time time)
 							 "org.freedesktop.PackageKit");
 
 	/* will be NULL when activated not using a keyboard or a mouse */
-	event = gtk_get_current_event ();
+	event = gtk_get_current_event();
 	if (event != NULL && event->any.window != NULL) {
-		window = gdk_window_get_toplevel (event->any.window);
+		window = gdk_window_get_toplevel(event->any.window);
 		xid = GDK_DRAWABLE_XID(window);
 	}
 
@@ -674,6 +717,8 @@ PkpContents::installPackage (Time time)
 void
 PkpContents::onClientPackage(PkClient *client, const PkPackageObj *obj, PkpContents *contents)
 {
+	gchar *filename;
+
 	/* if we didn't use displayname, use the summary */
 	if (contents->mDisplayName.size() == 0)
 		contents->mDisplayName = obj->summary;
@@ -686,12 +731,36 @@ PkpContents::onClientPackage(PkClient *client, const PkPackageObj *obj, PkpConte
 			contents->setStatus(UPGRADABLE);
 		contents->setAvailableVersion(obj->id->version);
 		contents->setAvailablePackageName(obj->id->name);
+
+#if 0
+		/* if we have data from the repo, override the user:
+		 *  * we don't want the remote site pretending to install another package
+		 *  * it might be localised if the backend supports it */
+		if (obj->summary != NULL && obj->summary[0] != '\0')
+			contents->mDisplayName = obj->summary;
+#endif
+
 	} else if (obj->info == PK_INFO_ENUM_INSTALLED) {
 		if (contents->getStatus() == IN_PROGRESS)
 			contents->setStatus(INSTALLED);
 		else if (contents->getStatus() == AVAILABLE)
 			contents->setStatus(UPGRADABLE);
 		contents->setInstalledVersion(obj->id->version);
+		contents->setInstalledPackageName(obj->id->name);
+
+		/* get desktop file information */
+		filename = contents->getBestDesktopFile();
+		if (filename != NULL) {
+			contents->mAppInfo = G_APP_INFO(g_desktop_app_info_new_from_filename(filename));
+#if 0
+			/* override, as this will have translation */
+			contents->mDisplayName = g_app_info_get_name(contents->mAppInfo);
+#endif
+		}
+		g_free(filename);
+
+		if (contents->mAppInfo != 0)
+			contents->setStatus(INSTALLED);
 	}
 }
 
diff --git a/contrib/packagekit-plugin/src/contents.h b/contrib/packagekit-plugin/src/contents.h
index 7d376e4..40d45c8 100644
--- a/contrib/packagekit-plugin/src/contents.h
+++ b/contrib/packagekit-plugin/src/contents.h
@@ -64,7 +64,7 @@ enum PackageStatus {
 class PkpContents
 {
 public:
-	PkpContents(const gchar *displayName, const gchar *packageNames, const gchar *desktopNames);
+	PkpContents(const gchar *displayName, const gchar *packageNames);
 	virtual ~PkpContents();
 
 	void setPlugin(PkpPluginInstance *plugin);
@@ -89,10 +89,13 @@ private:
 	void setAvailableVersion(const gchar *version);
 	void setAvailablePackageName(const gchar *name);
 	void setInstalledVersion(const gchar *version);
+	void setInstalledPackageName(const gchar *name);
 
 	void ensureLayout(cairo_t *cr, PangoFontDescription *font_desc, guint32 link_color);
 	void clearLayout();
 	void refresh();
+	gchar *getPackageIcon();
+	gchar *getBestDesktopFile();
 
 	void removeClient(PkClient *client);
 
@@ -106,11 +109,11 @@ private:
 	std::string mAvailableVersion;
 	std::string mAvailablePackageName;
 	std::string mInstalledVersion;
+	std::string mInstalledPackageName;
 	GAppInfo *mAppInfo;
 
 	std::string mDisplayName;
 	std::vector<std::string> mPackageNames;
-	std::vector<std::string> mDesktopNames;
 
 	PangoLayout *mLayout;
 
diff --git a/contrib/packagekit-plugin/src/plugin.cpp b/contrib/packagekit-plugin/src/plugin.cpp
index 1e3ca38..d842b94 100644
--- a/contrib/packagekit-plugin/src/plugin.cpp
+++ b/contrib/packagekit-plugin/src/plugin.cpp
@@ -140,7 +140,6 @@ nsPluginInstanceBase * NS_NewPluginInstance(nsPluginCreateData * aCreateDataStru
 {
 	const gchar *displayName = "";
 	const gchar *packageNames = NULL;
-	const gchar *desktopNames = NULL;
 
 	if(!aCreateDataStruct)
 		return NULL;
@@ -150,11 +149,9 @@ nsPluginInstanceBase * NS_NewPluginInstance(nsPluginCreateData * aCreateDataStru
 			displayName = aCreateDataStruct->argv[i];
 		else if (strcmp(aCreateDataStruct->argn[i], "packagenames") == 0)
 			packageNames = aCreateDataStruct->argv[i];
-		else if (strcmp(aCreateDataStruct->argn[i], "desktopnames") == 0)
-			desktopNames = aCreateDataStruct->argv[i];
 	}
 
-	PkpPluginInstance * plugin = new PkpPluginInstance(aCreateDataStruct->instance, displayName, packageNames, desktopNames);
+	PkpPluginInstance * plugin = new PkpPluginInstance(aCreateDataStruct->instance, displayName, packageNames);
 
 	NPN_SetValue(aCreateDataStruct->instance, NPPVpluginWindowBool, (void *)FALSE);
 
@@ -172,11 +169,11 @@ void NS_DestroyPluginInstance(nsPluginInstanceBase * aPlugin)
 // nsPluginInstance class implementation
 //
 
-PkpPluginInstance::PkpPluginInstance(NPP aInstance, const gchar *displayName, const gchar *packageNames, const gchar *desktopNames) :
+PkpPluginInstance::PkpPluginInstance(NPP aInstance, const gchar *displayName, const gchar *packageNames) :
 	nsPluginInstanceBase(),
 	mInstance(aInstance),
 	mInitialized(FALSE),
-	mContents(displayName, packageNames, desktopNames),
+	mContents(displayName, packageNames),
 	mWindow(0)
 {
 	mContents.setPlugin(this);
diff --git a/contrib/packagekit-plugin/src/plugin.h b/contrib/packagekit-plugin/src/plugin.h
index 6122b60..ded4b69 100644
--- a/contrib/packagekit-plugin/src/plugin.h
+++ b/contrib/packagekit-plugin/src/plugin.h
@@ -46,7 +46,7 @@
 class PkpPluginInstance : public nsPluginInstanceBase
 {
 public:
-	PkpPluginInstance(NPP aInstance, const gchar *displayName, const gchar *packageNames, const gchar *desktopNames);
+	PkpPluginInstance(NPP aInstance, const gchar *displayName, const gchar *packageNames);
 	virtual ~PkpPluginInstance();
 
 	NPBool init(NPWindow* aWindow);
diff --git a/contrib/packagekit-plugin/tests/test.html b/contrib/packagekit-plugin/tests/test.html
index 922b446..24766ac 100644
--- a/contrib/packagekit-plugin/tests/test.html
+++ b/contrib/packagekit-plugin/tests/test.html
@@ -15,19 +15,26 @@
   <body>
     <object type="application/x-packagekit-plugin" width="500" height="200" class="packagekit-plugin">
       <param name="packagenames" value="firefox mozilla-firefox"/>
-      <param name="desktopnames" value="firefox mozilla-firefox"/>
     </object>
     <br/><br/>
     <object type="application/x-packagekit-plugin" width="500" height="200" class="packagekit-plugin">
       <param name="displayname" value="KStars"/>
       <param name="packagenames" value="kdeedu"/>
-      <param name="desktopnames" value="kstars"/>
     </object>
     <br/><br/>
     <object type="application/x-packagekit-plugin" width="500" height="200" class="packagekit-plugin">
       <param name="displayname" value="GNU Backgammon"/>
       <param name="packagenames" value="gnubg"/>
-      <param name="desktopnames" value="fedora-gnubg"/>
+    </object>
+    <br/><br/>
+    <object type="application/x-packagekit-plugin" width="500" height="200" class="packagekit-plugin">
+      <param name="displayname" value="NotGoingToExist"/>
+      <param name="packagenames" value="notgoingtoexist"/>
+    </object>
+    <br/><br/>
+    <object type="application/x-packagekit-plugin" width="500" height="200" class="packagekit-plugin">
+      <param name="displayname" value="FSpot"/>
+      <param name="packagenames" value="f-spot"/>
     </object>
   </body>
 </html>
commit c7bfe43733f2ed3ca80d75165f699c8929ac385f
Author: Richard Hughes <richard at hughsie.com>
Date:   Fri Nov 21 14:58:11 2008 +0000

    trivial: update the modelines in the plugin code

diff --git a/contrib/packagekit-plugin/src/contents.cpp b/contrib/packagekit-plugin/src/contents.cpp
index 8ddc6e3..179079d 100644
--- a/contrib/packagekit-plugin/src/contents.cpp
+++ b/contrib/packagekit-plugin/src/contents.cpp
@@ -1,4 +1,4 @@
-/* -*- mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
 /* ***** BEGIN LICENSE BLOCK *****
  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  *
diff --git a/contrib/packagekit-plugin/src/contents.h b/contrib/packagekit-plugin/src/contents.h
index 9cea5a8..7d376e4 100644
--- a/contrib/packagekit-plugin/src/contents.h
+++ b/contrib/packagekit-plugin/src/contents.h
@@ -1,4 +1,4 @@
-/* -*- mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
 /* ***** BEGIN LICENSE BLOCK *****
  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  *
diff --git a/contrib/packagekit-plugin/src/plugin.cpp b/contrib/packagekit-plugin/src/plugin.cpp
index 0c72132..1e3ca38 100644
--- a/contrib/packagekit-plugin/src/plugin.cpp
+++ b/contrib/packagekit-plugin/src/plugin.cpp
@@ -1,4 +1,4 @@
-/* -*- mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
 /* ***** BEGIN LICENSE BLOCK *****
  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  *
diff --git a/contrib/packagekit-plugin/src/plugin.h b/contrib/packagekit-plugin/src/plugin.h
index 0bb0707..6122b60 100644
--- a/contrib/packagekit-plugin/src/plugin.h
+++ b/contrib/packagekit-plugin/src/plugin.h
@@ -1,4 +1,4 @@
-/* -*- mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
 /* ***** BEGIN LICENSE BLOCK *****
  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  *
commit 08bb83bb1cc33f000f6b9dca898f24979807cd94
Author: Richard Hughes <richard at hughsie.com>
Date:   Fri Nov 21 13:48:37 2008 +0000

    feature: provide a method pk_desktop_get_shown_for_package() to only return desktop files that will be shown in menus

diff --git a/configure.ac b/configure.ac
index dc0da51..b75b406 100644
--- a/configure.ac
+++ b/configure.ac
@@ -170,7 +170,7 @@ AC_PATH_PROG([MOC], [moc-qt4])
 dnl ---------------------------------------------------------------------------
 dnl - Is GIO available?
 dnl ---------------------------------------------------------------------------
-PKG_CHECK_MODULES(GIO, gio-2.0 >= $GIO_REQUIRED, PK_BUILD_GIO="yes", PK_BUILD_GIO="no")
+PKG_CHECK_MODULES(GIO, gio-2.0 >= $GIO_REQUIRED gio-unix-2.0 >= $GIO_REQUIRED, PK_BUILD_GIO="yes", PK_BUILD_GIO="no")
 if test "x$PK_BUILD_GIO" = "xyes"; then
 	with_gio="yes"
 	AC_DEFINE(PK_BUILD_GIO, 1, [define if GIO is installed])
diff --git a/lib/packagekit-glib/pk-desktop.c b/lib/packagekit-glib/pk-desktop.c
index 52a298a..0cb89fc 100644
--- a/lib/packagekit-glib/pk-desktop.c
+++ b/lib/packagekit-glib/pk-desktop.c
@@ -41,6 +41,10 @@ static void     pk_desktop_finalize	(GObject        *object);
 
 #define PK_DESKTOP_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), PK_TYPE_DESKTOP, PkDesktopPrivate))
 
+/* Database format is:
+ *   CREATE TABLE cache ( filename TEXT, package TEXT, show INTEGER, md5 TEXT );
+ */
+
 /**
  * PkDesktopPrivate:
  *
@@ -92,6 +96,12 @@ pk_desktop_sqlite_package_cb (void *data, gint argc, gchar **argv, gchar **col_n
 
 /**
  * pk_desktop_get_files_for_package:
+ * @desktop: a valid #PkDesktop instance
+ * @package: the package name, e.g. "gnome-power-manager"
+ * @error: a %GError to put the error code and message in, or %NULL
+ *
+ * Return all desktop files owned by a package, regardless if they are shown
+ * in the main menu or not.
  *
  * Return value: array of results
  **/
@@ -127,7 +137,54 @@ out:
 }
 
 /**
+ * pk_desktop_get_shown_for_package:
+ * @desktop: a valid #PkDesktop instance
+ * @package: the package name, e.g. "gnome-power-manager"
+ * @error: a %GError to put the error code and message in, or %NULL
+ *
+ * Return all desktop files owned by a package that would be shown in a menu,
+ * i.e are an application
+ *
+ * Return value: array of results
+ **/
+GPtrArray *
+pk_desktop_get_shown_for_package (PkDesktop *desktop, const gchar *package, GError **error)
+{
+	gchar *statement;
+	gchar *error_msg = NULL;
+	gint rc;
+	GPtrArray *array = NULL;
+
+	g_return_val_if_fail (PK_IS_DESKTOP (desktop), NULL);
+	g_return_val_if_fail (package != NULL, NULL);
+
+	/* no database */
+	if (desktop->priv->db == NULL) {
+		if (error != NULL)
+			*error = g_error_new (1, 0, "database is not open");
+		goto out;
+	}
+
+	/* get packages */
+	array = g_ptr_array_new ();
+	statement = g_strdup_printf ("SELECT filename FROM cache WHERE package = '%s' AND show = 1", package);
+	rc = sqlite3_exec (desktop->priv->db, statement, pk_desktop_sqlite_filename_cb, array, &error_msg);
+	g_free (statement);
+	if (rc != SQLITE_OK) {
+		egg_warning ("SQL error: %s\n", error_msg);
+		sqlite3_free (error_msg);
+	}
+out:
+	return array;
+}
+
+/**
  * pk_desktop_get_package_for_file:
+ * @desktop: a valid #PkDesktop instance
+ * @filename: a fully qualified filename
+ * @error: a %GError to put the error code and message in, or %NULL
+ *
+ * Returns the package name that owns the desktop file. Fast.
  *
  * Return value: package name, or %NULL
  **/
@@ -316,6 +373,16 @@ pk_desktop_test (EggTest *test)
 	g_ptr_array_foreach (array, (GFunc) g_free, NULL);
 	g_ptr_array_free (array, TRUE);
 
+	/************************************************************/
+	egg_test_title (test, "get shown files");
+	array = pk_desktop_get_shown_for_package (desktop, "f-spot", NULL);
+	if (array->len == 1)
+		egg_test_success (test, NULL);
+	else
+		egg_test_failed (test, "length=%i", array->len);
+	g_ptr_array_foreach (array, (GFunc) g_free, NULL);
+	g_ptr_array_free (array, TRUE);
+
 	g_object_unref (desktop);
 
 	egg_test_end (test);
diff --git a/lib/packagekit-glib/pk-desktop.h b/lib/packagekit-glib/pk-desktop.h
index 99ed325..48c2e40 100644
--- a/lib/packagekit-glib/pk-desktop.h
+++ b/lib/packagekit-glib/pk-desktop.h
@@ -42,7 +42,7 @@ G_BEGIN_DECLS
  *
  * The default location for the database
  */
-#define PK_DESKTOP_DEFAULT_DATABASE		"/var/lib/PackageKit/desktop-data.db"
+#define PK_DESKTOP_DEFAULT_DATABASE		"/var/lib/PackageKit/desktop-files.db"
 
 /**
  * PK_DESKTOP_DEFAULT_APPLICATION_DIR:
@@ -73,6 +73,9 @@ gboolean	 pk_desktop_open_database		(PkDesktop	*desktop,
 GPtrArray	*pk_desktop_get_files_for_package	(PkDesktop	*desktop,
 							 const gchar	*package,
 							 GError		**error);
+GPtrArray	*pk_desktop_get_shown_for_package	(PkDesktop	*desktop,
+							 const gchar	*package,
+							 GError		**error);
 gchar		*pk_desktop_get_package_for_file	(PkDesktop	*desktop,
 							 const gchar	*filename,
 							 GError		**error);
diff --git a/src/pk-post-trans.c b/src/pk-post-trans.c
index ee10793..9958b06 100644
--- a/src/pk-post-trans.c
+++ b/src/pk-post-trans.c
@@ -36,6 +36,10 @@
   #include <polkit-dbus/polkit-dbus.h>
 #endif
 
+#ifdef PK_BUILD_GIO
+  #include <gio/gdesktopappinfo.h>
+#endif
+
 #include "egg-debug.h"
 
 #include "pk-post-trans.h"
@@ -221,8 +225,17 @@ pk_post_trans_sqlite_add_filename_details (PkPostTrans *post, const gchar *filen
 	gchar *error_msg = NULL;
 	sqlite3_stmt *sql_statement = NULL;
 	gint rc;
+	gint show = TRUE;
+#ifdef PK_BUILD_GIO
+	GAppInfo *info;
+
+	/* find out if we should show desktop file in menus */
+	info = G_APP_INFO(g_desktop_app_info_new_from_filename (filename));
+	show = g_app_info_should_show (info);
+	g_object_unref (info);
+#endif
 
-	egg_debug ("add filename %s from %s with md5: %s", filename, package, md5);
+	egg_debug ("add filename %s from %s with md5: %s (show: %i)", filename, package, md5, show);
 
 	/* the row might already exist */
 	statement = g_strdup_printf ("DELETE FROM cache WHERE filename = '%s'", filename);
@@ -230,7 +243,7 @@ pk_post_trans_sqlite_add_filename_details (PkPostTrans *post, const gchar *filen
 	g_free (statement);
 
 	/* prepare the query, as we don't escape it */
-	rc = sqlite3_prepare_v2 (post->priv->db, "INSERT INTO cache (filename, package, md5) VALUES (?, ?, ?)", -1, &sql_statement, NULL);
+	rc = sqlite3_prepare_v2 (post->priv->db, "INSERT INTO cache (filename, package, show, md5) VALUES (?, ?, ?, ?)", -1, &sql_statement, NULL);
 	if (rc != SQLITE_OK) {
 		egg_warning ("SQL failed to prepare: %s", sqlite3_errmsg (post->priv->db));
 		goto out;
@@ -239,7 +252,8 @@ pk_post_trans_sqlite_add_filename_details (PkPostTrans *post, const gchar *filen
 	/* add data */
 	sqlite3_bind_text (sql_statement, 1, filename, -1, SQLITE_STATIC);
 	sqlite3_bind_text (sql_statement, 2, package, -1, SQLITE_STATIC);
-	sqlite3_bind_text (sql_statement, 3, md5, -1, SQLITE_STATIC);
+	sqlite3_bind_int (sql_statement, 3, show);
+	sqlite3_bind_text (sql_statement, 4, md5, -1, SQLITE_STATIC);
 
 	/* save this */
 	sqlite3_step (sql_statement);
@@ -804,6 +818,7 @@ pk_post_trans_init (PkPostTrans *post)
 		statement = "CREATE TABLE cache ("
 			    "filename TEXT,"
 			    "package TEXT,"
+			    "show INTEGER,"
 			    "md5 TEXT);";
 		rc = sqlite3_exec (post->priv->db, statement, NULL, NULL, &error_msg);
 		if (rc != SQLITE_OK) {
commit 43b8d4be64b0ba70aa7b456b3ef8cde3512505d5
Merge: 66b4d7f... 05a7b5c...
Author: Richard Hughes <richard at hughsie.com>
Date:   Fri Nov 21 09:10:30 2008 +0000

    Merge branch 'master' of git+ssh://hughsie@git.packagekit.org/srv/git/PackageKit

commit 05a7b5c40c59147b48f14b09cfc178232fe22056
Author: Scott Reeves <sreeves at novell.com>
Date:   Thu Nov 20 12:51:22 2008 -0700

    zypp: dont leak the filters

diff --git a/backends/zypp/pk-backend-zypp.cpp b/backends/zypp/pk-backend-zypp.cpp
index 49aa00d..d2a3619 100644
--- a/backends/zypp/pk-backend-zypp.cpp
+++ b/backends/zypp/pk-backend-zypp.cpp
@@ -1260,6 +1260,7 @@ backend_resolve_thread (PkBackend *backend)
 		delete (v2);
 
 		if (package == NULL) {
+			g_free (filters);
 			pk_backend_error_code (backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND, "couldn't find package");
 			pk_backend_finished (backend);
 			return FALSE;
@@ -1283,6 +1284,7 @@ backend_resolve_thread (PkBackend *backend)
 				    package.lookupStrAttribute (zypp::sat::SolvAttr::summary).c_str ());
 	}
 
+	g_free (filters);
 	pk_backend_finished (backend);
 	return TRUE;
 }
@@ -1781,6 +1783,7 @@ backend_what_provides_thread (PkBackend *backend)
 				egg_warning("Solver problem (This should never happen): '%s'", (*it)->description ().c_str ());
 			}
 			solver.setIgnoreAlreadyRecommended (FALSE);
+			g_free (filters);
 			pk_backend_error_code (backend, PK_ERROR_ENUM_DEP_RESOLUTION_FAILED, "Resolution failed");
 			pk_backend_finished (backend);
 			return FALSE;
commit 0ac83d2cc4ee15341817d8e4db505901047f33df
Author: Pavol Å imo <palo.simo at gmail.com>
Date:   Thu Nov 20 19:32:43 2008 +0000

    Updated Slovak translation
    
    Transmitted-via: Transifex (translate.fedoraproject.org)

diff --git a/po/sk.po b/po/sk.po
index adf911d..f0aa589 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -11,13 +11,13 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PackageKit\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-11-19 16:26+0000\n"
-"PO-Revision-Date: 2008-10-19 14:47+0200\n"
+"POT-Creation-Date: 2008-11-20 01:35+0000\n"
+"PO-Revision-Date: 2008-11-20 20:31+0100\n"
 "Last-Translator: Pavol Å imo <palo.simo at gmail.com>\n"
 "Language-Team: Fedora Project <fedora-cs-list at redhat.com>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
-"Content-Transfer-Encoding: 8bit\n"
+"Content-Transfer-Encoding: 8bit"
 
 #. TRANSLATORS: this is a header for the package that can be updated
 #: ../client/pk-console.c:286
@@ -38,9 +38,9 @@ msgstr "Reštartujte aplikáciu, pretože sa momentálne používa."
 
 #. TRANSLATORS: The package is already installed on the system
 #: ../client/pk-console.c:595
-#, fuzzy, c-format
+#, c-format
 msgid "The package '%s' is already installed"
-msgstr "Balíček '%s' nemôže byť nainštalovaný: %s"
+msgstr "Balíček '%s' už je nainštalovaný"
 
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
 #: ../client/pk-console.c:603
@@ -154,80 +154,72 @@ msgstr "Nepodarilo sa získať zoznam súborov balíčka '%s': %s"
 #: ../client/pk-console.c:1054
 #, c-format
 msgid "File already exists: %s"
-msgstr ""
+msgstr "Súbor už existuje: %s"
 
 #. TRANSLATORS: follows a list of packages to install
 #: ../client/pk-console.c:1059 ../client/pk-console.c:1115
 #: ../client/pk-console.c:1190
-#, fuzzy
 msgid "Getting package list"
-msgstr "Získavanie informácií o balíčku..."
+msgstr "Získavanie zoznamu balíčkov"
 
 #. TRANSLATORS: There was an error getting the list of packages. The detailed error follows
 #: ../client/pk-console.c:1065 ../client/pk-console.c:1121
 #: ../client/pk-console.c:1196
-#, fuzzy, c-format
+#, c-format
 msgid "This tool could not get package list: %s"
-msgstr "Nepodarilo sa odstrániť balíčky: %s"
+msgstr "Nepodarilo sa získať zoznam balíčkov: %s"
 
 # XXX
 #. TRANSLATORS: There was an error saving the list
 #: ../client/pk-console.c:1076
-#, fuzzy, c-format
 msgid "Failed to save to disk"
-msgstr "Nebolo možné získať čas ostatného vykonania"
+msgstr "Nebolo možné uložiť na disk"
 
 #. TRANSLATORS: There was an error getting the list. The filename follows
 #: ../client/pk-console.c:1110 ../client/pk-console.c:1185
 #, c-format
 msgid "File does not exist: %s"
-msgstr ""
+msgstr "Súbor neexistuje: %s"
 
 #. TRANSLATORS: header to a list of packages newly added
 #: ../client/pk-console.c:1142
-#, fuzzy
 msgid "Packages to add"
-msgstr "Monitor PackageKit"
+msgstr "Balíčky na pridanie"
 
 #. TRANSLATORS: header to a list of packages removed
 #: ../client/pk-console.c:1150
-#, fuzzy
 msgid "Packages to remove"
-msgstr "Služba PackageKit"
+msgstr "Balíčky na odobratie"
 
 #. TRANSLATORS: We didn't find any differences
 #: ../client/pk-console.c:1218
-#, fuzzy, c-format
 msgid "No new packages need to be installed"
-msgstr "Balíček '%s' nemôže byť nainštalovaný: %s"
+msgstr "Žiadne nové balíčky nemusia byť nainštalované"
 
 #. TRANSLATORS: follows a list of packages to install
 #: ../client/pk-console.c:1224
 msgid "To install"
-msgstr ""
+msgstr "Nainštalovať"
 
 #. TRANSLATORS: searching takes some time....
 #: ../client/pk-console.c:1235
 msgid "Searching for package: "
-msgstr ""
+msgstr "Vyhľadávanie balíčka: "
 
 #. TRANSLATORS: package was not found -- this is the end of a string ended in ...
 #: ../client/pk-console.c:1239
-#, fuzzy
 msgid "not found."
-msgstr "Priečinok nenájdený"
+msgstr "nenájdený."
 
 #. TRANSLATORS: We didn't find any packages to install
 #: ../client/pk-console.c:1250
-#, fuzzy, c-format
 msgid "No packages can be found to install"
-msgstr "Pre váš systém neboli nájdené žiadne balíčky"
+msgstr "Neboli nájdené žiadne balíčky pre nainštalovanie"
 
 #. TRANSLATORS: installing new packages from package list
 #: ../client/pk-console.c:1256
-#, fuzzy
 msgid "Installing packages"
-msgstr "Inštalovať balíček"
+msgstr "Inštalovanie balíčkov"
 
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
 #: ../client/pk-console.c:1292
@@ -268,7 +260,6 @@ msgstr "Požadovaný podpis repozitára"
 
 #. TRANSLATORS: This a prompt asking the user to import the security key
 #: ../client/pk-console.c:1435
-#, fuzzy
 msgid "Do you accept this signature?"
 msgstr "Akceptujete tento podpis?"
 
@@ -280,12 +271,12 @@ msgstr "Podpis nebol prijatý."
 #. TRANSLATORS: This a request for a EULA
 #: ../client/pk-console.c:1473
 msgid "End user license agreement required"
-msgstr "Požadovaný súhlas s licenciou"
+msgstr "Požadovaný je súhlas s licenciou"
 
 #. TRANSLATORS: This a prompt asking the user to agree to the license
 #: ../client/pk-console.c:1480
 msgid "Do you agree to this license?"
-msgstr "Súhlasíte s licenciou?"
+msgstr "Súhlasíte s touto licenciou?"
 
 #. TRANSLATORS: This is where the user declined the license
 #: ../client/pk-console.c:1484
@@ -307,7 +298,7 @@ msgid "Subcommands:"
 msgstr "Podpríkazy:"
 
 #: ../client/pk-console.c:1657 ../client/pk-generate-pack.c:183
-#: ../client/pk-monitor.c:114 ../src/pk-main.c:196
+#: ../client/pk-monitor.c:114 ../src/pk-main.c:190
 msgid "Show extra debugging information"
 msgstr "Zobrazovať dodatočné ladiace informácie"
 
@@ -331,7 +322,7 @@ msgstr "Pokus o pripojenie k systémovej zbernici DBUS neuspel."
 #. TRANSLATORS: The user specified an incorrect filter
 #: ../client/pk-console.c:1770
 msgid "The filter specified was invalid"
-msgstr ""
+msgstr "Zadaný filter nebol platný"
 
 #: ../client/pk-console.c:1787
 msgid "You need to specify a search type, e.g. name"
@@ -408,14 +399,12 @@ msgid "You need to specify a package to find the files for"
 msgstr "Je potrebné určiť balíček, zoznam súborov ktorého sa má získať"
 
 #: ../client/pk-console.c:1969
-#, fuzzy
 msgid "You need to specify a list file to create"
-msgstr "Je potrebné určiť čas"
+msgstr "Je potrebné určiť súbor zoznamu pre vytvorenie"
 
 #: ../client/pk-console.c:1977 ../client/pk-console.c:1985
-#, fuzzy
 msgid "You need to specify a list file to open"
-msgstr "Je potrebné určiť čas"
+msgstr "Je potrebné určiť súbor zoznamu pre otvorenie"
 
 #. TRANSLATORS: The user tried to use an unsupported option on the command line
 #: ../client/pk-console.c:2038
@@ -440,15 +429,13 @@ msgstr "Získavanie"
 
 #. TRANSLATORS: This is when the main packages are being downloaded
 #: ../client/pk-generate-pack.c:119
-#, fuzzy
 msgid "Downloading packages"
-msgstr "Získavanie"
+msgstr "Získavanie balíčkov"
 
 #. TRANSLATORS: This is when the dependency packages are being downloaded
 #: ../client/pk-generate-pack.c:124
-#, fuzzy
 msgid "Downloading dependencies"
-msgstr "Získavanie"
+msgstr "Získavanie závislostí"
 
 #: ../client/pk-generate-pack.c:185
 msgid "Set the file name of dependencies to be excluded"
@@ -532,7 +519,6 @@ msgstr "Monitor PackageKit"
 
 #. TRANSLATORS: The package was not found in any software sources
 #: ../client/pk-tools-common.c:114
-#, c-format
 msgid "The package could not be found"
 msgstr "Balíček sa nepodarilo nájsť"
 
@@ -616,97 +602,6 @@ msgstr "Servisný archív PackageKit"
 msgid "PackageKit Package List"
 msgstr "Zoznam balíčkov PackageKit"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:1
-msgid "Accept EULA"
-msgstr "Prijať licenčné podmienky"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:2
-msgid "Authentication is required to accept a EULA"
-msgstr "Na prijatie licenčných podmienok je nutná autentifikácia"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:3
-msgid "Authentication is required to change software source parameters"
-msgstr "Na úpravu zdrojov softvéru je nutná autentifikácia"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:4
-#, fuzzy
-msgid ""
-"Authentication is required to consider a key used for signing packages as "
-"trusted"
-msgstr "Na obnovenie zoznamu balíčkov je nutná autentifikácia"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:5
-#, fuzzy
-msgid "Authentication is required to install a signed package"
-msgstr "Na inštaláciu balíčka je nutná autentifikácia"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:6
-#, fuzzy
-msgid "Authentication is required to install an untrusted package"
-msgstr "Na inštaláciu balíčka je nutná autentifikácia"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:7
-#, fuzzy
-msgid "Authentication is required to refresh the system sources"
-msgstr "Na obnovenie zoznamu balíčkov je nutná autentifikácia"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:8
-msgid "Authentication is required to remove packages"
-msgstr "Na odstránenie balíčkov je nutná autentifikácia"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:9
-msgid "Authentication is required to rollback a transaction"
-msgstr "Na navrátenie transakcie je nutná autentifikácia"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:10
-#, fuzzy
-msgid ""
-"Authentication is required to set the network proxy used for downloading "
-"packages"
-msgstr "Na odstránenie balíčkov je nutná autentifikácia"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:11
-msgid "Authentication is required to update packages"
-msgstr "Na aktualizáciu balíčkov je nutná autentifikácia"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:12
-msgid "Change software source parameters"
-msgstr "Zmeniť parametre zdrojov softvéru"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:13
-msgid "Install local file"
-msgstr "Inštalovať z lokálneho súboru"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:14
-#, fuzzy
-msgid "Install untrusted local file"
-msgstr "Inštalovať z lokálneho súboru"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:15
-msgid "Refresh system sources"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:16
-msgid "Remove package"
-msgstr "Odstrániť balíček"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:17
-msgid "Rollback to a previous transaction"
-msgstr "Navrátiť sa k stavu pred transakciou"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:18
-msgid "Set network proxy"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:19
-msgid "Trust a key used for signing packages"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:20
-#, fuzzy
-msgid "Update packages"
-msgstr "Aktualizovať balíček"
-
 #: ../src/pk-main.c:85
 msgid "Startup failed due to security policies on this machine."
 msgstr "Bezpečnostné politky tohto počítača zabránili spusteniu."
@@ -727,44 +622,106 @@ msgstr ""
 "Súbor org.freedesktop.PackageKit.conf nie je nainštalovaný v systémovom "
 "priečinku:"
 
-#: ../src/pk-main.c:192
+#: ../src/pk-main.c:186
 msgid "Packaging backend to use, e.g. dummy"
 msgstr "Rozhranie balíčkoveho systému ktoré sa má použiť, napríklad \"dummy\""
 
-#: ../src/pk-main.c:194
+#: ../src/pk-main.c:188
 msgid "Daemonize and detach from the terminal"
 msgstr "Uvoľniť terminál a presunúť sa na pozadie"
 
-#: ../src/pk-main.c:198
+#: ../src/pk-main.c:192
 msgid "Disable the idle timer"
 msgstr "Vypnúť počítadlo času nečinnosti"
 
-#: ../src/pk-main.c:200
+#: ../src/pk-main.c:194
 msgid "Show version and exit"
 msgstr "Zobraziť verziu a skončiť"
 
-#: ../src/pk-main.c:202
+#: ../src/pk-main.c:196
 msgid "Exit after a small delay"
 msgstr "Skončiť po krátkej prestávke"
 
 # XXX
-#: ../src/pk-main.c:204
+#: ../src/pk-main.c:198
 msgid "Exit after the engine has loaded"
 msgstr "Skončiť po načítaní enginu"
 
-#: ../src/pk-main.c:214
+#: ../src/pk-main.c:207
 msgid "PackageKit service"
 msgstr "Služba PackageKit"
 
-#: ../src/pk-main.c:250
+#: ../src/pk-main.c:243
 msgid "Cannot connect to the system bus"
 msgstr "Pokus o pripojenie k systémovej zbernici neuspel"
 
-#: ../src/pk-main.c:296
+#: ../src/pk-main.c:292
 #, c-format
 msgid "Error trying to start: %s\n"
 msgstr "Chyba pri pokuse o spustenie: %s\n"
 
+#~ msgid "Accept EULA"
+#~ msgstr "Prijať licenčné podmienky"
+
+#~ msgid "Authentication is required to accept a EULA"
+#~ msgstr "Na prijatie licenčných podmienok je nutná autentifikácia"
+
+#~ msgid "Authentication is required to change software source parameters"
+#~ msgstr "Na úpravu zdrojov softvéru je nutná autentifikácia"
+
+#, fuzzy
+#~ msgid ""
+#~ "Authentication is required to consider a key used for signing packages as "
+#~ "trusted"
+#~ msgstr "Na obnovenie zoznamu balíčkov je nutná autentifikácia"
+
+#, fuzzy
+#~ msgid "Authentication is required to install a signed package"
+#~ msgstr "Na inštaláciu balíčka je nutná autentifikácia"
+
+#, fuzzy
+#~ msgid "Authentication is required to install an untrusted package"
+#~ msgstr "Na inštaláciu balíčka je nutná autentifikácia"
+
+#, fuzzy
+#~ msgid "Authentication is required to refresh the system sources"
+#~ msgstr "Na obnovenie zoznamu balíčkov je nutná autentifikácia"
+
+#~ msgid "Authentication is required to remove packages"
+#~ msgstr "Na odstránenie balíčkov je nutná autentifikácia"
+
+#~ msgid "Authentication is required to rollback a transaction"
+#~ msgstr "Na navrátenie transakcie je nutná autentifikácia"
+
+#, fuzzy
+#~ msgid ""
+#~ "Authentication is required to set the network proxy used for downloading "
+#~ "packages"
+#~ msgstr "Na odstránenie balíčkov je nutná autentifikácia"
+
+#~ msgid "Authentication is required to update packages"
+#~ msgstr "Na aktualizáciu balíčkov je nutná autentifikácia"
+
+#~ msgid "Change software source parameters"
+#~ msgstr "Zmeniť parametre zdrojov softvéru"
+
+#~ msgid "Install local file"
+#~ msgstr "Inštalovať z lokálneho súboru"
+
+#, fuzzy
+#~ msgid "Install untrusted local file"
+#~ msgstr "Inštalovať z lokálneho súboru"
+
+#~ msgid "Remove package"
+#~ msgstr "Odstrániť balíček"
+
+#~ msgid "Rollback to a previous transaction"
+#~ msgstr "Navrátiť sa k stavu pred transakciou"
+
+#, fuzzy
+#~ msgid "Update packages"
+#~ msgstr "Aktualizovať balíček"
+
 #~ msgid "Okay to import key?"
 #~ msgstr "Importovať kľúč?"
 
commit 66b4d7ff15a855bde81323a15f0df503abd0ab1e
Merge: c87ac69... 76b0ff3...
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Nov 20 16:40:09 2008 +0000

    Merge branch 'master' of git+ssh://hughsie@git.packagekit.org/srv/git/PackageKit

commit 76b0ff3c67a30862c3aa25c042fe23f241f626f2
Merge: 7b17cf8... 383e521...
Author: Stefan Haas <shaas at suse.de>
Date:   Thu Nov 20 15:15:06 2008 +0100

    Merge branch 'master' of git+ssh://shaas@git.packagekit.org/srv/git/PackageKit

commit 7b17cf83f01a82007210531171c734f1802dfe31
Author: Stefan Haas <shaas at suse.de>
Date:   Thu Nov 20 15:12:51 2008 +0100

    zypp: handle filters in WhatProvides and Resolve

diff --git a/backends/zypp/pk-backend-zypp.cpp b/backends/zypp/pk-backend-zypp.cpp
index 26297d4..49aa00d 100644
--- a/backends/zypp/pk-backend-zypp.cpp
+++ b/backends/zypp/pk-backend-zypp.cpp
@@ -1232,6 +1232,8 @@ static gboolean
 backend_resolve_thread (PkBackend *backend)
 {
 	gchar **package_ids = pk_backend_get_strv (backend, "package_ids");
+	PkBitfield filters_field = (PkBitfield) pk_backend_get_uint (backend, "filters");
+	gchar *filters = pk_filter_bitfield_to_text(filters_field);
 
 	pk_backend_set_status (backend, PK_STATUS_ENUM_QUERY);
 
@@ -1266,8 +1268,14 @@ backend_resolve_thread (PkBackend *backend)
 		const gchar *package_id = zypp_build_package_id_from_resolvable (package);
 
 		PkInfoEnum info = PK_INFO_ENUM_AVAILABLE;
-		if( package.isSystem ())
+		if( package.isSystem ()){
 			info = PK_INFO_ENUM_INSTALLED;
+			if (g_strrstr (filters, "~installed") != NULL)
+				continue;
+		}else{
+			if (g_strrstr (filters, "~installed") == NULL)
+				continue;
+		}
 
 		pk_backend_package (backend,
 				    info,
@@ -1756,6 +1764,8 @@ backend_what_provides_thread (PkBackend *backend)
 	const gchar *search;
 	search = pk_backend_get_string (backend, "search");
 	PkProvidesEnum provides = (PkProvidesEnum) pk_backend_get_uint (backend, "provides");
+	PkBitfield filters_field = (PkBitfield) pk_backend_get_uint (backend, "filters");
+	gchar *filters = pk_filter_bitfield_to_text(filters_field);
 	zypp::Capability cap (search);
 	zypp::sat::WhatProvides prov (cap);
 
@@ -1789,6 +1799,9 @@ backend_what_provides_thread (PkBackend *backend)
 			}
 
 			if (hit) {
+				if (g_strrstr(filters, "~installed") != NULL)
+					continue;
+
 				gchar *package_id;
 				package_id = pk_package_id_build ( it->resolvable ()->name ().c_str(),
 						it->resolvable ()->edition ().asString ().c_str(),
@@ -1807,13 +1820,19 @@ backend_what_provides_thread (PkBackend *backend)
 			gchar *package_id = zypp_build_package_id_from_resolvable (*it);
 
 			PkInfoEnum info = PK_INFO_ENUM_AVAILABLE;
-			if( it->isSystem ())
+			if( it->isSystem ()){
 				info = PK_INFO_ENUM_INSTALLED;
-
+				if (g_strrstr (filters, "~installed") != NULL)
+					continue;
+			}else{
+				if (g_strrstr (filters, "~installed") == NULL)
+					continue;
+			}
 			pk_backend_package (backend, info, package_id, it->lookupStrAttribute (zypp::sat::SolvAttr::summary).c_str ());
 		}
 	}
 
+	g_free (filters);
 	pk_backend_finished (backend);
 	return TRUE;
 }
commit 383e521925bab9c004f9ff10d9543fb04f6f5c08
Author: Igor Pires Soares <igorsoares at gmail.com>
Date:   Thu Nov 20 13:17:53 2008 +0000

    Updated Brazilian Portuguese translation
    
    Transmitted-via: Transifex (translate.fedoraproject.org)

diff --git a/po/pt_BR.po b/po/pt_BR.po
index 5123560..b3228ca 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -8,8 +8,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PackageKit\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-11-19 16:26+0000\n"
-"PO-Revision-Date: 2008-11-18 11:46-0300\n"
+"POT-Creation-Date: 2008-11-20 01:35+0000\n"
+"PO-Revision-Date: 2008-11-20 11:15-0300\n"
 "Last-Translator: Igor Pires Soares <igor at projetofedora.org>\n"
 "Language-Team: Brazilian Portuguese <fedora-trans-pt_br at redhat.com>\n"
 "MIME-Version: 1.0\n"
@@ -30,9 +30,7 @@ msgstr "Por favor, reinicie o computador para completar a atualização."
 
 #: ../client/pk-console.c:481
 msgid "Please logout and login to complete the update."
-msgstr ""
-"Por favor, encerre a sessão e inicie-a novamente para completar a "
-"atualização."
+msgstr "Por favor, encerre a sessão e inicie-a novamente para completar a atualização."
 
 #: ../client/pk-console.c:483
 msgid "Please restart the application as it is being used."
@@ -51,16 +49,20 @@ msgid "The package '%s' could not be installed: %s"
 msgstr "O pacote \"%s\" não pôde ser instalado: %s"
 
 #. TRANSLATORS: There was a programming error that shouldn't happen. The detailed error follows
-#: ../client/pk-console.c:628 ../client/pk-console.c:655
-#: ../client/pk-console.c:751 ../client/pk-console.c:868
-#: ../client/pk-tools-common.c:61 ../client/pk-tools-common.c:79
+#: ../client/pk-console.c:628
+#: ../client/pk-console.c:655
+#: ../client/pk-console.c:751
+#: ../client/pk-console.c:868
+#: ../client/pk-tools-common.c:61
+#: ../client/pk-tools-common.c:79
 #: ../client/pk-tools-common.c:86
 #, c-format
 msgid "Internal error: %s"
 msgstr "Erro interno: %s"
 
 #. TRANSLATORS: There was an error installing the packages. The detailed error follows
-#: ../client/pk-console.c:636 ../client/pk-console.c:1263
+#: ../client/pk-console.c:636
+#: ../client/pk-console.c:1263
 #, c-format
 msgid "This tool could not install the packages: %s"
 msgstr "Esta ferramenta não pôde instalar os pacotes: %s"
@@ -78,7 +80,8 @@ msgid "This tool could not remove '%s': %s"
 msgstr "Esta ferramenta não pôde remover \"%s\": %s"
 
 #. TRANSLATORS: There was an error removing the packages. The detailed error follows
-#: ../client/pk-console.c:742 ../client/pk-console.c:813
+#: ../client/pk-console.c:742
+#: ../client/pk-console.c:813
 #, c-format
 msgid "This tool could not remove the packages: %s"
 msgstr "Esta ferramente não pôde remover os pacotes: %s"
@@ -108,8 +111,7 @@ msgstr "A remoção do pacote foi cancelada!"
 #: ../client/pk-console.c:845
 #, c-format
 msgid "This tool could not download the package '%s' as it could not be found"
-msgstr ""
-"Esta ferramenta não pôde baixar o pacote \"%s\", pois ele não foi localizado"
+msgstr "Esta ferramenta não pôde baixar o pacote \"%s\", pois ele não foi localizado"
 
 #. TRANSLATORS: Could not download the packages for some reason. The detailed error follows
 #: ../client/pk-console.c:876
@@ -118,25 +120,29 @@ msgid "This tool could not download the packages: %s"
 msgstr "Esta ferramenta não pôde baixar os pacotes: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:903 ../client/pk-console.c:912
+#: ../client/pk-console.c:903
+#: ../client/pk-console.c:912
 #, c-format
 msgid "This tool could not update '%s': %s"
 msgstr "Esta ferramenta não pôde atualizar \"%s\": %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:934 ../client/pk-console.c:942
+#: ../client/pk-console.c:934
+#: ../client/pk-console.c:942
 #, c-format
 msgid "This tool could not get the requirements for '%s': %s"
 msgstr "Esta ferramenta não pôde obter os requerimentos de \"%s\": %s"
 
 #. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
-#: ../client/pk-console.c:964 ../client/pk-console.c:972
+#: ../client/pk-console.c:964
+#: ../client/pk-console.c:972
 #, c-format
 msgid "This tool could not get the dependencies for '%s': %s"
 msgstr "Esta ferramenta não pôde obter as dependências para \"%s\": %s"
 
 #. TRANSLATORS: There was an error getting the details about the package. The detailed error follows
-#: ../client/pk-console.c:994 ../client/pk-console.c:1002
+#: ../client/pk-console.c:994
+#: ../client/pk-console.c:1002
 #, c-format
 msgid "This tool could not get package details for '%s': %s"
 msgstr "Esta ferramenta não pôde obter os detalhes do pacote para \"%s\": %s"
@@ -157,93 +163,86 @@ msgstr "Esta ferramenta não pôde obter a lista de arquivos para \"%s\": %s"
 #: ../client/pk-console.c:1054
 #, c-format
 msgid "File already exists: %s"
-msgstr ""
+msgstr "O arquivo já existe: %s"
 
 #. TRANSLATORS: follows a list of packages to install
-#: ../client/pk-console.c:1059 ../client/pk-console.c:1115
+#: ../client/pk-console.c:1059
+#: ../client/pk-console.c:1115
 #: ../client/pk-console.c:1190
-#, fuzzy
 msgid "Getting package list"
-msgstr "Obtendo informações do pacote..."
+msgstr "Obtendo lista de pacotes"
 
 #. TRANSLATORS: There was an error getting the list of packages. The detailed error follows
-#: ../client/pk-console.c:1065 ../client/pk-console.c:1121
+#: ../client/pk-console.c:1065
+#: ../client/pk-console.c:1121
 #: ../client/pk-console.c:1196
-#, fuzzy, c-format
+#, c-format
 msgid "This tool could not get package list: %s"
-msgstr "Esta ferramente não pôde remover os pacotes: %s"
+msgstr "Esta ferramente não pôde obter a lista de pacotes: %s"
 
 #. TRANSLATORS: There was an error saving the list
 #: ../client/pk-console.c:1076
-#, fuzzy, c-format
 msgid "Failed to save to disk"
-msgstr "Falha ao obter o último horário"
+msgstr "Falha ao salvar no disco"
 
 #. TRANSLATORS: There was an error getting the list. The filename follows
-#: ../client/pk-console.c:1110 ../client/pk-console.c:1185
+#: ../client/pk-console.c:1110
+#: ../client/pk-console.c:1185
 #, c-format
 msgid "File does not exist: %s"
-msgstr ""
+msgstr "O arquivo não existe: %s"
 
 #. TRANSLATORS: header to a list of packages newly added
 #: ../client/pk-console.c:1142
-#, fuzzy
 msgid "Packages to add"
-msgstr "Monitor do PackageKit"
+msgstr "Pacotes a serem adicionados"
 
 #. TRANSLATORS: header to a list of packages removed
 #: ../client/pk-console.c:1150
-#, fuzzy
 msgid "Packages to remove"
-msgstr "Serviço do PackageKit"
+msgstr "Pacotes a serem removidos"
 
 #. TRANSLATORS: We didn't find any differences
 #: ../client/pk-console.c:1218
-#, fuzzy, c-format
 msgid "No new packages need to be installed"
-msgstr "O pacote \"%s\" não pôde ser instalado: %s"
+msgstr "Nenhum pacote novo precisa ser instalado"
 
 #. TRANSLATORS: follows a list of packages to install
 #: ../client/pk-console.c:1224
 msgid "To install"
-msgstr ""
+msgstr "Instalando"
 
 #. TRANSLATORS: searching takes some time....
 #: ../client/pk-console.c:1235
 msgid "Searching for package: "
-msgstr ""
+msgstr "Pesquisando pelo pacote:"
 
 #. TRANSLATORS: package was not found -- this is the end of a string ended in ...
 #: ../client/pk-console.c:1239
-#, fuzzy
 msgid "not found."
-msgstr "Diretório não encontrado"
+msgstr "não encontrado."
 
 #. TRANSLATORS: We didn't find any packages to install
 #: ../client/pk-console.c:1250
-#, fuzzy, c-format
 msgid "No packages can be found to install"
-msgstr "Nenhum pacote localizado para o seu sistema"
+msgstr "Nenhum pacote pôde ser localizado para instalação"
 
 #. TRANSLATORS: installing new packages from package list
 #: ../client/pk-console.c:1256
-#, fuzzy
 msgid "Installing packages"
-msgstr "Instalar um pacote"
+msgstr "Instalando pacotes"
 
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
 #: ../client/pk-console.c:1292
 #, c-format
 msgid "This tool could not find the update details for '%s': %s"
-msgstr ""
-"Esta ferramenta não pôde localizar os detalhes de atualização para \"%s\": %s"
+msgstr "Esta ferramenta não pôde localizar os detalhes de atualização para \"%s\": %s"
 
 #. TRANSLATORS: There was an error getting the details about the update for the package. The detailed error follows
 #: ../client/pk-console.c:1300
 #, c-format
 msgid "This tool could not get the update details for '%s': %s"
-msgstr ""
-"Esta ferramenta não pôde obter os detalhes de atualização para \"%s\": %s"
+msgstr "Esta ferramenta não pôde obter os detalhes de atualização para \"%s\": %s"
 
 #. TRANSLATORS: This was an unhandled error, and we don't have _any_ context
 #: ../client/pk-console.c:1346
@@ -309,12 +308,15 @@ msgstr "Interface em Console do PackageKit"
 msgid "Subcommands:"
 msgstr "Subcomandos:"
 
-#: ../client/pk-console.c:1657 ../client/pk-generate-pack.c:183
-#: ../client/pk-monitor.c:114 ../src/pk-main.c:196
+#: ../client/pk-console.c:1657
+#: ../client/pk-generate-pack.c:183
+#: ../client/pk-monitor.c:114
+#: ../src/pk-main.c:190
 msgid "Show extra debugging information"
 msgstr "Mostrar informações extras de depuração"
 
-#: ../client/pk-console.c:1659 ../client/pk-monitor.c:116
+#: ../client/pk-console.c:1659
+#: ../client/pk-monitor.c:116
 msgid "Show the program version and exit"
 msgstr "Mostrar a versão do programa e sair"
 
@@ -340,10 +342,14 @@ msgstr "O filtro especificado era inválido"
 msgid "You need to specify a search type, e.g. name"
 msgstr "Você precisa especificar um tipo de pesquisa, p. ex. nome"
 
-#: ../client/pk-console.c:1792 ../client/pk-console.c:1799
-#: ../client/pk-console.c:1806 ../client/pk-console.c:1813
-#: ../client/pk-console.c:1924 ../client/pk-console.c:1934
-#: ../client/pk-console.c:1941 ../client/pk-console.c:1948
+#: ../client/pk-console.c:1792
+#: ../client/pk-console.c:1799
+#: ../client/pk-console.c:1806
+#: ../client/pk-console.c:1813
+#: ../client/pk-console.c:1924
+#: ../client/pk-console.c:1934
+#: ../client/pk-console.c:1941
+#: ../client/pk-console.c:1948
 msgid "You need to specify a search term"
 msgstr "Você precisa especificar um termo de pesquisa"
 
@@ -364,12 +370,8 @@ msgid "You need to specify a package to remove"
 msgstr "Você precisa especificar um pacote a ser removido"
 
 #: ../client/pk-console.c:1843
-msgid ""
-"You need to specify the destination directory and then the packages to "
-"download"
-msgstr ""
-"Você precisa especificar o diretório de destino e em seguida os pacotes a "
-"serem baixados"
+msgid "You need to specify the destination directory and then the packages to download"
+msgstr "Você precisa especificar o diretório de destino e em seguida os pacotes a serem baixados"
 
 #: ../client/pk-console.c:1848
 msgid "Directory not found"
@@ -383,7 +385,8 @@ msgstr "Você precisa especificar um identificador de licença (eula-id)"
 msgid "You need to specify a package name to resolve"
 msgstr "Você precisa especificar um nome de pacote a ser analisado"
 
-#: ../client/pk-console.c:1879 ../client/pk-console.c:1886
+#: ../client/pk-console.c:1879
+#: ../client/pk-console.c:1886
 msgid "You need to specify a repository name"
 msgstr "Você precisa especificar um nome de repositório"
 
@@ -405,23 +408,20 @@ msgstr "Falha ao obter o último horário"
 
 #: ../client/pk-console.c:1955
 msgid "You need to specify a package to find the details for"
-msgstr ""
-"Você precisa especificar o pacote para o qual você quer localizar os detalhes"
+msgstr "Você precisa especificar o pacote para o qual você quer localizar os detalhes"
 
 #: ../client/pk-console.c:1962
 msgid "You need to specify a package to find the files for"
-msgstr ""
-"Você precisa especificar o pacote para o qual você quer localizar os arquivos"
+msgstr "Você precisa especificar o pacote para o qual você quer localizar os arquivos"
 
 #: ../client/pk-console.c:1969
-#, fuzzy
 msgid "You need to specify a list file to create"
-msgstr "Você precisa especificar um termo de horário"
+msgstr "Você precisa especificar um arquivo de lista a ser criado"
 
-#: ../client/pk-console.c:1977 ../client/pk-console.c:1985
-#, fuzzy
+#: ../client/pk-console.c:1977
+#: ../client/pk-console.c:1985
 msgid "You need to specify a list file to open"
-msgstr "Você precisa especificar um termo de horário"
+msgstr "Você precisa especificar um arquivo de lista a ser aberto"
 
 #. TRANSLATORS: The user tried to use an unsupported option on the command line
 #: ../client/pk-console.c:2038
@@ -483,8 +483,7 @@ msgstr "Ambas opções selecionadas."
 #. TRANSLATORS: This is when file already exists
 #: ../client/pk-generate-pack.c:255
 msgid "A pack with the same name already exists, do you want to overwrite it?"
-msgstr ""
-"Um pacote de serviços com o mesmo nome já existe, você deseja sobrescrevê-lo?"
+msgstr "Um pacote de serviços com o mesmo nome já existe, você deseja sobrescrevê-lo?"
 
 #. TRANSLATORS: This is when the pack was not overwritten
 #: ../client/pk-generate-pack.c:258
@@ -535,7 +534,6 @@ msgstr "Monitor do PackageKit"
 
 #. TRANSLATORS: The package was not found in any software sources
 #: ../client/pk-tools-common.c:114
-#, c-format
 msgid "The package could not be found"
 msgstr "O pacote não pôde ser encontrado"
 
@@ -619,98 +617,6 @@ msgstr "Pacote de serviços do PackageKit"
 msgid "PackageKit Package List"
 msgstr "Lista de Pacotes do PackageKit"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:1
-msgid "Accept EULA"
-msgstr "Aceitar a licença EULA"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:2
-msgid "Authentication is required to accept a EULA"
-msgstr "É necessário autenticar para aceitar uma licença EULA"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:3
-msgid "Authentication is required to change software source parameters"
-msgstr ""
-"É necessário autenticar para alterar os parâmetros das fontes de programas"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:4
-#, fuzzy
-msgid ""
-"Authentication is required to consider a key used for signing packages as "
-"trusted"
-msgstr "É necessário autenticar para recarregar a lista de pacotes"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:5
-#, fuzzy
-msgid "Authentication is required to install a signed package"
-msgstr "É necessário autenticar para instalar um pacote"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:6
-#, fuzzy
-msgid "Authentication is required to install an untrusted package"
-msgstr "É necessário autenticar para instalar um pacote"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:7
-#, fuzzy
-msgid "Authentication is required to refresh the system sources"
-msgstr "É necessário autenticar para recarregar a lista de pacotes"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:8
-msgid "Authentication is required to remove packages"
-msgstr "É necessário autenticar para remover pacotes"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:9
-msgid "Authentication is required to rollback a transaction"
-msgstr "É necessário autenticar para retroceder uma transação"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:10
-#, fuzzy
-msgid ""
-"Authentication is required to set the network proxy used for downloading "
-"packages"
-msgstr "É necessário autenticar para remover pacotes"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:11
-msgid "Authentication is required to update packages"
-msgstr "É necessário autenticar para atualizar os pacotes"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:12
-msgid "Change software source parameters"
-msgstr "Altere parâmetros das fontes de programas"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:13
-msgid "Install local file"
-msgstr "Instalar um arquivo local"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:14
-#, fuzzy
-msgid "Install untrusted local file"
-msgstr "Instalar um arquivo local"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:15
-msgid "Refresh system sources"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:16
-msgid "Remove package"
-msgstr "Remover pacote"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:17
-msgid "Rollback to a previous transaction"
-msgstr "Retroceder para uma transação anterior"
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:18
-msgid "Set network proxy"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:19
-msgid "Trust a key used for signing packages"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:20
-#, fuzzy
-msgid "Update packages"
-msgstr "Atualizar pacote"
-
 #: ../src/pk-main.c:85
 msgid "Startup failed due to security policies on this machine."
 msgstr "A inicialização falhou devido à políticas de segurança desta máquina"
@@ -724,196 +630,208 @@ msgid "The correct user is not launching the executable (usually root)"
 msgstr "O usuário correto não está iniciando o executável (normalmente o root)"
 
 #: ../src/pk-main.c:88
-msgid ""
-"The org.freedesktop.PackageKit.conf file is not installed in the system "
-"directory:"
-msgstr ""
-"O arquivo org.freedesktop.PackageKit.conf não está instalado no diretório do "
-"sistema:"
+msgid "The org.freedesktop.PackageKit.conf file is not installed in the system directory:"
+msgstr "O arquivo org.freedesktop.PackageKit.conf não está instalado no diretório do sistema:"
 
-#: ../src/pk-main.c:192
+#: ../src/pk-main.c:186
 msgid "Packaging backend to use, e.g. dummy"
 msgstr "O backend de empacotamento a ser utilizado, p. ex.: dummy"
 
-#: ../src/pk-main.c:194
+#: ../src/pk-main.c:188
 msgid "Daemonize and detach from the terminal"
 msgstr "Tornar um daemon e separar do terminal"
 
-#: ../src/pk-main.c:198
+#: ../src/pk-main.c:192
 msgid "Disable the idle timer"
 msgstr "Desabilitar o tempo de ociosidade"
 
-#: ../src/pk-main.c:200
+#: ../src/pk-main.c:194
 msgid "Show version and exit"
 msgstr "Mostrar a versão e sair"
 
-#: ../src/pk-main.c:202
+#: ../src/pk-main.c:196
 msgid "Exit after a small delay"
 msgstr "Sair após um pequeno atraso"
 
-#: ../src/pk-main.c:204
+#: ../src/pk-main.c:198
 msgid "Exit after the engine has loaded"
 msgstr "Sair após o carregamento do mecanismo"
 
-#: ../src/pk-main.c:214
+#: ../src/pk-main.c:207
 msgid "PackageKit service"
 msgstr "Serviço do PackageKit"
 
-#: ../src/pk-main.c:250
+#: ../src/pk-main.c:243
 msgid "Cannot connect to the system bus"
 msgstr "Não foi possível conectar ao barramento do sistema"
 
-#: ../src/pk-main.c:296
+#: ../src/pk-main.c:292
 #, c-format
 msgid "Error trying to start: %s\n"
 msgstr "Erro ao tentar iniciar: %s\n"
 
+#~ msgid "Accept EULA"
+#~ msgstr "Aceitar a licença EULA"
+#~ msgid "Authentication is required to accept a EULA"
+#~ msgstr "É necessário autenticar para aceitar uma licença EULA"
+#~ msgid "Authentication is required to change software source parameters"
+#~ msgstr ""
+#~ "É necessário autenticar para alterar os parâmetros das fontes de programas"
+
+#, fuzzy
+#~ msgid ""
+#~ "Authentication is required to consider a key used for signing packages as "
+#~ "trusted"
+#~ msgstr "É necessário autenticar para recarregar a lista de pacotes"
+
+#, fuzzy
+#~ msgid "Authentication is required to install a signed package"
+#~ msgstr "É necessário autenticar para instalar um pacote"
+
+#, fuzzy
+#~ msgid "Authentication is required to install an untrusted package"
+#~ msgstr "É necessário autenticar para instalar um pacote"
+
+#, fuzzy
+#~ msgid "Authentication is required to refresh the system sources"
+#~ msgstr "É necessário autenticar para recarregar a lista de pacotes"
+#~ msgid "Authentication is required to remove packages"
+#~ msgstr "É necessário autenticar para remover pacotes"
+#~ msgid "Authentication is required to rollback a transaction"
+#~ msgstr "É necessário autenticar para retroceder uma transação"
+
+#, fuzzy
+#~ msgid ""
+#~ "Authentication is required to set the network proxy used for downloading "
+#~ "packages"
+#~ msgstr "É necessário autenticar para remover pacotes"
+#~ msgid "Authentication is required to update packages"
+#~ msgstr "É necessário autenticar para atualizar os pacotes"
+#~ msgid "Change software source parameters"
+#~ msgstr "Altere parâmetros das fontes de programas"
+#~ msgid "Install local file"
+#~ msgstr "Instalar um arquivo local"
+
+#, fuzzy
+#~ msgid "Install untrusted local file"
+#~ msgstr "Instalar um arquivo local"
+#~ msgid "Remove package"
+#~ msgstr "Remover pacote"
+#~ msgid "Rollback to a previous transaction"
+#~ msgstr "Retroceder para uma transação anterior"
+
+#, fuzzy
+#~ msgid "Update packages"
+#~ msgstr "Atualizar pacote"
 #~ msgid "Okay to import key?"
 #~ msgstr "A chave pode ser importada?"
-
 #~ msgid "Did not import key"
 #~ msgstr "Não importar a chave"
-
 #~ msgid "Eula required"
 #~ msgstr "Uma Eula é necessária"
-
 #~ msgid "Do you agree?"
 #~ msgstr "Você concorda?"
-
 #~ msgid "Update detail"
 #~ msgstr "Detalhe da atualização"
-
 #~ msgid "A system restart is required"
 #~ msgstr "É necessário reiniciar o sistema"
-
 #~ msgid "A logout and login is required"
 #~ msgstr "É necessário sair da sessão e autenticar novamente"
-
 #~ msgid "An application restart is required"
 #~ msgstr "É necessário reiniciar a aplicação"
-
 #~ msgid "Could not find package to remove"
 #~ msgstr "Não foi possível localizar o pacote a ser removido"
-
 #~ msgid "Cancelled!"
 #~ msgstr "Cancelado!"
-
 #~ msgid "Could not find package to update"
 #~ msgstr "Não foi possível localizar o pacote a ser atualizado"
-
 #~ msgid "Could not find what packages require"
 #~ msgstr "Não foi possível localizar quais pacotes necessitam desse pacote"
-
 #~ msgid "Could not find details for"
 #~ msgstr "Não foi possível localizar os detalhes para"
-
 #~ msgid "Could not find a package match"
 #~ msgstr "Não foi possível encontrar um pacote correspondente"
-
 #~ msgid "failed to download: invalid package_id and/or directory"
 #~ msgstr "falha ao baixar: package_id e/ou diretório inválidos"
-
 #~ msgid "Could not find a valid metadata file"
 #~ msgstr "Não foi possível localizar um arquivo de metadados válido"
-
 #~ msgid "Okay to download the additional packages"
 #~ msgstr "Os pacotes adicionais podem ser baixados"
-
 #~ msgid "You need to specify the pack name and packages to be packed\n"
 #~ msgstr ""
 #~ "Você precisa especificar o nome do pacote de serviços e os pacotes a "
 #~ "serem incluídos\n"
-
 #~ msgid ""
 #~ "Invalid name for the service pack, Specify a name with .servicepack "
 #~ "extension\n"
 #~ msgstr ""
 #~ "Nome inválido para o pacote de serviços. Especifique um nome com a "
 #~ "extensão .servicepack\n"
-
 #~ msgid "Could not set database readonly"
 #~ msgstr "Não foi possível configurar o banco de dados para somente leitura"
-
 #~ msgid "Could not open database: %s"
 #~ msgstr "Não foi possível abrir o banco de dados: %s"
-
 #~ msgid "You probably need to run this program as the root user"
 #~ msgstr "Você provavelmente precisa executar este programa como usuário root"
-
 #~ msgid "<span color='#%06x' underline='single' size='larger'>Run %s</span>"
 #~ msgstr ""
 #~ "<span color='#%06x' underline='single' size='larger'>Executar %s</span>"
-
 #~ msgid "<big>%s</big>"
 #~ msgstr "<big>%s</big>"
-
 #~ msgid ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Run version %s now</span>"
 #~ msgstr ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Executar versão %s agora</span>"
-
 #~ msgid ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Run now</span>"
 #~ msgstr ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Executar agora</span>"
-
 #~ msgid ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Upgrade to version %s</span>"
 #~ msgstr ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Atualizar para a versão %s</span>"
-
 #~ msgid ""
 #~ "<span color='#%06x' underline='single' size='larger'>Install %s Now</span>"
 #~ msgstr ""
 #~ "<span color='#%06x' underline='single' size='larger'>Instalar %s agora</"
 #~ "span>"
-
 #~ msgid ""
 #~ "\n"
 #~ "<small>Version: %s</small>"
 #~ msgstr ""
 #~ "\n"
 #~ "<small>Versão: %s</small>"
-
 #~ msgid ""
 #~ "You need to specify the package to download and the destination directory"
 #~ msgstr ""
 #~ "Você precisa especificar o pacote a ser baixado e o diretório de destino"
-
 #~ msgid ""
 #~ "Could not find a package with that name to install, or package already "
 #~ "installed"
 #~ msgstr ""
 #~ "Não foi possível encontrar um pacote com esse nome para instalar ou o "
 #~ "pacote já está instalado"
-
 #~ msgid "Could not find a package with that name to update"
 #~ msgstr ""
 #~ "Não foi possível encontrar um pacote com esse nome para ser atualizado"
-
 #~ msgid "Authentication is required to install a local file"
 #~ msgstr "É necessário autenticar para instalar um arquivo local"
-
 #~ msgid "Authentication is required to install a security signature"
 #~ msgstr "É necessário autenticar para instalar uma assinatura de segurança"
-
 #~ msgid "Authentication is required to update all packages"
 #~ msgstr "É necessário autenticar para atualizar todos os pacotes"
-
 #~ msgid "Install security signature"
 #~ msgstr "Instalar uma assinatura de segurança"
-
 #~ msgid "Refresh package lists"
 #~ msgstr "Recarregar listas de pacotes"
-
 #~ msgid "Update all packages"
 #~ msgstr "Atualizar todos os pacotes"
-
 #~ msgid "Could not find a description for this package"
 #~ msgstr "Não foi possível encontrar uma descrição para esse pacote"
+
commit bcf4c8b2d58e79ce89cbea30ad8920038199d2d4
Author: Fabian Affolter <fabian at bernewireless.net>
Date:   Thu Nov 20 11:47:44 2008 +0000

    Updated German translation
    
    Transmitted-via: Transifex (translate.fedoraproject.org)

diff --git a/po/de.po b/po/de.po
index 957ce23..fa640e2 100644
--- a/po/de.po
+++ b/po/de.po
@@ -14,8 +14,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: packagekit.master.de\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-11-19 16:26+0000\n"
-"PO-Revision-Date: 2008-11-07 11:53+0100\n"
+"POT-Creation-Date: 2008-11-20 01:35+0000\n"
+"PO-Revision-Date: 2008-11-20 12:45+0100\n"
 "Last-Translator: Fabian Affolter <fab at fedoraproject.org>\n"
 "Language-Team: German <i18 at redhat.com>\n"
 "MIME-Version: 1.0\n"
@@ -55,16 +55,20 @@ msgid "The package '%s' could not be installed: %s"
 msgstr "Das Paket '%s' konnte nicht installiert werden: %s"
 
 #. TRANSLATORS: There was a programming error that shouldn't happen. The detailed error follows
-#: ../client/pk-console.c:628 ../client/pk-console.c:655
-#: ../client/pk-console.c:751 ../client/pk-console.c:868
-#: ../client/pk-tools-common.c:61 ../client/pk-tools-common.c:79
+#: ../client/pk-console.c:628
+#: ../client/pk-console.c:655
+#: ../client/pk-console.c:751
+#: ../client/pk-console.c:868
+#: ../client/pk-tools-common.c:61
+#: ../client/pk-tools-common.c:79
 #: ../client/pk-tools-common.c:86
 #, c-format
 msgid "Internal error: %s"
 msgstr "Interner Fehler: %s"
 
 #. TRANSLATORS: There was an error installing the packages. The detailed error follows
-#: ../client/pk-console.c:636 ../client/pk-console.c:1263
+#: ../client/pk-console.c:636
+#: ../client/pk-console.c:1263
 #, c-format
 msgid "This tool could not install the packages: %s"
 msgstr "Konnte folgende Pakete nicht installieren: %s"
@@ -82,7 +86,8 @@ msgid "This tool could not remove '%s': %s"
 msgstr "Konnte nicht entfernen '%s': %s"
 
 #. TRANSLATORS: There was an error removing the packages. The detailed error follows
-#: ../client/pk-console.c:742 ../client/pk-console.c:813
+#: ../client/pk-console.c:742
+#: ../client/pk-console.c:813
 #, c-format
 msgid "This tool could not remove the packages: %s"
 msgstr "Konnte folgende Pakete nicht entfernen: %s"
@@ -121,25 +126,29 @@ msgid "This tool could not download the packages: %s"
 msgstr "Konnte folgende Pakete nicht herunterladen: %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:903 ../client/pk-console.c:912
+#: ../client/pk-console.c:903
+#: ../client/pk-console.c:912
 #, c-format
 msgid "This tool could not update '%s': %s"
 msgstr "Konnte nicht aktualisieren '%s': %s"
 
 #. TRANSLATORS: There was an error getting the list of files for the package. The detailed error follows
-#: ../client/pk-console.c:934 ../client/pk-console.c:942
+#: ../client/pk-console.c:934
+#: ../client/pk-console.c:942
 #, c-format
 msgid "This tool could not get the requirements for '%s': %s"
 msgstr "Konnte die Vorraussetzungen nicht bekommen für '%s': %s"
 
 #. TRANSLATORS: There was an error getting the dependencies for the package. The detailed error follows
-#: ../client/pk-console.c:964 ../client/pk-console.c:972
+#: ../client/pk-console.c:964
+#: ../client/pk-console.c:972
 #, c-format
 msgid "This tool could not get the dependencies for '%s': %s"
 msgstr "Es konnten keine Abhängigkeiten für '%s' gezogen werden: %s"
 
 #. TRANSLATORS: There was an error getting the details about the package. The detailed error follows
-#: ../client/pk-console.c:994 ../client/pk-console.c:1002
+#: ../client/pk-console.c:994
+#: ../client/pk-console.c:1002
 #, c-format
 msgid "This tool could not get package details for '%s': %s"
 msgstr "Konnte die Paketdetails nicht abrufen für '%s': %s"
@@ -160,79 +169,74 @@ msgstr "Die Datei-Liste für '%s konnte nicht erstellt werden ': %s"
 #: ../client/pk-console.c:1054
 #, c-format
 msgid "File already exists: %s"
-msgstr ""
+msgstr "Datei bereits vorhanden: %s"
 
 #. TRANSLATORS: follows a list of packages to install
-#: ../client/pk-console.c:1059 ../client/pk-console.c:1115
+#: ../client/pk-console.c:1059
+#: ../client/pk-console.c:1115
 #: ../client/pk-console.c:1190
-#, fuzzy
 msgid "Getting package list"
-msgstr "Bekomme Paket-Informationen..."
+msgstr "Beziehe Paket-Liste"
 
 #. TRANSLATORS: There was an error getting the list of packages. The detailed error follows
-#: ../client/pk-console.c:1065 ../client/pk-console.c:1121
+#: ../client/pk-console.c:1065
+#: ../client/pk-console.c:1121
 #: ../client/pk-console.c:1196
-#, fuzzy, c-format
+#, c-format
 msgid "This tool could not get package list: %s"
-msgstr "Konnte folgende Pakete nicht entfernen: %s"
+msgstr "Konnte folgende Pakete nicht beziehen: %s"
 
 #. TRANSLATORS: There was an error saving the list
 #: ../client/pk-console.c:1076
-#, fuzzy, c-format
 msgid "Failed to save to disk"
-msgstr "Die letzte Zeit konnte nicht herausgefunden werden"
+msgstr "Speicher auf die Festplatte fehlgeschlagen"
 
 #. TRANSLATORS: There was an error getting the list. The filename follows
-#: ../client/pk-console.c:1110 ../client/pk-console.c:1185
+#: ../client/pk-console.c:1110
+#: ../client/pk-console.c:1185
 #, c-format
 msgid "File does not exist: %s"
-msgstr ""
+msgstr "Datei nicht vorhanden: %s"
 
 #. TRANSLATORS: header to a list of packages newly added
 #: ../client/pk-console.c:1142
-#, fuzzy
 msgid "Packages to add"
-msgstr "PackageKit-Monitor"
+msgstr "Paket zum Hinzufügen"
 
 #. TRANSLATORS: header to a list of packages removed
 #: ../client/pk-console.c:1150
-#, fuzzy
 msgid "Packages to remove"
-msgstr "PackageKit-Dienst"
+msgstr "Pakete zum Entfernen"
 
 #. TRANSLATORS: We didn't find any differences
 #: ../client/pk-console.c:1218
-#, fuzzy, c-format
 msgid "No new packages need to be installed"
-msgstr "Das Paket '%s' konnte nicht installiert werden: %s"
+msgstr "Keine neuen Pakete müssen installiert werden"
 
 #. TRANSLATORS: follows a list of packages to install
 #: ../client/pk-console.c:1224
 msgid "To install"
-msgstr ""
+msgstr "ZUm Installieren"
 
 #. TRANSLATORS: searching takes some time....
 #: ../client/pk-console.c:1235
 msgid "Searching for package: "
-msgstr ""
+msgstr "Suche nach Paket:"
 
 #. TRANSLATORS: package was not found -- this is the end of a string ended in ...
 #: ../client/pk-console.c:1239
-#, fuzzy
 msgid "not found."
-msgstr "Verzeichnis nicht gefunden"
+msgstr "nicht gefunden."
 
 #. TRANSLATORS: We didn't find any packages to install
 #: ../client/pk-console.c:1250
-#, fuzzy, c-format
 msgid "No packages can be found to install"
-msgstr "Keine Pakete für Ihr System gefunden"
+msgstr "Keine Pakete zum Installieren gefunden"
 
 #. TRANSLATORS: installing new packages from package list
 #: ../client/pk-console.c:1256
-#, fuzzy
 msgid "Installing packages"
-msgstr "Lade Pakete herunter"
+msgstr "Installiere Pakete"
 
 #. TRANSLATORS: The package name was not found in any software sources. The detailed error follows
 #: ../client/pk-console.c:1292
@@ -310,12 +314,15 @@ msgstr "PackageKit-Konsolen-Interface"
 msgid "Subcommands:"
 msgstr "Unterbefehle:"
 
-#: ../client/pk-console.c:1657 ../client/pk-generate-pack.c:183
-#: ../client/pk-monitor.c:114 ../src/pk-main.c:196
+#: ../client/pk-console.c:1657
+#: ../client/pk-generate-pack.c:183
+#: ../client/pk-monitor.c:114
+#: ../src/pk-main.c:190
 msgid "Show extra debugging information"
 msgstr "Zeige extra Debug-Informationen"
 
-#: ../client/pk-console.c:1659 ../client/pk-monitor.c:116
+#: ../client/pk-console.c:1659
+#: ../client/pk-monitor.c:116
 msgid "Show the program version and exit"
 msgstr "Zeige Programm-Version und beende"
 
@@ -335,16 +342,20 @@ msgstr "Dieses Werkzeug konnte nicht zum System-DBUS verbinden."
 #. TRANSLATORS: The user specified an incorrect filter
 #: ../client/pk-console.c:1770
 msgid "The filter specified was invalid"
-msgstr ""
+msgstr "Der angegebene Filter war ungültig"
 
 #: ../client/pk-console.c:1787
 msgid "You need to specify a search type, e.g. name"
 msgstr "Sie müssen einen Suchtyp angeben, z.B. einen Namen"
 
-#: ../client/pk-console.c:1792 ../client/pk-console.c:1799
-#: ../client/pk-console.c:1806 ../client/pk-console.c:1813
-#: ../client/pk-console.c:1924 ../client/pk-console.c:1934
-#: ../client/pk-console.c:1941 ../client/pk-console.c:1948
+#: ../client/pk-console.c:1792
+#: ../client/pk-console.c:1799
+#: ../client/pk-console.c:1806
+#: ../client/pk-console.c:1813
+#: ../client/pk-console.c:1924
+#: ../client/pk-console.c:1934
+#: ../client/pk-console.c:1941
+#: ../client/pk-console.c:1948
 msgid "You need to specify a search term"
 msgstr "Sie müssen einen Suchwert angeben"
 
@@ -365,11 +376,8 @@ msgid "You need to specify a package to remove"
 msgstr "Sie müssen ein Paket zum Löschen angeben"
 
 #: ../client/pk-console.c:1843
-msgid ""
-"You need to specify the destination directory and then the packages to "
-"download"
-msgstr ""
-"Sie müssen ein Zielverzeichnis und dann die Pakete zum herunterladen angeben"
+msgid "You need to specify the destination directory and then the packages to download"
+msgstr "Sie müssen ein Zielverzeichnis und dann die Pakete zum herunterladen angeben"
 
 #: ../client/pk-console.c:1848
 msgid "Directory not found"
@@ -383,7 +391,8 @@ msgstr "Sie müssen eine Lizenz (eula-id) angeben"
 msgid "You need to specify a package name to resolve"
 msgstr "Sie müssen einen Paketnamen zum Auflösen angeben"
 
-#: ../client/pk-console.c:1879 ../client/pk-console.c:1886
+#: ../client/pk-console.c:1879
+#: ../client/pk-console.c:1886
 msgid "You need to specify a repository name"
 msgstr "Sie müssen einen Repository-Namen angeben"
 
@@ -412,14 +421,13 @@ msgid "You need to specify a package to find the files for"
 msgstr "Sie müssen ein Paket, für das nach Dateien gesucht wird, angeben"
 
 #: ../client/pk-console.c:1969
-#, fuzzy
 msgid "You need to specify a list file to create"
-msgstr "Sie müssen einen Zeit-Begriff angeben"
+msgstr "Sie müssen eine Dateiliste zum Erzeugen angeben"
 
-#: ../client/pk-console.c:1977 ../client/pk-console.c:1985
-#, fuzzy
+#: ../client/pk-console.c:1977
+#: ../client/pk-console.c:1985
 msgid "You need to specify a list file to open"
-msgstr "Sie müssen einen Zeit-Begriff angeben"
+msgstr "Sie müssen eine Dateiliste zum Öffnen angeben"
 
 #. TRANSLATORS: The user tried to use an unsupported option on the command line
 #: ../client/pk-console.c:2038
@@ -458,11 +466,12 @@ msgstr "Setze den Dateiname der Abhängigkeiten, die ausgeschlossen werden"
 
 #: ../client/pk-generate-pack.c:187
 msgid "The output directory (the current directory is used if ommitted)"
-msgstr ""
+msgstr "Das Ausgabe-Verzeichnis ()"
 
 #: ../client/pk-generate-pack.c:189
+#, fuzzy
 msgid "The package to be put into the service pack"
-msgstr ""
+msgstr "Das Paket in das Service-Pack integrieren"
 
 #: ../client/pk-generate-pack.c:191
 msgid "Put all updates available in the service pack"
@@ -481,9 +490,7 @@ msgstr "Beide Optionen ausgewählt."
 #. TRANSLATORS: This is when file already exists
 #: ../client/pk-generate-pack.c:255
 msgid "A pack with the same name already exists, do you want to overwrite it?"
-msgstr ""
-"Ein Pack mit dem selben Namen existiert bereits, möchten Sie es "
-"überschreiben?"
+msgstr "Ein Pack mit dem selben Namen existiert bereits, möchten Sie es überschreiben?"
 
 #. TRANSLATORS: This is when the pack was not overwritten
 #: ../client/pk-generate-pack.c:258
@@ -534,7 +541,6 @@ msgstr "PackageKit-Monitor"
 
 #. TRANSLATORS: The package was not found in any software sources
 #: ../client/pk-tools-common.c:114
-#, c-format
 msgid "The package could not be found"
 msgstr "Das Paket konnte nicht gefunden werden"
 
@@ -618,90 +624,6 @@ msgstr "PackageKit Service-Pack"
 msgid "PackageKit Package List"
 msgstr "PackageKit-Paketliste"
 
-#: ../policy/org.freedesktop.packagekit.policy.in.h:1
-msgid "Accept EULA"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:2
-msgid "Authentication is required to accept a EULA"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:3
-msgid "Authentication is required to change software source parameters"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:4
-msgid ""
-"Authentication is required to consider a key used for signing packages as "
-"trusted"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:5
-msgid "Authentication is required to install a signed package"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:6
-msgid "Authentication is required to install an untrusted package"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:7
-msgid "Authentication is required to refresh the system sources"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:8
-msgid "Authentication is required to remove packages"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:9
-msgid "Authentication is required to rollback a transaction"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:10
-msgid ""
-"Authentication is required to set the network proxy used for downloading "
-"packages"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:11
-msgid "Authentication is required to update packages"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:12
-msgid "Change software source parameters"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:13
-msgid "Install local file"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:14
-msgid "Install untrusted local file"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:15
-msgid "Refresh system sources"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:16
-msgid "Remove package"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:17
-msgid "Rollback to a previous transaction"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:18
-msgid "Set network proxy"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:19
-msgid "Trust a key used for signing packages"
-msgstr ""
-
-#: ../policy/org.freedesktop.packagekit.policy.in.h:20
-msgid "Update packages"
-msgstr ""
-
 #: ../src/pk-main.c:85
 msgid "Startup failed due to security policies on this machine."
 msgstr "Startfehler wegen Sicherheitseinstellungen auf diesem Rechner"
@@ -712,135 +634,106 @@ msgstr "Dies kann aus zwei Gründen passieren:"
 
 #: ../src/pk-main.c:87
 msgid "The correct user is not launching the executable (usually root)"
-msgstr ""
-"Der korrekte Benutzer führt nicht das Programm aus (normalerweise root)"
+msgstr "Der korrekte Benutzer führt nicht das Programm aus (normalerweise root)"
 
 #: ../src/pk-main.c:88
-msgid ""
-"The org.freedesktop.PackageKit.conf file is not installed in the system "
-"directory:"
-msgstr ""
-"Die org.freedesktop.PackageKit.conf-Datei ist nicht auf Ihrem Rechner im "
-"system-Verzeichnis:"
+msgid "The org.freedesktop.PackageKit.conf file is not installed in the system directory:"
+msgstr "Die org.freedesktop.PackageKit.conf-Datei ist nicht auf Ihrem Rechner im system-Verzeichnis:"
 
-#: ../src/pk-main.c:192
+#: ../src/pk-main.c:186
 msgid "Packaging backend to use, e.g. dummy"
 msgstr "Verwende Packaging-Backend z.B. dummy"
 
-#: ../src/pk-main.c:194
+#: ../src/pk-main.c:188
 msgid "Daemonize and detach from the terminal"
 msgstr "Dämonisiere und löse vom Terminal ab"
 
-#: ../src/pk-main.c:198
+#: ../src/pk-main.c:192
 msgid "Disable the idle timer"
 msgstr "Deaktiviere Idle-Timer"
 
-#: ../src/pk-main.c:200
+#: ../src/pk-main.c:194
 msgid "Show version and exit"
 msgstr "Zeige Version und beende"
 
-#: ../src/pk-main.c:202
+#: ../src/pk-main.c:196
 msgid "Exit after a small delay"
 msgstr "Beende nach kurzer Verzögerung"
 
-#: ../src/pk-main.c:204
+#: ../src/pk-main.c:198
 #, fuzzy
 msgid "Exit after the engine has loaded"
 msgstr "Beende, nachdem die Kern geladen wurde"
 
-#: ../src/pk-main.c:214
+#: ../src/pk-main.c:207
 msgid "PackageKit service"
 msgstr "PackageKit-Dienst"
 
-#: ../src/pk-main.c:250
+#: ../src/pk-main.c:243
 msgid "Cannot connect to the system bus"
 msgstr "Konnte nicht zum System-Bus verbinden"
 
-#: ../src/pk-main.c:296
+#: ../src/pk-main.c:292
 #, c-format
 msgid "Error trying to start: %s\n"
 msgstr "Fehler beim Starten von: %s\n"
 
 #~ msgid "Update detail"
 #~ msgstr "Details werden aktualisiert"
-
 #~ msgid "A system restart is required"
 #~ msgstr "Ein Neustart ist erforderlich"
-
 #~ msgid "A logout and login is required"
 #~ msgstr "Ein Aus- und Einloggen ist erforderlich"
-
 #~ msgid "An application restart is required"
 #~ msgstr "Ein Programm-Neustart wird benötigt"
-
 #~ msgid "Could not find package to remove"
 #~ msgstr "Packet zum Löschen konnte nicht gefunden werden"
-
 #~ msgid "Cancelled!"
 #~ msgstr "Abbruch!"
-
 #~ msgid "Could not find package to download"
 #~ msgstr "Das Packet zum Herunterladen konnte nicht gefunden werden"
-
 #~ msgid "Could not find package to update"
 #~ msgstr "Das Packet zum Aktualisieren konnte nicht gefunden werden"
-
 #~ msgid "Could not find what packages require"
 #~ msgstr "Konnte nicht herausfinden, was die Packete benötigen"
-
 #~ msgid "Could not find details for"
 #~ msgstr "Konnte keine Details finden für"
-
 #~ msgid "Okay to import key?"
 #~ msgstr "Soll der Schlüssel importiert werden?"
-
 #~ msgid "Did not import key"
 #~ msgstr "Schlüssel wurde nicht importiert"
-
 #~ msgid "Did not agree to licence, task will fail"
 #~ msgstr "Sie stimmten der Lizenz nicht zu, die Aufgabe wird fehlschlagen"
-
 #~ msgid "Could not find a package match"
 #~ msgstr "Es konnte kein Packet gefunden werden"
-
 #~ msgid "failed to download: invalid package_id and/or directory"
 #~ msgstr ""
 #~ "Herunterladen fehlgeschlagen: Ungültige package_id und/oder ungültiges "
 #~ "Verzeichnis"
-
 #~ msgid "Could not find a valid metadata file"
 #~ msgstr "Eine gültige Metadata–Datei konnte nicht gefunden werden"
-
 #~ msgid "Okay to download the additional packages"
 #~ msgstr "Möchten Sie die zusätzlichen Packete herunterladen"
-
 #~ msgid "You need to specify the pack name and packages to be packed\n"
 #~ msgstr "Sie müssen einen Packnamen und Packete zum Packen angeben\n"
-
 #~ msgid ""
 #~ "Invalid name for the service pack, Specify a name with .servicepack "
 #~ "extension\n"
 #~ msgstr ""
 #~ "Ungültiger Name für ein Service Pack, geben Sie einen Namen an mit ."
 #~ "servicepack als Endung\n"
-
 #~ msgid "Could not set database readonly"
 #~ msgstr "Datenbank konnte nicht nur-lesbar gesetzt werden"
-
 #~ msgid "Could not open database: %s"
 #~ msgstr "Datenbank %s konnte nicht geöffnet werden"
-
 #~ msgid "You probably need to run this program as the root user"
 #~ msgstr "Sie sollten dieses Programm vermutlich als Benutzer root ausführen"
-
 #~ msgid "<span color='#%06x' underline='single' size='larger'>Run %s</span>"
 #~ msgstr ""
 #~ "<span color='#%06x' underline='single' size='larger'>%s wird ausgeführt</"
 #~ "span>"
-
 #~ msgid "<big>%s</big>"
 #~ msgstr "<big>%s</big>"
-
 #~ msgid ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Run version %s now</span>"
@@ -848,30 +741,27 @@ msgstr "Fehler beim Starten von: %s\n"
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Version %s wird jetzt ausgeführt</"
 #~ "span>"
-
 #~ msgid ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Run now</span>"
 #~ msgstr ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Wird jetzt ausgeführt</span>"
-
 #~ msgid ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Upgrade to version %s</span>"
 #~ msgstr ""
 #~ "\n"
 #~ "<span color='#%06x' underline='single'>Aktualisiere zu Version %s</span>"
-
 #~ msgid ""
 #~ "<span color='#%06x' underline='single' size='larger'>Install %s Now</span>"
 #~ msgstr ""
 #~ "<span color='#%06x' underline='single' size='larger'>%s wird jetzt "
 #~ "installiert</span>"
-
 #~ msgid ""
 #~ "\n"
 #~ "<small>Version: %s</small>"
 #~ msgstr ""
 #~ "\n"
 #~ "<small>Version: %s</small>"
+
commit c87ac69860ef08cfbb5630f4d0b15602cb4806e6
Author: Richard Hughes <richard at hughsie.com>
Date:   Thu Nov 20 10:25:44 2008 +0000

    yum: don't setup the repo list in GetRepoList, this method needs to be fast and doesn't change anything

diff --git a/backends/yum/yumBackend.py b/backends/yum/yumBackend.py
index cde2581..365dc30 100755
--- a/backends/yum/yumBackend.py
+++ b/backends/yum/yumBackend.py
@@ -1798,7 +1798,7 @@ class PackageKitYumBackend(PackageKitBaseBackend, PackagekitPackage):
         '''
         Implement the {backend}-get-repo-list functionality
         '''
-        self._check_init()
+        self._check_init(repo_setup=False)
         self.yumbase.conf.cache = 0 # Allow new files
         self.status(STATUS_INFO)
 
commit 0fea7a87ac3eac5df8c4ee7bab48bbe3d2400104
Merge: d1a0d0c... 96e8125...
Author: sebastian Heinlein <devel at glatzor.de>
Date:   Thu Nov 20 08:32:54 2008 +0100

    Merge branch 'master' of git+ssh://glatzor@git.packagekit.org/srv/git/PackageKit

commit d1a0d0c05566db8688860bfe1cd2f76fbf608eb7
Author: sebastian Heinlein <devel at glatzor.de>
Date:   Sun Nov 16 22:02:16 2008 +0100

    Python client: make filter optional - this introduces a difference to the DBus methods, but makes the api more clear.

diff --git a/lib/python/packagekit/client.py b/lib/python/packagekit/client.py
index 4c8f241..6255dd3 100644
--- a/lib/python/packagekit/client.py
+++ b/lib/python/packagekit/client.py
@@ -226,7 +226,7 @@ class PackageKitClient:
             # not initialized, or daemon timed out
             pass
 
-    def resolve(self, filters, names, exit_handler=None):
+    def resolve(self, names, filters=FILTER_NONE, exit_handler=None):
         '''Resolve package names'''
         names_list = self._to_list(names)
         return self._run_transaction("Resolve", [filters, names_list],
@@ -238,22 +238,22 @@ class PackageKitClient:
         return self._run_transaction("GetDetails", [package_ids],
                                      exit_handler)
 
-    def search_name(self, filters, search, exit_handler=None):
+    def search_name(self, search, filters=FILTER_NONE, exit_handler=None):
         '''Search for packages by name'''
         return self._run_transaction("SearchName", [filters, search],
                                      exit_handler)
 
-    def search_group(self, filters, search, exit_handler=None):
+    def search_group(self, search, filters=FILTER_NONE, exit_handler=None):
         '''Search for packages by their group'''
         return self._run_transaction("SearchGroup", [filters, search], 
                                      exit_handler)
 
-    def search_details(self, filters, search, exit_handler=None):
+    def search_details(self, search, filters=FILTER_NONE, exit_handler=None):
         '''Search for packages by their details'''
         return self._run_transaction("SearchDetails", [filters], 
                                      exit_handler)
 
-    def search_file(self, filters, search, exit_handler=None):
+    def search_file(self, search, filters=FILTER_NONE, exit_handler=None):
         '''Search for packages by their files'''
         return self._run_transaction("SearchFile", [filters], 
                                      exit_handler)
@@ -326,7 +326,7 @@ class PackageKitClient:
         package_ids = self._to_package_id_list(packages)
         return self._run_transaction("DownloadPackages", [package_ids], exit_handler)
 
-    def get_depends(self, filters, packages, recursive=False, 
+    def get_depends(self, packages, filters=FILTER_NONE, recursive=False, 
                     exit_handler=None):
         '''Search for dependencies for packages'''
         package_ids = self._to_package_id_list(packages)
@@ -339,7 +339,7 @@ class PackageKitClient:
         package_ids = self._to_package_id_list(packages)
         return self._run_transaction("GetFiles", [package_ids], exit_handler)
 
-    def get_requires(self, filters, packages, recursive=False, 
+    def get_requires(self, packages, filters=FILTER_NONE, recursive=False, 
                      exit_handler=None):
         '''Search for requirements for packages'''
         package_ids = self._to_package_id_list(packages)
commit 977b32dfe871147ed6ea940b1823aa8ebda9a31d
Author: sebastian Heinlein <devel at glatzor.de>
Date:   Sun Nov 16 21:59:21 2008 +0100

    Python client: collect messages

diff --git a/lib/python/packagekit/client.py b/lib/python/packagekit/client.py
index d6af446..4c8f241 100644
--- a/lib/python/packagekit/client.py
+++ b/lib/python/packagekit/client.py
@@ -67,6 +67,7 @@ class PackageKitTransaction:
         self._allow_cancel = False
         self._method = None
         self._exit_handler = None
+        self.messages = []
         self.result = []
         # Connect the signal handlers to the DBus iface
         self._iface = iface
@@ -79,6 +80,7 @@ class PackageKitTransaction:
                         ('Category', self._on_category),
                         ('UpdateDetail', self._on_update_detail),
                         ('DistroUpgrade', self._on_distro_upgrade),
+                        ('Message', self._on_message),
                         ('RepoDetail', self._on_repo_detail)]:
             self._iface.connect_to_signal(sig, cb)
         self._main_loop = gobject.MainLoop()
@@ -135,6 +137,10 @@ class PackageKitTransaction:
         self._error_code = code
         self._error_details = details
 
+    def _on_message(self, code, details):
+        '''Callback for Message signal'''
+        self.messages.append(PackageKitMessage(code, details))
+
     def _on_finished(self, exit, runtime):
         '''Callback for Finished signal'''
         self._exit = exit
diff --git a/lib/python/packagekit/misc.py b/lib/python/packagekit/misc.py
index 5ba0b59..a2c511a 100644
--- a/lib/python/packagekit/misc.py
+++ b/lib/python/packagekit/misc.py
@@ -120,3 +120,8 @@ class PackageKitCategory:
         self.summary = _to_unicode(summary)
         self.icon = str(icon)
 
+class PackageKitMessage:
+    '''container class from values from the Message signal'''
+    def __init__(self, code, details):
+        self.code = code
+        self.details = details


More information about the PackageKit-commit mailing list