fcntl-h: support O_DIRECTORY It is relatively easy to support O_DIRECTORY on platforms that lack it, so let’s do that instead of having to work around bugs like <https://bugs.gnu.org/78509#95>. * lib/fcntl.in.h (O_DIRECTORY): Default to 0x20000000 not 0, since Gnulib now supports it. * lib/open.c, lib/openat.c (OPEN_TRAILING_SLASH_BUG): Default to false, so that this can be used outside #if. (open, openat): Add support for O_DIRECTORY on platforms that lack it. If fstat fails, fail instead of assuming the file is a directory, since failure can occur due to EOVERFLOW, etc. Rearrange code to minimize differences between open.c and openat.c. * m4/fcntl-o.m4 (gl_FCNTL_O_FLAGS): Also test O_DIRECTORY, and define HAVE_WORKING_O_DIRECTORY if needed. Prefer AS_CASE for Emacs’s benefit. * m4/open.m4 (gl_FUNC_OPEN): * m4/openat.m4 (gl_FUNC_OPENAT): Require gl_FCNTL_O_FLAGS and replace the function if O_DIRECTORY does not work. * tests/test-open.h: Test O_DIRECTORY.