X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=gnupg-agent.sh;h=72dda0c7602e0fa745b06fd0cee346eb0f6c9333;hb=055da82fd15fc5b7c4a55e5421998095f9509f44;hp=1c290200b379a124e6f36b6532bc3c3157708bb1;hpb=a946dd2acf00fbe320febb5acba0ed43e31978c6;p=packages%2Fgnupg2.git diff --git a/gnupg-agent.sh b/gnupg-agent.sh index 1c29020..72dda0c 100644 --- a/gnupg-agent.sh +++ b/gnupg-agent.sh @@ -1,24 +1,33 @@ #!/bin/sh if [ -r "${HOME}/.gnupg/gpg.conf" ]; then - CFG="${HOME}/.gnupg/gpg.conf" + CFG="${HOME}/.gnupg/gpg.conf" else - CFG="${HOME}/.gnupg/options" + CFG="${HOME}/.gnupg/options" fi -X11=no +seahorse=no if [ -r "${HOME}/.gnupg/gpg-agent.conf" ]; then - grep -qE "^[[:blank:]]*pinentry-program[[:blank:]]*.*pinentry-(qt|gtk)" "${HOME}/.gnupg/gpg-agent.conf" && X11=yes + grep -qE "^[[:blank:]]*pinentry-program[[:blank:]]*.*seahorse-agent" "${HOME}/.gnupg/gpg-agent.conf" && seahorse=yes fi if grep -q "^[[:blank:]]*use-agent" ${CFG} 2>/dev/null; then - if [ -f "${HOME}/.gnupg/GPG_AGENT_INFO" ] && pid="$(cut -d: -f2 $HOME/.gnupg/GPG_AGENT_INFO)" && [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null; then - export GPG_AGENT_INFO="$(cat ${HOME}/.gnupg/GPG_AGENT_INFO)" - else - if [ -n "$DISPLAY" -a "$X11" = "yes" ] || [ -z "$DISPLAY" -a "$X11" = "no" ]; then - eval "$(gpg-agent --daemon)" - echo $GPG_AGENT_INFO > ~/.gnupg/GPG_AGENT_INFO - export GPG_AGENT_INFO + if [ -f "${HOME}/.gnupg/GPG_AGENT_INFO" ] && \ + pid="$(cut -d: -f2 $HOME/.gnupg/GPG_AGENT_INFO)" && \ + agent="$(readlink -n "/proc/$pid/exe")" && agent=${agent%% *} && \ + [ "$agent" = "/usr/bin/gpg-agent" -o "$agent" = "/usr/bin/seahorse-agent" ]; then + export GPG_AGENT_INFO="$(cat ${HOME}/.gnupg/GPG_AGENT_INFO)" + else + if [ "$seahorse" = "no" ]; then + eval "$(gpg-agent --daemon)" + else + eval "$(seahorse-agent --variables)" + fi + echo $GPG_AGENT_INFO > ~/.gnupg/GPG_AGENT_INFO + export GPG_AGENT_INFO fi - fi fi +unset agent +unset seahorse +unset CFG +unset pid