Merge branch 'fix_3636' into 'main'

gio-tool: Fix handling of the trash original path

Closes #3636

See merge request GNOME/glib!4556
This commit is contained in:
Philip Withnall 2025-03-19 17:37:36 +00:00
commit 7ea8543f7e

View File

@ -92,7 +92,7 @@ restore_trash (GFile *file,
GFile *target = NULL; GFile *target = NULL;
GFile *dir_target = NULL; GFile *dir_target = NULL;
gboolean ret = FALSE; gboolean ret = FALSE;
gchar *orig_path = NULL; const gchar *orig_path = NULL;
GError *local_error = NULL; GError *local_error = NULL;
info = g_file_query_info (file, G_FILE_ATTRIBUTE_TRASH_ORIG_PATH, G_FILE_QUERY_INFO_NONE, cancellable, &local_error); info = g_file_query_info (file, G_FILE_ATTRIBUTE_TRASH_ORIG_PATH, G_FILE_QUERY_INFO_NONE, cancellable, &local_error);
@ -102,7 +102,7 @@ restore_trash (GFile *file,
goto exit_func; goto exit_func;
} }
orig_path = g_file_info_get_attribute_as_string (info, G_FILE_ATTRIBUTE_TRASH_ORIG_PATH); orig_path = g_file_info_get_attribute_byte_string (info, G_FILE_ATTRIBUTE_TRASH_ORIG_PATH);
if (!orig_path) if (!orig_path)
{ {
g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND, _("Unable to find original path")); g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND, _("Unable to find original path"));
@ -110,7 +110,6 @@ restore_trash (GFile *file,
} }
target = g_file_new_for_commandline_arg (orig_path); target = g_file_new_for_commandline_arg (orig_path);
g_free (orig_path);
dir_target = g_file_get_parent (target); dir_target = g_file_get_parent (target);
if (dir_target) if (dir_target)
@ -173,21 +172,23 @@ trash_list (GFile *file,
while ((info = g_file_enumerator_next_file (enumerator, cancellable, &local_error)) != NULL) while ((info = g_file_enumerator_next_file (enumerator, cancellable, &local_error)) != NULL)
{ {
const char *name; const char *name;
char *orig_path; const char *orig_path;
char *uri; char *uri;
gchar *utf8_path;
GFile* child; GFile* child;
name = g_file_info_get_name (info); name = g_file_info_get_name (info);
child = g_file_get_child (file, name); child = g_file_get_child (file, name);
uri = g_file_get_uri (child); uri = g_file_get_uri (child);
g_object_unref (child); g_object_unref (child);
orig_path = g_file_info_get_attribute_as_string (info, G_FILE_ATTRIBUTE_TRASH_ORIG_PATH); orig_path = g_file_info_get_attribute_byte_string (info, G_FILE_ATTRIBUTE_TRASH_ORIG_PATH);
utf8_path = g_filename_to_utf8 (orig_path, -1, NULL, NULL, NULL);
g_print ("%s\t%s\n", uri, orig_path); g_print ("%s\t%s\n", uri, utf8_path);
g_object_unref (info); g_object_unref (info);
g_free (orig_path);
g_free (uri); g_free (uri);
g_free (utf8_path);
} }
if (local_error) if (local_error)