[Bash-completion-commits] [SCM] bash-completion branch, 1.x, updated. c0bba557b5a6fb17e7e2bf07a182965cb581b4ba
David Paleino
d.paleino at gmail.com
Sat Oct 3 13:44:28 UTC 2009
The following commit has been merged in the 1.x branch:
commit c0bba557b5a6fb17e7e2bf07a182965cb581b4ba
Merge: 28cdfc9243da41f5bdb29b7515482354c01438d3 9c53f0d6e6a481a615018ec11e5b5e99634d17f8
Author: David Paleino <d.paleino at gmail.com>
Date: Sat Oct 3 15:40:20 2009 +0200
Merge branch 'master' into 1.x
Conflicts:
CHANGES
Makefile.am
bash_completion
contrib/bluez-utils
contrib/cfengine
contrib/heimdal
contrib/isql
contrib/ldapvi
contrib/msynctool
contrib/munin-node
contrib/net-tools
contrib/openldap
contrib/openssl
contrib/repomanage
contrib/rpcdebug
contrib/rpmcheck
contrib/samba
contrib/strace
contrib/vncviewer
contrib/vpnc
contrib/xm
diff --combined CHANGES
index 14d7669,9ccf635..1d7fbb1
--- a/CHANGES
+++ b/CHANGES
@@@ -1,3 -1,189 +1,189 @@@
-bash-completion (1.x)
++bash-completion (1.1)
+
+ [ David Paleino ]
+ * Permit .gz files concatenation (Debian: #514377)
+ * Fix svk completion using $filenames instead of $default (Debian: #524961)
+ * Really add build-dep to aptitude's completion (Debian: #495883)
+ * Fix checks for GNUish userland, thanks to Robert Millan (Debian: #529510)
+ * Fix typo in .ass subtitles completion for mplayer (Debian: #531337)
+ * Fix regression on man(1) completion: also complete on local .3pm files
+ (Debian: #531343)
+ * Split mutt completion to contrib/mutt
+ * Split iconv completion to contrib/iconv
+ * Split dict completion to contrib/dict
+ * Split {update,invoke}-rc.d completions to contrib/sysv-rc
+ * Don't install _subversion anymore, upstream completion is better than
+ ours. Added to EXTRA_DIST in Makefile.am
+ * Split autorpm completion to contrib/autorpm
+ * Split jar completion to contrib/jar
+ * Split chkconfig completion to contrib/chkconfig
+ * Split chsh completion to contrib/chsh
+ * Split apt_build completion to contrib/apt-build
+ * Split aptitude-related completions to contrib/aptitude
+ * Split apt-cache and apt-get completions to contrib/apt
+ * Split rpm-related completions to contrib/rpm
+ * Split cvs-related completions to contrib/cvs
+ * Split man completion to contrib/man
+ * Split bash builtins completions to contrib/bash-builtins
+ * Split dpkg-related completions to contrib/dpkg (and re-enable usage
+ of grep-status if available)
+ * Split gcc completion to contrib/gcc
+ * Split dselect completion to contrib/dselect
+ * Split cardctl completion to contrib/cardctl
+ * Split pineaddr completion to contrib/pine
+ * Added avahi-discovered hosts to _known_hosts_real() (Debian: #518561)
+ * Added m4v completion to mplayer (Debian: #504213)
+ * Improve qemu completion (Debian: #534901)
+ * Added sshfs completion (shares the same as scp) (Debian: #545978)
+ * Fixed obvious brokenness (typos) in contrib/mdadm
+ * Clean [1.2.3.4]:port format in known_hosts, thanks to
+ Xuefer (Gentoo: #284563)
+ * Added --no-generate to "apt-cache pkgnames" calls, make it faster
+ on certain configurations (Debian: #547550)
+ * Split okular from evince filename extension completion, needed to add
+ okular-specific completions: xps, epub, odt, fb, mobi, g3 and chm.
+ Also, okular can read any of its formats also in .gz/.bz2 compressed
+ format, so change the regular expression to match this.
+ * Remove --with-suggests and --without-suggests from aptitude completion
+ * Patches from PLD Linux (thanks to Elan Ruusamäe):
+ - avoid sed pipe as ps itself can omit the headers
+ - improve service(8) completion, also look for "msg_usage"
+
+ [ Ville Skyttä ]
+ * Split yum completion to contrib/_yum (no longer installed by default, the
+ intent is to move it to yum upstream soon).
+ * Split yum-arch completion into contrib/yum-arch, load completion only if
+ yum-arch is installed.
+ * Update list of yum commands and options.
+ * Add yum repolist, --enable/disablerepo, --disableexcludes, -d, -e, --color,
+ and --enable/disableplugin completions.
+ * Add chkconfig --override and resetpriorities completions.
+ * Split mplayer and friends completions to contrib/mplayer.
+ * Parse top level mplayer and friends option completions from -list-options.
+ * Fix dir-only completion for make to include only dirs, not files.
+ * Remove unused variable RELEASE.
+ * Improve aspell dictionary completion: don't hardcode data-dir, get
+ canonical dicts from "aspell dicts".
+ * Always use /etc/shells for chsh -s completion, don't complete on comment
+ lines in it.
+ * Fix rpm --whatrequires/--whatprovides completions with spaces and other
+ unusual characters, add filename based --whatrequires completions.
+ * Add modplugplay filename completion.
+ * Add more mod-like audio file extensions for xine-based players and timidity.
+ * Complete on plain alternatives like update-alternatives.
+ * Rename installed_alternatives() to _installed_alternatives().
+ * Add /etc/pki/tls/openssl.cnf to list of default openssl config files,
+ search for default ones only if -config is not given.
+ * Use POSIX compliant arguments to tail in mkisofs completion.
+ * Protect various completions from unusual user input by not embedding the
+ input in external command arguments.
+ * Add _split_longopt() helper for improved handling of long options that
+ take arguments in both "--foo bar" and "--foo=bar" formats.
+ * Use _split_longopt to improve and clean up aspell, bluez-utils, chgrp,
+ chown, chkconfig, cpio, dpkg, heimdal, iptables, mailman, make, mc,
+ mii-diag, mii-tool, mkinitrd, pkg-config, postgresql, quota, reportbug,
+ samba, smartctl, yum, and generic long option completion (Alioth: #311398).
+ * Add chown --from and --reference value completions.
+ * Add chgrp --reference value completion.
+ * Do not assume all --foo= options take filenames in generic long option
+ completion, assume only that --*file*= does, and that --*dir*= takes dirs.
+ * Add make --old/new-file, --assume-old/new, --what-if value completions.
+ * Add smartctl -n/--nocheck completion, add more other value completions.
+ * Fix leaking $prev from cpio, dsniff, freeciv, gkrellm, mkinitrd, service,
+ and tcpdump completions.
+ * Split ant completion to contrib/ant, improve the built in one.
+ * Improve postfix completion.
+ * Improve samba completion.
+ * Split lilo completion to contrib/lilo.
+ * Split reportbug and querybts completions to contrib/reportbug.
+ * Remove debug output noise from quotaon completion.
+ * Split Linux wireless tools completion to contrib/wireless-tools.
+ * Add mock completion.
+ * Split FreeBSD kld(un)load completion to contrib/kldload.
+ * Split FreeBSD pkg_* completion to contrib/pkg_install.
+ * Split FreeBSD portupgrade and friends completion to contrib/portupgrade.
+ * Split Slackware pkgtools completion to contrib/pkgtools.
+ * Improve rpm group completion (displayed completions are still wrong).
+ * Change many completions to load in memory only if the completed commands
+ are available.
+ * Invoke the actual mplayer/mencoder command being completed (with full path)
+ to get various completions instead of simply "mplayer" or "mencoder".
+ * Associate OOXML/MS Office 2007 extensions with OpenOffice applications.
+ * Associate .tsv with oocalc.
+ * Add xmlwf completion.
+ * Associate *.po with poedit, gtranslator, kbabel, and lokalize.
+ * Add xz, xzcat, xzdec, and unxz completion.
+ * Add lzcat, lz*grep, lzless, lzmore, and unlzma completion.
+ * Load "modules" completion if /etc/profile.d/modules.sh exists even if
+ the "module" alias has not been defined (yet).
+ * Add *.ogv to xine-based players (Debian: #540033).
+ * Add $compopt (":" i.e. no-op with bash < 4, "compopt" with >= 4).
+ * Complete bzcat and zcat only on compressed files.
+ * Do not require a dot in bzcmp, bzdiff, bz*grep, zcmp, zdiff, z*grep, zless,
+ and zmore filename completions.
+ * Add xz and compress support and more tarball filename extensions to
+ rpmbuild -t*/--tarbuild completion.
+ * Don't hardcode path to lsmod.
+ * Fix sbcl file/dirname completion (Debian: #545743).
+ * Add /sbin to $PATH when invoking lspci and lsusb.
+ * Support .xz suffix in info page completions.
+ * Prevent rpm --define/-D completions from falling through.
+ * Add more common options to rpm option completions.
+
+ [ Todd Zullinger ]
+ * Make yum complete on filenames after install, deplist, update and upgrade
+ when the following argument contains a slash.
+
+ [ Mike Kelly ]
+ * Fix _filedir on bash 4.
+ * Add support for xz to tar completion.
+ * Fix _quote_readline on bash 4 (Debian: #544024).
+
+ [ Guillaume Rousse ]
+ * Split mkinitrd completion to contrib/mkinitrd, improve it.
+ * Split smartctl completion to contrib/smartctl.
+ * Better ssh and sftp completion
+ * Better xhost completion
+ * Split _known_hosts completion in two parts, to avoid parsing command line
+ twice
+ * Added strace completion
+ * Added xm completion
+ * Added rpcdebug completion
+ * Added msynctool completion
+ * Added openldap completion
+ * Added ldapvi completion
+ * Added heimdal completion
+ * Added vpnc completion
+ * Added rpmcheck completion
+ * Added munin-node completion
+ * Added bluez-utils completion
+ * Added samba completion
+ * Added cfengine completion
+ * Added xmllint completion, contributed by Ville
+ * Added shadow completion, contributed by Ville
+ * Added repomanage completion, contributed by Ville
+ * Splitted and enhanced openssl completion
+ * Added rfkill, mdadm and resolvconf completions
+
+ [ Raphaël Droz ]
+ * Add mount -L and -U completion.
+
+ [ Philipp Weis ]
+ * Add .dvi.{gz,bz2} completion for evince/okular (Debian: #522656)
+
+ [ Freddy Vulto ]
+ * Patched _known_hosts() to support multiple {Global,User}KnownHosts in SSH
+ config files, thanks to Thomas Nilsson (Alioth: #311595) (Debian: #524190)
+ * Fix leaking $i from info, man and python completions.
+ * Added setting COMP_KNOWN_HOSTS_WITH_HOSTFILE. _known_hosts_real() will add
+ hosts from HOSTFILE, unless COMP_KNOWN_HOSTS_WITH_HOSTFILE is set to an
+ empty value (Alioth: #311821)
+ * Quoted $cur to prevent globbing - thanks to Eric Blake (Alioth #311614)
+ * Fix leaking $muttcmd from mutt completion
+ * Fix completing multiple hosts (Debian: #535585)
+
- -- David Paleino <d.paleino at gmail.com> Thu, 18 Jun 2009 13:12:36 +0200
++ -- David Paleino <d.paleino at gmail.com> Sat, 03 Oct 2009 15:41:49 +0200
+
bash-completion (1.0)
[ Guillaume Rousse ]
@@@ -205,7 -391,7 +391,7 @@@ bash-completion (20080617.4) experiment
- _known_hosts(): use files from UserKnownHostsFile options in
addition to standard ones.
- fixed _command() to correctly prune the command line
- - disabled completion of PostgreSQL users and databases
+ - disabled completion of PostgreSQL users and databases (Ubuntu: #164772)
- fixed _java_packages()
- fixed _muttquery()
- added flv/FLV completion to mplayer
diff --combined bash_completion
index 552f808,eb6d15e..8ebe534
--- a/bash_completion
+++ b/bash_completion
@@@ -1,6 -1,4 +1,4 @@@
#
- # -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*-
- # ex: ts=8 sw=8 noet filetype=sh
# bash_completion - programmable completion functions for bash 3.x
# (backwards compatible with bash 2.05b)
#
@@@ -26,7 -24,7 +24,7 @@@
#
# http://bash-completion.alioth.debian.org/
#
- # RELEASE: 1.0
-# RELEASE: 1.x
++# RELEASE: 1.1
if [[ $- == *v* ]]; then
BASH_COMPLETION_ORIGINAL_V_VALUE="-v"
@@@ -44,14 -42,19 +42,18 @@@ f
#
[ -n "$BASH_COMPLETION" ] || BASH_COMPLETION=/etc/bash_completion
[ -n "$BASH_COMPLETION_DIR" ] || BASH_COMPLETION_DIR=/etc/bash_completion.d
-[ -n "$BASH_COMPLETION_COMPAT_DIR" ] || BASH_COMPLETION_COMPAT_DIR=/etc/bash_completion.d
-readonly BASH_COMPLETION BASH_COMPLETION_DIR BASH_COMPLETION_COMPAT_DIR
+readonly BASH_COMPLETION BASH_COMPLETION_DIR
# Set a couple of useful vars
#
UNAME=$( uname -s )
# strip OS type and version under Cygwin (e.g. CYGWIN_NT-5.1 => Cygwin)
UNAME=${UNAME/CYGWIN_*/Cygwin}
- RELEASE=$( uname -r )
+
+ case ${UNAME} in
+ Linux|GNU|GNU/*) USERLAND=GNU ;;
+ *) USERLAND=${UNAME} ;;
+ esac
# features supported by bash 2.05 and higher
if [ ${BASH_VERSINFO[0]} -eq 2 ] && [[ ${BASH_VERSINFO[1]} > 04 ]] ||
@@@ -60,6 -63,7 +62,7 @@@
default="-o default"
dirnames="-o dirnames"
filenames="-o filenames"
+ compopt=:
fi
# features supported by bash 2.05b and higher
if [ ${BASH_VERSINFO[0]} -eq 2 ] && [[ ${BASH_VERSINFO[1]} = "05b" ]] ||
@@@ -73,6 -77,11 +76,11 @@@ if [ ${BASH_VERSINFO[0]} -gt 2 ]; the
bashdefault="-o bashdefault"
plusdirs="-o plusdirs"
fi
+ # features supported by bash 4.0 and higher
+ if [ ${BASH_VERSINFO[0]} -gt 3 ]; then
+ declare -r bash4=$BASH_VERSION 2>/dev/null || :
+ compopt=compopt
+ fi
# Turn on extended globbing and programmable completion
shopt -s extglob progcomp
@@@ -87,17 -96,16 +95,16 @@@ complete -d push
# Do NOT break these over multiple lines.
#
# START exclude -- do NOT remove this line
- complete -f -X '!*.?(t)bz?(2)' bunzip2
- # TODO: see #455510
- #complete -f -X '!*.?(t)bz?(2)' bzcat bzcmp bzdiff bzegrep bzfgrep bzgrep
- complete -f -X '!*.*' bzcat bzcmp bzdiff bzegrep bzfgrep bzgrep
+ # bzcmp, bzdiff, bz*grep, bzless, bzmore intentionally not here, see Debian: #455510
+ complete -f -X '!*.?(t)bz?(2)' bunzip2 bzcat
complete -f -X '!*.@(zip|ZIP|jar|JAR|exe|EXE|pk3|war|wsz|ear|zargo|xpi|sxw|ott|od[fgpst]|epub)' unzip zipinfo
complete -f -X '*.Z' compress znew
- complete -f -X '!*.@(Z|gz|tgz|Gz|dz)' gunzip
- # TODO: see #455510
- #complete -f -X '!*.@(Z|gz|tgz|Gz|dz)' zcmp zdiff zcat zegrep zfgrep zgrep zless zmore
- complete -f -X '!*.*' zcmp zdiff zcat zegrep zfgrep zgrep zless zmore
+ # zcmp, zdiff, z*grep, zless, zmore intentionally not here, see Debian: #455510
+ complete -f -X '!*.@(Z|gz|tgz|Gz|dz)' gunzip zcat
complete -f -X '!*.Z' uncompress
+ # lzcmp, lzdiff intentionally not here, see Debian: #455510
+ complete -f -X '!*.lzma' lzcat lzegrep lzfgrep lzgrep lzless lzmore unlzma
+ complete -f -X '!*.@(xz|lzma)' unxz xzcat
complete -f -X '!*.@(gif|jp?(e)g|miff|tif?(f)|pn[gm]|p[bgp]m|bmp|xpm|ico|xwd|tga|pcx|GIF|JP?(E)G|MIFF|TIF?(F)|PN[GM]|P[BGP]M|BMP|XPM|ICO|XWD|TGA|PCX)' ee
complete -f -X '!*.@(gif|jp?(e)g|tif?(f)|png|p[bgp]m|bmp|x[bp]m|rle|rgb|pcx|fits|pm|GIF|JPG|JP?(E)G|TIF?(F)|PNG|P[BGP]M|BMP|X[BP]M|RLE|RGB|PCX|FITS|PM)' xv qiv
complete -f -X '!*.@(@(?(e)ps|?(E)PS|pdf|PDF)?(.gz|.GZ|.bz2|.BZ2|.Z))' gv ggv kghostview
@@@ -106,12 -114,13 +113,13 @@@ complete -f -X '!*.@(dvi|DVI)?(.@(gz|Z|
complete -f -X '!*.@(dvi|DVI)' dvips dviselect dvitype dvipdf advi dvipdfm dvipdfmx
complete -f -X '!*.@(pdf|PDF)' acroread gpdf xpdf
complete -f -X '!*.@(?(e)ps|?(E)PS|pdf|PDF)' kpdf
- complete -f -X '!*.@(@(?(e)ps|?(E)PS|pdf|PDF)?(.gz|.GZ|.bz2|.BZ2)|cb[rz]|CB[RZ]|djv?(u)|DJV?(U)|dvi|DVI|gif|jp?(e)g|miff|tif?(f)|pn[gm]|p[bgp]m|bmp|xpm|ico|xwd|tga|pcx|GIF|JP?(E)G|MIFF|TIF?(F)|PN[GM]|P[BGP]M|BMP|XPM|ICO|XWD|TGA|PCX)' evince okular
+ complete -f -X '!*.@(@(?(e)ps|?(E)PS|pdf|PDF|dvi|DVI)?(.gz|.GZ|.bz2|.BZ2)|cb[rz]|CB[RZ]|djv?(u)|DJV?(U)|dvi|DVI|gif|jp?(e)g|miff|tif?(f)|pn[gm]|p[bgp]m|bmp|xpm|ico|xwd|tga|pcx|GIF|JP?(E)G|MIFF|TIF?(F)|PN[GM]|P[BGP]M|BMP|XPM|ICO|XWD|TGA|PCX)' evince
+ complete -f -X '!*.@(?(e|x)ps|?(E|X)PS|pdf|PDF|dvi|DVI|cb[rz]|CB[RZ]|djv?(u)|DJV?(U)|dvi|DVI|gif|jp?(e)g|miff|tif?(f)|pn[gm]|p[bgp]m|bmp|xpm|ico|xwd|tga|pcx|GIF|JP?(E)G|MIFF|TIF?(F)|PN[GM]|P[BGP]M|BMP|XPM|ICO|XWD|TGA|PCX|epub|EPUB|odt|ODT|fb|FB|mobi|MOBI|g3|G3|chm|CHM)?(.?(gz|GZ|bz2|BZ2))' okular
complete -f -X '!*.@(?(e)ps|?(E)PS|pdf|PDF)' ps2pdf ps2pdf12 ps2pdf13 ps2pdf14 ps2pdfwr
complete -f -X '!*.texi*' makeinfo texi2html
complete -f -X '!*.@(?(la)tex|?(LA)TEX|texi|TEXI|dtx|DTX|ins|INS)' tex latex slitex jadetex pdfjadetex pdftex pdflatex texi2dvi
complete -f -X '!*.@(mp3|MP3)' mpg123 mpg321 madplay
- complete -f -X '!*@(.@(mp?(e)g|MP?(E)G|wma|avi|AVI|asf|vob|VOB|bin|dat|divx|DIVX|vcd|ps|pes|fli|flv|FLV|viv|rm|ram|yuv|mov|MOV|qt|QT|wmv|mp[234]|MP[234]|m4[pv]|M4[PV]|mkv|MKV|ogg|OGG|ogm|OGM|wav|WAV|asx|ASX|mng|MNG|srt)|+([0-9]).@(vdr|VDR))' xine aaxine fbxine kaffeine
+ complete -f -X '!*@(.@(mp?(e)g|MP?(E)G|wma|avi|AVI|asf|vob|VOB|bin|dat|divx|DIVX|vcd|ps|pes|fli|flv|FLV|viv|rm|ram|yuv|mov|MOV|qt|QT|wmv|mp[234]|MP[234]|m4[pv]|M4[PV]|mkv|MKV|og[gmv]|OG[GMV]|wav|WAV|asx|ASX|mng|MNG|srt|m[eo]d|M[EO]D|s[3t]m|S[3T]M|it|IT|xm|XM)|+([0-9]).@(vdr|VDR))' xine aaxine fbxine kaffeine
complete -f -X '!*.@(avi|asf|wmv)' aviplay
complete -f -X '!*.@(rm?(j)|ra?(m)|smi?(l))' realplay
complete -f -X '!*.@(mpg|mpeg|avi|mov|qt)' xanim
@@@ -119,30 -128,29 +127,29 @@@ complete -f -X '!*.@(ogg|OGG|m3u|flac|s
complete -f -X '!*.@(mp3|MP3|ogg|OGG|pls|m3u)' gqmpeg freeamp
complete -f -X '!*.fig' xfig
complete -f -X '!*.@(mid?(i)|MID?(I)|cmf|CMF)' playmidi
- complete -f -X '!*.@(mid?(i)|MID?(I)|rmi|RMI|rcp|RCP|[gr]36|[GR]36|g18|G18|mod|MOD|xm|XM|it|IT|x3m|X3M|kar|KAR)' timidity
+ complete -f -X '!*.@(mid?(i)|MID?(I)|rmi|RMI|rcp|RCP|[gr]36|[GR]36|g18|G18|mod|MOD|xm|XM|it|IT|x3m|X3M|s[3t]m|S[3T]M|kar|KAR)' timidity
+ complete -f -X '!*.@(m[eo]d|M[EO]D|s[3t]m|S[3T]M|xm|XM|it|IT)' modplugplay
complete -f -X '*.@(o|so|so.!(conf)|a|rpm|gif|GIF|jp?(e)g|JP?(E)G|mp3|MP3|mp?(e)g|MPG|avi|AVI|asf|ASF|ogg|OGG|class|CLASS)' vi vim gvim rvim view rview rgvim rgview gview
complete -f -X '*.@(o|so|so.!(conf)|a|rpm|gif|GIF|jp?(e)g|JP?(E)G|mp3|MP3|mp?(e)g|MPG|avi|AVI|asf|ASF|ogg|OGG|class|CLASS)' emacs
complete -f -X '!*.@(exe|EXE|com|COM|scr|SCR|exe.so)' wine
complete -f -X '!*.@(zip|ZIP|z|Z|gz|GZ|tgz|TGZ)' bzme
complete -f -X '!*.@(?([xX]|[sS])[hH][tT][mM]?([lL]))' netscape mozilla lynx opera galeon curl dillo elinks amaya
- complete -f -X '!*.@(sxw|stw|sxg|sgl|doc|dot|rtf|txt|htm|html|odt|ott|odm)' oowriter
- complete -f -X '!*.@(sxi|sti|pps|ppt|pot|odp|otp)' ooimpress
- complete -f -X '!*.@(sxc|stc|xls|xlw|xlt|csv|ods|ots)' oocalc
+ complete -f -X '!*.@(sxw|stw|sxg|sgl|doc?([mx])|dot?([mx])|rtf|txt|htm|html|odt|ott|odm)' oowriter
+ complete -f -X '!*.@(sxi|sti|pps?(x)|ppt?([mx])|pot?([mx])|odp|otp)' ooimpress
+ complete -f -X '!*.@(sxc|stc|xls?([bmx])|xlw|xlt?([mx])|[ct]sv|ods|ots)' oocalc
complete -f -X '!*.@(sxd|std|sda|sdd|odg|otg)' oodraw
complete -f -X '!*.@(sxm|smf|mml|odf)' oomath
complete -f -X '!*.odb' oobase
complete -f -X '!*.rpm' rpm2cpio
complete -f -X '!*.sqlite' sqlite3
complete -f -X '!*.aux' bibtex
+ complete -f -X '!*.po' poedit gtranslator kbabel lokalize
# FINISH exclude -- do not remove this line
# start of section containing compspecs that can be handled within bash
# user commands see only users
- complete -u su usermod userdel passwd chage write chfn groups slay w sux
-
- # group commands see only groups
- [ -n "$bash205" ] && complete -g groupmod groupdel newgrp 2>/dev/null
+ complete -u su passwd write chfn groups slay w sux
# bg completes with stopped jobs
complete -A stopped -P '"%' -S '"' bg
@@@ -188,7 -196,7 +195,7 @@@ have(
# use GNU sed if we have it, since its extensions are still used in our code
#
- [ $UNAME != Linux ] && have gsed && alias sed=gsed
+ [ $USERLAND != GNU ] && have gsed && alias sed=gsed
# This function checks whether a given readline variable
# is `on'.
@@@ -204,10 -212,16 +211,16 @@@ quote(
echo \'${1//\'/\'\\\'\'}\' #'# Help vim syntax highlighting
}
- # This function quotes the argument in a way so that readline dequoting
+ # This function quotes the argument in a way so that readline dequoting
# results in the original argument
quote_readline()
{
+ if [ -n "$bash4" ] ; then
+ # This function isn't really necessary on bash 4
+ # See: http://lists.gnu.org/archive/html/bug-bash/2009-03/msg00155.html
+ echo "${1}"
+ return
+ fi
local t="${1//\\/\\\\}"
echo \'${t//\'/\'\\\'\'}\' #'# Help vim syntax highlighting
}
@@@ -218,18 -232,42 +231,42 @@@ dequote(
eval echo "$1"
}
- # Get the word to complete
+ # Get the word to complete.
# This is nicer than ${COMP_WORDS[$COMP_CWORD]}, since it handles cases
# where the user is completing in the middle of a word.
# (For example, if the line is "ls foobar",
# and the cursor is here --------> ^
# it will complete just "foo", not "foobar", which is what the user wants.)
+ # @param $1 string (optional) Characters out of $COMP_WORDBREAKS which should
+ # NOT be considered word breaks. This is useful for things like scp where
+ # we want to return host:path and not only path.
+ # NOTE: This parameter only applies to bash-4.
+
+ _get_cword()
+ {
+ if [ -n "$bash4" ] ; then
+ __get_cword4 "$@"
+ else
+ __get_cword3
+ fi
+ } # _get_cword()
+
+
+ # Get the word to complete on bash-3, where words are not broken by
+ # COMP_WORDBREAKS characters and the COMP_CWORD variables look like this, for
+ # example:
#
+ # $ a b:c<TAB>
+ # COMP_CWORD: 1
+ # COMP_CWORDS:
+ # 0: a
+ # 1: b:c
#
- # Accepts an optional parameter indicating which characters out of
- # $COMP_WORDBREAKS should NOT be considered word breaks. This is useful
- # for things like scp where we want to return host:path and not only path.
- _get_cword()
+ # See also:
+ # _get_cword, main routine
+ # __get_cword4, bash-4 variant
+ #
+ __get_cword3()
{
if [[ "${#COMP_WORDS[COMP_CWORD]}" -eq 0 ]] || [[ "$COMP_POINT" == "${#COMP_LINE}" ]]; then
printf "%s" "${COMP_WORDS[COMP_CWORD]}"
@@@ -238,27 -276,99 +275,99 @@@
local cur="$COMP_LINE"
local index="$COMP_POINT"
for (( i = 0; i <= COMP_CWORD; ++i )); do
- while [[ "${#cur}" -ge ${#COMP_WORDS[i]} ]] && [[ "${cur:0:${#COMP_WORDS[i]}}" != "${COMP_WORDS[i]}" ]]; do
+ while [[
+ # Current COMP_WORD fits in $cur?
+ "${#cur}" -ge ${#COMP_WORDS[i]} &&
+ # $cur doesn't match COMP_WORD?
+ "${cur:0:${#COMP_WORDS[i]}}" != "${COMP_WORDS[i]}"
+ ]]; do
+ # Strip first character
cur="${cur:1}"
+ # Decrease cursor position
index="$(( index - 1 ))"
done
+
+ # Does found COMP_WORD matches COMP_CWORD?
if [[ "$i" -lt "$COMP_CWORD" ]]; then
+ # No, COMP_CWORD lies further;
local old_size="${#cur}"
cur="${cur#${COMP_WORDS[i]}}"
local new_size="${#cur}"
index="$(( index - old_size + new_size ))"
fi
done
-
+
if [[ "${COMP_WORDS[COMP_CWORD]:0:${#cur}}" != "$cur" ]]; then
- # We messed up! At least return the whole word so things
+ # We messed up! At least return the whole word so things
# keep working
printf "%s" "${COMP_WORDS[COMP_CWORD]}"
else
printf "%s" "${cur:0:$index}"
fi
fi
- }
+ } # __get_cword3()
+
+
+ # Get the word to complete on bash-4, where words are splitted by
+ # COMP_WORDBREAKS characters (default is " \t\n\"'><=;|&(:") and the COMP_CWORD
+ # variables look like this, for example:
+ #
+ # $ a b:c<TAB>
+ # COMP_CWORD: 3
+ # COMP_CWORDS:
+ # 0: a
+ # 1: b
+ # 2: :
+ # 3: c
+ #
+ # @oaram $1 string
+ # $1 string (optional) Characters out of $COMP_WORDBREAKS which should
+ # NOT be considered word breaks. This is useful for things like scp where
+ # we want to return host:path and not only path.
+ # See also:
+ # _get_cword, main routine
+ # __get_cword3, bash-3 variant
+ #
+ __get_cword4()
+ {
+ local i
+ local LC_CTYPE=C
+ local WORDBREAKS=$COMP_WORDBREAKS
+ # Strip single quote (') and double quote (") from WORDBREAKS to
+ # workaround a bug in bash-4.0, where quoted words are split
+ # unintended, see:
+ # http://www.mail-archive.com/bug-bash@gnu.org/msg06095.html
+ # This fixes simple quoting (e.g. $ a "b<TAB> returns "b instead of b)
+ # but still fails quoted spaces (e.g. $ a "b c<TAB> returns c instead
+ # of "b c).
+ WORDBREAKS=${WORDBREAKS//\"/}
+ WORDBREAKS=${WORDBREAKS//\'/}
+ if [ -n "$1" ]; then
+ for (( i=0; i<${#1}; ++i )); do
+ local char=${1:$i:1}
+ WORDBREAKS=${WORDBREAKS//$char/}
+ done
+ fi
+ local cur=${COMP_LINE:0:$COMP_POINT}
+ local tmp=$cur
+ local word_start=`expr "$tmp" : '.*['"$WORDBREAKS"']'`
+ while [ "$word_start" -ge 2 ]; do
+ # Get character before $word_start
+ local char=${cur:$(( $word_start - 2 )):1}
+ # If the WORDBREAK character isn't escaped, exit loop
+ if [ "$char" != "\\" ]; then
+ break
+ fi
+ # The WORDBREAK character is escaped;
+ # Recalculate $word_start
+ tmp=${COMP_LINE:0:$(( $word_start - 2 ))}
+ word_start=`expr "$tmp" : '.*['"$WORDBREAKS"']'`
+ done
+
+ cur=${cur:$word_start}
+ printf "%s" "$cur"
+ } # _get_cword4()
+
# This function performs file and directory completion. It's better than
# simply using 'compgen -f', because it honours spaces in filenames.
@@@ -273,16 -383,16 +382,16 @@@ _filedir(
local -a toks
local tmp
-
+
# TODO: I've removed a "[ -n $tmp ] &&" before `echo $tmp',
# and everything works again. If this bug
# suddenly appears again (i.e. "cd /b<TAB>"
# becomes "cd /"), remember to check for
# other similar conditionals (here and
# _filedir_xspec()). --David
- # NOTE: The comment above has been moved outside of the subshell below,
+ # NOTE: The comment above has been moved outside of the subshell below,
# because quotes-in-comments-in-a-subshell cause errors on
- # bash-3.1. See also:
+ # bash-3.1. See also:
# http://www.mail-archive.com/bug-bash@gnu.org/msg01667.html
toks=( ${toks[@]-} $(
compgen -d -- "$(quote_readline "$cur")" | {
@@@ -291,7 -401,7 +400,7 @@@
done
}
))
-
+
if [[ "$1" != -d ]]; then
xspec=${1:+"!*.$1"}
toks=( ${toks[@]-} $(
@@@ -306,6 -416,23 +415,23 @@@
COMPREPLY=( "${COMPREPLY[@]}" "${toks[@]}" )
}
+ # This function splits $cur=--foo=bar into $prev=--foo, $cur=bar, making it
+ # easier to support both "--foo bar" and "--foo=bar" style completions.
+ # Returns 0 if current option was split, 1 otherwise.
+ #
+ _split_longopt()
+ {
+ if [[ "$cur" == --?*=* ]]; then
+ # Cut also backslash before '=' in case it ended up there
+ # for some reason.
+ prev="${cur%%?(\\)=*}"
+ cur="${cur#*=}"
+ return 0
+ fi
+
+ return 1
+ }
+
# This function tries to parse the output of $command --help
#
_parse_help() {
@@@ -346,17 -473,17 +472,17 @@@ _configured_interfaces(
# SuSE system
COMPREPLY=( $( command ls \
/etc/sysconfig/network/ifcfg-* | \
- sed -ne 's|.*ifcfg-\('$cur'.*\)|\1|p' ) )
+ sed -ne 's|.*ifcfg-\('"$cur"'.*\)|\1|p' ) )
elif [ -f /etc/pld-release ]; then
# PLD Linux
COMPREPLY=( $( command ls -B \
/etc/sysconfig/interfaces | \
- sed -ne 's|.*ifcfg-\('$cur'.*\)|\1|p' ) )
+ sed -ne 's|.*ifcfg-\('"$cur"'.*\)|\1|p' ) )
else
# Assume Red Hat
COMPREPLY=( $( command ls \
/etc/sysconfig/network-scripts/ifcfg-* | \
- sed -ne 's|.*ifcfg-\('$cur'.*\)|\1|p' ) )
+ sed -ne 's|.*ifcfg-\('"$cur"'.*\)|\1|p' ) )
fi
}
@@@ -364,7 -491,7 +490,7 @@@
#
_kernel_versions()
{
- COMPREPLY=( $( command ls /lib/modules | grep "^$cur" ) )
+ COMPREPLY=( $( compgen -W '$( command ls /lib/modules )' -- "$cur" ) )
}
# This function completes on all available network interfaces
@@@ -384,7 -511,7 +510,7 @@@ _available_interfaces(
fi
COMPREPLY=( $( eval $cmd 2>/dev/null | \
- sed -ne 's|^\('$cur'[^[:space:][:punct:]]\{1,\}\).*$|\1|p') )
+ sed -ne 's|^\('"$cur"'[^[:space:][:punct:]]\{1,\}\).*$|\1|p') )
}
# This function expands tildes in pathnames
@@@ -402,7 -529,7 +528,7 @@@ _expand(
eval cur=$cur
elif [[ "$cur" == \~* ]]; then
cur=${cur#\~}
- COMPREPLY=( $( compgen -P '~' -u $cur ) )
+ COMPREPLY=( $( compgen -P '~' -u "$cur" ) )
[ ${#COMPREPLY[@]} -eq 1 ] && eval COMPREPLY[0]=${COMPREPLY[0]}
return ${#COMPREPLY[@]}
fi
@@@ -413,11 -540,11 +539,11 @@@
[ $UNAME = SunOS -o $UNAME = AIX ] &&
_pids()
{
- COMPREPLY=( $( compgen -W '$( command ps -efo pid | sed 1d )' -- $cur ))
+ COMPREPLY=( $( compgen -W '$( command ps -efo pid | sed 1d )' -- "$cur" ))
} ||
_pids()
{
- COMPREPLY=( $( compgen -W '$( command ps axo pid | sed 1d )' -- $cur ) )
+ COMPREPLY=( $( compgen -W '$( command ps axo pid= )' -- "$cur" ) )
}
# This function completes on process group IDs.
@@@ -425,11 -552,11 +551,11 @@@
[ $UNAME = SunOS -o $UNAME = AIX ] &&
_pgids()
{
- COMPREPLY=( $( compgen -W '$( command ps -efo pgid | sed 1d )' -- $cur ))
+ COMPREPLY=( $( compgen -W '$( command ps -efo pgid | sed 1d )' -- "$cur" ))
} ||
_pgids()
{
- COMPREPLY=( $( compgen -W '$( command ps axo pgid | sed 1d )' -- $cur ))
+ COMPREPLY=( $( compgen -W '$( command ps axo pgid= )' -- "$cur" ))
}
# This function completes on process names.
@@@ -440,7 -567,7 +566,7 @@@ _pnames(
COMPREPLY=( $( compgen -W '$( command ps -efo comm | \
sed -e 1d -e "s:.*/::" -e "s/^-//" \
-e "s/^<defunct>$//")' \
- -- $cur ) )
+ -- "$cur" ) )
} ||
_pnames()
{
@@@ -452,11 -579,11 +578,11 @@@
# for now.
# Not using "ps axo comm" because under some Linux kernels, it
# truncates command names (see e.g. http://bugs.debian.org/497540#19)
- COMPREPLY=( $( compgen -W '$( command ps axo command | \
- sed -e "1d; s/ .*//; s:.*/::; s/:$//;" \
+ COMPREPLY=( $( compgen -W '$( command ps axo command= | \
+ sed -e "s/ .*//; s:.*/::; s/:$//;" \
-e "s/^[[(-]//; s/[])]$//" \
-e "s/^<defunct>$//")' \
- -- $cur ) )
+ -- "$cur" ) )
}
# This function completes on user IDs
@@@ -464,14 -591,12 +590,12 @@@
_uids()
{
if type getent &>/dev/null; then
- COMPREPLY=( $( getent passwd | \
- awk -F: '{if ($3 ~ /^'$cur'/) print $3}' ) )
+ COMPREPLY=( $( compgen -W '$( getent passwd | cut -d: -f3 )' -- "$cur" ) )
elif type perl &>/dev/null; then
- COMPREPLY=( $( compgen -W '$( perl -e '"'"'while (($uid) = (getpwent)[2]) { print $uid . "\n" }'"'"' )' -- $cur ) )
+ COMPREPLY=( $( compgen -W '$( perl -e '"'"'while (($uid) = (getpwent)[2]) { print $uid . "\n" }'"'"' )' -- "$cur" ) )
else
# make do with /etc/passwd
- COMPREPLY=( $( awk 'BEGIN {FS=":"} {if ($3 ~ /^'$cur'/) print $3}'\
- /etc/passwd ) )
+ COMPREPLY=( $( compgen -W '$( cut -d: -f3 /etc/passwd )' -- "$cur" ) )
fi
}
@@@ -481,12 -606,12 +605,12 @@@ _gids(
{
if type getent &>/dev/null; then
COMPREPLY=( $( getent group | \
- awk -F: '{if ($3 ~ /^'$cur'/) print $3}' ) )
+ awk -F: '{if ($3 ~ /^'"$cur"'/) print $3}' ) )
elif type perl &>/dev/null; then
- COMPREPLY=( $( compgen -W '$( perl -e '"'"'while (($gid) = (getgrent)[2]) { print $gid . "\n" }'"'"' )' -- $cur ) )
+ COMPREPLY=( $( compgen -W '$( perl -e '"'"'while (($gid) = (getgrent)[2]) { print $gid . "\n" }'"'"' )' -- "$cur" ) )
else
# make do with /etc/group
- COMPREPLY=( $( awk 'BEGIN {FS=":"} {if ($3 ~ /^'$cur'/) print $3}'\
+ COMPREPLY=( $( awk 'BEGIN {FS=":"} {if ($3 ~ /^'"$cur"'/) print $3}'\
/etc/group ) )
fi
}
@@@ -504,7 -629,7 +628,7 @@@ _services(
COMPREPLY=( "${COMPREPLY[@]}" $( builtin echo $famdir/!(*.rpm@(orig|new|save)|*~)) )
fi
- COMPREPLY=( $( compgen -W '${COMPREPLY[@]#@($sysvdir|$famdir)/}' -- $cur ) )
+ COMPREPLY=( $( compgen -W '${COMPREPLY[@]#@($sysvdir|$famdir)/}' -- "$cur" ) )
}
# This function completes on modules
@@@ -514,14 -639,14 +638,14 @@@ _modules(
local modpath
modpath=/lib/modules/$1
COMPREPLY=( $( command ls -R $modpath | \
- sed -ne 's/^\('$cur'.*\)\.k\?o\(\|.gz\)$/\1/p') )
+ sed -ne 's/^\('"$cur"'.*\)\.k\?o\(\|.gz\)$/\1/p') )
}
# This function completes on installed modules
#
_installed_modules()
{
- COMPREPLY=( $( compgen -W "$( /sbin/lsmod | \
+ COMPREPLY=( $( compgen -W "$( PATH="$PATH:/sbin" lsmod | \
awk '{if (NR != 1) print $1}' )" -- $1 ) )
}
@@@ -537,10 -662,17 +661,17 @@@ _usergroup(
elif [[ $cur = *:* ]] && [ -n "$bash205" ]; then
COMPREPLY=( $( compgen -g -- ${cur##*[.:]} ) )
else
- COMPREPLY=( $( compgen -S : -u -- $cur ) )
+ COMPREPLY=( $( compgen -S : -u -- "$cur" ) )
fi
}
+ # This function completes on valid shells
+ #
+ _shells()
+ {
+ COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W '$( grep "^[[:space:]]*/" \
+ /etc/shells 2>/dev/null )' -- "$cur" ) )
+ }
# Get real command.
# - arg: $1 Command
@@@ -572,150 -704,21 +703,21 @@@ _count_args(
done
}
- # This function complete on PCI IDs
+ # This function completes on PCI IDs
#
_pci_ids()
{
- COMPREPLY=( ${COMPREPLY[@]:-} \
- $( compgen -W "$( lspci -n | awk '{print $3}')" -- $cur ) )
+ COMPREPLY=( ${COMPREPLY[@]:-} $( compgen -W \
+ "$( PATH="$PATH:/sbin" lspci -n | awk '{print $3}')" -- "$cur" ) )
}
- # This function complete on USB IDs
+ # This function completes on USB IDs
#
_usb_ids()
{
- COMPREPLY=( ${COMPREPLY[@]:-} \
- $( compgen -W "$( lsusb | awk '{print $6}')" -- $cur ) )
- }
-
- # start of section containing completion functions for bash built-ins
-
- # bash alias completion
- #
- _alias()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- case "$COMP_LINE" in
- *[^=])
- COMPREPLY=( $( compgen -A alias -- $cur ) )
- ;;
- *=)
- COMPREPLY=( "$( alias ${cur%=} 2>/dev/null | \
- sed -e 's|^alias '$cur'\(.*\)$|\1|' )" )
- ;;
- esac
- }
- complete -F _alias $nospace alias
-
- # bash export completion
- #
- _export()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- case "$COMP_LINE" in
- *=\$*)
- COMPREPLY=( $( compgen -v -P '$' -- ${cur#*=\$} ) )
- ;;
- *[^=])
- COMPREPLY=( $( compgen -v -S '=' -- $cur ) )
- ;;
- *=)
- COMPREPLY=( "$( eval echo -n \"$`echo ${cur%=}`\" |
- ( echo -n \'
- sed -e 's/'\''/'\''\\\'\'''\''/g'
- echo -n \' ) )" )
- ;;
- esac
- }
- complete -F _export $default $nospace export
-
- # bash shell function completion
- #
- _function()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- if [[ $1 == @(declare|typeset) ]]; then
- if [ "$prev" = -f ]; then
- COMPREPLY=( $( compgen -A function -- $cur ) )
- elif [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-a -f -F -i -r -x -p' -- \
- $cur ) )
- fi
- elif [ $COMP_CWORD -eq 1 ]; then
- COMPREPLY=( $( compgen -A function -- $cur ) )
- else
- COMPREPLY=( "() $( type -- ${COMP_WORDS[1]} | sed -e 1,2d )" )
- fi
+ COMPREPLY=( ${COMPREPLY[@]:-} $( compgen -W \
+ "$( PATH="$PATH:/sbin" lsusb | awk '{print $6}' )" -- "$cur" ) )
}
- complete -F _function function declare typeset
-
- # bash complete completion
- #
- _complete()
- {
- local cur prev options
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case $prev in
- -o)
- options="default dirnames filenames"
- [ -n "$bash205b" ] && options="$options nospace"
- [ -n "$bash3" ] && options="$options bashdefault plusdirs"
- COMPREPLY=( $( compgen -W "$options" -- $cur ) )
- return 0
- ;;
-
- -A)
- COMPREPLY=( $( compgen -W 'alias arrayvar binding \
- builtin command directory disabled enabled \
- export file function group helptopic hostname \
- job keyword running service setopt shopt \
- signal stopped user variable' -- $cur ) )
- return 0
- ;;
-
- -C)
- COMPREPLY=( $( compgen -A command -- $cur ) )
- return 0
- ;;
- -F)
- COMPREPLY=( $( compgen -A function -- $cur ) )
- return 0
- ;;
- -@(p|r))
- COMPREPLY=( $( complete -p | sed -e 's|.* ||' | \
- grep "^$cur" ) )
- return 0
- ;;
-
- esac
-
- if [[ "$cur" == -* ]]; then
- # relevant options completion
- options="-a -b -c -d -e -f -g -j -k -s -v -u -A -G -W -P -S -X -F -C"
- [ -n "$bash205" ] && options="$options -o"
- COMPREPLY=( $( compgen -W "$options" -- $cur ) )
- else
- COMPREPLY=( $( compgen -A command -- $cur ) )
- fi
- }
- complete -F _complete complete
# start of section containing completion functions for external programs
@@@ -731,7 -734,7 +733,7 @@@
{ have service || [ -d /etc/init.d/ ]; } &&
_service()
{
- local cur sysvdir
+ local cur prev sysvdir
COMPREPLY=()
prev=${COMP_WORDS[COMP_CWORD-1]}
@@@ -751,8 -754,8 +753,8 @@@
_services
else
COMPREPLY=( $( compgen -W '`sed -ne "y/|/ /; \
- s/^.*Usage.*{\(.*\)}.*$/\1/p" \
- $sysvdir/${prev##*/} 2>/dev/null`' -- $cur ) )
+ s/^.*\(U\|msg_u\)sage.*{\(.*\)}.*$/\1/p" \
+ $sysvdir/${prev##*/} 2>/dev/null`' -- "$cur" ) )
fi
return 0
@@@ -765,14 -768,30 +767,30 @@@ complete -F _service servic
#
_chown()
{
- local cur
+ local cur prev split=false
cur=`_get_cword`
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ _split_longopt && split=true
+
+ case "$prev" in
+ --from)
+ _usergroup
+ return 0
+ ;;
+ --reference)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ $split && return 0
# options completion
if [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W '-c -h -f -R -v --changes \
- --dereference --no-dereference --from= --silent --quiet \
- --reference= --recursive --verbose --help --version' -- $cur ) )
+ --dereference --no-dereference --from --silent --quiet \
+ --reference --recursive --verbose --help --version' -- "$cur" ) )
else
_count_args
@@@ -792,18 -811,27 +810,27 @@@ complete -F _chown $filenames chow
#
_chgrp()
{
- local cur prev
+ local cur prev split=false
COMPREPLY=()
cur=`_get_cword`
cur=${cur//\\\\/}
prev=${COMP_WORDS[COMP_CWORD-1]}
+ _split_longopt && split=true
+
+ if [[ "$prev" == --reference ]]; then
+ _filedir
+ return 0
+ fi
+
+ $split && return 0
+
# options completion
if [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W '-c -h -f -R -v --changes \
--dereference --no-dereference --silent --quiet \
- --reference= --recursive --verbose --help --version' -- $cur ) )
+ --reference --recursive --verbose --help --version' -- "$cur" ) )
return 0
fi
@@@ -811,7 -839,7 +838,7 @@@
if [ $COMP_CWORD -eq 1 ] && [[ "$cur" != -* ]] || \
[[ "$prev" == -* ]] && [ -n "$bash205" ]; then
local IFS=$'\n'
- COMPREPLY=( $( compgen -g $cur 2>/dev/null ) )
+ COMPREPLY=( $( compgen -g "$cur" 2>/dev/null ) )
else
_filedir || return 0
fi
@@@ -830,7 -858,7 +857,7 @@@ _umount(
COMPREPLY=()
cur=`_get_cword`
- COMPREPLY=( $( compgen -W '$( mount | cut -d" " -f 3 )' -- $cur ) )
+ COMPREPLY=( $( compgen -W '$( mount | cut -d" " -f 3 )' -- "$cur" ) )
return 0
}
@@@ -844,11 -872,12 +871,12 @@@ complete -F _umount $dirnames umoun
#
_mount()
{
- local cur i sm host
+ local cur i sm host prev
COMPREPLY=()
cur=`_get_cword`
[[ "$cur" == \\ ]] && cur="/"
+ prev=${COMP_WORDS[COMP_CWORD-1]}
for i in {,/usr}/{,s}bin/showmount; do [ -x $i ] && sm=$i && break; done
@@@ -865,16 -894,19 +893,19 @@@
fi
elif [ -r /etc/vfstab ]; then
# Solaris
- COMPREPLY=( $( awk '! /^[ \t]*#/ {if ($3 ~ /\//) print $3}' \
- /etc/vfstab | grep "^$cur" ) )
+ COMPREPLY=( $( compgen -W "$( awk '! /^[ \t]*#/ {if ($3 ~ /\//) print $3}' /etc/vfstab )" -- "$cur" ) )
elif [ ! -e /etc/fstab ]; then
# probably Cygwin
- COMPREPLY=( $( mount | awk '! /^[ \t]*#/ {if ($3 ~ /\//) print $3}' \
- | grep "^$cur" ) )
+ COMPREPLY=( $( compgen -W "$( mount | awk '! /^[ \t]*#/ {if ($3 ~ /\//) print $3}' )" -- "$cur" ) )
else
# probably Linux
- COMPREPLY=( $( awk '! /^[ \t]*#/ {if ($2 ~ /\//) print $2}' \
- /etc/fstab | grep "^$cur" ) )
+ if [ $prev = -L ]; then
+ COMPREPLY=( $( compgen -W '$(sed -ne "s/^[[:space:]]*LABEL=\([^[:space:]]*\).*/\1/p" /etc/fstab )' -- "$cur" ) )
+ elif [ $prev = -U ]; then
+ COMPREPLY=( $( compgen -W '$(sed -ne "s/^[[:space:]]*UUID=\([^[:space:]]*\).*/\1/p" /etc/fstab )' -- "$cur" ) )
+ else
+ COMPREPLY=( $( compgen -W "$( awk '! /^[ \t]*#/ {if ($2 ~ /\//) print $2}' /etc/fstab )" -- "$cur" ) )
+ fi
fi
return 0
@@@ -926,8 -958,8 +957,8 @@@ _insmod(
[[ "${COMP_WORDS[COMP_CWORD-1]}" != -* ]]; then
# do module parameter completion
COMPREPLY=( $( /sbin/modinfo -p ${COMP_WORDS[1]} 2>/dev/null | \
- awk '{if ($1 ~ /^parm:/ && $2 ~ /^'$cur'/) { print $2 } \
- else if ($1 !~ /:/ && $1 ~ /^'$cur'/) { print $1 }}' ) )
+ awk '{if ($1 ~ /^parm:/ && $2 ~ /^'"$cur"'/) { print $2 } \
+ else if ($1 !~ /:/ && $1 ~ /^'"$cur"'/) { print $1 }}' ) )
else
_modules $(uname -r)
fi
@@@ -937,85 -969,6 +968,6 @@@
complete -F _insmod $filenames insmod modprobe modinfo
}
- # man(1) completion
- #
- [ $UNAME = GNU -o $UNAME = Linux -o $UNAME = Darwin \
- -o $UNAME = FreeBSD -o $UNAME = SunOS -o $UNAME = Cygwin \
- -o $UNAME = OpenBSD ] &&
- _man()
- {
- local cur prev sect manpath manext mansect UNAME
-
- manext="@([0-9lnp]|[0-9][px]|man)?(.@(gz|bz2|lzma))"
- mansect="@([0-9lnp]|[0-9][px])"
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- if [[ "$prev" == -l ]]; then
- _filedir $manext
- return 0
- fi
-
- _expand || return 0
-
- # file based completion if parameter contains /
- if [[ "$cur" == */* ]]; then
- _filedir $manext
- return 0
- fi
-
- UNAME=$( uname -s )
- # strip OS type and version under Cygwin
- UNAME=${UNAME/CYGWIN_*/Cygwin}
- if [ $UNAME = GNU -o $UNAME = Linux -o $UNAME = FreeBSD \
- -o $UNAME = Cygwin ]; then
- manpath=$( manpath 2>/dev/null || command man --path )
- else
- manpath=$MANPATH
- fi
-
- if [ -z "$manpath" ]; then
- COMPREPLY=( $( compgen -c -- $cur ) )
- return 0
- fi
-
- # determine manual section to search
- [[ "$prev" == $mansect ]] && sect=$prev || sect='*'
-
- manpath=$manpath:
- if [ -n "$cur" ]; then
- manpath="${manpath//://*man$sect/$cur* } ${manpath//://*cat$sect/$cur* }"
- else
- manpath="${manpath//://*man$sect/ } ${manpath//://*cat$sect/ }"
- fi
-
- # redirect stderr for when path doesn't exist
- COMPREPLY=( $( eval command ls "$manpath" 2>/dev/null ) )
- # weed out directory path names and paths to man pages
- COMPREPLY=( ${COMPREPLY[@]##*/?(:)} )
- # strip suffix from man pages
- COMPREPLY=( ${COMPREPLY[@]%.@(gz|bz2|lzma)} )
- COMPREPLY=( $( compgen -W '${COMPREPLY[@]%.*}' -- "${cur//\\\\/}" ) )
-
- if [[ "$prev" != $mansect ]]; then
- # File based completion for the rest, prepending ./ if needed
- # (man 1.6f needs that for man pages in current dir)
- local start=${#COMPREPLY[@]}
- _filedir $manext
- for (( i=$start; i < ${#COMPREPLY[@]}; i++ )); do
- [[ ${COMPREPLY[i]} == */* ]] || COMPREPLY[i]=./${COMPREPLY[i]}
- done
- fi
-
- return 0
- }
- [ $UNAME = GNU -o $UNAME = Linux -o $UNAME = Darwin \
- -o $UNAME = FreeBSD -o $UNAME = SunOS -o $UNAME = Cygwin \
- -o $UNAME = OpenBSD ] && \
- complete -F _man $filenames man apropos whatis
-
# renice(8) completion
#
_renice()
@@@ -1032,7 -985,7 +984,7 @@@
curopt=${COMP_WORDS[COMP_CWORD-$i]}
case "$curopt" in
-u)
- COMPREPLY=( $( compgen -u -- $cur ) )
+ COMPREPLY=( $( compgen -u -- "$cur" ) )
;;
-g)
_pgids
@@@ -1105,310 -1058,9 +1057,9 @@@ have pgrep && complete -F _pgrep pgre
# Linux pidof(8) completion.
[ $UNAME = Linux ] && complete -F _pgrep pidof
- # GNU find(1) completion. This makes heavy use of ksh style extended
- # globs and contains Linux specific code for completing the parameter
- # to the -fstype option.
- #
- _find()
- {
- local cur prev i exprfound onlyonce
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(max|min)depth)
- COMPREPLY=( $( compgen -W '0 1 2 3 4 5 6 7 8 9' -- $cur ) )
- return 0
- ;;
- -?(a|c)newer|-fls|-fprint?(0|f)|-?(i)?(l)name|-?(i)wholename)
- _filedir
- return 0
- ;;
- -fstype)
- # this is highly non-portable
- [ -e /proc/filesystems ] &&
- COMPREPLY=( $( cut -d$'\t' -f 2 /proc/filesystems | \
- grep "^$cur" ) )
- return 0
- ;;
- -gid)
- _gids
- return 0
- ;;
- -group)
- if [ -n "$bash205" ]; then
- COMPREPLY=( $( compgen -g -- $cur 2>/dev/null) )
- fi
- return 0
- ;;
- -?(x)type)
- COMPREPLY=( $( compgen -W 'b c d p f l s' -- $cur ) )
- return 0
- ;;
- -uid)
- _uids
- return 0
- ;;
- -user)
- COMPREPLY=( $( compgen -u -- $cur ) )
- return 0
- ;;
- -exec|-ok)
- COMP_WORDS=(COMP_WORDS[0] $cur)
- COMP_CWORD=1
- _command
- return 0
- ;;
- -[acm]min|-[acm]time|-?(i)?(l)?(whole)name|-inum|-?(i)path|-?(i)regex| \
- -links|-perm|-size|-used|-printf)
- # do nothing, just wait for a parameter to be given
- return 0
- ;;
- esac
-
- _expand || return 0
-
- # set exprfound to 1 if there is already an expression present
- for i in ${COMP_WORDS[@]}; do
- [[ "$i" = [-\(\),\!]* ]] && exprfound=1 && break
- done
-
- # handle case where first parameter is not a dash option
- if [ "$exprfound" != 1 ] && [[ "$cur" != [-\(\),\!]* ]]; then
- _filedir -d
- return 0
- fi
-
- # complete using basic options
- COMPREPLY=( $( compgen -W '-daystart -depth -follow -help -maxdepth \
- -mindepth -mount -noleaf -version -xdev -amin -anewer \
- -atime -cmin -cnewer -ctime -empty -false -fstype \
- -gid -group -ilname -iname -inum -ipath -iregex \
- -wholename \
- -links -lname -mmin -mtime -name -newer -nouser \
- -nogroup -perm -regex -size -true -type -uid -used \
- -user -xtype -exec -fls -fprint -fprint0 -fprintf -ok \
- -print -print0 -printf -prune -ls -wholename -iwholename' -- $cur ) )
-
- # this removes any options from the list of completions that have
- # already been specified somewhere on the command line, as long as
- # these options can only be used once (in a word, "options", in
- # opposition to "tests" and "actions", as in the find(1) manpage).
- onlyonce=' -daystart -depth -follow -help -maxdepth -mindepth -mount \
- -noleaf -version -xdev '
- COMPREPLY=( $( echo "${COMP_WORDS[@]}" | \
- (while read -d ' ' i; do
- [ "$i" == "" ] ||
- [ "${onlyonce/ ${i%% *} / }" == "$onlyonce" ] &&
- continue
- # flatten array with spaces on either side,
- # otherwise we cannot grep on word boundaries of
- # first and last word
- COMPREPLY=" ${COMPREPLY[@]} "
- # remove word from list of completions
- COMPREPLY=( ${COMPREPLY/ ${i%% *} / } )
- done
- echo "${COMPREPLY[@]}")
- ) )
-
- _filedir
-
- return 0
- }
- complete -F _find $filenames find
-
- # Linux iwconfig(8) completion
- #
- [ $UNAME = Linux ] && have iwconfig &&
- _iwconfig()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case $prev in
- mode)
- COMPREPLY=( $( compgen -W 'managed ad-hoc master \
- repeater secondary monitor' -- $cur ) )
- return 0
- ;;
- essid)
- COMPREPLY=( $( compgen -W 'on off any' -- $cur ) )
- if [ -n "${COMP_IWLIST_SCAN:-}" ]; then
- COMPREPLY=( "${COMPREPLY[@]}" \
- $( iwlist ${COMP_WORDS[1]} scan | \
- awk -F '"' '/ESSID/ {print $2}' | \
- grep "^$cur" ))
- fi
- return 0
- ;;
- nwid)
- COMPREPLY=( $( compgen -W 'on off' -- $cur ) )
- return 0
- ;;
- channel)
- COMPREPLY=( $( iwlist ${COMP_WORDS[1]} channel | \
- awk '/^[[:space:]]*Channel/ {print $2}' | \
- grep "^$cur" ) )
- return 0
- ;;
-
- freq)
- COMPREPLY=( $( iwlist ${COMP_WORDS[1]} channel | \
- awk '/^[[:space:]]*Channel/ {print $4"G"}' | \
- grep "^$cur" ) )
- return 0
- ;;
- ap)
- COMPREPLY=( $( compgen -W 'on off any' -- $cur ) )
- if [ -n "${COMP_IWLIST_SCAN:-}" ]; then
- COMPREPLY=( "${COMPREPLY[@]}" \
- $( iwlist ${COMP_WORDS[1]} scan | \
- awk -F ': ' '/Address/ {print $2}' | \
- grep "^$cur" ) )
- fi
- return 0
- ;;
- rate)
- COMPREPLY=( $( compgen -W 'auto fixed' -- $cur ) )
- COMPREPLY=( "${COMPREPLY[@]}" \
- $( iwlist ${COMP_WORDS[1]} rate | \
- awk '/^[[:space:]]*[0-9]/ {print $1"M"}' | \
- grep "^$cur" ) )
- return 0
- ;;
- rts)
- COMPREPLY=( $( compgen -W 'auto fixed off' -- $cur ) )
- return 0
- ;;
- frag)
- COMPREPLY=( $( compgen -W 'auto fixed off' -- $cur ) )
- return 0
- ;;
- key)
- COMPREPLY=( $( compgen -W 'off on open restricted' -- $cur ) )
- return 0
- ;;
- enc)
- COMPREPLY=( $( compgen -W 'off on open restricted' -- $cur ) )
- return 0
- ;;
- power)
- COMPREPLY=( $( compgen -W 'period timeout off on' -- $cur ) )
- return 0
- ;;
- txpower)
- COMPREPLY=( $( compgen -W 'off on auto' -- $cur ) )
- return 0
- ;;
- retry)
- COMPREPLY=( $( compgen -W 'limit lifetime' -- $cur ) )
- return 0
- ;;
- esac
-
- if [ $COMP_CWORD -eq 1 ]; then
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--help --version' -- $cur ) )
- else
- _available_interfaces -w
- fi
- else
- COMPREPLY=( $( compgen -W 'essid nwid mode freq channel sens mode \
- ap nick rate rts frag enc key power txpower commit' -- $cur ) )
- fi
-
- } &&
- complete -F _iwconfig iwconfig
-
- # Linux iwlist(8) completion
- #
- [ $UNAME = Linux ] && have iwlist &&
- _iwlist()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- if [ $COMP_CWORD -eq 1 ]; then
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--help --version' -- $cur ) )
- else
- _available_interfaces -w
- fi
- else
- COMPREPLY=( $( compgen -W 'scan scanning freq frequency \
- channel rate bit bitrate key enc encryption power \
- txpower retry ap accesspoint peers event' -- $cur ) )
- fi
- } &&
- complete -F _iwlist iwlist
-
- # Linux iwspy(8) completion
- #
- [ $UNAME = Linux ] && have iwspy &&
- _iwspy()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- if [ $COMP_CWORD -eq 1 ]; then
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--help --version' -- $cur ) )
- else
- _available_interfaces -w
- fi
- else
- COMPREPLY=( $( compgen -W 'setthr getthr off' -- $cur ) )
- fi
- } &&
- complete -F _iwspy iwspy
-
- # Linux iwpriv(8) completion
- #
- [ $UNAME = Linux ] && have iwpriv &&
- _iwpriv()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- roam)
- COMPREPLY=( $( compgen -W 'on off' -- $cur ) )
- return 0
- ;;
- port)
- COMPREPLY=( $( compgen -W 'ad-hoc managed' -- $cur ) )
- return 0
- ;;
- esac
-
- if [ $COMP_CWORD -eq 1 ]; then
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--help --version' -- $cur ) )
- else
- _available_interfaces -w
- fi
- else
- COMPREPLY=( $( compgen -W '--all roam port' -- $cur ) )
- fi
- } &&
- complete -F _iwpriv iwpriv
-
# Red Hat & Debian GNU/Linux if{up,down} completion
#
- [ $UNAME = Linux ] && { have ifup || have ifdown; } &&
+ [ $USERLAND = GNU ] && { have ifup || have ifdown; } &&
_ifupdown()
{
local cur
@@@ -1424,7 -1076,7 +1075,7 @@@
return 0
} &&
complete -F _ifupdown ifup ifdown
- [ $UNAME = Linux ] && have ifstatus && complete -F _ifupdown ifstatus
+ [ $USERLAND = GNU ] && have ifstatus && complete -F _ifupdown ifstatus
# Linux ipsec(8) completion (for FreeS/WAN)
#
@@@ -1441,7 -1093,7 +1092,7 @@@ _ipsec(
COMPREPLY=( $( compgen -W 'auto barf eroute klipsdebug look \
manual pluto ranbits rsasigkey \
setup showdefaults showhostkey spi \
- spigrp tncfg whack' -- $cur ) )
+ spigrp tncfg whack' -- "$cur" ) )
return 0
fi
@@@ -1450,18 -1102,18 +1101,18 @@@
COMPREPLY=( $( compgen -W '--asynchronous --up --add --delete \
--replace --down --route --unroute \
--ready --status --rereadsecrets' \
- -- $cur ) )
+ -- "$cur" ) )
;;
manual)
COMPREPLY=( $( compgen -W '--up --down --route --unroute \
- --union' -- $cur ) )
+ --union' -- "$cur" ) )
;;
ranbits)
COMPREPLY=( $( compgen -W '--quick --continuous --bytes' \
- -- $cur ) )
+ -- "$cur" ) )
;;
setup)
- COMPREPLY=( $( compgen -W '--start --stop --restart' -- $cur ) )
+ COMPREPLY=( $( compgen -W '--start --stop --restart' -- "$cur" ) )
;;
*)
@@@ -1472,1140 -1124,6 +1123,6 @@@
} &&
complete -F _ipsec ipsec
- # Postfix completion.
- #
- have postfix && {
- # postfix(1)
- #
- _postfix()
- {
- local cur prev
-
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- if [[ $cur == '-' ]]; then
- COMPREPLY=(-c -D -v)
- return 0
- fi
- if [[ $prev == '-c' ]]; then
- _filedir -d
- return 0
- fi
- if [[ $prev == '-D' ]]; then
- COMPREPLY=( $( compgen -W 'start' -- "`_get_cword`" ) )
- return 0
- fi
- COMPREPLY=( $( compgen -W 'start stop reload abort flush check' -- \
- "`_get_cword`" ) )
- }
- complete -F _postfix postfix
-
- # postalias(1) and postmap(1)
- #
- _postmap()
- {
- local cur prev len idx
-
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- if [[ $cur == '-' ]]; then
- COMPREPLY=(-N -f -i -n -o -p -r -v -w -c -d -q)
- return 0
- fi
- if [[ $prev == '-c' ]]; then
- _filedir -d
- return 0
- fi
- if [[ $prev == -[dq] ]]; then
- return 0
- fi
-
- if [[ "$cur" == *:* ]]; then
- COMPREPLY=( $( compgen -f -- ${cur#*:} ) )
- else
- len=${#cur}
- idx=0
- for pval in $( /usr/sbin/postconf -m ); do
- if [[ "$cur" == "${pval:0:$len}" ]]; then
- COMPREPLY[$idx]="$pval:"
- idx=$(($idx+1))
- fi
- done
- if [[ $idx -eq 0 ]]; then
- COMPREPLY=( $( compgen -f -- "$cur" ) )
- fi
- fi
- return 0
- }
- complete -F _postmap postmap postalias
-
- # postcat(1)
- #
- _postcat()
- {
- local cur prev pval len idx qfile
-
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- if [[ $cur == '-' ]]; then
- COMPREPLY=(-c -q -v)
- return 0
- fi
- if [[ $prev == '-c' ]]; then
- _filedir -d
- return 0
- fi
-
- qfile=0
- for idx in "${COMP_WORDS[@]}"; do
- [[ "$idx" = -q ]] && qfile=1 && break
- done
- if [[ $qfile == 1 ]]; then
- len=${#cur}
- idx=0
- for pval in $( mailq | \
- sed -e '1d; $d; /^[^0-9A-Z]\|^$/d; s/[* !].*$//' ); do
- if [[ "$cur" == "${pval:0:$len}" ]]; then
- COMPREPLY[$idx]=$pval
- idx=$(($idx+1))
- fi
- done
- return 0
- else
- _filedir
- return 0
- fi
- }
- complete -F _postcat postcat
-
- # postconf(1)
- #
- _postconf()
- {
- local cur prev pval len idx eqext
-
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
- if [[ $cur == '-' ]]; then
- COMPREPLY=(-c -d -e -h -m -l -n -v)
- return 0
- fi
- if [[ $prev == '-c' ]]; then
- _filedir -d
- return 0
- fi
- if [[ $prev == '-e' ]]; then
- cur=${cur#[\"\']}
- eqext='='
- fi
- len=${#cur}
- idx=0
- for pval in $( /usr/sbin/postconf | cut -d ' ' -f 1 ); do
- if [[ "$cur" == "${pval:0:$len}" ]]; then
- COMPREPLY[$idx]="$pval$eqext"
- idx=$(($idx+1))
- fi
- done
- return 0
- }
- complete -F _postconf postconf
-
- # postsuper(1)
- #
- _postsuper()
- {
- local cur prev pval len idx
-
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- if [[ $cur == '-' ]]; then
- COMPREPLY=(-c -d -h -H -p -r -s -v)
- return 0
- fi
- case $prev in
- -[dr])
- len=${#cur}
- idx=0
- for pval in $( echo ALL; mailq | \
- sed -e '1d; $d; /^[^0-9A-Z]\|^$/d; s/[* !].*$//' ); do
- if [[ "$cur" == "${pval:0:$len}" ]]; then
- COMPREPLY[$idx]=$pval
- idx=$(($idx+1))
- fi
- done
- return 0
- ;;
- -h)
- len=${#cur}
- idx=0
- for pval in $( echo ALL; mailq | \
- sed -e '1d; $d; /^[^0-9A-Z]\|^$/d; s/[* ].*$//; /!$/d' ); do
- if [[ "$cur" == "${pval:0:$len}" ]]; then
- COMPREPLY[$idx]=$pval
- idx=$(($idx+1))
- fi
- done
- return 0
- ;;
- -H)
- len=${#cur}
- idx=0
- for pval in $( echo ALL; mailq | \
- sed -e '1d; $d; /^[^0-9A-Z]\|^$/d; /^[0-9A-Z]*[* ]/d; s/!.*$//' ); do
- if [[ "$cur" == "${pval:0:$len}" ]]; then
- COMPREPLY[$idx]=$pval
- idx=$(($idx+1))
- fi
- done
- return 0
- ;;
- esac
- COMPREPLY=( $( compgen -W 'hold incoming active deferred' -- $cur ) )
- return 0
- }
- complete -F _postsuper postsuper
- }
-
- # cvs(1) completion
- #
- have cvs && {
- set_prefix()
- {
- [ -z ${prefix:-} ] || prefix=${cur%/*}/
- [ -r ${prefix:-}CVS/Entries ] || prefix=""
- }
-
- get_entries()
- {
- local IFS=$'\n'
- [ -r ${prefix:-}CVS/Entries ] && \
- entries=$(cut -d/ -f2 -s ${prefix:-}CVS/Entries)
- }
-
- get_modules()
- {
- if [ -n "$prefix" ]; then
- COMPREPLY=( $( command ls -d ${cvsroot}/${prefix}/!(CVSROOT) ) )
- else
- COMPREPLY=( $( command ls -d ${cvsroot}/!(CVSROOT) ) )
- fi
- }
-
- _cvs()
- {
- local cur count mode i cvsroot cvsroots pwd
- local -a flags miss files entries changed newremoved
-
- COMPREPLY=()
- cur=`_get_cword`
-
- count=0
- for i in "${COMP_WORDS[@]}"; do
- [ $count -eq $COMP_CWORD ] && break
- # Last parameter was the CVSROOT, now go back to mode selection
- if [ "${COMP_WORDS[((count))]}" == "$cvsroot" -a "$mode" == "cvsroot" ]; then
- mode=""
- fi
- if [ -z "$mode" ]; then
- case $i in
- -d)
- mode=cvsroot
- cvsroot=${COMP_WORDS[((count+1))]}
- ;;
- @(ad?(d)|new))
- mode=add
- ;;
- @(adm?(in)|rcs))
- mode=admin
- ;;
- ann?(notate))
- mode=annotate
- ;;
- @(checkout|co|get))
- mode=checkout
- ;;
- @(com?(mit)|ci))
- mode=commit
- ;;
- di?(f?(f)))
- mode=diff
- ;;
- ex?(p?(ort)))
- mode=export
- ;;
- ?(un)edit)
- mode=$i
- ;;
- hi?(s?(tory)))
- mode=history
- ;;
- im?(p?(ort)))
- mode=import
- ;;
- re?(l?(ease)))
- mode=release
- ;;
- ?(r)log)
- mode=log
- ;;
- @(rdiff|patch))
- mode=rdiff
- ;;
- @(remove|rm|delete))
- mode=remove
- ;;
- @(rtag|rfreeze))
- mode=rtag
- ;;
- st?(at?(us)))
- mode=status
- ;;
- @(tag|freeze))
- mode=tag
- ;;
- up?(d?(ate)))
- mode=update
- ;;
- *)
- ;;
- esac
- elif [[ "$i" = -* ]]; then
- flags=( "${flags[@]}" $i )
- fi
- count=$((++count))
- done
-
- case "$mode" in
- add)
- if [[ "$cur" != -* ]]; then
- set_prefix
- if [ $COMP_CWORD -gt 1 -a -r ${prefix:-}CVS/Entries ]; then
- get_entries
- [ -z "$cur" ] && \
- files=$( command ls -Ad !(CVS) ) || \
- files=$( command ls -d ${cur}* 2>/dev/null )
- for i in "${entries[@]}"; do
- files=( ${files[@]/#$i//} )
- done
- COMPREPLY=( $( compgen -X '*~' -W '${files[@]}' -- \
- $cur ) )
- fi
- else
- COMPREPLY=( $( compgen -W '-k -m' -- $cur ) )
- fi
- ;;
- admin)
- if [[ "$cur" = -* ]]; then
- COMPREPLY=( $( compgen -W '-i -a -A -e -b -c -k -l -u \
- -L -U -m -M -n -N -o -q -I \
- -s -t -t- -T -V -x -z' -- \
- $cur ) )
- fi
- ;;
- annotate)
- if [[ "$cur" = -* ]]; then
- COMPREPLY=( $( compgen -W '-D -F -f -l -R -r' -- $cur ) )
- else
- get_entries
- COMPREPLY=( $( compgen -W '${entries[@]}' -- $cur ) )
- fi
- ;;
- checkout)
- if [[ "$cur" != -* ]]; then
- [ -z "$cvsroot" ] && cvsroot=$CVSROOT
- COMPREPLY=( $( cvs -d "$cvsroot" co -c 2> /dev/null | \
- awk '{print $1}' ) )
- COMPREPLY=( $( compgen -W '${COMPREPLY[@]}' -- $cur ) )
- else
- COMPREPLY=( $( compgen -W '-A -N -P -R -c -f -l -n -p \
- -s -r -D -d -k -j' -- $cur ) )
- fi
- ;;
- commit)
- set_prefix
-
- if [[ "$cur" != -* ]] && [ -r ${prefix:-}CVS/Entries ]; then
- # if $COMP_CVS_REMOTE is not null, 'cvs commit' will
- # complete on remotely checked-out files (requires
- # passwordless access to the remote repository
- if [ -n "${COMP_CVS_REMOTE:-}" ]; then
- # this is the least computationally intensive
- # way found so far, but other changes
- # (something other than changed/removed/new)
- # may be missing
- changed=( $( cvs -q diff --brief 2>&1 | \
- sed -ne 's/^Files [^ ]* and \([^ ]*\) differ$/\1/p' ) )
- newremoved=( $( cvs -q diff --brief 2>&1 | \
- sed -ne 's/^cvs diff: \([^ ]*\) .*, no comparison available$/\1/p' ) )
- COMPREPLY=( $( compgen -W '${changed[@]:-} \
- ${newremoved[@]:-}' -- $cur ) )
- else
- COMPREPLY=( $(compgen $default -- "$cur") )
- fi
- else
- COMPREPLY=( $( compgen -W '-n -R -l -f -F -m -r' -- \
- $cur ) )
- fi
- ;;
- cvsroot)
- if [ -r ~/.cvspass ]; then
- # Ugly escaping because of bash treating ':' specially
- cvsroots=$( sed 's/^[^ ]* //; s/:/\\:/g' ~/.cvspass )
- COMPREPLY=( $( compgen -W '$cvsroots' -- $cur ) )
- fi
- ;;
- export)
- if [[ "$cur" != -* ]]; then
- [ -z "$cvsroot" ] && cvsroot=$CVSROOT
- COMPREPLY=( $( cvs -d "$cvsroot" co -c | awk '{print $1}' ) )
- COMPREPLY=( $( compgen -W '${COMPREPLY[@]}' -- $cur ) )
- else
- COMPREPLY=( $( compgen -W '-N -f -l -R -n \
- -r -D -d -k' -- $cur ) )
- fi
- ;;
- diff)
- if [[ "$cur" == -* ]]; then
- _longopt diff
- else
- get_entries
- COMPREPLY=( $( compgen -W '${entries[@]:-}' -- $cur ) )
- fi
- ;;
- remove)
- if [[ "$cur" != -* ]]; then
- set_prefix
- if [ $COMP_CWORD -gt 1 -a -r ${prefix:-}CVS/Entries ]; then
- get_entries
- # find out what files are missing
- for i in "${entries[@]}"; do
- [ ! -r "$i" ] && miss=( "${miss[@]}" $i )
- done
- COMPREPLY=( $(compgen -W '${miss[@]:-}' -- $cur) )
- fi
- else
- COMPREPLY=( $( compgen -W '-f -l -R' -- $cur ) )
- fi
- ;;
- import)
- if [[ "$cur" != -* ]]; then
- # starts with same algorithm as checkout
- [ -z "$cvsroot" ] && cvsroot=$CVSROOT
- prefix=${cur%/*}
- if [ -r ${cvsroot}/${prefix} ]; then
- get_modules
- COMPREPLY=( ${COMPREPLY[@]#$cvsroot} )
- COMPREPLY=( ${COMPREPLY[@]#\/} )
- fi
- pwd=$( pwd )
- pwd=${pwd##*/}
- COMPREPLY=( $( compgen -W '${COMPREPLY[@]} $pwd' -- \
- $cur ) )
- else
- COMPREPLY=( $( compgen -W '-d -k -I -b -m -W' -- $cur ))
- fi
- ;;
- update)
- if [[ "$cur" = -* ]]; then
- COMPREPLY=( $( compgen -W '-A -P -C -d -f -l -R -p \
- -k -r -D -j -I -W' -- \
- $cur ) )
- fi
- ;;
- "")
- COMPREPLY=( $( compgen -W 'add admin annotate checkout ci co \
- commit diff delete edit export \
- freeze get history import log new \
- patch rcs rdiff release remove \
- rfreeze rlog rm rtag stat status \
- tag unedit up update -H -Q -q -b \
- -d -e -f -l -n -t -r -v -w -x -z \
- --help --version' -- $cur ) )
- ;;
- *)
- ;;
- esac
-
- return 0
- }
- complete -F _cvs $default cvs
- }
-
- have rpm && {
- # helper functions for rpm completion
- #
- _rpm_installed_packages()
- {
- local ver nodig="$1" nosig="$2"
-
- if [ -r /var/log/rpmpkgs -a \
- /var/log/rpmpkgs -nt /var/lib/rpm/Packages ]; then
- # using RHL 7.2 or later - this is quicker than querying the DB
- COMPREPLY=( $( sed -ne \
- 's|^\('$cur'[^[:space:]]*\)-[^[:space:]-]\+-[^[:space:]-]\+\.rpm$|\1|p' \
- /var/log/rpmpkgs ) )
- else
- _rpm_nodigsig
- COMPREPLY=( $( rpm -qa $nodig $nosig --qf='%{NAME} ' "$cur*" ) )
- fi
- }
-
- _rpm_groups()
- {
- local IFS=$'\t'
- # remove trailing backslash, or grep will complain
- cur=${cur%"\\"}
- COMPREPLY=( $( rpm -qa $nodig $nosig --queryformat '%{group}\n' | \
- grep "^$cur" ) )
- # backslash escape spaces and translate newlines to tabs
- COMPREPLY=( $( echo "${COMPREPLY[@]}" | sed 's/ /\\ /g' | tr '\n' '\t' ) )
- }
-
- _rpm_nodigsig()
- {
- if [ -z "$nodig" -a -z "$nosig" ]; then
- local rpmver
-
- rpmver=$(rpm --version)
- rpmver=${rpmver##* }
-
- if [[ "$rpmver" > "4.0.4" ]]; then
- nodig="--nodigest"
- fi
- if [[ "$rpmver" > "4.0.99" ]]; then
- nosig="--nosignature"
- fi
- fi
- }
-
- # rpm(8) completion
- #
- _rpm()
- {
- local cur prev nodig nosig
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
- nodig=""
- nosig=""
- _rpm_nodigsig
-
- if [ $COMP_CWORD -eq 1 ]; then
- # first parameter on line
- case "$cur" in
- -b*)
- COMPREPLY=( $( compgen -W '-ba -bb -bc -bi -bl -bp -bs'\
- -- $cur ) )
- ;;
- -t*)
- COMPREPLY=( $( compgen -W '-ta -tb -tc -ti -tl -tp -ts'\
- -- $cur ) )
- ;;
- --*)
- COMPREPLY=( $( compgen -W '--help --version --initdb \
- --checksig --recompile --rebuild --resign --addsign \
- --rebuilddb --showrc --setperms --setugids --tarbuild \
- --eval --install --upgrade --query --freshen --erase \
- --verify --querytags --rmsource --rmspec --clean \
- --import' -- $cur ) )
- ;;
- *)
- COMPREPLY=( $( compgen -W '-b -e -E -F -i -q -t -U -V' \
- -- $cur ) )
- ;;
- esac
-
- return 0
- fi
-
- case "$prev" in
- --@(@(db|exclude)path|prefix|relocate|root))
- _filedir -d
- return 0
- ;;
- --eval|-E)
- # get a list of macros
- COMPREPLY=( $( rpm --showrc | sed -ne \
- 's/^-\?[0-9]\+[:=][[:space:]]\+\('${cur#%}'[^[:space:](]*\).*/\1/p' ) )
- COMPREPLY=( "${COMPREPLY[@]/#/%}" )
- return 0
- ;;
- --pipe)
- COMPREPLY=( $( compgen -c -- $cur ) )
- return 0
- ;;
- --rcfile)
- _filedir
- return 0
- ;;
- --specfile)
- # complete on .spec files
- _filedir spec
- return 0
- ;;
- --whatprovides)
- if [[ "$cur" == */* ]]; then
- _filedir
- else
- # complete on capabilities
- COMPREPLY=( $( rpm -qa $nodig $nosig --queryformat \
- '%{providename}\n' | grep "^$cur" ) )
- fi
- return 0
- ;;
- --whatrequires)
- # complete on capabilities
- COMPREPLY=( $( rpm -qa $nodig $nosig --queryformat \
- '%{requirename}\n' | grep "^$cur" ) )
- return 0
- ;;
- --target)
- COMPREPLY=( $( compgen -W "$( command rpm --showrc | sed -ne \
- 's/^\s*compatible\s\+build\s\+archs\s*:\s*\(.*\)/\1/ p' )" -- $cur ) )
- return 0
- ;;
- esac
-
- case "${COMP_WORDS[1]}" in
- -@([iFU]*|-install|-freshen|-upgrade))
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--percent --force --test \
- --replacepkgs --replacefiles --root --excludedocs \
- --includedocs --noscripts --rcfile --ignorearch \
- --dbpath --prefix --ignoreos --nodeps --allfiles \
- --ftpproxy --ftpport --justdb --httpproxy --httpport \
- --noorder --relocate --badreloc --notriggers \
- --excludepath --ignoresize --oldpackage --define \
- --eval --pipe --queryformat --repackage --nosuggests \
- --nodigest --nosignature' -- $cur ) )
- else
- _filedir 'rpm'
- fi
- ;;
- -@(e|-erase))
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--allmatches --noscripts \
- --notriggers --nodeps --test --repackage' -- $cur ) )
- else
- _rpm_installed_packages "$nodig" "$nosig"
- fi
- ;;
- -@(q*|-query))
- # check whether we're doing file completion
- if [ "${COMP_LINE#* -*([^ -])f}" != "$COMP_LINE" ]; then
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--scripts --root \
- --rcfile --requires --ftpport --ftpproxy \
- --httpproxy --httpport --provides --triggers \
- --dump --changelog --dbpath \
- --last --filesbypkg \
- --info --list --state \
- --docfiles --configfiles --queryformat \
- --conflicts --obsoletes \
- --nodigest --nosignature \
- --suggests --enhances \
- --triggerscripts' -- $cur ) )
- else
- _filedir
- fi
- elif [ "${COMP_LINE#* -*([^ -])g}" != "$COMP_LINE" ]; then
- _rpm_groups
- elif [ "${COMP_LINE#* -*([^ -])p}" != "$COMP_LINE" ]; then
- # uninstalled package completion
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--scripts --root \
- --rcfile --whatprovides --whatrequires \
- --requires --triggeredby --ftpport --ftpproxy \
- --httpproxy --httpport --provides --triggers \
- --dump --changelog --dbpath --filesbypkg \
- --define --eval --pipe --showrc --info --list \
- --state --docfiles --configfiles --queryformat\
- --conflicts --obsoletes --nodigest \
- --nosignature' -- $cur ) )
- else
- _filedir 'rpm'
- fi
- else
- # installed package completion
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--scripts --root \
- --rcfile --whatprovides --whatrequires \
- --requires --triggeredby --ftpport --ftpproxy \
- --httpproxy --httpport --provides --triggers \
- --dump --changelog --dbpath --specfile \
- --querybynumber --last --filesbypkg --define \
- --eval --pipe --showrc --info --list --state \
- --docfiles --configfiles --queryformat \
- --conflicts --obsoletes --pkgid --hdrid \
- --fileid --tid --nodigest --nosignature \
- --triggerscripts' -- $cur ) )
- elif [ "${COMP_LINE#* -*([^ -])a}" == "$COMP_LINE" ]; then
- _rpm_installed_packages "$nodig" "$nosig"
- fi
- fi
- ;;
- -@(K*|-checksig))
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--nopgp --nogpg --nomd5 \
- --nodigest --nosignature' -- $cur ) )
- else
- _filedir 'rpm'
- fi
- ;;
- -@([Vy]*|-verify))
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--root --rcfile --dbpath \
- --nodeps --nogroup --nolinkto --nomode --nomtime \
- --nordev --nouser --nofiles --noscripts --nomd5 \
- --querytags --specfile --whatrequires --whatprovides \
- --nodigest --nosignature' -- $cur ) )
- # check whether we're doing file completion
- elif [ "${COMP_LINE#* -*([^ -])f}" != "$COMP_LINE" ]; then
- _filedir
- elif [ "${COMP_LINE#* -*([^ -])g}" != "$COMP_LINE" ]; then
- _rpm_groups
- elif [ "${COMP_LINE#* -*([^ -])p}" != "$COMP_LINE" ]; then
- _filedir 'rpm'
- else
- _rpm_installed_packages "$nodig" "$nosig"
- fi
- ;;
- -[bt]*)
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--short-circuit --timecheck \
- --clean --rmsource --rmspec --test --sign --buildroot \
- --target --nobuild --nodeps --nodirtokens' -- $cur ) )
- elif [[ ${COMP_WORDS[1]} == -b* ]]; then
- _filedir 'spec'
- else
- _filedir '@(tgz|tar.@(gz|bz2|lzma))'
- fi
- ;;
- --re@(build|compile))
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--nodeps --rmsource \
- --rmspec --sign --nodirtokens --target' -- $cur ) )
- else
- _filedir '?(no)src.rpm'
- fi
- ;;
- --tarbuild)
- _filedir '@(tgz|tar.@(gz|bz2|lzma))'
- ;;
- --@(re|add)sign)
- _filedir 'rpm'
- ;;
- --set@(perms|gids))
- _rpm_installed_packages "$nodig" "$nosig"
- ;;
- --@(clean|rms@(ource|pec)))
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--clean --rmsource \
- --rmspec' -- $cur ) )
- else
- _filedir 'spec'
- fi
- ;;
- --@(import|dbpath|root))
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--import --dbpath --root' \
- -- $cur ) )
- else
- _filedir
- fi
- ;;
- esac
-
- return 0
- }
- complete -F _rpm $filenames rpm rpmbuild
- }
-
- # Debian apt-get(8) completion.
- #
- have apt-get &&
- _apt_get()
- {
- local cur prev special i
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do
- if [[ ${COMP_WORDS[i]} == @(install|remove|autoremove|purge|source|build-dep) ]]; then
- special=${COMP_WORDS[i]}
- fi
- done
-
- if [ -n "$special" ]; then
- case $special in
- remove|autoremove|purge)
- if [ -f /etc/debian_version ]; then
- # Debian system
- COMPREPLY=( $( _comp_dpkg_installed_packages \
- $cur ) )
- else
- # assume RPM based
- _rpm_installed_packages
- fi
- return 0
- ;;
- *)
- COMPREPLY=( $( apt-cache pkgnames $cur 2> /dev/null ) )
- return 0
- ;;
-
- esac
- fi
-
- case "$prev" in
- -@(c|-config-file))
- _filedir
- return 0
- ;;
-
- -@(t|-target-release|-default-release))
- COMPREPLY=( $( apt-cache policy | \
- grep "release.o=Debian,a=$cur" | \
- sed -e "s/.*a=\(\w*\).*/\1/" | uniq 2> /dev/null) )
- return 0
- ;;
-
- esac
-
- if [[ "$cur" == -* ]]; then
-
- COMPREPLY=( $( compgen -W '-d -f -h -v -m -q -s -y \
- -u -t -b -c -o --download-only --fix-broken \
- --help --version --ignore-missing \
- --fix-missing --no-download --quiet --simulate \
- --just-print --dry-run --recon --no-act --yes \
- --assume-yes --show-upgraded --only-source \
- --compile --build --ignore-hold \
- --target-release --no-upgrade --force-yes \
- --print-uris --purge --reinstall \
- --list-cleanup --default-release \
- --trivial-only --no-remove --diff-only \
- --no-install-recommends \
- --tar-only --config-file --option --auto-remove' -- $cur ) )
- else
-
- COMPREPLY=( $( compgen -W 'update upgrade dselect-upgrade \
- dist-upgrade install remove purge source build-dep \
- check clean autoclean autoremove' -- $cur ) )
-
- fi
-
-
- return 0
- } &&
- complete -F _apt_get $filenames apt-get
-
- # Debian apt-cache(8) completion.
- #
- have apt-cache &&
- _apt_cache()
- {
- local cur prev special i
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
-
- if [ "$cur" != show ]; then
- for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do
- if [[ ${COMP_WORDS[i]} == @(add|depends|dotty|madison|policy|rdepends|show?(pkg|src|)) ]]; then
- special=${COMP_WORDS[i]}
- fi
- done
- fi
-
-
- if [ -n "$special" ]; then
- case $special in
- add)
- _filedir
- return 0
- ;;
-
- showsrc)
- COMPREPLY=( $( apt-cache dumpavail | \
- grep "^Source: $cur" | sort | \
- uniq | cut -f2 -d" " ) )
- return 0
- ;;
-
- *)
- COMPREPLY=( $( apt-cache pkgnames $cur 2> /dev/null ) )
- return 0
- ;;
-
- esac
- fi
-
-
- case "$prev" in
- -@(c|p|s|-config-file|-@(pkg|src)-cache))
- _filedir
- return 0
- ;;
- search)
- if [[ "$cur" != -* ]]; then
- return 0
- fi
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
-
- COMPREPLY=( $( compgen -W '-h -v -p -s -q -i -f -a -g -c \
- -o --help --version --pkg-cache --src-cache \
- --quiet --important --full --all-versions \
- --no-all-versions --generate --no-generate \
- --names-only --all-names --recurse \
- --config-file --option --installed' -- $cur ) )
- else
-
- COMPREPLY=( $( compgen -W 'add gencaches show showpkg showsrc \
- stats dump dumpavail unmet search search \
- depends rdepends pkgnames dotty xvcg \
- policy madison' -- $cur ) )
-
- fi
-
-
- return 0
- } &&
- complete -F _apt_cache $filenames apt-cache
-
-
- # Debian aptitude(1) completion
- #
- have aptitude && {
- have grep-status && {
- _comp_dpkg_hold_packages()
- {
- grep-status -P -e "^$1" -a -FStatus 'hold' -n -s Package
- }
- } || {
- _comp_dpkg_hold_packages()
- {
- grep -B 2 'hold' /var/lib/dpkg/status | grep "Package: $1" \
- | cut -d\ -f2
- }
- }
-
- _aptitude()
- {
- local cur dashoptions prev special i
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
-
- dashoptions='-S -u -i -h --help --version -s --simulate -d \
- --download-only -P --prompt -y --assume-yes -F \
- --display-format -O --sort -w --width -f -r -g \
- --with-recommends --with-suggests -R -G \
- --without-recommends --without-suggests -t \
- --target-release -V --show-versions -D --show-deps\
- -Z -v --verbose --purge-unused --schedule-only'
-
- for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do
- if [[ ${COMP_WORDS[i]} == @(install|reinstall|hold|unhold|markauto|unmarkauto|dist-upgrade|full-upgrade|download|show|forbid-version|purge|remove|changelog|why|why-not|keep|keep-all|build-dep) ]]; then
- special=${COMP_WORDS[i]}
- fi
- #exclude some mutually exclusive options
- [[ ${COMP_WORDS[i]} == '-u' ]] && dashoptions=${dashoptions/-i}
- [[ ${COMP_WORDS[i]} == '-i' ]] && dashoptions=${dashoptions/-u}
- done
-
- if [[ -n "$special" ]]; then
- case $special in
- @(install|hold|markauto|unmarkauto|dist-upgrade|full-upgrade|download|show|changelog|why|why-not|build-dep))
- COMPREPLY=( $( apt-cache pkgnames $cur 2> /dev/null ) )
- return 0
- ;;
- @(purge|remove|reinstall|forbid-version))
- COMPREPLY=( $( _comp_dpkg_installed_packages $cur ) )
- return 0
- ;;
- unhold)
- COMPREPLY=( $( _comp_dpkg_hold_packages $cur ) )
- return 0
- ;;
-
- esac
- fi
-
- case $prev in
- # don't complete anything if these options are found
- @(autoclean|clean|forget-new|search|upgrade|safe-upgrade|update|keep-all))
- return 0
- ;;
-
- -S)
- _filedir
- return 0
- ;;
-
- -@(t|-target-release|-default-release))
- COMPREPLY=( $( apt-cache policy | \
- grep "release.o=Debian,a=$cur" | \
- sed -e "s/.*a=\(\w*\).*/\1/" | uniq 2> /dev/null ) )
- return 0
- ;;
-
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W "$dashoptions" -- $cur ) )
- else
- COMPREPLY=( $( compgen -W 'update upgrade safe-upgrade forget-new clean \
- autoclean install reinstall remove \
- hold unhold purge markauto unmarkauto why why-not \
- dist-upgrade full-upgrade download search show \
- forbid-version changelog keep-all' -- $cur ) )
- fi
-
-
- return 0
- }
- complete -F _aptitude $default aptitude
- }
-
- # Debian apt-build(1) completion.
- #
- have apt-build &&
- _apt_build()
- {
- local cur prev special i
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do
- if [[ ${COMP_WORDS[i]} == @(install|remove|source|info|clean) ]]; then
- special=${COMP_WORDS[i]}
- fi
- done
-
- if [ -n "$special" ]; then
- case $special in
- @(install|source|info))
- COMPREPLY=( $( apt-cache pkgnames $cur 2> /dev/null ) )
- return 0
- ;;
- remove)
- COMPREPLY=( $( _comp_dpkg_installed_packages \
- $cur ) )
- return 0
- ;;
- *)
- return 0
- ;;
- esac
- fi
-
- case "$prev" in
-
- --@(patch|build-dir|repository-dir))
- _filedir
- return 0
- ;;
-
- -@(h|-help))
- return 0
- ;;
-
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--help --show-upgraded -u --build-dir \
- --repository-dir --build-only \
- --build-command --reinstall --rebuild \
- --remove-builddep --no-wrapper --purge \
- --patch --patch-strip -p --yes -y \
- --version -v --no-source' -- $cur ) )
-
- else
- COMPREPLY=( $( compgen -W 'update upgrade install remove \
- source dist-upgrade world clean info \
- clean-build update-repository ' -- $cur ) )
- fi
-
-
- return 0
- } &&
- complete -F _apt_build $filenames apt-build
-
- # chsh(1) completion
- #
- _chsh()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- if [ "$prev" = "-s" ]; then
- if [ -f /etc/debian_version ]; then
- COMPREPLY=( $( </etc/shells ) )
- else
- COMPREPLY=( $( chsh -l | grep "^$cur" ) )
- fi
- else
- COMPREPLY=( $( compgen -u -- $cur ) )
- fi
-
- return 0
- }
- complete -F _chsh chsh
-
- # chkconfig(8) completion
- #
- have chkconfig &&
- _chkconfig()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- @([1-6]|--@(list|add|del)))
- _services
- return 0
- ;;
- --level)
- COMPREPLY=( $( compgen -W '1 2 3 4 5 6' -- $cur ) )
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--list --add --del --level' -- $cur ) )
- else
- if [ $COMP_CWORD -eq 2 -o $COMP_CWORD -eq 4 ]; then
- COMPREPLY=( $( compgen -W 'on off reset' -- $cur ) )
- else
- _services
- fi
- fi
- } &&
- complete -F _chkconfig chkconfig
-
# This function provides simple user at host completion
#
_user_at_host() {
@@@ -2615,7 -1133,7 +1132,7 @@@
cur=`_get_cword`
if [[ $cur == *@* ]]; then
- _known_hosts
+ _known_hosts_real "$cur"
else
COMPREPLY=( $( compgen -u -- "$cur" ) )
fi
@@@ -2624,31 -1142,50 +1141,50 @@@
}
shopt -u hostcomplete && complete -F _user_at_host $nospace talk ytalk finger
- # This function performs host completion based on ssh's known_hosts files,
- # defaulting to standard host completion if they don't exist.
- #
- # Arguments: -a Use aliases
- # -c Use `:' suffix
- # -F configfile Use `configfile' for configuration settings
+ # NOTE: Using this function as a helper function is deprecated. Use
+ # `_known_hosts_real' instead.
_known_hosts()
{
- local configfile
- local cur curd ocur user suffix aliases global_kh user_kh hosts i host
- local -a kh khd config
-
+ local options
COMPREPLY=()
- cur=`_get_cword`
- ocur=$cur
+
+ # NOTE: Using `_known_hosts' as a helper function and passing options
+ # to `_known_hosts' is deprecated: Use `_known_hosts_real' instead.
+ [ "$1" = -a ] || [ "$2" = -a ] && options=-a
+ [ "$1" = -c ] || [ "$2" = -c ] && options="$options -c"
+ _known_hosts_real $options "$(_get_cword)"
+ }
+
+ # Helper function for completing _known_hosts.
+ # This function performs host completion based on ssh's known_hosts files.
+ # Also hosts from HOSTFILE (compgen -A hostname) are added, unless
+ # COMP_KNOWN_HOSTS_WITH_HOSTFILE is set to an empty value.
+ # Usage: _known_hosts_real [OPTIONS] CWORD
+ # Options: -a Use aliases
+ # -c Use `:' suffix
+ # -F configfile Use `configfile' for configuration settings
+ # -p PREFIX Use PREFIX
+ # Return: Completions, starting with CWORD, are added to COMPREPLY[]
+ _known_hosts_real()
+ {
+ local configfile flag prefix
+ local cur curd awkcur user suffix aliases global_kh user_kh hosts i host
+ local -a kh khd config
local OPTIND=1
- while getopts "acF:" flag "$@"; do
+ while getopts "acF:p:" flag "$@"; do
case $flag in
a) aliases='yes' ;;
c) suffix=':' ;;
- F) configfile="$OPTARG" ;;
+ F) configfile=$OPTARG ;;
+ p) prefix=$OPTARG ;;
esac
done
-
+ [ $# -lt $OPTIND ] && echo "error: $FUNCNAME: missing mandatory argument CWORD"
+ cur=${!OPTIND}; let "OPTIND += 1"
+ [ $# -ge $OPTIND ] && echo "error: $FUNCNAME("$@"): unprocessed arguments:"\
+ $(while [ $# -ge $OPTIND ]; do echo ${!OPTIND}; shift; done)
+
[[ $cur == *@* ]] && user=${cur%@*}@ && cur=${cur#*@}
kh=()
@@@ -2666,15 -1203,23 +1202,23 @@@
fi
if [ ${#config[@]} -gt 0 ]; then
- # expand path (if present) to global known hosts file
- global_kh=$( eval echo "$( sed -ne 's/^[ \t]*[Gg][Ll][Oo][Bb][Aa][Ll][Kk][Nn][Oo][Ww][Nn][Hh][Oo][Ss][Tt][Ss][Ff][Ii][Ll][Ee]['"$'\t '"']*\(.*\)$/\1/p' "${config[@]}" )" )
- # expand path (if present) to user known hosts file
- user_kh=$( eval echo "$( sed -ne 's/^[ \t]*[Uu][Ss][Ee][Rr][Kk][Nn][Oo][Ww][Nn][Hh][Oo][Ss][Tt][Ss][Ff][Ii][Ll][Ee]['"$'\t '"']*\(.*\)$/\1/p' "${config[@]}" )" )
+ local OIFS=$IFS IFS=$'\n'
+ # expand path (if present) to global known hosts file
+ global_kh=($( sed -ne 's/^[ \t]*[Gg][Ll][Oo][Bb][Aa][Ll][Kk][Nn][Oo][Ww][Nn][Hh][Oo][Ss][Tt][Ss][Ff][Ii][Ll][Ee]['"$'\t '"']*\(.*\)$/"\1"/p' "${config[@]}" ))
+ for (( i=0; i < ${#global_kh[@]}; i++ )); do
+ global_kh[i]=$(echo "${global_kh[i]//\"/}")
+ done
+ # expand path (if present) to user known hosts file
+ user_kh=($( sed -ne 's/^[ \t]*[Uu][Ss][Ee][Rr][Kk][Nn][Oo][Ww][Nn][Hh][Oo][Ss][Tt][Ss][Ff][Ii][Ll][Ee]['"$'\t '"']*\(.*\)$/"\1"/p' "${config[@]}" ))
+ for (( i=0; i < ${#user_kh[@]}; i++ )); do
+ user_kh[i]=$(echo "${user_kh[i]//\"/}")
+ done
+ IFS=$OIFS
fi
# Global known_hosts files
[ -r "$global_kh" ] &&
- kh=( "${kh[@]}" "$global_kh" )
+ kh=( "${kh[@]}" "${global_kh[@]}" )
if [ -z "$configfile" ]; then
[ -r /etc/ssh/ssh_known_hosts ] &&
kh=( "${kh[@]}" /etc/ssh/ssh_known_hosts )
@@@ -2690,7 -1235,7 +1234,7 @@@
# User known_hosts files
[ -r "$user_kh" ] &&
- kh=( "${kh[@]}" "$user_kh" )
+ kh=( "${kh[@]}" "${user_kh[@]}" )
if [ -z "$configfile" ]; then
[ -r ~/.ssh/known_hosts ] &&
kh=( "${kh[@]}" ~/.ssh/known_hosts )
@@@ -2702,487 -1247,86 +1246,86 @@@
# If we have known_hosts files to use
if [ ${#kh[@]} -gt 0 -o ${#khd[@]} -gt 0 -o -n "$configfile" ]; then
- # Escape slashes and dots in paths for awk
- cur=${cur//\//\\\/}
- cur=${cur//\./\\\.}
- curd=$cur
-
- if [[ "$cur" == [0-9]*.* ]]; then
- # Digits followed by a dot - just search for that
- cur="^$cur.*"
- elif [[ "$cur" == [0-9]* ]]; then
- # Digits followed by no dot - search for digits followed
- # by a dot
- cur="^$cur.*\."
- elif [ -z "$cur" ]; then
- # A blank - search for a dot or an alpha character
- cur="[a-z.]"
- else
- cur="^$cur"
- fi
-
- if [ ${#kh[@]} -gt 0 ]; then
+ # Escape slashes and dots in paths for awk
+ awkcur=${cur//\//\\\/}
+ awkcur=${awkcur//\./\\\.}
+ curd=$awkcur
+
+ if [[ "$awkcur" == [0-9]*.* ]]; then
+ # Digits followed by a dot - just search for that
+ awkcur="^$awkcur.*"
+ elif [[ "$awkcur" == [0-9]* ]]; then
+ # Digits followed by no dot - search for digits followed
+ # by a dot
+ awkcur="^$awkcur.*\."
+ elif [ -z "$awkcur" ]; then
+ # A blank - search for a dot or an alpha character
+ awkcur="[a-z.]"
+ else
+ awkcur="^$awkcur"
+ fi
- # FS needs to look for a comma separated list
- COMPREPLY=( $( awk 'BEGIN {FS=","}
+ if [ ${#kh[@]} -gt 0 ]; then
+ # FS needs to look for a comma separated list
+ COMPREPLY=( $( awk 'BEGIN {FS=","}
/^\s*[^|\#]/ {for (i=1; i<=2; ++i) { \
gsub(" .*$", "", $i); \
- if ($i ~ /'$cur'/) {print $i} \
+ gsub("[\\[\\]]", "", $i); \
+ gsub(":[0-9]+$", "", $i); \
+ if ($i ~ /'"$awkcur"'/) {print $i} \
}}' "${kh[@]}" 2>/dev/null ) )
- fi
- if [ ${#khd[@]} -gt 0 ]; then
- # Needs to look for files called
- # .../.ssh2/key_22_<hostname>.pub
- # dont fork any processes, because in a cluster environment,
- # there can be hundreds of hostkeys
- for i in "${khd[@]}" ; do
- if [[ "$i" == *key_22_$curd*.pub ]] && [ -r "$i" ] ; then
- host=${i/#*key_22_/}
- host=${host/%.pub/}
- COMPREPLY=( "${COMPREPLY[@]}" $host )
- fi
- done
- fi
- # append any available aliases from config files
- if [ ${#config[@]} -gt 0 ] && [ -n "$aliases" ]; then
- local host_aliases=$( sed -ne 's/^[ \t]*[Hh][Oo][Ss][Tt]\([Nn][Aa][Mm][Ee]\)\?['"$'\t '"']\+\([^#*?]*\)\(#.*\)\?$/\2/p' "${config[@]}" )
- hosts=$( compgen -W "$host_aliases" -- $ocur )
- COMPREPLY=( "${COMPREPLY[@]}" $hosts )
- fi
-
- # Now add results of normal hostname completion
- COMPREPLY=( "${COMPREPLY[@]}" $( compgen -A hostname -- $ocur ) )
-
- # apply suffix
- for (( i=0; i < ${#COMPREPLY[@]}; i++ )); do
- COMPREPLY[i]=$user${COMPREPLY[i]}$suffix
- done
- elif [ -z "$configfile" ]; then
- # Just do normal hostname completion
- COMPREPLY=( $( compgen -A hostname -S "$suffix" -- $cur ) )
- fi
-
- return 0
- }
- complete -F _known_hosts traceroute traceroute6 tracepath tracepath6 \
- ping ping6 fping fping6 telnet host nslookup rsh rlogin ftp dig ssh-installkeys mtr
-
- # rsync(1) completion
- #
- have rsync &&
- _rsync()
- {
- local cur prev shell i userhost path
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- _expand || return 0
-
- case "$prev" in
- --@(config|password-file|include-from|exclude-from))
- _filedir
- return 0
- ;;
- -@(T|-temp-dir|-compare-dest))
- _filedir -d
- return 0
- ;;
- -@(e|-rsh))
- COMPREPLY=( $( compgen -W 'rsh ssh' -- $cur ) )
- return 0
- ;;
- esac
-
- case "$cur" in
- -*)
- COMPREPLY=( $( compgen -W '-v -q -c -a -r -R -b -u -l -L -H \
- -p -o -g -D -t -S -n -W -x -B -e -C -I -T -P \
- -z -h -4 -6 --verbose --quiet --checksum \
- --archive --recursive --relative --backup \
- --backup-dir --suffix= --update --links \
- --copy-links --copy-unsafe-links --safe-links \
- --hard-links --perms --owner --group --devices\
- --times --sparse --dry-run --whole-file \
- --no-whole-file --one-file-system \
- --block-size= --rsh= --rsync-path= \
- --cvs-exclude --existing --ignore-existing \
- --delete --delete-excluded --delete-after \
- --ignore-errors --max-delete= --partial \
- --force --numeric-ids --timeout= \
- --ignore-times --size-only --modify-window= \
- --temp-dir= --compare-dest= --compress \
- --exclude= --exclude-from= --include= \
- --include-from= --version --daemon --no-detach\
- --address= --config= --port= --blocking-io \
- --no-blocking-io --stats --progress \
- --log-format= --password-file= --bwlimit= \
- --write-batch= --read-batch= --help' -- $cur ))
- ;;
- *:*)
- # find which remote shell is used
- shell=ssh
- for (( i=1; i < COMP_CWORD; i++ )); do
- if [[ "${COMP_WORDS[i]}" == -@(e|-rsh) ]]; then
- shell=${COMP_WORDS[i+1]}
- break
- fi
- done
- if [[ "$shell" == ssh ]]; then
- # remove backslash escape from :
- cur=${cur/\\:/:}
- userhost=${cur%%?(\\):*}
- path=${cur#*:}
- # unescape spaces
- path=${path//\\\\\\\\ / }
- if [ -z "$path" ]; then
- # default to home dir of specified
- # user on remote host
- path=$(ssh -o 'Batchmode yes' \
- $userhost pwd 2>/dev/null)
- fi
- # escape spaces; remove executables, aliases, pipes
- # and sockets; add space at end of file names
- COMPREPLY=( $( ssh -o 'Batchmode yes' $userhost \
- command ls -aF1d "$path*" 2>/dev/null | \
- sed -e 's/ /\\\\\\\ /g' -e 's/[*@|=]$//g' \
- -e 's/[^\/]$/& /g' ) )
fi
- ;;
- *)
- _known_hosts -c -a
- _filedir
- ;;
- esac
-
- return 0
- } &&
- complete -F _rsync $nospace $filenames rsync
-
- # Linux route(8) completion
- #
- [ $UNAME = Linux ] &&
- _route()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- if [ "$prev" = dev ]; then
- COMPREPLY=( $( ifconfig -a | sed -ne 's|^\('$cur'[^ ]*\).*$|\1|p' ))
- return 0
- fi
-
- COMPREPLY=( $( compgen -W 'add del -host -net netmask metric mss \
- window irtt reject mod dyn reinstate dev \
- default gw' -- $cur ) )
-
- COMPREPLY=( $( echo " ${COMP_WORDS[@]}" | \
- (while read -d ' ' i; do
- [ "$i" == "" ] && continue
- # flatten array with spaces on either side,
- # otherwise we cannot grep on word
- # boundaries of first and last word
- COMPREPLY=" ${COMPREPLY[@]} "
- # remove word from list of completions
- COMPREPLY=( ${COMPREPLY/ $i / } )
+ if [ ${#khd[@]} -gt 0 ]; then
+ # Needs to look for files called
+ # .../.ssh2/key_22_<hostname>.pub
+ # dont fork any processes, because in a cluster environment,
+ # there can be hundreds of hostkeys
+ for i in "${khd[@]}" ; do
+ if [[ "$i" == *key_22_$awkcurd*.pub ]] && [ -r "$i" ] ; then
+ host=${i/#*key_22_/}
+ host=${host/%.pub/}
+ COMPREPLY=( "${COMPREPLY[@]}" $host )
+ fi
done
- echo "${COMPREPLY[@]}")
- ) )
- return 0
- }
- [ $UNAME = Linux ] && complete -F _route route
-
- # GNU make(1) completion
- #
- have make || have gmake || have gnumake || have pmake &&
- _make()
- {
- local file makef makef_dir="." makef_inc cur prev i
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- # --name value style option
- case $prev in
- -@(f|o|W))
- _filedir
- return 0
- ;;
- -@(I|C))
- _filedir -d
- return 0
- ;;
- esac
-
- # --name=value style option
- if [[ "$cur" == *=* ]]; then
- prev=${cur/=*/}
- cur=${cur/*=/}
- case "$prev" in
- --@(file|makefile))
- _filedir
- return 0
- ;;
- --@(directory|include-dir))
- _filedir -d
- return 0
- ;;
- esac
- fi
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-b -m -B -C -d -e -f -h -i -I\
- -j -l -k -n -o -p -q -r -R - s -S -t -v -w -W \
- --always-make --directory= --debug \
- --environment-overrides --file= --makefile= --help \
- --ignore-errors --include-dir= --jobs --load-average \
- --max-load --keep-going --just-print --dry-run \
- --recon --old-file= --assume-old= --print-data-base \
- --question --no-builtin-rules --no-builtin-variables \
- --silent --quiet --no-keep-goind --stop --touch \
- --version --print-directory --no-print-directory \
- --what-if= --new-file= --assume-new= \
- --warn-undefined-variables' -- $cur ) )
- else
- # before we check for makefiles, see if a path was specified
- # with -C
- for (( i=0; i < ${#COMP_WORDS[@]}; i++ )); do
- if [[ ${COMP_WORDS[i]} == -C ]]; then
- # eval for tilde expansion
- eval makef_dir=${COMP_WORDS[i+1]}
- break
+ fi
+ # append any available aliases from config files
+ if [ ${#config[@]} -gt 0 ] && [ -n "$aliases" ]; then
+ local host_aliases=$( sed -ne 's/^[ \t]*[Hh][Oo][Ss][Tt]\([Nn][Aa][Mm][Ee]\)\?['"$'\t '"']\+\([^#*?]*\)\(#.*\)\?$/\2/p' "${config[@]}" )
+ hosts=$( compgen -W "$host_aliases" -- "$cur" )
+ COMPREPLY=( "${COMPREPLY[@]}" $hosts )
+ fi
+
+ # Add hosts reported by avahi, if it's available
+ # and if the daemon is started.
+ # The original call to avahi-browse also had "-k", to avoid
+ # lookups into avahi's services DB. We don't need the name
+ # of the service, and if it contains ";", it may mistify
+ # the result. But on Gentoo (at least), -k isn't available
+ # (even if mentioned in the manpage), so...
+ if type avahi-browse >&/dev/null; then
+ if [ -n "$(pidof avahi-daemon)" ]; then
+ COMPREPLY=( "${COMPREPLY[@]}" $(
+ compgen -W "$( avahi-browse -cpr _workstation._tcp | \
+ grep ^= | cut -d\; -f7 | sort -u )" -- "$cur" ) )
fi
- done
+ fi
- # before we scan for targets, see if a Makefile name was
- # specified with -f
- for (( i=0; i < ${#COMP_WORDS[@]}; i++ )); do
- if [[ ${COMP_WORDS[i]} == -f ]]; then
- # eval for tilde expansion
- eval makef=${COMP_WORDS[i+1]}
- break
- fi
+ # apply suffix and prefix
+ for (( i=0; i < ${#COMPREPLY[@]}; i++ )); do
+ COMPREPLY[i]=$prefix$user${COMPREPLY[i]}$suffix
done
-
- [ -n "$makef" ] && makef="-f ${makef}"
- [ -n "$makef_dir" ] && makef_dir="-C ${makef_dir}"
-
- COMPREPLY=( $( make -qp $makef $makef_dir 2>/dev/null | \
- awk -F':' '/^[a-zA-Z0-9][^$#\/\t=]*:([^=]|$)/ \
- {split($1,A,/ /);for(i in A)print A[i]}' | \
- command grep "^$cur" ))
-
fi
- } &&
- complete -f -F _make $filenames make gmake gnumake pmake
-
- # GNU tar(1) completion
- #
- _tar()
- {
- local cur ext regex tar untar
-
- COMPREPLY=()
- cur=`_get_cword`
- if [ $COMP_CWORD -eq 1 ]; then
- COMPREPLY=( $( compgen -W 'c t x u r d A' -- $cur ) )
- return 0
+ # Add results of normal hostname completion, unless `COMP_KNOWN_HOSTS_WITH_HOSTFILE'
+ # is set to an empty value.
+ if [ -n "${COMP_KNOWN_HOSTS_WITH_HOSTFILE-1}" ]; then
+ COMPREPLY=( "${COMPREPLY[@]}" $( compgen -A hostname -P "$prefix$user" -S "$suffix" -- "$cur" ) )
fi
- case "${COMP_WORDS[1]}" in
- ?(-)[cr]*f)
- _filedir
- return 0
- ;;
- +([^IZzJjy])f)
- ext='t@(ar?(.@(Z|gz|bz?(2)|lz?(ma)))|gz|bz?(2)|lz?(ma))'
- regex='t\(ar\(\.\(Z\|gz\|bz2\?\|lzma\)\)\?\|gz\|bz2\?\|lzma\)'
- ;;
- *[Zz]*f)
- ext='t?(ar.)@(gz|Z)'
- regex='t\(ar\.\)\?\(gz\|Z\)'
- ;;
- *[Ijy]*f)
- ext='t?(ar.)bz?(2)'
- regex='t\(ar\.\)\?bz2\?'
- ;;
- *[J]*f)
- ext='t?(ar.)lz?(ma)'
- regex='t\(ar\.\)\?lzma\?'
- ;;
- *)
- _filedir
- return 0
- ;;
-
- esac
-
- if [[ "$COMP_LINE" == *$ext' ' ]]; then
- # complete on files in tar file
- #
- # get name of tar file from command line
- tar=$( echo "$COMP_LINE" | \
- sed -e 's/^.* \([^ ]*'$regex'\) .*$/\1/' )
- # devise how to untar and list it
- untar=t${COMP_WORDS[1]//[^Izjyf]/}
-
- COMPREPLY=( $( compgen -W "$( echo $( tar $untar $tar \
- 2>/dev/null ) )" -- "$cur" ) )
- return 0
- fi
-
- # file completion on relevant files
- _filedir "$ext"
-
return 0
}
- [ -n "${COMP_TAR_INTERNAL_PATHS:-}" ] && complete -F _tar $dirnames tar ||
- complete -F _tar $filenames tar
-
- # jar(1) completion
- #
- have jar &&
- _jar()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- if [ $COMP_CWORD = 1 ]; then
- COMPREPLY=( $( compgen -W 'c t x u' -- $cur ) )
- return 0
- fi
-
- case "${COMP_WORDS[1]}" in
- *c*f)
- _filedir
- ;;
- *f)
- _filedir '?([ejw]ar|zip|[EJW]AR|ZIP)'
- ;;
- *)
- _filedir
- ;;
- esac
- } &&
- complete -F _jar $filenames jar
-
- # Linux iptables(8) completion
- #
- have iptables &&
- _iptables()
- {
- local cur prev table chain
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
- chain='s/^Chain \([^ ]\+\).*$/\1/p'
-
- if [[ $COMP_LINE == *-t\ *filter* ]]; then
- table="-t filter"
- elif [[ $COMP_LINE == *-t\ *nat* ]]; then
- table="-t nat"
- elif [[ $COMP_LINE == *-t\ *mangle* ]]; then
- table="-t mangle"
- fi
-
- case "$prev" in
- -*[AIDRPFXLZ])
- COMPREPLY=( $( compgen -W '`iptables $table -nL | \
- sed -ne "s/^Chain \([^ ]\+\).*$/\1/p"`' -- $cur ) )
- ;;
- -*t)
- COMPREPLY=( $( compgen -W 'nat filter mangle' -- $cur ) )
- ;;
- -j)
- if [ "$table" = "-t filter" -o "$table" = "" ]; then
- COMPREPLY=( $( compgen -W 'ACCEPT DROP LOG ULOG REJECT \
- `iptables $table -nL | sed -ne "$chain" \
- -e "s/INPUT|OUTPUT|FORWARD|PREROUTING|POSTROUTING//"`' -- \
- $cur ) )
- elif [ "$table" = "-t nat" ]; then
- COMPREPLY=( $( compgen -W 'ACCEPT DROP LOG ULOG REJECT \
- MIRROR SNAT DNAT MASQUERADE `iptables $table -nL | \
- sed -ne "$chain" -e "s/OUTPUT|PREROUTING|POSTROUTING//"`' \
- -- $cur ) )
- elif [ "$table" = "-t mangle" ]; then
- COMPREPLY=( $( compgen -W 'ACCEPT DROP LOG ULOG REJECT \
- MARK TOS `iptables $table -nL | sed -ne "$chain" \
- -e "s/INPUT|OUTPUT|FORWARD|PREROUTING|POSTROUTING//"`' -- \
- $cur ) )
- fi
- ;;
- *)
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-i -o -s -d -p -f -m --append \
- --delete --insert --replace --list --flush --zero --new \
- --delete-chain --policy --rename-chain --proto --source \
- --destination --in-interface --jump --match --numeric \
- --out-interface --table --verbose --line-numbers --exact \
- --fragment --modprobe= --set-counters --version' -- "$cur") )
- fi
- ;;
- esac
-
- } &&
- complete -F _iptables iptables
-
- # tcpdump(8) completion
- #
- have tcpdump &&
- _tcpdump()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(r|w|F))
- _filedir
- return 0
- ;;
- -i)
- _available_interfaces -a
- return 0
- ;;
- esac
-
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-a -d -e -f -l -n -N -O -p \
- -q -R -S -t -u -v -x -C -F -i -m -r -s -T -w \
- -E' -- $cur ) )
- fi
-
- } &&
- complete -F _tcpdump tcpdump
-
- # autorpm(8) completion
- #
- have autorpm &&
- _autorpm()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- COMPREPLY=( $( compgen -W '--notty --debug --help --version \
- auto add fullinfo info help install list \
- remove set' -- $cur ) )
-
- } &&
- complete -F _autorpm autorpm
+ complete -F _known_hosts traceroute traceroute6 tracepath tracepath6 \
+ ping ping6 fping fping6 telnet host nslookup rsh rlogin ftp dig ssh-installkeys mtr
# This meta-cd function observes the CDPATH variable, so that cd additionally
# completes on directories under those specified in CDPATH.
@@@ -3295,7 -1439,7 +1438,7 @@@ _command_offset(
cur=`_get_cword`
if [[ $COMP_CWORD -eq 0 ]]; then
- COMPREPLY=( $( compgen -c -- $cur ) )
+ COMPREPLY=( $( compgen -c -- "$cur" ) )
else
cmd=${COMP_WORDS[0]}
if complete -p $cmd &>/dev/null; then
@@@ -3306,7 -1450,7 +1449,7 @@@
# get function name
func=${cspec#*-F }
func=${func%% *}
-
+
if [[ ${#COMP_WORDS[@]} -ge 2 ]]; then
$func $cmd "${COMP_WORDS[${#COMP_WORDS[@]}-1]}" "${COMP_WORDS[${#COMP_WORDS[@]}-2]}"
else
@@@ -3342,956 -1486,29 +1485,29 @@@ _root_command(
}
complete -F _root_command $filenames sudo fakeroot really gksudo gksu kdesudo
- # ant(1) completion
- #
- have ant && {
- _ant()
- {
- local cur prev buildfile i
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -buildfile|-f)
- _filedir 'xml'
- return 0
- ;;
- -logfile)
- _filedir
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- # relevant options completion
- COMPREPLY=( $( compgen -W '-help -projecthelp -version -quiet \
- -verbose -debug -emacs -logfile -logger \
- -listener -buildfile -f -D -find' -- $cur ) )
- else
- # available targets completion
- # find which buildfile to use
- buildfile=build.xml
- for (( i=1; i < COMP_CWORD; i++ )); do
- if [[ "${COMP_WORDS[i]}" == -buildfile ]]; then
- buildfile=${COMP_WORDS[i+1]}
- break
- fi
- done
- [ ! -f $buildfile ] && return 0
-
- # parse buildfile for targets
- COMPREPLY=( $( awk -F'"' '/<target name="/ {print $2}' \
- $buildfile | grep "^$cur" )
- $( awk -F"'" "/<target name='/ "'{print $2}' \
- $buildfile | grep "^$cur" )
- $( awk -F'"' '/<target [^n]/ {if ($1 ~ /name=/) { print $2 } else if ($3 ~ /name=/) {print $4} else if ($5 ~ /name=/) {print $6}}' \
- $buildfile | grep "^$cur" ) )
- fi
- }
- have complete-ant-cmd.pl && \
- complete -C complete-ant-cmd.pl -F _ant $filenames ant || \
- complete -F _ant $filenames ant
- }
-
- have nslookup &&
- _nslookup()
- {
- local cur
-
- COMPREPLY=()
- cur=${COMP_WORDS[COMP_CWORD]#-}
-
- COMPREPLY=( $( compgen -P '-' -W 'all class= debug d2 domain= \
- srchlist= defname search port= querytype= \
- type= recurse retry root timeout vc \
- ignoretc' -- $cur ) )
- } &&
- complete -F _nslookup nslookup
-
- # mysqladmin(1) completion
- #
- have mysqladmin &&
- _mysqladmin()
+ _longopt()
{
local cur prev
cur=`_get_cword`
prev=${COMP_WORDS[COMP_CWORD-1]}
- case "$prev" in
- -u)
- COMPREPLY=( $( compgen -u -- $cur ) )
- return 0
- ;;
- *)
- ;;
- esac
-
- COMPREPLY=( $( compgen -W '-# -f -? -C -h -p -P -i -r -E -s -S -t -u \
- -v -V -w' -- $cur ) )
-
- COMPREPLY=( "${COMPREPLY[@]}" \
- $( compgen -W 'create drop extended-status flush-hosts \
- flush-logs flush-status flush-tables \
- flush-threads flush-privileges kill \
- password ping processlist reload refresh \
- shutdown status variables version' \
- -- $cur ) )
- } &&
- complete -F _mysqladmin mysqladmin
-
- # gzip(1) completion
- #
- have gzip &&
- _gzip()
- {
- local cur prev xspec helpopts
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
- helpopts=`_parse_help gzip`
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W "$helpopts -2 -3 -4 -5 -6 -7 -8" \
- -- "$cur" ) )
- return 0
- fi
-
- local IFS=$'\t\n'
-
- xspec="*.?(t)gz"
- if [[ "$prev" == --* ]]; then
- [[ "$prev" == --decompress || \
- "$prev" == --list || \
- "$prev" == --test ]] && xspec="!"$xspec
- [[ "$prev" == --force ]] && xspec=
- elif [[ "$prev" == -* ]]; then
- [[ "$prev" == -*[dlt]* ]] && xspec="!"$xspec
- [[ "$prev" == -*f* ]] && xspec=
- elif [ "$prev" = '>' ]; then
- xspec=
- elif [ "$prev" = '<' ]; then
- xspec=
- fi
-
- _expand || return 0
-
- COMPREPLY=( $( compgen -f -X "$xspec" -- $cur ) \
- $( compgen -d -- $cur ) )
- } &&
- complete -F _gzip $filenames gzip
-
- # bzip2(1) completion
- #
- have bzip2 &&
- _bzip2()
- {
- local cur prev xspec
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-c -d -f -h -k -L -q -s \
- -t -v -V -z -1 -2 -3 -4 -5 -6 -7 -8 -9 \
- --help --decompress --compress --keep --force \
- --test --stdout --quiet --verbose --license \
- --version --small --fast --best' -- $cur ) )
- return 0
- fi
-
- local IFS=$'\t\n'
-
- xspec="*.bz2"
- if [[ "$prev" == --* ]]; then
- [[ "$prev" == --decompress || \
- "$prev" == --list || \
- "$prev" == --test ]] && xspec="!"$xspec
- [[ "$prev" == --compress ]] && xspec=
- elif [[ "$prev" == -* ]]; then
- [[ "$prev" == -*[dt]* ]] && xspec="!"$xspec
- [[ "$prev" == -*z* ]] && xspec=
- fi
-
- _expand || return 0
-
- COMPREPLY=( $( compgen -f -X "$xspec" -- $cur ) \
- $( compgen -d -- $cur ) )
- } &&
- complete -F _bzip2 $filenames bzip2
-
- # openssl(1) completion
- #
- have openssl && {
- _openssl_sections()
- {
- local config
-
- config=/etc/ssl/openssl.cnf
- [ ! -f $config ] && config=/usr/share/ssl/openssl.cnf
- for (( i=2; i < COMP_CWORD; i++ )); do
- if [[ "${COMP_WORDS[i]}" == -config ]]; then
- config=${COMP_WORDS[i+1]}
- break
- fi
- done
- [ ! -f $config ] && return 0
-
- COMPREPLY=( $( awk '/\[.*\]/ {print $2} ' $config | grep "^$cur" ) )
- }
-
- _openssl()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
-
- if [ $COMP_CWORD -eq 1 ]; then
- COMPREPLY=( $( compgen -W 'asn1parse ca ciphers crl crl2pkcs7 \
- dgst dh dhparam dsa dsaparam enc errstr gendh gendsa \
- genrsa nseq passwd pkcs12 pkcs7 pkcs8 rand req rsa \
- rsautl s_client s_server s_time sess_id smime speed \
- spkac verify version x509 md2 md4 md5 mdc2 rmd160 sha \
- sha1 base64 bf bf-cbc bf-cfb bf-ecb bf-ofb cast \
- cast-cbc cast5-cbc cast5-cfb cast5-ecb cast5-ofb des \
- des-cbc des-cfb des-ecb des-ede des-ede-cbc \
- des-ede-cfb des-ede-ofb des-ede3 des-ede3-cbc \
- des-ede3-cfb des-ede3-ofb des-ofb des3 desx rc2 \
- rc2-40-cbc rc2-64-cbc rc2-cbc rc2-cfb rc2-ecb rc2-ofb \
- rc4 rc4-40' -- $cur ) )
- else
- prev=${COMP_WORDS[COMP_CWORD-1]}
- case ${COMP_WORDS[1]} in
- asn1parse)
- case $prev in
- -inform)
- COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )
- return 0
- ;;
- -@(in|out|oid))
- _filedir
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-inform -in -out -noout -offset \
- -length -i -oid -strparse' -- $cur ) )
- fi
- ;;
- ca)
- case $prev in
- -@(config|revoke|cert|in|out|spkac|ss_cert))
- _filedir
- return 0
- ;;
- -outdir)
- _filedir -d
- return 0
- ;;
- -@(name|crlexts|extensions))
- _openssl_sections
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-verbose -config -name \
- -gencrl -revoke -crldays -crlhours -crlexts \
- -startdate -enddate -days -md -policy -keyfile \
- -key -passin -cert -in -out -notext -outdir \
- -infiles -spkac -ss_cert -preserveDN -batch \
- -msie_hack -extensions' -- $cur ) )
- fi
- ;;
- ciphers)
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-v -ssl2 -ssl3 -tls1' -- $cur ) )
- fi
- ;;
- crl)
- case $prev in
- -@(in|out)form)
- COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )
- return 0
- ;;
- -@(in|out|CAfile))
- _filedir
- return 0
- ;;
- -CAPath)
- _filedir -d
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-inform -outform -text -in -out -noout \
- -hash -issuer -lastupdate -nextupdate -CAfile -CApath' -- $cur ) )
- fi
- ;;
- crl2pkcs7)
- case $prev in
- -@(in|out)form)
- COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )
- return 0
- ;;
- -@(in|out))
- _filedir
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-inform -outform -in -out -print_certs' -- $cur ) )
- fi
- ;;
- dgst)
- case $prev in
- -@(out|sign|verify|prvrify|signature))
- _filedir
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-md5 -md4 -md2 -sha1 -sha -mdc2 -ripemd160 -dss1 \
- -c -d -hex -binary -out -sign -verify -prverify -signature' -- $cur ) )
- else
- _filedir
- fi
- ;;
- dsa)
- case $prev in
- -@(in|out)form)
- COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )
- return 0
- ;;
- -@(in|out))
- _filedir
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-inform -outform -in -passin -out -passout -des -des3 -idea -text -noout \
- -modulus -pubin -pubout' -- $cur ) )
- fi
- ;;
- dsaparam)
- case $prev in
- -@(in|out)form)
- COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )
- return 0
- ;;
- -@(in|out|rand))
- _filedir
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-inform -outform -in -out -noout \
- -text -C -rand -genkey' -- $cur ) )
- fi
- ;;
- enc)
- case $prev in
- -@(in|out|kfile))
- _filedir
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-ciphername -in -out -pass \
- -e -d -a -A -k -kfile -S -K -iv -p -P -bufsize -debug' -- $cur ) )
- fi
- ;;
- dhparam)
- case $prev in
- -@(in|out)form)
- COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )
- return 0
- ;;
- -@(in|out|rand))
- _filedir
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-inform -outform -in -out -dsaparam -noout \
- -text -C -2 -5 -rand' -- $cur ) )
- fi
- ;;
- gendsa)
- case $prev in
- -@(out|rand))
- _filedir
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-out -des -des3 -idea -rand' -- $cur ) )
- else
- _filedir
- fi
- ;;
- genrsa)
- case $prev in
- -@(out|rand))
- _filedir
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-out -passout -des -des3 -idea -f4 -3 -rand' -- $cur ) )
- fi
- ;;
- pkcs7)
- case $prev in
- -@(in|out)form)
- COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )
- return 0
- ;;
- -@(in|out))
- _filedir
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-inform -outform -in -out -print_certs -text -noout' -- $cur ) )
- fi
- ;;
- rand)
- case $prev in
- -@(out|rand))
- _filedir
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-out -rand -base64' -- $cur ) )
- fi
- ;;
- req)
- case "$prev" in
- -@(in|out|key)form)
- COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )
- return 0
- ;;
-
- -@(in|out|rand|key|keyout|config))
- _filedir
- return 0
- ;;
- -extensions)
- _openssl_sections
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-inform -outform -in \
- -passin -out -passout -text -noout -verify \
- -modulus -new -rand -newkey -newkey -nodes \
- -key -keyform -keyout -md5 -sha1 -md2 -mdc2 \
- -config -x509 -days -asn1-kludge -newhdr \
- -extensions -reqexts section' -- $cur ) )
- fi
- ;;
- rsa)
- case $prev in
- -@(in|out)form)
- COMPREPLY=( $( compgen -W 'DER NET PEM' -- $cur ) )
- return 0
- ;;
- -@(in|out))
- _filedir
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-inform -outform -in -passin -out -passout \
- -sgckey -des -des3 -idea -text -noout -modulus -check -pubin \
- -pubout -engine' -- $cur ) )
- fi
- ;;
- rsautl)
- case $prev in
- -@(in|out|inkey))
- _filedir
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-in -out -inkey -pubin -certin -sign -verify \
- -encrypt -decrypt -pkcs -ssl -raw -hexdump -asn1parse' -- $cur ) )
- fi
- ;;
- s_client)
- case $prev in
- -connect)
- _known_hosts
- return 0
- ;;
- -@(cert|key|CAfile|rand))
- _filedir
- return 0
- ;;
- -CApath)
- _filedir -d
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-connect -verify -cert -key -CApath -CAfile \
- -reconnect -pause -showcerts -debug -msg -nbio_test -state -nbio \
- -crlf -ign_eof -quiet -ssl2 -ssl3 -tls1 -no_ssl2 -no_ssl3 -no_tls1 \
- -bugs -cipher -starttls -engine -rand' -- $cur ) )
- fi
- ;;
- s_server)
- case $prev in
- -@(cert|key|dcert|dkey|dhparam|CAfile|rand))
- _filedir
- return 0
- ;;
- -CApath)
- _filedir -d
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-accept -context -verify -Verify -cert -key \
- -dcert -dkey -dhparam -nbio -nbio_test -crlf -debug -msg -state -CApath \
- -CAfile -nocert -cipher -quiet -no_tmp_rsa -ssl2 -ssl3 -tls1 -no_ssl2 \
- -no_ssl3 -no_tls1 -no_dhe -bugs -hack -www -WWW -HTTP -engine -id_prefix \
- -rand' -- $cur ) )
- fi
- ;;
- s_time)
- case $prev in
- -connect)
- _known_hosts
- return 0
- ;;
- -@(cert|key|CAfile))
- _filedir
- return 0
- ;;
- -CApath)
- _filedir -d
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-connect -www -cert -key -CApath -CAfile -reuse \
- -new -verify -nbio -time -ssl2 -ssl3 -bugs -cipher' -- $cur ) )
- fi
- ;;
-
- sess_id)
- case $prev in
- -@(in|out)form)
- COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )
- return 0
- ;;
- -@(in|out))
- _filedir
- return 0
- ;;
- esac
-
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-inform -outform -in -out -text -noout \
- -context ID' -- $cur ) )
- fi
- ;;
- smime)
- case $prev in
- -@(in|out)form)
- COMPREPLY=( $( compgen -W 'SMIME DER PEM' -- $cur ) )
- return 0
- ;;
- -@(in|out|certfile|signer|recip|inkey|content|rand))
- _filedir
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-encrypt -decrypt -sign -verify -pk7out -des -des3 \
- -rc2-40 -rc2-64 -rc2-128 -aes128 -aes192 -aes256 -in -certfile -signer \
- -recip -inform -passin -inkey -out -outform -content -to -from -subject \
- -text -rand' -- $cur ) )
- else
- _filedir
- fi
- ;;
- speed)
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-engine' -- $cur ) )
- else
- COMPREPLY=( $( compgen -W 'md2 mdc2 md5 hmac sha1 rmd160 idea-cbc \
- rc2-cbc rc5-cbc bf-cbc des-cbc des-ede3 rc4 rsa512 rsa1024 rsa2048 \
- rsa4096 dsa512 dsa1024 dsa2048 idea rc2 des rsa blowfish' -- $cur ) )
- fi
- ;;
- verify)
- case $prev in
- -@(CAfile|untrusted))
- _filedir
- return 0
- ;;
- -CApath)
- _filedir -d
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-CApath -CAfile -purpose -untrusted -help -issuer_checks \
- -verbose -certificates' -- $cur ) )
- else
- _filedir
- fi
- ;;
- x509)
- case "$prev" in
- -@(in|out|CA|CAkey|CAserial|extfile))
- _filedir
- return 0
- ;;
- -@(in|out)form)
- COMPREPLY=( $( compgen -W 'DER PEM NET' -- $cur ) )
- return 0
- ;;
- -@(key|CA|CAkey)form)
- COMPREPLY=( $( compgen -W 'DER PEM' -- $cur ) )
- return 0
- ;;
- -extensions)
- _openssl_sections
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-inform -outform \
- -keyform -CAform -CAkeyform -in -out \
- -serial -hash -subject -issuer -nameopt \
- -email -startdate -enddate -purpose \
- -dates -modulus -fingerprint -alias \
- -noout -trustout -clrtrust -clrreject \
- -addtrust -addreject -setalias -days \
- -set_serial -signkey -x509toreq -req \
- -CA -CAkey -CAcreateserial -CAserial \
- -text -C -md2 -md5 -sha1 -mdc2 -clrext \
- -extfile -extensions -engine' -- $cur ) )
- fi
+ if _split_longopt; then
+ case "$prev" in
+ *[Dd][Ii][Rr]*)
+ _filedir -d
;;
- @(md5|md4|md2|sha1|sha|mdc2|ripemd160))
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-c -d' -- $cur ) )
- else
- _filedir
- fi
+ *[Ff][Ii][Ll][Ee]*)
+ _filedir
;;
esac
- fi
-
- return 0
- }
- complete -F _openssl $default openssl
- }
-
- # screen(1) completion
- #
- have screen &&
- _screen()
- {
- local cur prev preprev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- [ "$COMP_CWORD" -ge 2 ] && preprev=${COMP_WORDS[COMP_CWORD-2]}
-
- if [ "$preprev" = "-d" -o "$preprev" = "-D" -a "$prev" = "-r" -o \
- "$prev" = "-R" ]; then
- # list all
- COMPREPLY=( $( command screen -ls | \
- sed -ne 's|^['$'\t'']\+\('$cur'[0-9]\+\.[^'$'\t'']\+\).*$|\1|p' ) )
- else
- case "$prev" in
- -[rR])
- # list detached
- COMPREPLY=( $( command screen -ls | \
- sed -ne 's|^['$'\t'']\+\('$cur'[0-9]\+\.[^'$'\t'']\+\).*Detached.*$|\1|p' ) )
- ;;
- -[dDx])
- # list attached
- COMPREPLY=( $( command screen -ls | \
- sed -ne 's|^['$'\t'']\+\('$cur'[0-9]\+\.[^'$'\t'']\+\).*Attached.*$|\1|p' ) )
- ;;
- -s)
- # shells
- COMPREPLY=( $( grep ^${cur:-[^#]} /etc/shells ) )
- ;;
- *)
- ;;
- esac
- fi
-
- return 0
- } &&
- complete -F _screen $default screen
-
- # lftp(1) bookmark completion
- #
- have lftp &&
- _lftp()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- if [ $COMP_CWORD -eq 1 ] && [ -f ~/.lftp/bookmarks ]; then
- COMPREPLY=( $( compgen -W '$( sed -ne "s/^\(.*\)'$'\t''.*$/\1/p" \
- ~/.lftp/bookmarks )' -- $cur ) )
- fi
-
- return 0
- } &&
- complete -F _lftp $default lftp
-
- # ncftp(1) bookmark completion
- #
- have ncftp &&
- _ncftp()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- if [ $COMP_CWORD -eq 1 ] && [ -f ~/.ncftp/bookmarks ]; then
- COMPREPLY=( $( compgen -W '$( sed -ne "s/^\([^,]\{1,\}\),.*$/\1/p" \
- ~/.ncftp/bookmarks )' -- $cur ) )
- fi
-
- return 0
- } &&
- complete -F _ncftp $default ncftp
-
- # gdb(1) completion
- #
- have gdb &&
- _gdb()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- if [ $COMP_CWORD -eq 1 ]; then
- local IFS
- if [[ "$cur" == */* ]]; then
- # compgen -c works as expected if $cur contains any slashes.
- IFS=$'\n'
- COMPREPLY=( $( PATH="$PATH:." compgen -d -c -- "$cur" ) )
- else
- # otherwise compgen -c contains Bash's built-in commands,
- # functions and aliases. Thus we need to retrieve the program
- # names manually.
- IFS=":"
- local path_array=( $(echo "$PATH" | sed 's/::\+/:/g;s/^:\|:$//g') )
- IFS=$'\n'
- COMPREPLY=( $( compgen -d -W '$(find "${path_array[@]}" . \
- -mindepth 1 -maxdepth 1 -not -type d -executable -printf "%f\\n" 2>/dev/null)' \
- -- "$cur" ) )
- fi
- elif [ $COMP_CWORD -eq 2 ]; then
- prev=${prev##*/}
- COMPREPLY=( $( compgen -fW "$( command ps axo comm,pid | \
- awk '{if ($1 ~ /^'"$prev"'/) print $2}' ) )" \
- -- "$cur" ) )
- fi
- } &&
- complete -F _gdb $default gdb
-
- # Postgresql completion
- #
- have psql && {
- _pg_databases()
- {
- return
- COMPREPLY=( $( psql -l 2>/dev/null | \
- sed -e '1,/^-/d' -e '/^(/,$d' | \
- awk '{print $1}' | grep "^$cur" ) )
- }
-
- _pg_users()
- {
- #COMPREPLY=( $( psql -qtc 'select usename from pg_user' template1 2>/dev/null | \
- # grep "^ $cur" ) )
- #[ ${#COMPREPLY[@]} -eq 0 ] && COMPREPLY=( $( compgen -u -- $cur ) )
- COMPREPLY=( $( compgen -u -- $cur ) )
- }
-
- # createdb(1) completion
- #
- _createdb()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(h|-host=))
- _known_hosts
return 0
- ;;
- -@(U|-username=))
- _pg_users
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-D -T -E -h -p -U -W -e -q \
- --location= --template= --encoding= --host= --port= \
- --username= --password --echo --quiet --help' -- $cur ))
- else
- _pg_databases
fi
- }
- complete -F _createdb $default createdb
-
- # dropdb(1) completion
- #
- _dropdb()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(h|-host=))
- _known_hosts
- return 0
- ;;
- -@(U|-username=))
- _pg_users
- return 0
- ;;
- esac
if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-h -p -U -W -e -q \
- --host= --port= --username= --password \
- --interactive --echo --quiet --help' -- $cur ) )
- else
- _pg_databases
- fi
- }
- complete -F _dropdb $default dropdb
-
- # psql(1) completion
- #
- _psql()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -h|--host)
- _known_hosts
- return 0
- ;;
- -U|--username)
- _pg_users
- return 0
- ;;
- -d|--dbname)
- _pg_databases
- return 0
- ;;
- -@(o|f)|--output|--file)
- _filedir
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- # return list of available options
- COMPREPLY=( $( compgen -W '-a --echo-all -A --no-align \
- -c --command -d --dbname -e --echo-queries \
- -E --echo-hidden -f --file -F --filed-separator \
- -h --host -H --html -l --list -n -o --output \
- -p --port -P --pset -q -R --record-separator \
- -s --single-step -S --single-line -t --tuples-only \
- -T --table-attr -U --username -v --variable \
- -V --version -W --password -x --expanded -X --nopsqlrc \
- -? --help ' -- $cur ) )
- else
- # return list of available databases
- _pg_databases
- fi
- }
- complete -F _psql $default psql
- }
-
- _longopt()
- {
- local cur opt
-
- cur=`_get_cword`
-
- if [[ "$cur" == --*=* ]]; then
- opt=${cur%%=*}
- # cut backslash that gets inserted before '=' sign
- opt=${opt%\\*}
- cur=${cur#*=}
- _filedir
- # FIXME: see #297065... adding "-o nospace" (or $nospace),
- # should do the trick, but seems not working... ideas?
- COMPREPLY=( $( compgen -P "$opt=" -W '${COMPREPLY[@]}' -- $cur))
- return 0
- fi
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( $1 --help 2>&1 | sed -e '/--/!d' \
- -e 's/.*\(--[-A-Za-z0-9]\+=\?\).*/\1/' | \
- command grep "^$cur" | sort -u ) )
+ COMPREPLY=( $( compgen -W "$( $1 --help 2>&1 | sed -e '/--/!d' \
+ -e 's/.*\(--[-A-Za-z0-9]\+\).*/\1/' |sort -u )"\
+ -- "$cur" ) )
elif [[ "$1" == rmdir ]]; then
_filedir -d
else
@@@ -4308,1438 -1525,12 +1524,12 @@@ for i in a2ps autoconf automake bc gpro
have $i && complete -F _longopt $filenames $i
done
- # These commands use filenames, so '-o filenames' is not needed.
+ # These commands do not use filenames, so '-o filenames' is not needed.
for i in env netstat seq uname units wget; do
have $i && complete -F _longopt $default $i
done
unset i
- # gcc(1) completion
- #
- # The only unusual feature is that we don't parse "gcc --help -v" output
- # directly, because that would include the options of all the other backend
- # tools (linker, assembler, preprocessor, etc) without any indication that
- # you cannot feed such options to the gcc driver directly. (For example, the
- # linker takes a -z option, but you must type -Wl,-z for gcc.) Instead, we
- # ask the driver ("g++") for the name of the compiler ("cc1"), and parse the
- # --help output of the compiler.
- #
- have gcc &&
- _gcc()
- {
- local cur cc backend
-
- COMPREPLY=()
- cur=`_get_cword`
-
- _expand || return 0
-
- case "$1" in
- gcj)
- backend=jc1
- ;;
- gpc)
- backend=gpc1
- ;;
- *77)
- backend=f771
- ;;
- *)
- backend=cc1 # (near-)universal backend
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- cc=$( $1 -print-prog-name=$backend )
- # sink stderr:
- # for C/C++/ObjectiveC it's useless
- # for FORTRAN/Java it's an error
- COMPREPLY=( $( $cc --help 2>/dev/null | tr '\t' ' ' | \
- sed -e '/^ *-/!d' -e 's/ *-\([^ ]*\).*/-\1/' | \
- command grep "^$cur" | sort -u ) )
- else
- _filedir
- fi
- } &&
- complete $filenames -F _gcc gcc g++ c++ g77 gcj gpc
- [ $UNAME = GNU -o $UNAME = Linux -o $UNAME = Cygwin ] && \
- [ -n "${have:-}" ] && complete $filenames -F _gcc cc
-
- # Linux cardctl(8) completion
- #
- have cardctl &&
- _cardctl()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- if [ $COMP_CWORD -eq 1 ]; then
- COMPREPLY=( $( compgen -W 'status config ident suspend \
- resume reset eject insert scheme' \
- -- $cur ) )
- fi
- } &&
- complete -F _cardctl cardctl
-
- # This function is required by _dpkg() and _dpkg-reconfigure()
- #
- # TODO: Ubuntu (and Debian) folks removed the "have grep-status" part. In my Debian I got it,
- # and I believe it's ok if we leave it like it is now. Was that removed because
- # of Ubuntu's (and Debian's? :() inner weirdness? :) -- David (hanska-guest)
- have dpkg && {
- #have grep-status && {
- #_comp_dpkg_installed_packages()
- #{
- # grep-status -P -e "^$1" -a -FStatus 'install ok installed' -n -s Package
- #}
- #} || {
- _comp_dpkg_installed_packages()
- {
- grep -A 1 "Package: $1" /var/lib/dpkg/status | \
- grep -B 1 -Ee "ok installed|half-installed|unpacked| \
- half-configured|config-files" \
- -Ee "^Essential: yes" | \
- grep "Package: $1" | cut -d\ -f2
- }
- #}
-
- # Debian dpkg(8) completion
- #
- _dpkg()
- {
- local cur prev i
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
- i=$COMP_CWORD
-
- _expand || return 0
-
- # find the last option flag
- if [[ $cur != -* ]]; then
- while [[ $prev != -* && $i != 1 ]]; do
- i=$((i-1))
- prev=${COMP_WORDS[i-1]}
- done
- fi
-
- case "$prev" in
- -@(c|i|A|I|f|e|x|X|-@(install|unpack|record-avail|contents|info|fsys-tarfile|field|control|extract)))
- _filedir '?(u)deb'
- return 0
- ;;
- -@(b|-build))
- _filedir -d
- return 0
- ;;
- -@(s|p|l|-@(status|print-avail|list)))
- COMPREPLY=( $( apt-cache pkgnames $cur 2>/dev/null ) )
- return 0
- ;;
- -@(S|-search))
- _filedir
- return 0
- ;;
- -@(r|L|P|-@(remove|purge|listfiles)))
- COMPREPLY=( $( _comp_dpkg_installed_packages $cur ) )
- return 0
- ;;
- *)
-
- COMPREPLY=( $( compgen -W '-i --install --unpack -A --record-avail \
- --configure -r --remove -P --purge --get-selections \
- --set-selections --update-avail --merge-avail \
- --clear-avail --command-fd --forget-old-unavail -s \
- --status -p --print-avail -L --listfiles -l --list \
- -S --search -C --audit --print-architecture \
- --print-gnu-build-architecture \
- --print-installation-architecture \
- --compare-versions --help --version --force-help \
- --force-all --force-auto-select --force-downgrade \
- --force-configure-any --force-hold --force-bad-path \
- --force-not-root --force-overwrite \
- --force-overwrite-diverted --force-bad-verify \
- --force-depends-version --force-depends \
- --force-confnew --force-confold --force-confdef \
- --force-confmiss --force-conflicts --force-architecture\
- --force-overwrite-dir --force-remove-reinstreq \
- --force-remove-essential -Dh \
- --debug=help --licence --admindir= --root= --instdir= \
- -O --selected-only -E --skip-same-version \
- -G --refuse-downgrade -B --auto-deconfigure \
- --no-debsig --no-act -D --debug= --status-fd \
- -b --build -I --info -f --field -c --contents \
- -x --extract -X --vextract --fsys-tarfile -e --control \
- --ignore-depends= --abort-after' -- $cur ) )
- ;;
- esac
-
-
- }
- complete -F _dpkg $filenames dpkg dpkg-deb
- }
-
- # Debian GNU dpkg-reconfigure(8) completion
- #
- have dpkg-reconfigure &&
- _dpkg_reconfigure()
- {
- local cur prev opt
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
-
- case "$prev" in
- -@(f|-frontend))
- opt=( $( echo /usr/share/perl5/Debconf/FrontEnd/* ) )
- opt=( ${opt[@]##*/} )
- opt=( ${opt[@]%.pm} )
- COMPREPLY=( $( compgen -W '${opt[@]}' -- $cur ) )
- return 0
- ;;
- -@(p|-priority))
- COMPREPLY=( $( compgen -W 'low medium high critical' -- $cur ) )
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-f --frontend -p --priority -a --all \
- -u --unseen-only -h --help -s --showold \
- --force --terse' -- $cur ) )
- else
- COMPREPLY=( $( _comp_dpkg_installed_packages $cur ) )
- fi
- } &&
- complete -F _dpkg_reconfigure $default dpkg-reconfigure
-
- # Debian dpkg-source completion
- #
- have dpkg-source &&
- _dpkg_source()
- {
- local cur prev options work i action packopts unpackopts
-
- packopts="-c -l -F -V -T -D -U -W -E -sa -i -I -sk -sp -su -sr -ss -sn -sA -sK -sP -sU -sR"
- unpackopts="-sp -sn -su"
- options=`echo "-x -b $packopts $unpackopts" | xargs echo | sort -u | xargs echo`
-
- COMPREPLY=()
- if [ "$1" != "dpkg-source" ]; then
- return 1
- fi
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
- action="options"
- for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do
- if [[ ${COMP_WORDS[$i]} == "-x" ]]; then
- action=unpack
- elif [[ ${COMP_WORDS[$i]} == "-b" ]]; then
- action=pack
- elif [[ ${COMP_WORDS[$i]} == "-h" ]]; then
- action=help
- fi
- done
- # if currently seeing a complete option, return just itself.
- for i in $options; do
- if [ "$cur" = "$i" ]; then
- COMPREPLY=( "$cur" )
- return 0
- fi
- done
- case "$action" in
- "unpack")
- if [ "$cur" = "-" -o "$cur" = "-s" ]; then
- COMPREPLY=( $unpackopts )
- return 0
- fi
- case "$prev" in
- "-x")
- COMPREPLY=( $( compgen -d -- "$cur" ) \
- $( compgen -f -X '!*.dsc' -- "$cur" ) )
- return 0
- ;;
- *)
- COMPREPLY=( $unpackopts $(compgen -d -f -- "$cur" ) )
- return 0
- ;;
- esac
- return 0
- ;;
- "pack")
- if [ "$cur" = "-" ]; then
- COMPREPLY=( $packopts )
- return 0
- fi
- if [ "$cur" = "-s" ]; then
- COMPREPLY=( "-sa" "-sk" "-sp" "-su" "-sr" "-ss" "-sn" \
- "-sA" "-sK" "-sP" "-sU" "-sR" )
- return 0
- fi
- case "$prev" in
- "-b")
- COMPREPLY=( $( compgen -d -- "$cur" ) )
- return 0
- ;;
- "-c"|"-l"|"-T"|"-i"|"-I")
- # -c: get controlfile
- # -l: get per-version info from this file
- # -T: read variables here, not debian/substvars
- # -i: <regexp> filter out files to ignore diffs of.
- # -I: filter out files when building tarballs.
- # return directory names and file names
- COMPREPLY=( $( compgen -d -f ) )
- return 0
- ;;
- "-F")
- # -F: force change log format
- COMPREPLY=( $( ( cd /usr/lib/dpkg/parsechangelog; compgen -f "$cur" ) ) )
- return 0
- ;;
- "-V"|"-D")
- # -V: set a substitution variable
- # we don't know anything about possible variables or values
- # so we don't try to suggest any completion.
- COMPREPLY=()
- return 0
- ;;
- "-D")
- # -D: override or add a .dsc field and value
- # if $cur doesn't contain a = yet, suggest variable names
- if echo -- "$cur" | grep -q "="; then
- # $cur contains a "="
- COMPREPLY=()
- return 0
- else
- COMPREPLY=( Format Source Version Binary Maintainer Uploader Architecture Standards-Version Build-Depends Files )
- return 0
- fi
- ;;
- "-U")
- # -U: remove a field
- # Suggest possible fieldnames
- COMPREPLY=( Format Source Version Binary Maintainer Uploader Architecture Standards-Version Build-Depends Files )
- return 0
- ;;
- *)
- COMPREPLY=( $packopts )
- return 0
- ;;
- esac
- return 0
- ;;
- *)
- # if seeing a partial option, return possible completions.
- if [ "$cur" = "-s" ]; then
- COMPREPLY=( "-sa" "-sk" "-sp" "-su" "-sr" "-ss" "-sn" \
- "-sA" "-sK" "-sP" "-sU" "-sR" )
- return 0
- fi
- # else return all possible options.
- COMPREPLY=( $options )
- return 0
- ;;
- esac
- } &&
- complete -F _dpkg_source dpkg-source
-
- # Debian Linux dselect(8) completion.
- #
- have dselect &&
- _dselect()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- --admindir)
- _filedir -d
- return 0
- ;;
-
- -@(D|debug))
- _filedir
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--admindir --help --version --licence \
- --license --expert --debug' -- $cur ) )
- else
- COMPREPLY=( $( compgen -W 'access update select install config \
- remove quit' -- $cur ) )
- fi
-
-
- return 0
- } &&
- complete -F _dselect $filenames dselect
-
- # Java completion
- #
-
- # available path elements completion
- have java && {
- _java_path()
- {
- cur=${cur##*:}
- _filedir '@(jar|zip)'
- }
-
- # exact classpath determination
- _java_find_classpath()
- {
- local i
-
- # search first in current options
- for (( i=1; i < COMP_CWORD; i++ )); do
- if [[ "${COMP_WORDS[i]}" == -@(cp|classpath) ]]; then
- classpath=${COMP_WORDS[i+1]}
- break
- fi
- done
-
- # default to environment
- [ -z "$classpath" ] && classpath=$CLASSPATH
-
- # default to current directory
- [ -z "$classpath" ] && classpath=.
- }
-
- # exact sourcepath determination
- _java_find_sourcepath()
- {
- local i
-
- # search first in current options
- for (( i=1; i < COMP_CWORD; i++ )); do
- if [[ "${COMP_WORDS[i]}" == -sourcepath ]]; then
- sourcepath=${COMP_WORDS[i+1]}
- break
- fi
- done
-
- # default to classpath
- if [ -z "$sourcepath" ]; then
- _java_find_classpath
- sourcepath=$classpath
- fi
- }
-
- # available classes completion
- _java_classes()
- {
- local classpath i
-
- # find which classpath to use
- _java_find_classpath
-
- # convert package syntax to path syntax
- cur=${cur//.//}
- # parse each classpath element for classes
- for i in ${classpath//:/ }; do
- if [ -r $i ] && [[ "$i" == *.@(jar|zip) ]]; then
- if type zipinfo &> /dev/null; then
- COMPREPLY=( "${COMPREPLY[@]}" $( zipinfo -1 \
- "$i" | grep "^$cur" | grep '\.class$' | \
- grep -v "\\$" ) )
- else
- COMPREPLY=( "${COMPREPLY[@]}" $( jar tf "$i" \
- "$cur" | grep "\.class$" | grep -v "\\$" ) )
- fi
-
- elif [ -d $i ]; then
- i=${i%/}
-
- # See bug #496828
- COMPREPLY=( "${COMPREPLY[@]}" $( find "$i" -type f \
- -maxdepth 1 -path "$i/$cur*.class" 2>/dev/null | \
- grep -v "\\$" | sed -e "s|^$i/||" ) )
-
- # FIXME: if we have foo.class and foo/, the completion
- # returns "foo/"... how to give precedence to files
- # over directories?
- fi
- done
-
- # remove class extension
- COMPREPLY=( ${COMPREPLY[@]%.class} )
- # convert path syntax to package syntax
- COMPREPLY=( ${COMPREPLY[@]//\//.} )
- }
-
- # available packages completion
- _java_packages()
- {
- local sourcepath i
-
- # find which sourcepath to use
- _java_find_sourcepath
-
- # convert package syntax to path syntax
- cur=${cur//.//}
- # parse each sourcepath element for packages
- for i in ${sourcepath//:/ }; do
- if [ -d $i ]; then
- COMPREPLY=( "${COMPREPLY[@]}" $( command ls -F -d \
- $i/$cur* 2>/dev/null | sed -e 's|^'$i'/||' ) )
- fi
- done
- # keep only packages
- COMPREPLY=( $( echo "${COMPREPLY[@]}" | tr " " "\n" | grep "/$" ) )
- # remove packages extension
- COMPREPLY=( ${COMPREPLY[@]%/} )
- # convert path syntax to package syntax
- cur=${COMPREPLY[@]//\//.}
- }
-
- # java completion
- #
- _java()
- {
- local cur prev i
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- for ((i=1; i < $COMP_CWORD; i++)); do
- case ${COMP_WORDS[$i]} in
- -cp|-classpath)
- ((i++)) # skip the classpath string.
- ;;
- -*)
- # this is an option, not a class/jarfile name.
- ;;
- *)
- # once we've seen a class, just do filename completion
- _filedir
- return 0
- ;;
- esac
- done
-
- case $prev in
- -@(cp|classpath))
- _java_path
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- # relevant options completion
- COMPREPLY=( $( compgen -W '-client -hotspot -server -classic \
- -cp -classpath -D -verbose -verbose:class \
- -verbose:gc -version:jni -version \
- -showversion -? -help -X -jar \
- -ea -enableassertions -da -disableassertions \
- -esa -enablesystemassertions \
- -dsa -disablesystemassertions ' -- $cur ) )
- else
- if [[ "$prev" == -jar ]]; then
- # jar file completion
- _filedir jar
- else
- # classes completion
- _java_classes
- fi
- fi
- }
- complete -F _java $filenames java
- }
-
- # javadoc completion
- #
- have javadoc &&
- _javadoc()
- {
- COMPREPLY=()
- local cur prev
-
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case $prev in
- -@(overview|helpfile|stylesheetfile))
- _filedir
- return 0
- ;;
- -d)
- _filedir -d
- return 0
- ;;
- -@(classpath|bootclasspath|docletpath|sourcepath|extdirs))
- _java_path
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- # relevant options completion
- COMPREPLY=( $( compgen -W '-overview -public -protected \
- -package -private -help -doclet -docletpath \
- -sourcepath -classpath -exclude -subpackages \
- -breakiterator -bootclasspath -source -extdirs \
- -verbose -locale -encoding -J -d -use -version \
- -author -docfilessubdirs -splitindex \
- -windowtitle -doctitle -header -footer -bottom \
- -link -linkoffline -excludedocfilessubdir \
- -group -nocomment -nodeprecated -noqualifier \
- -nosince -nodeprecatedlist -notree -noindex \
- -nohelp -nonavbar -quiet -serialwarn -tag \
- -taglet -tagletpath -charset -helpfile \
- -linksource -stylesheetfile -docencoding' -- \
- $cur ) )
- else
- # source files completion
- _filedir java
- # packages completion
- _java_packages
- fi
- } &&
- complete -F _javadoc $filenames javadoc
-
- # javac completion
- #
- have javac &&
- _javac()
- {
- COMPREPLY=()
- local cur prev
-
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case $prev in
- -d)
- _filedir -d
- return 0
- ;;
- -@(classpath|bootclasspath|sourcepath|extdirs))
- _java_path
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- # relevant options completion
- COMPREPLY=( $( compgen -W '-g -g:none -g:lines -g:vars\
- -g:source -O -nowarn -verbose -deprecation -classpath\
- -sourcepath -bootclasspath -extdirs -d -encoding -source\
- -target -help' -- $cur ) )
- else
- # source files completion
- _filedir java
- fi
- } &&
- complete -F _javac $filenames javac
-
- # PINE address-book completion
- #
- have pine &&
- _pineaddr()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- COMPREPLY=( $( compgen -W '$( awk "{print \$1}" ~/.addressbook 2>/dev/null)' \
- -- $cur ) )
- } &&
- complete -F _pineaddr $default pine
-
- # mutt completion
- #
- # Mutt doesn't have an "addressbook" like Pine, but it has aliases and
- # a "query" function to retrieve addresses, so that's what we use here.
- have mutt || have muttng && {
- _muttaddr()
- {
- _muttaliases
- _muttquery
-
- cur=`_get_cword`
- COMPREPLY=( "${COMPREPLY[@]}" $( compgen -u -- $cur ) )
-
- return 0
- }
-
- _muttconffiles()
- {
- local file sofar
- local -a newconffiles
-
- sofar=" $1 "
- shift
- while [[ "$1" ]]; do
- newconffiles=( $(sed -rn 's|^source[[:space:]]+([^[:space:]]+).*$|\1|p' $(eval echo $1) ) )
- for file in "${newconffiles[@]}"; do
- [[ ! "$file" ]] || [[ "${sofar/ ${file} / }" != "$sofar" ]] &&
- continue
- sofar="$sofar $file"
- sofar=" $(eval _muttconffiles \"$sofar\" $file) "
- done
- shift
- done
- echo $sofar
- }
-
- _muttaliases()
- {
- local cur muttrc
- local -a conffiles aliases
- cur=`_get_cword =`
-
- [ -f ~/.${muttcmd}/${muttcmd}rc ] && muttrc="~/.${muttcmd}/${muttcmd}rc"
- [ -f ~/.${muttcmd}rc ] && muttrc="~/.${muttcmd}rc"
- [ -z "$muttrc" ] && return 0
-
- conffiles=( $(eval _muttconffiles $muttrc $muttrc) )
- aliases=( $( sed -rn 's|^alias[[:space:]]+([^[:space:]]+).*$|\1|p' \
- $(eval echo "${conffiles[@]}") ) )
- COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "${aliases[*]}" -- $cur ) )
-
- return 0
- }
-
- _muttquery()
- {
- local cur querycmd
- local -a queryresults
- cur=`_get_cword`
-
- querycmd="$( $muttcmd -Q query_command | sed -r 's|^query_command=\"(.*)\"$|\1|; s|%s|'$cur'|' )"
- if [ -z "$cur" -o -z "$querycmd" ]; then
- queryresults=()
- else
- queryresults=( $( $querycmd | \
- sed -nr '2,$s|^([^[:space:]]+).*|\1|p' ) )
- fi
-
- COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "${queryresults[*]}" \
- -- $cur ) )
-
- return 0
- }
-
- _muttfiledir()
- {
- local cur folder spoolfile
- cur=`_get_cword`
-
- # This is currently not working so well. Perhaps this function should
- # just call _filedir() for the moment.
- if [[ $cur == [=+]* ]]; then
- folder="$( $muttcmd -Q folder | sed -r 's|^folder=\"(.*)\"$|\1|' )"
- : folder:=~/Mail
-
- # Match any file in $folder beginning with $cur
- # (minus the leading '=' sign).
- COMPREPLY=( $( compgen -f -- "$folder/${cur:1}" ) )
- COMPREPLY=( ${COMPREPLY[@]#$folder/} )
- return 0
- elif [ "$cur" == !* ]; then
- spoolfile="$( $muttcmd -Q spoolfile | sed -r 's|^spoolfile=\"(.*)\"$|\1|' )"
- [ ! -z "$spoolfile" ] && eval cur="${cur/^!/$spoolfile}";
- fi
- _filedir
-
- return 0
- }
-
- _mutt()
- {
- local cur prev
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- COMPREPLY=()
-
- [ ${COMP_WORDS[0]} == muttng ] && muttcmd="muttng" || muttcmd="mutt"
-
- case "$cur" in
- -*)
- COMPREPLY=( $( compgen -W '-A -a -b -c -e -f -F -H -i -m -n \
- -p -Q -R -s -v -x -y -z -Z -h' \
- -- $cur ) )
- return 0
- ;;
- *)
- case "$prev" in
- -@(a|f|F|H|i))
- _muttfiledir
- return 0
- ;;
- -A)
- _muttaliases
- return 0
- ;;
- -@(e|m|Q|s|h|p|R|v|y|z|Z))
- return 0
- ;;
- *)
- _muttaddr
- return 0
- ;;
- esac
- ;;
- esac
-
- }
- complete -F _mutt $default $filenames mutt muttng
- }
-
- _configure_func()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- # if $COMP_CONFIGURE_HINTS is not null, then completions of the form
- # --option=SETTING will include 'SETTING' as a contextual hint
- [[ "$cur" != -* ]] && return 0
-
- if [ -n "$COMP_CONFIGURE_HINTS" ]; then
- COMPREPLY=( $( $1 --help 2>&1 | awk '/^ --[A-Za-z]/ { print $1; if ($2 ~ /--[A-Za-z]/) print $2 }' | sed -e 's/[[,].*//g' | grep ^$cur ) )
- else
- COMPREPLY=( $( $1 --help 2>&1 | awk '/^ --[A-Za-z]/ { print $1; if ($2 ~ /--[A-Za-z]/) print $2 }' | sed -e 's/[[,=].*//g' | grep ^$cur ) )
- fi
- }
- complete -F _configure_func $default configure
-
- # Debian reportbug(1) completion
- #
- have reportbug &&
- _reportbug()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -f|--filename|-i|--include|--mta|-o|--output)
- _filedir
- return 0
- ;;
- -B|--bts)
- COMPREPLY=( $( compgen -W "debian guug kde mandrake help" -- \
- $cur ))
- return 0
- ;;
- -e|--editor|--mua)
- COMP_WORDS=(COMP_WORDS[0] $cur)
- COMP_CWORD=1
- _command
- return 0
- ;;
- --mode)
- COMPREPLY=( $( compgen -W "novice standard expert" -- $cur ) )
- return 0
- ;;
- -S|--severity)
- COMPREPLY=( $( compgen -W "grave serious important normal \
- minor wishlist" -- $cur ) )
- return 0
- ;;
- -u|--ui|--interface)
- COMPREPLY=( $( compgen -W "newt text gnome" -- $cur ) )
- return 0
- ;;
- -t|--type)
- COMPREPLY=( $( compgen -W "gnats debbugs" -- $cur ) )
- return 0
- ;;
- -T|--tags)
- COMPREPLY=( $( compgen -W "none \
- woody potato sarge sarge-ignore etch etch-ignore \
- lenny lenny-ignore sid experimental confirmed \
- d-i fixed fixed-in-experimental fixed-upstream \
- help l10n moreinfo patch pending security \
- unreproducible upstream wontfix ipv6 lfs" -- $cur ))
- return 0
- ;;
- *)
- ;;
- esac
-
- COMPREPLY=($( compgen -W '-h --help -v --version -a --af -b \
- --no-query-bts --query-bts -B --bts -c --configure \
- --no-config-files --check-available -d --debug \
- --no-check-available -e --editor --email -f \
- --filename -g --gnupg -H --header -i --include -j \
- --justification -l --ldap --no-ldap -L --list-cc -m \
- --maintonly --mode --mua --mta --mutt -n --mh --nmh \
- -o --output -p --print -P --pgp --proxy --http_proxy\
- -q --quiet -Q --query-only --realname --report-quiet \
- --reply-to --replyto -s --subject -S --severity \
- --smtphost -t --type -T --tags --template -V -x \
- --no-cc --package-version -z --no-compress \
- --ui --interface -u \
- wnpp boot-floppies kernel bugs.debian.org \
- cdimage.debian.org general installation-reports \
- listarchives lists.debian.org mirrors nm.debian.org \
- press project qa.debian.org release-notes \
- security.debian.org tech-ctte upgrade-reports \
- www.debian.org' -- $cur ) \
- $( apt-cache pkgnames -- $cur 2> /dev/null) )
- _filedir
- return 0
- } &&
- complete -F _reportbug $filenames reportbug
-
- # Debian querybts(1) completion
- #
- have querybts &&
- _querybts()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -B|--bts)
- COMPREPLY=( $( compgen -W "debian guug kde mandrake help" -- \
- $cur ))
- return 0
- ;;
- -u|--ui|--interface)
- COMPREPLY=($( compgen -W "newt text gnome" -- $cur ))
- return 0
- ;;
- *)
- ;;
- esac
-
- COMPREPLY=($( compgen -W '-h --help -v --version -A --archive \
- -B --bts -l --ldap --no-ldap --proxy= --http_proxy= \
- -s --source -w --web -u --ui --interface \
- wnpp boot-floppies kernel bugs.debian.org \
- cdimage.debian.org general installation-reports \
- listarchives lists.debian.org mirrors nm.debian.org \
- press project qa.debian.org release-notes \
- security.debian.org tech-ctte upgrade-reports \
- www.debian.org' -- $cur ) \
- $( apt-cache pkgnames -- $cur 2> /dev/null) )
- } &&
- complete -F _querybts $filenames querybts
-
- # update-alternatives completion
- #
- have update-alternatives && {
- installed_alternatives()
- {
- local admindir
- # find the admin dir
- for i in alternatives dpkg/alternatives rpm/alternatives; do
- [ -d /var/lib/$i ] && admindir=/var/lib/$i && break
- done
- for (( i=1; i < COMP_CWORD; i++ )); do
- if [[ "${COMP_WORDS[i]}" == --admindir ]]; then
- admindir=${COMP_WORDS[i+1]}
- break
- fi
- done
- COMPREPLY=( $( command ls $admindir | grep "^$cur" ) )
- }
-
- _update_alternatives()
- {
- local cur prev mode args i
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- --@(altdir|admindir))
- _filedir -d
- return 0
- ;;
- --@(help|version))
- return 0
- ;;
- esac
-
- # find which mode to use and how many real args used so far
- for (( i=1; i < COMP_CWORD; i++ )); do
- if [[ "${COMP_WORDS[i]}" == --@(install|remove|auto|display|config|remove-all) ]]; then
- mode=${COMP_WORDS[i]}
- args=$(($COMP_CWORD - i))
- break
- fi
- done
-
- case $mode in
- --install)
- case $args in
- 1)
- _filedir
- ;;
- 2)
- installed_alternatives
- ;;
- 3)
- _filedir
- ;;
- esac
- ;;
- --remove)
- case $args in
- 1)
- installed_alternatives
- ;;
- 2)
- _filedir
- ;;
- esac
- ;;
- --auto)
- installed_alternatives
- ;;
- --remove-all)
- installed_alternatives
- ;;
- --display)
- installed_alternatives
- ;;
- --config)
- installed_alternatives
- ;;
- *)
- COMPREPLY=( $( compgen -W '--verbose --quiet --help --version \
- --altdir --admindir' -- $cur ) \
- $( compgen -W '--install --remove --auto --display \
- --config' -- $cur ) )
- esac
- }
- complete -F _update_alternatives update-alternatives
- }
-
- # Python completion
- #
- have python &&
- _python()
- {
- local prev cur
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]##*/}
-
- case "$prev" in
- -Q)
- COMPREPLY=( $( compgen -W "old new warn warnall" -- $cur ) )
- return 0
- ;;
- -W)
- COMPREPLY=( $( compgen -W "ignore default all module once error" -- $cur ) )
- return 0
- ;;
- -c)
- _filedir '@(py|pyc|pyo)'
- return 0
- ;;
- !(python|-?))
- [[ ${COMP_WORDS[COMP_CWORD-2]} != -@(Q|W) ]] && _filedir
- ;;
- esac
-
-
- # if '-c' is already given, complete all kind of files.
- for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do
- if [[ ${COMP_WORDS[i]} == -c ]]; then
- _filedir
- fi
- done
-
-
- if [[ "$cur" != -* ]]; then
- _filedir '@(py|pyc|pyo)'
- else
- COMPREPLY=( $( compgen -W "- -d -E -h -i -O -Q -S -t -u \
- -U -v -V -W -x -c" -- $cur ) )
- fi
-
-
-
- return 0
- } &&
- complete -F _python $filenames python
-
- # Perl completion
- #
- have perl &&
- {
- _perlmodules()
- {
- COMPREPLY=( $( compgen -P "$prefix" -W "$( perl -e 'sub mods { my ($base,$dir)=@_; return if $base !~ /^\Q$ENV{cur}/; chdir($dir) or return; for (glob(q[*.pm])) {s/\.pm$//; print qq[$base$_\n]}; mods(/^(?:[.\d]+|$Config{archname}-$Config{osname}|auto)$/ ? undef : qq[${base}${_}\\\\:\\\\:],qq[$dir/$_]) for grep {-d} glob(q[*]); } mods(undef,$_) for @INC;' )" -- $cur ) )
- }
-
- _perl()
- {
- local cur prev prefix temp
- local optPrefix optSuffix
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
- prefix=""
-
- # If option not followed by whitespace, reassign prev and cur
- if [[ "$cur" == -?* ]]; then
- temp=$cur
- prev=${temp:0:2}
- cur=${temp:2}
- optPrefix=-P$prev
- optSuffix=-S/
- prefix=$prev
- fi
-
- # only handle module completion for now
- case "$prev" in
- -I|-x)
- local IFS=$'\t\n'
- COMPREPLY=( $( compgen -d $optPrefix $optSuffix -- "$cur" ) )
- return 0
- ;;
- -m|-M)
- _perlmodules
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-C -s -T -u -U -W -X -h -v -V -c -w -d \
- -D -p -n -a -F -l -0 -I -m -M -P -S -x -i -e ' -- $cur ) )
- else
- _filedir
- fi
- }
- complete -F _perl $nospace $filenames perl
-
- _perldoc()
- {
- local cur prev prefix temp
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
- prefix=""
-
- # completing an option (may or may not be separated by a space)
- if [[ "$cur" == -?* ]]; then
- temp=$cur
- prev=${temp:0:2}
- cur=${temp:2}
- prefix=$prev
- fi
-
- # complete builtin perl functions
- case $prev in
- -f)
- COMPREPLY=( $( compgen -W 'chomp chop chr crypt hex index lc \
- lcfirst length oct ord pack q qq reverse rindex sprintf \
- substr tr uc ucfirst y m pos quotemeta s split study qr abs \
- atan2 cos exp hex int log oct rand sin sqrt srand pop push \
- shift splice unshift grep join map qw reverse sort unpack \
- delete each exists keys values binmode close closedir \
- dbmclose dbmopen die eof fileno flock format getc print \
- printf read readdir rewinddir seek seekdir select syscall \
- sysread sysseek syswrite tell telldir truncate warn write \
- pack read syscall sysread syswrite unpack vec -X chdir chmod \
- chown chroot fcntl glob ioctl link lstat mkdir open opendir \
- readlink rename rmdir stat symlink umask unlink utime caller \
- continue do dump eval exit goto last next redo return \
- sub wantarray caller import local my our package use defined \
- formline reset scalar undef \
- alarm exec fork getpgrp getppid getpriority kill pipe qx \
- setpgrp setpriority sleep system times wait waitpid \
- import no package require use bless dbmclose dbmopen package \
- ref tie tied untie use accept bind connect getpeername \
- getsockname getsockopt listen recv send setsockopt shutdown \
- socket socketpair msgctl msgget msgrcv msgsnd semctl semget \
- semop shmctl shmget shmread shmwrite endgrent endhostent \
- endnetent endpwent getgrent getgrgid getgrnam getlogin \
- getpwent getpwnam getpwuid setgrent setpwent endprotoent \
- endservent gethostbyaddr gethostbyname gethostent \
- getnetbyaddr getnetbyname getnetent getprotobyname \
- getprotobynumber getprotoent getservbyname getservbyport \
- getservent sethostent setnetent setprotoent setservent \
- gmtime localtime time times' -- $cur ) )
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-h -v -t -u -m -l -F -X -f -q' -- $cur ))
- else
- # return available modules (unless it is clearly a file)
- if [[ "$cur" != */* ]]; then
- _perlmodules
- COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W '$( PAGER=/bin/cat man perl | sed -ne "/perl.*Perl overview/,/perlwin32/p" | awk "\$NF=2 { print \$1}" | grep perl )' -- $cur ) )
- fi
- fi
- }
- complete -F _perldoc $default perldoc
- }
-
- # rcs(1) completion
- #
- have rcs &&
- _rcs()
- {
- local cur prev file dir i
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- file=${cur##*/}
- dir=${cur%/*}
-
- # deal with relative directory
- [ "$file" = "$dir" ] && dir=.
-
- COMPREPLY=( $( compgen -f "$dir/RCS/$file" ) )
-
- for (( i=0; i < ${#COMPREPLY[@]}; i++ )); do
- file=${COMPREPLY[$i]##*/}
- dir=${COMPREPLY[$i]%RCS/*}
- COMPREPLY[$i]=$dir$file
- done
-
- COMPREPLY=( "${COMPREPLY[@]}" $( compgen -G "$dir/$file*,v" ) )
-
- for (( i=0; i < ${#COMPREPLY[@]}; i++ )); do
- COMPREPLY[$i]=${COMPREPLY[$i]%,v}
- done
-
- # default to files if nothing returned and we're checking in.
- # otherwise, default to directories
- [ ${#COMPREPLY[@]} -eq 0 -a $1 = ci ] && _filedir || _filedir -d
- } &&
- complete -F _rcs $filenames ci co rlog rcs rcsdiff
-
- # lilo(8) completion
- #
- have lilo && {
- _lilo_labels()
- {
- COMPREPLY=( $( awk -F'=' '/label/ {print $2}' \
- /etc/lilo.conf | sed -e 's/"//g' | grep "^$cur" ) )
- }
-
- _lilo()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case $prev in
- -@(C|i|m|s|S))
- _filedir
- return 0
- ;;
- -r)
- _filedir -d
- return 0
- ;;
- -@(I|D|R))
- # label completion
- _lilo_labels
- return 0
- ;;
- -@(A|b|M|u|U))
- # device completion
- cur=${cur:=/dev/}
- _filedir
- return 0
- ;;
- -T)
- # topic completion
- COMPREPLY=( $( compgen -W 'help ChRul EBDA geom geom= \
- table= video' -- $cur ) )
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- # relevant options completion
- COMPREPLY=( $( compgen -W '-A -b -c -C -d -f -g -i -I -l -L -m \
- -M -p -P -q -r -R -s -S -t -T -u -U -v -V -w -x -z' -- \
- $cur ) )
- fi
- }
- complete -F _lilo lilo
- }
-
- # links completion
- #
- have links &&
- _links()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- case "$cur" in
- --*)
- COMPREPLY=( $( compgen -W '--help' -- $cur ) )
- ;;
- -*)
- COMPREPLY=( $( compgen -W '-async-dns -max-connections \
- -max-connections-to-host -retries \
- -receive-timeout -unrestartable-receive-timeout\
- -format-cache-size -memory-cache-size \
- -http-proxy -ftp-proxy -download-dir \
- -assume-codepage -anonymous -dump -no-connect \
- -source -version -help' -- $cur ) )
- ;;
- *)
- if [ -r ~/.links/links.his ]; then
- COMPREPLY=( $( compgen -W '$( < ~/.links/links.his )' \
- -- $cur ) )
- fi
- _filedir '@(htm|html)'
- return 0
- ;;
- esac
-
- return 0
- } &&
- complete -F _links $filenames links
-
- [ $UNAME = FreeBSD ] && {
- # FreeBSD package management tool completion
- #
- _pkg_delete()
- {
- local cur pkgdir prev
-
- pkgdir=${PKG_DBDIR:-/var/db/pkg}/
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- [ "$prev" = "-o" -o "$prev" = "-p" -o "$prev" = "-W" ] && return 0
-
- COMPREPLY=( $( compgen -d $pkgdir$cur ) )
- COMPREPLY=( ${COMPREPLY[@]#$pkgdir} )
-
- return 0
- }
- complete -F _pkg_delete $dirnames pkg_delete pkg_info
- have pkg_deinstall && complete -F _pkg_delete $dirnames pkg_deinstall
-
- # FreeBSD kernel module commands
- #
- _kldload()
- {
- local cur moddir
-
- moddir=/modules/
- [ -d $moddir ] || moddir=/boot/kernel/
- cur=`_get_cword`
-
- COMPREPLY=( $( compgen -f $moddir$cur ) )
- COMPREPLY=( ${COMPREPLY[@]#$moddir} )
- COMPREPLY=( ${COMPREPLY[@]%.ko} )
-
- return 0
- }
- complete -F _kldload $filenames kldload
-
- _kldunload()
- {
- local cur
- cur=`_get_cword`
- COMPREPLY=( $(kldstat | sed -ne "s/^.*[ \t]\+\($cur[a-z_]\+\).ko$/\1/p") )
- }
- complete -F _kldunload $filenames kldunload
- }
-
- # FreeBSD portupgrade completion
- #
- have portupgrade &&
- _portupgrade()
- {
- local cur pkgdir prev
-
- pkgdir=${PKG_DBDIR:-/var/db/pkg}/
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- [ "$prev" = "-l" -o "$prev" = "-L" -o "$prev" = "-o" ] && return 0
-
- COMPREPLY=( $( compgen -d $pkgdir$cur ) )
- COMPREPLY=( ${COMPREPLY[@]#$pkgdir} )
- COMPREPLY=( ${COMPREPLY[@]%-*} )
-
- return 0
- } &&
- complete -F _portupgrade $dirnames portupgrade
-
- # FreeBSD portinstall completion
- #
- have portinstall &&
- _portinstall()
- {
- local cur portsdir prev indexfile
- local -a COMPREPLY2
-
- portsdir=${PORTSDIR:-/usr/ports}/
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
- # First try INDEX-5
- indexfile=$portsdir/INDEX-5
- # Then INDEX if INDEX-5 does not exist or system is not FreeBSD 5.x
- [ "${OSTYPE%.*}" = "freebsd5" -a -f $indexfile ] ||
- indexfile=$portsdir/INDEX
-
- [ "$prev" = "-l" -o "$prev" = "-L" -o "$prev" = "-o" ] && return 0
-
- COMPREPLY=( $( egrep "^$cur" < $indexfile | cut -d'|' -f1 ) )
- COMPREPLY2=( $( egrep "^[^\|]+\|$portsdir$cur" < $indexfile | \
- cut -d'|' -f2 ) )
- COMPREPLY2=( ${COMPREPLY2[@]#$portsdir} )
- COMPREPLY=( "${COMPREPLY[@]}" "${COMPREPLY2[@]}" )
-
- return 0
- } &&
- complete -F _portinstall $dirnames portinstall
-
- # Slackware Linux removepkg completion
- #
- have removepkg && [ -f /etc/slackware-version ] &&
- _removepkg()
- {
- local packages cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- COMPREPLY=( $( (cd /var/log/packages; compgen -f -- "$cur") ) )
- } &&
- complete -F _removepkg $filenames removepkg &&
- complete $dirnames -f -X '!*.tgz' installpkg upgradepkg explodepkg
-
# look(1) completion
#
have look &&
@@@ -5751,3049 -1542,11 +1541,11 @@@ _look(
cur=`_get_cword`
if [ $COMP_CWORD = 1 ]; then
- COMPREPLY=( $( compgen -W '$(look $cur 2>/dev/null)' ) )
+ COMPREPLY=( $( compgen -W '$(look "$cur" 2>/dev/null)' ) )
fi
} &&
complete -F _look $default look
- # ypcat(1) and ypmatch(1) completion
- #
- have ypmatch &&
- _ypmatch()
- {
- local cur map
-
- COMPREPLY=()
- cur=`_get_cword`
-
- [ $1 = ypcat ] && [ $COMP_CWORD -gt 1 ] && return 0
- [ $1 = ypmatch ] && [ $COMP_CWORD -gt 2 ] && return 0
-
- if [ $1 = ypmatch ] && [ $COMP_CWORD -eq 1 ] && \
- [ ${#COMP_WORDS[@]} -eq 3 ]; then
- map=${COMP_WORDS[2]}
- COMPREPLY=( $( compgen -W '$( ypcat $map | \
- cut -d':' -f 1 )' -- $cur) )
- else
- [ $1 = ypmatch ] && [ $COMP_CWORD -ne 2 ] && return 0
- COMPREPLY=( $( compgen -W \
- '$( echo $(ypcat -x | cut -d"\"" -f 2))' -- $cur))
- fi
-
- return 0
- } &&
- complete -F _ypmatch ypmatch ypcat
-
- #xrandr(1) completion
- #
- have xrandr &&
- _xrandr()
- {
- local cur prev output modes
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- --output)
- local outputs=$(xrandr|grep 'connected'|awk '{print $1}')
- COMPREPLY=( $(compgen -W "$outputs" -- $cur))
- return 0
- ;;
- --mode)
- for(( i = 1; i < COMP_CWORD; i++ )); do
- if [[ "${COMP_WORDS[i]}" == "--output" ]]; then
- output=${COMP_WORDS[i+1]}
- break
- fi
- done
- modes=$(xrandr|sed -e "1,/$output/ d" \
- -e "/connected/,$ d"|awk '{print $1}')
- COMPREPLY=( $( compgen -W "$modes" -- $cur))
- return 0
- ;;
- esac
-
- case "$cur" in
- *)
- COMPREPLY=( $(compgen -W '-d -display -help -o \
- --orientation -q --query -s --size\
- -r --rate -v --version -x -y --screen \
- --verbose --dryrun --prop --fb --fbmm --dpi \
- --output --auto --mode --preferred --pos \
- --reflect --rotate --left-of --right-of \
- --above --below --same-as --set --off --crtc \
- --newmode --rmmode --addmode --delmode' -- $cur))
- return 0
- ;;
- esac
-
- return 0
- } &&
- complete -F _xrandr xrandr
-
-
-
- # mplayer(1) completion
- #
- have mplayer && {
- _mplayer_options_list()
- {
- cur=${cur%\\}
- COMPREPLY=( $( $1 $2 help 2> /dev/null | \
- sed -e '1,/^Available/d' | awk '{print $1}' | \
- sed -e 's/:$//' -e 's/^'${2#-}'$//' -e 's/<.*//' | \
- grep "^$cur" ) )
- }
-
- _mplayer()
- {
- local cmd cur prev skinsdir IFS=$' \t\n' i j k=0
-
- COMPREPLY=()
- cmd=${COMP_WORDS[0]}
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(ac|afm|vc|vfm|ao|vo|vop|fstype|demuxer|vf|af))
- _mplayer_options_list mplayer $prev
- return 0
- ;;
- -@(oac|ovc|of))
- _mplayer_options_list mencoder $prev
- return 0
- ;;
- -audiofile)
- _filedir '@(mp3|MP3|mpg|MPG|ogg|OGG|w?(a)v|W?(A)V|mid|MID|flac|FLAC|mka|MKA|ape|APE)'
- return 0
- ;;
- -font)
- _filedir '@(desc|ttf)'
- return 0
- ;;
- -sub)
- _filedir '@(srt|SRT|sub|SUB|txt|TXT|utf|UTF|rar|RAR|mpsub|smi|js|ssa|SSA|aas|AAS)'
- return 0
- ;;
- -vobsub)
- _filedir '@(idx|IDX|ifo|IFO|sub|SUB)'
- IFS=$'\t\n'
- COMPREPLY=( $( for i in "${COMPREPLY[@]}"; do
- if [ -f $i -a -r $i ]; then
- echo ${i%.*}
- else
- echo $i
- fi
- done ) )
- IFS=$' \t\n'
- return 0
- ;;
- -ifo)
- _filedir '@(ifo|IFO)'
- return 0
- ;;
- -cuefile)
- _filedir '@(bin|BIN|cue|CUE)'
- return 0
- ;;
- -skin)
- # if you don't have installed mplayer in /usr you
- # may want to set the MPLAYER_SKINS_DIR global variable
- if [ -n "$MPLAYER_SKINS_DIR" ]; then
- skinsdir=$MPLAYER_SKINS_DIR
- else
- skinsdir=/usr/share/mplayer/Skin
- fi
-
- IFS=$'\t\n'
- for i in ~/.mplayer/Skin $skinsdir; do
- if [ -d $i -a -r $i ]; then
- for j in $( compgen -d $i/$cur ); do
- COMPREPLY[$k]=${j#$i/}
- k=$((++k))
- done
- fi
- done
- IFS=$' \t\n'
- return 0
- ;;
- -@(mixer|@(cdrom|dvd)-device|dvdauth|fb|zrdev))
- cur=${cur:=/dev/}
- _filedir
- return 0
- ;;
- -@(edl?(out)|lircconf|menu-cfg|playlist|csslib|dumpfile)| \
- -@(subfile|vobsub|aofile|fbmodeconfig|include|o|dvdkey)| \
- -passlogfile)
- _filedir
- return 0
- ;;
- -@(auto@(q|sync)|loop|menu-root|speed|sstep|aid|alang)| \
- -@(?(@(audio|sub)-)demuxer|bandwidth|cache|chapter)| \
- -@(dvd?(angle)|fps|frames|mc|passwd|user|sb|srate|ss|vcd)| \
- -@(vi?(d|vo)|ffactor|sid|slang|spu@(align|aa|gauss))| \
- -@(vobsubid|delay|bpp|brightness|contrast|dfbopts|display)| \
- -@(fbmode|geometry|guiwid|hue|icelayer|screen[wh]|wid)| \
- -@(monitor@(aspect|-@(dotclock|[hv]freq))|panscan|saturation)| \
- -@(xineramascreen|zr@(crop|norm|quality|[xy]doff|[vh]dec))| \
- -@(aspect|pp|x|y|xy|z|stereo|audio-@(density|delay|preload))| \
- -@(endpos|osdlevel|ffourcc|sws|channels|skiplimit|format)| \
- -@(ofps|aa@(driver|@(osd|sub)color)|vobsubout?(i@(ndex|d)))| \
- -sub@(-bg-@(alpha|color)|cp|delay|fps|pos|align|width)| \
- -sub@(font-@(blur|outline|autoscale|encoding|@(osd|text)-scale)))
- return 0
- ;;
- -lavdopts)
- COMPREPLY=( $( compgen -W 'ec er= bug= idct= gray' \
- -- $cur ) )
- return 0
- ;;
- -lavcopts)
- COMPREPLY=( $( compgen -W 'vcodec= vqmin= vqscale= \
- vqmax= mbqmin= mbqmax= vqdiff= \
- vmax_b_frames= vme= vhq v4mv \
- keyint= vb_strategy= vpass= \
- aspect= vbitrate= vratetol= \
- vrc_maxrate= vrc_minrate= \
- vrc_buf_size= vb_qfactor= vi_qfactor= \
- vb_qoffset= vi_qoffset= vqblur= \
- vqcomp= vrc_eq= vrc_override= \
- vrc_init_cplx= vqsquish= vlelim= \
- vcelim= vstrict= vdpart vpsize= gray \
- vfdct= idct= lumi_mask= dark_mask= \
- tcplx_mask= scplx_mask= naq ildct \
- format= pred qpel precmp= cmp= \
- subcmp= predia= dia= trell last_pred= \
- preme= subq= psnr mpeg_quant aic umv' \
- -- $cur ) )
- return 0
- ;;
- -ssf)
- COMPREPLY=( $( compgen -W 'lgb= cgb= ls= cs= chs= \
- cvs=' -- $cur ) )
- return 0
- ;;
- -jpeg)
- COMPREPLY=( $( compgen -W 'noprogressive progressive \
- nobaseline baseline optimize= \
- smooth= quality= outdir=' -- $cur ) )
- return 0
- ;;
- -xvidopts)
- COMPREPLY=( $( compgen -W 'dr2 nodr2' -- $cur ) )
- return 0
- ;;
- -xvidencopts)
- COMPREPLY=( $( compgen -W 'pass= bitrate= \
- fixed_quant= me_quality= 4mv \
- rc_reaction_delay_factor= \
- rc_averaging_period= rc_buffer= \
- quant_range= min_key_interval= \
- max_key_interval= mpeg_quant \
- mod_quant lumi_mask hintedme \
- hintfile debug keyframe_boost= \
- kfthreshold= kfreduction=' -- $cur ) )
- return 0
- ;;
- -divx4opts)
- COMPREPLY=( $( compgen -W 'br= key= deinterlace q= \
- min_quant= max_quant= rc_period= \
- rc_reaction_period= crispness= \
- rc_reaction_ratio= pass= vbrpass= \
- help' -- $cur ) )
- return 0
- ;;
- -info)
- COMPREPLY=( $( compgen -W 'name= artist= genre= \
- subject= copyright= srcform= \
- comment= help' -- $cur ) )
- return 0
- ;;
- -lameopts)
- COMPREPLY=( $( compgen -W 'vbr= abr cbr br= q= aq= \
- ratio= vol= mode= padding= fast \
- preset= help' -- $cur ) )
- return 0
- ;;
- -rawaudio)
- COMPREPLY=( $( compgen -W 'on channels= rate= \
- samplesize= format=' -- $cur ) )
- return 0
- ;;
- -rawvideo)
- COMPREPLY=( $( compgen -W 'on fps= sqcif qcif cif \
- 4cif pal ntsc w= h= y420 yv12 yuy2 \
- y8 format= size=' -- $cur ) )
- return 0
- ;;
- -aop)
- COMPREPLY=( $( compgen -W 'list= delay= format= fout= \
- volume= mul= softclip' -- $cur ) )
- return 0
- ;;
- -dxr2)
- COMPREPLY=( $( compgen -W 'ar-mode= iec958-encoded \
- iec958-decoded mute ucode= 75ire bw \
- color interlaced macrovision= norm= \
- square-pixel ccir601-pixel cr-left= \
- cr-right= cr-top= cr-bot= ck-rmin= \
- ck-gmin= ck-bmin= ck-rmax= ck-gmax= \
- ck-bmax= ck-r= ck-g= ck-b= \
- ignore-cache= ol-osd= olh-cor= \
- olw-cor= olx-cor= oly-cor= overlay \
- overlay-ratio= update-cache' -- $cur ))
- return 0
- ;;
- -tv)
- COMPREPLY=( $( compgen -W 'on noaudio driver= device= \
- input= freq= outfmt= width= height= \
- buffersize= norm= channel= chanlist= \
- audiorate= forceaudio alsa amode= \
- forcechan= adevice= audioid= volume= \
- bass= treble= balance= fps= \
- channels= immediatemode=' -- $cur ) )
- return 0
- ;;
- -mf)
- COMPREPLY=( $( compgen -W 'on w= h= fps= type=' \
- -- $cur ) )
- return 0
- ;;
- -cdda)
- COMPREPLY=( $( compgen -W 'speed= paranoia= \
- generic-dev= sector-size= overlap= \
- toc-bias toc-offset= skip noskip' \
- -- $cur ) )
- return 0
- ;;
- -input)
- COMPREPLY=( $( compgen -W 'conf= ar-delay ar-rate \
- keylist cmdlist js-dev file' -- $cur ) )
- return 0
- ;;
- -af)
- COMPREPLY=( $( compgen -W 'resample resample= \
- channels channels= format format= \
- volume volume= delay delay= pan \
- pan= sub sub= surround surround=' \
- -- $cur ) )
- return 0
- ;;
- -af-adv)
- COMPREPLY=( $( compgen -W 'force= list=' -- $cur ) )
- return 0
- ;;
- -profile)
- _mplayer_options_list $cmd $prev
- return 0
- ;;
- esac
-
- case "$cur" in
- -*)
- COMPREPLY=( $( compgen -W '-aid -alang -audio-demuxer \
- -audiofile -cdrom-device -cache -cdda \
- -channels -chapter -csslib -demuxer \
- -dvd -dvd-device -dvdangle -dvdauth \
- -dvdkey -dvdnav -forceidx -fps -frames \
- -hr-mp3-seek -idx -mc -mf -ni -nobps \
- -passwd -rawaudio -rtsp-stream-over-tcp\
- -skipopening -sb -srate -ss -tv -user \
- -vcd -vid -vivo -ifo -ffactor -font \
- -noautosub -nooverlapsub -sid -slang \
- -sub -subcc -subcp -sub-demuxer \
- -subdelay -subfont-autoscale \
- -subfont-blur -subfont-encoding \
- -subfont-osd-scale -subfont-outline \
- -subfont-text-scale -subfps -subfile \
- -subpos -unicode -utf8 -vobsub \
- -vobsubid -ac -afm -aspect -flip \
- -lavdopts -noaspect -nosound -pp -ssf \
- -stereo -sws -vc -vfm -vop -xvidopts\
- -xy -zoom -bandwidth -cuefile \
- -noextbased -rawvideo -overlapsub \
- -sub-bg-alpha -sub-bg-color -subalign \
- -subwidth -sub-no-text-pp -spualign \
- -spuaa -spugauss -pphelp -verbose -v \
- -noni -noidx -nohr-mp3-seek -extbased \
- -bps -oldpp -nozoom -noflip -nounicode \
- -noutf8 -profile -vf -af' -- $cur ) )
- # add mplayer specific options
- [[ "$cmd" == @(?(g)mplayer) ]] && COMPREPLY=( "${COMPREPLY[@]}" \
- $(compgen -W '-autoq -autosync -benchmark \
- -framedrop -h -help -hardframedrop \
- -identify -input -lircconf -loop \
- -nojoystick -nolirc -nortc -playlist \
- -quiet -really-quiet -rnd -sdp -skin \
- -slave -softsleep -speed -sstep \
- -use-stdin -dumpaudio -dumpfile \
- -dumpstream -dumpvideo -dumpmicrodvdsub\
- -dumpmpsub -dumpsrtsub -dumpjacosub \
- -dumpsami -dumpsub -osdlevel -af \
- -af-adv -ao -aofile -aop -delay -mixer \
- -nowaveheader -bpp -brightness \
- -contrast -display -double -dr -dxr2 \
- -fb -fbmode -fbmodeconfig -forcexv -fs \
- -geometry -hue -icelayer -jpeg \
- -monitor-dotclock -monitor-hfreq \
- -monitor-vfreq -monitoraspect \
- -nograbpointer -noslices -panscan \
- -rootwin -saturation -screenw -screenh \
- -stop-xscreensaver -vm -vo -vsync -wid \
- -xineramascreen -z -zrbw -zrcrop \
- -zrdev -zrfd -zrhelp -zrnorm -zrquality \
- -zrvdec -zrhdec -zrxdoff -zrydoff -y \
- -edl -edlout -enqueue -fixed-vo \
- -menu -menu-root -menu-cfg -shuffle \
- -format -aahelp -dfbopts -fstype \
- -guiwid -nokeepaspect -x --help \
- -aaosdcolor -aasubcolor -aadriver \
- -aaextended -aaeight' -- $cur) )
- # add mencoder specific options
- [[ "$cmd" = mencoder ]] && COMPREPLY=( "${COMPREPLY[@]}" \
- $(compgen -W '-audio-density -audio-delay \
- -audio-preload -divx4opts -endpos \
- -ffourcc -include -info -lameopts \
- -lavcopts -noskip -o -oac -ofps -ovc \
- -passlogfile -skiplimit -vobsubout \
- -vobsuboutindex -vobsuboutid \
- -xvidencopts -of --verbose' -- $cur) )
- ;;
- *)
- _filedir '@(mp?(e)g|MP?(E)G|wm[av]|WM[AV]|avi|AVI|asf|ASF|vob|VOB|bin|BIN|dat|DAT|vcd|VCD|ps|PS|pes|PES|fl[iv]|FL[IV]|viv|VIV|rm?(j)|RM?(J)|ra?(m)|RA?(M)|yuv|YUV|mov|MOV|qt|QT|mp[234]|MP[234]|m4[av]|M4[AV]|og[gmavx]|OG[GMAVX]|w?(a)v|W?(A)V|dump|DUMP|mk[av]|MK[AV]|m4a|M4A|aac|AAC|m2v|M2V|dv|DV|rmvb|RMVB|mid|MID|ts|TS|3g[p2]|mpc|MPC|flac|FLAC|vro|VRO|divx|DIVX|aif?(f)|AIF?(F)|m2ts|M2TS|vdr|VDR|xvid|XVID|ape|APE)'
- ;;
- esac
-
- return 0
- }
- complete $filenames -F _mplayer mplayer mencoder gmplayer kplayer
- }
-
- # KDE dcop completion
- #
- have dcop &&
- _dcop()
- {
- local cur compstr
-
- COMPREPLY=()
- cur=`_get_cword`
- if [ -z $cur ]; then
- compstr=${COMP_WORDS[*]}
- else
- compstr=$( command echo ${COMP_WORDS[*]} | sed "s/ $cur$//" )
- fi
- COMPREPLY=( $( compgen -W '$( command $compstr | sed s/\(.*\)// )' -- $cur ) )
- } &&
- complete -F _dcop dcop
-
- # wvdial(1) completion
- #
- have wvdial &&
- _wvdial()
- {
- local cur prev config i IFS=$'\t\n'
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case $prev in
- --config)
- _filedir
- return 0
- ;;
- esac
-
- case $cur in
- -*)
- COMPREPLY=( $( compgen -W '--config --chat \
- --remotename --help --version --no-syslog' \
- -- $cur ) )
- ;;
- *)
- # start with global and personal config files
- config="/etc/wvdial.conf"$'\t'"$HOME/.wvdialrc"
- # replace with command line config file if present
- for (( i=1; i < COMP_CWORD; i++ )); do
- if [[ "${COMP_WORDS[i]}" == "--config" ]]; then
- config=${COMP_WORDS[i+1]}
- break
- fi
- done
- # parse config files for sections and
- # remove default section
- COMPREPLY=( $( sed -ne \
- "s|^\[Dialer \($cur.*\)\]$|\1|p" \
- $config 2>/dev/null |grep -v '^Defaults$'))
- # escape spaces
- COMPREPLY=${COMPREPLY// /\\ }
- ;;
- esac
-
- } &&
- complete -F _wvdial wvdial
-
- # gpg(1) completion
- #
- have gpg &&
- _gpg()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(s|-sign|-clearsign|-decrypt-files|-load-extension))
- _filedir
- return 0
- ;;
- --@(export|@(?(l|nr|nrl)sign|edit)-key))
- # return list of public keys
- COMPREPLY=( $( compgen -W "$( gpg --list-keys 2>/dev/null | sed -ne 's@^pub.*/\([^ ]*\).*$@\1 at p;s@^.*\(<\([^>]*\)>\).*$@\2 at p')" -- "$cur" ))
- return 0
- ;;
- -@(r|-recipient))
- COMPREPLY=( $( compgen -W "$( gpg --list-keys 2>/dev/null | sed -ne 's@^.*<\([^>]*\)>.*$@\1 at p')" -- "$cur" ))
- if [ -e ~/.gnupg/gpg.conf ]; then
- COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "$( sed -ne 's@^[ \t]*group[ \t][ \t]*\([^=]*\).*$@\1 at p' ~/.gnupg/gpg.conf )" -- "$cur") )
- fi
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-s -b -e -f -c -d -a -r -u -Z -o -v\
- -q -n -N $(gpg --dump-options)' -- $cur ) )
- fi
-
- } &&
- complete -F _gpg $default gpg
-
- # iconv(1) completion
- #
- have iconv &&
- _iconv()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(f|t|-@(from|to)-code))
- COMPREPLY=( $( compgen -W \
- '$( iconv --list | sed -e "s@//@@;" )' -- "$cur" ) )
- return 0
- ;;
- esac
-
-
- if [[ "$cur" = -* ]]; then
- COMPREPLY=( $( compgen -W '--from-code -f --to-code -t --list
- --output -o --verbose' -- "$cur" ) )
- return 0
- fi
- } &&
- complete -F _iconv $default iconv
-
- # dict(1) completion
- #
- { have dict || have rdict; } && {
- _dictdata()
- {
- dict $host $port $1 2>/dev/null | sed -ne \
- 's/^['$'\t '']['$'\t '']*\([^'$'\t '']*\).*$/\1/p'
- }
-
- _dict()
- {
- local cur prev host port db dictfile
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
- dictfile=/usr/share/dict/words
-
- for (( i=1; i < COMP_CWORD; i++ )); do
- case "${COMP_WORDS[i]}" in
- -@(h|--host))
- host=${COMP_WORDS[i+1]}
- [ -n "$host" ] && host="-h $host"
- i=$((++i))
- ;;
- -@(p|-port))
- port=${COMP_WORDS[i+1]}
- [ -n "$port" ] && port="-p $port"
- i=$((++i))
- ;;
- -@(d|-database))
- db=${COMP_WORDS[i+1]}
- [ -n "$db" ] && host="-d $db"
- i=$((++i))
- ;;
- *)
- ;;
- esac
- done
-
- if [[ "$cur" = -* ]]; then
- COMPREPLY=( $( compgen -W '-h --host -p --port -d --database \
- -m --match -s --strategy -c --config -C \
- --nocorrect -D --dbs -S --strats -H \
- --serverhelp -i --info -I --serverinfo \
- -a --noauth -u --user -k --key -V --version \
- -L --license --help -v --verbose -r --raw \
- -P --pager --debug --html --pipesize --client' \
- -- "$cur" ) )
- return 0
- fi
-
- case "$prev" in
- -@(d|-database|i|info))
- COMPREPLY=( $( compgen -W '$( _dictdata -D )' -- "$cur" ) )
- return 0
- ;;
- -@(s|-strategy))
- COMPREPLY=( $( compgen -W '$( _dictdata -S )' -- "$cur" ) )
- return 0
- ;;
- *)
- ;;
- esac
-
- [ -r $dictfile ] && \
- COMPREPLY=( $( compgen -W '$( cat $dictfile )' -- "$cur" ) )
- }
- complete -F _dict $default dict rdict
- }
-
- # cdrecord(1) completion
- #
- (have cdrecord || have wodim) &&
- _cdrecord()
- {
- local cur prev i generic_options track_options track_mode
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- # foo=bar style option
- if [[ "$cur" == *=* ]]; then
- prev=${cur/=*/}
- cur=${cur/*=/}
- case "$prev" in
- @(text|cue)file)
- _filedir
- return 0
- ;;
- blank)
- COMPREPLY=( $( compgen -W 'help all fast \
- track unreserve trtail unclose session' \
- -- $cur ) )
- return 0
- ;;
- driveropts)
- COMPREPLY=( $( compgen -W 'burnfree noburnfree\
- varirec= audiomaster forcespeed noforcespeed\
- speedread nospeedread singlesession \
- nosinglesession hidecdr nohidecdr tattooinfo\
- tattoofile=' -- $cur ) )
- return 0
- ;;
- esac
- fi
-
- generic_options=(-version -v -V -d -silent -s -force -immed -dummy \
- -dao -raw -raw96r -raw96p -raw16 -multi -msinfo -toc \
- -atip -fix -nofix -waiti -load -lock -eject -format \
- -setdropts -checkdrive -prcap -inq -scanbus -reset \
- -abort -overburn -ignsize -useinfo -packet -noclose \
- -text debug= kdebug= kd= minbuf= speed= blank= fs= \
- dev= gracetime= timeout= driver= driveropts= \
- defpregap= pktsize= mcn= textfile= cuefile=)
- track_options=(-audio -swab -data -mode2 -xa -xa1 -xa2 -xamix -cdi \
- -isosize -pad padsize= -nopad -shorttrack -noshorttrack\
- pregap= -preemp -nopreemp -copy -nocopy -scms tcsize= \
- isrc= index=)
- # look if previous was either a file or a track option
- track_mode=0
- if [ $COMP_CWORD -gt 1 ]; then
- if [ -f "$prev" ]; then
- track_mode=1
- else
- for (( i=0; i < ${#track_options[@]}; i++ )); do
- if [[ "${track_options[i]}" == "$prev" ]]; then
- track_mode=1
- break
- fi
- done
- fi
- fi
-
- # files are always eligible completion
- _filedir
- # track options are always available
- COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W '${track_options[@]}' -- $cur ) )
- # general options are no more available after file or track option
- if [ $track_mode -eq 0 ]; then
- COMPREPLY=( "${COMPREPLY[@]}" \
- $( compgen -W '${generic_options[@]}' -- $cur ) )
- fi
-
- } &&
- complete -F _cdrecord $filenames cdrecord wodim
-
- # mkisofs(8) completion
- #
- (have mkisofs || have genisoimage) &&
- _mkisofs()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(o|abstract|biblio|check-session|copyright|log-file|root-info|prep-boot|*-list))
- _filedir
- return 0
- ;;
- -*-charset)
- COMPREPLY=( $( mkisofs -input-charset help 2>&1 | \
- tail +3 | grep "^$cur") )
- return 0
- ;;
- -uid)
- _uids
- return 0
- ;;
- -gid)
- _gids
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-abstract -A -allow-lowercase \
- -allow-multidot -biblio -cache-inodes \
- -no-cache-inodes -b -eltorito-alt-boot -B -G \
- -hard-disk-boot -no-emul-boot -no-boot \
- -boot-load-seg -boot-load-size \
- -boot-info-table -C -c -check-oldname \
- -check-session -copyright -d -D -dir-mode \
- -dvd-video -f -file-mode -gid -gui \
- -graft-points -hide -hide-list -hidden \
- -hidden-list -hide-joliet -hide-joliet-list \
- -hide-joliet-trans-tbl -hide-rr-moved \
- -input-charset -output-charset -iso-level -J \
- -joliet-long -jcharset -l -L -log-file -m \
- -exclude-list -max-iso9660-filenames -M -N \
- -new-dir-mode -nobak -no-bak -force-rr -no-rr \
- -no-split-symlink-components \
- -no-split-symlink-fields -o -pad -no-pad \
- -path-list -P -p -print-size -quiet -R -r \
- -relaxed-filenames -sort -split-output \
- -stream-media-size -stream-file-name -sysid -T\
- -table-name -ucs-level -udf -uid \
- -use-fileversion -U -no-iso-translate -V \
- -volset -volset-size -volset-seqno -v -x -z \
- -hfs -apple -map -magic -hfs-creator \
- -hfs-type -probe -no-desktop -mac-name \
- -boot-hfs-file -part -auto -cluster-size \
- -hide-hfs -hide-hfs-list -hfs-volid \
- -icon-position -root-info -prep-boot \
- -input-hfs-charset -output-hfs-charset \
- -hfs-unlock -hfs-bless -hfs-parms --cap \
- --netatalk --double --ethershare --ushare \
- --exchange --sgi --xinet --macbin --single \
- --dave --sfm --osx-double --osx-hfs' -- $cur ))
- else
- _filedir
- fi
-
- } &&
- complete -F _mkisofs $filenames mkisofs genisoimage
-
- # mc(1) completion
- #
- have mc &&
- _mc()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- # -name value style option
- case "$prev" in
- -@(e|v|l|P))
- _filedir
- return 0
- ;;
- esac
-
- # --name=value style option
- if [[ "$cur" == *=* ]]; then
- prev=${cur/=*/}
- cur=${cur/*=/}
- case "$prev" in
- --@(edit|view|ftplog|printwd))
- _filedir
- return 0
- ;;
- esac
- fi
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-a --stickchars -b --nocolor -c \
- --color -C --colors= -d --nomouse -e --edit= -f \
- --datadir -k --resetsoft -l --ftplog= -P --printwd= \
- -s --slow -t --termcap -u --nosubshell -U --subshell \
- -v --view= -V --version -x --xterm -h --help' -- $cur ) )
- else
- _filedir -d
- fi
- } &&
- complete -F _mc $filenames mc
-
- # yum(8) completion
- #
- have yum && {
- _yum_list()
- {
- if [[ "$1" == all ]] ; then
- # Try to strip in between headings like "Available Packages"
- # This will obviously only work for English :P
- COMPREPLY=( $( yum -d 0 -C list $1 "$cur*" 2>/dev/null | \
- grep -iv '^\(Available\|Installed\|Updated\) Packages' | \
- sed -e 's/[[:space:]].*//' ) )
- else
- # Drop first line (e.g. "Updated Packages")
- COMPREPLY=( $( yum -d 0 -C list $1 "$cur*" 2>/dev/null | \
- sed -ne 1d -e 's/[[:space:]].*//p' ) )
- fi
- }
-
- _yum()
- {
- local cur prev special
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do
- if [[ ${COMP_WORDS[i]} == @(install|update|upgrade|remove|erase|deplist|info) ]]; then
- special=${COMP_WORDS[i]}
- fi
- done
-
- if [ -n "$special" ]; then
- case $special in
- install)
- _yum_list available
- return 0
- ;;
- deplist|info)
- _yum_list all
- return 0
- ;;
- upgrade|update)
- _yum_list updates
- return 0
- ;;
- remove|erase)
- # _rpm_installed_packages is not arch-qualified
- _yum_list installed
- return 0
- ;;
- esac
- fi
-
- case $cur in
- --*)
- COMPREPLY=( $( compgen -W '--installroot --version --help --enablerepo --disablerepo --exclude --obsoletes --noplugins' -- $cur ) )
- return 0
- ;;
- -*)
- COMPREPLY=( $( compgen -W '-c -e -d -y -t -R -C -h' -- $cur ) )
- return 0
- ;;
- esac
-
- case $prev in
- list)
- COMPREPLY=( $( compgen -W 'all available updates installed extras obsoletes recent' -- $cur ) )
- ;;
- clean)
- COMPREPLY=( $( compgen -W 'packages headers metadata cache dbcache all' -- $cur ) )
- ;;
- localinstall|localupdate)
- # TODO: should not match *src.rpm
- _filedir rpm
- ;;
- -c)
- _filedir
- ;;
- --installroot)
- _filedir -d
- ;;
- *)
- COMPREPLY=( $( compgen -W 'install update check-update upgrade remove list \
- search info provides clean groupinstall groupupdate \
- grouplist deplist erase groupinfo groupremove \
- localinstall localupdate makecache resolvedep \
- shell whatprovides' -- $cur ) )
- ;;
- esac
- }
- complete -F _yum $filenames yum
-
- # yum-arch(8) completion
- #
- _yum_arch()
- {
- local cur
- COMPREPLY=()
- cur=`_get_cword`
-
- case "$cur" in
- -*)
- COMPREPLY=( $( compgen -W '-d -v -vv -n -c -z -s -l -q' -- $cur ) )
- ;;
- *)
- _filedir -d
- ;;
- esac
-
- return 0
-
- }
- complete -F _yum_arch $filenames yum-arch
- }
-
- # ImageMagick completion
- #
- have convert && {
- _ImageMagick()
- {
- local prev
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -channel)
- COMPREPLY=( $( compgen -W 'Red Green Blue Opacity \
- Matte Cyan Magenta Yellow Black' -- $cur ) )
- return 0
- ;;
- -colormap)
- COMPREPLY=( $( compgen -W 'shared private' -- $cur ) )
- return 0
- ;;
- -colorspace)
- COMPREPLY=( $( compgen -W 'GRAY OHTA RGB Transparent \
- XYZ YCbCr YIQ YPbPr YUV CMYK' -- $cur ) )
- return 0
- ;;
- -compose)
- COMPREPLY=( $( compgen -W 'Over In Out Atop Xor Plus \
- Minus Add Subtract Difference Multiply Bumpmap\
- Copy CopyRed CopyGreen CopyBlue CopyOpacity' \
- -- $cur ) )
- return 0
- ;;
- -compress)
- COMPREPLY=( $( compgen -W 'None BZip Fax Group4 JPEG \
- Lossless LZW RLE Zip' -- $cur ) )
- return 0
- ;;
- -dispose)
- COMPREPLY=( $( compgen -W 'Undefined None Background \
- Previous' -- $cur ) )
- return 0
- ;;
- -encoding)
- COMPREPLY=( $( compgen -W 'AdobeCustom AdobeExpert \
- AdobeStandard AppleRoman BIG5 GB2312 Latin2 \
- None SJIScode Symbol Unicode Wansung' -- $cur))
- return 0
- ;;
- -endian)
- COMPREPLY=( $( compgen -W 'MSB LSB' -- $cur ) )
- return 0
- ;;
- -filter)
- COMPREPLY=( $( compgen -W 'Point Box Triangle Hermite \
- Hanning Hamming Blackman Gaussian Quadratic \
- Cubic Catrom Mitchell Lanczos Bessel Sinc' \
- -- $cur ) )
- return 0
- ;;
- -format)
- COMPREPLY=( $( convert -list format | \
- awk '/ [r-][w-][+-] / {print $1}' | \
- tr -d '*' | tr [:upper:] [:lower:] | \
- grep "^$cur" ) )
- return 0
- ;;
- -gravity)
- COMPREPLY=( $( compgen -W 'Northwest North NorthEast \
- West Center East SouthWest South SouthEast' \
- -- $cur ) )
- return 0
- ;;
- -intent)
- COMPREPLY=( $( compgen -W 'Absolute Perceptual \
- Relative Saturation' -- $cur ) )
- return 0
- ;;
- -interlace)
- COMPREPLY=( $( compgen -W 'None Line Plane Partition' \
- -- $cur ) )
- return 0
- ;;
- -limit)
- COMPREPLY=( $( compgen -W 'Disk File Map Memory' \
- -- $cur ) )
- return 0
- ;;
- -list)
- COMPREPLY=( $( compgen -W 'Delegate Format Magic \
- Module Resource Type' -- $cur ) )
- return 0
- ;;
- -map)
- COMPREPLY=( $( compgen -W 'best default gray red \
- green blue' -- $cur ) )
- _filedir
- return 0
- ;;
- -noise)
- COMPREPLY=( $( compgen -W 'Uniform Gaussian \
- Multiplicative \
- Impulse Laplacian Poisson' -- $cur ) )
- return 0
- ;;
- -preview)
- COMPREPLY=( $( compgen -W 'Rotate Shear Roll Hue \
- Saturation Brightness Gamma Spiff \
- Dull Grayscale Quantize Despeckle \
- ReduceNoise AddNoise Sharpen Blur \
- Treshold EdgeDetect Spread Shade \
- Raise Segment Solarize Swirl Implode \
- Wave OilPaint CharcoalDrawing JPEG' \
- -- $cur ) )
- return 0
- ;;
- -@(mask|profile|texture|tile|write))
- _filedir
- return 0
- ;;
- -type)
- COMPREPLY=( $( compgen -W 'Bilevel Grayscale Palette \
- PaletteMatte TrueColor TrueColorMatte \
- ColorSeparation ColorSeparationlMatte \
- Optimize' -- $cur ) )
- return 0
- ;;
- -units)
- COMPREPLY=( $( compgen -W 'Undefined PixelsPerInch \
- PixelsPerCentimeter' -- $cur ) )
- return 0
- ;;
- -virtual-pixel)
- COMPREPLY=( $( compgen -W 'Constant Edge mirror tile' \
- -- $cur ) )
- return 0
- ;;
- -visual)
- COMPREPLY=( $( compgen -W 'StaticGray GrayScale \
- StaticColor PseudoColor TrueColor \
- DirectColor defaut visualid' -- $cur ))
- return 0
- ;;
- esac
- }
-
- _convert()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- _ImageMagick
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-adaptive-blur -adaptive-resize \
- -adaptive-sharpen -adjoin -affine -alpha -annotate \
- -antialias -append -attenuate -authenticate \
- -auto-orient -average -background -bench -bias \
- -black-point-compensation -black-threshold \
- -blue-primary -blur -border -bordercolor -caption \
- -channel -charcoal -chop -clip -clip-mask -clip-path \
- -clone -clut -coalesce -colorize -colors -colorspace \
- -combine -comment -compose -composite -compress \
- -contrast -contrast-stretch -convolve -crop -cycle \
- -debug -decipher -deconstruct -define -delay -delete \
- -density -depth -despeckle -display -dispose -distort \
- -dither -draw -edge -emboss -encipher -encoding \
- -endian -enhance -equalize -evaluate -extent -extract \
- -family -fill -filter -flatten -flip -floodfill -flop \
- -font -format -frame -fuzz -fx -gamma -gaussian-blur \
- -geometry -gravity -green-primary -help -identify \
- -implode -insert -intent -interlace -interpolate \
- -label -lat -layers -level -limit -linear-stretch \
- -liquid-rescale -list -log -loop -map -mask \
- -mattecolor -median -modulate -monitor -monochrome \
- -morph -mosaic -motion-blur -negate -noise -normalize \
- -opaque -ordered-dither -orient -page -paint -ping \
- -pointsize -polaroid -posterize -preview -print \
- -process -profile -quality -quantize -quiet \
- -radial-blur -raise -random-threshold -recolor \
- -red-primary -regard-warnings -region -render -repage \
- -resample -resize -respect-parenthesis -reverse -roll \
- -rotate -sample -sampling-factor -scale -scene -seed \
- -segment -separate -sepia-tone -set -shade -shadow \
- -sharpen -shave -shear -sigmoidal-contrast -size \
- -sketch -solarize -splice -spread -stretch -strip \
- -stroke -strokewidth -style -swap -swirl -taint \
- -texture -threshold -thumbnail -tile -tile-offset \
- -tint -transform -transparent -transparent-color \
- -transpose -transverse -treedepth -trim -type \
- -undercolor -unique-colors -units -unsharp -verbose \
- -version -view -vignette -virtual-pixel -wave \
- -weight -white-point -white-threshold \
- -write' -- $cur ) )
- elif [[ "$cur" == +* ]]; then
- COMPREPLY=( $( compgen -W '+adjoin +append +compress \
- +contrast +debug +dither +endian +gamma +label +map \
- +mask +matte +negate +noise +page +raise +render \
- +write' -- $cur ) )
- else
- _filedir
- fi
- }
- complete -F _convert $filenames convert
-
- _mogrify()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- _ImageMagick
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-adaptive-blur -adaptive-resize \
- -adaptive-sharpen -adjoin -affine -alpha -annotate \
- -antialias -attenuate -authenticate -auto-orient \
- -background -bias -black-point-compensation \
- -black-threshold -blue-primary -blur -border \
- -bordercolor -caption -channel -charcoal -chop -clip \
- -clip-mask -clip-path -clut -colorize -colors \
- -colorspace -comment -compose -compress -contrast \
- -contrast-stretch -convolve -cycle -debug -decipher \
- -define -delay -density -depth -despeckle -display \
- -dispose -distort -dither -draw -edge -emboss \
- -encipher -encoding -endian -enhance -equalize \
- -evaluate -extent -extract -family -fill -filter \
- -flip -floodfill -flop -font -format -frame -fuzz \
- -gamma -gaussian-blur -geometry -gravity \
- -green-primary -help -identify -implode -intent \
- -interlace -interpolate -label -lat -layers -level \
- -limit -linear-stretch -liquid-rescale -list -log \
- -loop -mask -mattecolor -median -modulate -monitor \
- -monochrome -motion-blur -negate -noise -normalize \
- -opaque -ordered-dither -orient -page -paint -path \
- -ping -pointsize -polaroid -posterize -preview -print \
- -profile -quality -quantize -quiet -radial-blur \
- -raise -random-threshold -recolor -red-primary \
- -regard-warnings -region -render -repage -resample \
- -resize -roll -rotate -sample -sampling-factor -scale \
- -scene -seed -segment -sepia-tone -set -shade -shadow \
- -sharpen -shave -shear -sigmoidal-contrast -size \
- -sketch -solarize -splice -spread -stretch -strip \
- -stroke -strokewidth -style -swirl -taint -texture \
- -threshold -thumbnail -tile -tile-offset -tint \
- -transform -transparent -transparent-color -transpose \
- -transverse -treedepth -trim -type -undercolor \
- -unique-colors -units -unsharp -verbose -version \
- -view -vignette -virtual-pixel -wave -weight \
- -white-point -white-threshold' -- $cur ) )
- elif [[ "$cur" == +* ]]; then
- COMPREPLY=( $( compgen -W '+compress +contrast +debug +dither \
- +endian +gamma +label +map +mask +matte +negate +page \
- +raise' -- $cur ) )
- else
- _filedir
- fi
- }
- complete -F _mogrify $filenames mogrify
-
- _display()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- _ImageMagick
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-alpha -antialias -authenticate \
- -auto-orient -backdrop -background -border \
- -bordercolor -borderwidth -channel -clip \
- -clip-path -coalesce -colormap -colors -colorspace \
- -comment -compress -contrast -crop -debug -decipher \
- -define -delay -density -depth -despeckle -display \
- -dispose -dither -edge -endian -enhance -extract \
- -filter -flatten -flip -flop -font -foreground \
- -format -frame -gamma -geometry -help -iconGeometry \
- -iconic -identify -immutable -interlace -interpolate \
- -label -limit -list -log -loop -map -mattecolor \
- -monitor -monochrome -name -negate -page -profile \
- -quality -quantize -quiet -raise -regard-warnings \
- -remote -repage -resample -resize \
- -respect-parenthesis -roll -rotate -sample \
- -sampling-factor -scenes -seed -segment -set \
- -shared-memory -sharpen -size -strip -texture -title \
- -transparent-color -treedepth -trim -update \
- -usePixmap -verbose -version -virtual-pixel -visual \
- -window -window-group -write' -- $cur ) )
- elif [[ "$cur" == +* ]]; then
- COMPREPLY=( $( compgen -W '+compress +contrast +debug +dither \
- +endian +gamma +label +map +matte +negate +page \
- +raise +write' -- $cur ) )
- else
- _filedir
- fi
- }
- complete -F _display $filenames display
-
- _animate()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- _ImageMagick
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-alpha -authenticate -backdrop \
- -background -bordercolor -borderwidth -channel \
- -coalesce -colormap -colors -colorspace -crop -debug \
- -decipher -define -delay -density -depth -display \
- -dispose -dither -extract -filter -flatten -font \
- -foreground -format -gamma -geometry -help \
- -iconGeometry -iconic -identify -immutable -interlace \
- -interpolate -limit -list -log -loop -map -mattecolor \
- -mattecolor -monitor -monochrome -name -page -pause \
- -quantize -quiet -regard-warnings -remote -repage \
- -resample -resize -respect-parenthesis -rotate \
- -sampling-factor -scenes -seed -set -shared-memory \
- -size -strip -title -transparent-color -treedepth \
- -trim -verbose -version -virtual-pixel -visual \
- -window' -- $cur ) )
- elif [[ "$cur" == +* ]]; then
- COMPREPLY=( $( compgen -W '+debug +dither +gamma +map +matte' -- $cur ) )
- else
- _filedir
- fi
- }
- complete -F _animate $filenames animate
-
- _identify()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- _ImageMagick
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-alpha -antialias -authenticate \
- -channel -colorspace -crop -debug -define -density \
- -depth -extract -format -fuzz -gamma -help -interlace \
- -interpolate -limit -list -log -monitor -ping -quiet \
- -regard-warnings -respect-parenthesis \
- -sampling-factor -seed -set -size -strip -units \
- -verbose -version -virtual-pixel' -- $cur ) )
- elif [[ "$cur" == +* ]]; then
- COMPREPLY=( $( compgen -W '+debug' -- $cur ) )
- else
- _filedir
- fi
- }
- complete -F _identify $filenames identify
-
- _montage()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- _ImageMagick
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-adjoin -affine -alpha \
- -authenticate -background -blue-primary -blur -border \
- -bordercolor -borderwidth -caption -channel -clone \
- -coalesce -colors -colorspace -comment -compose \
- -compress -crop -debug -define -density -depth \
- -display -dispose -dither -draw -encoding -endian \
- -extract -fill -filter -flatten -flip -flop -font \
- -format -frame -gamma -geometry -gravity \
- -green-primary -help -identify -interlace \
- -interpolate -label -limit -list -log -mattecolor \
- -mode -monitor -monochrome -origin -page -pointsize \
- -polaroid -profile -quality -quantize -quiet \
- -red-primary -regard-warnings -repage -resize \
- -respect-parenthesis -rotate -sampling-factor -scenes \
- -seed -set -shadow -size -strip -stroke -texture \
- -thumbnail -tile -title -transform -transparent \
- -transparent-color -treedepth -trim -type -units \
- -verbose -version -virtual-pixel \
- -white-point' -- $cur ) )
- elif [[ "$cur" == +* ]]; then
- COMPREPLY=( $( compgen -W '+adjoin +compress +debug +dither \
- +endian +gamma +label +matte +page' -- $cur ) )
- else
- _filedir
- fi
- }
- complete -F _montage $filenames montage
-
- _composite()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- _ImageMagick
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-affine -alpha -authenticate \
- -blend -blue-primary -border -bordercolor -channel \
- -colors -colorspace -comment -compose -compress \
- -debug -decipher -define -density -depth -displace \
- -display -dispose -dissolve -dither -encipher \
- -encoding -endian -extract -filter -font -format \
- -geometry -gravity -green-primary -help -identify \
- -interlace -interpolate -label -limit -list -log \
- -monitor -monochrome -negate -page -profile -quality \
- -quantize -quiet -red-primary -regard-warnings \
- -repage -resize -respect-parenthesis -rotate \
- -sampling-factor -scene -seed -sharpen -shave -size \
- -stegano -stereo -strip -swap -thumbnail -tile \
- -transform -transparent-color -treedepth -type -units \
- -unsharp -verbose -version -virtual-pixel -watermark \
- -white-point -write' -- $cur ) )
- elif [[ "$cur" == +* ]]; then
- COMPREPLY=( $( compgen -W '+compress +debug +dither +endian +label \
- +matte +negate +page +write' -- $cur ) )
- else
- _filedir
- fi
- }
- complete -F _composite $filenames composite
-
- _compare()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- _ImageMagick
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-alpha -authenticate -channel \
- -colorspace -compress -debug -decipher -define \
- -density -depth -encipher -extract -format -fuzz \
- -help -highlight-color -identify -interlace -limit \
- -list -log -metric -monitor -passphrase -profile \
- -quality -quantize -quiet -regard-warnings \
- -respect-parenthesis -sampling-factor -seed -set \
- -size -transparent-color -type -verbose -version \
- -virtual-pixel' -- $cur ) )
- elif [[ "$cur" == +* ]]; then
- COMPREPLY=( $( compgen -W '+debug' -- $cur ) )
- else
- _filedir
- fi
- }
- complete -F _compare $filenames compare
-
- _conjure()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- _ImageMagick
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-debug -help -list -log -monitor \
- -quiet -regard-warnings -seed -verbose \
- -version' -- $cur ) )
- elif [[ "$cur" == +* ]]; then
- COMPREPLY=( $( compgen -W '+debug' -- $cur ) )
- else
- _filedir
- fi
- }
- complete -F _conjure $filenames conjure
-
- _import()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- _ImageMagick
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-adjoin -annotate -border -channel \
- -colors -colorspace -comment -compress -crop -debug \
- -define -delay -density -depth -descend -display \
- -dispose -dither -encipher -encoding -endian -filter \
- -format -frame -geometry -gravity -help -identify \
- -interlace -interpolate -label -limit -list -log \
- -monitor -monochrome -negate -page -pause -pointsize \
- -quality -quantize -quiet -regard-warnings -repage \
- -resize -respect-parenthesis -rotate -sampling-factor \
- -scene -screen -seed -set -silent -snaps -strip \
- -thumbnail -transparent -transparent-color -treedepth \
- -trim -type -verbose -version -virtual-pixel \
- -window' -- $cur ) )
- elif [[ "$cur" == +* ]]; then
- COMPREPLY=( $( compgen -W '+debug' -- $cur ) )
- else
- _filedir
- fi
- }
- complete -F _import $filenames import
-
- _stream()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- _ImageMagick
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-authenticate -channel -colorspace \
- -compress -debug -define -density -depth -extract \
- -help -identify -interlace -interpolate -limit -list \
- -log -map -monitor -quantize -quiet -regard-warnings \
- -respect-parenthesis -sampling-factor -seed -set \
- -size -storage-type -transparent-color -verbose \
- -version -virtual-pixel' -- $cur ) )
- elif [[ "$cur" == +* ]]; then
- COMPREPLY=( $( compgen -W '+debug' -- $cur ) )
- else
- _filedir
- fi
- }
- complete -F _stream $filenames stream
- }
-
- # dd(1) completion
- #
- have dd &&
- _dd()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- case "$cur" in
- if=*|of=*)
- cur=${cur#*=}
- _filedir
- return 0
- ;;
- conv=*)
- cur=${cur#*=}
- COMPREPLY=( $( compgen -W 'ascii ebcdic ibm block unblock \
- lcase notrunc ucase swab noerror sync' \
- -- $cur ) )
- return 0
- ;;
- esac
-
- _expand || return 0
-
- COMPREPLY=( $( compgen -W '--help --version' -- $cur ) \
- $( compgen -W 'bs cbs conv count ibs if obs of seek skip'\
- -S '=' -- $cur ) )
- } &&
- complete -F _dd $nospace $filenames dd
-
- # CUPS cancel(1) completion
- #
- have cancel &&
- _cancel()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- COMPREPLY=( $( lpstat | cut -d' ' -f1 | grep "^$cur" ) )
- } &&
- complete -F _cancel $filenames cancel
-
- # aspell(1) completion
- #
- have aspell && {
- _aspell_dictionary()
- {
- local datadir
- datadir=/usr/lib/aspell
- COMPREPLY=( $( command ls $datadir/*.@(multi|alias) ) )
- COMPREPLY=( ${COMPREPLY[@]%.@(multi|alias)} )
- COMPREPLY=( $( compgen -W '${COMPREPLY[@]#$datadir/}' -- $cur ) )
- }
-
- _aspell()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- # --name value style option
- case "$prev" in
- @(-c|-p|check))
- _filedir
- return 0
- ;;
- @(dump|create|merge))
- COMPREPLY=( $( compgen -W 'master personal repl' -- $cur ) )
- return 0
- ;;
- -d)
- _aspell_dictionary
- return 0
- ;;
- esac
-
- # --name=value style option
- if [[ "$cur" == *=* ]]; then
- prev=${cur/=*/}
- cur=${cur/*=/}
- case "$prev" in
- --@(conf|personal|repl|per-conf))
- _filedir
- return 0
- ;;
- --@(conf-dir|data-dir|dict-dir|home-dir|local-data-dir|prefix))
- _filedir -d
- return 0
- ;;
- --master)
- _aspell_dictionary
- return 0
- ;;
- --mode)
- COMPREPLY=( $( compgen -W 'none url email sgml tex' -- $cur ) )
- return 0
- ;;
- --sug-mode)
- COMPREPLY=( $( compgen -W 'ultra fast normal bad-speller' -- $cur ) )
- return 0
- ;;
- --keymapping)
- COMPREPLY=( $( compgen -W 'aspell ispell' -- $cur ) )
- return 0
- ;;
- esac
- fi
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--conf= --conf-dir= --data-dir= --dict-dir= \
- --encoding= --add-filter= --rem-filter= --mode= -e \
- -H -t --add-extra-dicts= --rem-extra-dicts= \
- --home-dir= -W --ignore= --ignore-accents \
- --dont-ignore-accents --ignore-case --dont-ignore-case \
- --ignore-repl --dont-ignore-repl --jargon= --keyboard= \
- --lang= --language-tag= --local-data-dir= -d --master= \
- --module= --add-module-search-order= \
- --rem-module-search-order= --per-conf= -p --personal= \
- --prefix= --repl= -C -B --run-together --dont-run-together \
- --run-together-limit= --run-together-min= --save-repl \
- --dont-save-repl --set-prefix --dont-set-prefix --size= \
- --spelling= --strip-accents --dont-strip-accents \
- --sug-mode= --add-word-list-path= --rem-word-list-path= \
- -b -x --backup -b|-x --dont-backup --reverse --dont-reverse \
- --time --dont-time --keymapping= --add-email-quote= \
- --rem-email-quote= --email-margin= --add-tex-command= \
- --rem-tex-command= --tex-check-comments \
- --dont-tex-check-comments --add-tex-extension= \
- --rem-tex-extension= --add-sgml-check= --rem-sgml-check= \
- --add-sgml-extension= --rem-sgml-extension=' -- $cur ) )
- else
- COMPREPLY=( $( compgen -W '-? help -c check -a pipe -l list \
- config config soundslike filter -v version dump \
- create merge' -- $cur ) )
- fi
-
- }
- complete -F _aspell $filenames aspell
- }
-
- # xmms(1) completion
- #
- have xmms &&
- _xmms()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-h --help -r --rew -p --play \
- -u --pause -s --stop -t --play-pause -f --fwd -e \
- --enqueue -m --show-main-window -i --sm-client-id \
- -v --version' -- $cur ) )
- else
- _filedir '@(mp[23]|MP[23]|ogg|OGG|wav|WAV|pls|m3u|xm|mod|s[3t]m|it|mtm|ult|flac)'
-
- fi
-
- } &&
- complete -F _xmms $filenames xmms
-
- # info(1) completion
- #
- have info &&
- _info()
- {
- local cur infopath
-
- COMPREPLY=()
- cur=`_get_cword`
-
- _expand || return 0
-
- # default completion if parameter contains /
- if [[ "$cur" == */* ]]; then
- _filedir
- return 0
- fi
-
- infopath='/usr/share/info'
-
- if [ "${INFOPATH: -1:1}" == ':' ]; then
- infopath=${INFOPATH}${infopath}
- elif [ ${INFOPATH:+set} ]; then
- infopath=$INFOPATH
- fi
-
- infopath=$infopath:
- if [ -n "$cur" ]; then
- infopath="${infopath//://$cur* }"
- else
- infopath="${infopath//:// }"
- fi
-
- # redirect stderr for when path doesn't exist
- COMPREPLY=( $( eval command ls "$infopath" 2>/dev/null ) )
- # weed out directory path names and paths to info pages
- COMPREPLY=( ${COMPREPLY[@]##*/?(:)} )
- # weed out info dir file
- for (( i=0 ; i < ${#COMPREPLY[@]} ; ++i )); do
- if [ "${COMPREPLY[$i]}" == 'dir' ]; then
- unset COMPREPLY[$i];
- fi;
- done
- # strip suffix from info pages
- COMPREPLY=( ${COMPREPLY[@]%.@(gz|bz2|lzma)} )
- COMPREPLY=( $( compgen -W '${COMPREPLY[@]%.*}' -- "${cur//\\\\/}" ) )
-
- return 0
- } &&
- complete -F _info $filenames info
-
- # dhclient(1) completion
- #
- have dhclient && _dhclient()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(cf|lf|pf|sf))
- _filedir
- return 0
- ;;
- -s)
- _known_hosts
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-p -d -q -1 -r -lf -pf \
- -cf -sf -s -g -n -nw -w' -- $cur ) )
- else
- _available_interfaces
- fi
- } &&
- complete -F _dhclient dhclient
-
- # lvm(8) completion
- #
- have lvm && {
- _volumegroups()
- {
- COMPREPLY=( $(compgen -W "$( vgscan 2>/dev/null | \
- sed -n -e 's|.*Found.*"\(.*\)".*$|\1|p' )" -- $cur ) )
- }
-
- _physicalvolumes()
- {
- COMPREPLY=( $(compgen -W "$( pvscan 2>/dev/null | \
- sed -n -e 's|^.*PV \(.*\) VG.*$|\1|p' )" -- $cur ) )
- }
-
- _logicalvolumes()
- {
- COMPREPLY=( $(compgen -W "$( lvscan 2>/dev/null | \
- sed -n -e "s|^.*'\(.*\)'.*$|\1|p" )" -- $cur ) )
- }
-
- _units()
- {
- COMPREPLY=( $( compgen -W 'h s b k m g t H K M G T' -- $cur ) )
- }
-
- _sizes()
- {
- COMPREPLY=( $( compgen -W 'k K m M g G t T' -- $cur ) )
- }
-
- _args()
- {
- args=0
- if [[ "${COMP_WORDS[0]}" == lvm ]]; then
- offset=2
- else
- offset=1
- fi
- for (( i=$offset; i < COMP_CWORD; i++ )); do
- if [[ "${COMP_WORDS[i]}" != -* ]]; then
- args=$(($args + 1))
- fi
- done
- }
-
- _lvmdiskscan()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-d --debug -h -? --help -l \
- --lvmpartition -v --verbose --version' -- $cur ) )
- fi
- }
- complete -F _lvmdiskscan lvmdiskscan
-
- _pvscan()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-d --debug -e \
- --exported -n --novolumegroup -h -? \
- --help --ignorelockingfailure -P \
- --partial -s --short -u --uuid -v \
- --verbose --version' -- $cur ) )
- fi
- }
- complete -F _pvscan pvscan
-
- _pvs()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(o|O|-options|-sort))
- COMPREPLY=( $( compgen -W 'pv_fmt pv_uuid \
- pv_size pv_free pv_used pv_name \
- pv_attr pv_pe_count \
- pv_pe_alloc_count' -- $cur ) )
- return 0
- ;;
- --units)
- _units
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--aligned -a --all -d --debug \
- -h -? --help --ignorelockingfailure --noheadings \
- --nosuffix -o --options -O --sort \
- --separator --unbuffered --units \
- -v --verbose --version' -- $cur ) )
- else
- _physicalvolumes
- fi
- }
- complete -F _pvs pvs
-
- _pvdisplay()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- --units)
- _units
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-c --colon -C --columns --units \
- -v --verbose -d --debug -h --help --version' -- $cur ) )
- else
- _physicalvolumes
- fi
- }
- complete -F _pvdisplay pvdisplay
-
- _pvchange()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(A|x|-autobackup|--allocatable))
- COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-a --all -A --autobackup \
- -d --debug -h --help -t --test -u --uuid -x \
- --allocatable -v --verbose --addtag --deltag \
- --version' -- $cur ) )
- else
- _physicalvolumes
- fi
- }
- complete -F _pvchange pvchange
-
- _pvcreate()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- --restorefile)
- _filedir
- return 0
- ;;
- -@(M|-metadatatype))
- COMPREPLY=( $( compgen -W '1 2' -- $cur ) )
- return 0
- ;;
- --metadatacopies)
- COMPREPLY=( $( compgen -W '0 1 2' -- $cur ) )
- return 0
- ;;
- --@(metadatasize|setphysicalvolumesize))
- _sizes
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--restorefile -d --debug -f \
- --force -h -? --help --labelsector -M --metadatatype \
- --metadatacopies --metadatasize \
- --setphysicalvolumesize -t --test -u --uuid uuid -v \
- --verbose -y --yes --version' -- $cur ) )
- else
- _physicalvolumes
- fi
- }
- complete -F _pvcreate pvcreate
-
- _pvmove()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(A|-autobackup))
- COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
- return 0
- ;;
- -@(n|-name))
- _logicalvolumes
- return 0
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--abort -A --autobackup \
- -b --background -d --debug -f --force -h -? \
- --help -i --interval -t --test -v --verbose \
- --version -n --name' -- $cur ) )
- else
- _physicalvolumes
- fi
- }
- complete -F _pvmove pvmove
-
- _pvremove()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-d --debug -f --force -h -? \
- --help -y --yes -t --test -v --verbose \
- --version' -- $cur ) )
- else
- _physicalvolumes
- fi
- }
- complete -F _pvremove pvremove
-
- _vgscan()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-d --debug -h --help \
- --ignorelockingfailure --mknodes -P \
- --partial -v --verbose --version' -- $cur ) )
- fi
- }
- complete -F _vgscan vgscan
-
- _vgs()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(o|O|-options|-sort))
- COMPREPLY=( $( compgen -W 'vg_fmt vg_uuid vg_name \
- vg_attr vg_size vg_free vg_sysid \
- vg_extent_size vg_extent_count vg_free_count \
- max_lv max_pv pv_count lv_count snap_count \
- vg_seqno' -- $cur ) )
- return 0
- ;;
- --units)
- _units
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--aligned -d --debug \
- -h --help --ignorelockingfailure --noheadings \
- --nosuffix -o --options -O --sort -P --partial \
- --separator --unbuffered --units \
- -v --verbose --version' -- $cur ) )
- else
- _volumegroups
- fi
- }
- complete -F _vgs vgs
-
- _vgdisplay()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- --units)
- _units
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-c --colon -C --columns --units \
- -P --partial -A --activevolumegroups -v --verbose \
- -d --debug -h --help --version' -- $cur ) )
- else
- _volumegroups
- fi
- }
- complete -F _vgdisplay vgdisplay
-
- _vgchange()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(a|A|x|-available|-autobackup|-resizeable))
- COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-A --autobackup --alloc -P \
- --partial -d --debug -h --help --ignorelockingfailure \
- -t --test -u --uuid -v --verbose --version -a \
- --available -x --resizeable -l --logicalvolume \
- --addtag --deltag' -- $cur ) )
- else
- _volumegroups
- fi
- }
- complete -F _vgchange vgchange
-
- _vgcreate()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(A|-autobackup))
- COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
- return 0
- ;;
- -@(M|-metadatatype))
- COMPREPLY=( $( compgen -W '1 2' -- $cur ) )
- return 0
- ;;
- -@(s|-physicalextentsize))
- _sizes
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-A --autobackup --addtag \
- --alloc -d --debug -h --help -l --maxlogicalvolumes \
- -M --metadatatype -p --maxphysicalvolumes -s \
- --physicalextentsize -t --test -v --verbose \
- --version' -- $cur ) )
- else
- _args
- if [ $args -eq 0 ]; then
- _volumegroups
- else
- _physicalvolumes
- fi
- fi
- }
- complete -F _vgcreate vgcreate
-
- _vgremove()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-d --debug -h --help -t --test \
- -v --verbose --version' -- $cur ) )
- else
- _volumegroups
- fi
- }
- complete -F _vgremove vgremove
-
- _vgrename()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(A|-autobackup))
- COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-A --autobackup -d --debug -h \
- -? --help -t --test -v --verbose --version' -- $cur ) )
- else
- _volumegroups
- fi
- }
- complete -F _vgrename vgrename
-
- _vgreduce()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(A|-autobackup))
- COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-a --all -A --autobackup -d \
- --debug -h --help --removemissing -t --test -v \
- --verbose --version' -- $cur ) )
-
- else
- _args
- if [ $args -eq 0 ]; then
- _volumegroups
- else
- _physicalvolumes
- fi
- fi
- }
- complete -F _vgreduce vgreduce
-
- _vgextend()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(A|-autobackup))
- COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
- return 0
- ;;
- -@(L|-size))
- _sizes
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-A --autobackup -d --debug -h \
- -? --help -t --test -v --verbose --version' -- $cur ) )
- else
- _args
- if [ $args -eq 0 ]; then
- _volumegroups
- else
- _physicalvolumes
- fi
- fi
- }
- complete -F _vgextend vgextend
-
- _vgport()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-a --all -d --debug -h \
- -? --help -v --verbose --version' -- $cur ) )
- else
- _volumegroups
- fi
- }
- complete -F _vgport vgimport vgexport
-
- _vgck()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-d --debug -h \
- -? --help -v --verbose --version' -- $cur ) )
- else
- _volumegroups
- fi
- }
- complete -F _vgck vgck
-
- _vgconvert()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(M|-metadatatype))
- COMPREPLY=( $( compgen -W '1 2' -- $cur ) )
- return 0
- ;;
- --metadatacopies)
- COMPREPLY=( $( compgen -W '0 1 2' -- $cur ) )
- return 0
- ;;
- --metadatasize)
- _sizes
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-d --debug -h --help --labelsector \
- -M --metadatatype --metadatacopies --metadatasize \
- -t --test -v --verbose --version' -- $cur ) )
- else
- _volumegroups
- fi
- }
- complete -F _vgconvert vgconvert
-
- _vgcfgbackup()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(f|-file))
- _filedir
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-d --debug -f --file -h --help \
- --ignorelockingfailure -P --partial -v --verbose \
- --version' -- $cur ) )
- else
- _volumegroups
- fi
- }
- complete -F _vgcfgbackup vgcfgbackup
-
- _vgcfgrestore()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(f|-file))
- _filedir
- return 0
- ;;
- -@(M|-metadatatype))
- COMPREPLY=( $( compgen -W '1 2' -- $cur ) )
- return 0
- ;;
- -@(n|-name))
- _volumegroups
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-d --debug -f --file -l --list \
- -h --help -M --Metadatatype -n --name -t --test \
- -v --verbose --version' -- $cur ) )
- else
- _volumegroups
- fi
- }
- complete -F _vgcfgrestore vgcfgrestore
-
- _vgmerge()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(A|-autobackup))
- COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-A --autobackup -d --debug \
- -h --help -l --list -t --test -v --verbose \
- --version' -- $cur ) )
- else
- _volumegroups
- fi
- }
- complete -F _vgmerge vgmerge
-
- _vgsplit()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(A|-autobackup))
- COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
- return 0
- ;;
- -@(M|-metadatatype))
- COMPREPLY=( $( compgen -W '1 2' -- $cur ) )
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-A --autobackup -d --debug \
- -h --help -l --list -M --metadatatype -t --test \
- -v --verbose --version' -- $cur ) )
- else
- _args
- if [ $args -eq 0 -o $args -eq 1 ]; then
- _volumegroups
- else
- _physicalvolumes
- fi
- fi
- }
- complete -F _vgsplit vgsplit
-
- _vgmknodes()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-d --debug -h --help -v --verbose \
- --version' -- $cur ) )
- else
- _volumegroups
- fi
- }
- complete -F _vgmknodes vgmknodes
-
- _lvscan()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-b --blockdevice -d --debug \
- -h -? --help --ignorelockingfailure -P \
- --partial -v --verbose --version' -- $cur ) )
- fi
- }
- complete -F _lvscan lvscan
-
- _lvs()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(o|O|-options|-sort))
- COMPREPLY=( $( compgen -W 'lv_uuid lv_name \
- lv_attr lv_minor lv_size seg_count \
- origin snap_percent segtype stripes \
- stripesize chunksize seg_start \
- seg_size' -- $cur ) )
- return 0
- ;;
- --units)
- _units
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--aligned -d --debug \
- -h --help --ignorelockingfailure --noheadings \
- --nosuffix -o --options -O --sort -P --partial \
- --segments --separator --unbuffered --units \
- -v --verbose --version' -- $cur ) )
- else
- _logicalvolumes
- fi
- }
- complete -F _lvs lvs
-
- _lvdisplay()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- --units)
- _units
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-c --colon -C --columns --units \
- -P --partial -m --maps -v --verbose -d --debug -h \
- --help --version' -- $cur ) )
- else
- _logicalvolumes
- fi
- }
- complete -F _lvdisplay lvdisplay
-
- _lvchange()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(a|A|C|M|-available|-autobackup|-continguous|-persistent))
- COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
- return 0
- ;;
- -@(p|-permission))
- COMPREPLY=( $( compgen -W 'r rw' -- $cur ) )
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-A --autobackup -a --available \
- --addtag --alloc -C --contiguous -d --debug --deltag \
- -f --force -h --help --ignorelockingfailure -M \
- --persistent --major major --minor minor -P --partial \
- -p --permission -r --readahead --refresh -t --test \
- -v --verbose --version' -- $cur ) )
- else
- _logicalvolumes
- fi
- }
- complete -F _lvchange lvchange
-
- _lvcreate()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(A|C|M|Z|-autobackup|-continguous|-persistent|-zero))
- COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
- return 0
- ;;
- -@(L|-size))
- _sizes
- return 0
- ;;
- -@(p|-permission))
- COMPREPLY=( $( compgen -W 'r rw' -- $cur ) )
- return 0
- ;;
- -@(n|-name))
- _logicalvolumes
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-A --autobackup --addtag --alloc \
- -C --contiguous -d --debug -h -? --help -i --stripes \
- -I --stripesize -l --extents -L --size -M --persistent \
- --major --minor -n --name -p --permission -r \
- --readahead -t --test --type -v --verbose -Z --zero \
- --version' -- $cur ) )
- else
- _args
- if [ $args -eq 0 ]; then
- _volumegroups
- else
- _physicalvolumes
- fi
- fi
- }
- complete -F _lvcreate lvcreate
-
- _lvremove()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(A|-autobackup))
- COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-A --autobackup -d --debug -f \
- --force -h -? --help -t --test -v --verbose \
- --version' -- $cur ) )
- else
- _logicalvolumes
- fi
- }
- complete -F _lvremove lvremove
-
- _lvrename()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(A|-autobackup))
- COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-A --autobackup -d --debug -h \
- -? --help -t --test -v --verbose --version' -- $cur ) )
- else
- _logicalvolumes
- fi
- }
- complete -F _lvrename lvrename
-
- _lvreduce()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(A|-autobackup))
- COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
- return 0
- ;;
- -@(L|-size))
- _sizes
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-A --autobackup -d \
- --debug -f --force -h --help -l --extents \
- -L --size -n --nofsck -r --resizefs -t --test \
- -v --verbose --version' -- $cur ) )
- else
- _logicalvolumes
- fi
- }
- complete -F _lvreduce lvreduce
-
- _lvresize()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(A|-autobackup))
- COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
- return 0
- ;;
- -@(L|-size))
- _sizes
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-A --autobackup --alloc -d \
- --debug -h --help -i --stripes -I --stripesize \
- -l --extents -L --size -n --nofsck -r --resizefs \
- -t --test --type -v --verbose --version' -- $cur ) )
- else
- _args
- if [ $args -eq 0 ]; then
- _logicalvolumes
- else
- _physicalvolumes
- fi
- fi
- }
- complete -F _lvresize lvresize
-
- _lvextend()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case "$prev" in
- -@(A|-autobackup))
- COMPREPLY=( $( compgen -W 'y n' -- $cur ) )
- return 0
- ;;
- -@(L|-size))
- _sizes
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-A --autobackup --alloc -d \
- --debug -h --help -i --stripes -I --stripesize \
- -l --extents -L --size -n --nofsck -r --resizefs \
- -t --test --type -v --verbose --version' -- $cur ) )
- else
- _args
- if [ $args -eq 0 ]; then
- _logicalvolumes
- else
- _physicalvolumes
- fi
- fi
- }
- complete -F _lvextend lvextend
-
- _lvm()
- {
- local prev
-
- COMPREPLY=()
- cur=`_get_cword`
-
- if [ $COMP_CWORD -eq 1 ]; then
- COMPREPLY=( $( compgen -W 'dumpconfig help lvchange \
- lvcreate lvdisplay lvextend lvmchange \
- lvmdiskscan lvmsadc lvmsar lvreduce \
- lvremove lvrename lvresize lvs lvscan \
- pvchange pvcreate pvdata pvdisplay pvmove \
- pvremove pvresize pvs pvscan vgcfgbackup \
- vgcfgrestore vgchange vgck vgconvert \
- vgcreate vgdisplay vgexport vgextend \
- vgimport vgmerge vgmknodes vgreduce \
- vgremove vgrename vgs vgscan vgsplit \
- version' -- $cur ) )
- else
- case ${COMP_WORDS[1]} in
- pvchange)
- _pvchange
- ;;
- pvcreate)
- _pvcreate
- ;;
- pvdisplay)
- _pvdisplay
- ;;
- pvmove)
- _pvmove
- ;;
- pvremove)
- _pvremove
- ;;
- pvresize)
- _pvresize
- ;;
- pvs)
- _pvs
- ;;
- pvscan)
- _pvscan
- ;;
- vgcfgbackup)
- _vgcfgbackup
- ;;
- vgcfgrestore)
- _vgcfgrestore
- ;;
- vgchange)
- _vgchange
- ;;
- vgck)
- _vgck
- ;;
- vgconvert)
- _vgconvert
- ;;
- vgcreate)
- _vgcreate
- ;;
- vgdisplay)
- _vgdisplay
- ;;
- vgexport)
- _vgexport
- ;;
- vgextend)
- _vgextend
- ;;
- vgimport)
- _vgimport
- ;;
- vgmerge)
- _vgmerge
- ;;
- vgmknodes)
- _vgmknodes
- ;;
- vgreduce)
- _vgreduce
- ;;
- vgremove)
- _vgremove
- ;;
- vgrename)
- _vgrename
- ;;
- vgs)
- _vgs
- ;;
- vgscan)
- _vgscan
- ;;
- vgsplit)
- _vgsplit
- ;;
- lvchange)
- _lvchange
- ;;
- lvcreate)
- _lvcreate
- ;;
- lvdisplay)
- _lvdisplay
- ;;
- lvextend)
- _lvextend
- ;;
- lvreduce)
- _lvreduce
- ;;
- lvremove)
- _lvremove
- ;;
- lvrename)
- _lvrename
- ;;
- lvresize)
- _lvresize
- ;;
- lvs)
- _lvs
- ;;
- lvscan)
- _lvscan
- ;;
- esac
- fi
- }
- complete -F _lvm lvm
- }
-
- # mkinitrd(8) completion
- #
- have mkinitrd &&
- _mkinitrd()
- {
- local cur args
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- # --name value style option
- case "$prev" in
- --preload)
- _modules
- return 0
- ;;
- esac
-
- # --name=value style option
- if [[ "$cur" == *=* ]]; then
- prev=${cur/=*/}
- cur=${cur/*=/}
- case "$prev" in
- --@(with|builtin))
- _modules
- return 0
- ;;
- --@(fstab|dsdt))
- _filedir
- return 0
- ;;
- --tmpdir)
- _filedir -d
- return 0
- ;;
- esac
- fi
-
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--version -v -f --preload \
- --with= --omit-scsi-modules --omit-raid-modules \
- --images-version --fstab= --nocompress --builtin= \
- --nopivot --noudev --allow-missing --tmpdir= \
- --initrdfs= --dsdt= --lvm-version= --froce-usb' \
- -- $cur ) )
- else
- _count_args
-
- case $args in
- 1)
- _filedir
- ;;
- 2)
- COMPREPLY=( $( command ls /lib/modules | grep "^$cur" ) )
- ;;
- esac
- fi
-
- } &&
- complete -F _mkinitrd mkinitrd
-
- # pkgconfig(1) completion
- #
- have pkg-config &&
- _pkg_config()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- if [[ "$cur" == -* ]]; then
- # return list of available options
- COMPREPLY=( $( compgen -W '-version --modversion \
- --atleast-pkgconfig-version= --libs --libs-only-l \
- --libs-only-other --libs-only-L --cflags \
- --cflags-only-I --cflags-only-other --variable= \
- --define-variable= --exists --uninstalled \
- --atleast-version= --exact-version= --max-version= \
- --list-all --debug --print-errors --silence-errors \
- --errors-to-stdout -? --help --usage' -- $cur))
- else
- COMPREPLY=( $( pkg-config --list-all 2>/dev/null | \
- awk '{print $1}' | grep "^$cur" ) )
- fi
- } &&
- complete -F _pkg_config pkg-config
-
-
- # cpio(1) completion
- #
- have cpio && {
- _cpio_format()
- {
- COMPREPLY=( $( compgen -W 'bin odc newc crc tar ustar hpbin hpodc' -- $cur ) )
- }
-
- _cpio()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- # --name value style option
- case $prev in
- -H)
- _cpio_format
- return 0
- ;;
- -@(E|F|I))
- _filedir
- return 0
- ;;
- -R)
- _usergroup
- return 0
- ;;
- esac
-
- # --name=value style option
- if [[ "$cur" == *=* ]]; then
- prev=${cur/=*/}
- cur=${cur/*=/}
- case $prev in
- --format)
- _cpio_format
- return 0
- ;;
- --@(file|pattern-file))
- _filedir
- return 0
- ;;
- --owner)
- _usergroup
- return 0
- ;;
- --rsh-command)
- COMPREPLY=( $( compgen -c -- $cur ) )
- return 0
- ;;
- esac
- fi
-
- if [ $COMP_CWORD -eq 1 ]; then
- COMPREPLY=( $( compgen -W '-o --create -i --extract -p --pass-through' -- $cur) )
- else
- case ${COMP_WORDS[1]} in
- -@(o|-create))
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-0 -a -c -v -A -B\
- -L -V -C -H -M -O -F --file= --format=\
- --message= --null --reset-access-time\
- --verbose --dot --append --block-size=\
- --dereference --io-size= --quiet\
- --force-local --rsh-command= --help\
- --version' -- $cur ) )
- fi
- ;;
- -@(i|-extract))
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-b -c -d -f -m -n -r\
- -t -s -u -v -B -S -V -C -E -H -M -R -I\
- -F --file= --make-directories\
- --nonmatching\
- --preserve-modification-time\
- --numeric-uid-gid --rename -t --list\
- --swap-bytes --swap --dot\
- --unconditional --verbose --block-size=\
- --swap-halfwords --io-size=\
- --pattern-file= --format= --owner=\
- --no-preserve-owner --message=\
- --force-local --no-absolute-filenames\
- --sparse --only-verify-crc --quiet\
- --rsh-command= --help\
- --version' -- $cur ) )
- fi
- ;;
- -@(p|-pass-through))
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-0 -a -d -l -m -u -v\
- -L -V -R --null --reset-access-time\
- --make-directories --link --quiet\
- --preserve-modification-time\
- --unconditional --verbose --dot\
- --dereference --owner=\
- --no-preserve-owner --sparse --help\
- --version' -- $cur ) )
- else
- _filedir -d
- fi
- ;;
- esac
- fi
- }
- complete -F _cpio cpio
- }
-
# id(1) completion
#
have id &&
@@@ -8806,456 -1559,13 +1558,13 @@@ _id(
if [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W '-a -g --group -G --groups -n --name\
- -r --real -u --user --help --version' -- $cur ) )
+ -r --real -u --user --help --version' -- "$cur" ) )
else
- COMPREPLY=( $( compgen -u $cur ) )
+ COMPREPLY=( $( compgen -u "$cur" ) )
fi
} &&
complete -F _id id
- # getent(1) completion
- #
- have getent &&
- _getent()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case $prev in
- passwd)
- COMPREPLY=( $( compgen -u $cur ) )
- return 0
- ;;
- group)
- COMPREPLY=( $( compgen -g $cur ) )
- return 0
- ;;
- services)
- COMPREPLY=( $( compgen -s $cur ) )
- return 0
- ;;
- hosts)
- COMPREPLY=( $( compgen -A hostname $cur ) )
- return 0
- ;;
- protocols|networks|ahosts|ahostsv4|ahostsv6|rpc)
- COMPREPLY=( $( getent $prev | \
- sed -ne 's|^\('$cur'[^[:space:]]*\).*|\1|p' ) )
- return 0
- ;;
- aliases|shadow)
- COMPREPLY=( $( getent $prev | \
- sed -ne 's|^\('$cur'[^:]*\).*|\1|p' ) )
- return 0
- ;;
- esac
-
-
- if [ $COMP_CWORD -eq 1 ]; then
- COMPREPLY=( $( compgen -W 'passwd group hosts services \
- protocols networks ahosts ahostsv4 \
- ahostsv6 aliases ethers netgroup \
- rpc shadow' -- $cur ) )
- fi
- } &&
- complete -F _getent getent
-
- # ntpdate(1) completion
- #
- have ntpdate &&
- _ntpdate()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case $prev in
- -k)
- _filedir
- return 0
- ;;
- -U)
- COMPREPLY=( $( compgen -u $cur ) )
- return 0
- ;;
- esac
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-4 -6 -b -B -d -Q -q -s -u -v -a\
- -e -k -p -o -r -t' -- $cur ) )
- else
- _known_hosts
- fi
- } &&
- complete -F _ntpdate ntpdate
-
- # smartctl(8) completion
- #
- have smartctl && {
- _smartctl_quietmode()
- {
- COMPREPLY=( $( compgen -W 'errorsonly silent' -- $cur ) )
- }
- _smartctl_device()
- {
- COMPREPLY=( $( compgen -W 'ata scsi 3ware' -- $cur ) )
- }
- _smartctl_tolerance()
- {
- COMPREPLY=( $( compgen -W 'warn exit ignore' -- $cur ) )
- }
- _smartctl_badsum()
- {
- COMPREPLY=( $( compgen -W 'normal conservative permissive verypermissive' -- $cur ) )
- }
- _smartctl_report()
- {
- COMPREPLY=( $( compgen -W 'ioctl ataioctl scsiioctl' -- $cur ) )
- }
- _smartctl_feature()
- {
- COMPREPLY=( $( compgen -W 'on off' -- $cur ) )
- }
- _smartctl_log()
- {
- COMPREPLY=( $( compgen -W 'error selftest selective directory' -- $cur ) )
- }
- _smartctl_vendorattribute()
- {
- COMPREPLY=( $( compgen -W 'help 9,minutes 9,seconds 9,halfminutes \
- 9,temp 192,emergencyretractcyclect 193,loadunload \
- 194,10xCelsius 194,unknown 198,offlinescanuncsectorct \
- 200,writeerrorcount 201,detectedtacount 220,temp' -- $cur ) )
- }
- _smartctl_firmwarebug()
- {
- COMPREPLY=( $( compgen -W 'none samsung samsung2' -- $cur ) )
- }
- _smartctl_presets()
- {
- COMPREPLY=( $( compgen -W 'use ignore show showall' -- $cur ) )
- }
- _smartctl_test()
- {
- COMPREPLY=( $( compgen -W 'offline short long conveyance select afterselect,on afterselect,off pending' -- $cur ) )
- }
-
- _smartctl()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- # --name value style option
- case "$prev" in
- -q)
- _smartctl_quietmode
- ;;
- -d)
- _smartctl_device
- return 0
- ;;
- -t)
- _smartctl_tolerance
- return 0
- ;;
- -b)
- _smartctl_badsum
- return 0
- ;;
- -r)
- _smartctl_report
- return 0
- ;;
- -s)
- _smartctl_feature
- return 0
- ;;
- -o)
- _smartctl_feature
- return 0
- ;;
- -S)
- _smartctl_feature
- return 0
- ;;
- -l)
- _smartctl_log
- return 0
- ;;
- -v)
- _smartctl_vendorattribute
- return 0
- ;;
- -F)
- _smartctl_firmwarebug
- return 0
- ;;
- -P)
- _smartctl_presets
- return 0
- ;;
- -t)
- _smartctl_test
- return 0
- ;;
- esac
-
- # --name=value style option
- if [[ "$cur" == *=* ]]; then
- prev=${cur/=*/}
- cur=${cur/*=/}
- case "$prev" in
- --quietmode)
- _smartctl_quietmode
- return 0
- ;;
- --device)
- _smartctl_device
- return 0
- ;;
- --tolerance)
- _smartctl_tolerance
- return 0
- ;;
- --badsum)
- _smartctl_badsum
- return 0
- ;;
- --report)
- _smartctl_report
- return 0
- ;;
- --smart)
- _smartctl_feature
- return 0
- ;;
- --offlineauto)
- _smartctl_feature
- return 0
- ;;
- --saveauto)
- _smartctl_feature
- return 0
- ;;
- --log)
- _smartctl_log
- return 0
- ;;
- --vendorattribute)
- _smartctl_vendorattribute
- return 0
- ;;
- --firmwarebug)
- _smartctl_firmwarebug
- return 0
- ;;
- --presets)
- _smartctl_presets
- return 0
- ;;
- --test)
- _smartctl_test
- return 0
- ;;
- esac
- fi
-
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-h --help --usage -V --version \
- --copyright --license-i --info -a --all -q \
- --quietmode= -d --device= -T --tolerance= -b --badsum= \
- -r --report= -s --smart= -o --offlineauto= -S \
- --saveauto= -H --health -c --capabilities -A \
- --attributes -l --log= -v --vendorattribute= -F \
- --firmwarebug= -P --presets= -t --test= -C \
- --captive -X --abort' -- $cur ) )
- else
- cur=${cur:=/dev/}
- _filedir
- fi
- }
- complete -F _smartctl smartctl
- }
-
- # sysctl(8) completion
- #
- have sysctl &&
- _sysctl()
- {
- local cur
-
- COMPREPLY=()
- cur=`_get_cword`
-
- COMPREPLY=( $( compgen -W "$(sysctl -N -a 2>/dev/null)" -- $cur ) )
-
- return 0
- } &&
- complete -F _sysctl sysctl
-
- # update-rc.d(8) completion
- #
- # Copyright (C) 2004 Servilio Afre Puentes <servilio at gmail.com>
- #
- have update-rc.d &&
- _update_rc_d()
- {
- local cur prev sysvdir services options valid_options
-
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- [ -d /etc/rc.d/init.d ] && sysvdir=/etc/rc.d/init.d \
- || sysvdir=/etc/init.d
-
- services=( $(echo $sysvdir/!(README*|*.sh|*.dpkg*|*.rpm@(orig|new|save))) )
- services=( ${services[@]#$sysvdir/} )
- options=( -f -n )
-
- if [[ $COMP_CWORD -eq 1 || "$prev" == -* ]]; then
- valid_options=( $( \
- echo "${COMP_WORDS[@]} ${options[@]}" \
- | tr " " "\n" \
- | sed -ne "/$( echo "${options[@]}" | sed "s/ /\\|/g" )/p" \
- | sort | uniq -u \
- ) )
- COMPREPLY=( $( compgen -W '${options[@]} ${services[@]}' \
- -X '$( echo ${COMP_WORDS[@]} | tr " " "|" )' -- $cur ) )
- elif [[ "$prev" == ?($( echo ${services[@]} | tr " " "|" )) ]]; then
- COMPREPLY=( $( compgen -W 'remove defaults start stop' -- $cur ) )
- elif [[ "$prev" == defaults && "$cur" == [0-9] ]]; then
- COMPREPLY=( 0 1 2 3 4 5 6 7 8 9 )
- elif [[ "$prev" == defaults && "$cur" == [sk]?([0-9]) ]]; then
- COMPREPLY=( 0 1 2 3 4 5 6 7 8 9 )
- elif [[ "$prev" == defaults && -z "$cur" ]]; then
- COMPREPLY=( 0 1 2 3 4 5 6 7 8 9 s k )
- elif [[ "$prev" == ?(start|stop) ]]; then
- if [[ "$cur" == [0-9] || -z "$cur" ]]; then
- COMPREPLY=( 0 1 2 3 4 5 6 7 8 9 )
- elif [[ "$cur" == [0-9][0-9] ]]; then
- COMPREPLY=( $cur )
- else
- COMPREPLY=()
- fi
- elif [[ "$prev" == ?([0-9][0-9]|[0-6S]) ]]; then
- if [[ -z "$cur" ]]; then
- if [[ $prev == [0-9][0-9] ]]; then
- COMPREPLY=( 0 1 2 3 4 5 6 S )
- else
- COMPREPLY=( 0 1 2 3 4 5 6 S . )
- fi
- elif [[ "$cur" == [0-6S.] ]]; then
- COMPREPLY=( $cur )
- else
- COMPREPLY=()
- fi
- elif [[ "$prev" == "." ]]; then
- COMPREPLY=( $(compgen -W "start stop" -- $cur) )
- else
- COMPREPLY=()
- fi
-
- return 0
- } &&
- complete -F _update_rc_d update-rc.d
-
- # invoke-rc.d(8) completion
- #
- # Copyright (C) 2004 Servilio Afre Puentes <servilio at gmail.com>
- #
- have invoke-rc.d &&
- _invoke_rc_d()
- {
- local cur prev sysvdir services options valid_options
-
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- [ -d /etc/rc.d/init.d ] && sysvdir=/etc/rc.d/init.d \
- || sysvdir=/etc/init.d
-
- services=( $(echo $sysvdir/!(README*|*.sh|*.dpkg*|*.rpm@(orig|new|save))) )
- services=( ${services[@]#$sysvdir/} )
- options=( --help --quiet --force --try-anyway --disclose-deny --query --no-fallback )
-
- if [[ ($COMP_CWORD -eq 1) || ("$prev" == --* ) ]]; then
- valid_options=( $( \
- echo ${COMP_WORDS[@]} ${options[@]} \
- | tr " " "\n" \
- | sed -ne "/$( echo ${options[@]} | sed "s/ /\\\\|/g" )/p" \
- | sort | uniq -u \
- ) )
- COMPREPLY=( $( compgen -W '${valid_options[@]} ${services[@]}' -- \
- $cur ) )
- elif [ -x $sysvdir/$prev ]; then
- COMPREPLY=( $( compgen -W '`sed -ne "y/|/ /; \
- s/^.*Usage:[ ]*[^ ]*[ ]*{*\([^}\"]*\).*$/\1/p" \
- $sysvdir/$prev`' -- \
- $cur ) )
- else
- COMPREPLY=()
- fi
-
- return 0
- } &&
- complete -F _invoke_rc_d invoke-rc.d
-
- # minicom(1) completion
- #
- have minicom &&
- _minicom()
- {
- local cur prev
-
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- case $prev in
- -@(a|c))
- COMPREPLY=( $( compgen -W 'on off' -- $cur ) )
- return 0
- ;;
- -@(S|C))
- _filedir
- return 0
- ;;
- -P)
- COMPREPLY=( $( command ls /dev/tty* ) )
- COMPREPLY=( $( compgen -W '${COMPREPLY[@]} ${COMPREPLY[@]#/dev/}' -- $cur ) )
- return 0
- ;;
- esac
-
-
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-s -o -m -M -z -l -L -w -a -t \
- -c -S -d -p -C -T -8' -- $cur ) )
- else
- COMPREPLY=( $( command ls /etc/minicom/minirc.* 2>/dev/null | sed -e 's|/etc/minicom/minirc.||' | grep "^$cur" ) )
- fi
- } &&
- complete -F _minicom minicom
-
- have rrdtool &&
- _rrdtool ()
- {
- cur=`_get_cword`
- COMPREPLY=( $( compgen -W 'create update updatev graph dump \
- restore last lastupdate first info \
- fetch tune resize xport' -- $cur ) )
- } &&
- complete -F _rrdtool rrdtool
-
_filedir_xspec()
{
local IFS cur xspec
@@@ -9284,7 -1594,7 +1593,7 @@@
done
}
))
-
+
toks=( ${toks[@]-} $(
eval compgen -f -X "$xspec" -- "\$(quote_readline "\$cur")" | {
while read -r tmp; do
@@@ -9292,7 -1602,7 +1601,7 @@@
done
}
))
-
+
COMPREPLY=( "${toks[@]}" )
}
list=( $( sed -ne '/^# START exclude/,/^# FINISH exclude/p' \
@@@ -9320,7 -1630,15 +1629,14 @@@ f
unset list
# source completion directory definitions
+ if [ -d $BASH_COMPLETION_COMPAT_DIR -a -r $BASH_COMPLETION_COMPAT_DIR -a \
+ -x $BASH_COMPLETION_COMPAT_DIR ]; then
+ for i in $BASH_COMPLETION_COMPAT_DIR/*; do
+ [[ ${i##*/} != @(*~|*.bak|*.swp|\#*\#|*.dpkg*|*.rpm@(orig|new|save)) ]] &&
+ [ \( -f $i -o -h $i \) -a -r $i ] && . $i
+ done
+ fi
if [ -d $BASH_COMPLETION_DIR -a -r $BASH_COMPLETION_DIR -a \
- $BASH_COMPLETION_DIR != $BASH_COMPLETION_COMPAT_DIR -a \
-x $BASH_COMPLETION_DIR ]; then
for i in $BASH_COMPLETION_DIR/*; do
[[ ${i##*/} != @(*~|*.bak|*.swp|\#*\#|*.dpkg*|*.rpm@(orig|new|save)) ]] &&
@@@ -9333,8 -1651,16 +1649,16 @@@ unset
[ $BASH_COMPLETION != ~/.bash_completion -a -r ~/.bash_completion ] \
&& . ~/.bash_completion
unset -f have
- unset UNAME RELEASE default dirnames filenames have nospace bashdefault \
- plusdirs
+ unset UNAME USERLAND default dirnames filenames have nospace bashdefault \
+ plusdirs compopt
set $BASH_COMPLETION_ORIGINAL_V_VALUE
unset BASH_COMPLETION_ORIGINAL_V_VALUE
+
+ # Local variables:
+ # mode: shell-script
+ # sh-basic-offset: 8
+ # sh-indent-comment: t
+ # indent-tabs-mode: t
+ # End:
+ # ex: ts=8 sw=8 noet filetype=sh
--
bash-completion
More information about the Bash-completion-commits
mailing list