1#autoload 2 3local ret long rawret nm=${compstate[nmatches]} fsopt cvalsvar 4typeset -a fargs opts 5 6fargs=( 7 '(-d -f)-d[enable debug output]' 8 '-f[enable foreground operation]' 9 '-r[mount filesystem read-only]' 10 '-s[disable multi-threaded operation]' 11 '(-h --help)'{-h,--help}'[display help and exit]' 12 '(-V --version)'{-V,--version}'[show version information and exit]' 13) 14 15(( $# )) || fargs+='*:default: _default' 16 17long=$argv[(I)--] 18if (( long )); then 19 argv[long]=($fargs --) 20else 21 set -- "$@" $fargs 22fi 23 24while [[ $1 == -(O*|F*|[CRWsw]) ]]; do 25 if [[ $1 == -F?* ]]; then 26 cvalsvar=${1[3,-1]} 27 elif [[ $1 == -F ]]; then 28 cvalsvar=$2 29 shift 30 else 31 opts+=$1 32 [[ $1 == -R ]] && rawret=yes 33 fi 34 shift 35done 36 37if [[ $cvalsvar != - ]]; then 38 fsopt='*-o[specify mount options]:mount option:_fuse_values' 39 [[ -n $cvalsvar ]] && fsopt+=" -A $cvalsvar" 40 fsopt+=' mount\ option' 41 set -- "$@" $fsopt 42fi 43 44_arguments -R $opts "$@" 45 46ret=$? 47 48if [[ $ret == 300 ]]; then 49 compstate[restore]= 50 [[ -z $rawret ]] && ret=$(( nm == $compstate[nmatches] )) 51fi 52 53return ret 54