mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-25 15:06:14 +01:00
On trash, if rename fails with EXDEV, return G_IO_ERROR_NOT_SUPPORTED
Sometimes it seems like the trash dir and the file are on the same filesystem but the rename fails with EXDEV anyway (can happen e.g. with bind mounts or multiple mounts of the same device). In this case we want to return the right error so that apps can fallback to regular delete.
This commit is contained in:
parent
20df6b6e88
commit
1ce74b0dd3
@ -1921,11 +1921,20 @@ g_local_file_trash (GFile *file,
|
||||
g_free (trashname);
|
||||
g_free (infofile);
|
||||
g_free (trashfile);
|
||||
|
||||
g_set_error (error, G_IO_ERROR,
|
||||
g_io_error_from_errno (errsv),
|
||||
_("Unable to trash file: %s"),
|
||||
g_strerror (errsv));
|
||||
|
||||
if (errsv == EXDEV)
|
||||
/* The trash dir was actually on another fs anyway!?
|
||||
This can happen when the same device is mounted multiple
|
||||
times, or with bind mounts of the same fs. */
|
||||
g_set_error (error, G_IO_ERROR,
|
||||
G_IO_ERROR_NOT_SUPPORTED,
|
||||
_("Unable to trash file: %s"),
|
||||
g_strerror (errsv));
|
||||
else
|
||||
g_set_error (error, G_IO_ERROR,
|
||||
g_io_error_from_errno (errsv),
|
||||
_("Unable to trash file: %s"),
|
||||
g_strerror (errsv));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user