Make the switch variables be `t' or `nil', rather than possibly empty.
Use `case' to test them rather than `if'.
*csh*) style=csh;;
*) style=sh;;
esac
*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 ;;
while [ $# -gt 0 ]; do
case "$1" in
-h | --help) echo "$usage"; exit 0 ;;
### Should I start a new agent?
case "$force,$SSH_AUTH_SOCK" in
### Should I start a new agent?
case "$force,$SSH_AUTH_SOCK" in
+ t,* | nil,)
+ foundp=nil
set +e; ssh-add -l >/dev/null 2>&1; rc=$?; set -e
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
;;
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
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"
+ SSH_AUTH_SOCK=$socket; export SSH_AUTH_SOCK
+ fi
+ ;;
+esac
### Run a program, or export the details
case $style in
### Run a program, or export the details
case $style in