X-Git-Url: https://git.sev.monster/~sev/dotfiles.git/blobdiff_plain/3cebacf81a70ca8eb1d6a18039b5d6cf43115839..bc7442960295bf9f0b7578aa6086fa349570fb22:/etc/zsh/.zprofile diff --git a/etc/zsh/.zprofile b/etc/zsh/.zprofile index 5b5870f..3aedb8c 100644 --- a/etc/zsh/.zprofile +++ b/etc/zsh/.zprofile @@ -83,6 +83,8 @@ if [[ ! -v _sev_setup_gpg_forward && -v commands[gpg] ]] { # check for a forwarded socket if [[ -v SSH_CLIENT ]] { + # find newest socket owned by us + # XXX: race condition s=($_GNUPG_SOCK_DEST_BASE*(N=u[$LOGNAME]oc[1])) if [[ -n $s ]] { # create new forward dir @@ -145,11 +147,9 @@ if [[ -v commands[gpg-connect-agent] && export GPG_TTY=$(tty) if [[ ( -v DISPLAY || -v WAYLAND_DISPLAY ) && ${PINENTRY_USER_DATA/USE_TTY=0} == $PINENTRY_USER_DATA ]] - export PINENTRY_USER_DATA=USE_TTY=0 - # XXX: we are assuming this is our pinentry from .local/bin - sed -Ei 's^([[:space:]]*pinentry-program[[:space:]]).*$\1'$HOME'/.local/bin/pinentry' \ + export PINENTRY_USER_DATA=${${:-${PINENTRY_USER_DATA//USE_TTY=[01] #/} USE_TTY=0}/# ##/} + sed -Ei 's^([[:space:]]*pinentry-program[[:space:]]).*/\.local/bin/pinentry$\1'$HOME'/.local/bin/pinentry' \ ${GNUPGHOME:-~/.gnupg}/gpg-agent.conf 2>/dev/null - # XXX: could check for changes before doing this to save perf gpg-connect-agent RELOADAGENT UPDATESTARTUPTTY /bye >/dev/null 2>&1 if {$p} { gpg-connect-agent /subst /serverpid \ @@ -184,9 +184,14 @@ if [[ ! -v _sev_setup_ssh ]] { export SSH_AUTH_SOCK=$sock export SSH_AGENT_PID=$pid } else { + # remove stale socket and dir + if [[ -v $sock ]] { + [[ -e $sock ]] && rm $sock 2>/dev/null + [[ -d ${sock:h} ]] && rmdir ${sock:h} 2>/dev/null + } # TODO: ensure ssh-agent path looks legit to avoid unsafe eval? # XXX: doesn't appear to be any other way to handle redirection. - # because eval needs to write to current scope environment + # because eval needs to write to current environment, # subshells can't be used to capture output and print. c='TMPDIR=$_sev_tmp ${okc}ssh-agent' if [[ -o interactive ]] {