[Bash-completion-commits] [SCM] bash-completion branch, master, updated. 1.3

David Paleino d.paleino at gmail.com
Sun Feb 6 20:12:46 UTC 2011


The following commit has been merged in the master 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,5 -1,3 +1,3 @@@
- # -*- 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