[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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.