summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Hughes <richard@hughsie.com>2014-06-13 16:55:33 +0100
committerRichard Hughes <richard@hughsie.com>2014-06-13 17:04:56 +0100
commit70ff3a5aaf1658deb158de1ecf4942fe63dc2310 (patch)
tree5cc9d7293febb1ac78d19d4c57a284cd6c4c0249
parentf32a4e4c10e9f6b6bfb2a6a671d6d1802d4efe41 (diff)
downloadappstream-glib-70ff3a5aaf1658deb158de1ecf4942fe63dc2310.tar.gz
Add as_app_guess_source_kind()
-rw-r--r--libappstream-glib/as-app.c28
-rw-r--r--libappstream-glib/as-app.h2
2 files changed, 30 insertions, 0 deletions
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
@@ -112,6 +112,34 @@ as_app_error_quark (void)
}
/**
+ * 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:
**/
static void
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);