Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
PATCH: handle system specific arguments in _dd
- X-seq: zsh-workers 42676
- From: Oliver Kiddle <okiddle@xxxxxxxxxxx>
- To: Zsh workers <zsh-workers@xxxxxxx>
- Subject: PATCH: handle system specific arguments in _dd
- Date: Wed, 18 Apr 2018 00:08:57 +0200
- Authentication-results: amavisd4.gkg.net (amavisd-new); dkim=pass (2048-bit key) header.d=yahoo.co.uk
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.co.uk; s=s2048; t=1524002951; bh=Pk1Yt8CISZ3LuKwLedMbNXx38CXYX0VCpPWEcUlgDys=; h=From:To:Subject:Date:From:Subject; b=iQgcyZ0JT1e5SSV2PLKDgXdM4EtOrvXyC/pTn/e0V/ZiGwOUcjyaEDqf8aFfvEJFS9jLY23VFliLOgHH7CoDH5XielJ5BjRkkD+n1he+bJ3fWTIkuzK2QLx0QfLHPtnDigmO2SOogundb9cy0V4aRUVmowh+/hUz9VKcj4XYOY0zvZ800qNpZaNEm6HctyNSs8npWJ0zozmeS4V/RfcuaBNjfiOB9vLSG7E2lTMqA5HE6Tg/Os+LjQNU8WFwa2vTdFYsUC7bE5eslRidvwq11oJC669W2IcZ/4dGx9ehro/e6uLfBaqDCFjV+ovYCibeTScZ1vbZJLaohusKM4En0w==
- List-help: <mailto:zsh-workers-help@zsh.org>
- List-id: Zsh Workers List <zsh-workers.zsh.org>
- List-post: <mailto:zsh-workers@zsh.org>
- List-unsubscribe: <mailto:zsh-workers-unsubscribe@zsh.org>
- Mailing-list: contact zsh-workers-help@xxxxxxx; run by ezmlm
This expands dd completion to deal with system specifics.
Oliver
diff --git a/Completion/Unix/Command/_dd b/Completion/Unix/Command/_dd
index e51337f21..e5c5e63ce 100644
--- a/Completion/Unix/Command/_dd
+++ b/Completion/Unix/Command/_dd
@@ -1,17 +1,99 @@
#compdef dd gdd
-_values -w 'option' \
- 'if[specify input file]:input file:_tilde_files' \
- 'of[specify output file]:output file:_tilde_files' \
- '(bs)ibs[input block size]:block size (bytes)' \
- '(bs)obs[output block size]:block size (bytes)' \
- '(ibs obs)bs[block size]:block size (bytes)' \
- 'cbs[conversion buffer size]:buffer size (bytes)' \
- 'skip[input blocks initially skipped]:blocks' \
- 'seek[output blocks initially skipped]:blocks' \
- 'files[specify number of input files to copy and concatenate]:number of files' \
- 'count[number of input blocks to copy]:blocks' \
- 'conv[specify conversions to apply]:conversion:_values -s , conversion
- "(ebcdic ibm)ascii" "(ascii ibm)ebcdic" "(ascii ebcdic)ibm"
- "(unblock)block" "(block)unblock"
- "(ucase)lcase" "(lcase)ucase" swab noerror sync'
+local -a vals conv flags
+local variant
+
+_pick_variant -r variant gnu=GNU $OSTYPE --version
+
+vals=(
+ '(ibs obs)bs[block size]:block size (bytes)'
+ 'cbs[conversion buffer size]:buffer size (bytes)'
+ 'conv[specify conversions to apply]: :_values -s , conversion $conv'
+ 'count[number of input blocks to copy]:blocks'
+ '(bs)ibs[input block size]:block size (bytes)'
+ 'if[specify input file]:input file:_tilde_files'
+ '(bs)obs[output block size]:block size (bytes)'
+ 'of[specify output file]:output file:_tilde_files'
+ 'seek[output blocks initially skipped]:blocks'
+ 'skip[input blocks initially skipped]:blocks'
+)
+conv=(
+ '(ascii asciib oldascii ebcdic ebcdicb oldebcdic ibm ibmb oldibm)'{ascii,ebcdic,ibm}
+ '(unblock)block' '(block)unblock'
+ '(ucase)lcase' '(lcase)ucase'
+ swab sync noerror notrunc
+)
+
+case $variant in
+ ^gnu)
+ vals+=(
+ 'files[specify number of input files to copy and concatenate]:number of files'
+ )
+ ;|
+ (gnu|darwin|dragonfly|(free|net)bsd*)
+ conv+=( sparse )
+ ;|
+ gnu|netbsd*)
+ vals+=(
+ '*iflag[specify read flags]:flag:_sequence compadd - $flags'
+ '*oflag[specify write flags]:flag:_sequence compadd - $flags'
+ )
+ flags=( append direct directory dsync sync nonblock noctty nofollow )
+ ;|
+ darwin*|dragonfly*|(free|net)bsd*)
+ vals+=(
+ 'oseek[output blocks initially skipped]:blocks'
+ )
+ conv+=(
+ '(ascii oldascii ebcdic oldebcdic oldibm)'old{ascii,ebcdic,ibm}
+ )
+ ;|
+ (darwin|dragonfly|freebsd|netbsd|solaris)*)
+ vals+=(
+ 'iseek[input blocks initially skipped]:blocks'
+ )
+ ;|
+ (open|free)bsd*)
+ vals+=(
+ 'status[specify level of information to print to stderr]:level:(none noxfer)'
+ )
+ conv+=( osync )
+ ;|
+
+ freebsd*)
+ vals+=(
+ 'fillchar[specify padding character]:character'
+ 'speed[limit copying speed]:speed (bytes/second)'
+ )
+ conv+=(
+ '(pareven parnone parodd parset)'{pareven,parnone,parodd,parset}
+ )
+ ;;
+ gnu)
+ vals+=(
+ 'status[specify level of information to print to stderr]:level:(none noxfer progress)'
+ )
+ flags+=( fullblock noatime nocache count_bytes skip_bytes seek_bytes )
+ conv+=( excl nocreat fdatasync fsync )
+ ;;
+ netbsd*)
+ vals+=(
+ 'msgfmt[specify format for information summary]:format:(quiet posix human)'
+ 'progress[enable progress display]:enable:(1)'
+ )
+ flags+=(
+ wronly rdwr creat trunc excl shlock exlock cloexec nosigpipe rsync alt_io async
+ )
+ ;;
+ solaris*)
+ vals+=(
+ 'files[specify number of input files to copy and concatenate]:number of files'
+ 'oseek[output blocks initially skipped (via seek, not NUL-padding)]:blocks'
+ )
+ conv+=(
+ '(ascii asciib ebcdic ebcdicb ibmb)'{ascii,ebcdic,ibm}b
+ )
+ ;;
+esac
+
+_values -w 'option' $vals
Messages sorted by:
Reverse Date,
Date,
Thread,
Author