Subject: [PATCH v5 0/3] Move spawning procedures to posix_spawn.

From: Josselin Poiret <[email-masked]>
Date: Mon, 5 Sep 2022 08:48:12 +0200

Hi everyone,

As was discussed on IRC, if we're going to rewrite a non-negligible part of
posix.c, let's at least do it right and use posix_spawn to handle the process
spawning side of things.  This is quite complex to get right in general
(highlighted by this very bug) and so people have already done the hard work for
us.  Additionally, we use Gnulib's posix_spawn, so that it is available on all
supported systems.  I then adjusted all the procedures to use posix_spawn
instead of scm_piped_process and removed the latter, and the tests in
popen.test, posix.test.

There are two inderminates here:

* I don't have anything other than a Linux system to test.  This would need some
feedback for at least Mach and win32.

* This changes the interfaces (for the better, in my opinion): whenever
possible, posix_spawn reports child starting failures as a parent errno, meaning
that for eg. non- existing binaries, system* now throws an exception instead of
returning a pid that will have an exit status code of 127.  This means that
existing code that relies on that behavior will need to be changed, the first
example being the test suite which I adapted to actually check for exceptions
instead.  Some tests were removed because they no longer make sense: in
posix.test, https://bugs.gnu.org/13166, exit code for nonexistent file and
https://bugs.gnu.org/55596 are superseded by "exception for nonexistent file".

Also, I have no experience in using Gnulib so I'm not 100% sure I committed
exactly the right files, I'd love it if someone could check this is ok.

What do you all think about this approach?

