#compdef coreadm _coreadm() { local -a content option content=( "anon[Anonymous private mappings]" "ctf[CTF type information]" "data[Writable private file mappings]" "dism[DISM mappings]" "heap[Process heap]" "ism[ISM mappings]" "rodata[Read-only private file mappings]" "shanon[Anonymous shared mappings]" "shfile[File-backed shared mappings]" "shm[System V shared memory]" "stack[Process stack]" "symtab[Symbol table sections for loaded files]" "text[Readable and executable private file mappings]" ) option=( "global"\:"Allow global core dumps" "global-setid"\:"Allow set-id global core dumps" "log"\:"Generate a syslog message on global core dump" "process"\:"Allow per-process core dumps" "proc-setid"\:"Allow set-id per-process core dumps" ) # _values doesn't quite work for us here -- the separator can be either # "+" or "-" _arguments -s \ - set1 \ '-g[Global core file name pattern]:' \ '-G[Global core file content]:content:_values -s + "content" $content' \ '-i[Per-process core file name pattern]:' \ '-I[Per-process core file content]:content:_values -s + "content" $content' \ '*-d[Disable core option]:option:(($option))' \ '*-e[Enable core option]:option:(($option))' \ - set2 \ '-p[PID-specific per-process core file name pattern]:' \ '-P[PID-specific per-process core file content]:content:_values -s + "content" $content' \ '*:pids:_pids' \ - set3 \ '-u[Update options from coreadm.conf]' } _coreadm "$@"