summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOliver Kiddle <opk@users.sourceforge.net>2001-08-03 16:53:26 +0000
committerOliver Kiddle <opk@users.sourceforge.net>2001-08-03 16:53:26 +0000
commit0c3f0b47bff6279c8601f3313144db6d2d1ee980 (patch)
tree282eaddba4bbc7efe7e778480e907a4f640127a5
parent1ba5ba91ae0768f2ffe34c6e46483593380cc5f8 (diff)
downloadzsh-0c3f0b47bff6279c8601f3313144db6d2d1ee980.tar.gz
zsh-0c3f0b47bff6279c8601f3313144db6d2d1ee980.zip
new BSD completion and fix _chown for symlinks
-rw-r--r--ChangeLog6
-rw-r--r--Completion/BSD/Command/.distfiles2
-rw-r--r--Completion/BSD/Command/_chflags45
-rw-r--r--Completion/Unix/Command/_chown1
-rw-r--r--Completion/Unix/Command/_sysctl24
5 files changed, 65 insertions, 13 deletions
diff --git a/ChangeLog b/ChangeLog
index 7e676d226..3b1aaa6aa 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2001-08-03 Oliver Kiddle <opk@zsh.org>
+
+ * 15562, Akinori Musha: 15559, 15563: Completion/BSD/Command/_chflags,
+ Completion/Unix/Command/_chown, Completion/Unix/Command/_sysctl:
+ new BSD completion and fix _chown for symlinks
+
2001-07-31 Clint Adams <clint@zsh.org>
* 15551: Completion/Unix/Command/_gzip: handle -l and -t
diff --git a/Completion/BSD/Command/.distfiles b/Completion/BSD/Command/.distfiles
index 9a43ea797..bc786cb5d 100644
--- a/Completion/BSD/Command/.distfiles
+++ b/Completion/BSD/Command/.distfiles
@@ -1,4 +1,4 @@
DISTFILES_SRC='
.distfiles
-_bsd_pkg _cvsup _kld
+_bsd_pkg _cvsup _kld _chflags
'
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]' \