diff options
author | Robby Russell <robby@planetargon.com> | 2013-04-23 20:37:48 -0700 |
---|---|---|
committer | Robby Russell <robby@planetargon.com> | 2013-04-23 20:37:48 -0700 |
commit | de1f803de92af360cf3ad7a984845d60eb9908c6 (patch) | |
tree | 3f173c260df473ea07f9fd1da9f006588d177231 /plugins/gpg-agent | |
parent | 84d9b020c2f461483704688678d450499d3f2733 (diff) | |
parent | 174e09ca8dec0e2c393718505e9fc0cfc0996e21 (diff) | |
download | zsh-de1f803de92af360cf3ad7a984845d60eb9908c6.tar.gz zsh-de1f803de92af360cf3ad7a984845d60eb9908c6.tar.bz2 zsh-de1f803de92af360cf3ad7a984845d60eb9908c6.zip |
Merge pull request #1620 from hreese/gpg-agent_with_sensible_ssh-agent
Disable ssh-agent support in gpg-agent-plugin if another ssh-agent is already available.
Diffstat (limited to 'plugins/gpg-agent')
-rw-r--r-- | plugins/gpg-agent/gpg-agent.plugin.zsh | 34 |
1 files changed, 19 insertions, 15 deletions
diff --git a/plugins/gpg-agent/gpg-agent.plugin.zsh b/plugins/gpg-agent/gpg-agent.plugin.zsh index 8cc71fd57..109af44c8 100644 --- a/plugins/gpg-agent/gpg-agent.plugin.zsh +++ b/plugins/gpg-agent/gpg-agent.plugin.zsh @@ -1,26 +1,30 @@ -# Based on ssh-agent code - local GPG_ENV=$HOME/.gnupg/gpg-agent.env -function start_agent { - /usr/bin/env gpg-agent --daemon --enable-ssh-support --write-env-file ${GPG_ENV} > /dev/null - chmod 600 ${GPG_ENV} - . ${GPG_ENV} > /dev/null +function start_agent_nossh { + eval $(/usr/bin/env gpg-agent --quiet --daemon --write-env-file ${GPG_ENV} 2> /dev/null) + chmod 600 ${GPG_ENV} + export GPG_AGENT_INFO +} + +function start_agent_withssh { + eval $(/usr/bin/env gpg-agent --quiet --daemon --enable-ssh-support --write-env-file ${GPG_ENV} 2> /dev/null) + chmod 600 ${GPG_ENV} + export GPG_AGENT_INFO + export SSH_AUTH_SOCK + export SSH_AGENT_PID } -# Source GPG agent settings, if applicable +# source settings of old agent, if applicable if [ -f "${GPG_ENV}" ]; then . ${GPG_ENV} > /dev/null - ps -ef | grep ${SSH_AGENT_PID} | grep gpg-agent > /dev/null || { - start_agent; - } -else - start_agent; fi -export GPG_AGENT_INFO -export SSH_AUTH_SOCK -export SSH_AGENT_PID +# check for existing ssh-agent +if ssh-add -l > /dev/null 2> /dev/null; then + start_agent_nossh; +else + start_agent_withssh; +fi GPG_TTY=$(tty) export GPG_TTY |