summaryrefslogtreecommitdiff
path: root/libappstream-glib/as-app.c
diff options
context:
space:
mode:
authorRichard Hughes <richard@hughsie.com>2014-05-23 15:23:10 +0100
committerRichard Hughes <richard@hughsie.com>2014-05-23 15:25:01 +0100
commit7d066061c62374e133879171520c5a9422862e10 (patch)
treec9dc15c8eb9c2e7bd37072861b58e2956ade8a03 /libappstream-glib/as-app.c
parent517e0fb9dfd1fddd57ee62b9bb64efb0d29a0834 (diff)
downloadappstream-glib-7d066061c62374e133879171520c5a9422862e10.tar.gz
Retain comments in .desktop and .appdata.xml files when required
Diffstat (limited to 'libappstream-glib/as-app.c')
-rw-r--r--libappstream-glib/as-app.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/libappstream-glib/as-app.c b/libappstream-glib/as-app.c
index ea6cd9a..6cd1c50 100644
--- a/libappstream-glib/as-app.c
+++ b/libappstream-glib/as-app.c
@@ -2598,6 +2598,7 @@ as_app_parse_desktop_file (AsApp *app,
AsAppParseFlags flags,
GError **error)
{
+ GKeyFileFlags kf_flags = G_KEY_FILE_KEEP_TRANSLATIONS;
GKeyFile *kf;
gboolean ret;
gchar *app_id = NULL;
@@ -2607,9 +2608,9 @@ as_app_parse_desktop_file (AsApp *app,
/* load file */
kf = g_key_file_new ();
- ret = g_key_file_load_from_file (kf, desktop_file,
- G_KEY_FILE_KEEP_TRANSLATIONS,
- error);
+ if (flags & AS_APP_PARSE_FLAG_KEEP_COMMENTS)
+ kf_flags |= G_KEY_FILE_KEEP_COMMENTS;
+ ret = g_key_file_load_from_file (kf, desktop_file, kf_flags, error);
if (!ret)
goto out;
@@ -2668,6 +2669,7 @@ as_app_parse_appdata_file (AsApp *app,
GError **error)
{
AsAppPrivate *priv = GET_PRIVATE (app);
+ AsNodeFromXmlFlags from_xml_flags = AS_NODE_FROM_XML_FLAG_NONE;
GNode *l;
GNode *node;
GNode *root = NULL;
@@ -2695,8 +2697,10 @@ as_app_parse_appdata_file (AsApp *app,
priv->problems |= AS_APP_PROBLEM_NO_COPYRIGHT_INFO;
/* parse */
+ if (flags & AS_APP_PARSE_FLAG_KEEP_COMMENTS)
+ from_xml_flags |= AS_NODE_FROM_XML_FLAG_KEEP_COMMENTS;
root = as_node_from_xml (data, len,
- AS_NODE_FROM_XML_FLAG_NONE,
+ from_xml_flags,
error);
if (root == NULL) {
ret = FALSE;