Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
PATCH: cover newer BSD releases in completon
- X-seq: zsh-workers 53325
- From: Oliver Kiddle <opk@xxxxxxx>
- To: Zsh workers <zsh-workers@xxxxxxx>
- Subject: PATCH: cover newer BSD releases in completon
- Date: Sun, 26 Jan 2025 08:46:54 +0100
- Archived-at: <https://zsh.org/workers/53325>
- List-id: <zsh-workers.zsh.org>
This patch handles changes in FreeBSD up to 14.2, NetBSD 10.1, OpenBSD
7.6 and to a limited extent (I lack hardware to test) Darwin 15.
It includes a new completion for FreeBSD's acpiconf.
NetBSD seems to have seen the most changes reflected here, though I had
skipped 10.
In effect, this also includes OpenZFS 2.2 changes.
Oliver
diff --git a/Completion/BSD/Command/_acpiconf b/Completion/BSD/Command/_acpiconf
new file mode 100644
index 000000000..817a2f1ad
--- /dev/null
+++ b/Completion/BSD/Command/_acpiconf
@@ -0,0 +1,28 @@
+#compdef acpiconf
+
+local curcontext="$curcontext" sep ret=1
+local -a state line modes desc
+local -A opt_args
+
+_arguments -s \
+ '(-)-h[display usage information]' \
+ '(-)-i[get battery information]:battery' \
+ '(-)-k[ack or abort a pending suspend]:ack' \
+ '(-)-s[enter specified sleep mode]: :->modes' && ret=0
+
+if [[ -n $state ]]; then
+ modes=( $(_call_program modes sysctl -n hw.acpi.supported_sleep_state) )
+ zstyle -s ":completion:${curcontext}:modes" list-separator sep || sep=--
+ (( $#modes )) || modes=( S3 S4 )
+ desc=(
+ "S1 $sep stop the processor clock"
+ "S2 $sep low wake latency sleep state"
+ "S3 $sep suspend to RAM"
+ "S4 $sep suspend to disk"
+ "S5 $sep soft off state"
+ )
+ desc=( ${(M)desc:#(${(~j.|.)modes}) *} )
+ _wanted modes expl 'mode' compadd -M 'B:S=' -ld desc - ${modes#S} && ret=0
+fi
+
+return ret
diff --git a/Completion/BSD/Command/_bsdconfig b/Completion/BSD/Command/_bsdconfig
index f88255575..5de8f777d 100644
--- a/Completion/BSD/Command/_bsdconfig
+++ b/Completion/BSD/Command/_bsdconfig
@@ -51,6 +51,7 @@ shortcuts=(
vt_saver
vt_screenmap
vt_ttys
+ wifi wireless wlan
)
_arguments -s -w -A '-*' : \
diff --git a/Completion/BSD/Command/_pkgin b/Completion/BSD/Command/_pkgin
index 662bed181..c4ed3aa14 100644
--- a/Completion/BSD/Command/_pkgin
+++ b/Completion/BSD/Command/_pkgin
@@ -5,6 +5,8 @@ local -a state state_descr line expl cmds short pkgs
local -A opt_args
_arguments -s -S -C \
+ '(-6)-4[only use IPv4 addresses]' \
+ '(-4)-6[only use IPv6 addresses]' \
'-c+[enable chrooting pkgin in the given repository]:chroot path:_directories' \
'-d[download only]' \
'-f[force database update]' \
diff --git a/Completion/BSD/Command/_procstat b/Completion/BSD/Command/_procstat
index a1708f6ac..867ddc501 100644
--- a/Completion/BSD/Command/_procstat
+++ b/Completion/BSD/Command/_procstat
@@ -1,26 +1,27 @@
#compdef procstat
_arguments -s -A "-*" -S \
- '-b[show binary information]' \
- '-c[show command line arguments]' \
- '-e[show environment variables]' \
- '-f[show file descriptor information]' \
- '-i[show signal pending and disposition]' \
- '-j[show signal pending and blocked information for process threads]' \
- '-k[show stacks of kernel threads]' \
- '-l[show resource limits]' \
- "-L[show LWP info for the process pertaining to it's signal driven exit]" \
- '-r[show resource usage]' \
- '-s[show security credential information]' \
- '-S[show cpuset information]' \
- '-t[show thread information]' \
- '-v[show virtual memory mappings]' \
- '-x[show ELF auxiliary vector]' \
+ '(1)-b[show binary information]' \
+ '(1)-c[show command line arguments]' \
+ '(1)-e[show environment variables]' \
+ '(1)-f[show file descriptor information]' \
+ '(1)-i[show signal pending and disposition]' \
+ '(1)-j[show signal pending and blocked information for process threads]' \
+ '(1)-k[show stacks of kernel threads]' \
+ '(1)-l[show resource limits]' \
+ "(1)-L[show LWP info for the process pertaining to it's signal driven exit]" \
+ '(1)-r[show resource usage]' \
+ '(1)-s[show security credential information]' \
+ '(1)-S[show cpuset information]' \
+ '(1)-t[show thread information]' \
+ '(1)-v[show virtual memory mappings]' \
+ '(1)-x[show ELF auxiliary vector]' \
'-h[suppress table headers]' \
- '(1)-a[all processes]' \
+ '(2 *)-a[all processes]' \
'-w+[repeat information after specified interval]:delay (seconds)' \
'-C[print additional capability information for file descriptors]' \
'-H[statistics per-thread rather than per-process]' \
'-n[numeric form for signals]' \
- '1::core file:_path_files -g "*core*(-.)"' \
+ '1::command:(advlock argument auxv basic binary cpuset credential environment fd file kstack pargs ptlwpinfo pwdx rlimit rlimitusage rusage sigfastblock signal thread tsignal vm)' \
+ '2::core file:_path_files -g "*core*(-.)"' \
'*:process id:_pids'
diff --git a/Completion/BSD/Command/_sockstat b/Completion/BSD/Command/_sockstat
index f372fe1b3..b99d3681a 100644
--- a/Completion/BSD/Command/_sockstat
+++ b/Completion/BSD/Command/_sockstat
@@ -29,6 +29,11 @@ case $OSTYPE in
'-q[quiet mode, do not print the header line]'
)
;|
+ freebsd<14->.*)
+ args+=(
+ '-I[show local address of socket to which the current socket is spliced]'
+ )
+ ;|
freebsd*)
for proto in ${${(M)${(f)"$(</etc/protocols)"}##[a-z0-9]*}}; do
case $proto in
diff --git a/Completion/BSD/Command/_systat b/Completion/BSD/Command/_systat
index 03df07631..fcb5565d7 100644
--- a/Completion/BSD/Command/_systat
+++ b/Completion/BSD/Command/_systat
@@ -79,6 +79,7 @@ case $OSTYPE in
"-n[don't resolve IP addresses]"
'(-b)-w[refresh interval]:refresh interval'
"(-b)-t[specify amount of refreshes for each screen in 'all' display mode]:turns"
+ '-z[display 0 instead of space when there is no data]'
)
esac
diff --git a/Completion/Unix/Command/_date b/Completion/Unix/Command/_date
index f0053ec02..f70fc3722 100644
--- a/Completion/Unix/Command/_date
+++ b/Completion/Unix/Command/_date
@@ -37,7 +37,10 @@ else
)
;|
freebsd*|dragonfly*|darwin*|netbsd*)
- args+=( '-n[only set time on current machine]' )
+ args+=(
+ '-n[only set time on current machine]'
+ '-R[display in RFC2822 format]'
+ )
;|
freebsd*|dragonfly*|darwin*|openbsd*)
args+=(
@@ -61,11 +64,14 @@ else
;|
freebsd*|dragonfly*|darwin*)
args+=(
- '-R[display in RFC2822 format]'
- '(-R)-I-[display in ISO 8601 format]::precision [date]:(date hours minutes seconds)'
"*-v+[adjust and print (but don't set) date]:[+-]value[ymwdHMS]"
)
;|
+ dragonfly*|darwin*)
+ args+=(
+ '(-R)-I-[display in ISO 8601 format]::precision [date]:(date hours minutes seconds)'
+ )
+ ;|
freebsd<-12>.*)
args+=(
'-d+:daylight saving time value'
@@ -77,6 +83,11 @@ else
freebsd<14->.*|openbsd*)
args+=( '-z+[specify timezone for output]:time zone:_time_zone')
;|
+ freebsd*)
+ args+=(
+ '(-R)-I-[display in ISO 8601 format]::precision [date]:(date hours minutes seconds ns)'
+ )
+ ;|
netbsd*)
args+=( '-d[output date specified by string]:time string:' )
;;
diff --git a/Completion/Unix/Command/_df b/Completion/Unix/Command/_df
index 21abff105..315758488 100644
--- a/Completion/Unix/Command/_df
+++ b/Completion/Unix/Command/_df
@@ -45,21 +45,25 @@ elif [[ "$OSTYPE" == (darwin|dragonfly|freebsd|netbsd*|openbsd)* ]]; then
'-a[show all mount points]'
'(-b -g -H -h -k -m --si)-g[use 1024^3-byte blocks]'
'(-b -g -H -h -k -m --si)-m[use 1024*1024-byte blocks]'
- )
- ;|
- (darwin*|dragonfly*|freebsd*)
- args+=(
'(-b -g -H -h -k -m --si)-b[use 512-byte blocks (default)]'
'(-b -g -H -h -k -m --si)-H[human-readable output (base 10)]'
)
;|
- (darwin*|freebsd*)
+ (darwin*|freebsd*|netbsd*)
args+=(
'-c[display a grand total]'
)
+ ;|
+ (darwin*|freebsd*)
+ args+=(
+ '--libxo[generate output via libxo]'
+ '-,[separate thousands]'
+ )
;|
(darwin*)
args+=(
+ '-I[suppress inode counts]'
+ '-Y[include file system type]'
"-T+$spec"
"!-t+$spec" # obsolete
)
@@ -76,14 +80,15 @@ elif [[ "$OSTYPE" == (darwin|dragonfly|freebsd|netbsd*|openbsd)* ]]; then
;|
(freebsd*)
args+=(
- '--libxo[generate output via libxo]'
'(-b -g -H -h -k -m --si)--si[human-readable output (base 10)]'
- '-,[separate thousands]'
)
;;
(netbsd*)
args+=(
+ '(-P -G -N)-f[display only the available free]'
'(-G -i -P)-G[display all fields in statvfs]'
+ '(-G -P)-N[suppress the header line normally output]'
+ '-W[print widge name instead of the device]'
)
;;
esac
diff --git a/Completion/Unix/Command/_dhclient b/Completion/Unix/Command/_dhclient
index e22586b04..f38e9a9e5 100644
--- a/Completion/Unix/Command/_dhclient
+++ b/Completion/Unix/Command/_dhclient
@@ -12,6 +12,7 @@ case $OSTYPE in
args+=(
'(-d)-b[immediately move to the background]'
'-l+[specify leases file]:file:_files'
+ "-n[don't wait for ARP resolution]"
'-p+[specify PID file]:file:_files'
'-u[reject leases with unknown options]'
'-q[quiet]'
diff --git a/Completion/Unix/Command/_dmidecode b/Completion/Unix/Command/_dmidecode
index e2c511313..62a950a7a 100644
--- a/Completion/Unix/Command/_dmidecode
+++ b/Completion/Unix/Command/_dmidecode
@@ -5,8 +5,10 @@ _arguments -s \
'(-)'{-h,--help}'[display usage information]' \
'(-q --quiet -u --dump)'{-q,--quiet}'[be less verbose]' \
'--no-quirks[decode everything without quirks]' \
- '(-t --type -H --handle -u --dump --dump-bin -s --string)'{-s+,--string=}'[only display value of specified DMI string]:DMI string:(bios-vendor bios-version bios-release-date system-manufacturer system-product-name system-version system-serial-number system-uuid baseboard-manufacturer baseboard-product-name baseboard-version baseboard-serial-number baseboard-asset-tag chassis-manufacturer chassis-type chassis-version chassis-serial-number chassis-asset-tag processor-family processor-manufacturer processor-version processor-frequency)' \
- '(-s --string -H --handle --dump-bin)*'{-t+,--type=}'[only display entries of specified type]:entry type:(bios system baseboard chassis processor memory cache connector slot)' \
+ '(-t --type -H --handle -u --dump --dump-bin -s --string)'{-s+,--string=}'[only display value of specified DMI string]:DMI string:compadd -M "r\:|-=* r\:|=*" - $(_call_program strings dmidecode --list-strings)' \
+ '--list-strings[list available string keywords]' \
+ '(-s --string -H --handle --dump-bin)*'{-t+,--type=}'[only display entries of specified type]:entry type:compadd - $(_call_program types dmidecode --list-types)' \
+ '--list-types[list available type keywords]' \
'(-s --string -t --type -H --handle --dump-bin)'{-H,--handle=}'[only display the entry of specified handle]:handle' \
'(-q --quiet -u --dump -s --string)'{-u,--dump}"[don't decode entries]" \
'(-s --string -t --type -H --handle)--dump-bin=[dump DMI data to a binary file]:file:_files' \
diff --git a/Completion/Unix/Command/_env b/Completion/Unix/Command/_env
index 8cf0ad467..89a45e4a4 100644
--- a/Completion/Unix/Command/_env
+++ b/Completion/Unix/Command/_env
@@ -8,6 +8,7 @@ case $variant in
gnu)
(( $#words > 2 )) && ign='!'
args=(
+ '(-a --argv0)'{-a+,--argv0=}'[pass argument as the zeroth argument of command]:argument'
'(-)'{-i,--ignore-environment}'[start with empty environment]'
'(* -0 --null)'{-0,--null}'[end each output line with NUL, not newline]'
'(--ignore-environment -i --help --version)*'{-u+,--unset=}'[remove variable from the environment]:env var to remove:_parameters -g "*export*"'
@@ -28,12 +29,19 @@ case $variant in
'-U[add variables from user and system login.conf(5)]: :->user-class'
)
;|
- freebsd*|darwin*)
- args=( '-0[use NUL, not newline after each variable in output]' )
+ freebsd*|netbsd*)
+ args+=( '-C+[change working directory]:directory:_directories' )
+ ;|
+ freebsd*|darwin*|netbsd*)
+ args+=( '-0[use NUL, not newline after each variable in output]' )
+ ;|
+ freebsd*|darwin*|dragonfly*|netbsd*|openbsd*)
+ args+=(
+ '(-i)*-u+[remove variable from the environment]:env var to remove:_parameters -g "*export*"'
+ )
;|
freebsd*|darwin*|dragonfly*)
args+=(
- '(-i)*-u+[remove variable from the environment]:env var to remove:_parameters -g "*export*"'
'-P+[specify alternate executable search PATH]:path:_dir_list'
'-S+[perform word splitting]:string to split'
'*-v[verbose output]'
diff --git a/Completion/Unix/Command/_iostat b/Completion/Unix/Command/_iostat
index d3943fcb4..36a3b7904 100644
--- a/Completion/Unix/Command/_iostat
+++ b/Completion/Unix/Command/_iostat
@@ -50,6 +50,9 @@ case $OSTYPE:l in
args+=(
'-x[show extended disk statistics]'
'-y[report data on waiting and active requests]'
+ '-z[replace drive and CPU statistics that are zero with spaces]'
+ "-H+[set page height explicitly]:height [$LINES]"
+ "-W+[set page width explicitly]:width [$COLUMNS]"
)
;;
aix*)
diff --git a/Completion/Unix/Command/_last b/Completion/Unix/Command/_last
index 2013cc1c2..d76260c36 100644
--- a/Completion/Unix/Command/_last
+++ b/Completion/Unix/Command/_last
@@ -8,17 +8,16 @@ ttys=( ${ttys#/dev/} )
for pattern arg in \
'(solaris*|linux-gnu)' '(--hostlast)-a[display hostname in last column]' \
'((free|net|open)bsd*|darwin*|dragonfly*)' '-h+[limit sessions by hostname]:host:_hosts' \
- '((free|open)bsd*)' '-s[report duration in seconds]' \
- '(freebsd*|openbsd*)' '-d+[limit sessions to those active at snapshot time]:time ([[CC]YY][MMDD]hhmm[.SS])' \
+ '((free|open)bsd*|darwin*)' '-s[report duration in seconds]' \
+ '((free|open)bsd*|darwin*)' '-d+[limit sessions to those active at snapshot time]:time ([[CC]YY][MMDD]hhmm[.SS])' \
'((net|free|open)bsd*|darwin*|dragonfly*)' '-t+[limit sessions by tty]:tty:_ttys -D' \
'openbsd*' '-c[calculate total time]' \
- '^darwin*' '(--file)-f+[specify account file]:file:_files' \
- '(solaris*|linux-gnu|freebsd*|openbsd*)' '(--limit)-n+[specify number of lines to show]:number' \
+ '(solaris*|darwin*|linux-gnu|freebsd*|openbsd*)' '(--limit)-n+[specify number of lines to show]:number' \
'((open|net)bsd*|dragonfly*)' '-T[show more detailed time information including year and seconds]' \
'netbsd*' '-x[assume file is in wtmpx(5) format]' \
'netbsd*' '-n[show IP of remote hosts]' \
- 'freebsd*' '-w[show seconds in duration field]' \
- 'freebsd*' '-y[show year in session start time]'
+ '(freebsd*|darwin*)' '-w[show seconds in duration field]' \
+ '(freebsd*|darwin*)' '-y[show year in session start time]'
do
[[ $OSTYPE = $~pattern ]] && args+=( $arg )
done
@@ -58,4 +57,5 @@ else
args+=( '*:user:_users' )
fi
-_arguments -s -S $args
+_arguments -s -S $args \
+ '(--file)-f+[specify account file]:file:_files'
diff --git a/Completion/Unix/Command/_ls b/Completion/Unix/Command/_ls
index 392b8490b..a19ad30e2 100644
--- a/Completion/Unix/Command/_ls
+++ b/Completion/Unix/Command/_ls
@@ -61,12 +61,16 @@ if ! _pick_variant gnu=gnu unix --help; then
'(-l -1 -C -m -x)-g[long listing but without owner information]'
)
fi
+ if [[ $OSTYPE = (netbsd*|darwin*) ]]; then
+ arguments+=(
+ "-X[don't cross mount points when recursing]"
+ )
+ fi
if [[ $OSTYPE = netbsd* ]]; then
arguments+=(
'-M[output file sizes in comma-separated form]'
'-O[output only leaf (non-directory) files]'
'-P[print full pathname for each file]'
- "-X[don't cross mount points when recursing]"
)
fi
if [[ $OSTYPE = (dragonfly*|freebsd*|openbsd*|darwin*) ]]; then
diff --git a/Completion/Unix/Command/_mv b/Completion/Unix/Command/_mv
index c52e7a5e4..983c25ea8 100644
--- a/Completion/Unix/Command/_mv
+++ b/Completion/Unix/Command/_mv
@@ -38,11 +38,11 @@ case $variant; in
'(-f -n)-i[prompt before overwriting existing file]'
)
;|
+ darwin*|dragonfly*|freebsd*|netbsd*)
+ args+=( "-h[if target is a symlink to a directory, don't follow it]" )
+ ;|
darwin*|dragonfly*|freebsd*)
- args+=(
- "(-f -i)-n[don't overwrite existing file]"
- "-h[if target is a symlink to a directory, don't follow it]"
- )
+ args+=( "(-f -i)-n[don't overwrite existing file]" )
;|
darwin*|dragonfly*|*bsd*)
args+=(
diff --git a/Completion/Unix/Command/_ps b/Completion/Unix/Command/_ps
index c3dfae47d..158fb6b83 100644
--- a/Completion/Unix/Command/_ps
+++ b/Completion/Unix/Command/_ps
@@ -106,9 +106,9 @@ case $OSTYPE in
;|
linux-gnu|netbsd*) bsdarg+=( 'k[specify sort order]' ) ;|
linux-gnu|openbsd*) bsd+=( 'f[show process hierarchy]' ) ;|
+ darwin*|freebsd*|netbsd*) bsdarg+=( '*G[select processes by real group]' ) ;|
darwin*|freebsd*)
bsd+=( 'X[skip processes with no controlling terminal]' )
- bsdarg+=( '*G[select processes by real group]' )
;|
freebsd*|dragonfly*)
bsd+=( 'f[show command and environment for swapped out processes]' )
diff --git a/Completion/Unix/Command/_script b/Completion/Unix/Command/_script
index d38d56f2e..25f8ea35f 100644
--- a/Completion/Unix/Command/_script
+++ b/Completion/Unix/Command/_script
@@ -50,19 +50,28 @@ case $OSTYPE in
'(-d -p -T)-r[record a session with input, output and timing data]'
)
;|
+ darwin*|netbsd*|freebsd*)
+ args+=(
+ '-e[return exit status of the child process]'
+ )
+ ;|
netbsd*|openbsd*)
args+=(
'-c[run specified command instead of a shell]:command:_cmdstring'
)
;|
+ darwin*|freebsd*)
+ args+=(
+ '(-a -r -k -t)-T[play back a recorded session, reporting only timestamps]: :_date_formats'
+ )
+ ;|
netbsd*)
args+=( '-f[flush output after each write]' )
;|
freebsd*)
args+=(
- '-e[return exit status of the child process]'
'-f[use filemon(4)]'
- '(-a -r -k -t)-T[play back a recorded session, reporting only timestamps]: :_date_formats'
+ '-w[forward terminal size changes on SIGWINCH]'
)
;|
darwin*|dragonfly*|freebsd*)
diff --git a/Completion/Unix/Command/_sed b/Completion/Unix/Command/_sed
index ef3aaf2fd..ecbec61d1 100644
--- a/Completion/Unix/Command/_sed
+++ b/Completion/Unix/Command/_sed
@@ -104,7 +104,7 @@ else
case $OSTYPE in
openbsd*|freebsd*|netbsd*|darwin*|dragonfly*)
args+=(
- '(-r -E)'{-E,-r}$extended
+ '(-r -E -H)'{-E,-r}$extended
'-a[delay opening files listed with w function]'
)
;|
@@ -115,8 +115,10 @@ else
args+=(
'-I+[edit files in-place, treating all files as a single input stream]:: :_guard "^(*[@/; \\\]*|?(#c6,)|-*)" "suffix for backup"'
)
- ;;
+ ;|
openbsd*) args+=( '-u[make output line buffered]' ) ;;
+ darwin*) args+=( '(-r -E)-H[use enhanced regular expressions]' ) ;;
+ netbsd*) args+=( '(-r -E)-g[use GNU regular expressions]' '!(-r -E -g)-G' ) ;;
esac
fi
diff --git a/Completion/Unix/Command/_vmstat b/Completion/Unix/Command/_vmstat
index 6db776e62..1d0ac855d 100644
--- a/Completion/Unix/Command/_vmstat
+++ b/Completion/Unix/Command/_vmstat
@@ -37,10 +37,14 @@ case $OSTYPE in
'-f[report on the number fork syscalls since boot and pages of virtual memory for each]'
)
;|
+ freebsd*|dragonfly*|netbsd*)
+ specs+=(
+ '-n+[change the maximum number of disks to display]:number of disks to display [2]'
+ )
+ ;|
freebsd*|dragonfly*)
specs+=(
'-m[report on the usage of kernel dynamic memory allocated using malloc(9) by type]'
- '-n+[change the maximum number of disks to display]:number of disks to display [2]'
'*-p+[specify which types of devices to display]: :->devices'
'-s[display the contents of the SUM structure]'
'-z[report on memory used by the kernel zone allocator, uma(9), by zone]'
diff --git a/Completion/Unix/Command/_w b/Completion/Unix/Command/_w
index e82c84f57..408cb76af 100644
--- a/Completion/Unix/Command/_w
+++ b/Completion/Unix/Command/_w
@@ -23,7 +23,7 @@ case $OSTYPE in
openbsd*)
args+=( '-a[translate network addresses into names]' )
;|
- (free|net)bsd*|dragonfly*)
+ (free|net)bsd*|dragonfly*|darwin*)
args+=( '-n[show network addresses as numbers]' )
;|
*bsd*|dragonfly*)
@@ -35,6 +35,11 @@ case $OSTYPE in
freebsd*|dragonfly*)
args+=( '-d[dump process list on a per controlling tty basis]' )
;|
+ netbsd*)
+ args+=(
+ '-A[sort tty names alphabetically instead of utmp or utmpx order]'
+ )
+ ;|
solaris*)
args+=( '!(-s -w -l)'{-l,-w}
'-s[short output form]'
diff --git a/Completion/Unix/Command/_wc b/Completion/Unix/Command/_wc
index a1897e289..2a4f7ab05 100644
--- a/Completion/Unix/Command/_wc
+++ b/Completion/Unix/Command/_wc
@@ -18,7 +18,7 @@ if _pick_variant gnu=GNU unix --version; then
else
args=( -A "-*" "${(@)args:#(|\(*\))(|\*)--*}" )
case $OSTYPE in
- freebsd*|netbsd*) args+=( '-L[print longest line lengths]' ) ;;
+ freebsd*|netbsd*|darwin*) args+=( '-L[print longest line lengths]' ) ;;
openbsd*) args+=( '-h[human readable: use unit suffixes]' ) ;;
solaris*) args+=( ${${(M)args:#*-m\[*}//-m\[/-C\[} ) ;;
esac
diff --git a/Completion/Unix/Command/_zfs b/Completion/Unix/Command/_zfs
index c09435a1f..5a45c2920 100644
--- a/Completion/Unix/Command/_zfs
+++ b/Completion/Unix/Command/_zfs
@@ -79,7 +79,7 @@ rw_ds_props=(
'paths:mountpoint:_directories -W / -P /'"
'multilevel:value:(on off)'
'nbmand:value:(on off)'
- 'primarycache:value:(all none metadata)'
+ {prefetch,primarycache}':value:(all none metadata)'
'quota: :->quotas'
'readonly:value:(on off)'
'recordsize:value:(512 1K 2K 4K 8K 16K 32K 64K 128K 256K 512K 1M)'
@@ -515,9 +515,11 @@ case $service:$words[1] in
;;
zfs:set)
- [[ $implementation = solaris ]] && args=(
- '-r[recursively apply value]' \
- )
+ if [[ $implementation = solaris ]]; then
+ args=( '-r[recursively apply value]' )
+ else
+ args=( "-u[update property but don't mount or share dataset]" )
+ fi
_arguments -C -A "-*" -S $args \
':property:->set-properties' \
'*:filesystem/volume:_zfs_dataset -t fs -t vol'
@@ -598,13 +600,14 @@ case $service:$words[1] in
zfs:mount)
[[ $OSTYPE != freebsd* ]] && args=( '-O[overlay mount]' )
[[ $implementation = openzfs ]] && args+=(
- '-l[load keys for encrypted filesystems as they are being mounted]'
+ '-l[load keys for encrypted filesystems as they are being mounted]'
+ '(-a)-R[mount filesystems along with all their children]'
)
_arguments -A "-*" -S $args \
'-o+[specify temporary file system options]: :_values -s , "option" {,no}{atime,dev,exec,relatime,suid,xattr} ro rw' \
'-v[report mount progress]' \
'-f[force mount]' \
- '(:)-a[mount all available ZFS filesystems]' \
+ '(: -R)-a[mount all available ZFS filesystems]' \
'(-a):filesystem:_zfs_dataset -t fs'
;;
@@ -888,6 +891,12 @@ case $service:$words[1] in
':property:($delegatable_perms $ro_ds_props ${rw_ds_props%%:*})'
;;
+ zpool:(clear|online))
+ [[ $OSTYPE = linux* ]] && args=(
+ "--power[power on the device's slot in the storage enclosure]"
+ )
+ ;|
+
zpool:help)
_arguments -A "-*" -S \
- commands \
@@ -905,6 +914,7 @@ case $service:$words[1] in
'-L[display real paths for vdevs resolving all symbolic links]'
'-o+[set given pool properties]: :_values -s , "property" "${(@M)ci_po_props\:#ashift*}"' \
'-P[display real paths for vdevs instead of only the last component of the path]'
+ --allow-ashift-mismatch --allow-in-use --allow-replication-mismatch
)
elif [[ $implementation = solaris ]]; then
args=( '-l[display configuration in /dev/chassis location form]' )
@@ -1004,7 +1014,7 @@ case $service:$words[1] in
zpool:get)
[[ $implementation = solaris ]] && args=(
- '-s+[specify sources to display]: :_values -s "source" local default none'
+ '-s+[specify sources to display]: :_values -s , "source" local default none'
)
_arguments -A "-*" -S $args \
'-H[suppress headers and tab-delimit fields]' \
@@ -1140,6 +1150,9 @@ case $service:$words[1] in
[[ $implementation = openzfs ]] && args=(
'-f[force disk into faulted state]'
)
+ [[ $OSTYPE = linux* ]] && args=(
+ "--power[power off the device's slot in the storage enclosure]"
+ )
_arguments -C -A "-*" -S $args \
'-t[offline until next reboot]' \
':pool:_zfs_pool' \
@@ -1147,7 +1160,7 @@ case $service:$words[1] in
;;
zpool:online)
- _arguments -C -A "-*" -S \
+ _arguments -C -A "-*" -S $args \
'-e[expand device to use all available space]' \
':pool:_zfs_pool' \
'*:virtual device:->pool-devices'
@@ -1234,8 +1247,10 @@ case $service:$words[1] in
zpool:status)
if [[ $implementation = openzfs ]]; then
args=(
+ '--power[display vdev enclosure slot power status]'
'-D[display a histogram of deduplication statistics]'
'-c[run scripts on each vdev]:script:_files -W "($ZPOOL_SCRIPTS_PATH /etc/zfs/zpool.d ~/.zpool.d)"'
+ '-e[only show unhealthy vdevs]'
'-i[display vdev initialization status]'
'-g[display vdev GUIDs instead of the normal device names]'
'-L[display real paths for vdevs resolving all symbolic links]'
Messages sorted by:
Reverse Date,
Date,
Thread,
Author