-# $Id$
+# Old bash doesn't have completion support.
+if ! builtin complete 2>&1 | grep 'not a shell builtin' >/dev/null; then
+
# Helper!
-export COMPLETION_DIR_SSH=~/.ssh/hosts
-export COMPLETION_DIR_TELNET=~/.telnet/hosts
-export COMPLETION_DIR_RDP=~/.ssh/hosts
-export COMPLETION_DIR_PING="$COMPLETION_DIR_SSH $COMPLETION_DIR_TELNET $COMPLETION_DIR_RDP"
+COMPLETION_DIR_SSH=${PROFILE_HOME:-~}/.ssh/hosts
+COMPLETION_DIR_TELNET=${PROFILE_HOME:-~}/.telnet/hosts
+COMPLETION_DIR_RDP=${PROFILE_HOME:-~}/.rdp/hosts
+COMPLETION_DIR_PING="$COMPLETION_DIR_SSH $COMPLETION_DIR_TELNET $COMPLETION_DIR_RDP"
function _generic_completion() {
COMPLETION_DIR=${1+"$@"}
return 0
}
+# Host completion for SSH known hosts.
+function _known_hosts() {
+ cur=${COMP_WORDS[COMP_CWORD]}
+
+ HOSTS=$(sed 's/[ ].*//;s/,/\n/' ~/.ssh/known_hosts)
+
+ COMPREPLY=($(compgen -W "$HOSTS" -- "$cur"))
+ return 0
+}
+
# Process completion for kill, strace etc.
function _pid() {
cur=${COMP_WORDS[COMP_CWORD]}
return 0
}
+# Look for modules.
+function _modprobe() {
+ COMPREPLY=()
+ cur=${COMP_WORDS[COMP_CWORD]}
+
+ ver=$KERNEL
+ MODULES="$(find /lib/modules/$ver -name \*.ko | sed -n 's@^.*/\([^/]*\).ko$@\1@p')"
+
+ COMPREPLY=($(compgen -W "$MODULES" -- "$cur"))
+ return 0
+}
+
+# Look for loaded modules.
+function _rmmod() {
+ COMPREPLY=()
+ cur=${COMP_WORDS[COMP_CWORD]}
+
+ MODULES="$(lsmod | sed '1d;s/ .*$//')"
+
+ COMPREPLY=($(compgen -W "$MODULES" -- "$cur"))
+ return 0
+}
+
+# Find tags with GNU GLOBAL.
+function _global() {
+ COMPREPLY=()
+ cur=${COMP_WORDS[COMP_CWORD]}
+
+ COMPREPLY=($(global -c "$cur"))
+ return 0
+}
+
complete -F _ssh rollout
complete -F _ssh ssh
complete -F _ssh sshterm
complete -F _process killall
complete -F _pid kill
complete -F _pid strace
+complete -F _known_hosts kill_known_host
+complete -F _known_hosts knh
+complete -F _modprobe modprobe
+complete -F _rmmod rmmod
+complete -F _global global
+
+fi