mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-11-04 07:21:06 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			54 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
#compdef iconv
 | 
						|
 | 
						|
local expl curcontext="$curcontext" state line codeset LOCPATH
 | 
						|
 | 
						|
(( $+_is_gnu )) || typeset -gA _is_gnu
 | 
						|
if (( ! $+_is_gnu[$words[1]] )); then
 | 
						|
  if [[ $(_call_program version $words[1] --version </dev/null 2>/dev/null) = *GNU* ]]; 
 | 
						|
  then
 | 
						|
    _is_gnu[$words[1]]=yes
 | 
						|
  else
 | 
						|
    _is_gnu[$words[1]]=
 | 
						|
  fi
 | 
						|
fi
 | 
						|
 | 
						|
if [[ -n "$_is_gnu[$words[1]]" ]]; then
 | 
						|
 | 
						|
  _arguments -C \
 | 
						|
    {'(--from-code --list)-f','(-f --list)--from-code='}'[specify code set of input file]:code set:->codeset' \
 | 
						|
    {'(--to-code --list)-t','(-t --list)--to-code='}'[specify code set for output]:code set:->codeset' \
 | 
						|
    '--list[list all character code sets]' \
 | 
						|
    '--verbose[print progress information]' \
 | 
						|
    {'(--help)-\?','(-\?)--help'}'[display help information]' \
 | 
						|
    '--usage[display a short usage message]' \
 | 
						|
    {'(--version)-V','(-V)--version'}'[print program version]' \
 | 
						|
    '1:file:_files' && return 0
 | 
						|
    
 | 
						|
    if [[ $state = codeset ]]; then
 | 
						|
      _wanted codesets expl 'code set' \
 | 
						|
          compadd "$@" ${${(s:,:)$(iconv --list|sed -n '/^$/,$ p')}## #}
 | 
						|
    fi
 | 
						|
    
 | 
						|
else
 | 
						|
 | 
						|
  _arguments -C \
 | 
						|
    '-f[specify code set of input file]:code set:->codeset' \
 | 
						|
    '-t[specify code set for output]:code set:->codeset' \
 | 
						|
    '1:file:_files' && return 0
 | 
						|
 | 
						|
    if [[ $state = codeset ]]; then
 | 
						|
      if [[ -f /usr/lib/iconv/iconv_data ]]; then  # IRIX & Solaris
 | 
						|
	codeset=( ${${(f)"$(</usr/lib/iconv/iconv_data)"}%%[[:blank:]]*} )
 | 
						|
      elif [[ -d ${LOCPATH:=/usr/lib/nls/loc}/iconv ]]; then  # OSF
 | 
						|
	codeset=( $LOCPATH/iconv/*(N:t) )
 | 
						|
	codeset=( ${(j:_:s:_:)codeset} )
 | 
						|
      else
 | 
						|
	return 1
 | 
						|
      fi
 | 
						|
	
 | 
						|
      _wanted codesets expl 'code set' compadd "$@" -a codeset
 | 
						|
    fi
 | 
						|
 | 
						|
fi    
 | 
						|
    
 | 
						|
    
 |