From: Mark Wooding Date: Sat, 5 Nov 2016 21:28:22 +0000 (+0000) Subject: bin/start-ssh-agent: Fiddle the startup logic a bit. X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/profile/commitdiff_plain/af254ca9d25d12c361482c701799ca5e55454c09?ds=sidebyside bin/start-ssh-agent: Fiddle the startup logic a bit. Make the switch variables be `t' or `nil', rather than possibly empty. Use `case' to test them rather than `if'. --- diff --git a/bin/start-ssh-agent b/bin/start-ssh-agent index c72e129..30c0bc7 100755 --- a/bin/start-ssh-agent +++ b/bin/start-ssh-agent @@ -8,7 +8,7 @@ case "${SHELL-/bin/sh}" in *csh*) style=csh;; *) style=sh;; esac -force= chosen= commands= +force=nil chosen= commands= while [ $# -gt 0 ]; do case "$1" in -h | --help) echo "$usage"; exit 0 ;; @@ -31,34 +31,36 @@ esac ### Should I start a new agent? case "$force,$SSH_AUTH_SOCK" in - t,* | ,) - start=t + t,* | nil,) + foundp=nil ;; *) - start= + foundp=t set +e; ssh-add -l >/dev/null 2>&1; rc=$?; set -e - [ $rc -ge 2 ] && start=t + [ $rc -ge 2 ] && foundp=nil ;; esac ### If so, do that -if [ "$start" ]; then - hostname=${HOST-$(hostname)} - user=${USER-${LOGNAME-$(whoami)}} - dir=$TMPDIR/.ssh-agent.$hostname.$user; socket=$dir/sock; pid=$dir/pid - mkdir -p -m700 "$dir" - SSH_AUTH_SOCK=$socket; export SSH_AUTH_SOCK - set +e; ssh-add -l >/dev/null 2>&1; rc=$?; set -e - if [ $rc -ge 2 ]; then - if [ -f "$pid" ]; then - kill $(cat "$pid") >/dev/null 2>&1 || : - fi - rm -f "$socket" "$pid" - (cd /; exec ssh-agent -d -a "$socket" >/dev/null 2>&1)& - echo $! >"$pid" +case $foundp in + nil) + hostname=${HOST-$(hostname)} + user=${USER-${LOGNAME-$(whoami)}} + dir=$TMPDIR/.ssh-agent.$hostname.$user; socket=$dir/sock; pid=$dir/pid + mkdir -p -m700 "$dir" SSH_AUTH_SOCK=$socket; export SSH_AUTH_SOCK - fi -fi + set +e; ssh-add -l >/dev/null 2>&1; rc=$?; set -e + if [ $rc -ge 2 ]; then + if [ -f "$pid" ]; then + kill $(cat "$pid") >/dev/null 2>&1 || : + fi + rm -f "$socket" "$pid" + (cd /; exec ssh-agent -d -a "$socket" >/dev/null 2>&1)& + echo $! >"$pid" + SSH_AUTH_SOCK=$socket; export SSH_AUTH_SOCK + fi + ;; +esac ### Run a program, or export the details case $style in