From 1c4e7601c4b83322e8702954c2c3b8e4672026a3 Mon Sep 17 00:00:00 2001 From: dana Date: Wed, 3 Jan 2018 16:13:23 -0600 Subject: 42210: factor out completion of file modes and flags and handle _comp_priv_prefix for chflags --- Completion/BSD/Command/_chflags | 66 ++--------------------------------------- 1 file changed, 3 insertions(+), 63 deletions(-) (limited to 'Completion/BSD/Command/_chflags') diff --git a/Completion/BSD/Command/_chflags b/Completion/BSD/Command/_chflags index ddf61b25e..f97d1cdd1 100644 --- a/Completion/BSD/Command/_chflags +++ b/Completion/BSD/Command/_chflags @@ -1,68 +1,8 @@ #compdef chflags -local args flag_descs flags own='-g *(-u$EUID)' +local args own='-g *(-u$EUID)' -flag_descs=( - uappnd 'user append-only' - uchg 'user immutable' -) - -if (( ! EUID )); then - flag_descs+=( - arch archived - nodump nodump - sappnd 'system append-only' - schg 'system immutable' - ) - unset own -fi - -if [[ $OSTYPE = (darwin|dragonfly|freebsd|netbsd)* ]]; then - flag_descs+=(opaque opaque) - - if [[ $OSTYPE = darwin* ]]; then - flag_descs+=(hidden hidden) - fi - - if [[ $OSTYPE = (dragonfly|freebsd)* ]]; then - flag_descs+=(uunlnk 'user undeletable') - (( EUID )) || flag_descs+=(sunlnk 'system undeletable') - fi - - [[ $OSTYPE = dragonflybsd* ]] && { - flag_descs+=( - cache XXX - nouhistory 'user nohistory' - ) - - (( EUID )) || flag_descs+=( - noscache XXX - noshistory 'system nohistory' - ) - } - - [[ $OSTYPE = freebsd* ]] && flag_descs+=( - uarch archive - uhidden hidden - uoffline offline - urdonly 'DOS, Windows and CIFS readonly' - ureparse 'Windows reparse point' - usparse 'sparse file' - usystem 'DOS, Windows and CIFS system' - ) -fi - -() { - for 1 2; do - if [[ $1 = no* ]]; then - flags+=("(${1#no})$1[set the $2 flag]" - "($1)${1#no}[unset the $2 flag]") - else - flags+=("(no$1)$1[set the $2 flag]" - "($1)no$1[unset the $2 flag]") - fi - done -} $flag_descs +(( ! EUID || $+_comp_priv_prefix )) && own= if [[ $OSTYPE = (darwin|dragonfly|freebsd)* ]]; then args=( @@ -72,7 +12,7 @@ if [[ $OSTYPE = (darwin|dragonfly|freebsd)* ]]; then fi _arguments -s -A "-*" : $args \ - ':file flag:_values -s , "file flags" $flags[@]' \ + ': :_flags' \ '*:file:_files "$own"' \ - opth \ '-h[act on symlinks]' \ -- cgit 1.4.1