gdocumentportal: Factor out opening_ro_might_succeed()

No functional change.

Signed-off-by: Simon McVittie <smcv@collabora.com>
This commit is contained in:
Simon McVittie 2024-05-01 13:57:41 +01:00 committed by Simon McVittie
parent 4bd416f0ff
commit 8c533510ee

View File

@ -90,6 +90,24 @@ enum {
XDP_ADD_FLAGS_FLAGS_ALL = ((1 << 3) - 1) XDP_ADD_FLAGS_FLAGS_ALL = ((1 << 3) - 1)
}; };
/*
* Assume that opening a file read/write failed with @saved_errno,
* and return TRUE if opening the same file read-only might succeed.
*/
static gboolean
opening_ro_might_succeed (int saved_errno)
{
switch (saved_errno)
{
case EACCES:
case EISDIR:
return TRUE;
default:
return FALSE;
}
}
GList * GList *
g_document_portal_add_documents (GList *uris, g_document_portal_add_documents (GList *uris,
const char *app_id, const char *app_id,
@ -131,7 +149,7 @@ g_document_portal_add_documents (GList *uris,
int fd; int fd;
fd = g_open (path, O_CLOEXEC | O_RDWR); fd = g_open (path, O_CLOEXEC | O_RDWR);
if (fd == -1 && (errno == EACCES || errno == EISDIR)) if (fd == -1 && opening_ro_might_succeed (errno))
{ {
/* If we don't have write access, fall back to read-only, /* If we don't have write access, fall back to read-only,
* and stop requesting the write permission */ * and stop requesting the write permission */