[glibc] posix: Add POSIX aliases to some spawn functions
Adhemerval Zanella via Glibc-cvs <[email protected]>
| Newsgroups | gmane.comp.lib.glibc.cvs |
|---|---|
| Message-ID | <[email protected]> |
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=7594b4e5a75d41e891782aa7e3fb51924f6840cb commit 7594b4e5a75d41e891782aa7e3fb51924f6840cb Author: Lucas Chollet <[email protected]> Date: Wed Apr 1 14:21:39 2026 +0200 posix: Add POSIX aliases to some spawn functions Both `posix_spawn_file_actions_add{,f}chdir` functions are now fully defined by POSIX-2024, this patch adds both functions as aliases of the already existing `posix_spawn_file_actions_add{,f}chdir_np` GNU extensions. This makes glibc more compliant in regards to POSIX-2024. Signed-off-by: Lucas Chollet <[email protected]> Reviewed-by: Adhemerval Zanella <[email protected]> Diff: --- conform/data/spawn.h-data | 4 ++++ posix/Makefile | 1 + posix/spawn.h | 20 ++++++++++++++++++++ posix/tst-spawn-chdir-posix.c | 2 ++ posix/tst-spawn-chdir.c | 19 ++++++++++++++++--- 5 files changed, 43 insertions(+), 3 deletions(-) diff --git a/conform/data/spawn.h-data b/conform/data/spawn.h-data index 43aa9cb8ae..1f332324c2 100644 --- a/conform/data/spawn.h-data +++ b/conform/data/spawn.h-data @@ -29,6 +29,10 @@ function int posix_spawnattr_setpgroup (posix_spawnattr_t*, pid_t) function int posix_spawnattr_setschedparam (posix_spawnattr_t*, const struct sched_param*) function int posix_spawnattr_setschedpolicy (posix_spawnattr_t*, int) function int posix_spawnattr_setsigmask (posix_spawnattr_t*, const sigset_t*) +#if defined XOPEN2K24 || defined POSIX2024 +function int posix_spawn_file_actions_addchdir (posix_spawn_file_actions_t*, const char *) +function int posix_spawn_file_actions_addfchdir (posix_spawn_file_actions_t*, int) +#endif function int posix_spawn_file_actions_addclose (posix_spawn_file_actions_t*, int) function int posix_spawn_file_actions_adddup2 (posix_spawn_file_actions_t*, int, int) function int posix_spawn_file_actions_addopen (posix_spawn_file_actions_t*, int, const char *, int, mode_t) diff --git a/posix/Makefile b/posix/Makefile index ec28b9e1da..a5e5162c61 100644 --- a/posix/Makefile +++ b/posix/Makefile @@ -315,6 +315,7 @@ tests := \ tst-rxspencer-no-utf8 \ tst-sched_getaffinity \ tst-spawn-chdir \ + tst-spawn-chdir-posix \ tst-spawn4 \ tst-spawn5 \ tst-spawn6 \ diff --git a/posix/spawn.h b/posix/spawn.h index 5e68752a66..0aabf5ebef 100644 --- a/posix/spawn.h +++ b/posix/spawn.h @@ -200,6 +200,26 @@ extern int posix_spawn_file_actions_adddup2 (posix_spawn_file_actions_t * int __fd, int __newfd) __THROW __nonnull ((1)); +#ifdef __USE_XOPEN2K24XSI + +/* Add an action changing the directory to PATH during spawn. This + affects the subsequent file actions. + Alias of posix_spawn_file_actions_addchdir_np. */ +extern int __REDIRECT_NTH (posix_spawn_file_actions_addchdir, + (posix_spawn_file_actions_t * __restrict __actions, + const char *__restrict __path), + posix_spawn_file_actions_addchdir_np); + +/* Add an action changing the directory to FD during spawn. This + affects the subsequent file actions. FD is not duplicated and must + be open when the file action is executed. + Alias of posix_spawn_file_actions_addfchdir_np. */ +extern int __REDIRECT_NTH (posix_spawn_file_actions_addfchdir, + (posix_spawn_file_actions_t *, int __fd), + posix_spawn_file_actions_addfchdir_np); + +#endif /* __USE_XOPEN2K24XSI */ + #ifdef __USE_MISC /* Add an action changing the directory to PATH during spawn. This affects the subsequent file actions. */ diff --git a/posix/tst-spawn-chdir-posix.c b/posix/tst-spawn-chdir-posix.c new file mode 100644 index 0000000000..3f8d8952bb --- /dev/null +++ b/posix/tst-spawn-chdir-posix.c @@ -0,0 +1,2 @@ +#define USE_POSIX_ALIASES +#include "tst-spawn-chdir.c" diff --git a/posix/tst-spawn-chdir.c b/posix/tst-spawn-chdir.c index a3478d61f6..166f835492 100644 --- a/posix/tst-spawn-chdir.c +++ b/posix/tst-spawn-chdir.c @@ -78,12 +78,25 @@ add_chdir (posix_spawn_file_actions_t *actions, const char *path, { TEST_COMPARE (posix_spawn_file_actions_addopen (actions, tmpfd, path, O_DIRECTORY | O_RDONLY, 0), 0); - TEST_COMPARE (posix_spawn_file_actions_addfchdir_np - (actions, tmpfd), 0); + +#ifdef USE_POSIX_ALIASES + int ret = posix_spawn_file_actions_addfchdir (actions, tmpfd); +#else + int ret = posix_spawn_file_actions_addfchdir_np (actions, tmpfd); +#endif + TEST_COMPARE (ret, 0); + TEST_COMPARE (posix_spawn_file_actions_addclose (actions, tmpfd), 0); } else - TEST_COMPARE (posix_spawn_file_actions_addchdir_np (actions, path), 0); + { +#ifdef USE_POSIX_ALIASES + int ret = posix_spawn_file_actions_addchdir (actions, path); +#else + int ret = posix_spawn_file_actions_addchdir_np (actions, path); +#endif + TEST_COMPARE (ret, 0); + } } static int