From d2f6a686c24bf660019d4912659353e526c93ba1 Mon Sep 17 00:00:00 2001 From: Oliver Kiddle Date: Mon, 6 Aug 2001 15:54:02 +0000 Subject: new BSD completion and fix _chown for symlinks (15562) --- Completion/BSD/Command/_chflags | 45 +++++++++++++++++++++++++++++++++++++++++ Completion/Unix/Command/_chown | 1 + Completion/Unix/Command/_sysctl | 24 +++++++++++----------- 3 files changed, 58 insertions(+), 12 deletions(-) create mode 100644 Completion/BSD/Command/_chflags (limited to 'Completion') diff --git a/Completion/BSD/Command/_chflags b/Completion/BSD/Command/_chflags new file mode 100644 index 000000000..569326b53 --- /dev/null +++ b/Completion/BSD/Command/_chflags @@ -0,0 +1,45 @@ +#compdef chflags + +local flags own='-g *(-u$EUID)' + +flags=( + '(noopaque)opaque[set the opaque flag]' + '(opaque)noopaque[unset the opaque flag]' + '(dump)nodump[set the nodump flag]' + '(nodump)dump[unset the nodump flag]' + '(nouappnd)uappnd[set the user append-only flag]' + '(uappnd)nouappnd[unset the user append-only flag]' + '(nouchg)uchg[set the user immutable flag]' + '(uchg)nouchg[unset the user immutable flag]' +) + +if (( ! EUID )); then + flags=( $flags[@] + '(noarch)arch[set the archived flag]' + '(arch)noarch[unset the archived flag]' + '(nosappnd)sappnd[set the system append-only flag]' + '(sappnd)nosappnd[unset the system append-only flag]' + '(noschg)schg[set the system immutable flag]' + '(schg)noschg[unset the system immutable flag]' + ) + unset own +fi + +if [[ $OSTYPE = freebsd* ]]; then + flags=( $flags[@] + '(nouunlnk)uunlnk[set the user undeletable flag]' + '(uunlnk)nouunlnk[unset the user undeletable flag]' + ) + (( EUID )) || flags=( $flags[@] + '(nosunlnk)sunlnk[set the system undeletable flag]' + '(sunlnk)nosunlnk[unset the system undeletable flag]' + ) +fi + +_arguments -s -A "-*" \ + '(-L -P)-H[follow symlinks on the command line (specify with -R)]' \ + '(-H -P)-L[follow all symlinks (specify with -R)]' \ + '(-L -H)-P[do not follow symlinks (specify with -R)]' \ + '-R[recurse directories]' \ + ':file flag:_values -s , "file flags" $flags[@]' \ + '*:file:_files "$own"' diff --git a/Completion/Unix/Command/_chown b/Completion/Unix/Command/_chown index 34b31f6c9..f5ff8f45e 100644 --- a/Completion/Unix/Command/_chown +++ b/Completion/Unix/Command/_chown @@ -28,6 +28,7 @@ else [[ -n $grp ]] && grp="${${(M)grp:#[0-9]#}:-.$grp.}" req=( ${usr:+\^u$usr} ${grp:+\^g$grp} ) (( EUID )) && req=( u$EUID$^req ) + req=( -$^req ) _files -g "*(${(j:,:)req})" && return 0 fi diff --git a/Completion/Unix/Command/_sysctl b/Completion/Unix/Command/_sysctl index 1ac0394e7..bda6a5ac2 100644 --- a/Completion/Unix/Command/_sysctl +++ b/Completion/Unix/Command/_sysctl @@ -1,18 +1,7 @@ #compdef sysctl case $OSTYPE in - freebsd[0-4].*) - : ${(A)_cache_sysctlvars:=${${$(sysctl -A):#[^a-z]*}%%:*}} - _arguments -s -A "-*" \ - '(-w -X *)-a[list all]' \ - '(-w -X *)-A[show all opaques (values suppressed)]' \ - '(-w)-b[binary output]' \ - '(-w)-n[show only variable values]' \ - '(-a -A -b -n -X)-w[write mode]' \ - '(-a -A -w *)-X[show all opaques (entire values)]' \ - '(-a -A -X)*:sysctl variable:_multi_parts ${words[(r)-w]:+-S=} -i . _cache_sysctlvars' - ;; - freebsd[5-9].*) + freebsd[5-9].*|freebsd4.[4-9]*) local -a sysctlvars sysctlvars=( $(sysctl -aN) ) _arguments -s -A "-*" \ @@ -24,6 +13,17 @@ case $OSTYPE in '(-o)-x[show opaques as well (entire values)]' \ '(-a)*:sysctl variable:_multi_parts -i . sysctlvars' ;; + freebsd[0-4].*) + : ${(A)_cache_sysctlvars:=${${$(sysctl -A):#[^a-z]*}%%:*}} + _arguments -s -A "-*" \ + '(-w -X *)-a[list all]' \ + '(-w -X *)-A[show all opaques (values suppressed)]' \ + '(-w)-b[binary output]' \ + '(-w)-n[show only variable values]' \ + '(-a -A -b -n -X)-w[write mode]' \ + '(-a -A -w *)-X[show all opaques (entire values)]' \ + '(-a -A -X)*:sysctl variable:_multi_parts ${words[(r)-w]:+-S=} -i . _cache_sysctlvars' + ;; linux*) _arguments -A "-*" \ '-n[show only variable values]' \ -- cgit 1.4.1