mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 06:00:54 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			99 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #compdef dd gdd
 | |
| 
 | |
| 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
 |