diff options
author | Ernestas Kulik <ernestask@gnome.org> | 2018-02-02 12:25:44 +0200 |
---|---|---|
committer | Ernestas Kulik <ernestask@gnome.org> | 2018-03-24 20:22:22 +0200 |
commit | 57664cd25ef39b18bc312cd6fcf2544231d4db9f (patch) | |
tree | 36cb9fd2edf0a1051041ac960b7c4db7877b9ef8 | |
parent | b395f53efc01b2e304fee5d585f9caf5def1423e (diff) | |
download | nautilus-57664cd25ef39b18bc312cd6fcf2544231d4db9f.tar.gz |
batch-rename-utilities: properly escape query strings
g_markup_escape_text() replaces reserved characters in HTML into
character entities, which is not what Tracker works with. Furthermore,
file URI escaping can be avoided if using angle brackets.
Fixes https://gitlab.gnome.org/GNOME/nautilus/issues/229
-rw-r--r-- | src/nautilus-batch-rename-utilities.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/src/nautilus-batch-rename-utilities.c b/src/nautilus-batch-rename-utilities.c index ded96827a..ae078e6f7 100644 --- a/src/nautilus-batch-rename-utilities.c +++ b/src/nautilus-batch-rename-utilities.c @@ -1049,7 +1049,6 @@ check_metadata_for_selection (NautilusBatchRenameDialog *dialog, GList *selection_metadata; guint i; g_autofree gchar *parent_uri = NULL; - g_autofree gchar *parent_uri_escaped = NULL; gchar *file_name_escaped; error = NULL; @@ -1074,34 +1073,33 @@ check_metadata_for_selection (NautilusBatchRenameDialog *dialog, "WHERE { ?file a nfo:FileDataObject. ?file nie:url ?url. "); parent_uri = nautilus_file_get_parent_uri (NAUTILUS_FILE (selection->data)); - parent_uri_escaped = g_markup_escape_text (parent_uri, -1); g_string_append_printf (query, - "FILTER(tracker:uri-is-parent('%s', ?url)) ", - parent_uri_escaped); + "FILTER(tracker:uri-is-parent(<%s>, ?url)) ", + parent_uri); for (l = selection; l != NULL; l = l->next) { file = NAUTILUS_FILE (l->data); file_name = nautilus_file_get_name (file); - file_name_escaped = g_markup_escape_text (file_name, -1); + file_name_escaped = tracker_sparql_escape_string (file_name); if (l == selection) { g_string_append_printf (query, - "FILTER (nfo:fileName(?file) IN ('%s', ", + "FILTER (nfo:fileName(?file) IN (\"%s\", ", file_name_escaped); } else if (l->next == NULL) { g_string_append_printf (query, - "'%s')) ", + "\"%s\")) ", file_name_escaped); } else { g_string_append_printf (query, - "'%s', ", + "\"%s\", ", file_name_escaped); } |