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