#autoload # This function completes POSIX capabilities for Linux. # Many command line utilities expect different syntax to encode various kinds # of capability names or sets, so this function tries to be as generic as # possible. It accepts compadd options to allow variations on the exact # generated completion matches. # # Usage examples: # # Complete full capability names: # _capabilities -p cap_ # Sort the completion list by capability number: # _capabilities -o nosort # The list of Linux capabilities is taken from include/uapi/linux/capability.h # and subject to the following pipe filter: # grep 'define CAP' | sed -r 's/^[[:space:]]*#define[[:space:]]+CAP_//; s/[[:space:]]+[0-9]+$//' | tr '[[:upper:]]' '[[:lower:]]' local -a caplist=( chown dac_override dac_read_search fowner fsetid kill setgid setuid setpcap linux_immutable net_bind_service net_broadcast net_admin net_raw ipc_lock ipc_owner sys_module sys_rawio sys_chroot sys_ptrace sys_pacct sys_admin sys_boot sys_nice sys_resource sys_time sys_tty_config mknod lease audit_write audit_control setfcap mac_override mac_admin syslog wake_alarm block_suspend audit_read perfmon bpf checkpoint_restore ) local -a expl _description capabilities expl "Linux capability" compadd "${(@)expl}" "$@" -a - caplist