zsh-workers
 help / color / mirror / code / Atom feed
e4bd2e286781eb4ca950def422a5b4cf9a284a16 blob 3143 bytes (raw)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
 
#compdef pgrep pkill 

local context state line ret=1 expl
typeset -A opt_args
typeset -a arguments

arguments=('-P[parent process id]:parent process id:->ppid' 
     '-F[match only in process in pidfile]:files:_files'
     '-g[match only in process group ids]:group:->pgid' 
     '-G[match only real group id]:group:_groups' 
     '-j[match only in processes inside jails]'
     '-M[extract the name list from the specified core]:files:_files'
     '-N[extract the name list from the specified system]:files:_files'
     '-s[match only session id]:session id:->sid' 
     '-t[match only controlled by terminal]:terminal device:->tty'
     '-T[match only in processes specified routing table in rtable]'
     '-u[match only effective user id]:user:_users' 
     '-U[match only real user id]:user:_users' 
           '(-n)-o[oldest process]' 
     '(-o)-n[newest process]' 
     '-a[include process ancestors in the match list]'
     '-c[print a count of matching processes]'
     '-f[match against full command line]' 
     '-i[ignore case distinctions]'
     '-I[confirmation before attempting to single each process]'
     '-L[given pidfile must be locked]'
     '-q[do not write anything to standard output]'
     '-S[search also in system processes]'
     '-v[negate matching]' 
     '-x[match exactly]')

if [[ $service == 'pkill' ]]
then
  arguments+=('-'${^signals}'[signal]')
elif [[ $service == 'pgrep' ]]
then
  arguments+=('-d[output delimiter]:delimiter:compadd ${(s\:\:)IFS}'
        '-l[list name in addition to id]')
fi

local optchars
case "$OSTYPE" in
  linux*)
    optchars="cflvxdnoPgsuUGt"
    ;;
  freebsd*)
    optchars="LSafilnoqvxFGMNPUdgjstu"
    ;;
  openbsd*)
    optchars="flnoqvxdGgPsTtUu"
    ;;
  darwin*)
    optchars="LafilnoqvxFGPUdgtu"
    ;;
  *)
    optchars="flvxdnoPgsuUGt"
    ;;
esac
arguments=( ${(M)arguments:#(|\*)(|\(*\))-[$optchars]*}
     '*:process name:->pname')

_arguments -s -w $arguments && ret=0

case $state in
  (tty)
    compset -P '*,'

    local -a used ttys
    used=(${(s:,:)IPREFIX})

    ttys=( /dev/tty*(N) /dev/pts/*(N) )
    _wanted tty expl 'terminal device' compadd -S ',' -q -F used ${ttys#/dev/}
    ;;
    
  (sid)
    compset -P '*,'

    local -a used sid
    used=(${(s:,:)IPREFIX})
    sid=(${(uon)$(ps -A o sid=)})

    _wanted sid expl 'session id' compadd -S ',' -q -F used $sid
    ;;
  
  (ppid)
    compset -P '*,'

    local -a used ppid
    used=(${(s:,:)IPREFIX})
    ppid=(${(uon)$(ps -A o ppid=)})

    _wanted ppid expl 'parent process id' compadd -S ',' -q -F used $ppid
    ;;

  (pgid)
    compset -P '*,'

    local -a used pgid
    used=(${(s:,:)IPREFIX})
    pgid=(${(uon)$(ps -A o pgid=)})

    _wanted pgid expl 'process group id' compadd -S ',' -q -F used $pgid
    ;;
  
  (pname)
    local ispat="pattern matching "
    if (( ${+opt_args[-x]} ))
    then
      ispat=""
    fi
    if (( ${+opt_args[-f]} ))
    then
      _wanted pname expl $ispat'process command line' compadd ${(u)${(f)"$(ps -A o cmd=)"}}
    else
      _wanted pname expl $ispat'process name' compadd ${(u)${(f)"$(ps -A co cmd=)"}}
    fi
    ;;
  
esac && ret=0

return ret
debug log:

solving e4bd2e2 ...
found e4bd2e2 in https://git.vuxu.org/mirror/zsh/

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).