aboutsummaryrefslogtreecommitdiffstats
path: root/lib-src
diff options
context:
space:
mode:
authorPaul Eggert2022-04-17 10:41:17 -0700
committerPaul Eggert2022-04-17 10:43:13 -0700
commit3cccf0a9107d585173e527550bbc45253624ca2e (patch)
tree84f2ace0970fde0dc3c9863755eba8379574ffcf /lib-src
parent4641bc1c550a81c71798c0176a6bfc34c8947c74 (diff)
downloademacs-3cccf0a9107d585173e527550bbc45253624ca2e.tar.gz
emacs-3cccf0a9107d585173e527550bbc45253624ca2e.zip
Don’t assume openat
Use openat only on platforms with O_PATH. This ports to OS X 10.9 and earlier. Problem reported by Keith David Bershatsky in: https://lists.gnu.org/r/emacs-devel/2022-04/msg00805.html * lib-src/emacsclient.c (local_sockname): Use open, not openat. * src/sysdep.c (sys_openat): New static function, which uses openat only if O_PATH is defined. (emacs_openat): Use it instead of openat. (emacs_openat_noquit): Remove. (emacs_open_noquit): Reimplement as per the old emacs_openat_noquit, but use plain 'open'.
Diffstat (limited to 'lib-src')
-rw-r--r--lib-src/emacsclient.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c
index 57a5eff3bf6..217a38bc07f 100644
--- a/lib-src/emacsclient.c
+++ b/lib-src/emacsclient.c
@@ -1412,8 +1412,7 @@ local_sockname (int s, char sockname[socknamesize], int tmpdirlen,
1412 char *emacsdirend = sockname + tmpdirlen + suffixlen - 1412 char *emacsdirend = sockname + tmpdirlen + suffixlen -
1413 strlen(server_name) - 1; 1413 strlen(server_name) - 1;
1414 *emacsdirend = '\0'; 1414 *emacsdirend = '\0';
1415 int dir = openat (AT_FDCWD, sockname, 1415 int dir = open (sockname, O_PATH | O_DIRECTORY | O_NOFOLLOW | O_CLOEXEC);
1416 O_PATH | O_DIRECTORY | O_NOFOLLOW | O_CLOEXEC);
1417 *emacsdirend = '/'; 1416 *emacsdirend = '/';
1418 if (dir < 0) 1417 if (dir < 0)
1419 return errno; 1418 return errno;