[gnome-software/wip/hughsie/fwupd] Support installing .cab files
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software/wip/hughsie/fwupd] Support installing .cab files
- Date: Wed, 11 Mar 2015 20:48:24 +0000 (UTC)
commit 30467bf0606bd5e184df6043f7c692afb8bd5ab7
Author: Richard Hughes <richard hughsie com>
Date: Wed Mar 11 20:47:20 2015 +0000
Support installing .cab files
src/plugins/gs-plugin-fwupd.c | 75 +++++++++++++++++++++++++++++++++++------
1 files changed, 64 insertions(+), 11 deletions(-)
---
diff --git a/src/plugins/gs-plugin-fwupd.c b/src/plugins/gs-plugin-fwupd.c
index 4d4d549..2cfe27d 100644
--- a/src/plugins/gs-plugin-fwupd.c
+++ b/src/plugins/gs-plugin-fwupd.c
@@ -445,18 +445,17 @@ gs_plugin_refresh (GsPlugin *plugin,
}
/**
- * gs_plugin_app_upgrade:
+ * gs_plugin_fwupd_upgrade:
*/
-gboolean
-gs_plugin_app_upgrade (GsPlugin *plugin,
- GsApp *app,
- GCancellable *cancellable,
- GError **error)
+static gboolean
+gs_plugin_fwupd_upgrade (GsPlugin *plugin,
+ const gchar *filename,
+ const gchar *device_id,
+ GCancellable *cancellable,
+ GError **error)
{
GVariant *body;
GVariantBuilder builder;
- const gchar *device_id;
- const gchar *filename;
gint fd;
gint retval;
_cleanup_object_unref_ GDBusConnection *conn = NULL;
@@ -472,7 +471,6 @@ gs_plugin_app_upgrade (GsPlugin *plugin,
g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY);
g_variant_builder_add (&builder, "{sv}",
"reason", g_variant_new_string ("system-update"));
- filename = gs_app_get_source_id_default (app);
g_variant_builder_add (&builder, "{sv}",
"filename", g_variant_new_string (filename));
g_variant_builder_add (&builder, "{sv}",
@@ -503,7 +501,6 @@ gs_plugin_app_upgrade (GsPlugin *plugin,
close (fd);
/* send message */
- device_id = gs_app_get_metadata_item (app, "fwupd::DeviceID");
body = g_variant_new ("(sha{sv})", device_id, fd > -1 ? 0 : -1, &builder);
g_dbus_message_set_body (request, body);
message = g_dbus_connection_send_message_with_reply_sync (conn,
@@ -526,6 +523,62 @@ gs_plugin_app_upgrade (GsPlugin *plugin,
}
/**
+ * gs_plugin_app_upgrade:
+ */
+gboolean
+gs_plugin_app_upgrade (GsPlugin *plugin,
+ GsApp *app,
+ GCancellable *cancellable,
+ GError **error)
+{
+ const gchar *device_id;
+ const gchar *filename;
+
+ filename = gs_app_get_source_id_default (app);
+ device_id = gs_app_get_metadata_item (app, "fwupd::DeviceID");
+ if (filename == NULL || device_id == NULL) {
+ g_set_error (error,
+ GS_PLUGIN_ERROR,
+ GS_PLUGIN_ERROR_FAILED,
+ "not enough data for fwupd %s:%s",
+ filename, device_id);
+ return FALSE;
+ }
+ return gs_plugin_fwupd_upgrade (plugin,
+ filename,
+ device_id,
+ cancellable,
+ error);
+}
+
+/**
+ * gs_plugin_app_install:
+ */
+gboolean
+gs_plugin_app_install (GsPlugin *plugin,
+ GsApp *app,
+ GCancellable *cancellable,
+ GError **error)
+{
+ const gchar *filename;
+
+ filename = gs_app_get_source_id_default (app);
+ if (filename == NULL) {
+ g_set_error (error,
+ GS_PLUGIN_ERROR,
+ GS_PLUGIN_ERROR_FAILED,
+ "not enough data for fwupd %s",
+ filename);
+ return FALSE;
+ }
+ return gs_plugin_fwupd_upgrade (plugin,
+ filename,
+ "*",
+ cancellable,
+ error);
+}
+
+/**
* gs_plugin_fwupd_content_type_matches:
*/
static gboolean
@@ -656,9 +709,9 @@ gs_plugin_filename_to_app (GsPlugin *plugin,
gs_app_set_management_plugin (app, "fwupd");
gs_app_set_kind (app, GS_APP_KIND_PACKAGE);
gs_app_set_state (app, AS_APP_STATE_AVAILABLE_LOCAL);
+ gs_app_add_source_id (app, filename);
// gs_app_set_description (app, GS_APP_QUALITY_LOWEST, "FIXME"); //FIXME
// gs_app_add_source (app, "XXX"); //FIXME
-// gs_app_add_source_id (app, "YYY"); //FIXME
// gs_app_set_url (app, AS_URL_KIND_HOMEPAGE, "http://fixme.com"); //FIXME
// gs_app_set_size (app, 999);
// gs_app_set_licence (app, "NONFREE");
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]