From 70ff3a5aaf1658deb158de1ecf4942fe63dc2310 Mon Sep 17 00:00:00 2001 From: Richard Hughes Date: Fri, 13 Jun 2014 16:55:33 +0100 Subject: Add as_app_guess_source_kind() --- libappstream-glib/as-app.c | 28 ++++++++++++++++++++++++++++ libappstream-glib/as-app.h | 2 ++ 2 files changed, 30 insertions(+) diff --git a/libappstream-glib/as-app.c b/libappstream-glib/as-app.c index bf2a50a..1c7b76a 100644 --- a/libappstream-glib/as-app.c +++ b/libappstream-glib/as-app.c @@ -111,6 +111,34 @@ as_app_error_quark (void) return quark; } +/** + * as_app_guess_source_kind: + * @filename: a file name + * + * Guesses the source kind based from the filename. + * + * Return value: A #AsAppSourceKind, e.g. %AS_APP_SOURCE_KIND_APPSTREAM. + * + * Since: 0.1.8 + **/ +AsAppSourceKind +as_app_guess_source_kind (const gchar *filename) +{ + if (g_str_has_suffix (filename, ".xml.gz")) + return AS_APP_SOURCE_KIND_APPSTREAM; + if (g_str_has_suffix (filename, ".desktop")) + return AS_APP_SOURCE_KIND_DESKTOP; + if (g_str_has_suffix (filename, ".appdata.xml")) + return AS_APP_SOURCE_KIND_APPDATA; + if (g_str_has_suffix (filename, ".appdata.xml.in")) + return AS_APP_SOURCE_KIND_APPDATA; + if (g_str_has_suffix (filename, ".metainfo.xml")) + return AS_APP_SOURCE_KIND_METAINFO; + if (g_str_has_suffix (filename, ".metainfo.xml.in")) + return AS_APP_SOURCE_KIND_METAINFO; + return AS_APP_SOURCE_KIND_UNKNOWN; +} + /** * as_app_finalize: **/ diff --git a/libappstream-glib/as-app.h b/libappstream-glib/as-app.h index 37cbf64..e7ce663 100644 --- a/libappstream-glib/as-app.h +++ b/libappstream-glib/as-app.h @@ -136,6 +136,7 @@ typedef enum { * @AS_APP_SOURCE_KIND_APPSTREAM: Sourced from a AppStream file * @AS_APP_SOURCE_KIND_DESKTOP: Sourced from a desktop file * @AS_APP_SOURCE_KIND_APPDATA: Sourced from a AppData file + * @AS_APP_SOURCE_KIND_METAINFO: Sourced from a MetaInfo file * * The source kind. **/ @@ -154,6 +155,7 @@ typedef enum { GType as_app_get_type (void); AsApp *as_app_new (void); GQuark as_app_error_quark (void); +AsAppSourceKind as_app_guess_source_kind (const gchar *filename); /* getters */ AsIconKind as_app_get_icon_kind (AsApp *app); -- cgit v1.2.1