|  | _losetup_module() | 
|  | { | 
|  | local cur prev OPTS ARG | 
|  | COMPREPLY=() | 
|  | cur="${COMP_WORDS[COMP_CWORD]}" | 
|  | prev="${COMP_WORDS[COMP_CWORD-1]}" | 
|  | case $prev in | 
|  | '-d'|'--detach') | 
|  | ARG="$($1 --output NAME | awk '{if (1 < NR) {print}}')" | 
|  | COMPREPLY=( $(compgen -W "$ARG" -- $cur) ) | 
|  | return 0 | 
|  | ;; | 
|  | '-j'|'--associated') | 
|  | ARG="$($1 --output BACK-FILE | awk '{if (1 < NR) {print}}')" | 
|  | COMPREPLY=( $(compgen -W "$ARG" -- $cur) ) | 
|  | return 0 | 
|  | ;; | 
|  | '-c'|'--set-capacity') | 
|  | ARG="$(for I in /dev/loop[0-9]*; do if [ -e $I ]; then echo $I; fi; done)" | 
|  | COMPREPLY=( $(compgen -W "$ARG" -- $cur) ) | 
|  | return 0 | 
|  | ;; | 
|  | '-o'|'--offset'|'--sizelimit') | 
|  | COMPREPLY=( $(compgen -W "number" -- $cur) ) | 
|  | return 0 | 
|  | ;; | 
|  | '-O'|'--output') | 
|  | # FIXME: how to append to a string with compgen? | 
|  | local OUTPUT | 
|  | OUTPUT="NAME AUTOCLEAR BACK-FILE BACK-INO | 
|  | BACK-MAJ:MIN MAJ:MIN OFFSET PARTSCAN RO | 
|  | SIZELIMIT" | 
|  | compopt -o nospace | 
|  | COMPREPLY=( $(compgen -W "$OUTPUT" -S ',' -- $cur) ) | 
|  | return 0 | 
|  | ;; | 
|  | '-h'|'--help'|'-V'|'--version') | 
|  | return 0 | 
|  | ;; | 
|  | esac | 
|  | case $cur in | 
|  | -*) | 
|  | OPTS="--all | 
|  | --detach | 
|  | --detach-all | 
|  | --find | 
|  | --set-capacity | 
|  | --associated | 
|  | --list | 
|  | --offset | 
|  | --output | 
|  | --sizelimit | 
|  | --partscan | 
|  | --read-only | 
|  | --show | 
|  | --verbose | 
|  | --help | 
|  | --version" | 
|  | COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) ) | 
|  | return 0 | 
|  | ;; | 
|  | esac | 
|  | local IFS=$'\n' | 
|  | compopt -o filenames | 
|  | COMPREPLY=( $(compgen -f -- $cur) ) | 
|  | return 0 | 
|  | } | 
|  | complete -F _losetup_module losetup |