chiark
/
gitweb
/
~mdw
/
profile
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
dot/gnus.el: Read active file unconditionally.
[profile]
/
bin
/
start-ssh-agent
diff --git
a/bin/start-ssh-agent
b/bin/start-ssh-agent
index bfb2608f6c6e645be26c9549a6bbb53ff1a62728..88fd657fcd22c039769e531677aaf85108e50b61 100755
(executable)
--- a/
bin/start-ssh-agent
+++ b/
bin/start-ssh-agent
@@
-29,6
+29,12
@@
case $chosen,$style in
;;
esac
;;
esac
+## Check that this stands a chance of working.
+if ! type >/dev/null 2>&1 ssh-agent || ! type >/dev/null >&1 ssh-add; then
+ echo >&2 "$0: ssh not installed; chickening out"
+ exit 1
+fi
+
## Some useful variables.
hostname=${HOST-$(hostname)}
user=${USER-${LOGNAME-$(id -un)}} uid=${UID-$(id -u)}
## Some useful variables.
hostname=${HOST-$(hostname)}
user=${USER-${LOGNAME-$(id -un)}} uid=${UID-$(id -u)}
@@
-68,13
+74,20
@@
case $foundp in
nil)
mkdir -p -m700 "$dir"
SSH_AUTH_SOCK=$socket
nil)
mkdir -p -m700 "$dir"
SSH_AUTH_SOCK=$socket
+ p=$PATH
+ runes=
+ while :; do
+ case $p in *:*) d=${p%%:*} p=${p#*:} ;; *) d=$p p= ;; esac
+ if [ -x "${d+$d/}setsid" ]; then runes="$runes setsid"; break; fi
+ case $p in "") break ;; esac
+ done
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"
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)&
+ (cd /; exec
$runes ssh-agent -d -a "$socket" </dev/null
>/dev/null 2>&1)&
echo $! >"$pid"
SSH_AUTH_SOCK=$socket
fi
echo $! >"$pid"
SSH_AUTH_SOCK=$socket
fi