#!/bin/sh
set -e
-for attempt in '' ' ' exec; do
-
-set +e
-$attempt \
-$DGIT_TEST_REAL_GPG \
- --agent-program=$DGIT_STUNT_AGENT \
- "$@"
-rc=$?
-set -e
-
-if [ $rc != 2 ]; then exit $rc; fi
-
-echo >&2 "WARNING - GNUPG FAILED $rc - STUNT GNUPG $attempt $*"
-
-sh -ec '
- if [ "x$DGIT_GNUPG_STUNT_ERRLOG" != x ]; then
- exec >"$DGIT_GNUPG_STUNT_ERRLOG"
- else
- exec 2>/dev/null
- fi
- exec >/dev/tty
- printf "%s\n" "$*"
-' x "GNUPG WRAPPER - TROUBLE - $HOME $GNUPGHOME - FAILED $rc $attempt $*"
-
-sleep 10
-
-done
-
-exit 127
+exec \
+with-lock-ex -w "$DGIT_TEST_GNUPG_GLOBAL_LOCK" \
+ sh -c '
+ "$@" 9>&2 2>>"$DGIT_TEST_GNUPG_LOG"
+ rc=$?
+ if [ $rc = 0 ]; then exit 0; fi
+ if [ "x$DGIT_TEST_BYHAND" != x ]; then
+ echo >&2 "BYHAND, not dumping $DGIT_TEST_GNUPG_LOG"
+ else
+ echo >&2 "########################################"
+ echo >&2 "$DGIT_TEST_GNUPG_LOG"
+ sed '\''s/^/\[gnupg-workarounds] /'\'' >&2 \
+ "$DGIT_TEST_GNUPG_LOG"
+ echo >&2 "end of $DGIT_TEST_GNUPG_LOG"
+ echo >&2 "########################################"
+ fi
+ exit $rc
+ ' x \
+ "$DGIT_TEST_TROOT"/tstunt/gpg-withagent "$@"