# Copyright © 2023 Nick Bowler
#
-# Compatibility helper for Autotest test suites. This should be included
-# before expanding AT_INIT
+# Autotest monkey patches to fix some issues. This should be included before
+# expanding AT_INIT.
#
# License WTFPL2: Do What The Fuck You Want To Public License, version 2.
# This is free software: you are free to do what the fuck you want to.
# There is NO WARRANTY, to the extent permitted by law.
-# Redefine AT_INIT to work around nonportable constructs in current
-# (as of 2023) Autoconf releases:
+# In a shell function, redirections on : are not correctly handled by some
+# shells, including Solaris 10 /bin/sh. Work around the problem using 'eval'.
+# See the following Autoconf patch description for further details:
#
-# - In a shell function, redirections on : are not correctly handled
-# by Solaris /bin/sh. See the following Autoconf patch for details:
+# https://lists.gnu.org/archive/html/autoconf-patches/2021-03/msg00000.html
+m4_define([AT_INIT],
+ m4_bpatsubst(m4_dquote(m4_defn([AT_INIT])),
+ [^\( *\)\(: >"\$at_stdout".*$\)], [\1eval '\2']))
+
+# Parsing of command-line options with arguments is busted in the two-argument
+# form if the option name contains a hyphen. Apply a fix for this bug. See
+# the following Autoconf patch description for further details:
#
-# https://lists.gnu.org/archive/html/autoconf-patches/2021-03/msg00000.html
+# https://lists.gnu.org/archive/html/autoconf-patches/2020-02/msg00000.html
+m4_define([_AT_ARG_OPTION],
+ m4_bpatsubst(m4_dquote(m4_defn([_AT_ARG_OPTION])),
+ [at_prev=--AT_first_option_tr], [at_prev=--AT_first_option]))
+# The computation of the elapsed time can crash the testsuite on DJGPP because
+# in this environment date +%s can return a string that starts with a 0, which
+# bash interprets as octal digits in arithmetic expansions. With a working
+# GNU-like date +%s the output should never start with a 0 so just reject
+# anything that does.
m4_define([AT_INIT],
m4_bpatsubst(m4_dquote(m4_defn([AT_INIT])),
- [^\( *\)\(: >"\$at_stdout".*$\)], [\1eval '\2']))
+ [\[0-9]\*,\[0-9]\*], [[1-9][0-9]*,[1-9][0-9]*]))