summaryrefslogtreecommitdiff
path: root/libappstream-glib/as-app.c
diff options
context:
space:
mode:
Diffstat (limited to 'libappstream-glib/as-app.c')
-rw-r--r--libappstream-glib/as-app.c28
1 files changed, 28 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