#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 "$@"