|  | _setpriv_module() | 
|  | { | 
|  | local cur prev OPTS | 
|  | COMPREPLY=() | 
|  | cur="${COMP_WORDS[COMP_CWORD]}" | 
|  | prev="${COMP_WORDS[COMP_CWORD-1]}" | 
|  | case $prev in | 
|  | '--inh-caps'|'--bounding-set') | 
|  | # FIXME: how to append to a string with compgen? | 
|  | local INHERIT | 
|  | INHERIT=$($1 --list-caps| awk '{print $1, "-" $1}') | 
|  | compopt -o nospace | 
|  | COMPREPLY=( $(compgen -W "all $INHERIT" -S ',' -- $cur) ) | 
|  | return 0 | 
|  | ;; | 
|  | '--ruid'|'--euid'|'--reuid') | 
|  | local UIDS | 
|  | UIDS=$(getent passwd | awk -F: '{print $3}') | 
|  | COMPREPLY=( $(compgen -W "$UIDS" -- $cur) ) | 
|  | return 0 | 
|  | ;; | 
|  | '--rgid'|'--egid'|'--regid') | 
|  | local GIDS | 
|  | GIDS=$(getent group | awk -F: '{print $3}') | 
|  | COMPREPLY=( $(compgen -W "$GIDS" -- $cur) ) | 
|  | return 0 | 
|  | ;; | 
|  | '--groups') | 
|  | # FIXME: how to append to a string with compgen? | 
|  | local GIDS | 
|  | GIDS=$(getent group | awk -F: '{print $3}') | 
|  | compopt -o nospace | 
|  | COMPREPLY=( $(compgen -W "$GIDS" -S ',' -- $cur) ) | 
|  | return 0 | 
|  | ;; | 
|  | '--securebits') | 
|  | local SBITS | 
|  | SBITS="noroot noroot_locked no_setuid_fixup no_setuid_fixup_locked keep_caps_locked | 
|  | -noroot -noroot_locked -no_setuid_fixup -no_setuid_fixup_locked -keep_caps_locked" | 
|  | COMPREPLY=( $(compgen -W "$SBITS" -- $cur) ) | 
|  | return 0 | 
|  | ;; | 
|  | '--selinux-label') | 
|  | # FIXME: how to list selinux labels? | 
|  | COMPREPLY=( $(compgen -W "label" -- $cur) ) | 
|  | return 0 | 
|  | ;; | 
|  | '--apparmor-profile') | 
|  | # FIXME: how to list apparmor profiles? | 
|  | COMPREPLY=( $(compgen -W "profile" -- $cur) ) | 
|  | return 0 | 
|  | ;; | 
|  | '-h'|'--help'|'-V'|'--version') | 
|  | return 0 | 
|  | ;; | 
|  | esac | 
|  | case $cur in | 
|  | -*) | 
|  | OPTS="--dump | 
|  | --no-new-privs | 
|  | --inh-caps | 
|  | --bounding-set | 
|  | --ruid | 
|  | --euid | 
|  | --rgid | 
|  | --egid | 
|  | --reuid | 
|  | --regid | 
|  | --clear-groupsclear | 
|  | --keep-groupskeep | 
|  | --groups | 
|  | --securebits | 
|  | --selinux-label | 
|  | --apparmor-profile | 
|  | --help | 
|  | --version" | 
|  | COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) ) | 
|  | return 0 | 
|  | ;; | 
|  | esac | 
|  | compopt -o bashdefault | 
|  | COMPREPLY=( $(compgen -c -- $cur) ) | 
|  | return 0 | 
|  | } | 
|  | complete -F _setpriv_module setpriv |