diff --git a/cbits/posix/posix_spawn.c b/cbits/posix/posix_spawn.c index 39cb52d3..af445837 100644 --- a/cbits/posix/posix_spawn.c +++ b/cbits/posix/posix_spawn.c @@ -136,13 +136,19 @@ do_spawn_posix (char *const args[], if (workingDirectory) { #if defined(HAVE_posix_spawn_file_actions_addchdir) - // N.B. this function is broken on macOS. - // See https://github.com/rust-lang/rust/pull/80537. r = posix_spawn_file_actions_addchdir(&fa, workingDirectory); if (r != 0) { *failed_doing = "posix_spawn_file_actions_addchdir"; goto fail; } +#elif defined(HAVE_posix_spawn_file_actions_addchdir_np) + // N.B. this function is broken on macOS. + // See https://github.com/rust-lang/rust/pull/80537. + r = posix_spawn_file_actions_addchdir_np(&fa, workingDirectory); + if (r != 0) { + *failed_doing = "posix_spawn_file_actions_addchdir_np"; + goto fail; + } #else goto not_supported; #endif diff --git a/configure.ac b/configure.ac index 23ec0702..59fb2e55 100644 --- a/configure.ac +++ b/configure.ac @@ -23,7 +23,7 @@ AC_CHECK_FUNCS([pipe2],[],[],[ # posix_spawn checks AC_CHECK_HEADERS([spawn.h]) -AC_CHECK_FUNCS([posix_spawnp posix_spawn_file_actions_addchdir],[],[],[ +AC_CHECK_FUNCS([posix_spawnp posix_spawn_file_actions_addchdir_np posix_spawn_file_actions_addchdir],[],[],[ #define _GNU_SOURCE #include ])