chiark / gitweb /
bin/start-ssh-agent: Fiddle the startup logic a bit.
authorMark Wooding <mdw@distorted.org.uk>
Sat, 5 Nov 2016 21:28:22 +0000 (21:28 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Wed, 30 Nov 2016 12:52:08 +0000 (12:52 +0000)
Make the switch variables be `t' or `nil', rather than possibly empty.
Use `case' to test them rather than `if'.

bin/start-ssh-agent

index c72e1294cbf91a15df3c824f3c23ac553cc58003..30c0bc7f5a5a913167dbade4be85f58dddeed91e 100755 (executable)
@@ -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