From ad9b140213e9a7f02b227ec2d7ec9735cfc57fa6 Mon Sep 17 00:00:00 2001 From: Oliver Kiddle Date: Sun, 29 Apr 2018 23:29:16 +0200 Subject: 42676: deal with system specific arguments in dd completion --- Completion/Unix/Command/_dd | 112 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 97 insertions(+), 15 deletions(-) (limited to 'Completion/Unix/Command/_dd') 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 -- cgit 1.4.1