* PATCH: update strace completion
@ 2023-11-01 22:44 Oliver Kiddle
0 siblings, 0 replies; 2+ messages in thread
From: Oliver Kiddle @ 2023-11-01 22:44 UTC (permalink / raw)
To: Zsh workers
This updates completion of strace through to version 6.5.
Oliver
diff --git a/Completion/Linux/Command/_strace b/Completion/Linux/Command/_strace
index b3b6f5096..b1c7e1c8f 100644
--- a/Completion/Linux/Command/_strace
+++ b/Completion/Linux/Command/_strace
@@ -11,6 +11,7 @@ _arguments -C -s \
\*{-E+,--env=}'[set or remove exported environment variable]:variable:->envars' \
'(:)*'{-p+,--attach=}'[attach to the process with specified process ID and begin tracing]:process ID:_pids' \
"${root}(-u --user)"{-u+,--user=}'[run as specified user]:user:_users' \
+ '--argv0=[set argv0 for program]:name' \
'(-b --detach-on)'{-b+,--detach-on=}'[detach from process on specified syscall]:syscall:(execve)' \
'(--daemonize)-D[run tracer as detached grandchild, keeping traced process as direct child of calling process]' \
'(-D)--daemonize=-[specify how to run tracer process]::method:(grandchild pgroup session)' \
@@ -45,11 +46,14 @@ _arguments -C -s \
'(-v --no-abbrev)'{-v,--no-abbrev}'[print unabbreviated versions of environment, stat, termios, etc. calls]' \
'(-xx --strings-in-hex)-x[print all non-ASCII strings in hexadecimal string format]' \
'(-x --strings-in-hex)-xx[print all strings in hexadecimal string format]' \
- '(-x -xx)--strings-in-hex=[specify strings to print in hexadecimal format]:string type:(all non-ascii)' \
+ '(-x -xx)--strings-in-hex=[specify strings to print in hexadecimal format]:string type:(all non-ascii non-ascii-chars)' \
'(-X --const-print-style)'{-X+,--const-print-style=}'[set the format for printing of named constants and flags]:format:(raw abbrev verbose)' \
'(-c --summary-only -yy --decode-fds)-y[print paths associated with file descriptor arguments]' \
'(-c --summary-only -y --decode-fds)-yy[print protocol specific information associated with socket file descriptors]' \
- '(-c --summary-only -y -yy)--decode-fds=-[print information associated with file descriptors]::information [none]:_sequence compadd - none all path socket dev pidfd' \
+ '(-c --summary-only -y -yy)--decode-fds=-[print information associated with file descriptors]::information [none]:_sequence compadd - none all path socket dev pidfd signalfd' \
+ '(-c --summary-only -Y)--decode-pids=[print information associated with process IDs]:information [none]:_sequence compadd - none comm pidns' \
+ '!(-c --summary-only -Y --decode-pids)--pidns-translation' \
+ '(-c --summary-only --decode-pids)-Y[print command names for PIDs]' \
'(-c --summary-only -C --summary -i --instruction-pointer -k --stack-traces -r --relative-timestamps -ff -t -tt -ttt --absolute-timestamps -T --syscall-times -y -yy --decode-fds)'{-c,--summary-only}'[count time, calls, and errors for each system call and report a summary]' \
'(-c --summary-only -C --summary)'{-C,--summary}'[count time, calls, and errors for each system call and report a summary in addition to regular output]' \
'(-O --summary-syscall-overhead)'{-O+,--summary-syscall-overhead=}'[specify overhead for tracing system calls]:overhead (microseconds)' \
@@ -57,9 +61,11 @@ _arguments -C -s \
'(-U --summary-columns)'{-U+,--summary-columns=}'[show specific columns in the summary report]:column:_sequence compadd - time-percent total-time min-time max-time avg-time calls errors name' \
'(-w --summary-wall-clock)'{-w,--summary-wall-clock}'[summarise syscall latency]' \
'(-c --summary-only -C)-ff[write each process trace to <filename>.<pid> (when using -o <filename>]' \
+ '--syscall-limit=[detach all tracees after tracing given number of syscalls]:limit' \
'(-d --debug)'{-d,--debug}'[show debug output of strace itself on standard error]' \
'(- 1 *)'{-h,--help}'[display help information]' \
'--seccomp-bpf[enable seccomp-bpf filtering]' \
+ '--tips=-[show strace tips, tricks, and tweaks before exit]:tip [id\:random,format\:compact]' \
'(- 1 *)'{-V,--version}'[display version information]' \
'(-):command name: _command_names -e' \
'*::arguments:_normal' && ret=0
@@ -72,6 +78,7 @@ case $state in
'verbose[dereference structures for the specified set of system calls]:system call:_sequence _sys_calls -a -n' \
'raw[print raw, undecoded arguments for the specified set of system calls]:system call:_sequence _sys_calls -a -n' \
'signal[trace only the specified subset of signals]:signal:_sequence _signals -s -M "B\:!="' \
+ 'trace-fds[trace operations on listed file descriptors]:file descriptor:_sequence _file_descriptors' \
'read[perform a full hex and ASCII dump of all the data read from listed file descriptors]:file descriptor:_sequence _file_descriptors' \
'write[perform a full hex and ASCII dump of all the data written to listed file descriptors]:file descriptor:_sequence _file_descriptors' \
'fault[perform syscall fault injection]:system call:_sys_calls -a -n' \
@@ -79,7 +86,8 @@ case $state in
'status[trace system calls with given return status]:status:->status' \
'quiet[suppress various information messages]:message [none]:_sequence compadd - none attach exit path-resolution personality thread-execve superseded' \
'kvm[print the exit reason of kvm vcpu]: :(vcpu)' \
- 'decode-fds[print information associated with file descriptors]:information [none]:_sequence compadd - none all path socket dev pidfd' && ret=0
+ 'decode-fds[print information associated with file descriptors]:information [none]:_sequence compadd - none all path socket dev pidfd signalfd' \
+ 'decode-pids[print information associated with process IDs]:information [none]:_sequence compadd - none comm pidns' && ret=0
if [[ $state = status ]]; then
_values -s , 'return status [all]' \
all successful failed \
^ permalink raw reply [flat|nested] 2+ messages in thread
* PATCH: update strace completion
@ 2016-07-17 9:54 Oliver Kiddle
0 siblings, 0 replies; 2+ messages in thread
From: Oliver Kiddle @ 2016-07-17 9:54 UTC (permalink / raw)
To: Zsh workers
This updates _strace for new options and adds new functions for ltrace
and the more general Unix truss command. I've also factored _sys_calls
out of _strace so _truss can use it. Digging into include files has
replaced the hard coded list of system calls.
Oliver
diff --git a/Completion/Linux/Command/_ltrace b/Completion/Linux/Command/_ltrace
new file mode 100644
index 0000000..e48d8ec
--- /dev/null
+++ b/Completion/Linux/Command/_ltrace
@@ -0,0 +1,35 @@
+#compdef ltrace
+
+local root hlp="-h --help -V --version"
+
+(( EUID )) && root='!'
+
+_arguments -s -S $args \
+ "(-c -a --align $hlp)"{-a+,--align=}"[align return values in a secific column]:column [$((COLUMNS*5/8))]" \
+ "(-c $hlp)-A+[specify maximum number of array elements to print]:elements" \
+ "(-c -b --no-signals $hlp)"{-b,--no-signals}"[don't print signals]" \
+ "(-a --align -A -b --no-signals -i -n --indent -r -s -t -tt -ttt -T $hlp)-c[count time and calls, and report a summary on exit]" \
+ "(-C --demangle $hlp)"{-C,--demangle}'[decode low-level symbol names into user-level names]' \
+ "(-D --debug $hlp)"{-D+,--debug=}'[enable debugging]:mask:(help 77)' \
+ "($hlp)*-e+[modify which library calls to trace]:filter" \
+ "($hlp)-f[trace child processes]" \
+ "($hlp)*"{-F+,--config=}'[load alternate configuration file]:file:_files' \
+ '(- 1 *)'{-h,--help}'[display help information]' \
+ "(-c $hlp)-i[print instruction pointer at time of call]" \
+ "(-l --library $hlp)"{-l+,--library=}'[only trace symbols implemented by specified library]:library:_files' \
+ "($hlp)-L[don't display library calls]" \
+ "(-c -n --indent $hlp)"{-n+,--indent=}'[specify indent for each level of call nesting]:spaces' \
+ "(-o --output $hlp)"{-o+,--output=}'[write the trace output to specified file]:file:_files' \
+ "(: $hlp)-p+[attach to the process with specified process ID and begin tracing]:process ID:_pids" \
+ "(-c $hlp)-r[print relative timestamps]" \
+ "(-c $hlp)-s+[specify the maximum string size to print]:maximum string size [32]" \
+ "($hlp)-S[trace system calls as well as library calls]" \
+ "(-c -ttt $hlp)-t[prefix each line of the trace with the time of day]" \
+ "(-c -ttt -tt $hlp)-tt[prefix each line of the trace with the time of day including the microseconds]" \
+ "(-c -tt -t $hlp)-ttt[prefix each line of the trace with the number of seconds and microseconds since the epoch]" \
+ "(-c $hlp)-T[show the time spent in each call]" \
+ "${root}-u+[run as specified user]:user:_users" \
+ '(- 1 *)'{-V,--version}'[display version information]' \
+ "($hlp)*-x+[modify which static functions to trace]:filter" \
+ '(-):command name: _command_names -e' \
+ '*::arguments:_normal'
diff --git a/Completion/Linux/Command/_strace b/Completion/Linux/Command/_strace
index d6dabfd..cbf95d6 100644
--- a/Completion/Linux/Command/_strace
+++ b/Completion/Linux/Command/_strace
@@ -1,119 +1,101 @@
-#compdef strace
+#compdef strace strace64
-# TODO:
-# - make _sys_calls system-dependent
-# - allow negated calls (e.g. -e!write)
-_sys_calls () {
- local expl
- local -a sys_calls
+local curcontext="$curcontext" state line root expl ret=1
+typeset -A opt_args
- sys_calls=(_llseek _newselect _sysctl accept access acct
- adjtimex afs_syscall alarm bdflush bind break brk cacheflush
- capget capset chdir chmod chown chown32 chroot clone close connect
- creat create_module delete_module dup dup2 execve exit fchdir
- fchmod fchown fchown32 fcntl fcntl64 fdatasync flock fork fstat
- fstat64 fstatfs fsync ftime ftruncate ftruncate64 get_kernel_syms
- getcwd getdents getdents64 getegid getegid32 geteuid geteuid32
- getgid getgid32 getgroups getgroups32 getitimer getpagesize getpeername
- getpmsg getpgid getpgrp getpid getppid getpriority getresgid getresgid32
- getresuid getresuid32 getrlimit getrusage getsid getsockname getsockopt
- gettid gettimeofday getuid getuid32 gtty idle init_module ioctl ioperm
- iopl ipc kill lchown lchown32 link listen lock lseek lstat lstat64
- madvise mincore mkdir mknod mlock mlockall mmap modify_ldt mount mprotect
- mpx mremap msync munlock munlockall munmap nanosleep nfsservctl nice
- oldfstat oldlstat oldolduname oldstat oldumount olduname open pause
- personality phys pipe pivot_root poll prctl pread prof profil ptrace
- putpmsg pwrite query_module quotactl read readahead readdir readlink
- readv reboot recv recvfrom recvmsg rename rmdir rt_sigaction
- rt_sigpending rt_sigprocmask rt_sigqueueinfo rt_sigreturn rt_sigsuspend
- rt_sigtimedwait sched_get_priority_max sched_get_priority_min
- sched_getparam sched_getscheduler sched_rr_get_interval sched_setparam
- sched_setscheduler sched_yield security select sendfile send sendmsg sendto
- setdomainname setfsgid setfsgid32 setfsuid setfsuid32 setgid setgid32
- setgroups setgroups32 sethostname setitimer setpgid setpriority setregid
- setregid32 setresgid setresgid32 setresuid setresuid32 setreuid setreuid32
- setrlimit setsid setsockopt settimeofday setuid setuid32 setup sgetmask
- shutdown sigaction sigaltstack signal sigpending sigprocmask sigreturn
- sigsuspend socket socketcall socketpair ssetmask stat stat64 statfs stime
- stty swapoff swapon symlink sync sysfs sysinfo syslog time times truncate
- truncate64 ulimit umask umount uname unlink uselib ustat utime vfork vhangup
- vm86 vm86old wait4 waitpid write writev)
+(( EUID )) && root='!'
- for t in ${(s:,:)${PREFIX}}; do
- sys_calls=( ${sys_calls:#$t} )
- done
- compset -P '*,'
- _wanted sys_calls expl 'System calls' compadd -qS , -a sys_calls
-}
+_arguments -C -s \
+ '-a+[align return values in a specific column]:column number [40]' \
+ '(-c)-i[print instruction pointer at time of syscall]' \
+ '-o+[write the trace output to the file]:output file:->file-pipe' \
+ '-q[suppress messages about attaching, detaching etc.]' \
+ '(-q)-qq[suppress messages about process exit status]' \
+ '(-c)-r[print a relative timestamp upon entry to each system call]' \
+ '-s+[specify the maximum string size to print]:maximum string size [32]' \
+ '(-c -ttt)-t[prefix each line of the trace with the time of day]' \
+ '(-c -ttt -tt)-tt[prefix each line of the trace with the time of day including the microseconds]' \
+ '(-c -tt -t)-ttt[prefix each line of the trace with the number of seconds and microseconds since the epoch]' \
+ '(-c)-T[show the time spent in system calls]' \
+ '(-xx)-x[print all non-ASCII strings in hexadecimal string format]' \
+ '(-x)-xx[print all strings in hexadecimal string format]' \
+ '(-c -yy)-y[print paths associated with file descriptor arguments]' \
+ '(-c -y)-yy[print protocol specific information associated with socket file descriptors]' \
+ '(-C -i -k -r -ff -t -tt -ttt -T -y -yy)-c[count time, calls, and errors for each system call and report a summary]' \
+ '(-c)-C[count time, calls, and errors for each system call and report a summary in addition to regular output]' \
+ '-O+[overhead for tracing system calls]:overhead (microseconds)' \
+ '-S+[sort the output of the histogram (-c option) by the specified criterion]:sort criterion:(time calls name nothing)' \
+ '-w[summarise syscall latency]' \
+ '*-e+[select events to trace or how to trace]:system call:->expressions' \
+ '*-P+[trace only system calls accessing given path]:path:_files' \
+ '-b+[detach from process on specified syscall]:syscall:(execve)' \
+ '-f[trace child processes as they are created by currently traced processes]' \
+ '(-c -C)-ff[write each process trace to <filename>.<pid> (when using -o <filename>]' \
+ '-D[run tracer as detached grandchild, keeping traced process as direct child of calling process]' \
+ '-I+[when strace can be interrupted by signals]:interruptible:((1\:"no signals are blocked" 2\:"fatal signals are blocked while decoding syscall (default)" 3\:"fatal signals are always blocked (default with -o)" 4\:"fatal signals and SIGTSTP are always blocked"))' \
+ '*-E+[set or remove exported environment variable]:variable:->envars' \
+ "${root}-u+[run as specified user]:user:_users" \
+ '(:)*-p+[attach to the process with specified process ID and begin tracing]:process ID:_pids' \
+ '-d[show debug output of strace itself on standard error]' \
+ '-v[print unabbreviated versions of environment, stat, termios, etc. calls]' \
+ '(- 1 *)-h[display help information]' \
+ '(- 1 *)-V[display version information]' \
+ '(-c)-k[obtain stack trace between each syscall]' \
+ '(-):command name: _command_names -e' \
+ '*::arguments:_normal' && ret=0
-_sets () {
- _alternative \
- 'special:special values:(all none)' \
- 'calls::_sys_calls'
-}
+case $state in
+ expressions)
+ _values -C -S = 'qualifying expression' \
+ 'trace[trace specified set of system calls only]:system calls:->syscalls' \
+ 'abbrev[abbreviate the output from printing each member of large structures]:system call:_sequence _sys_calls -a -n' \
+ 'verbose[dereference structures for the specified set of system calls]:system call:_sequence _sys_calls -a -n' \
+ 'raw[print raw, undecoded arguments for the specified set of system calls]:system call:_sequence _sys_calls -a -n' \
+ 'signal[trace only the specified subset of signals]:signal:_sequence _signals -s -M "B\:!="' \
+ 'read[perform a full hex and ASCII dump of all the data read from listed file descriptors]:file descriptor:_sequence _file_descriptors' \
+ 'write[perform a full hex and ASCII dump of all the data written to listed file descriptors]:file descriptor:_sequence _file_descriptors' && ret=0
+ if [[ $words[CURRENT] != *=* || $state = syscalls ]]; then
+ local dedup sets suf="-qS,"
+ compset -P '!'
+ dedup=( ${(Ms.,.)PREFIX##*,} ${(Ms.,.)SUFFIX%%,*} )
+ compset -S ',*' || suf=""
+ compset -P '*,'
+ sets=(
+ 'file:trace all system calls which take a file name as an argument'
+ 'process:trace all system calls which involve process management'
+ 'network:trace all the network related system calls'
+ 'signal:trace all signal related system calls'
+ 'ipc:trace all IPC related system calls'
+ 'desc:trace all file descriptor related system calls'
+ 'memory:trace all memory mapping related system calls'
+ )
+ _alternative \
+ "related system call:sets: _describe -t traces 'related system call' sets -F dedup $suf" \
+ "system call:syscalls:_sys_calls -a -n $suf -F dedup" && ret=0
+ fi
+ ;;
+ file-pipe)
+ compset -P '\\'
+ if (( ! $+opt_args[-ff] )) && compset -P '(!|\|)'; then
+ compset -q
+ if (( CURRENT == 1 )); then
+ _command_names -e && ret=0
+ else
+ _normal && ret=0
+ fi
+ else
+ _files && ret=0
+ fi
+ ;;
+ envars)
+ if [[ -prefix *=* ]]; then
+ compstate[parameter]="${PREFIX%%\=*}"
+ compset -P 1 '*='
+ _value && ret=0
+ else
+ _parameters -qS= -g "*export*" && ret=0
+ fi
+ ;;
+esac
-_traces () {
- local expl
- traces=('file:trace all system calls which take a file name as an argument'
- 'process:trace all system calls which involve process management'
- 'network:trace all the network related system calls'
- 'signal:trace all signal related system calls'
- 'ipc:trace all IPC related system calls'
- 'desc:trace all file descriptor related system calls')
- compset -P '*,'
- _describe -t traces 'Related system calls' traces -qS ,
-}
-
-_traces_sets () {
- _alternative \
- 'traces::_traces' \
- 'sets::_sets'
-}
-
-_expression () {
- _values -S = "Qualifying expression" \
- 'trace[trace specified set of system calls only]:system calls:_traces_sets' \
- 'abbrev[abbreviate the output from printing each member of large structures]:system calls:_sets' \
- 'verbose[dereference structures for the specified set of system calls]:system calls:_sets' \
- 'raw[print raw, undecoded arguments for the specified set of system calls]:system calls:_sets' \
- 'signal[trace only the specified subset of signals]:signal:{compset -P "*,"; _signals -s -qS ,}' \
- 'read[perform a full hex and ASCII dump of all the data read from listed file descriptors]:file descriptors:{compset -P "*,"; _file_descriptors -qS ,}' \
- 'write[perform a full hex and ASCII dump of all the data written to listed file descriptors]:file descriptors:{compset -P "*,"; _file_descriptors -qS ,}'
- if [[ -z "$words[CURRENT]" || -n "${words[CURRENT]:#*=*}" ]]; then
- _traces_sets
- fi
-}
-
-_arguments \
- '()-c[count time, calls, and errors for each system call and report a summary]' \
- '()-C[count time, calls, and errors for each system call and report a summary in addition to regular output]' \
- '-d[show some debugging output of strace itself on the standard error]' \
- '-D[run tracer as detached grandchild, keeping traced process as direct child of calling process]' \
- '-f[trace child processes as they are created by currently traced processes]' \
- '-ff[write each process trace to <filename>.<pid> (when using -o <filename>]' \
- '(-c -d -f -ff -i -q -r -t -tt -ttt -T -v -V -x -xx -a -e -o -O -p -s -S -u -E)-h[print help]' \
- '-i[print the instruction pointer at the time of the system call]' \
- '-q[suppress messages about attaching, detaching etc.]' \
- '-r[print a relative timestamp upon entry to each system call]' \
- '(-ttt)-t[prefix each line of the trace with the time of day]' \
- '(-ttt -tt)-tt[prefix each line of the trace with the time of day including the microseconds]' \
- '(-tt -t)-ttt[prefix each line of the trace with the number of seconds and microseconds since the epoch]' \
- '-T[show the time spent in system calls]' \
- '-y[print paths associated with file descriptor arguments]' \
- '-v[print unabbreviated versions of environment, stat, termios, etc. calls]' \
- '(-c -d -f -ff -h -i -q -r -t -tt -ttt -T -v -x -xx -a -e -o -O -p -s -S -u -E)-V[print the version number of strace]' \
- '(-xx)-x[print all non-ASCII strings in hexadecimal string format]' \
- '(-x)-xx[print all strings in hexadecimal string format]' \
- '-I+[when strace can be interrupted by signals]:interruptible:((1\:"no signals are blocked" 2\:"fatal signals are blocked while decoding syscall (default)" 3\:"fatal signals are always blocked (default if '\''-o FILE PROG'\''" 4\:"fatal signals and SIGTSTP are always blocked"))' \
- '*-P+[trace only system calls accessing given path]:path:_files' \
- '-a+[align return values in a specific column (default 40)]:column number' \
- '*-e+[select events to trace or how to trace]:system call:_expression' \
- '-o+[write the trace output to the file]:output file:_files' \
- '-O+[overhead for tracing system calls]:overhead microseconds' \
- '(:)-p+[attach to the process with specified process ID and begin tracing]:process ID:_pids' \
- '-s+[specify the maximum string size to print (default 32)]:maximum string size' \
- '-S+[sort the output of the histogram (-c option) by the specified criterion]:sort by:(time calls name nothing)' \
- '-u+[run as specified user]:user:_users' \
- '*-E+[remove variable from the inherited list of environment or define a value]:variable:_printenv' \
- '(-):command name: _command_names -e' \
- '*::arguments:_normal'
+return ret
diff --git a/Completion/Unix/Command/_truss b/Completion/Unix/Command/_truss
new file mode 100644
index 0000000..656c942
--- /dev/null
+++ b/Completion/Unix/Command/_truss
@@ -0,0 +1,76 @@
+#compdef truss
+
+local curcontext="$curcontext" state line expl ret=1
+typeset -A opt_args
+local args faults
+
+args=(
+ '(-c)-a[show argument strings with exec system call]'
+ '(-a -d -D -e -E -l -r -v -w -x)-c[count traced system calls, signals etc]'
+ '(-c)-d[include timestamps in output]'
+ '(-c)-D[include delta timestamps in output]'
+ '(-c)-e[show environment strings with exec system call]'
+ '-f[follow child processes created after a fork]'
+ '-o+[specify trace output file]:output file:_files'
+)
+
+case $OSTYPE in
+ aix*|solaris*)
+ args+=(
+ '(-c)-E[include delta timestamps of time spent within the system call]'
+ "-i[don't display interruptible sleeping system calls]"
+ '(-c)-l[include LWP id in each line of output]'
+ '-m+[specify machine faults to trace]: :->faults'
+ '(-c)-r+[show full contents of the I/O buffer for each read()]:file descriptor'
+ '-s+[specify signals to trace]:signal:_sequence _signals -M "B\:!="'
+ '-S+[specify signals at which process should be stopped and abandoned]:signal:_sequence _signals -M "B\:!="'
+ '-t+[specify system calls to trace or exclude]:system call:_sequence _sys_calls -a -M "B\:!="'
+ '-T+[specify system calls at which process should be stopped and abandoned]:system call:_sequence _sys_calls -a -M "B\:!="'
+ '*-u+[user-level function call tracing]: :->userfuncs'
+ '-U+[specify user-level functions at which process should be stopped and abandoned]: :->userfuncs'
+ '(-c)-v+[enable verbose output of structures for specified system calls]:system call:_sequence _sys_calls -a -M "B\:!="'
+ '(-c)-w+[show full contents of the I/O buffer for each write()]:file descriptor'
+ '(-c)-x+[enable raw output of structures for specified system calls]:system call:_sequence _sys_calls -a'
+ '-p[trace specified existing processes]'
+ )
+ ;;
+ dragonfly*|freebsd*)
+ args+=(
+ '-s+[specify the maximum string size to print]:maximum string size [32]'
+ "(-c)-S[don't report signals received by the process]"
+ '(*)-p[trace specified existing processes]:pid:_pids'
+ )
+ ;;
+esac
+
+_arguments -C -s : $args \
+ '*::arguments:->args' && ret=0
+
+case $state in
+ faults)
+ faults=( all ${${${(M)${(f)"$(</usr/include/sys/fault.h)"}:#?define[[:blank:]]##FLT*}#*[[:blank:]]FLT}%%[[:blank:]]*} ) 2>/dev/null
+ _sequence _wanted faults expl fault compadd - -M 'B:!=' -M 'B:[Ff][Ll][Tt]=' -M 'm:{a-z}={A-Z}' -a faults && ret=0
+ ;;
+ args)
+ if [[ $OSTYPE = solaris* ]] && (( $+opt_args[-p] )); then
+ _pids && ret=0
+ elif (( CURRENT == 1 )); then
+ _command_names -e && ret=0
+ else
+ _normal && ret=0
+ fi
+ ;;
+ userfuncs)
+ if [[ -prefix *: ]]; then
+ _message -e functions function
+ else
+ compset -P '*,'
+ compset -S '[,:]*'
+ _description -x libs expl lib
+ compadd "$expl[@]" -S '' lib && ret=0
+ compadd "$expl[@]" -qS, a.out && ret=0
+ fi
+ ;;
+esac
+
+return ret
diff --git a/Completion/Unix/Type/_sys_calls b/Completion/Unix/Type/_sys_calls
new file mode 100644
index 0000000..bd9b34f
--- /dev/null
+++ b/Completion/Unix/Type/_sys_calls
@@ -0,0 +1,20 @@
+#autoload
+
+# Options:
+#
+# -a add "all" as an additional match
+# -n add "none" as an additional match
+
+local expl all none
+local ifile=/usr/include/sys/syscall.h
+local -au syscalls
+
+zparseopts -D -K -E a=all n=none
+
+[[ $OSTYPE = linux* ]] && ifile=/usr/include/bits/syscall.h
+syscalls=( ${${${(M)${(f)"$(<$ifile)"}:#?define[[:blank:]]##SYS_*}#*[[:blank:]]SYS_}%%[[:blank:]]*} ) 2>/dev/null
+[[ -n $all ]] && syscalls+=( all )
+[[ -n $none ]] && syscalls+=( none )
+
+_description syscalls expl 'system call'
+compadd "$@" "$expl[@]" -a syscalls
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2023-11-01 22:45 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-01 22:44 PATCH: update strace completion Oliver Kiddle
-- strict thread matches above, loose matches on Subject: below --
2016-07-17 9:54 Oliver Kiddle
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).