trash portal: Handle portal failures

Previously, only whether or not the D-Bus call itself succeeded was
checked, regardless of the result code from the actual trash operation.
This commit is contained in:
Ryan Gonzalez 2020-09-15 18:06:56 -05:00
parent 9bc61def1f
commit 88032cb541

View File

@ -74,8 +74,9 @@ g_trash_portal_trash_file (GFile *file,
GUnixFDList *fd_list = NULL;
int fd, fd_in, errsv;
gboolean ret = FALSE;
guint portal_result = 0;
GXdpTrash *proxy;
proxy = ensure_trash_portal ();
if (proxy == NULL)
{
@ -114,11 +115,17 @@ g_trash_portal_trash_file (GFile *file,
ret = gxdp_trash_call_trash_file_sync (proxy,
g_variant_new_handle (fd_in),
fd_list,
NULL,
&portal_result,
NULL,
NULL,
error);
if (ret && portal_result != 1)
{
g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "Trash portal failed on %s", path);
ret = FALSE;
}
out:
g_clear_object (&fd_list);
g_free (path);