Commit 1ce74b0d authored by Alexander Larsson's avatar Alexander Larsson

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.
parent 20df6b6e
......@@ -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;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment