diff options
author | Richard Hughes <richard@hughsie.com> | 2018-03-27 10:43:11 +0100 |
---|---|---|
committer | Richard Hughes <richard@hughsie.com> | 2018-03-27 10:43:14 +0100 |
commit | 4de6da21720f9c9e35cd24853c8ff51f5f6f16e4 (patch) | |
tree | f44989f6346ee649afaa3b52673dcc2adf23a645 | |
parent | 911ef7fb4b3bdda8acd6cf57715b9020c65e274c (diff) | |
download | appstream-glib-4de6da21720f9c9e35cd24853c8ff51f5f6f16e4.tar.gz |
Don't include the path component in the name when parsing the package filename
If the guessing fails, we fall back to the arch/rpm/deb-derived name but we
don't want to show weird things in the logs.
Fixes https://github.com/hughsie/appstream-glib/issues/228, many thanks to
Andrew Gunnerson for the initial patch.
-rw-r--r-- | libappstream-builder/asb-package.c | 7 | ||||
-rw-r--r-- | libappstream-builder/asb-self-test.c | 15 |
2 files changed, 17 insertions, 5 deletions
diff --git a/libappstream-builder/asb-package.c b/libappstream-builder/asb-package.c index c2cbf1b..0b62b74 100644 --- a/libappstream-builder/asb-package.c +++ b/libappstream-builder/asb-package.c @@ -842,7 +842,7 @@ asb_package_guess_from_filename (AsbPackage *pkg) gchar *at; /* remove .rpm extension */ - tmp = g_strdup (priv->filename); + tmp = g_path_get_basename (priv->filename); at = g_strrstr (tmp, ".rpm"); if (at == NULL) return; @@ -870,10 +870,7 @@ asb_package_guess_from_filename (AsbPackage *pkg) *at = '\0'; /* get name */ - at = g_strrstr (tmp, "/"); - if (at == NULL) - return; - priv->name = g_strdup (at + 1); + priv->name = g_strdup (tmp); } /** diff --git a/libappstream-builder/asb-self-test.c b/libappstream-builder/asb-self-test.c index bba9cce..7fda2cc 100644 --- a/libappstream-builder/asb-self-test.c +++ b/libappstream-builder/asb-self-test.c @@ -243,6 +243,20 @@ asb_test_package_func (void) } static void +asb_test_package_guess_from_fn_func (void) +{ + g_autoptr(AsbPackage) pkg = asb_package_new (); + + /* check pathological name */ + asb_package_set_filename (pkg, "/tmp/atom.x86_64.rpm"); + g_assert_cmpstr (asb_package_get_name (pkg), ==, NULL); + g_assert_cmpstr (asb_package_get_version (pkg), ==, NULL); + g_assert_cmpstr (asb_package_get_release_str (pkg), ==, NULL); + g_assert_cmpstr (asb_package_get_arch (pkg), ==, "x86_64"); + g_assert_cmpint (asb_package_get_epoch (pkg), ==, 0); +} + +static void asb_test_utils_glob_func (void) { g_autoptr(GPtrArray) array = NULL; @@ -781,6 +795,7 @@ main (int argc, char **argv) /* tests go here */ g_test_add_func ("/AppStreamBuilder/package", asb_test_package_func); + g_test_add_func ("/AppStreamBuilder/package{guess-fn}", asb_test_package_guess_from_fn_func); g_test_add_func ("/AppStreamBuilder/utils{glob}", asb_test_utils_glob_func); g_test_add_func ("/AppStreamBuilder/plugin-loader", asb_test_plugin_loader_func); g_test_add_func ("/AppStreamBuilder/firmware", asb_test_firmware_func); |