1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-06-16 08:48:06 +02:00

51964: support pidof variants other than procps

This commit is contained in:
Shohei YOSHIDA 2023-07-26 19:58:00 -07:00 committed by Bart Schaefer
parent aa85564319
commit ec61c9a5c0
2 changed files with 48 additions and 13 deletions
ChangeLog
Completion/Linux/Command

View file

@ -1,5 +1,8 @@
2023-07-26 Bart Schaefer <schaefer@zsh.org>
* Shohei YOSHIDA: 51964: Completion/Linux/Command/_pidof: support
pidof variants other than procps
* 51969: Src/builtin.c: read -d and -s should not reset terminal
state when stdin is redirected

View file

@ -3,19 +3,51 @@
local curcontext="$curcontext" state line expl ret=1
typeset -A opt_args
local exargs="-h --help -V --version"
_arguments -C -s -w \
'(- *)'{-h,--help}'[display help information]' \
'(- *)'{-V,--version}'[print program version]' \
"(-s --single-shot $exargs)"{-s,--single-shot}'[return one PID only]' \
"(-c --check-root $exargs)"{-c,--check-root}'[omit processes with different root]' \
'-q[quiet mode, only set the exit code]' \
'(-w --with-workers)'{-w,--with-workers}'[show kernel workers too]' \
"(-x $exargs)"-x'[include shells running named scripts]' \
"($exargs)"\*{-o+,--omit-pid=}'[omit processes with PIDs]:pids:_sequence -s , _pids' \
'(-S --separator)'{-S+,--separator=}'[specify separator put between PIDs]:separator' \
'*:process:->procnames' \
&& return 0
_pick_variant -r variant procps='--separator' $OSTYPE -h
case $variant in
(procps)
local exargs="-h --help -V --version"
_arguments -C -s -w \
'(- *)'{-h,--help}'[display help information]' \
'(- *)'{-V,--version}'[print program version]' \
"(-s --single-shot $exargs)"{-s,--single-shot}'[return one PID only]' \
"(-c --check-root $exargs)"{-c,--check-root}'[omit processes with different root]' \
'-q[quiet mode, only set the exit code]' \
'(-w --with-workers)'{-w,--with-workers}'[show kernel workers too]' \
"(-x $exargs)"-x'[include shells running named scripts]' \
"($exargs)"\*{-o+,--omit-pid=}'[omit processes with PIDs]:pids:_sequence -s , _pids' \
'(-S --separator)'{-S+,--separator=}'[specify separator put between PIDs]:separator' \
'*:process:->procnames' \
&& return 0
;;
(darwin*)
# Night Production pidof
_arguments -s -w \
'(- *)'{-h,-\?}'[display help information]' \
'(- *)-v[print out version info on pidof]' \
'-l[print output in long format]' \
'-k[kill processes by name]' \
'*:process:_process_names -a' \
&& return 0
;;
(*)
# sysvinit-utils
_arguments -C -s -w \
'(- *)-h[display help information]' \
'-c[return PIDs with the same root directory]' \
'-d[use the provided character as output separator]:separator' \
'-n[avoid using stat system function on network shares]' \
'-o[omit results with a given PID]:pid:_sequence -s , _pids' \
'-s[return one PID only]' \
'-q[quiet mode. Do not display output]' \
'-s[only return one PID]' \
'-x[return PIDs of shells running scripts with a matching name]' \
'-z[list zombie and I/O waiting processes. May cause pidof to hang]' \
'*:process:->procnames' \
&& return 0
;;
esac
case $state in
procnames)