+TEST_SIMPLE_PROGRAM_PROBES([bison])
+
+AT_SETUP([md5 probes])
+AT_KEYWORDS([DX_PROG_MD5 program])
+AT_CAPTURE_FILE([config.log])
+
+mkdir bin
+cp -P "$srcdir/t/md5.sh" bin/md5sum
+
+AT_DATA([test.in],
+[[MD5=@MD5@
+dx_cv_md5_works=@dx_cv_md5_works@
+dx_cv_md5_outpos=@dx_cv_md5_outpos@
+]])
+
+TEST_CONFIGURE_AC([[DX_PROG_MD5
+AC_SUBST([dx_cv_md5_works])
+AC_SUBST([dx_cv_md5_outpos])
+
+set x conftest*; shift
+if test -f $[]1; then
+ AC_MSG_ERROR([$[]1 left behind by [D@@&t@&t@X_PROG_MD5]])
+fi
+
+AC_CONFIG_FILES([test])
+]])
+TEST_AUTORECONF
+
+# Check the search via path lookup
+save_PATH=$PATH
+PATH=`pwd`/bin${PATH:+":$PATH"}
+
+TEST_PATH_LOOKUP([expected], [md5sum])
+TEST_CONFIGURE
+AT_CHECK_UNQUOTED([cat test], [0], [MD5=$expected
+dx_cv_md5_works=yes
+dx_cv_md5_outpos=front
+])
+
+mv bin/md5sum bin/md5
+TEST_PATH_LOOKUP([expected], [md5])
+TEST_CONFIGURE([MD5_DIRECTION=reverse])
+AT_CHECK_UNQUOTED([cat test], [0], [MD5=$expected -r
+dx_cv_md5_works=yes
+dx_cv_md5_outpos=front
+])
+
+mv bin/md5 bin/openssl
+TEST_PATH_LOOKUP([expected], [openssl])
+TEST_CONFIGURE([MD5_DIRECTION=reverse MD5_NO_R=true])
+AT_CHECK_UNQUOTED([cat test], [0], [MD5=$expected md5
+dx_cv_md5_works=yes
+dx_cv_md5_outpos=back
+])
+
+PATH=$save_PATH
+
+# Check the search via user override
+TEST_CONFIGURE([MD5_DIRECTION=reverse MD5="$srcdir/t/md5.sh"])
+AT_CHECK_UNQUOTED([cat test], [0], [MD5=$srcdir/t/md5.sh
+dx_cv_md5_works=yes
+dx_cv_md5_outpos=back
+])
+
+# Check that a bogus program doesn't come back as valid.
+TEST_CONFIGURE([MD5=true])
+AT_CHECK([grep dx_cv_md5_works test], [0], [dx_cv_md5_works=no
+])
+
+AT_CLEANUP
+
+AT_SETUP([join probes])
+
+AT_DATA([test.in],
+[[JOIN=@JOIN@
+dx_cv_join_works=@dx_cv_join_works@
+]])
+
+TEST_CONFIGURE_AC([[DX_PROG_JOIN
+AC_SUBST([dx_cv_join_works])
+
+set x conftest*; shift
+if test -f $[]1; then
+ AC_MSG_ERROR([$[]1 left behind by [D@@&t@&t@X_PROG_JOIN]])
+fi
+
+AC_CONFIG_FILES([test])
+]])
+TEST_AUTORECONF
+
+TEST_CONFIGURE([JOIN=true AWK="$AWK"])
+AT_CHECK_UNQUOTED([$AWK '{ print $1 }' test], [0],
+[JOIN=$AWK
+dx_cv_join_works=no
+])
+
+save_IFS=$IFS
+IFS='='; read x JOIN <test
+IFS=$save_IFS
+
+AT_DATA([a],
+[[a
+b
+c
+d
+]])
+
+AT_DATA([b],
+[[b
+d
+d
+]])
+
+AT_CHECK([$JOIN a b], [0], [[b
+d
+d
+]])
+
+TEST_CONFIGURE([JOIN="$JOIN"])
+AT_CHECK_UNQUOTED([cat test], [0],
+[JOIN=$JOIN
+dx_cv_join_works=yes
+])
+
+AT_CLEANUP