aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoey Hess <joey@kitenet.net>2014-05-15 14:27:56 -0400
committerJoey Hess <joey@kitenet.net>2014-05-15 14:31:26 -0400
commit8b619df24a503fae088174824e9041d54caf011d (patch)
tree11b2fe0ad03876d74d42b34c1c10647ed8cbe6b4
parentc826c392088ab12bedc1b549b58c7a7a91e2153c (diff)
downloadgit-remote-gcrypt-8b619df24a503fae088174824e9041d54caf011d.zip
git-remote-gcrypt-8b619df24a503fae088174824e9041d54caf011d.tar.gz
git-remote-gcrypt-8b619df24a503fae088174824e9041d54caf011d.tar.bz2
Fix to work when there is no controlling terminal, but GPG_AGENT_INFO is set. Pass --no-tty to gpg in this situation. This is needed to interoperate with the git-annex assistant, which often runs without a controlling terminal, and will in a new version always do so.
Conflicts: debian/changelog
-rwxr-xr-xgit-remote-gcrypt27
1 files changed, 19 insertions, 8 deletions
diff --git a/git-remote-gcrypt b/git-remote-gcrypt
index 0a382e2..8c1efa6 100755
--- a/git-remote-gcrypt
+++ b/git-remote-gcrypt
@@ -18,7 +18,6 @@
# See README.rst for usage instructions
set -e # errexit
-set -u # nounset
set -f # noglob
set -C # noclobber
@@ -313,14 +312,14 @@ CLEAN_FINAL()
ENCRYPT()
{
- gpg --batch --force-mdc --compress-algo none --trust-model=always --passphrase-fd 3 -c 3<<EOF
+ rungpg --batch --force-mdc --compress-algo none --trust-model=always --passphrase-fd 3 -c 3<<EOF
$1
EOF
}
DECRYPT()
{
- gpg -q --batch --no-default-keyring --secret-keyring /dev/null \
+ rungpg -q --batch --no-default-keyring --secret-keyring /dev/null \
--keyring /dev/null --passphrase-fd 3 -d 3<<EOF
$1
EOF
@@ -333,7 +332,7 @@ PRIVENCRYPT()
if isnonnull "$Conf_signkey"; then
set -- "$@" -u "$Conf_signkey"
fi
- gpg --compress-algo none --trust-model=always -se "$@"
+ rungpg --compress-algo none --trust-model=always -se "$@"
}
# $1 is the match for good signature, $2 is the textual signers list
@@ -341,7 +340,7 @@ PRIVDECRYPT()
{
local status_=
exec 4>&1 &&
- status_=$(gpg --status-fd 3 -q -d 3>&1 1>&4) &&
+ status_=$(rungpg --status-fd 3 -q -d 3>&1 1>&4) &&
xfeed "$status_" grep "^\[GNUPG:\] ENC_TO " >/dev/null &&
(xfeed "$status_" grep -e "$1" >/dev/null || {
echo_info "Failed to verify manifest signature!" &&
@@ -353,17 +352,29 @@ PRIVDECRYPT()
# Generate $1 random bytes
genkey()
{
- gpg --armor --gen-rand 1 "$1"
+ rungpg --armor --gen-rand 1 "$1"
}
gpg_hash()
{
local hash_=
- hash_=$(gpg --with-colons --print-md "$1" | tr A-F a-f)
+ hash_=$(rungpg --with-colons --print-md "$1" | tr A-F a-f)
hash_=${hash_#:*:}
xecho "${hash_%:}"
}
+rungpg()
+{
+ # gpg will fail to run when there is no controlling tty,
+ # due to trying to print messages to it, even if a gpg agent is set
+ # up. --no-tty fixes this.
+ if [ "x$GPG_AGENT_INFO" != "x" ]; then
+ gpg --no-tty "$@"
+ else
+ gpg "$@"
+ fi
+}
+
# Pass the branch/ref by pipe to git
safe_git_rev_parse()
{
@@ -407,7 +418,7 @@ read_config()
for recp_ in $conf_part
do
- gpg_list=$(gpg --with-colons --fingerprint -k "$recp_")
+ gpg_list=$(rungpg --with-colons --fingerprint -k "$recp_")
filter_to @r_keyinfo "pub*" "$gpg_list"
filter_to @r_keyfpr "fpr*" "$gpg_list"
isnull "$r_keyinfo" || isnonnull "${r_keyinfo##*"$Newline"*}" ||