diff options
author | Heiko Reese <mail@heiko-reese.de> | 2013-02-21 02:46:20 +0100 |
---|---|---|
committer | Heiko Reese <mail@heiko-reese.de> | 2013-02-21 02:46:20 +0100 |
commit | 014ed1f0e5c85a10ab7538160e2d3421ab3dbf7e (patch) | |
tree | cce342a53c3501fe1f675fb69632921e54b2f0ed /plugins/gpg-agent/gpg-agent.plugin.zsh | |
parent | fce68bbba0be99cfd49f9e46572b2d12d0a86d45 (diff) | |
download | zsh-014ed1f0e5c85a10ab7538160e2d3421ab3dbf7e.tar.gz zsh-014ed1f0e5c85a10ab7538160e2d3421ab3dbf7e.tar.bz2 zsh-014ed1f0e5c85a10ab7538160e2d3421ab3dbf7e.zip |
Disable ssh-agent support if another ssh-agent is already running.
Diffstat (limited to 'plugins/gpg-agent/gpg-agent.plugin.zsh')
-rw-r--r-- | plugins/gpg-agent/gpg-agent.plugin.zsh | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/plugins/gpg-agent/gpg-agent.plugin.zsh b/plugins/gpg-agent/gpg-agent.plugin.zsh index 8cc71fd57..63c433413 100644 --- a/plugins/gpg-agent/gpg-agent.plugin.zsh +++ b/plugins/gpg-agent/gpg-agent.plugin.zsh @@ -1,26 +1,31 @@ -# 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 --daemon --write-env-file ${GPG_ENV}) > /dev/null + export GPG_AGENT_INFO +} + +function start_agent_withssh { + eval $(/usr/bin/env gpg-agent --daemon --enable-ssh-support --write-env-file ${GPG_ENV}) > /dev/null + export GPG_AGENT_INFO + export SSH_AUTH_SOCK + export SSH_AGENT_PID } -# Source GPG agent settings, if applicable +# make sure all created files are u=rw only +umask 177 + +# 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 |