mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 06:00:54 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			73 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #compdef strings gstrings eu-strings
 | |
| 
 | |
| local args variant format bytes
 | |
| format='[precede each string by its byte offset in the file]:format:((d\:decimal o\:octal x\:hexadecimal))'
 | |
| bytes='[specify minimum string length]:length (bytes) [4]'
 | |
| args=(
 | |
|   '(-t --radix)-o[precede each string by its decimal byte offset]'
 | |
|   '!(-n --bytes)-'{1,2,3,4,5,6,7,8,9}
 | |
| )
 | |
| 
 | |
| if _pick_variant -r variant binutils=GNU elftoolchain=elftoolchain elfutils=elfutils unix -V; then
 | |
|   args+=(
 | |
|     '(-a --all -d --data)'{-a,--all}'[look everywhere in file, not just initialised data space of object files]'
 | |
|     '(-e --encoding)'{-e+,--encoding=}'[select character size and endianness]:character type:((
 | |
|       s\:7-bit
 | |
|       S\:8-bit
 | |
|       b\:16-bit\ big-endian
 | |
|       l\:16-bit\ little-endian
 | |
|       B\:32-bit\ big-endian
 | |
|       L\:32-bit\ little-endian))'
 | |
|     '(-f --print-file-name)'{-f,--print-file-name}'[print name of the file before each string]'
 | |
|     '(-n --bytes)'{-n+,--bytes=}"$bytes"
 | |
|     '(-d -t --radix)'{-t+,--radix=}"$format"
 | |
|     '(- *)--help[display help information]'
 | |
|     '(- *)--version[display version information]'
 | |
|   )
 | |
|   case $variant in
 | |
|     elfutils|binutils)
 | |
|       args+=( '(- *)-V[display version information]' )
 | |
|     ;|
 | |
|     elftoolchain|binutils)
 | |
|       args+=(
 | |
|         '(- *)-h[display help information]'
 | |
| 	'(- *)-v[display version information]'
 | |
|       )
 | |
|     ;|
 | |
|     binutils)
 | |
|       args+=(
 | |
| 	'(-a --all -d --data)'{-d,--data}'[only print strings from file data sections]'
 | |
| 	'(-w --include-all-whitespace)'{-w,--include-all-whitespace}'[include all whitespace as valid string characters]'
 | |
| 	'(-T --target)'{-T+,--target=}'[specify binary file format]:format:compadd - ${(z)${(M)${(f)"$(_call_program targets strings --help)"}##* supported targets*}##*\: }'
 | |
| 	'(-s --output-separator)'{-s+,--output-separator=}'[specify string used to separate strings in output]:separator'
 | |
|       )
 | |
|     ;;
 | |
|     elfutils)
 | |
|       args+=(
 | |
| 	'(- *)--usage[display a short usage message]'
 | |
| 	'(- *)-\\?[display help information]'
 | |
|       )
 | |
|     ;;
 | |
|   esac
 | |
| else
 | |
|   args+=(
 | |
|     "(-d)-t+$format"
 | |
|     "-n+$bytes"
 | |
|     '-a[look everywhere in file, not just initialised data space of object files]'
 | |
|   )
 | |
|   case $OSTYPE in
 | |
|     darwin*)
 | |
|       local -a arch
 | |
|       arch=( ${(z)${${"$(_call_program architectures strings -arch - 2>&1)"}#*flags are: }%%$'\n'*} all )
 | |
|       args+=( '-arch[specify the architecture]:architecture:compadd -a arch' )
 | |
|     ;;
 | |
|   esac
 | |
| fi
 | |
| 
 | |
| if compset -P '@'; then
 | |
|   _files
 | |
|   return
 | |
| fi
 | |
| 
 | |
| _arguments -S -s $args \
 | |
|   '*:file:_files'
 |