Josselin Poiret (3):
  Update gnulib to 0.1.5414-8204d and add posix_spawn, posix_spawnp.
  Add spawn*.
  Move popen and posix procedures to spawn*.

 GNUmakefile                                |    2 +-
 build-aux/announce-gen                     |   69 +-
 build-aux/gendocs.sh                       |   50 +-
 build-aux/git-version-gen                  |   13 +-
 build-aux/gitlog-to-changelog              |    4 +-
 build-aux/gnu-web-doc-update               |    4 +-
 build-aux/gnupload                         |    4 +-
 build-aux/useless-if-before-free           |    6 +-
 build-aux/vc-list-files                    |    2 +-
 doc/gendocs_template                       |    4 +-
 doc/gendocs_template_min                   |    2 +-
 gnulib-local/m4/clock_time.m4.diff         |   12 +-
 lib/Makefile.am                            | 1252 +++++++++-------
 lib/_Noreturn.h                            |    2 +-
 lib/accept.c                               |    2 +-
 lib/accept4.c                              |    4 +-
 lib/access.c                               |   31 +
 lib/alignof.h                              |    2 +-
 lib/alloca.c                               |   35 -
 lib/alloca.in.h                            |    2 +-
 lib/arg-nonnull.h                          |    2 +-
 lib/arpa_inet.in.h                         |    2 +-
 lib/asnprintf.c                            |    2 +-
 lib/assure.h                               |    2 +-
 lib/attribute.h                            |   10 +-
 lib/basename-lgpl.c                        |    2 +-
 lib/basename-lgpl.h                        |    2 +-
 lib/binary-io.c                            |    2 +-
 lib/binary-io.h                            |    4 +-
 lib/bind.c                                 |    2 +-
 lib/btowc.c                                |    2 +-
 lib/byteswap.in.h                          |    2 +-
 lib/c++defs.h                              |    2 +-
 lib/c-ctype.c                              |    2 +-
 lib/c-ctype.h                              |    2 +-
 lib/c-strcase.h                            |    2 +-
 lib/c-strcasecmp.c                         |    2 +-
 lib/c-strcaseeq.h                          |    2 +-
 lib/c-strncasecmp.c                        |    2 +-
 lib/canonicalize-lgpl.c                    |    2 +-
 lib/cdefs.h                                |   76 +-
 lib/ceil.c                                 |    4 +-
 lib/cloexec.c                              |    2 +-
 lib/cloexec.h                              |    2 +-
 lib/close.c                                |    2 +-
 lib/concat-filename.c                      |   73 +
 lib/concat-filename.h                      |   46 +
 lib/connect.c                              |    2 +-
 lib/copysign.c                             |    4 +-
 lib/dirent.in.h                            |   24 +-
 lib/dirfd.c                                |    2 +-
 lib/dirname-lgpl.c                         |    2 +-
 lib/dirname.h                              |    2 +-
 lib/dup2.c                                 |    2 +-
 lib/duplocale.c                            |    4 +-
 lib/dynarray.h                             |    2 +-
 lib/eloop-threshold.h                      |    2 +-
 lib/errno.in.h                             |    2 +-
 lib/fcntl.c                                |    2 +-
 lib/fcntl.in.h                             |    6 +-
 lib/fd-hook.c                              |    2 +-
 lib/fd-hook.h                              |    2 +-
 lib/filename.h                             |    2 +-
 lib/findprog-in.c                          |  399 ++++++
 lib/findprog.h                             |   77 +
 lib/flexmember.h                           |    2 +-
 lib/float+.h                               |    2 +-
 lib/float.c                                |    2 +-
 lib/float.in.h                             |    2 +-
 lib/flock.c                                |    2 +-
 lib/floor.c                                |    4 +-
 lib/free.c                                 |    2 +-
 lib/frexp.c                                |    2 +-
 lib/fstat.c                                |    2 +-
 lib/fsync.c                                |    2 +-
 lib/full-read.c                            |    2 +-
 lib/full-read.h                            |    2 +-
 lib/full-write.c                           |    2 +-
 lib/full-write.h                           |    2 +-
 lib/gai_strerror.c                         |    2 +-
 lib/getaddrinfo.c                          |    2 +-
 lib/getdtablesize.c                        |    2 +-
 lib/getlogin.c                             |    2 +-
 lib/getpeername.c                          |    2 +-
 lib/getrandom.c                            |    2 +-
 lib/getsockname.c                          |    2 +-
 lib/getsockopt.c                           |    2 +-
 lib/gettext.h                              |   15 +-
 lib/hard-locale.c                          |    2 +-
 lib/hard-locale.h                          |    2 +-
 lib/iconv.c                                |    2 +-
 lib/iconv.in.h                             |    2 +-
 lib/iconv_close.c                          |    2 +-
 lib/iconv_open-aix.gperf                   |    2 +-
 lib/iconv_open-hpux.gperf                  |    2 +-
 lib/iconv_open-irix.gperf                  |    2 +-
 lib/iconv_open-osf.gperf                   |    2 +-
 lib/iconv_open-solaris.gperf               |    2 +-
 lib/iconv_open-zos.gperf                   |    2 +-
 lib/iconv_open-zos.h                       |  329 +++++
 lib/iconv_open.c                           |    2 +-
 lib/iconveh.h                              |    7 +-
 lib/idx.h                                  |   22 +-
 lib/inet_ntop.c                            |    2 +-
 lib/inet_pton.c                            |    2 +-
 lib/intprops-internal.h                    |  392 +++++
 lib/intprops.h                             |  359 +----
 lib/inttypes.h                             | 1509 ++++++++++++++++++++
 lib/inttypes.in.h                          |    2 +-
 lib/isfinite.c                             |    4 +-
 lib/isinf.c                                |    4 +-
 lib/isnan.c                                |    2 +-
 lib/isnand-nolibm.h                        |    2 +-
 lib/isnand.c                               |    2 +-
 lib/isnanf-nolibm.h                        |    2 +-
 lib/isnanf.c                               |    2 +-
 lib/isnanl-nolibm.h                        |    2 +-
 lib/isnanl.c                               |    2 +-
 lib/itold.c                                |    2 +-
 lib/langinfo.in.h                          |    2 +-
 lib/lc-charset-dispatch.c                  |    2 +-
 lib/lc-charset-dispatch.h                  |    2 +-
 lib/libc-config.h                          |   13 +-
 lib/libunistring.valgrind                  |    4 +-
 lib/limits.in.h                            |    2 +-
 lib/link.c                                 |    2 +-
 lib/listen.c                               |    2 +-
 lib/localcharset.c                         |    2 +-
 lib/localcharset.h                         |    2 +-
 lib/locale.in.h                            |    2 +-
 lib/localeconv.c                           |    2 +-
 lib/log.c                                  |    4 +-
 lib/log1p.c                                |    4 +-
 lib/lstat.c                                |    2 +-
 lib/malloc.c                               |    2 +-
 lib/malloc/.dirstamp                       |    0
 lib/malloc/dynarray-skeleton.c             |    2 +-
 lib/malloc/dynarray-skeleton.gl.h          |  529 +++++++
 lib/malloc/dynarray.gl.h                   |  174 +++
 lib/malloc/dynarray.h                      |    2 +-
 lib/malloc/dynarray_at_failure.c           |    2 +-
 lib/malloc/dynarray_emplace_enlarge.c      |    2 +-
 lib/malloc/dynarray_finalize.c             |    2 +-
 lib/malloc/dynarray_resize.c               |    2 +-
 lib/malloc/dynarray_resize_clear.c         |    2 +-
 lib/malloc/scratch_buffer.h                |    2 +-
 lib/malloc/scratch_buffer_dupfree.c        |    2 +-
 lib/malloc/scratch_buffer_grow.c           |    2 +-
 lib/malloc/scratch_buffer_grow_preserve.c  |    2 +-
 lib/malloc/scratch_buffer_set_array_size.c |    2 +-
 lib/malloca.c                              |   12 +-
 lib/malloca.h                              |    2 +-
 lib/math.c                                 |    2 +-
 lib/math.in.h                              |   16 +-
 lib/mbrtowc-impl-utf8.h                    |    2 +-
 lib/mbrtowc-impl.h                         |    2 +-
 lib/mbrtowc.c                              |    2 +-
 lib/mbsinit.c                              |    2 +-
 lib/mbtowc-impl.h                          |    2 +-
 lib/mbtowc-lock.c                          |    2 +-
 lib/mbtowc-lock.h                          |    2 +-
 lib/mbtowc.c                               |    2 +-
 lib/memchr.c                               |    2 +-
 lib/memchr.valgrind                        |    2 +-
 lib/mempcpy.c                              |    2 +-
 lib/minmax.h                               |    2 +-
 lib/mkdir.c                                |    4 +-
 lib/mkostemp.c                             |    2 +-
 lib/mktime-internal.h                      |    2 +-
 lib/mktime.c                               |   30 +-
 lib/msvc-inval.c                           |    2 +-
 lib/msvc-inval.h                           |    2 +-
 lib/msvc-nothrow.c                         |    2 +-
 lib/msvc-nothrow.h                         |    2 +-
 lib/netdb.in.h                             |    2 +-
 lib/netinet_in.in.h                        |    2 +-
 lib/nl_langinfo-lock.c                     |    2 +-
 lib/nl_langinfo.c                          |    2 +-
 lib/nproc.c                                |   24 +-
 lib/nproc.h                                |    2 +-
 lib/nstrftime.c                            |   28 +-
 lib/open.c                                 |    2 +-
 lib/pathmax.h                              |    2 +-
 lib/pipe.c                                 |    2 +-
 lib/pipe2.c                                |    2 +-
 lib/poll.c                                 |    2 +-
 lib/poll.in.h                              |    2 +-
 lib/printf-args.c                          |    2 +-
 lib/printf-args.h                          |    2 +-
 lib/printf-parse.c                         |    2 +-
 lib/printf-parse.h                         |    2 +-
 lib/putenv.c                               |    4 +-
 lib/raise.c                                |    2 +-
 lib/rawmemchr.c                            |   78 +-
 lib/rawmemchr.valgrind                     |    2 +-
 lib/read.c                                 |    2 +-
 lib/readlink.c                             |    6 +-
 lib/realloc.c                              |    2 +-
 lib/recv.c                                 |    2 +-
 lib/recvfrom.c                             |    2 +-
 lib/regcomp.c                              |  831 +++++------
 lib/regex.c                                |    3 +-
 lib/regex.h                                |   52 +-
 lib/regex_internal.c                       |   64 +-
 lib/regex_internal.h                       |   51 +-
 lib/regexec.c                              |   95 +-
 lib/rename.c                               |    4 +-
 lib/rmdir.c                                |    2 +-
 lib/round.c                                |    4 +-
 lib/safe-read.c                            |    2 +-
 lib/safe-read.h                            |    2 +-
 lib/safe-write.c                           |    2 +-
 lib/safe-write.h                           |    2 +-
 lib/same-inode.h                           |    2 +-
 lib/sched.h                                |  580 ++++++++
 lib/sched.in.h                             |   99 ++
 lib/scratch_buffer.h                       |    2 +-
 lib/select.c                               |    2 +-
 lib/send.c                                 |    2 +-
 lib/sendto.c                               |    2 +-
 lib/setenv.c                               |    2 +-
 lib/setlocale-lock.c                       |    2 +-
 lib/setlocale_null.c                       |    2 +-
 lib/setlocale_null.h                       |    2 +-
 lib/setsockopt.c                           |    2 +-
 lib/shutdown.c                             |    2 +-
 lib/signal.in.h                            |    2 +-
 lib/signbitd.c                             |    2 +-
 lib/signbitf.c                             |    2 +-
 lib/signbitl.c                             |    2 +-
 lib/size_max.h                             |    2 +-
 lib/snprintf.c                             |    2 +-
 lib/socket.c                               |    2 +-
 lib/sockets.c                              |    4 +-
 lib/sockets.h                              |    2 +-
 lib/spawn.c                                |   34 +
 lib/spawn.h                                | 1499 +++++++++++++++++++
 lib/spawn.in.h                             |  992 +++++++++++++
 lib/spawn_int.h                            |   72 +
 lib/spawni.c                               |  965 +++++++++++++
 lib/spawnp.c                               |   34 +
 lib/stat-time.c                            |    2 +-
 lib/stat-time.h                            |    8 +-
 lib/stat-w32.c                             |    2 +-
 lib/stat-w32.h                             |    2 +-
 lib/stat.c                                 |    2 +-
 lib/stdalign.in.h                          |    2 +-
 lib/stdbool.h                              |  116 ++
 lib/stdbool.in.h                           |   27 +-
 lib/stdckdint.h                            |   38 +
 lib/stdckdint.in.h                         |   37 +
 lib/stddef.in.h                            |    2 +-
 lib/stdint.in.h                            |    2 +-
 lib/stdio-read.c                           |  168 +++
 lib/stdio-write.c                          |  206 +++
 lib/stdio.in.h                             |   86 +-
 lib/stdlib.in.h                            |   66 +-
 lib/stpcpy.c                               |   49 +
 lib/strchrnul.c                            |  142 ++
 lib/strchrnul.valgrind                     |   28 +
 lib/strdup.c                               |    2 +-
 lib/streq.h                                |    2 +-
 lib/strftime.h                             |    4 +-
 lib/striconveh.c                           |  106 +-
 lib/striconveh.h                           |    2 +-
 lib/string.in.h                            |  175 ++-
 lib/stripslash.c                           |    2 +-
 lib/sys-limits.h                           |    2 +-
 lib/sys_file.in.h                          |    2 +-
 lib/sys_random.in.h                        |    8 +-
 lib/sys_select.in.h                        |   15 +-
 lib/sys_socket.c                           |    2 +-
 lib/sys_socket.in.h                        |    2 +-
 lib/sys_stat.in.h                          |   30 +-
 lib/sys_time.in.h                          |    2 +-
 lib/sys_times.in.h                         |    2 +-
 lib/sys_types.in.h                         |    2 +-
 lib/sys_uio.in.h                           |    2 +-
 lib/tempname.c                             |  176 +--
 lib/tempname.h                             |    4 +-
 lib/time-internal.h                        |    4 +-
 lib/time.in.h                              |   13 +-
 lib/time_r.c                               |    2 +-
 lib/time_rz.c                              |    4 +-
 lib/timegm.c                               |    2 +-
 lib/times.c                                |    2 +-
 lib/trunc.c                                |    4 +-
 lib/tzset.c                                |    4 +-
 lib/unistd.c                               |    2 +-
 lib/unistd.in.h                            |   21 +-
 lib/unsetenv.c                             |    2 +-
 lib/vasnprintf.c                           |  241 +---
 lib/vasnprintf.h                           |    2 +-
 lib/verify.h                               |   14 +-
 lib/vsnprintf.c                            |    2 +-
 lib/w32sock.h                              |    2 +-
 lib/warn-on-use.h                          |    8 +-
 lib/wchar.in.h                             |   73 +-
 lib/wcrtomb.c                              |    2 +-
 lib/wctype-h.c                             |    2 +-
 lib/wctype.in.h                            |    2 +-
 lib/windows-initguard.h                    |    2 +-
 lib/windows-spawn.c                        |  727 ++++++++++
 lib/windows-spawn.h                        |  157 ++
 lib/write.c                                |    2 +-
 lib/xalloc-oversized.h                     |    2 +-
 lib/xsize.c                                |    2 +-
 lib/xsize.h                                |    2 +-
 libguile/posix.c                           |  221 +--
 m4/00gnulib.m4                             |    2 +-
 m4/__inline.m4                             |    2 +-
 m4/absolute-header.m4                      |    2 +-
 m4/accept4.m4                              |    2 +-
 m4/access.m4                               |   16 +
 m4/alloca.m4                               |   12 +-
 m4/arpa_inet_h.m4                          |    2 +-
 m4/autobuild.m4                            |    2 +-
 m4/btowc.m4                                |    2 +-
 m4/builtin-expect.m4                       |    2 +-
 m4/byteswap.m4                             |   10 +-
 m4/canonicalize.m4                         |    2 +-
 m4/ceil.m4                                 |    2 +-
 m4/check-math-lib.m4                       |    2 +-
 m4/clock_time.m4                           |   20 +-
 m4/close.m4                                |    2 +-
 m4/codeset.m4                              |    2 +-
 m4/copysign.m4                             |    2 +-
 m4/dirent_h.m4                             |    2 +-
 m4/dirfd.m4                                |    2 +-
 m4/double-slash-root.m4                    |    2 +-
 m4/dup2.m4                                 |    2 +-
 m4/duplocale.m4                            |    2 +-
 m4/eaccess.m4                              |   12 +
 m4/eealloc.m4                              |    2 +-
 m4/environ.m4                              |    2 +-
 m4/errno_h.m4                              |   12 +-
 m4/exponentd.m4                            |    2 +-
 m4/exponentf.m4                            |    2 +-
 m4/exponentl.m4                            |    2 +-
 m4/extensions.m4                           |    2 +-
 m4/extern-inline.m4                        |   28 +-
 m4/fcntl-o.m4                              |    2 +-
 m4/fcntl.m4                                |    2 +-
 m4/fcntl_h.m4                              |    2 +-
 m4/findprog-in.m4                          |   11 +
 m4/flexmember.m4                           |    2 +-
 m4/float_h.m4                              |   22 +-
 m4/flock.m4                                |    2 +-
 m4/floor.m4                                |    2 +-
 m4/fpieee.m4                               |    2 +-
 m4/free.m4                                 |    2 +-
 m4/frexp.m4                                |    2 +-
 m4/fstat.m4                                |    2 +-
 m4/fsync.m4                                |    2 +-
 m4/func.m4                                 |    2 +-
 m4/getaddrinfo.m4                          |    2 +-
 m4/getdtablesize.m4                        |    2 +-
 m4/getlogin.m4                             |    2 +-
 m4/getrandom.m4                            |    2 +-
 m4/gettext.m4                              |  383 +++++
 m4/glibc2.m4                               |   30 +
 m4/glibc21.m4                              |   30 +
 m4/gnulib-cache.m4                         |    8 +-
 m4/gnulib-common.m4                        |  277 +++-
 m4/gnulib-comp.m4                          |  743 ++++++----
 m4/gnulib-tool.m4                          |   10 +-
 m4/host-cpu-c-abi.m4                       |    7 +-
 m4/hostent.m4                              |    2 +-
 m4/iconv.m4                                |   26 +-
 m4/iconv_h.m4                              |   18 +-
 m4/iconv_open-utf.m4                       |    2 +-
 m4/iconv_open.m4                           |    2 +-
 m4/include_next.m4                         |    8 +-
 m4/inet_ntop.m4                            |    2 +-
 m4/inet_pton.m4                            |    2 +-
 m4/intdiv0.m4                              |   84 ++
 m4/intl.m4                                 |  294 ++++
 m4/intldir.m4                              |   19 +
 m4/intlmacosx.m4                           |   51 +
 m4/intmax.m4                               |   33 +
 m4/intmax_t.m4                             |    2 +-
 m4/inttypes-pri.m4                         |   36 +
 m4/inttypes.m4                             |    6 +-
 m4/inttypes_h.m4                           |    2 +-
 m4/isfinite.m4                             |    2 +-
 m4/isinf.m4                                |    2 +-
 m4/isnan.m4                                |    2 +-
 m4/isnand.m4                               |    2 +-
 m4/isnanf.m4                               |    2 +-
 m4/isnanl.m4                               |    2 +-
 m4/langinfo_h.m4                           |    2 +-
 m4/largefile.m4                            |    9 +-
 m4/lcmessage.m4                            |   31 +
 m4/ld-version-script.m4                    |    2 +-
 m4/ldexp.m4                                |    2 +-
 m4/lib-ld.m4                               |    2 +-
 m4/lib-link.m4                             |    8 +-
 m4/lib-prefix.m4                           |    6 +-
 m4/libunistring.m4                         |    2 +-
 m4/limits-h.m4                             |   11 +-
 m4/link.m4                                 |    2 +-
 m4/localcharset.m4                         |    2 +-
 m4/locale-fr.m4                            |    2 +-
 m4/locale-ja.m4                            |    2 +-
 m4/locale-zh.m4                            |    2 +-
 m4/locale_h.m4                             |    2 +-
 m4/localeconv.m4                           |    2 +-
 m4/lock.m4                                 |   37 +
 m4/log.m4                                  |    2 +-
 m4/log1p.m4                                |    2 +-
 m4/longlong.m4                             |  106 ++
 m4/lstat.m4                                |    2 +-
 m4/malloc.m4                               |   13 +-
 m4/malloca.m4                              |    2 +-
 m4/math_h.m4                               |    2 +-
 m4/mathfunc.m4                             |    2 +-
 m4/mbrtowc.m4                              |    2 +-
 m4/mbsinit.m4                              |    2 +-
 m4/mbstate_t.m4                            |    2 +-
 m4/mbtowc.m4                               |    2 +-
 m4/memchr.m4                               |    2 +-
 m4/mempcpy.m4                              |    2 +-
 m4/minmax.m4                               |    2 +-
 m4/mkdir.m4                                |    2 +-
 m4/mkostemp.m4                             |    2 +-
 m4/mktime.m4                               |   31 +-
 m4/mmap-anon.m4                            |    2 +-
 m4/mode_t.m4                               |    2 +-
 m4/msvc-inval.m4                           |    2 +-
 m4/msvc-nothrow.m4                         |    2 +-
 m4/multiarch.m4                            |    2 +-
 m4/netdb_h.m4                              |    2 +-
 m4/netinet_in_h.m4                         |   10 +-
 m4/nl_langinfo.m4                          |    2 +-
 m4/nls.m4                                  |   32 +
 m4/nocrash.m4                              |    2 +-
 m4/nproc.m4                                |    2 +-
 m4/nstrftime.m4                            |    2 +-
 m4/off_t.m4                                |    2 +-
 m4/open-cloexec.m4                         |    2 +-
 m4/open-slash.m4                           |    2 +-
 m4/open.m4                                 |    2 +-
 m4/pathmax.m4                              |    2 +-
 m4/pid_t.m4                                |    2 +-
 m4/pipe.m4                                 |    2 +-
 m4/pipe2.m4                                |    2 +-
 m4/po.m4                                   |  449 ++++++
 m4/poll.m4                                 |    2 +-
 m4/poll_h.m4                               |    2 +-
 m4/posix_spawn.m4                          |  691 +++++++++
 m4/printf-posix.m4                         |   45 +
 m4/printf.m4                               |    2 +-
 m4/progtest.m4                             |   92 ++
 m4/putenv.m4                               |    2 +-
 m4/raise.m4                                |    2 +-
 m4/rawmemchr.m4                            |    2 +-
 m4/read.m4                                 |    2 +-
 m4/readlink.m4                             |    2 +-
 m4/realloc.m4                              |   12 +-
 m4/regex.m4                                |    2 +-
 m4/rename.m4                               |    2 +-
 m4/rmdir.m4                                |    2 +-
 m4/round.m4                                |    2 +-
 m4/safe-read.m4                            |    2 +-
 m4/safe-write.m4                           |    2 +-
 m4/sched_h.m4                              |  106 ++
 m4/select.m4                               |    2 +-
 m4/servent.m4                              |    2 +-
 m4/setenv.m4                               |    2 +-
 m4/setlocale_null.m4                       |    2 +-
 m4/sh-filename.m4                          |   24 +
 m4/signal_h.m4                             |    2 +-
 m4/signbit.m4                              |    2 +-
 m4/size_max.m4                             |    2 +-
 m4/snprintf.m4                             |    2 +-
 m4/socketlib.m4                            |    2 +-
 m4/sockets.m4                              |    2 +-
 m4/socklen.m4                              |    2 +-
 m4/sockpfaf.m4                             |    2 +-
 m4/spawn_h.m4                              |  151 ++
 m4/ssize_t.m4                              |    2 +-
 m4/stat-time.m4                            |    2 +-
 m4/stat.m4                                 |    2 +-
 m4/std-gnu11.m4                            |    2 +-
 m4/stdalign.m4                             |    9 +-
 m4/stdbool.m4                              |  124 +-
 m4/stddef_h.m4                             |   16 +-
 m4/stdint.m4                               |   10 +-
 m4/stdint_h.m4                             |    2 +-
 m4/stdio_h.m4                              |   33 +-
 m4/stdlib_h.m4                             |   16 +-
 m4/stpcpy.m4                               |   25 +
 m4/strchrnul.m4                            |   50 +
 m4/strdup.m4                               |    2 +-
 m4/string_h.m4                             |    6 +-
 m4/sys_file_h.m4                           |    2 +-
 m4/sys_random_h.m4                         |    2 +-
 m4/sys_select_h.m4                         |    2 +-
 m4/sys_socket_h.m4                         |    9 +-
 m4/sys_stat_h.m4                           |    8 +-
 m4/sys_time_h.m4                           |    2 +-
 m4/sys_times_h.m4                          |    2 +-
 m4/sys_types_h.m4                          |    2 +-
 m4/sys_uio_h.m4                            |    2 +-
 m4/tempname.m4                             |    2 +-
 m4/threadlib.m4                            |   64 +-
 m4/time_h.m4                               |    6 +-
 m4/time_r.m4                               |    2 +-
 m4/time_rz.m4                              |    2 +-
 m4/timegm.m4                               |    2 +-
 m4/times.m4                                |    2 +-
 m4/tm_gmtoff.m4                            |    2 +-
 m4/trunc.m4                                |    2 +-
 m4/tzset.m4                                |    2 +-
 m4/uintmax_t.m4                            |   30 +
 m4/unistd_h.m4                             |  191 +--
 m4/vararrays.m4                            |   72 +
 m4/vasnprintf.m4                           |    2 +-
 m4/visibility.m4                           |    2 +-
 m4/vsnprintf.m4                            |    2 +-
 m4/warn-on-use.m4                          |    2 +-
 m4/warnings.m4                             |    2 +-
 m4/wchar_h.m4                              |    6 +-
 m4/wchar_t.m4                              |    2 +-
 m4/wcrtomb.m4                              |    2 +-
 m4/wctype_h.m4                             |    2 +-
 m4/wint_t.m4                               |    2 +-
 m4/write.m4                                |    2 +-
 m4/xsize.m4                                |    2 +-
 m4/year2038.m4                             |   12 +-
 m4/zzgnulib.m4                             |    2 +-
 maint.mk                                   |   68 +-
 module/ice-9/popen.scm                     |   83 +-
 test-suite/tests/popen.test                |   14 +-
 test-suite/tests/posix.test                |   36 +-
 535 files changed, 16353 insertions(+), 3490 deletions(-)
 create mode 100644 lib/access.c
 create mode 100644 lib/concat-filename.c
 create mode 100644 lib/concat-filename.h
 create mode 100644 lib/findprog-in.c
 create mode 100644 lib/findprog.h
 create mode 100644 lib/iconv_open-zos.h
 create mode 100644 lib/intprops-internal.h
 create mode 100644 lib/inttypes.h
 create mode 100644 lib/malloc/.dirstamp
 create mode 100644 lib/malloc/dynarray-skeleton.gl.h
 create mode 100644 lib/malloc/dynarray.gl.h
 create mode 100644 lib/sched.h
 create mode 100644 lib/sched.in.h
 create mode 100644 lib/spawn.c
 create mode 100644 lib/spawn.h
 create mode 100644 lib/spawn.in.h
 create mode 100644 lib/spawn_int.h
 create mode 100644 lib/spawni.c
 create mode 100644 lib/spawnp.c
 create mode 100644 lib/stdbool.h
 create mode 100644 lib/stdckdint.h
 create mode 100644 lib/stdckdint.in.h
 create mode 100644 lib/stdio-read.c
 create mode 100644 lib/stdio-write.c
 create mode 100644 lib/stpcpy.c
 create mode 100644 lib/strchrnul.c
 create mode 100644 lib/strchrnul.valgrind
 create mode 100644 lib/windows-spawn.c
 create mode 100644 lib/windows-spawn.h
 create mode 100644 m4/access.m4
 create mode 100644 m4/eaccess.m4
 create mode 100644 m4/findprog-in.m4
 create mode 100644 m4/gettext.m4
 create mode 100644 m4/glibc2.m4
 create mode 100644 m4/glibc21.m4
 create mode 100644 m4/intdiv0.m4
 create mode 100644 m4/intl.m4
 create mode 100644 m4/intldir.m4
 create mode 100644 m4/intlmacosx.m4
 create mode 100644 m4/intmax.m4
 create mode 100644 m4/inttypes-pri.m4
 create mode 100644 m4/lcmessage.m4
 create mode 100644 m4/lock.m4
 create mode 100644 m4/longlong.m4
 create mode 100644 m4/nls.m4
 create mode 100644 m4/po.m4
 create mode 100644 m4/posix_spawn.m4
 create mode 100644 m4/printf-posix.m4
 create mode 100644 m4/progtest.m4
 create mode 100644 m4/sched_h.m4
 create mode 100644 m4/sh-filename.m4
 create mode 100644 m4/spawn_h.m4
 create mode 100644 m4/stpcpy.m4
 create mode 100644 m4/strchrnul.m4
 create mode 100644 m4/uintmax_t.m4
 create mode 100644 m4/vararrays.m4

base-commit: 61d8dab8eafd498306ce618582aab37497df77b4
-- 
2.37.2