glocalfile: Disable faccessat()-based query_exists on FreeBSD

It appears not to work, and nobody interested in FreeBSD has picked it
up to investigate yet.

Rather than have a completely broken implementation of
`g_file_query_exists()` on FreeBSD, let’s settle for using the old one.
It’s slightly slower than the new one, but has worked fine for people
for years.

This essentially reverts commit 65ad41d8a4
on FreeBSD. This commit can be reverted when a FreeBSD person
investigates what’s going wrong with the `faccessat()`-based
implementation.

Signed-off-by: Philip Withnall <pwithnall@gnome.org>

Helps: #3495
This commit is contained in:
Philip Withnall 2024-10-22 13:37:55 +01:00
parent e9902a66a9
commit ad67d4e833
No known key found for this signature in database
GPG Key ID: C5C42CFB268637CA

View File

@ -1259,7 +1259,9 @@ g_local_file_query_info (GFile *file,
return info; return info;
} }
#ifdef HAVE_FACCESSAT /* FIXME: faccessat() is available on FreeBSD but appears to not work correctly
* here. This needs diagnosing; https://gitlab.gnome.org/GNOME/glib/-/issues/3495 */
#if defined(HAVE_FACCESSAT) && !defined(__FreeBSD__)
static gboolean static gboolean
g_local_file_query_exists (GFile *file, g_local_file_query_exists (GFile *file,
GCancellable *cancellable) GCancellable *cancellable)
@ -3153,7 +3155,7 @@ g_local_file_file_iface_init (GFileIface *iface)
iface->monitor_dir = g_local_file_monitor_dir; iface->monitor_dir = g_local_file_monitor_dir;
iface->monitor_file = g_local_file_monitor_file; iface->monitor_file = g_local_file_monitor_file;
iface->measure_disk_usage = g_local_file_measure_disk_usage; iface->measure_disk_usage = g_local_file_measure_disk_usage;
#ifdef HAVE_FACCESSAT #if defined(HAVE_FACCESSAT) && !defined(__FreeBSD__)
iface->query_exists = g_local_file_query_exists; iface->query_exists = g_local_file_query_exists;
#endif #endif