diff options
| author | Paul Eggert | 2022-04-17 10:41:17 -0700 |
|---|---|---|
| committer | Paul Eggert | 2022-04-17 10:43:13 -0700 |
| commit | 3cccf0a9107d585173e527550bbc45253624ca2e (patch) | |
| tree | 84f2ace0970fde0dc3c9863755eba8379574ffcf /lib-src | |
| parent | 4641bc1c550a81c71798c0176a6bfc34c8947c74 (diff) | |
| download | emacs-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.c | 3 |
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; |