summaryrefslogtreecommitdiffstats
path: root/Completion/Unix/Command/_iconv
diff options
context:
space:
mode:
authorOliver Kiddle <opk@users.sourceforge.net>2005-03-21 16:50:17 +0000
committerOliver Kiddle <opk@users.sourceforge.net>2005-03-21 16:50:17 +0000
commite222689ea14bcf037ef5085d85216c8bd2ddd3d0 (patch)
treeb21e27027f452fae2c5a2edd54ef178e480d422f /Completion/Unix/Command/_iconv
parentLatest changes from trunk. (diff)
downloadzsh-e222689ea14bcf037ef5085d85216c8bd2ddd3d0.tar
zsh-e222689ea14bcf037ef5085d85216c8bd2ddd3d0.tar.gz
zsh-e222689ea14bcf037ef5085d85216c8bd2ddd3d0.tar.bz2
zsh-e222689ea14bcf037ef5085d85216c8bd2ddd3d0.tar.lz
zsh-e222689ea14bcf037ef5085d85216c8bd2ddd3d0.tar.xz
zsh-e222689ea14bcf037ef5085d85216c8bd2ddd3d0.tar.zst
zsh-e222689ea14bcf037ef5085d85216c8bd2ddd3d0.zip
merge changes from 4.3 branch
Diffstat (limited to 'Completion/Unix/Command/_iconv')
-rw-r--r--Completion/Unix/Command/_iconv55
1 files changed, 55 insertions, 0 deletions
diff --git a/Completion/Unix/Command/_iconv b/Completion/Unix/Command/_iconv
new file mode 100644
index 000000000..92fa17e34
--- /dev/null
+++ b/Completion/Unix/Command/_iconv
@@ -0,0 +1,55 @@
+#compdef iconv
+
+local expl curcontext="$curcontext" state line ret=1
+local LOCPATH="${LOCPATH:-/usr/lib/nls/loc}"
+local -U codeset
+
+if _pick_variant gnu=GNU unix --version; then
+
+ local exargs="--list -? --help --usage --version -V"
+ _arguments -C -S -s \
+ "(-f --from-code $exargs)"{-f+,--from-code=}'[specify code set of input file]:code set:->codeset' \
+ "(-t --to-code $exargs)"{-t+,--to-code=}'[specify code set for output]:code set:->codeset' \
+ '(- 1)--list[list all character code sets]' \
+ "($exargs)-c[omit invalid characters from output]" \
+ "(-o --output $exargs)"{-o+,--output=}'[specify output file]:output file:_files' \
+ "(-s --silent --verbose $exargs)"{-s,--silent}'[suppress warnings]' \
+ "(-s --silent $exargs)--verbose[print progress information]" \
+ '(-)'{-\?,--help}'[display help information]' \
+ '(-)--usage[display a short usage message]' \
+ '(-)'{-V,--version}'[print program version]' \
+ '1:input file:_files' && return 0
+
+ if [[ $state = codeset ]]; then
+ if compset -P '*/'; then
+ _wanted option expl option compadd "$@" /TRANSLIT && ret=0
+ else
+ _wanted codesets expl 'code set' compadd "$@" \
+ -M 'm:{a-zA-Z}={A-Za-z} r:|-=* r:|=*' \
+ ${${${(f)"$(_call_program codesets iconv --list|sed -n '/^$/,$ p')"}## #}%//} && ret=0
+ fi
+ fi
+
+ return ret
+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:]]*} )
+ codeset+=( /usr/lib/iconv/*%*.so(Ne.'reply=( ${${REPLY:t}%%%*} ${${REPLY:r}#*%} )'.) )
+ elif [[ -d $LOCPATH/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