summaryrefslogtreecommitdiff
path: root/libappstream-glib/as-app-inf.c
diff options
context:
space:
mode:
authorRichard Hughes <richard@hughsie.com>2015-10-07 13:51:04 +0100
committerRichard Hughes <richard@hughsie.com>2015-10-07 17:38:51 +0100
commitac8f547055288a271a7f59b6353f0dde3f4775e9 (patch)
tree2990bf420923f367cbe7bb10dd9d952869a8749b /libappstream-glib/as-app-inf.c
parent34f4fc64b2b15b5bc81f0b4cb7fb628b67bc9ff1 (diff)
downloadappstream-glib-ac8f547055288a271a7f59b6353f0dde3f4775e9.tar.gz
Add the ability to parse .cab archives as AppStream stores
This allows us to store multiple components inside an archive.
Diffstat (limited to 'libappstream-glib/as-app-inf.c')
-rw-r--r--libappstream-glib/as-app-inf.c22
1 files changed, 10 insertions, 12 deletions
diff --git a/libappstream-glib/as-app-inf.c b/libappstream-glib/as-app-inf.c
index e3824fe..f4b3c43 100644
--- a/libappstream-glib/as-app-inf.c
+++ b/libappstream-glib/as-app-inf.c
@@ -72,6 +72,7 @@ as_app_parse_inf_file (AsApp *app,
g_autofree gchar *vendor = NULL;
g_autofree gchar *version = NULL;
g_autoptr(GKeyFile) kf = NULL;
+ g_autoptr(AsChecksum) csum = NULL;
g_autoptr(AsIcon) icon = NULL;
g_autoptr(AsProvide) provide = NULL;
g_autoptr(AsRelease) release = NULL;
@@ -103,7 +104,7 @@ as_app_parse_inf_file (AsApp *app,
AS_APP_ERROR_INVALID_TYPE,
"Driver class is '%s', not 'Firmware'", class);
return FALSE;
- }
+ }
as_app_set_id_kind (app, AS_ID_KIND_FIRMWARE);
/* get the Class GUID */
@@ -208,20 +209,17 @@ as_app_parse_inf_file (AsApp *app,
"no SourceDisksFiles or Firmware_CopyFiles");
return FALSE;
}
- as_app_add_metadata (app, "FirmwareBasename", firmware_basename);
-
- /* optional */
- catalog_basename = g_key_file_get_string (kf, "Version", "CatalogFile", NULL);
- if (catalog_basename != NULL)
- as_app_add_metadata (app, "CatalogBasename", catalog_basename);
/* add a release with no real description */
- if (version != NULL) {
- release = as_release_new ();
+ release = as_release_new ();
+ if (version != NULL)
as_release_set_version (release, version);
- as_release_set_timestamp (release, timestamp);
- as_app_add_release (app, release);
- }
+ as_release_set_timestamp (release, timestamp);
+ csum = as_checksum_new ();
+ as_checksum_set_filename (csum, firmware_basename);
+ as_checksum_set_target (csum, AS_CHECKSUM_TARGET_CONTENT);
+ as_release_add_checksum (release, csum);
+ as_app_add_release (app, release);
/* add icon */
icon = as_icon_new ();