[Bash-completion-commits] ./current r1271: completion for strace
Guillaume Rousse
guillomovitch at zarb.org
Mon Jan 19 20:51:24 UTC 2009
------------------------------------------------------------
revno: 1271
committer: Guillaume Rousse <guillomovitch at zarb.org>
branch nick: current
timestamp: Mon 2009-01-19 21:51:24 +0100
message:
completion for strace
added:
to_review/strace
-------------- next part --------------
=== added file 'to_review/strace'
--- a/to_review/strace 1970-01-01 00:00:00 +0000
+++ b/to_review/strace 2009-01-19 20:51:24 +0000
@@ -0,0 +1,77 @@
+# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*-
+# ex: ts=8 sw=8 noet filetype=sh
+#
+# bash completion for strace
+
+have strace &&
+_strace()
+{
+ local cur prev offset i syscalls
+
+ # check if we're stil completing strace
+ offset=0
+ for (( i=1; i <= COMP_CWORD; i++ )); do
+ case ${COMP_WORDS[$i]} in
+ -@(o|e|p))
+ i=$((i+1))
+ continue
+ ;;
+ -*)
+ continue
+ ;;
+ esac
+ offset=$i
+ break
+ done
+
+ if [ $offset -gt 0 ]; then
+ _command_offset $offset
+ else
+
+ COMPREPLY=()
+ cur=`_get_cword`
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ case $prev in
+ -e)
+ if [[ "$cur" == *=* ]]; then
+ prev=${cur/=*/}
+ cur=${cur/*=/}
+ syscalls=$(awk '/^#define __NR/ {print $2}' \
+ /usr/include/asm/unistd.h | sed -e \
+ 's/__NR_//')
+ if [ "$prev" = 'trace' ]; then
+ COMPREPLY=( $( compgen -W "$syscalls \
+ file process network signal ipc desc \
+ all none" -- $cur) )
+ else
+ COMPREPLY=( $( compgen -W "$syscalls \
+ all none" -- $cur) )
+ fi
+ else
+ COMPREPLY=( $( compgen -W 'trace= abbrev= \
+ verbose= raw= signal= read= write=' \
+ -- $cur ) )
+ fi
+ return 0
+ ;;
+ -o)
+ _filedir
+ return 0
+ ;;
+ -p)
+ _pids
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-c -d -f -ff -F -h -i -q \
+ -r -t -tt -ttt -T -v -V -x -xx -a -e -o -O -p \
+ -s -S -u -E' -- $cur ) )
+ else
+ COMPREPLY=( $( compgen -c -- $cur ) )
+ fi
+ fi
+} &&
+complete -F _strace strace
More information about the Bash-completion-commits
mailing list