diff --git a/src/hierarchy-node.c b/src/hierarchy-node.c index 16050ed..42144fd 100644 --- a/src/hierarchy-node.c +++ b/src/hierarchy-node.c @@ -456,8 +456,8 @@ static ValuedMetadataReference* parse_reference_to_metadata (const gchar *tag, x } else { value = (gchar*) xmlGetProp (node, (xmlChar*) "query"); - if (value != NULL) { + g_warning("found %s", value); ref->involved = parse_reference_formula (value, &(ref->query)); } else { @@ -1428,8 +1428,8 @@ static GList* collect_children_from_filesystem (HierarchyNode *node, ItemHandler n = scandir (path, &namelist, NULL, alphasort); loop = gfuse_loop_get_current (); - for (i = 2; i < n; i++) { - if (namelist [i]->d_name == NULL) + for (i = 0; i < n; i++) { + if (namelist [i]->d_name == NULL || strcmp (namelist [i]->d_name, ".") || strcmp (namelist [i]->d_name, "..")) continue; item_path = g_build_filename (path, namelist [i]->d_name, NULL); @@ -1469,8 +1469,8 @@ static GList* collect_children_from_filesystem (HierarchyNode *node, ItemHandler free (namelist [i]); } + if (namelist [1] != NULL ) free (namelist [1]); free (namelist [0]); - free (namelist [1]); free (namelist); if (ret != NULL) diff --git a/src/item-handler.c b/src/item-handler.c index 77a5e65..51492a1 100644 --- a/src/item-handler.c +++ b/src/item-handler.c @@ -94,7 +94,10 @@ static void flush_pending_metadata_to_save (ItemHandler *item, ...) GVariantIter sub_sub_iter; GError *error; Property *prop; + GRegex *query_syntax; + gboolean is_query; + statements = NULL; types = NULL; va_start (params, item); @@ -113,13 +116,20 @@ static void flush_pending_metadata_to_save (ItemHandler *item, ...) break; case PROPERTY_TYPE_RESOURCE: - stats = g_strdup_printf ("%s <%s>", (gchar*) key, (gchar*) value); - statements = g_list_prepend (statements, stats); + //FIXME supporting naif config in a better way + query_syntax = g_regex_new ("\\?.*", 0, 0, NULL); + is_query = g_regex_match(query_syntax, (gchar*) value, 0, NULL); + if(!is_query) + stats = g_strdup_printf ("%s <%s>", (gchar*) key, (gchar*) value); + else + stats = g_strdup_printf ("%s %s", (gchar*) key, (gchar*) value); + statements = g_list_prepend (statements, stats); + g_regex_unref (query_syntax); break; default: - stats = g_strdup_printf ("%s %s", (gchar*) key, (gchar*) value); - statements = g_list_prepend (statements, stats); + stats = g_strdup_printf ("%s %s", (gchar*) key, (gchar*) value); + statements = g_list_prepend (statements, stats); break; } } @@ -149,7 +159,6 @@ static void flush_pending_metadata_to_save (ItemHandler *item, ...) error = NULL; results = execute_update_blank (query, &error); - if (error != NULL) { g_warning ("Error while saving metadata: %s", error->message); diff --git a/src/property.c b/src/property.c index f0b48aa..ef79d88 100644 --- a/src/property.c +++ b/src/property.c @@ -132,7 +132,7 @@ gchar* property_format_value (Property *property, const gchar *value) ret = g_strdup_printf ("<%s>", value); else ret = g_strdup (value); - g_free(subject_format); + g_regex_unref (subject_format); break; case PROPERTY_TYPE_BOOLEAN: diff --git a/src/utils.c b/src/utils.c index 6a12b8f..b5dec2a 100644 --- a/src/utils.c +++ b/src/utils.c @@ -127,7 +127,7 @@ void execute_update (gchar *query, GError **error) NULL, error); - g_object_unref (ret); + g_variant_unref (ret); } GVariant* execute_update_blank (gchar *query, GError **error)