summaryrefslogtreecommitdiff
path: root/completions
diff options
context:
space:
mode:
authorDavid Paleino <dapal@debian.org>2011-02-06 21:26:41 +0100
committerDavid Paleino <dapal@debian.org>2011-02-06 21:26:41 +0100
commit9920a8faedf704420571d8072ccab27e9dac40ba (patch)
tree733edf3b07be06c130d04aaa1884213326722cad /completions
parentf9748115fb4b2950fb4df7535fb723c4affde078 (diff)
downloadbash-completion-9920a8faedf704420571d8072ccab27e9dac40ba.tar.gz
Imported Upstream version 1.3upstream/1.3
Diffstat (limited to 'completions')
-rw-r--r--completions/Makefile.am183
-rw-r--r--completions/Makefile.in734
-rw-r--r--completions/_mock85
-rw-r--r--completions/_modules92
-rw-r--r--completions/_subversion360
-rw-r--r--completions/_yum157
-rw-r--r--completions/_yum-utils31
-rw-r--r--completions/abook62
-rw-r--r--completions/ant70
-rw-r--r--completions/apache2ctl24
-rw-r--r--completions/apt157
-rw-r--r--completions/apt-build66
-rw-r--r--completions/aptitude98
-rw-r--r--completions/aspell96
-rw-r--r--completions/autoconf124
-rw-r--r--completions/automake80
-rw-r--r--completions/autorpm23
-rw-r--r--completions/bash-builtins128
-rw-r--r--completions/bind-utils23
-rw-r--r--completions/bitkeeper26
-rw-r--r--completions/bittorrent41
-rw-r--r--completions/bluez432
-rw-r--r--completions/brctl48
-rw-r--r--completions/bzip251
-rw-r--r--completions/cardctl24
-rw-r--r--completions/cfengine88
-rw-r--r--completions/chkconfig44
-rw-r--r--completions/chsh37
-rw-r--r--completions/cksfv38
-rw-r--r--completions/clisp31
-rw-r--r--completions/configure44
-rw-r--r--completions/coreutils149
-rw-r--r--completions/cowsay31
-rw-r--r--completions/cpan2dist52
-rw-r--r--completions/cpio103
-rw-r--r--completions/crontab60
-rw-r--r--completions/cryptsetup113
-rw-r--r--completions/cups21
-rw-r--r--completions/cvs392
-rw-r--r--completions/cvsps69
-rw-r--r--completions/dd39
-rw-r--r--completions/dhclient36
-rw-r--r--completions/dict77
-rw-r--r--completions/dpkg244
-rw-r--r--completions/dselect40
-rw-r--r--completions/dsniff256
-rw-r--r--completions/dvd+rw-tools47
-rw-r--r--completions/e2fsprogs180
-rw-r--r--completions/findutils128
-rw-r--r--completions/freeciv65
-rw-r--r--completions/freerdp47
-rw-r--r--completions/fuse36
-rw-r--r--completions/gcc59
-rw-r--r--completions/gcl30
-rw-r--r--completions/gdb44
-rw-r--r--completions/genisoimage77
-rw-r--r--completions/getent55
-rw-r--r--completions/gkrellm54
-rw-r--r--completions/gnatmake37
-rw-r--r--completions/gpg48
-rw-r--r--completions/gpg252
-rw-r--r--completions/gzip55
-rw-r--r--completions/heimdal133
-rw-r--r--completions/helpers/Makefile.am3
-rw-r--r--completions/helpers/Makefile.in365
-rwxr-xr-xcompletions/helpers/perl88
-rw-r--r--completions/hping255
-rw-r--r--completions/iconv46
-rw-r--r--completions/iftop35
-rw-r--r--completions/ifupdown27
-rw-r--r--completions/imagemagick532
-rw-r--r--completions/info58
-rw-r--r--completions/ipmitool214
-rw-r--r--completions/iproute2285
-rw-r--r--completions/ipsec51
-rw-r--r--completions/iptables70
-rw-r--r--completions/ipv6calc57
-rw-r--r--completions/isql20
-rw-r--r--completions/jar36
-rw-r--r--completions/java533
-rw-r--r--completions/k3b55
-rw-r--r--completions/kldload40
-rw-r--r--completions/larch48
-rw-r--r--completions/ldapvi72
-rw-r--r--completions/lftp52
-rw-r--r--completions/lilo60
-rw-r--r--completions/links43
-rw-r--r--completions/lintian186
-rw-r--r--completions/lisp31
-rw-r--r--completions/lrzip64
-rw-r--r--completions/lsof64
-rw-r--r--completions/lvm1094
-rw-r--r--completions/lzma46
-rw-r--r--completions/lzop69
-rw-r--r--completions/mailman587
-rw-r--r--completions/make78
-rw-r--r--completions/man80
-rw-r--r--completions/mc47
-rw-r--r--completions/mcrypt84
-rw-r--r--completions/mdadm162
-rw-r--r--completions/medusa41
-rw-r--r--completions/minicom53
-rw-r--r--completions/mkinitrd59
-rw-r--r--completions/module-init-tools61
-rw-r--r--completions/monodevelop86
-rw-r--r--completions/mount165
-rw-r--r--completions/mplayer269
-rw-r--r--completions/msynctool51
-rw-r--r--completions/mtx51
-rw-r--r--completions/munin-node113
-rw-r--r--completions/mutt186
-rw-r--r--completions/mysqladmin71
-rw-r--r--completions/ncftp26
-rw-r--r--completions/net-tools131
-rw-r--r--completions/nmap60
-rw-r--r--completions/ntpdate37
-rw-r--r--completions/open-iscsi78
-rw-r--r--completions/openldap266
-rw-r--r--completions/openssl254
-rw-r--r--completions/p458
-rw-r--r--completions/perl131
-rw-r--r--completions/pine22
-rw-r--r--completions/pkg-config51
-rw-r--r--completions/pkg_install30
-rw-r--r--completions/pkgtools22
-rw-r--r--completions/pm-utils37
-rw-r--r--completions/portupgrade57
-rw-r--r--completions/postfix233
-rw-r--r--completions/postgresql162
-rw-r--r--completions/povray65
-rw-r--r--completions/procps49
-rw-r--r--completions/python55
-rw-r--r--completions/qdbus23
-rw-r--r--completions/qemu132
-rw-r--r--completions/quota-tools257
-rw-r--r--completions/rcs43
-rw-r--r--completions/rdesktop57
-rw-r--r--completions/reportbug132
-rw-r--r--completions/resolvconf30
-rw-r--r--completions/rfkill37
-rw-r--r--completions/ri96
-rw-r--r--completions/rpcdebug57
-rw-r--r--completions/rpm309
-rw-r--r--completions/rpmcheck33
-rw-r--r--completions/rrdtool20
-rw-r--r--completions/rsync92
-rw-r--r--completions/rtcwake40
-rw-r--r--completions/samba298
-rw-r--r--completions/sbcl31
-rw-r--r--completions/screen66
-rw-r--r--completions/service47
-rw-r--r--completions/sh41
-rw-r--r--completions/shadow482
-rw-r--r--completions/sitecopy40
-rw-r--r--completions/smartctl146
-rw-r--r--completions/snownews25
-rw-r--r--completions/sqlite339
-rw-r--r--completions/ssh428
-rw-r--r--completions/sshfs34
-rw-r--r--completions/strace103
-rw-r--r--completions/svk225
-rw-r--r--completions/sysbench175
-rw-r--r--completions/sysctl24
-rw-r--r--completions/sysv-rc110
-rw-r--r--completions/tar72
-rw-r--r--completions/tcpdump37
-rw-r--r--completions/unace29
-rw-r--r--completions/unrar32
-rw-r--r--completions/update-alternatives100
-rw-r--r--completions/util-linux76
-rw-r--r--completions/vncviewer130
-rw-r--r--completions/vpnc49
-rw-r--r--completions/wireless-tools180
-rw-r--r--completions/wodim118
-rw-r--r--completions/wol47
-rw-r--r--completions/wtf36
-rw-r--r--completions/wvdial52
-rw-r--r--completions/xhost25
-rw-r--r--completions/xm233
-rw-r--r--completions/xmllint55
-rw-r--r--completions/xmlwf39
-rw-r--r--completions/xmms30
-rw-r--r--completions/xmodmap32
-rw-r--r--completions/xrandr52
-rw-r--r--completions/xrdb37
-rw-r--r--completions/xsltproc56
-rw-r--r--completions/xz102
-rw-r--r--completions/yp-tools36
-rw-r--r--completions/yum-arch24
189 files changed, 20144 insertions, 0 deletions
diff --git a/completions/Makefile.am b/completions/Makefile.am
new file mode 100644
index 00000000..38cd986d
--- /dev/null
+++ b/completions/Makefile.am
@@ -0,0 +1,183 @@
+SUBDIRS = helpers
+bashcomp_DATA = abook \
+ ant \
+ apache2ctl \
+ apt \
+ apt-build \
+ aptitude \
+ aspell \
+ autoconf \
+ automake \
+ autorpm \
+ bash-builtins \
+ bind-utils \
+ bitkeeper \
+ bittorrent \
+ bluez \
+ brctl \
+ bzip2 \
+ cardctl \
+ cfengine \
+ chkconfig \
+ chsh \
+ cksfv \
+ clisp \
+ configure \
+ coreutils \
+ cowsay \
+ cpan2dist \
+ cpio \
+ crontab \
+ cups \
+ cryptsetup \
+ cvs \
+ cvsps \
+ dd \
+ dhclient \
+ dict \
+ dpkg \
+ dselect \
+ dsniff \
+ dvd+rw-tools \
+ e2fsprogs \
+ findutils \
+ freeciv \
+ freerdp \
+ fuse \
+ gcc \
+ gcl \
+ gdb \
+ genisoimage \
+ getent \
+ gkrellm \
+ gnatmake \
+ gpg \
+ gpg2 \
+ gzip \
+ heimdal \
+ hping2 \
+ iconv \
+ iftop \
+ ifupdown \
+ imagemagick \
+ info \
+ iptables \
+ ipmitool \
+ iproute2 \
+ ipsec \
+ ipv6calc \
+ isql \
+ jar \
+ java \
+ k3b \
+ kldload \
+ larch \
+ ldapvi \
+ lftp \
+ lilo \
+ links \
+ lintian \
+ lisp \
+ lrzip \
+ lsof \
+ lvm \
+ lzma \
+ lzop \
+ mailman \
+ make \
+ man \
+ mc \
+ mcrypt \
+ mdadm \
+ medusa \
+ minicom \
+ mkinitrd \
+ module-init-tools \
+ monodevelop \
+ mount \
+ mplayer \
+ msynctool \
+ mtx \
+ munin-node \
+ mutt \
+ mysqladmin \
+ ncftp \
+ net-tools \
+ nmap \
+ ntpdate \
+ openldap \
+ openssl \
+ open-iscsi \
+ p4 \
+ perl \
+ pine \
+ pkg-config \
+ pkg_install \
+ pkgtools \
+ pm-utils \
+ portupgrade \
+ postfix \
+ postgresql \
+ povray \
+ procps \
+ python \
+ qdbus \
+ qemu \
+ quota-tools \
+ rcs \
+ rdesktop \
+ reportbug \
+ resolvconf \
+ rfkill \
+ ri \
+ rpcdebug \
+ rpm \
+ rpmcheck \
+ rrdtool \
+ rsync \
+ rtcwake \
+ samba \
+ sbcl \
+ screen \
+ service \
+ sh \
+ shadow \
+ sitecopy \
+ smartctl \
+ snownews \
+ sqlite3 \
+ ssh \
+ sshfs \
+ strace \
+ svk \
+ sysbench \
+ sysctl \
+ sysv-rc \
+ tar \
+ tcpdump \
+ unace \
+ unrar \
+ update-alternatives \
+ util-linux \
+ vncviewer \
+ vpnc \
+ wireless-tools \
+ wodim \
+ wol \
+ wtf \
+ wvdial \
+ xhost \
+ xm \
+ xmllint \
+ xmlwf \
+ xmms \
+ xmodmap \
+ xrandr \
+ xrdb \
+ xsltproc \
+ xz \
+ yp-tools \
+ yum-arch
+
+EXTRA_DIST = $(bashcomp_DATA) \
+ _mock _modules _subversion _yum _yum-utils
diff --git a/completions/Makefile.in b/completions/Makefile.in
new file mode 100644
index 00000000..04f41522
--- /dev/null
+++ b/completions/Makefile.in
@@ -0,0 +1,734 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+subdir = completions
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(bashcompdir)"
+DATA = $(bashcomp_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+ distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+am__leading_dot = @am__leading_dot@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bashcompdir = @bashcompdir@
+bindir = @bindir@
+build_alias = @build_alias@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+helpersdir = @helpersdir@
+host_alias = @host_alias@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = helpers
+bashcomp_DATA = abook \
+ ant \
+ apache2ctl \
+ apt \
+ apt-build \
+ aptitude \
+ aspell \
+ autoconf \
+ automake \
+ autorpm \
+ bash-builtins \
+ bind-utils \
+ bitkeeper \
+ bittorrent \
+ bluez \
+ brctl \
+ bzip2 \
+ cardctl \
+ cfengine \
+ chkconfig \
+ chsh \
+ cksfv \
+ clisp \
+ configure \
+ coreutils \
+ cowsay \
+ cpan2dist \
+ cpio \
+ crontab \
+ cups \
+ cryptsetup \
+ cvs \
+ cvsps \
+ dd \
+ dhclient \
+ dict \
+ dpkg \
+ dselect \
+ dsniff \
+ dvd+rw-tools \
+ e2fsprogs \
+ findutils \
+ freeciv \
+ freerdp \
+ fuse \
+ gcc \
+ gcl \
+ gdb \
+ genisoimage \
+ getent \
+ gkrellm \
+ gnatmake \
+ gpg \
+ gpg2 \
+ gzip \
+ heimdal \
+ hping2 \
+ iconv \
+ iftop \
+ ifupdown \
+ imagemagick \
+ info \
+ iptables \
+ ipmitool \
+ iproute2 \
+ ipsec \
+ ipv6calc \
+ isql \
+ jar \
+ java \
+ k3b \
+ kldload \
+ larch \
+ ldapvi \
+ lftp \
+ lilo \
+ links \
+ lintian \
+ lisp \
+ lrzip \
+ lsof \
+ lvm \
+ lzma \
+ lzop \
+ mailman \
+ make \
+ man \
+ mc \
+ mcrypt \
+ mdadm \
+ medusa \
+ minicom \
+ mkinitrd \
+ module-init-tools \
+ monodevelop \
+ mount \
+ mplayer \
+ msynctool \
+ mtx \
+ munin-node \
+ mutt \
+ mysqladmin \
+ ncftp \
+ net-tools \
+ nmap \
+ ntpdate \
+ openldap \
+ openssl \
+ open-iscsi \
+ p4 \
+ perl \
+ pine \
+ pkg-config \
+ pkg_install \
+ pkgtools \
+ pm-utils \
+ portupgrade \
+ postfix \
+ postgresql \
+ povray \
+ procps \
+ python \
+ qdbus \
+ qemu \
+ quota-tools \
+ rcs \
+ rdesktop \
+ reportbug \
+ resolvconf \
+ rfkill \
+ ri \
+ rpcdebug \
+ rpm \
+ rpmcheck \
+ rrdtool \
+ rsync \
+ rtcwake \
+ samba \
+ sbcl \
+ screen \
+ service \
+ sh \
+ shadow \
+ sitecopy \
+ smartctl \
+ snownews \
+ sqlite3 \
+ ssh \
+ sshfs \
+ strace \
+ svk \
+ sysbench \
+ sysctl \
+ sysv-rc \
+ tar \
+ tcpdump \
+ unace \
+ unrar \
+ update-alternatives \
+ util-linux \
+ vncviewer \
+ vpnc \
+ wireless-tools \
+ wodim \
+ wol \
+ wtf \
+ wvdial \
+ xhost \
+ xm \
+ xmllint \
+ xmlwf \
+ xmms \
+ xmodmap \
+ xrandr \
+ xrdb \
+ xsltproc \
+ xz \
+ yp-tools \
+ yum-arch
+
+EXTRA_DIST = $(bashcomp_DATA) \
+ _mock _modules _subversion _yum _yum-utils
+
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign completions/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign completions/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-bashcompDATA: $(bashcomp_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(bashcompdir)" || $(MKDIR_P) "$(DESTDIR)$(bashcompdir)"
+ @list='$(bashcomp_DATA)'; test -n "$(bashcompdir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(bashcompdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(bashcompdir)" || exit $$?; \
+ done
+
+uninstall-bashcompDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bashcomp_DATA)'; test -n "$(bashcompdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(bashcompdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(bashcompdir)" && rm -f $$files
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(DATA)
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(bashcompdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-bashcompDATA
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-bashcompDATA
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+ install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic ctags \
+ ctags-recursive distclean distclean-generic distclean-tags \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-bashcompDATA install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip installcheck installcheck-am \
+ installdirs installdirs-am maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+ pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
+ uninstall-bashcompDATA
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/completions/_mock b/completions/_mock
new file mode 100644
index 00000000..fa312711
--- /dev/null
+++ b/completions/_mock
@@ -0,0 +1,85 @@
+# Use of this file is deprecated. Upstream completion is available in
+# mock > 1.1.0, use that instead.
+
+# bash completion for mock
+
+have mock &&
+_mock()
+{
+ local cur prev plugins cfgdir split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+ plugins='tmpfs root_cache yum_cache bind_mount ccache'
+ cfgdir=/etc/mock
+
+ count=0
+ for i in "${COMP_WORDS[@]}" ; do
+ [ $count -eq $COMP_CWORD ] && break
+ if [[ "$i" == --configdir ]] ; then
+ cfgdir="${COMP_WORDS[((count+1))]}"
+ elif [[ "$i" == --configdir=* ]] ; then
+ cfgdir=${i/*=/}
+ fi
+ count=$((++count))
+ done
+
+ _split_longopt && split=true
+
+ case $prev in
+ -h|--help|--copyin|--copyout|--arch|-D|--define|--with|--without|\
+ --uniqueext|--rpmbuild_timeout|--sources|--cwd)
+ return 0
+ ;;
+ -r|--root)
+ COMPREPLY=( $( compgen -W "$( command ls $cfgdir )" -- $cur ) )
+ COMPREPLY=( ${COMPREPLY[@]/%.cfg/} )
+ return 0
+ ;;
+ --configdir|--resultdir)
+ _filedir -d
+ return 0
+ ;;
+ --spec)
+ _filedir spec
+ return 0
+ ;;
+ --target)
+ # Yep, compatible archs, not compatible build archs
+ # (e.g. ix86 chroot builds in x86_64 mock host)
+ # This would actually depend on what the target root
+ # can be used to build for...
+ COMPREPLY=( $( compgen -W "$( command rpm --showrc | \
+ sed -ne 's/^\s*compatible\s\s*archs\s*:\s*\(.*\)/\1/i p' )" \
+ -- "$cur" ) )
+ return 0
+ ;;
+ --enable-plugin|--disable-plugin)
+ COMPREPLY=( $( compgen -W "$plugins" -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]] ; then
+ COMPREPLY=( $( compgen -W '--version --help --rebuild --buildsrpm
+ --shell --chroot --clean --init --installdeps --install --update
+ --orphanskill --copyin --copyout --root --offline --no-clean
+ --cleanup-after --no-cleanup-after --arch --target --define --with
+ --without --resultdir --uniqueext --configdir --rpmbuild_timeout
+ --unpriv --cwd --spec --sources --verbose --quiet --trace
+ --enable-plugin --disable-plugin --print-root-path' -- "$cur" ) )
+ else
+ _filedir '@(?(no)src.r|s)pm'
+ fi
+} &&
+complete -F _mock mock
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/_modules b/completions/_modules
new file mode 100644
index 00000000..f1ad88d8
--- /dev/null
+++ b/completions/_modules
@@ -0,0 +1,92 @@
+# Use of this file is deprecated, upstream completion is available in
+# modules >= 3.2.7, use that instead.
+#
+# module completion by Ted Stern <stern@cray.com>
+#
+# Completion for Environment Modules `module' alias.
+#
+# See http://sourceforge.net/projects/modules/
+# http://modules.sourceforge.net/
+#
+# There are several versions of modules that are commonly used. Older
+# Cray UNICOS systems and many other sites use 2.2.2b. The latest GPL'd
+# version is 3.1.6. But the module alias is somewhat self-documenting
+# via the `module help' command, so use that to print the options.
+#
+# Programmable completion might be more difficult under tcsh since the
+# module command is an alias, and the `module avail' command returns
+# its output as stderr.
+
+# Test for existence of /etc/profile.d/modules.sh too because we may end up
+# being sourced before it and thus before the `module' alias has been defined.
+have module || [ -f /etc/profile.d/modules.sh ] && {
+
+_module_list ()
+{
+ local modules="$( sed 's/:/ /g' <<<$LOADEDMODULES | sort )"
+ compgen -W "$modules" -- $1
+}
+
+_module_path ()
+{
+ local modules="$( sed 's/:/ /g' <<<$MODULEPATH | sort )"
+ compgen -W "$modules" -- $1
+}
+
+_module_avail ()
+{
+ local modules="$( \
+ module avail 2>&1 | \
+ command grep -E -v '^(-|$)' | \
+ xargs printf '%s\n' | sed -e 's/(default)//g' | sort )"
+
+ compgen -W "$modules" -- $1
+}
+
+# A completion function for the module alias
+_module ()
+{
+ local cur prev options
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ if [ $COMP_CWORD -eq 1 ] ; then
+ # First parameter on line -- we expect it to be a mode selection
+
+ options="$( module help 2>&1 | command grep -E '^[[:space:]]*\+' | \
+ awk '{print $2}' | sed -e 's/|/ /g' | sort )"
+
+ COMPREPLY=( $(compgen -W "$options" -- "$cur") )
+
+ elif [ $COMP_CWORD -eq 2 ] ; then
+ case $prev in
+ add|display|help|load|show|whatis)
+ COMPREPLY=( $(_module_avail "$cur") )
+ ;;
+ rm|switch|swap|unload|update)
+ COMPREPLY=( $(_module_list "$cur") )
+ ;;
+ unuse)
+ COMPREPLY=( $(_module_path "$cur") )
+ ;;
+ esac
+ elif [ $COMP_CWORD -eq 3 ] ; then
+ case ${COMP_WORDS[1]} in
+ swap|switch)
+ COMPREPLY=( $(_module_avail "$cur") )
+ ;;
+ esac
+ fi
+ return 0
+}
+complete -F _module -o default module
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/_subversion b/completions/_subversion
new file mode 100644
index 00000000..91523d89
--- /dev/null
+++ b/completions/_subversion
@@ -0,0 +1,360 @@
+# Use of this file is deprecated. Upstream completion is available in
+# subversion >= 0.12.0, use that instead.
+
+# svn completion
+
+have svn &&
+{
+_svn()
+{
+ local cur prev commands options command
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ commands='add blame praise annotate ann cat checkout co cleanup commit \
+ ci copy cp delete del remove rm diff di export help ? h import \
+ info list ls lock log merge mkdir move mv rename ren \
+ propdel pdel pd propedit pedit pe propget pget pg \
+ proplist plist pl propset pset ps resolved revert \
+ status stat st switch sw unlock update up'
+
+ if [[ $COMP_CWORD -eq 1 ]] ; then
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--version' -- $cur ) )
+ else
+ COMPREPLY=( $( compgen -W "$commands" -- $cur ) )
+ fi
+ else
+
+ case $prev in
+ --config-dir)
+ _filedir -d
+ return 0
+ ;;
+ -F|--file|--targets)
+ _filedir
+ return 0
+ ;;
+ --encoding)
+ COMPREPLY=( $( compgen -W '$( iconv --list | \
+ sed -e "s@//@@;" )' -- "$cur" ) )
+ return 0
+ ;;
+ --editor-cmd|--diff-cmd|--diff3-cmd)
+ COMP_WORDS=(COMP_WORDS[0] $cur)
+ COMP_CWORD=1
+ _command
+ return 0
+ ;;
+ esac
+
+ command=${COMP_WORDS[1]}
+
+ if [[ "$cur" == -* ]]; then
+ # possible options for the command
+ case $command in
+ add)
+ options='--auto-props --no-auto-props --force --targets
+ --no-ignore --non-recursive -N -q --quiet'
+ ;;
+ blame|annotate|ann|praise)
+ options='-r --revisions --username --password
+ --no-auth-cache --non-interactive -v --verbose
+ --incremental --xml'
+ ;;
+ cat)
+ options='-r --revision --username --password
+ --no-auth-cache --non-interactive'
+ ;;
+ checkout|co)
+ options='-r --revision -q --quiet -N --non-recursive
+ --username --password --no-auth-cache
+ --non-interactive --ignore-externals'
+ ;;
+ cleanup)
+ options='--diff3-cmd'
+ ;;
+ commit|ci)
+ options='-m --message -F --file --encoding --force-log -q
+ --quiet --non-recursive -N --targets --editor-cmd
+ --username --password --no-auth-cache
+ --non-interactive --no-unlock'
+ ;;
+ copy|cp)
+ options='-m --message -F --file --encoding --force-log -r
+ --revision -q --quiet --editor-cmd -username
+ --password --no-auth-cache --non-interactive'
+ ;;
+ delete|del|remove|rm)
+ options='--force -m --message -F --file --encoding
+ --force-log -q --quiet --targets --editor-cmd
+ --username --password --no-auth-cache
+ --non-interactive'
+ ;;
+ diff|di)
+ options='-r --revision -x --extensions --diff-cmd
+ --no-diff-deleted -N --non-recursive --username
+ --password --no-auth-cache --non-interactive
+ --force --old --new --notice-ancestry'
+ ;;
+ export)
+ options='-r --revision -q --quiet --username --password
+ --no-auth-cache --non-interactive -N
+ --non-recursive --force --native-eol
+ --ignore-externals'
+ ;;
+ import)
+ options='--auto-props --no-auto-props -m --message -F
+ --file --encoding --force-log -q --quiet
+ --non-recursive --no-ignore --editor-cmd
+ --username --password --no-auth-cache
+ --non-interactive'
+ ;;
+ info)
+ options='--username --password --no-auth-cache
+ --non-interactive -r --revision --xml --targets
+ -R --recursive --incremental'
+ ;;
+ list|ls)
+ options='-r --revision -v --verbose -R --recursive
+ --username --password --no-auth-cache
+ --non-interactive --incremental --xml'
+ ;;
+ lock)
+ options='-m --message -F --file --encoding --force-log
+ --targets --force --username --password
+ --no-auth-cache --non-interactive'
+ ;;
+ log)
+ options='-r --revision -v --verbose --targets --username
+ --password --no-auth-cache --non-interactive
+ --stop-on-copy --incremental --xml -q --quiet
+ --limit'
+ ;;
+ merge)
+ options='-r --revision -N --non-recursive -q --quiet
+ --force --dry-run --diff3-cmd --username
+ --password --no-auth-cache --non-interactive
+ --ignore-ancestry'
+ ;;
+ mkdir)
+ options='-m --message -F --file --encoding --force-log -q
+ --quiet --editor-cmd --username --password
+ --no-auth-cache --non-interactive'
+ ;;
+ move|mv|rename|ren)
+ options='-m --message -F --file --encoding --force-log -r
+ --revision -q --quiet --force --editor-cmd
+ --username --password --no-auth-cache
+ --non-interactive'
+ ;;
+ propdel|pdel|pd)
+ options='-q --quiet -R --recursive -r --revision --revprop
+ --username --password --no-auth-cache
+ --non-interactive'
+ ;;
+ propedit|pedit|pe)
+ options='-r --revision --revprop --encoding --editor-cmd
+ --username --password --no-auth-cache
+ --non-interactive --force'
+ ;;
+ propget|pget|pg)
+ options='-R --recursive -r --revision --revprop --strict
+ --username --password --no-auth-cache
+ --non-interactive'
+ ;;
+ proplist|plist|pl)
+ options='-v --verbose -R --recursive -r --revision
+ --revprop -q --quiet --username --password
+ --no-auth-cache --non-interactive'
+ ;;
+ propset|pset|ps)
+ options='-F --file -q --quiet --targets -R --recursive
+ --revprop --encoding --username --password
+ --no-auth-cache --non-interactive -r --revision
+ --force'
+ ;;
+ resolved)
+ options='--targets -R --recursive -q --quiet'
+ ;;
+ revert)
+ options='--targets -R --recursive -q --quiet'
+ ;;
+ status|stat|st)
+ options='-u --show-updates -v --verbose -N --non-recursive
+ -q --quiet --username --password --no-auth-cache
+ --non-interactive --no-ignore --ignore-externals
+ --incremental --xml'
+ ;;
+ switch|sw)
+ options='--relocate -r --revision -N --non-recursive -q
+ --quiet --username --password --no-auth-cache
+ --non-interactive --diff3-cmd'
+ ;;
+ unlock)
+ options='--targets --force --username --password
+ --no-auth-cache --non-interactive'
+ ;;
+ update|up)
+ options='-r --revision -N --non-recursive -q --quiet
+ --username --password --no-auth-cache
+ --non-interactive --diff3-cmd --ignore-externals'
+ ;;
+ esac
+ options="$options --help -h --config-dir"
+
+ COMPREPLY=( $( compgen -W "$options" -- $cur ) )
+ else
+ if [[ "$command" == @(help|h|\?) ]]; then
+ COMPREPLY=( $( compgen -W "$commands" -- $cur ) )
+ else
+ _filedir
+ fi
+ fi
+ fi
+
+ return 0
+}
+complete -F _svn svn
+
+_svnadmin()
+{
+ local cur prev commands options mode
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ commands='create deltify dump help ? hotcopy list-dblogs list-unused-dblogs
+ load lslocks lstxns recover rmlocks rmtxns setlog verify'
+
+ if [[ $COMP_CWORD -eq 1 ]] ; then
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--version' -- $cur ) )
+ else
+ COMPREPLY=( $( compgen -W "$commands" -- $cur ) )
+ fi
+ else
+ case $prev in
+ --config-dir)
+ _filedir -d
+ return 0
+ ;;
+ --fs-type)
+ COMPREPLY=( $( compgen -W 'fsfs bdb' -- $cur ) )
+ return 0
+ ;;
+ esac
+
+ command=${COMP_WORDS[1]}
+
+ if [[ "$cur" == -* ]]; then
+ # possible options for the command
+ case $command in
+ create)
+ options='--bdb-txn-nosync --bdb-log-keep --config-dir
+ --fs-type'
+ ;;
+ deltify)
+ options='-r --revision -q --quiet'
+ ;;
+ dump)
+ options='-r --revision --incremental -q --quiet --deltas'
+ ;;
+ hotcopy)
+ options='--clean-logs'
+ ;;
+ load)
+ options='--ignore-uuid --force-uuid --parent-dir -q --quiet
+ --use-pre-commit-hook --use-post-commit-hook'
+ ;;
+ rmtxns)
+ options='-q --quiet'
+ ;;
+ setlog)
+ options='-r --revision --bypass-hooks'
+ ;;
+ esac
+
+ options="$options --help -h"
+ COMPREPLY=( $( compgen -W "$options" -- $cur ) )
+ else
+ if [[ "$command" == @(help|h|\?) ]]; then
+ COMPREPLY=( $( compgen -W "$commands" -- $cur ) )
+ else
+ _filedir
+ fi
+ fi
+ fi
+
+ return 0
+}
+complete -F _svnadmin -o default svnadmin
+
+_svnlook()
+{
+ local cur prev commands options mode
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ commands='author cat changed date diff dirs-changed help ? h history info
+ lock log propget pget pg proplist plist pl tree uuid youngest'
+
+ if [[ $COMP_CWORD -eq 1 ]] ; then
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--version' -- $cur ) )
+ else
+ COMPREPLY=( $( compgen -W "$commands" -- $cur ) )
+ fi
+ else
+ command=${COMP_WORDS[1]}
+
+ if [[ "$cur" == -* ]]; then
+ # possible options for the command
+ case $command in
+ author|cat|date|dirs-changed|info|log)
+ options='-r --revision -t --transaction'
+ ;;
+ changed)
+ options='-r --revision -t --transaction --copy-info'
+ ;;
+ diff)
+ options='-r --revision -t --transaction --no-diff-deleted
+ --no-diff-added --diff-copy-from'
+ ;;
+ history)
+ options='-r --revision --show-ids'
+ ;;
+ propget|proplist)
+ options='-r --revision -t --transaction --revprop'
+ ;;
+ tree)
+ options='-r --revision -t --transaction --show-ids
+ --full-paths'
+ ;;
+ esac
+
+ options="$options --help -h"
+ COMPREPLY=( $( compgen -W "$options" -- $cur ) )
+ else
+ if [[ "$command" == @(help|h|\?) ]]; then
+ COMPREPLY=( $( compgen -W "$commands" -- $cur ) )
+ else
+ _filedir
+ fi
+ fi
+ fi
+
+ return 0
+}
+complete -F _svnlook -o default svnlook
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/_yum b/completions/_yum
new file mode 100644
index 00000000..9d3cbb68
--- /dev/null
+++ b/completions/_yum
@@ -0,0 +1,157 @@
+# Use of this file is deprecated. Upstream completion is available in
+# yum > 3.2.25, use that instead.
+
+# 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 | \
+ sed -ne '/^Available /d' -e '/^Installed /d' -e '/^Updated /d' \
+ -e 's/[[:space:]].*//p' ) )
+ 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_repolist()
+{
+ # -d 0 causes repolist to output nothing as of yum 3.2.22:
+ # http://yum.baseurl.org/ticket/83
+ # Drop first ("repo id repo name") and last ("repolist: ...") rows
+ yum --noplugins -C repolist $1 2>/dev/null | \
+ sed -ne '/^repo\s\s*id/d' -e '/^repolist:/d' -e 's/[[:space:]].*//p'
+}
+
+_yum_plugins()
+{
+ command ls /usr/lib/yum-plugins/*.py{,c,o} 2>/dev/null \
+ | sed -ne 's|.*/\([^./]*\)\.py[co]\{0,1\}$|\1|p' | sort -u
+}
+
+_yum()
+{
+ local cur prev special i split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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
+ # TODO: install|update|upgrade should not match *src.rpm
+ if [[ "$cur" == */* && "$special" == @(deplist|install|update|upgrade) ]]; then
+ _filedir rpm
+ return 0
+ fi
+ 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
+
+ _split_longopt && split=true
+
+ 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 ) )
+ ;;
+ repolist)
+ COMPREPLY=( $( compgen -W 'all enabled disabled' -- $cur ) )
+ ;;
+ localinstall|localupdate)
+ # TODO: should not match *src.rpm
+ _filedir rpm
+ ;;
+ -d|-e)
+ COMPREPLY=( $( compgen -W '0 1 2 3 4 5 6 7 8 9 10' -- $cur ) )
+ ;;
+ -c)
+ _filedir
+ ;;
+ --installroot)
+ _filedir -d
+ ;;
+ --enablerepo)
+ COMPREPLY=( $( compgen -W '$( _yum_repolist disabled )' -- $cur ) )
+ ;;
+ --disablerepo)
+ COMPREPLY=( $( compgen -W '$( _yum_repolist enabled )' -- $cur ) )
+ ;;
+ --disableexcludes)
+ COMPREPLY=( $( compgen -W '$( _yum_repolist all ) all main' \
+ -- $cur ) )
+ ;;
+ --enableplugin|--disableplugin)
+ COMPREPLY=( $( compgen -W '$( _yum_plugins )' -- $cur ))
+ ;;
+ --color)
+ COMPREPLY=( $( compgen -W 'always auto never' -- $cur ))
+ ;;
+ -R|-x|--exclude)
+ # argument required but no completions available
+ return 0
+ ;;
+ -h|--help|--version)
+ # no other options useful with these
+ return 0
+ ;;
+ *)
+ COMPREPLY=( $( compgen -W 'install update check-update upgrade \
+ remove erase list info provides whatprovides clean makecache \
+ groupinstall groupupdate grouplist groupremove groupinfo \
+ search shell resolvedep localinstall localupdate deplist \
+ repolist help' -- $cur ) )
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--help --tolerant -C -c -R -d \
+ --showduplicates -e --quiet --verbose -y --version --installroot \
+ --enablerepo --disablerepo --exclude --disableexcludes --obsoletes \
+ --noplugins --nogpgcheck --disableplugin --enableplugin \
+ --skip-broken --color' -- $cur ) )
+ return 0
+ fi
+}
+} &&
+complete -F _yum yum
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/_yum-utils b/completions/_yum-utils
new file mode 100644
index 00000000..b7f6d264
--- /dev/null
+++ b/completions/_yum-utils
@@ -0,0 +1,31 @@
+# Use of this file is deprecated. Upstream completion is available in
+# yum-utils >= 1.1.24, use that instead.
+
+# bash completion for repomanage
+
+have repomanage &&
+_repomanage()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ [[ "$prev" == -@(h|-help|k|-keep) ]] && return 0
+
+ if [[ "$cur" == -* ]] ; then
+ COMPREPLY=( $( compgen -W '--old --new --space \
+ --keep --nocheck --help' -- "$cur" ) )
+ else
+ _filedir -d
+ fi
+} &&
+complete -F _repomanage repomanage
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/abook b/completions/abook
new file mode 100644
index 00000000..f09c8b50
--- /dev/null
+++ b/completions/abook
@@ -0,0 +1,62 @@
+# abook(1) completion
+
+have abook &&
+_abook()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ # abook only takes options, tabbing after command name adds a single
+ # dash (bash4)
+ [[ ${BASH_VERSINFO[0]} -ge 4 && $COMP_CWORD -eq 1 && -z "$cur" ]] &&
+ {
+ compopt -o nospace
+ COMPREPLY=( "-" )
+ return 0
+ }
+
+ case $cur in
+ -*)
+ _longopt abook
+ return 0
+ ;;
+ esac
+
+ case $prev in
+ --informat)
+ COMPREPLY=( $( compgen -W "$(abook --formats | \
+ sed -n -e 's/^\t\([a-z]*\).*/\1/p' -e '/^$/q')" -- "$cur" ) )
+ return 0
+ ;;
+ --outformat)
+ COMPREPLY=( $( compgen -W "$(abook --formats | \
+ sed -n -e '/^$/,$s/^\t\([a-z]*\).*/\1/p')" -- "$cur" ) )
+ return 0
+ ;;
+ --infile)
+ COMPREPLY=( $( compgen -W stdin -- "$cur" ) )
+ _filedir
+ return 0
+ ;;
+ --outfile)
+ COMPREPLY=( $( compgen -W stdout -- "$cur" ) )
+ _filedir
+ return 0
+ ;;
+ --config|--datafile)
+ _filedir
+ return 0
+ ;;
+ esac
+} &&
+complete -F _abook abook
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/ant b/completions/ant
new file mode 100644
index 00000000..132c4390
--- /dev/null
+++ b/completions/ant
@@ -0,0 +1,70 @@
+# bash completion for ant
+
+have ant &&
+{
+_ant()
+{
+ local cur prev buildfile i
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -buildfile|-file|-f)
+ _filedir 'xml'
+ return 0
+ ;;
+ -logfile|-l)
+ _filedir
+ return 0
+ ;;
+ -propertyfile)
+ _filedir properties
+ return 0
+ ;;
+ -nice)
+ COMPREPLY=( $( compgen -W '1 2 3 4 5 6 7 8 9 10' -- "$cur" ) )
+ return 0
+ ;;
+ -lib|-logger|-listener|-D|-inputhandler|-main)
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-help -projecthelp -version -diagnostics \
+ -quiet -verbose -debug -emacs -lib -logfile -logger -listener \
+ -noinput -buildfile -D -keep-going -propertyfile -inputhandler \
+ -find -s -nice -nouserlib -noclasspath -autoproxy -main' \
+ -- "$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]}" == -@(?(build)file|f) ]]; then
+ buildfile=${COMP_WORDS[i+1]}
+ break
+ fi
+ done
+ [ ! -f $buildfile ] && return 0
+
+ # parse buildfile for targets
+ # some versions of sed complain if there's no trailing linefeed,
+ # hence the 2>/dev/null
+ COMPREPLY=( $( compgen -W "$( cat $buildfile | tr "'\t\n>" "\" \n" | \
+ sed -ne 's/.*<target .*name="\([^"]*\).*/\1/p' 2>/dev/null )" \
+ -- "$cur" ) )
+ fi
+}
+have complete-ant-cmd.pl && \
+ complete -C complete-ant-cmd.pl -F _ant ant || complete -F _ant ant
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/apache2ctl b/completions/apache2ctl
new file mode 100644
index 00000000..287443a2
--- /dev/null
+++ b/completions/apache2ctl
@@ -0,0 +1,24 @@
+# apache2ctl(1) completion
+
+have apache2ctl && {
+_apache2ctl() {
+ local APWORDS cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ APWORDS=$(apache2ctl 2>&1 >/dev/null | awk 'NR<2 { print $3; exit }' | \
+ tr "|" " ")
+
+ COMPREPLY=( $( compgen -W "$APWORDS" -- "$cur" ) )
+}
+complete -F _apache2ctl apache2ctl
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/apt b/completions/apt
new file mode 100644
index 00000000..84811ae8
--- /dev/null
+++ b/completions/apt
@@ -0,0 +1,157 @@
+# Debian apt-get(8) completion.
+
+have apt-get &&
+_apt_get()
+{
+ local cur prev special i
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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
+ ;;
+ source)
+ COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" \
+ 2> /dev/null ) $( apt-cache dumpavail | \
+ command grep "^Source: $cur" | sort -u | cut -f2 -d" " ) )
+ return 0
+ ;;
+ *)
+ COMPREPLY=( $( apt-cache --no-generate 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 | \
+ command 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 apt-get
+
+# Debian apt-cache(8) completion.
+#
+have apt-cache &&
+_apt_cache()
+{
+ local cur prev special i
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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 | \
+ command grep "^Source: $cur" | sort -u | cut -f2 -d" " ) )
+ return 0
+ ;;
+
+ *)
+ COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" 2> /dev/null ) )
+ return 0
+ ;;
+
+ esac
+ fi
+
+
+ case $prev in
+ -c|-p|-s|--config-file|--pkg-cache|--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 apt-cache
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/apt-build b/completions/apt-build
new file mode 100644
index 00000000..d875a986
--- /dev/null
+++ b/completions/apt-build
@@ -0,0 +1,66 @@
+# Debian apt-build(1) completion.
+
+have apt-build &&
+_apt_build()
+{
+ local cur prev special i
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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 apt-build
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/aptitude b/completions/aptitude
new file mode 100644
index 00000000..c00ad40e
--- /dev/null
+++ b/completions/aptitude
@@ -0,0 +1,98 @@
+# 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()
+{
+ command grep -B 2 'hold' /var/lib/dpkg/status | \
+ command grep "Package: $1" | cut -d\ -f2
+}
+}
+
+_aptitude()
+{
+ local cur dashoptions prev special i
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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 -R -G --without-recommends -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]} == @(@(|re)install|@(|un)hold|@(|un)markauto|@(dist|full)-upgrade|download|show|forbid-version|purge|remove|changelog|why@(|-not)|keep@(|-all)|build-dep|@(add|remove)-user-tag) ]]; 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|add-user-tag| \
+ remove-user-tag)
+ 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|safe-upgrade|upgrade|update|keep-all)
+ return 0
+ ;;
+ -S)
+ _filedir
+ return 0
+ ;;
+ -t|--target-release|--default-release)
+ COMPREPLY=( $( apt-cache policy | \
+ command 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 build-dep \
+ add-user-tag remove-user-tag' -- "$cur" ) )
+ fi
+
+ return 0
+}
+complete -F _aptitude -o default aptitude
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/aspell b/completions/aspell
new file mode 100644
index 00000000..5254eee7
--- /dev/null
+++ b/completions/aspell
@@ -0,0 +1,96 @@
+# bash completion for aspell
+
+have aspell && {
+_aspell_dictionary()
+{
+ local datadir
+ datadir=$( aspell config data-dir 2>/dev/null || echo /usr/lib/aspell )
+ # First, get aliases (dicts dump does not list them)
+ COMPREPLY=( $( command ls $datadir/*.alias 2>/dev/null ) )
+ COMPREPLY=( ${COMPREPLY[@]%.alias} )
+ COMPREPLY=( ${COMPREPLY[@]#$datadir/} )
+ # Then, add the canonical dicts
+ COMPREPLY=( "${COMPREPLY[@]}" $( aspell dicts 2>/dev/null ) )
+ COMPREPLY=( $( compgen -W '${COMPREPLY[@]}' -- "$cur" ) )
+}
+
+_aspell()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -c|-p|check|--conf|--personal|--repl|--per-conf)
+ _filedir
+ return 0
+ ;;
+ --conf-dir|--data-dir|--dict-dir|--home-dir|--local-data-dir|--prefix)
+ _filedir -d
+ return 0
+ ;;
+ dump|create|merge)
+ COMPREPLY=( $( compgen -W 'master personal repl' -- "$cur" ) )
+ 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
+ ;;
+ -d|--master)
+ _aspell_dictionary
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--conf --conf-dir --data-dir --dict-dir \
+ --encoding --add-filter --rem-filter --mode \
+ --add-extra-dicts --rem-extra-dicts \
+ --home-dir --ignore --ignore-accents \
+ --dont-ignore-accents --ignore-case --dont-ignore-case \
+ --ignore-repl --dont-ignore-repl --jargon --keyboard \
+ --lang --language-tag --local-data-dir --master \
+ --module --add-module-search-order \
+ --rem-module-search-order --per-conf --personal \
+ --prefix --repl --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 \
+ --backup --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 'usage help check pipe list \
+ config soundslike filter version dump create merge' -- "$cur" ) )
+ fi
+
+}
+complete -F _aspell aspell
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/autoconf b/completions/autoconf
new file mode 100644
index 00000000..c8f1b195
--- /dev/null
+++ b/completions/autoconf
@@ -0,0 +1,124 @@
+# Completions for autoconf tools
+
+have autoconf &&
+_autoconf()
+{
+ COMPREPLY=()
+ local cur prev split=false
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case "$prev" in
+ --help|-h|--version|-V|--trace|-t)
+ return 0
+ ;;
+ --output|-o)
+ _filedir
+ return 0
+ ;;
+ --warnings|-W)
+ local cats=( cross obsolete syntax )
+ COMPREPLY=( $( compgen -W \
+ '${cats[@]} ${cats[@]/#/no-} all none error' -- "$cur" ) )
+ return 0
+ ;;
+ --prepend-include|-B|--include|-I)
+ _filedir -d
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ _longopt $1
+ return
+ fi
+
+ _filedir '@(ac|in)'
+} &&
+complete -F _autoconf autoconf
+
+have autoreconf || have autoheader &&
+_autoreconf()
+{
+ COMPREPLY=()
+ local cur prev split=false
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case "$prev" in
+ --help|-h|--version|-V)
+ return 0
+ ;;
+ --warnings|-W)
+ local cats=( cross gnu obsolete override portability syntax \
+ unsupported )
+ COMPREPLY=( $( compgen -W \
+ '${cats[@]} ${cats[@]/#/no-} all none error' -- "$cur" ) )
+ return 0
+ ;;
+ --prepend-include|-B|--include|-I)
+ _filedir -d
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ _longopt $1
+ return 0
+ fi
+
+ if [[ $1 == autoheader ]] ; then
+ _filedir '@(ac|in)'
+ else
+ _filedir -d
+ fi
+} &&
+complete -F _autoreconf autoreconf autoheader
+
+have autoscan || have autoupdate &&
+_autoscan()
+{
+ COMPREPLY=()
+ local cur prev split=false
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case "$prev" in
+ --help|-h|--version|-V)
+ return 0
+ ;;
+ --prepend-include|-B|--include|-I)
+ _filedir -d
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ _longopt $1
+ return 0
+ fi
+
+ if [[ $1 == autoupdate ]] ; then
+ _filedir '@(ac|in)'
+ else
+ _filedir -d
+ fi
+} &&
+complete -F _autoscan autoscan autoupdate
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/automake b/completions/automake
new file mode 100644
index 00000000..7ed87453
--- /dev/null
+++ b/completions/automake
@@ -0,0 +1,80 @@
+# Completions for automake tools
+
+have automake &&
+_automake()
+{
+ COMPREPLY=()
+ local cur prev split=false
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case "$prev" in
+ --help|--version)
+ return 0
+ ;;
+ --warnings|-W)
+ local cats=( gnu obsolete override portability syntax unsupported )
+ COMPREPLY=( $( compgen -W \
+ '${cats[@]} ${cats[@]/#/no-} all none error' -- "$cur" ) )
+ return 0
+ ;;
+ --libdir)
+ _filedir -d
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ _longopt $1
+ return
+ fi
+
+ _filedir
+} &&
+complete -F _automake automake automake-1.11
+
+have aclocal &&
+_aclocal()
+{
+ COMPREPLY=()
+ local cur prev split=false
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case "$prev" in
+ --help|--print-ac-dir|--version)
+ return 0
+ ;;
+ --acdir|-I)
+ _filedir -d
+ return 0
+ ;;
+ --output)
+ _filedir
+ return 0
+ ;;
+ --warnings|-W)
+ local cats=( syntax unsupported )
+ COMPREPLY=( $( compgen -W \
+ '${cats[@]} ${cats[@]/#/no-} all none error' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ _longopt $1
+} &&
+complete -F _aclocal aclocal aclocal-1.11
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/autorpm b/completions/autorpm
new file mode 100644
index 00000000..6a5f7620
--- /dev/null
+++ b/completions/autorpm
@@ -0,0 +1,23 @@
+# autorpm(8) completion
+
+have autorpm &&
+_autorpm()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ COMPREPLY=( $( compgen -W '--notty --debug --help --version auto add \
+ fullinfo info help install list remove set' -- "$cur" ) )
+
+} &&
+complete -F _autorpm autorpm
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/bash-builtins b/completions/bash-builtins
new file mode 100644
index 00000000..3eba8a11
--- /dev/null
+++ b/completions/bash-builtins
@@ -0,0 +1,128 @@
+# bash alias completion
+#
+_alias()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ 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 -o nospace alias
+
+# bash export completion
+#
+_export()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ 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 -o default -o nospace export
+
+# bash shell function completion
+#
+_function()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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
+}
+complete -F _function function declare typeset
+
+# bash complete completion
+#
+_complete()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -o)
+ COMPREPLY=( $( compgen -W 'bashdefault default dirnames filenames \
+ nospace plusdirs' -- "$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|.* ||' ) )
+ COMPREPLY=( $( compgen -W '${COMPREPLY[@]}' -- "$cur" ) )
+ return 0
+ ;;
+
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ # relevant options completion
+ local opts="-a -b -c -d -e -f -g -j -k -o -s -u -v -A -G -W -P -S -X"
+ [[ $1 != compgen ]] && opts="$opts -F -C"
+ COMPREPLY=( $( compgen -W "$opts" -- "$cur" ) )
+ else
+ COMPREPLY=( $( compgen -A command -- "$cur" ) )
+ fi
+}
+complete -F _complete compgen complete
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/bind-utils b/completions/bind-utils
new file mode 100644
index 00000000..040d1975
--- /dev/null
+++ b/completions/bind-utils
@@ -0,0 +1,23 @@
+# bash completion for nslookup
+
+have nslookup &&
+_nslookup()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ 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
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/bitkeeper b/completions/bitkeeper
new file mode 100644
index 00000000..4c312a14
--- /dev/null
+++ b/completions/bitkeeper
@@ -0,0 +1,26 @@
+# BitKeeper completion adapted from code by Bart Trojanowski <bart@jukie.net>
+
+have bk &&
+_bk() {
+ local BKCMDS
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ BKCMDS="$( bk help topics | awk '/^ bk/ { print $4 }' | \
+ xargs printf '%s ' )"
+
+ COMPREPLY=( $( compgen -W "$BKCMDS" -- "$cur" ) )
+ _filedir
+
+ return 0
+} &&
+complete -F _bk bk
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/bittorrent b/completions/bittorrent
new file mode 100644
index 00000000..761d0836
--- /dev/null
+++ b/completions/bittorrent
@@ -0,0 +1,41 @@
+# btdownloadheadless(1) completion
+
+have btdownloadheadless.py || have btdownloadcurses.py || \
+have btdownloadgui.py &&
+_btdownload()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ --responsefile|--saveas)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--max_uploads --keepalive_interval \
+ --download_slice_size --request_backlog --max_message_length \
+ --ip --minport --maxport --responsefile --url --saveas --timeout \
+ --timeout_check_interval --max_slice_length --max_rate_period \
+ --bind --upload_rate_fudge --display_interval --rerequest_interval \
+ --min_peers --http_timeout --max_initiate --max_allow_in \
+ --check_hashes --max_upload_rate --snub_time --spew \
+ --rarest_first_cutoff --min_uploads --report_hash_failures' \
+ -- "$cur" ) )
+ else
+ _filedir
+ fi
+} &&
+complete -F _btdownload btdownloadheadless.py btdownloadcurses.py btdownloadgui.py
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/bluez b/completions/bluez
new file mode 100644
index 00000000..7a2b1e57
--- /dev/null
+++ b/completions/bluez
@@ -0,0 +1,432 @@
+# bash completion for bluez utils
+
+have hcitool && {
+_bluetooth_adresses()
+{
+ if [ -n "${COMP_BLUETOOTH_SCAN:-}" ]; then
+ COMPREPLY=( ${COMPREPLY[@]:-} $( compgen -W "$( hcitool scan | \
+ awk '/^\t/{print $1}' )" -- "$cur" ) )
+ fi
+}
+
+_bluetooth_devices()
+{
+ COMPREPLY=( ${COMPREPLY[@]:-} $( compgen -W "$( hcitool dev | \
+ awk '/^\t/{print $1}' )" -- "$cur" ) )
+}
+
+_bluetooth_services()
+{
+ COMPREPLY=( $( compgen -W 'DID SP DUN LAN FAX OPUSH FTP HS HF HFAG \
+ SAP NAP GN PANU HCRP HID CIP A2SRC A2SNK AVRCT AVRTG UDIUE \
+ UDITE SYNCML' -- "$cur" ) )
+}
+
+_bluetooth_packet_types()
+{
+ COMPREPLY=( $( compgen -W 'DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3' \
+ -- "$cur" ) )
+}
+
+_hcitool()
+{
+ local cur prev split=false arg
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -i)
+ _bluetooth_devices
+ return 0;
+ ;;
+ --role)
+ COMPREPLY=( $( compgen -W 'm s' -- "$cur" ) )
+ return 0;
+ ;;
+ --pkt-type)
+ _bluetooth_packet_types
+ return 0;
+ ;;
+ esac
+
+ $split && return 0
+
+ _get_first_arg
+ if [ -z $arg ]; then
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--help -i' -- "$cur" ) )
+ else
+ COMPREPLY=( $( compgen -W 'dev inq scan name info \
+ spinq epinq cmd con cc dc sr cpt rssi lq tpl \
+ afh lst auth enc key clkoff clock' -- "$cur" ) )
+ fi
+ else
+ case $arg in
+ name|info|dc|rssi|lq|afh|auth|key|clkoff|lst)
+ _count_args
+ if [ $args -eq 2 ]; then
+ _bluetooth_adresses
+ fi
+ ;;
+ cc)
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--role --pkt-type' -- "$cur" ) )
+ else
+ _count_args
+ if [ $args -eq 2 ]; then
+ _bluetooth_adresses
+ fi
+ fi
+ ;;
+ sr)
+ _count_args
+ if [ $args -eq 2 ]; then
+ _bluetooth_adresses
+ else
+ COMPREPLY=( $( compgen -W 'master slave' -- "$cur" ) )
+ fi
+ ;;
+ cpt)
+ _count_args
+ if [ $args -eq 2 ]; then
+ _bluetooth_adresses
+ else
+ _bluetooth_packet_types
+ fi
+ ;;
+ tpl|enc|clock)
+ _count_args
+ if [ $args -eq 2 ]; then
+ _bluetooth_adresses
+ else
+ COMPREPLY=( $( compgen -W '0 1' -- "$cur" ) )
+ fi
+ ;;
+ esac
+ fi
+}
+complete -F _hcitool hcitool
+
+_sdptool()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ --bdaddr)
+ _bluetooth_adresses
+ return 0;
+ ;;
+ esac
+
+ $split && return 0
+
+ _get_first_arg
+ if [ -z $arg ]; then
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--help' -- "$cur" ) )
+ else
+ COMPREPLY=( $( compgen -W 'search browse records add \
+ del get setattr setseq' -- "$cur" ) )
+ fi
+ else
+ case $arg in
+ search)
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--bdaddr \
+ --tree --raw --xml' -- "$cur" ) )
+ else
+ _bluetooth_services
+ fi
+ ;;
+ browse|records)
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--tree --raw --xml' -- "$cur" ) )
+ else
+ _bluetooth_adresses
+ fi
+ ;;
+ add)
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--handle --channel' -- "$cur" ) )
+ else
+ _bluetooth_services
+ fi
+ ;;
+ get)
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--bdaddr \
+ --tree --raw --xml' -- "$cur" ) )
+ fi
+ ;;
+ esac
+ fi
+}
+complete -F _sdptool sdptool
+
+_l2ping()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -i)
+ _bluetooth_devices
+ return 0;
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-i -s -c -t -f -r' -- "$cur" ) )
+ else
+ _bluetooth_adresses
+ fi
+
+}
+complete -F _l2ping l2ping
+
+_rfcomm()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -f|--config)
+ _filedir
+ return 0;
+ ;;
+ -i)
+ _bluetooth_devices
+ _bluetooth_adresses
+ return 0;
+ ;;
+ esac
+
+ _get_first_arg
+ if [ -z $arg ]; then
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--help -a --raw \
+ --config -i --auth --encrypt --secure --master' -- "$cur" ) )
+ else
+ COMPREPLY=( $( compgen -W 'show connect listen watch \
+ bind release' -- "$cur" ) )
+ fi
+ else
+ _count_args
+ if [ $args -eq 2 ]; then
+ _bluetooth_devices
+ else
+ case $arg in
+ connect|bind)
+ if [ $args -eq 3 ]; then
+ _bluetooth_adresses
+ fi
+ ;;
+ esac
+ fi
+ fi
+}
+complete -F _rfcomm rfcomm
+
+_ciptool()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -i)
+ _bluetooth_devices
+ _bluetooth_adresses
+ return 0;
+ ;;
+ esac
+
+ _get_first_arg
+ if [ -z $arg ]; then
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--help -i' -- "$cur" ) )
+ else
+ COMPREPLY=( $( compgen -W 'show search connect release \
+ loopback' -- "$cur" ) )
+ fi
+ else
+ case $arg in
+ connect|release|loopback)
+ _count_args
+ if [ $args -eq 2 ]; then
+ _bluetooth_adresses
+ fi
+ ;;
+ esac
+ fi
+}
+complete -F _ciptool ciptool
+
+_dfutool()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -d|--device)
+ _bluetooth_devices
+ return 0;
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--help --device' -- "$cur" ) )
+ else
+ _count_args
+ case $args in
+ 1)
+ COMPREPLY=( $( compgen -W 'verify modify \
+ upgrade archive' -- "$cur" ) )
+ ;;
+ 2)
+ _filedir
+ ;;
+ esac
+ fi
+}
+complete -F _dfutool dfutool
+
+_hciconfig()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ _get_first_arg
+ if [ -z $arg ]; then
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--help --all' -- "$cur" ) )
+ else
+ COMPREPLY=( $( compgen -W 'up down reset rstat auth \
+ noauth encrypt noencrypt secmgr nosecmgr \
+ piscan noscan iscan pscan ptype name class \
+ voice iac inqmode inqdata inqtype inqparams \
+ pageparms pageto afhmode aclmtu scomtu putkey \
+ delkey commands features version revision lm' \
+ -- "$cur" ) )
+ fi
+ else
+ case $arg in
+ putkey|delkey)
+ _count_args
+ if [ $args -eq 2 ]; then
+ _bluetooth_adresses
+ fi
+ ;;
+ lm)
+ _count_args
+ if [ $args -eq 2 ]; then
+ COMPREPLY=( $( compgen -W 'MASTER \
+ SLAVE NONE ACCEPT' -- "$cur" ) )
+ fi
+ ;;
+ ptype)
+ _count_args
+ if [ $args -eq 2 ]; then
+ _bluetooth_packet_types
+ fi
+ ;;
+ esac
+ fi
+}
+complete -F _hciconfig hciconfig
+
+_hciattach()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-n -p -t -b -s -l' -- "$cur" ) )
+ else
+ _count_args
+ case $args in
+ 1)
+ COMPREPLY=( $( printf '%s\n' /dev/tty* ) )
+ COMPREPLY=( $( compgen -W '${COMPREPLY[@]} \
+ ${COMPREPLY[@]#/dev/}' -- "$cur" ) )
+ ;;
+ 2)
+ COMPREPLY=( $( compgen -W 'any ericsson digi \
+ xircom csr bboxes swave bcsp 0x0105 \
+ 0x080a 0x0160 0x0002' -- "$cur" ) )
+ ;;
+ 3)
+ COMPREPLY=( $( compgen -W '9600 19200 38400 \
+ 57600 115200 230400 460800 921600' -- "$cur" ) )
+ ;;
+ 4)
+ COMPREPLY=( $( compgen -W 'flow noflow' -- "$cur" ) )
+ ;;
+ 5)
+ _bluetooth_adresses
+ ;;
+ esac
+ fi
+
+}
+complete -F _hciattach hciattach
+
+_hid2hci()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--help --quiet -0 --tohci -1 \
+ --tohid' -- "$cur" ) )
+ fi
+}
+complete -F _hid2hci hid2hci
+
+_avctrl()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--help --quiet' -- "$cur" ) )
+ else
+ _count_args
+ if [ $args -eq 1 ]; then
+ COMPREPLY=( $( compgen -W 'discover switch' -- "$cur" ) )
+ fi
+ fi
+}
+complete -F _avctrl avctrl
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/brctl b/completions/brctl
new file mode 100644
index 00000000..1be86af1
--- /dev/null
+++ b/completions/brctl
@@ -0,0 +1,48 @@
+# bash completion for brctl
+
+have brctl &&
+_brctl()
+{
+ local cur command
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+ command=${COMP_WORDS[1]}
+
+ case $COMP_CWORD in
+ 1)
+ COMPREPLY=( $( compgen -W "addbr delbr addif delif \
+ setageing setbridgeprio setfd sethello \
+ setmaxage setpathcost setportprio show \
+ showmacs showstp stp" -- "$cur" ) )
+ ;;
+ 2)
+ case $command in
+ show)
+ ;;
+ *)
+ COMPREPLY=( $( compgen -W "$(brctl show | \
+ awk 'NR>1 {print $1}' )" -- "$cur" ) )
+ esac
+ ;;
+ 3)
+ case $command in
+ addif|delif)
+ _configured_interfaces
+ ;;
+ stp)
+ COMPREPLY=( $( compgen -W 'on off' -- "$cur" ) )
+ ;;
+ esac
+ ;;
+ esac
+} &&
+complete -F _brctl -o default brctl
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/bzip2 b/completions/bzip2
new file mode 100644
index 00000000..7e2f9fd0
--- /dev/null
+++ b/completions/bzip2
@@ -0,0 +1,51 @@
+# bash completion for bzip2
+
+have bzip2 || have pbzip2 &&
+_bzip2()
+{
+ local cur prev xspec helpopts
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+ helpopts=`_parse_help ${COMP_WORDS[0]}`
+
+ case $prev in
+ -b|-h|--help|-p)
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W "${helpopts//#/} -2 -3 -4 -5 -6 -7 -8 -9" \
+ -- "$cur" ) )
+ return 0
+ fi
+
+ local IFS=$'\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
+
+ _compopt_o_filenames
+ COMPREPLY=( $( compgen -f -X "$xspec" -- "$cur" ) \
+ $( compgen -d -- "$cur" ) )
+} &&
+complete -F _bzip2 bzip2 pbzip2
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/cardctl b/completions/cardctl
new file mode 100644
index 00000000..1af7491b
--- /dev/null
+++ b/completions/cardctl
@@ -0,0 +1,24 @@
+# Linux cardctl(8) completion
+
+have cardctl || have pccardctl &&
+_cardctl()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [ $COMP_CWORD -eq 1 ]; then
+ COMPREPLY=( $( compgen -W 'status config ident suspend \
+ resume reset eject insert scheme' -- "$cur" ) )
+ fi
+} &&
+complete -F _cardctl cardctl pccardctl
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/cfengine b/completions/cfengine
new file mode 100644
index 00000000..50a13840
--- /dev/null
+++ b/completions/cfengine
@@ -0,0 +1,88 @@
+# bash completion for cfengine
+
+have cfagent && {
+_cfagent_options()
+{
+ COMPREPLY=( $( compgen -W '--sysadm --force-net-copy --no-check-files \
+ --no-check-mounts --debug --define --no-edits --enforce-links --file \
+ --help --no-hard-classes --no-ifconfig --inform --no-copy --no-lock \
+ --traverse-links --delete-stale-links --no-mount --no-modules \
+ --dry-run --negate --parse-only --no-processes --no-splay \
+ --no-commands --silent --no-tidy --use-env --underscore-classes \
+ --verbose --version --no-preconf --no-links --quiet' -- "$cur" ) )
+}
+
+_cfagent()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -f|--file)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ _cfagent_options
+ fi
+}
+complete -F _cfagent cfagent
+
+_cfrun()
+{
+ local i section cfinputs cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ section=1
+ for (( i=1; i < COMP_CWORD; i++ )); do
+ if [[ "${COMP_WORDS[i]}" == -- ]]; then
+ section=$((section + 1))
+ fi
+ done
+
+ case $section in
+ 1)
+ case $prev in
+ -f)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-f -h -d -S -T -v' -- $cur ) )
+ else
+ hostfile=${CFINPUTS:-/var/lib/cfengine/inputs}/cfrun.hosts
+ for (( i=1; i < COMP_CWORD; i++ )); do
+ if [[ "${COMP_WORDS[i]}" == -f ]]; then
+ hostfile=${COMP_WORDS[i+1]}
+ break
+ fi
+ done
+ [ ! -f $hostfile ] && return 0
+
+ COMPREPLY=( $(compgen -W "$( command grep -v \
+ -E '(=|^$|^#)' $hostfile )" -- "$cur" ) )
+ fi
+ ;;
+ 2)
+ _cfagent_options
+ ;;
+ esac
+}
+complete -F _cfrun cfrun
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/chkconfig b/completions/chkconfig
new file mode 100644
index 00000000..2d02e56e
--- /dev/null
+++ b/completions/chkconfig
@@ -0,0 +1,44 @@
+# chkconfig(8) completion
+
+have chkconfig &&
+_chkconfig()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ --level=[1-6]|[1-6]|--list|--add|--del|--override)
+ _services
+ return 0
+ ;;
+ --level)
+ COMPREPLY=( $( compgen -W '1 2 3 4 5 6' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--list --add --del --override --level' -- "$cur" ) )
+ else
+ if [[ $COMP_CWORD -eq 2 || $COMP_CWORD -eq 4 ]]; then
+ COMPREPLY=( $( compgen -W 'on off reset resetpriorities' -- "$cur" ) )
+ else
+ _services
+ fi
+ fi
+} &&
+complete -F _chkconfig chkconfig
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/chsh b/completions/chsh
new file mode 100644
index 00000000..1af3630f
--- /dev/null
+++ b/completions/chsh
@@ -0,0 +1,37 @@
+# chsh(1) completion
+
+_chsh()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ --list-shells|--help|-v|--version)
+ return 0
+ ;;
+ -s|--shell)
+ _shells
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* && "$( uname -s )" == @(Linux|GNU|GNU/*) ]]; then
+ COMPREPLY=( $( compgen -W '--shell --list-shells --help --version' \
+ -- "$cur" ) )
+ else
+ COMPREPLY=( $( compgen -u -- "$cur" ) )
+ fi
+
+ return 0
+}
+complete -F _chsh chsh
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/cksfv b/completions/cksfv
new file mode 100644
index 00000000..1f83824b
--- /dev/null
+++ b/completions/cksfv
@@ -0,0 +1,38 @@
+# cksfv completion by Chris <xris@forevermore.net>
+
+have cksfv &&
+_cksfv()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ if [ $COMP_CWORD -eq 1 ]; then
+ COMPREPLY=( $( compgen -W '-C -f -i -q -v' -- "$cur" ) )
+ return 0
+ fi
+
+ case "$prev" in
+ -C)
+ _filedir -d
+ return 0
+ ;;
+ -f)
+ _filedir 'sfv'
+ return 0
+ ;;
+ esac
+
+ _filedir
+ return 0
+} &&
+complete -F _cksfv cksfv
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/clisp b/completions/clisp
new file mode 100644
index 00000000..074f692c
--- /dev/null
+++ b/completions/clisp
@@ -0,0 +1,31 @@
+# bash brogrammable completion for various Common Lisp implementations by
+# Nikodemus Siivola <nikodemus@random-state.net>
+
+have clisp &&
+_clisp()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ # completing an option (may or may not be separated by a space)
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-h --help --version --license -B -K \
+ -M -m -L -N -E -q --quiet --silent -w -I -ansi \
+ -traditional -p -C -norc -i -c -l -o -x ' -- "$cur" ) )
+ else
+ _filedir
+ fi
+
+ return 0
+} &&
+complete -F _clisp -o default clisp
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/configure b/completions/configure
new file mode 100644
index 00000000..1b207692
--- /dev/null
+++ b/completions/configure
@@ -0,0 +1,44 @@
+# bash completion for configure
+
+_configure()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ --*prefix|--*dir)
+ _filedir -d
+ ;;
+ esac
+
+ $split && return 0
+
+ # 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=( $( compgen -W "$( $1 --help 2>&1 | \
+ awk '/^ --[A-Za-z]/ { print $1; \
+ if ($2 ~ /--[A-Za-z]/) print $2 }' | sed -e 's/[[,].*//g' )" \
+ -- "$cur" ) )
+ else
+ COMPREPLY=( $( compgen -W "$( $1 --help 2>&1 | \
+ awk '/^ --[A-Za-z]/ { print $1; \
+ if ($2 ~ /--[A-Za-z]/) print $2 }' | sed -e 's/[[,=].*//g' )" \
+ -- "$cur" ) )
+ fi
+}
+complete -F _configure configure
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/coreutils b/completions/coreutils
new file mode 100644
index 00000000..33d58cf7
--- /dev/null
+++ b/completions/coreutils
@@ -0,0 +1,149 @@
+# Completions for various core utilities
+
+# chown(1) completion
+#
+have chown &&
+_chown()
+{
+ local cur prev split=false
+
+ # Get cur and prev words; but don't treat user:group as separate words.
+ _get_comp_words_by_ref -n : cur prev
+
+ _split_longopt && split=true
+
+ case "$prev" in
+ --from)
+ _usergroup
+ return 0
+ ;;
+ --reference)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ # Complete -options
+ local w opts
+ for w in "${COMP_WORDS[@]}" ; do
+ [[ "$w" == -@(R|-recursive) ]] && opts="-H -L -P" && break
+ done
+ COMPREPLY=( $( compgen -W '-c -h -f -R -v --changes --dereference \
+ --no-dereference --from --silent --quiet --reference --recursive \
+ --verbose --help --version $opts' -- "$cur" ) )
+ else
+ local args
+
+ # The first argument is an usergroup; the rest are filedir.
+ _count_args :
+
+ if [[ $args == 1 ]]; then
+ _usergroup -u
+ else
+ _filedir
+ fi
+ fi
+} &&
+complete -F _chown chown
+
+
+# chgrp(1) completion
+#
+have chgrp &&
+_chgrp()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+ cur=${cur//\\\\/}
+
+ _split_longopt && split=true
+
+ if [[ "$prev" == --reference ]]; then
+ _filedir
+ return 0
+ fi
+
+ $split && return 0
+
+ # options completion
+ if [[ "$cur" == -* ]]; then
+ local w opts
+ for w in "${COMP_WORDS[@]}" ; do
+ [[ "$w" == -@(R|-recursive) ]] && opts="-H -L -P" && break
+ done
+ COMPREPLY=( $( compgen -W '-c -h -f -R -v --changes --dereference \
+ --no-dereference --silent --quiet --reference --recursive \
+ --verbose --help --version $opts' -- "$cur" ) )
+ return 0
+ fi
+
+ # first parameter on line or first since an option?
+ if [[ $COMP_CWORD -eq 1 && "$cur" != -* || "$prev" == -* ]]; then
+ _allowed_groups
+ else
+ _filedir || return 0
+ fi
+
+ return 0
+} &&
+complete -F _chgrp chgrp
+
+# id(1) completion
+#
+have id &&
+_id()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-a -g --group -G --groups -n --name\
+ -r --real -u --user --help --version' -- "$cur" ) )
+ else
+ COMPREPLY=( $( compgen -u "$cur" ) )
+ fi
+} &&
+complete -F _id id
+
+# mktemp(1) completion
+#
+have mktemp &&
+_mktemp()
+{
+ COMPREPLY=()
+ local cur prev split=false
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case "$prev" in
+ --help|--version|--suffix)
+ return 0
+ ;;
+ --tmpdir|-p)
+ _filedir -d
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ [[ "$cur" == -* ]] && \
+ COMPREPLY=( $( compgen -W '-d -u -q -p -t' -- "$cur" ) )
+} &&
+complete -F _mktemp mktemp
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/cowsay b/completions/cowsay
new file mode 100644
index 00000000..c6d797aa
--- /dev/null
+++ b/completions/cowsay
@@ -0,0 +1,31 @@
+# bash completion for cowsay
+
+have cowsay &&
+_cowsay()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -f)
+ COMPREPLY=( $( compgen -W '$( cowsay -l | tail -n +2)' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ # relevant options completion
+ COMPREPLY=( $( compgen -W '-b -d -g -p -s -t -w -y -e -f -h -l -n -T -W' \
+ -- "$cur" ) )
+
+} &&
+complete -F _cowsay -o default cowsay cowthink
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/cpan2dist b/completions/cpan2dist
new file mode 100644
index 00000000..13f568af
--- /dev/null
+++ b/completions/cpan2dist
@@ -0,0 +1,52 @@
+# bash completion for cpan2dist
+
+have cpan2dist &&
+_cpan2dist()
+{
+ local cur prev packagelist cpandirs
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ --format)
+ # should remove ":" from COMP_WORDBREAKS, but doesn't work (?)
+ COMPREPLY=( $( compgen -W '$(perl -MCPANPLUS::Dist -e \
+ "print map { \"\$_\n\" } CPANPLUS::Dist->dist_types")' \
+ -- "$cur" ) )
+ return 0
+ ;;
+ --banlist|--ignorelist|--modulelist|--logfile)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--help --skiptest --force --install \
+ --verbose --keepsource --makefile --buildprereq \
+ --archive --flushcache --defaults --edit-metafile \
+ --format --ban --banlist --ignore --ignorelist \
+ --modulelist --logfile --timeout --set-config \
+ --set-program --dist-opts --default-banlist \
+ --default-ignorelist' -- $cur ) )
+ else
+ cpandirs=( "$HOME/.cpanplus/" "$HOME/.cpan/source/modules/" )
+ for dir in ${cpandirs[@]}; do
+ [[ -d "$dir" && -r "$dir/02packages.details.txt.gz" ]] && \
+ packagelist="$dir/02packages.details.txt.gz"
+ done
+ COMPREPLY=( $( zgrep "^${cur//-/::}" \
+ $packagelist 2>/dev/null \
+ | awk '{print $1}' | sed -e 's/::/-/g' ) )
+ fi
+} &&
+complete -F _cpan2dist -o default cpan2dist
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/cpio b/completions/cpio
new file mode 100644
index 00000000..5ead0184
--- /dev/null
+++ b/completions/cpio
@@ -0,0 +1,103 @@
+# bash completion for cpio
+
+have cpio && {
+_cpio_format()
+{
+ COMPREPLY=( $( compgen -W 'bin odc newc crc tar ustar hpbin hpodc' -- "$cur" ) )
+}
+
+_cpio()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref -n : cur prev
+
+ _split_longopt && split=true
+
+ # --name value style option
+ case $prev in
+ -H|--format)
+ _cpio_format
+ return 0
+ ;;
+ -E|-F|-I|--file|--pattern-file)
+ _filedir
+ return 0
+ ;;
+ -R|--owner)
+ _usergroup
+ return 0
+ ;;
+ --rsh-command)
+ _compopt_o_filenames
+ COMPREPLY=( $( compgen -c -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [ $COMP_CWORD -eq 1 ]; then
+ COMPREPLY=( $( compgen -W '-o --create -i --extract -p --pass-through \
+ -? --help --license --usage --version' -- "$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\
+ --to-stdout \
+ --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
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/crontab b/completions/crontab
new file mode 100644
index 00000000..d2ee23a0
--- /dev/null
+++ b/completions/crontab
@@ -0,0 +1,60 @@
+# crontab(1) completion
+
+have crontab &&
+_crontab()
+{
+ local cur prev
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -u)
+ _allowed_users
+ return 0
+ ;;
+ esac
+
+ local i opts=" -u -l -r -e" # leading space at start is significant...
+ [ "$(uname -s)" = Linux ] && opts="$opts -i"
+ [ -e /etc/selinux ] && opts="$opts -s"
+ for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do
+ case "${COMP_WORDS[i]}" in
+ -l)
+ opts=${opts// -l -r -e/}
+ opts=${opts// -i/}
+ opts=${opts// -s/}
+ ;;
+ -e)
+ opts=${opts// -l -r -e/}
+ opts=${opts// -i/}
+ ;;
+ -r)
+ opts=${opts// -l -r -e/}
+ ;;
+ -u)
+ opts=${opts// -u/}
+ opts=${opts// -i/}
+ ;;
+ -i|-s)
+ opts=${opts// ${COMP_WORDS[i]}/}
+ ;;
+ esac
+ done
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '$opts' -- "$cur" ) )
+ return 0
+ fi
+
+ # do filenames only if we did not have -l, -r, or -e
+ [[ "${COMP_LINE}" == *\ -@(l|r|e)* ]] || _filedir
+} &&
+complete -F _crontab crontab
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/cryptsetup b/completions/cryptsetup
new file mode 100644
index 00000000..5e88de34
--- /dev/null
+++ b/completions/cryptsetup
@@ -0,0 +1,113 @@
+# bash completion for cryptsetup
+
+_cryptsetup_name()
+{
+ COMPREPLY=( $( compgen -X control -W '$( command ls /dev/mapper )' \
+ -- "$cur" ) )
+}
+
+_cryptsetup_device()
+{
+ cur=${cur:=/dev/}
+ _filedir
+}
+
+have cryptsetup &&
+_cryptsetup()
+{
+ local cur prev arg
+ COMPREPLY=()
+ cur=`_get_cword`
+ prev=`_get_pword`
+
+ case $prev in
+ --key-file|--master-key-file|--header-backup-file|-d)
+ _filedir
+ return 0;
+ ;;
+ esac
+
+ _get_first_arg
+ if [ -z $arg ]; then
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--hash --cipher --verify-passphrase \
+ --key-file --master-key-file --key-slot --key-size --size \
+ --offset --skip --readonly --iter-time --batch-mode --timeout \
+ --tries --align-payload --version' -- "$cur" ) )
+ else
+ COMPREPLY=( $( compgen -W 'create remove status resize luksFormat \
+ luksOpen luksClose luksSuspend luksResume luksAddKey \
+ luksRemoveKey luksKillSlot luksDelKey luksUUID isLuks \
+ luksDump luksHeaderBackup luksHeaderRestore' -- "$cur" ) )
+ fi
+ else
+ _count_args
+ case $arg in
+ create)
+ case $args in
+ 2)
+ _cryptsetup_name
+ ;;
+ 3)
+ _cryptsetup_device
+ ;;
+ esac
+ ;;
+ remove|status|resize|luksClose|luksSuspend|luksResume)
+ case $args in
+ 2)
+ _cryptsetup_name
+ ;;
+ esac
+ ;;
+ luksFormat|luksAddKey|luksRemoveKey)
+ case $args in
+ 2)
+ _cryptsetup_device
+ ;;
+ 3)
+ _filedir
+ ;;
+ esac
+ ;;
+ luksOpen)
+ case $args in
+ 2)
+ _cryptsetup_device
+ ;;
+ 3)
+ _cryptsetup_name
+ ;;
+ esac
+ ;;
+ luksKillSlot|luksDelKey|luksUUID|isLuks|luksDump)
+ case $args in
+ 2)
+ _cryptsetup_device
+ ;;
+ esac
+ ;;
+ luksHeaderBackup|luksHeaderRestore)
+ case $args in
+ 2)
+ _cryptsetup_device
+ ;;
+ 3)
+ COMPREPLY=( '--header-backup-file' )
+ ;;
+ esac
+ ;;
+ esac
+ fi
+
+ return 0
+} &&
+complete -F _cryptsetup cryptsetup
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/cups b/completions/cups
new file mode 100644
index 00000000..2848c953
--- /dev/null
+++ b/completions/cups
@@ -0,0 +1,21 @@
+# bash completion for cups
+
+have cancel &&
+_cancel()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ COMPREPLY=( $( compgen -W "$( lpstat | cut -d' ' -f1 )" -- "$cur" ) )
+} &&
+complete -F _cancel cancel
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/cvs b/completions/cvs
new file mode 100644
index 00000000..be3b1be7
--- /dev/null
+++ b/completions/cvs
@@ -0,0 +1,392 @@
+# 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_commands()
+{
+ cvs --help-commands 2>&1 | awk '/^( *|\t)/ { print $1 }'
+}
+
+_cvs_options()
+{
+ cvs --help-options 2>&1 | awk '/^( *|\t)-/ { print $1 }'
+}
+
+_cvs_command_options()
+{
+ cvs --help $1 2>&1 | sed -ne 's/^[[:space:]]*\(-[^[:space:]=[]*\).*/\1/p'
+}
+
+_cvs_kflags()
+{
+ COMPREPLY=( $( compgen -W 'kv kvl k o b v' -- "$cur" ) )
+}
+
+_cvs_roots()
+{
+ local -a cvsroots
+ cvsroots=( $CVSROOT )
+ [ -r ~/.cvspass ] && \
+ cvsroots=( "${cvsroots[@]}" $( awk '{ print $2 }' ~/.cvspass ) )
+ [ -r CVS/Root ] && cvsroots=( "${cvsroots[@]}" $(cat CVS/Root) )
+ COMPREPLY=( $( compgen -W '${cvsroots[@]}' -- "$cur" ) )
+ __ltrim_colon_completions "$cur"
+}
+
+_cvs()
+{
+ local cur prev count mode i cvsroot cvsroots pwd
+ local -a flags miss files entries changed newremoved
+
+ COMPREPLY=()
+ _get_comp_words_by_ref -n : cur prev
+
+ 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" && "$mode" == cvsroot ]]; then
+ mode=""
+ fi
+ if [ -z "$mode" ]; then
+ case $i in
+ -H|--help)
+ COMPREPLY=( $( compgen -W "$( _cvs_commands )" -- "$cur" ) )
+ return 0
+ ;;
+ -d)
+ mode=cvsroot
+ cvsroot=${COMP_WORDS[((count+1))]}
+ ;;
+ ad|add|new)
+ mode=add
+ ;;
+ adm|admin|rcs)
+ mode=admin
+ ;;
+ ann|annotate)
+ mode=annotate
+ ;;
+ checkout|co|get)
+ mode=checkout
+ ;;
+ com|commit|ci)
+ mode=commit
+ ;;
+ di|dif|diff)
+ mode=diff
+ ;;
+ ex|exp|export)
+ mode=export
+ ;;
+ edit|unedit)
+ mode=$i
+ ;;
+ hi|his|history)
+ mode=history
+ ;;
+ im|imp|import)
+ mode=import
+ ;;
+ re|rel|release)
+ mode=release
+ ;;
+ log|rlog)
+ mode=log
+ ;;
+ rdiff|patch)
+ mode=rdiff
+ ;;
+ remove|rm|delete)
+ mode=remove
+ ;;
+ rtag|rfreeze)
+ mode=rtag
+ ;;
+ st|stat|status)
+ mode=status
+ ;;
+ tag|freeze)
+ mode=tag
+ ;;
+ up|upd|update)
+ mode=update
+ ;;
+ esac
+ elif [[ "$i" = -* ]]; then
+ flags=( "${flags[@]}" $i )
+ fi
+ count=$((++count))
+ done
+
+ case $mode in
+ add)
+ case $prev in
+ -m)
+ return 0
+ ;;
+ -k)
+ _cvs_kflags
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" != -* ]]; then
+ set_prefix
+ if [[ $COMP_CWORD -gt 1 && -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 "$( _cvs_command_options $mode )" \
+ -- "$cur" ) )
+ fi
+ ;;
+ admin)
+ case $prev in
+ -a|-A|-b|-c|-e|-l|-m|-n|-N|-o|-s|-t-|-u)
+ return 0
+ ;;
+ -t)
+ _filedir
+ return 0
+ ;;
+ -k)
+ _cvs_kflags
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" = -* ]]; then
+ COMPREPLY=( $( compgen -W "$( _cvs_command_options $mode )" \
+ -- "$cur" ) )
+ fi
+ ;;
+ annotate)
+ [[ "$prev" == -@(r|D) ]] && return 0
+
+ if [[ "$cur" = -* ]]; then
+ COMPREPLY=( $( compgen -W "$( _cvs_command_options $mode )" \
+ -- "$cur" ) )
+ else
+ get_entries
+ COMPREPLY=( $( compgen -W '${entries[@]}' -- "$cur" ) )
+ fi
+ ;;
+ checkout)
+ case $prev in
+ -r|-D|j)
+ return 0
+ ;;
+ -d)
+ _filedir -d
+ return 0
+ ;;
+ -k)
+ _cvs_kflags
+ return 0
+ ;;
+ esac
+
+ 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 "$( _cvs_command_options $mode )" \
+ -- "$cur" ) )
+ fi
+ ;;
+ commit)
+ case $prev in
+ -m|-r)
+ return 0
+ ;;
+ -F)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ 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 -o default -- "$cur") )
+ fi
+ else
+ COMPREPLY=( $( compgen -W "$( _cvs_command_options $mode )" \
+ -- "$cur" ) )
+ fi
+ ;;
+ cvsroot)
+ # TODO: works poorly because of the colons and -o default,
+ # could we drop -o default? works ok without it in cvsps
+ _cvs_roots
+ ;;
+ export)
+ case $prev in
+ -r|-D)
+ return 0
+ ;;
+ -d)
+ _filedir -d
+ return 0
+ ;;
+ -k)
+ _cvs_kflags
+ return 0
+ ;;
+ esac
+
+ 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 "$( _cvs_command_options $mode )" \
+ -- "$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 && -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 "$( _cvs_command_options $mode )" \
+ -- "$cur" ) )
+ fi
+ ;;
+ import)
+ case $prev in
+ -I|-b|-m|-W)
+ return 0
+ ;;
+ -k)
+ _cvs_kflags
+ return 0
+ ;;
+ esac
+
+ 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 "$( _cvs_command_options $mode )" \
+ -- "$cur" ) )
+ fi
+ ;;
+ update)
+ case $prev in
+ -r|-D|-j|-I|-W)
+ return 0
+ ;;
+ -k)
+ _cvs_kflags
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" = -* ]]; then
+ COMPREPLY=( $( compgen -W "$( _cvs_command_options $mode )" \
+ -- "$cur" ) )
+ fi
+ ;;
+ "")
+ case $prev in
+ -T)
+ _filedir -d
+ return 0
+ ;;
+ -e|-s)
+ return 0
+ ;;
+ -z)
+ COMPREPLY=( $( compgen -W '1 2 3 4 5 6 7 8 9' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ COMPREPLY=( $( compgen -W '$( _cvs_commands ) $( _cvs_options ) \
+ --help --help-commands --help-options --version' -- "$cur" ) )
+ ;;
+ esac
+
+ return 0
+}
+complete -F _cvs -o default cvs
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/cvsps b/completions/cvsps
new file mode 100644
index 00000000..257437bc
--- /dev/null
+++ b/completions/cvsps
@@ -0,0 +1,69 @@
+# bash completion for cvsps
+
+have cvsps &&
+_cvsps()
+{
+ COMPREPLY=()
+ local cur prev
+ _get_comp_words_by_ref -n : cur prev
+
+ case $prev in
+ -h|-z|-f|-d|-l|--diff-opts|--debuglvl)
+ return 0
+ ;;
+ -s)
+ COMPREPLY=( $( compgen -W "$( cvsps 2>/dev/null |
+ awk '/^PatchSet:?[ \t]/ { print $2 }' )" -- "$cur" ) )
+ return 0
+ ;;
+ -a)
+ COMPREPLY=( $( compgen -W "$( cvsps 2>/dev/null |
+ awk '/^Author:[ \t]/ { print $2 }' )" -- "$cur" ) )
+ return 0
+ ;;
+ -b)
+ COMPREPLY=( $( compgen -W "$( cvsps 2>/dev/null |
+ awk '/^Branch:[ \t]/ { print $2 }' )" -- "$cur" ) )
+ return 0
+ ;;
+ -r)
+ COMPREPLY=( $( compgen -W "$( cvsps 2>/dev/null |
+ awk '/^Tag:[ \t]+[^(]/ { print $2 }' )" -- "$cur" ) )
+ return 0
+ ;;
+ -p)
+ _filedir -d
+ return 0
+ ;;
+ --test-log)
+ _filedir
+ return 0
+ ;;
+ -Z)
+ COMPREPLY=( $( compgen -W '1 2 3 4 5 6 7 8 9' -- "$cur" ) )
+ return 0
+ ;;
+ --root)
+ type _cvs_roots &>/dev/null && _cvs_roots
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]] ; then
+ COMPREPLY=( $( compgen -W '-h -x -u -z -g -s -a -f -d -b -l -r -p -v \
+ -t --norc --summary-first --test-log --diff-opts --bkcvs --no-rlog \
+ --cvs-direct --no-cvs-direct --debuglvl -Z --root -q -A' \
+ -- "$cur" ) )
+ else
+ type _cvs_roots &>/dev/null && _cvs_roots
+ fi
+} &&
+complete -F _cvsps cvsps
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/dd b/completions/dd
new file mode 100644
index 00000000..7b9b3ac7
--- /dev/null
+++ b/completions/dd
@@ -0,0 +1,39 @@
+# bash completion for dd
+
+have dd &&
+_dd()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref -n = cur
+
+ 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 -o nospace dd
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/dhclient b/completions/dhclient
new file mode 100644
index 00000000..3d7e1e1a
--- /dev/null
+++ b/completions/dhclient
@@ -0,0 +1,36 @@
+# bash completion for dhclient
+
+have dhclient && _dhclient()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -cf|-lf|-pf|-sf)
+ _filedir
+ return 0
+ ;;
+ -s)
+ _known_hosts_real "$cur"
+ 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
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/dict b/completions/dict
new file mode 100644
index 00000000..4cfdf98f
--- /dev/null
+++ b/completions/dict
@@ -0,0 +1,77 @@
+# 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=()
+ _get_comp_words_by_ref cur prev
+ 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 '--host --port --database \
+ --match --strategy --config \
+ --nocorrect --dbs --strats \
+ --serverhelp --info --serverinfo \
+ --noauth --user --key --version \
+ --license --help --verbose --raw \
+ --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 -o default dict rdict
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/dpkg b/completions/dpkg
new file mode 100644
index 00000000..0556f3d1
--- /dev/null
+++ b/completions/dpkg
@@ -0,0 +1,244 @@
+# This function is required by _dpkg() and _dpkg-reconfigure()
+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()
+{
+ command grep -A 1 "Package: $1" /var/lib/dpkg/status | \
+ command grep -B 1 -Ee "ok installed|half-installed|unpacked| \
+ half-configured|config-files" \
+ -Ee "^Essential: yes" | \
+ command grep "Package: $1" | cut -d\ -f2
+}
+}
+
+# Debian dpkg(8) completion
+#
+_dpkg()
+{
+ local cur prev i
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+ i=$COMP_CWORD
+
+ _expand || return 0
+
+ _split_longopt
+
+ # 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|-W|--install|--unpack|--record-avail| \
+ --contents|--info|--fsys-tarfile|--field|--control|--extract| \
+ --show)
+ _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 dpkg dpkg-deb
+}
+
+# Debian GNU dpkg-reconfigure(8) completion
+#
+have dpkg-reconfigure &&
+_dpkg_reconfigure()
+{
+ local cur prev opt
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -f|--frontend)
+ opt=( $( printf '%s\n' /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 '--frontend --priority --all --unseen-only \
+ --help --showold --force --terse' -- "$cur" ) )
+ else
+ COMPREPLY=( $( _comp_dpkg_installed_packages "$cur" ) )
+ fi
+} &&
+complete -F _dpkg_reconfigure -o default dpkg-reconfigure
+
+# Debian dpkg-source completion
+#
+have dpkg-source &&
+_dpkg_source()
+{
+ local cur prev options work i action packopts unpackopts fields
+
+ packopts="-c -l -F -V -T -D -U -W -E -sa -i -I -sk -sr -ss -sA -sK -sP \
+ -sU -sR"
+ unpackopts="-sp -sn -su"
+ options="-x -b $packopts $unpackopts"
+ fields="Format Source Version Binary Maintainer Uploader Architecture \
+ Standards-Version Build-Depends Files"
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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
+
+ case $action in
+ unpack)
+ case $prev in
+ -x)
+ _filedir -d
+ _filedir 'dsc'
+ return 0
+ ;;
+ *)
+ COMPREPLY=( $( compgen -W "$unpackopts" -- "$cur" ) )
+ _filedir -d
+ _filedir
+ return 0
+ ;;
+ esac
+ return 0
+ ;;
+ pack)
+ case $prev in
+ -b)
+ _filedir -d
+ 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
+ _filedir -d
+ _filedir
+ return 0
+ ;;
+ -F)
+ # -F: force change log format
+ COMPREPLY=( $( command ls /usr/lib/dpkg/parsechangelog ) )
+ 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 [[ "$cur" == *=* ]]; then
+ # $cur contains a "="
+ COMPREPLY=()
+ return 0
+ else
+ COMPREPLY=( $( compgen -W "$fields" -- "$cur" ) )
+ return 0
+ fi
+ ;;
+ -U)
+ # -U: remove a field
+ # Suggest possible fieldnames
+ COMPREPLY=( $( compgen -W "$fields" -- "$cur" ) )
+ return 0
+ ;;
+ *)
+ COMPREPLY=( $( compgen -W "$packopts $unpackopts" -- "$cur" ) )
+ return 0
+ ;;
+ esac
+ return 0
+ ;;
+ *)
+ COMPREPLY=( $( compgen -W "$options" -- "$cur" ) )
+ return 0
+ ;;
+ esac
+} &&
+complete -F _dpkg_source dpkg-source
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/dselect b/completions/dselect
new file mode 100644
index 00000000..3042a8d0
--- /dev/null
+++ b/completions/dselect
@@ -0,0 +1,40 @@
+# Debian Linux dselect(8) completion.
+
+have dselect &&
+_dselect()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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 dselect
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/dsniff b/completions/dsniff
new file mode 100644
index 00000000..1d3b303b
--- /dev/null
+++ b/completions/dsniff
@@ -0,0 +1,256 @@
+# dsniff util completion
+
+have arpspoof &&
+_arpspoof()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -i)
+ _available_interfaces
+ return 0
+ ;;
+ -t)
+ _known_hosts_real "$cur"
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-i -t' -- "$cur" ) )
+ else
+ _known_hosts_real "$cur"
+ fi
+
+} &&
+complete -F _arpspoof arpspoof
+
+have dnsspoof &&
+_dnsspoof()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -i)
+ _interfaces
+ return 0
+ ;;
+ -f)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-i -f' -- "$cur" ) )
+ fi
+
+} &&
+complete -F _dnsspoof dnsspoof
+
+have dsniff &&
+_dsniff()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -r|-w|-f)
+ _filedir
+ return 0
+ ;;
+ -i)
+ _interfaces
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-c -d -m -n -i -s -f -t -r -w' -- "$cur" ) )
+ fi
+
+} &&
+complete -F _dsniff dsniff
+
+have filesnarf || have mailsnarf || have msgsnarf &&
+_snarf()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -i)
+ _interfaces
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-i -v' -- "$cur" ) )
+ fi
+
+} &&
+complete -F _snarf filesnarf mailsnarf msgsnarf
+
+have macof &&
+_macof()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -i)
+ _interfaces
+ return 0
+ ;;
+ esac
+
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-i -s -d -e -x -y -n' -- "$cur" ) )
+ fi
+
+} &&
+complete -F _macof macof
+
+have sshmitm &&
+_sshmitm()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-d -I -p' -- "$cur" ) )
+ else
+ _known_hosts_real "$cur"
+ fi
+
+} &&
+complete -F _sshmitm sshmitm
+
+have sshow &&
+_sshow()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -i)
+ _interfaces
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-d -i' -- "$cur" ) )
+ fi
+
+} &&
+complete -F _sshow sshow
+
+have tcpkill &&
+_tcpkill()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -i)
+ _interfaces
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-i -1 -2 -3 -4 -5 -6 -7 -8 -9' -- "$cur" ) )
+ fi
+
+} &&
+complete -F _tcpkill tcpkill
+
+have tcpnice &&
+_tcpnice()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -i)
+ _interfaces
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-A -I -M -i' -- "$cur" ) )
+ fi
+
+} &&
+complete -F _tcpnice tcpnice
+
+have urlsnarf &&
+_urlsnarf()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -i)
+ _interfaces
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-n -i -v' -- "$cur" ) )
+ fi
+
+} &&
+complete -F _urlsnarf urlsnarf
+
+have webmitm &&
+_webmitm()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-d' -- "$cur" ) )
+ else
+ _known_hosts_real "$cur"
+ fi
+
+} &&
+complete -F _webmitm webmitm
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/dvd+rw-tools b/completions/dvd+rw-tools
new file mode 100644
index 00000000..f37781ee
--- /dev/null
+++ b/completions/dvd+rw-tools
@@ -0,0 +1,47 @@
+# dvd+rw-tools completions
+
+have growisofs &&
+_growisofs()
+{
+ COMPREPLY=()
+ local cur prev
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -version|-speed)
+ return 0
+ ;;
+ -Z|-M)
+ compopt -o nospace &>/dev/null
+ _dvd_devices
+ return 0
+ ;;
+ /?(r)dev/*)
+ if [[ $cur == =* ]] ; then
+ # e.g. /dev/dvd=foo.iso, /dev/dvdrw=/dev/zero
+ cur="${cur#=}"
+ _filedir
+ return 0
+ fi
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ # TODO: mkisofs options
+ COMPREPLY=( $( compgen -W '-dvd-compat -overburn -speed= -Z -M' \
+ -- "$cur" ) )
+ [[ ${COMPREPLY[@]} == *= ]] && compopt -o nospace &>/dev/null
+ return 0
+ fi
+
+ _filedir
+} &&
+complete -F _growisofs growisofs
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/e2fsprogs b/completions/e2fsprogs
new file mode 100644
index 00000000..50ce7885
--- /dev/null
+++ b/completions/e2fsprogs
@@ -0,0 +1,180 @@
+# bash completion for e2fsprogs
+
+have badblocks &&
+_badblocks()
+{
+ COMPREPLY=()
+ local cur prev
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -b|-c|-e|-d|-p|-t)
+ return 0
+ ;;
+ -i|-o)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ # -w (dangerous) and -X (internal use) not here on purpose
+ COMPREPLY=( $( compgen -W '-b -c -e -d -f -i -n -o -p -s -t -v' \
+ -- "$cur" ) )
+ return 0
+ fi
+
+ cur=${cur:=/dev/}
+ _filedir
+} &&
+complete -F _badblocks badblocks
+
+
+have dumpe2fs &&
+_dumpe2fs()
+{
+ COMPREPLY=()
+ local cur prev
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -o|-V)
+ return 0
+ ;;
+ -i)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-b -o -f -h -i -x -V' -- "$cur" ) )
+ return 0
+ fi
+
+ cur=${cur:=/dev/}
+ _filedir
+} &&
+complete -F _dumpe2fs dumpe2fs
+
+
+have e2freefrag &&
+_e2freefrag()
+{
+ COMPREPLY=()
+ local cur prev
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -c|-h)
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-c -h' -- "$cur" ) )
+ return 0
+ fi
+
+ cur=${cur:=/dev/}
+ _filedir
+} &&
+complete -F _e2freefrag e2freefrag
+
+
+have e2label &&
+_e2label()
+{
+ COMPREPLY=()
+ local cur cword
+ _get_comp_words_by_ref cur cword
+
+ if [ $cword -eq 1 ]; then
+ cur=${cur:=/dev/}
+ _filedir
+ fi
+} &&
+complete -F _e2label e2label
+
+
+have filefrag &&
+_filefrag()
+{
+ COMPREPLY=()
+ local cur
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-B -b -s -v -x' -- "$cur" ) )
+ return 0
+ fi
+
+ _filedir
+} &&
+complete -F _filefrag filefrag
+
+
+have tune2fs &&
+_tune2fs()
+{
+ COMPREPLY=()
+ local cur prev
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -c|-C|-E|-i|-J|-L|-m|-r|-T)
+ return 0
+ ;;
+ -e)
+ COMPREPLY=( $( compgen -W 'continue remount-ro panic' -- "$cur" ) )
+ return 0
+ ;;
+ -g)
+ _gids
+ COMPREPLY=( $( compgen -g -W '${COMPREPLY[@]}' -- "$cur" ) )
+ return 0
+ ;;
+ -M)
+ _filedir -d
+ ;;
+ -o)
+ local -a opts=(^debug ^bsdgroups ^user_xattr ^acl ^uid16
+ ^journal_data ^journal_data_ordered ^journal_data_writeback)
+ COMPREPLY=( $( compgen -W '${opts[@]} ${opts[@]#^}' -- "$cur" ) )
+ return 0
+ ;;
+ -O)
+ local -a opts=(^dir_index ^dir_nlink ^extent ^extra_isize ^filetype
+ ^flex_bg ^has_journal ^huge_file ^large_file ^resize_inode
+ ^sparse_super ^uninit_bg)
+ COMPREPLY=( $( compgen -W '${opts[@]} ${opts[@]#^}' -- "$cur" ) )
+ return 0
+ ;;
+ -u)
+ _uids
+ COMPREPLY=( $( compgen -u -W '${COMPREPLY[@]}' -- "$cur" ) )
+ return 0
+ ;;
+ -U)
+ COMPREPLY=( $( compgen -W 'clear random time' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-c -C -e -E -f -g -i -j -J -l -L -m -M -o
+ -O -r -T -u -U' -- "$cur" ) )
+ fi
+
+ cur=${cur:=/dev/}
+ _filedir
+} &&
+complete -F _tune2fs tune2fs
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/findutils b/completions/findutils
new file mode 100644
index 00000000..b8aaa57a
--- /dev/null
+++ b/completions/findutils
@@ -0,0 +1,128 @@
+# bash completion for GNU find. This makes heavy use of ksh style extended
+# globs and contains Linux specific code for completing the parameter
+# to the -fstype option.
+
+have find &&
+_find()
+{
+ local cur prev i exprfound onlyonce
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -maxdepth|-mindepth)
+ COMPREPLY=( $( compgen -W '0 1 2 3 4 5 6 7 8 9' -- "$cur" ) )
+ return 0
+ ;;
+ -newer|-anewer|-cnewer|-fls|-fprint|-fprint0|-fprintf|-name|-iname|\
+ -lname|-ilname|-wholename|-iwholename|-samefile)
+ _filedir
+ return 0
+ ;;
+ -fstype)
+ _fstypes
+ if [[ "$( uname -s )" == *BSD ]] ; then
+ COMPREPLY=( "${COMPREPLY[@]}" \
+ $( compgen -W 'local rdonly' -- "$cur" ) )
+ fi
+ return 0
+ ;;
+ -gid)
+ _gids
+ return 0
+ ;;
+ -group)
+ COMPREPLY=( $( compgen -g -- "$cur" 2>/dev/null) )
+ return 0
+ ;;
+ -xtype|-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|-execdir|-ok|-okdir)
+ COMP_WORDS=(COMP_WORDS[0] "$cur")
+ COMP_CWORD=1
+ _command
+ return 0
+ ;;
+ -[acm]min|-[acm]time|-iname|-lname|-wholename|-iwholename|-lwholename|\
+ -ilwholename|-inum|-path|-ipath|-regex|-iregex|-links|-perm|-size|\
+ -used|-printf|-context)
+ # do nothing, just wait for a parameter to be given
+ return 0
+ ;;
+ -regextype)
+ COMPREPLY=( $( compgen -W 'emacs posix-awk posix-basic \
+ posix-egrep posix-extended' -- "$cur" ) )
+ 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 \
+ -ignore_readdir_race -maxdepth -mindepth -mindepth -mount \
+ -noignore_readdir_race -noleaf -regextype -version -warn -nowarn \
+ -xdev \
+ -amin -anewer -atime -cmin -cnewer -ctime -empty -executable -false \
+ -fstype -gid -group -ilname -iname -inum -ipath -iregex -iwholename \
+ -links -lname -mmin -mtime -name -newer -nogroup -nouser -path -perm \
+ -readable -regex -samefile -size -true -type -uid -used -user \
+ -wholename -writable -xtype -context \
+ -delete -exec -execdir -fls -fprint -fprint0 -fprintf -ls -ok -okdir \
+ -print -print0 -printf -prune -quit' -- "$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 -ignore_readdir_race -maxdepth \
+ -mindepth -mount -noignore_readdir_race -noleaf -nowarn -regextype \
+ -version -warn -xdev '
+ COMPREPLY=( $( \
+ (while read -d ' ' i; do
+ [[ -z "$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
+ printf '%s ' "${COMPREPLY[@]}") <<<"${COMP_WORDS[@]}"
+ ) )
+
+ _filedir
+
+ return 0
+} &&
+complete -F _find find
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/freeciv b/completions/freeciv
new file mode 100644
index 00000000..602ad76a
--- /dev/null
+++ b/completions/freeciv
@@ -0,0 +1,65 @@
+# freeciv completions
+
+have civserver &&
+_civserver()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -f|-g|-l|-r|--file|--log|--gamelog|--read)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-d -f -g -h -i -l -m -M -p -q -r -v\
+ --debug --file --gamelog --help --info --log --meta \
+ --Metaserver --port --quitidle --read --version' -- "$cur" ) )
+ fi
+
+} &&
+complete -F _civserver civserver
+
+have civclient &&
+_civclient()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -l|-S|-t|--log|--Sound|--tiles)
+ _filedir
+ return 0
+ ;;
+ -P|--Plugin)
+ COMPREPLY=( $( compgen -W 'none esd sdl' -- "$cur" ) )
+ return 0
+ ;;
+ -s|--server)
+ _known_hosts_real "$cur"
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-a -d -h -l -m -n -p -P -s -S -t -v\
+ --autoconnect --debug --help --log --meta --name --port \
+ --Plugin --server --Sound --tiles --version' -- "$cur" ) )
+ fi
+
+} &&
+complete -F _civclient civclient
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/freerdp b/completions/freerdp
new file mode 100644
index 00000000..82a46462
--- /dev/null
+++ b/completions/freerdp
@@ -0,0 +1,47 @@
+# bash completion for xfreerdp
+
+have xfreerdp &&
+_xfreerdp()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -k)
+ COMPREPLY=( $( compgen -W "$(xfreerdp --kbd-list | \
+ awk '/^0x/ {print $1}')" -- "$cur" ) )
+ return 0
+ ;;
+ -a)
+ COMPREPLY=( $( compgen -W '8 15 16 24 32' -- "$cur" ) )
+ return 0
+ ;;
+ -x)
+ COMPREPLY=( $( compgen -W 'b broadband m modem l lan' -- $cur ) )
+ return 0
+ ;;
+ --plugin)
+ COMPREPLY=( $( compgen -W 'cliprdr rdpsnd rdpdr' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-u -d -s -c -p -n -t -g -a -z -f -x -O -o \
+ -k --kbd-list -h --plugin --data' -- "$cur" ) )
+ else
+ _known_hosts_real "$cur"
+ fi
+
+} &&
+complete -F _xfreerdp xfreerdp
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/fuse b/completions/fuse
new file mode 100644
index 00000000..58d0c516
--- /dev/null
+++ b/completions/fuse
@@ -0,0 +1,36 @@
+# bash completion for fuse
+
+have fusermount &&
+_fusermount()
+{
+ COMPREPLY=()
+ local cur prev
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -h|-V|-o)
+ return 0
+ ;;
+ -u)
+ COMPREPLY=( $( compgen -W "$( awk \
+ '{ if ($3 ~ /^fuse\./) print $2 }' /etc/mtab 2>/dev/null )" \
+ -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]] ; then
+ COMPREPLY=( $( compgen -W '-h -V -o -u -q -z' -- "$cur" ) )
+ else
+ _filedir -d
+ fi
+} &&
+complete -F _fusermount fusermount
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/gcc b/completions/gcc
new file mode 100644
index 00000000..d78e3e24
--- /dev/null
+++ b/completions/gcc
@@ -0,0 +1,59 @@
+# 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=()
+ _get_comp_words_by_ref cur
+
+ _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=( $( compgen -W "$( $cc --help 2>/dev/null | \
+ tr '\t' ' ' | \
+ sed -e '/^ *-/!d' -e 's/ *-\([^ ]*\).*/-\1/' | \
+ sort -u )" -- "$cur" ) )
+ else
+ _filedir
+ fi
+} &&
+complete -F _gcc gcc g++ c++ g77 gcj gpc
+[ $USERLAND = GNU -o $UNAME = Cygwin ] && \
+[ -n "${have:-}" ] && complete -F _gcc cc
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/gcl b/completions/gcl
new file mode 100644
index 00000000..e0931536
--- /dev/null
+++ b/completions/gcl
@@ -0,0 +1,30 @@
+# bash programmable completion for various Common Lisp implementations by
+# Nikodemus Siivola <nikodemus@random-state.net>
+
+have gcl &&
+_gcl()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ # completing an option (may or may not be separated by a space)
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-eval -load -f -batch -dir -libdir \
+ -compile -o-file -c-file -h-file -data-file -system-p '-- "$cur" ) )
+ else
+ _filedir
+ fi
+
+ return 0
+} &&
+complete -F _gcl -o default gcl
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/gdb b/completions/gdb
new file mode 100644
index 00000000..f0bc42d3
--- /dev/null
+++ b/completions/gdb
@@ -0,0 +1,44 @@
+# bash completion for gdb
+
+have gdb &&
+_gdb()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ if [ $COMP_CWORD -eq 1 ]; then
+ local IFS
+ _compopt_o_filenames
+ 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=( $( \
+ sed -e 's/:\{2,\}/:/g' -e 's/^://' -e 's/:$//' <<<"$PATH" ) )
+ 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 -o default gdb
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/genisoimage b/completions/genisoimage
new file mode 100644
index 00000000..61b18114
--- /dev/null
+++ b/completions/genisoimage
@@ -0,0 +1,77 @@
+# bash completion for mkisofs/genisoimage
+
+(have mkisofs || have genisoimage) &&
+_mkisofs()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -o|-abstract|-biblio|-check-session|-copyright|-log-file| \
+ -root-info|-prep-boot|-*-list)
+ _filedir
+ return 0
+ ;;
+ -*-charset)
+ COMPREPLY=( $( compgen -W '$( mkisofs -input-charset \
+ help 2>&1 | tail -n +3 )' -- "$cur" ) )
+ return 0
+ ;;
+ -uid)
+ _uids
+ return 0
+ ;;
+ -gid)
+ _gids
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-abstract -appid -allow-lowercase \
+ -allow-multidot -biblio -cache-inodes -no-cache-inodes \
+ -eltorito-boot -eltorito-alt-boot -sparc-boot -generic-boot \
+ -hard-disk-boot -no-emul-boot -no-boot -boot-load-seg \
+ -boot-load-size -boot-info-table -cdrecord-params \
+ -eltorito-catalog -check-oldname -check-session -copyright \
+ -omit-period -disable-deep-relocation -dir-mode -dvd-video \
+ -follow-links -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 -joliet -joliet-long -jcharset \
+ -full-iso9660-filenames -allow-leading-dots -log-file -exclude \
+ -exclude-list -max-iso9660-filenames -prev-session \
+ -omit-version-number -new-dir-mode -nobak -no-bak -force-rr -no-rr \
+ -no-split-symlink-components -no-split-symlink-fields -output -pad \
+ -no-pad -path-list -publisher -preparer -print-size -quiet -rock
+ -rational-rock -relaxed-filenames -sort -split-output \
+ -stream-media-size -stream-file-name -sysid -translation-table \
+ -table-name -ucs-level -udf -uid -use-fileversion \
+ -untranslated-filenames -no-iso-translate -volid -volset \
+ -volset-size -volset-seqno -verbose -old-exclude \
+ -transparent-compression -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 mkisofs genisoimage
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/getent b/completions/getent
new file mode 100644
index 00000000..54e62ab8
--- /dev/null
+++ b/completions/getent
@@ -0,0 +1,55 @@
+# bash completion for getent
+
+have getent &&
+_getent()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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=( $( compgen -W "$( getent "$prev" | \
+ awk '{ print $1 }' )" -- "$cur" ) )
+ return 0
+ ;;
+ aliases|shadow)
+ COMPREPLY=( $( compgen -W "$( getent "$prev" | cut -d: -f1 )" \
+ -- "$cur" ) )
+ 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
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/gkrellm b/completions/gkrellm
new file mode 100644
index 00000000..13e25ada
--- /dev/null
+++ b/completions/gkrellm
@@ -0,0 +1,54 @@
+# gkrellm(1) completion
+
+have gkrellm || have gkrellm2 &&
+_gkrellm()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -t|--theme)
+ _filedir -d
+ return 0
+ ;;
+ -p|--plugin)
+ _filedir so
+ return 0
+ ;;
+ -s|--server)
+ _known_hosts_real "$cur"
+ return 0
+ ;;
+ -l|--logfile)
+ _filedir
+ return 0
+ ;;
+ -g|--geometry|-c|--config|-P|--port|-d|--debug-level)
+ # Argument required but no completions available
+ return 0
+ ;;
+ -h|--help|-v|--version)
+ # All other options are noop with these
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--theme --geometry --wm --m2 --nt \
+ --withdrawn --config --force-host-config --server --port --nc \
+ --config-clean --nolock --plugin --demo --logfile --version \
+ --debug-level --help' -- "$cur" ) )
+ fi
+
+} &&
+complete -F _gkrellm gkrellm gkrellm2
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/gnatmake b/completions/gnatmake
new file mode 100644
index 00000000..cdd193c1
--- /dev/null
+++ b/completions/gnatmake
@@ -0,0 +1,37 @@
+# Gnatmake completion by Ralf_Schroth@t-online.de (Ralf Schroth)
+
+have gnatmake &&
+_gnatmake()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ # relevant (and less relevant ;-) )options completion
+ COMPREPLY=( $( compgen -W '-a -c -f -i -j -k -m -M -n -o \
+ -q -s -v -z -aL -A -aO -aI -I -I- -L -nostdinc \
+ -nostdlib -cargs -bargs -largs -fstack-check \
+ -fno-inline -g -O1 -O0 -O2 -O3 -gnata -gnatA \
+ -gnatb -gnatc -gnatd -gnatD -gnate -gnatE \
+ -gnatf -gnatF -gnatg -gnatG -gnath -gnati \
+ -gnatk -gnatl -gnatL -gnatm -gnatn -gnato \
+ -gnatO -gnatp -gnatP -gnatq -gnatR -gnats \
+ -gnatt -gnatT -gnatu -gnatU -gnatv -gnatws \
+ -gnatwe -gnatwl -gnatwu -gnatW -gnatx -gnatX \
+ -gnaty -gnatz -gnatZ -gnat83' -- "$cur" ) )
+ else
+ # source file completion
+ _filedir '@(adb|ads)'
+ fi
+} &&
+complete -F _gnatmake gnatmake
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/gpg b/completions/gpg
new file mode 100644
index 00000000..878a800b
--- /dev/null
+++ b/completions/gpg
@@ -0,0 +1,48 @@
+# bash completion for gpg
+
+have gpg &&
+_gpg()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -s|--sign|--clearsign|--decrypt-files|--load-extension)
+ _filedir
+ return 0
+ ;;
+ --export|--sign-key|--lsignkey|--nrsignkey|--nrlsignkey|--editkey)
+ # return list of public keys
+ COMPREPLY=( $( compgen -W "$( gpg --list-keys 2>/dev/null | \
+ sed -ne 's@^pub.*/\([^ ]*\).*$@\1@p' \
+ -ne 's@^.*\(<\([^>]*\)>\).*$@\2@p' )" -- "$cur" ) )
+ return 0
+ ;;
+ -r|--recipient)
+ COMPREPLY=( $( compgen -W "$( gpg --list-keys 2>/dev/null | \
+ sed -ne 's@^.*<\([^>]*\)>.*$@\1@p')" -- "$cur" ))
+ if [ -e ~/.gnupg/gpg.conf ]; then
+ COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "$( sed -ne \
+ 's@^[ \t]*group[ \t][ \t]*\([^=]*\).*$@\1@p' \
+ ~/.gnupg/gpg.conf )" -- "$cur") )
+ fi
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '$(gpg --dump-options)' -- "$cur" ) )
+ fi
+
+} &&
+complete -F _gpg -o default gpg
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/gpg2 b/completions/gpg2
new file mode 100644
index 00000000..b99783f9
--- /dev/null
+++ b/completions/gpg2
@@ -0,0 +1,52 @@
+# gpg2(1) completion
+
+have gpg2 && {
+_gpg2 ()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ --homedir)
+ _filedir -d
+ return 0
+ ;;
+ -s|--sign|--clearsign|--options|--decrypt)
+ _filedir
+ return 0
+ ;;
+ --export|--sign-key|--lsign-key|--nrsign-key|--nrlsign-key|--edit-key)
+ # return list of public keys
+ COMPREPLY=( $( compgen -W "$( gpg2 --list-keys 2>/dev/null | \
+ sed -ne 's@^pub.*/\([^ ]*\).*$@\1@p' \
+ -ne 's@^.*\(<\([^>]*\)>\).*$@\2@p' )" -- "$cur" ) )
+ return 0
+ ;;
+ -r|--recipient)
+ COMPREPLY=( $( compgen -W "$( gpg2 --list-keys 2>/dev/null | \
+ sed -ne 's@^.*<\([^>]*\)>.*$@\1@p')" -- "$cur" ))
+ if [ -e ~/.gnupg/gpg.conf ]; then
+ COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "$( sed -ne \
+ 's@^[ \t]*group[ \t][ \t]*\([^=]*\).*$@\1@p' \
+ ~/.gnupg/gpg.conf)" -- "$cur"))
+ fi
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '$(gpg2 --dump-options)' -- "$cur" ) )
+ fi
+} &&
+complete -F _gpg2 -o default gpg2
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/gzip b/completions/gzip
new file mode 100644
index 00000000..f7aec17e
--- /dev/null
+++ b/completions/gzip
@@ -0,0 +1,55 @@
+# bash completion for gzip
+
+have gzip || have pigz &&
+_gzip()
+{
+ local cur prev xspec helpopts
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+ helpopts=`_parse_help ${COMP_WORDS[0]}`
+
+ case $prev in
+ -b|--blocksize|-p|--processes|-S|--suffix|-h|--help|-V|--version)
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W "$helpopts -1 -2 -3 -4 -5 -6 -7 -8 -9" \
+ -- "$cur" ) )
+ return 0
+ fi
+
+ local IFS=$'\n'
+
+ xspec="*.@(gz|t[ag]z)"
+ 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" == '>' || "$prev" == '>>' ]]; then
+ xspec=
+ elif [ "$prev" = '<' ]; then
+ xspec=
+ fi
+
+ _expand || return 0
+
+ _compopt_o_filenames
+ COMPREPLY=( $( compgen -f -X "$xspec" -- "$cur" ) \
+ $( compgen -d -- "$cur" ) )
+} &&
+complete -F _gzip gzip pigz
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/heimdal b/completions/heimdal
new file mode 100644
index 00000000..c1efb110
--- /dev/null
+++ b/completions/heimdal
@@ -0,0 +1,133 @@
+# bash completion for heimdal
+
+have ktutil && {
+_heimdal_principals()
+{
+
+ COMPREPLY=( $( compgen -W "$( kadmin -l dump 2>/dev/null | \
+ awk '{print $1}' )" -- "$cur" ) )
+}
+
+_heimdal_realms()
+{
+
+ COMPREPLY=( $( compgen -W "( kadmin -l dump 2>/dev/null | \
+ awk '{print $1}' | awk -F@ '{print $2}' )" -- "$cur" ) )
+}
+
+_heimdal_encodings()
+{
+
+ COMPREPLY=( $( compgen -W 'des-cbc-mcrc des-cbc-md4 des-cbc-md5 \
+ des3-cbc-sha1 arcfour-hmac-md5 aes128-cts-hmac-sha1-96 \
+ aes256-cts-hmac-sha1-96' -- "$cur" ) )
+}
+
+_ktutil()
+{
+ local cur prev command options split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -p|--principal)
+ _heimdal_principals
+ return 0
+ ;;
+ -e|--enctype)
+ _heimdal_encodings
+ return 0
+ ;;
+ -a|--admin-server)
+ _known_hosts_real "$cur"
+ return 0
+ ;;
+ -r|--realm)
+ _heimdal_realms
+ return 0
+ ;;
+ -s|-k|--srvtab|--keytab)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ commands='add change copy get list remove rename purge srvconvert \
+ srv2keytab srvcreate key2srvtab'
+
+ for (( i=1; i < COMP_CWORD; i++ )); do
+ case ${COMP_WORDS[i]} in
+ -k|--keytab)
+ i=$(($i+1))
+ ;;
+ -*)
+ ;;
+ *)
+ command=${COMP_WORDS[i]}
+ break
+ ;;
+ esac
+ done
+
+ if [[ "$cur" == -* ]]; then
+ case $command in
+ add)
+ options='-p --principal -V -e --enctype -w --password -r \
+ --random -s --no-salt -h --hex'
+ ;;
+ change)
+ options='-r --realm -a --admin-server -s --server-port'
+ ;;
+ get)
+ options='-p --principal -e --enctype -r --realm -a \
+ --admin-server -s server --server-port'
+ ;;
+ list)
+ options='--keys --timestamp'
+ ;;
+ remove)
+ options='-p --principal -V --kvno -e --enctype'
+ ;;
+ purge)
+ options='--age'
+ ;;
+ srv2keytab|key2srvtab)
+ options='-s --srvtab'
+ ;;
+ *)
+ options='-k --keytab -v --verbose --version -v --help'
+ ;;
+ esac
+ COMPREPLY=( $( compgen -W "$options" -- "$cur" ) )
+ else
+ case $command in
+ copy)
+ _filedir
+ ;;
+ get)
+ _heimdal_principals
+ ;;
+ rename)
+ _heimdal_principals
+ ;;
+ *)
+ COMPREPLY=( $( compgen -W "$commands" -- "$cur" ) )
+ ;;
+ esac
+ fi
+}
+complete -F _ktutil ktutil
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/helpers/Makefile.am b/completions/helpers/Makefile.am
new file mode 100644
index 00000000..98fccefe
--- /dev/null
+++ b/completions/helpers/Makefile.am
@@ -0,0 +1,3 @@
+helpers_SCRIPTS = perl
+
+EXTRA_DIST = $(helpers_SCRIPTS)
diff --git a/completions/helpers/Makefile.in b/completions/helpers/Makefile.in
new file mode 100644
index 00000000..e367369b
--- /dev/null
+++ b/completions/helpers/Makefile.in
@@ -0,0 +1,365 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+subdir = completions/helpers
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(helpersdir)"
+SCRIPTS = $(helpers_SCRIPTS)
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+am__leading_dot = @am__leading_dot@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bashcompdir = @bashcompdir@
+bindir = @bindir@
+build_alias = @build_alias@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+helpersdir = @helpersdir@
+host_alias = @host_alias@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+helpers_SCRIPTS = perl
+EXTRA_DIST = $(helpers_SCRIPTS)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign completions/helpers/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign completions/helpers/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+install-helpersSCRIPTS: $(helpers_SCRIPTS)
+ @$(NORMAL_INSTALL)
+ test -z "$(helpersdir)" || $(MKDIR_P) "$(DESTDIR)$(helpersdir)"
+ @list='$(helpers_SCRIPTS)'; test -n "$(helpersdir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n' \
+ -e 'h;s|.*|.|' \
+ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) { files[d] = files[d] " " $$1; \
+ if (++n[d] == $(am__install_max)) { \
+ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
+ else { print "f", d "/" $$4, $$1 } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(helpersdir)$$dir'"; \
+ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(helpersdir)$$dir" || exit $$?; \
+ } \
+ ; done
+
+uninstall-helpersSCRIPTS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(helpers_SCRIPTS)'; test -n "$(helpersdir)" || exit 0; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 's,.*/,,;$(transform)'`; \
+ test -n "$$list" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(helpersdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(helpersdir)" && rm -f $$files
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(SCRIPTS)
+installdirs:
+ for dir in "$(DESTDIR)$(helpersdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-helpersSCRIPTS
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-helpersSCRIPTS
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic distclean \
+ distclean-generic distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am \
+ install-helpersSCRIPTS install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+ pdf-am ps ps-am uninstall uninstall-am \
+ uninstall-helpersSCRIPTS
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/completions/helpers/perl b/completions/helpers/perl
new file mode 100755
index 00000000..b3522ac0
--- /dev/null
+++ b/completions/helpers/perl
@@ -0,0 +1,88 @@
+#!/usr/bin/env perl
+use strict;
+use Config;
+use File::Spec::Functions;
+
+my %seen;
+
+sub print_modules_real {
+ my ($base, $dir, $word) = @_;
+
+ # return immediatly if potential completion doesn't match current word
+ # a double comparaison is used to avoid dealing with string lengths
+ # (the shorter being the pattern to be used as the regexp)
+ # word 'Fi', base 'File' -> match 'File' against 'Fi'
+ # word 'File::Sp', base 'File' -> match 'File::Sp' againt 'File'
+ return if
+ $base &&
+ $word &&
+ $base !~ /^\Q$word/ &&
+ $word !~ /^\Q$base/;
+
+ chdir($dir) or return;
+
+ # print each file
+ foreach my $file (glob('*.pm')) {
+ $file =~ s/\.pm$//;
+ my $module = $base . $file;
+ next if $module !~ /^\Q$word/;
+ next if $seen{$module}++;
+ print $module . "\n";
+ }
+
+ # recurse in each subdirectory
+ foreach my $directory (grep { -d } glob('*')) {
+ my $subdir = $dir . '/' . $directory;
+ if ($directory =~ /^(?:[.\d]+|$Config{archname}|auto)$/) {
+ # exclude subdirectory name from base
+ print_modules_real(undef, $subdir, $word);
+ } else {
+ # add subdirectory name to base
+ print_modules_real($base . $directory . '::', $subdir, $word);
+ }
+ }
+}
+
+sub print_modules {
+ my ($word) = @_;
+
+ foreach my $directory (@INC) {
+ print_modules_real(undef, $directory, $word);
+ }
+}
+
+sub print_functions {
+ my ($word) = @_;
+
+ my $perlfunc;
+ for ( @INC, undef ) {
+ return if not defined;
+ $perlfunc = catfile $_, qw( pod perlfunc.pod );
+ last if -r $perlfunc;
+ }
+
+ open my $fh, '<', $perlfunc or return;
+
+ my $nest_level = -1;
+ while ( <$fh> ) {
+ next if 1 .. /^=head2 Alphabetical Listing of Perl Functions$/;
+ ++$nest_level if /^=over/;
+ --$nest_level if /^=back/;
+ next if $nest_level;
+ next unless /^=item (-?\w+)/;
+ my $function = $1;
+ next if $function !~ /^\Q$word/;
+ next if $seen{$function}++;
+ print $function . "\n";
+ }
+
+}
+
+my $type = shift;
+my $word = shift;
+
+if ($type eq 'functions') {
+ print_functions($word);
+} elsif ($type eq 'modules') {
+ print_modules($word);
+}
diff --git a/completions/hping2 b/completions/hping2
new file mode 100644
index 00000000..e2e6bf1a
--- /dev/null
+++ b/completions/hping2
@@ -0,0 +1,55 @@
+# bash completion for hping2
+
+have hping || have hping2 || have hping3 &&
+_hping2()
+{
+ local cur prev
+
+ COMPREPLY=()
+ cur=`_get_cword`
+ prev=`_get_pword`
+
+ case $prev in
+ -I|--interface)
+ _available_interfaces
+ return 0
+ ;;
+ -a|--spoof)
+ _known_hosts_real "$cur"
+ return 0
+ ;;
+ -o|--tos)
+ COMPREPLY=( $( compgen -W '02 04 08 10' ) )
+ return 0
+ ;;
+ -E|--file)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--help --version --count --interval --fast \
+ --faster --numeric --quiet --interface --verbose --debug --bind \
+ --unbind --rawip --icmp --upd --scan --listen --spoof \
+ --rand-source --rand-dest --ttl --id --ipproto --winid -rel --frag \
+ --morefrag --dontfrag --fragoff --mtu --tos --rroute --icmptype \
+ --icmpcode --icmp-ipver --icmp-iphlen --icmp-iplen --icmp-ipid \
+ --icmp-ipproto --icmp-cksum --icmp-ts --icmp-addr --baseport \
+ --destport --keep --win --tcpoff --tcpseq --tcpack --seqnum \
+ --badcksum --tcp-timestamp --fin --syn --rst --push --ack --urg \
+ --xmas --ymas --data --file --sign --dump --print --safe --end \
+ --traceroute --tr-keep-ttl --tr-stop --tr-no-rtt' -- "$cur" ) )
+ else
+ _known_hosts_real "$cur"
+ fi
+} &&
+complete -F _hping2 hping hping2 hping3
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/iconv b/completions/iconv
new file mode 100644
index 00000000..9e332004
--- /dev/null
+++ b/completions/iconv
@@ -0,0 +1,46 @@
+# iconv(1) completion
+
+have iconv &&
+_iconv()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -'?'|--help|--usage|-V|--version|--unicode-subst|--byte-subst|\
+ --widechar-subst)
+ return 0
+ ;;
+ -f|--from-code|-t|--to-code)
+ COMPREPLY=( $( compgen -W '$( iconv -l | \
+ sed -e "s@/*\$@@" -e "s/[,()]//g" )' -- "$cur" ) )
+ return 0
+ ;;
+ -o|--output)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" = -* ]]; then
+ COMPREPLY=( $( compgen -W '--from-code --to-code --list -c
+ --unicode-subst --byte-subst --widechar-subst --output --silent
+ --verbose --help --usage --version' -- "$cur" ) )
+ return 0
+ fi
+} &&
+complete -F _iconv -o default iconv
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/iftop b/completions/iftop
new file mode 100644
index 00000000..9ec2a0d0
--- /dev/null
+++ b/completions/iftop
@@ -0,0 +1,35 @@
+# iftop(8) completion
+
+have iftop &&
+_iftop()
+{
+ COMPREPLY=()
+ local cur prev
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -h|-f|-F|-m)
+ return 0
+ ;;
+ -i)
+ _available_interfaces -a
+ return 0
+ ;;
+ -c)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ COMPREPLY=( $( compgen -W '-h -n -N -p -P -b -B -i -f -F -c -m' \
+ -- "$cur" ) )
+} &&
+complete -F _iftop iftop
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/ifupdown b/completions/ifupdown
new file mode 100644
index 00000000..f81e08d5
--- /dev/null
+++ b/completions/ifupdown
@@ -0,0 +1,27 @@
+# Red Hat & Debian GNU/Linux if{up,down} completion
+#
+[ $USERLAND = GNU ] && { have ifup || have ifdown; } &&
+_ifupdown()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [ $COMP_CWORD -eq 1 ]; then
+ _configured_interfaces
+ COMPREPLY=( $(compgen -W '${COMPREPLY[@]}' -- "$cur") )
+ fi
+
+ return 0
+} &&
+complete -F _ifupdown ifup ifdown
+[ $USERLAND = GNU ] && have ifstatus && complete -F _ifupdown ifstatus
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/imagemagick b/completions/imagemagick
new file mode 100644
index 00000000..c7ba74c8
--- /dev/null
+++ b/completions/imagemagick
@@ -0,0 +1,532 @@
+# bash completion for ImageMagick
+
+have convert && {
+_ImageMagick()
+{
+ local cur prev
+ _get_comp_words_by_ref cur prev
+
+ 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=( $( compgen -W "$( convert -list format | \
+ awk '/ [r-][w-][+-] / {print $1}' | \
+ tr -d '*' | tr [:upper:] [:lower:] )" -- "$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=()
+ _get_comp_words_by_ref cur
+
+ _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 convert
+
+_mogrify()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ _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 mogrify
+
+_display()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ _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 display
+
+_animate()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ _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 animate
+
+_identify()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ _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 identify
+
+_montage()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ _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 montage
+
+_composite()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ _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 composite
+
+_compare()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ _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 compare
+
+_conjure()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ _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 conjure
+
+_import()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ _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 import
+
+_stream()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ _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 stream
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/info b/completions/info
new file mode 100644
index 00000000..367cadef
--- /dev/null
+++ b/completions/info
@@ -0,0 +1,58 @@
+# bash completion for info
+
+have info &&
+_info()
+{
+ local cur i infopath
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ _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|xz|lzma)} )
+ COMPREPLY=( $( compgen -W '${COMPREPLY[@]%.*}' -- "${cur//\\\\/}" ) )
+
+ return 0
+} &&
+complete -F _info info
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/ipmitool b/completions/ipmitool
new file mode 100644
index 00000000..3a90eeb4
--- /dev/null
+++ b/completions/ipmitool
@@ -0,0 +1,214 @@
+# bash completion for ipmitool
+
+have ipmitool && {
+
+_ipmitool_singleline_help()
+{
+ COMPREPLY=( $( compgen -W "$( $1 $2 2>&1 | \
+ sed -ne 's/[,\r]//g' -e 's/^.*[Cc]ommands://p' )" -- "$cur" ) )
+}
+
+_ipmitool()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -h|-V|-p|-U|-e|-k|-y|-P|-m|-b|-t|-B|-T|-l)
+ return 0
+ ;;
+ -d)
+ COMPREPLY=( $( compgen -W "$( \
+ command ls -d /dev/ipmi* /dev/ipmi/* /dev/ipmidev/* \
+ 2>/dev/null | sed -ne 's/^[^0-9]*\([0-9]\{1,\}\)/\1/p' )" \
+ -- "$cur" ) )
+ return 0
+ ;;
+ -I)
+ COMPREPLY=( $( compgen -W "$( $1 -h 2>&1 | \
+ sed -e '/^Interfaces:/,/^[[:space:]]*$/!d' \
+ -ne 's/^[[:space:]]\{1,\}\([^[:space:]]\{1,\}\).*/\1/p' )" \
+ -- "$cur" ) )
+ return 0
+ ;;
+ -H)
+ _known_hosts_real "$cur"
+ return 0
+ ;;
+ -f|-S|-O)
+ _filedir
+ return 0
+ ;;
+ -C)
+ COMPREPLY=( $( compgen -W '0 1 2 3 4 5 6 7 8 9 10 11 12 13 14' \
+ -- "$cur" ) )
+ return 0
+ ;;
+ -L)
+ COMPREPLY=( $( compgen -W 'CALLBACK USER OPERATOR ADMINISTRATOR' \
+ -- "$cur" ) )
+ return 0
+ ;;
+ -A)
+ COMPREPLY=( $( compgen -W 'NONE PASSWORD MD2 MD5 OEM' -- "$cur" ) )
+ return 0
+ ;;
+ -o)
+ COMPREPLY=( $( compgen -W "$( $1 -o list 2>&1 | \
+ awk '/^[ \t]+/ { print $1 }' ) list" -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-h -V -v -c -d -I -H -p -U -f -S -a \
+ -e -C -k -y -L -A -P -E -K -m -b -t -B -T -l -o -O' -- "$cur" ) )
+ return 0
+ fi
+
+ # Find out command and subcommand
+
+ local cmds=( raw i2c spd lan chassis power event mc sdr sensor fru gendev
+ sel pef sol tsol isol user channel session sunoem kontronoem picmg fwum
+ firewall shell exec set hpm ekanalyzer)
+ local i c cmd subcmd
+ for (( i=1; i < ${#COMP_WORDS[@]}-1; i++ )); do
+ [[ -n $cmd ]] && subcmd=${COMP_WORDS[i]} && break
+ for c in ${cmds[@]}; do
+ [ ${COMP_WORDS[i]} = $c ] && cmd=$c && break
+ done
+ done
+
+ if [ -z "$cmd" ]; then
+ COMPREPLY=( $( compgen -W '${cmds[@]}' -- "$cur" ) )
+ return 0
+ fi
+
+ # Command/subcommand completions
+
+ case $cmd in
+
+ shell)
+ ;;
+
+ exec)
+ _filedir
+ ;;
+
+ chassis|power|kontronoem|fwum)
+ _ipmitool_singleline_help $1 $cmd
+ ;;
+
+ lan)
+ case $subcmd in
+ print|set)
+ ;;
+ alert)
+ [ "$prev" = alert ] && \
+ COMPREPLY=( $( compgen -W 'print set' -- "$cur" ) )
+ ;;
+ stats)
+ [ "$prev" = stats ] && \
+ COMPREPLY=( $( compgen -W 'print set' -- "$cur" ) )
+ ;;
+ *)
+ COMPREPLY=( $( compgen -W 'print set alert stats' \
+ -- "$cur" ) )
+ ;;
+ esac
+ ;;
+
+ sdr)
+ case $subcmd in
+ get|info|type|list|entity)
+ ;;
+ elist)
+ COMPREPLY=( $( compgen -W 'all full compact event mclog fru
+ generic' -- "$cur" ) )
+ ;;
+ dump)
+ _filedir
+ ;;
+ fill)
+ case $prev in
+ fill)
+ COMPREPLY=( $( compgen -W 'sensors file' \
+ -- "$cur" ) )
+ ;;
+ file)
+ _filedir
+ ;;
+ esac
+ ;;
+ *)
+ COMPREPLY=( $( compgen -W 'get info type list elist entity
+ dump fill' -- "$cur" ) )
+ ;;
+ esac
+ ;;
+
+ sensor)
+ case $subcmd in
+ list|get|thresh)
+ ;;
+ *)
+ COMPREPLY=( $( compgen -W 'list get thresh' -- "$cur" ) )
+ ;;
+ esac
+ ;;
+
+ sel)
+ case $subcmd in
+ info|clear|list|elist|delete)
+ ;;
+ add|save|writeraw|readraw)
+ _filedir
+ ;;
+ time)
+ [ "$prev" = time ] && \
+ COMPREPLY=( $( compgen -W 'get set' -- "$cur" ) )
+ ;;
+ *)
+ COMPREPLY=( $( compgen -W 'info clear list elist delete add
+ get save writeraw readraw time' -- "$cur" ) )
+ ;;
+ esac
+ ;;
+
+ user)
+ case $subcmd in
+ summary|list|disable|enable|priv|test)
+ ;;
+ set)
+ [ "$prev" = set ] && \
+ COMPREPLY=( $( compgen -W 'name password' -- "$cur" ) )
+ ;;
+ *)
+ COMPREPLY=( $( compgen -W 'summary list set disable enable
+ priv test' -- "$cur" ) )
+ ;;
+ esac
+ ;;
+
+ set)
+ [ "$prev" = set ] && \
+ COMPREPLY=( $( compgen -W 'hostname username password privlvl
+ authtype localaddr targetaddr port csv verbose' \
+ -- "$cur" ) )
+ ;;
+
+ esac
+}
+
+} &&
+complete -F _ipmitool ipmitool
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/iproute2 b/completions/iproute2
new file mode 100644
index 00000000..f5d7bbd9
--- /dev/null
+++ b/completions/iproute2
@@ -0,0 +1,285 @@
+# iproute2 tools completion
+
+have ip &&
+_ip()
+{
+ COMPREPLY=()
+ local cur prev words cword
+ _get_comp_words_by_ref cur prev words cword
+
+ case $prev in
+ -V|-Version|-rc|-rcvbuf)
+ return 0
+ ;;
+ -f|-family)
+ COMPREPLY=( $( compgen -W 'inet inet6 ipx dnet link' -- "$cur" ) )
+ return 0
+ ;;
+ -b|-batch)
+ _filedir
+ return 0
+ ;;
+ -force)
+ COMPREPLY=( $( compgen -W '-batch' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ local subcword cmd subcmd
+ for (( subcword=1; subcword < ${#words[@]}-1; subcword++ )); do
+ [[ ${words[subcword]} == -b?(atch) ]] && return 0
+ [[ -n $cmd ]] && subcmd=${words[subcword]} && break
+ [[ ${words[subcword]} != -* && \
+ ${words[subcword-1]} != -@(f?(amily)|rc?(vbuf)) ]] && \
+ cmd=${words[subcword]}
+ done
+
+ if [[ -z $cmd ]]; then
+ case $cur in
+ -*)
+ local c="-Version -statistics -details -resolve -family
+ -oneline -timestamp -batch -rcvbuf"
+ [[ $cword -eq 1 ]] && c="$c -force"
+ COMPREPLY=( $( compgen -W "$c" -- "$cur" ) )
+ return 0
+ ;;
+ *)
+ COMPREPLY=( $( compgen -W "help $( ip help 2>&1 | \
+ sed -e '/OBJECT := /,/}/!d' \
+ -e 's/.*{//' -e 's/}.*//' -e 's/|//g' )" -- "$cur" ) )
+ return 0
+ ;;
+ esac
+ fi
+
+ [[ $subcmd == help ]] && return 0
+
+ case $cmd in
+ link)
+ case $subcmd in
+ add)
+ # TODO
+ ;;
+ delete)
+ case $(($cword-$subcword)) in
+ 1)
+ _available_interfaces
+ ;;
+ 2)
+ COMPREPLY=( $( compgen -W 'type' -- "$cur" ) )
+ ;;
+ 3)
+ [[ $prev == type ]] && \
+ COMPREPLY=( $( compgen -W 'vlan veth vcan dummy
+ ifb macvlan can' -- "$cur" ) )
+ ;;
+ esac
+ ;;
+ set)
+ if [[ $cword-$subcword -eq 1 ]]; then
+ _available_interfaces
+ else
+ case $prev in
+ arp|dynamic|multicast|allmulticast|promisc|\
+ trailers)
+ COMPREPLY=( $( compgen -W 'on off' \
+ -- "$cur" ) )
+ ;;
+ txqueuelen|name|address|broadcast|mtu|netns|alias)
+ ;;
+ *)
+ local c="arp dynamic multicast allmulticast
+ promisc trailers txqueuelen name address
+ broadcast mtu netns alias"
+ [[ $prev != @(up|down) ]] && c="$c up down"
+ COMPREPLY=( $( compgen -W "$c" -- "$cur" ) )
+ ;;
+ esac
+ fi
+ ;;
+ show)
+ [[ $cword -eq $subcword+1 ]] && _available_interfaces
+ ;;
+ *)
+ [[ $cword -eq $subcword ]] && \
+ COMPREPLY=( $( compgen -W 'help add delete set show' \
+ -- "$cur" ) )
+ ;;
+ esac
+ ;;
+
+ addr)
+ case $subcmd in
+ add|change|replace)
+ # TODO
+ ;;
+ del)
+ # TODO
+ ;;
+ show|flush)
+ # TODO
+ ;;
+ *)
+ [[ $cword -eq $subcword ]] && \
+ COMPREPLY=( $( compgen -W 'help add change replace del
+ show flush' -- "$cur" ) )
+ ;;
+ esac
+ ;;
+
+ addrlabel)
+ case $subcmd in
+ list|add|del|flush)
+ # TODO
+ ;;
+ *)
+ [[ $cword -eq $subcword ]] && \
+ COMPREPLY=( $( compgen -W 'help list add del flush' \
+ -- "$cur" ) )
+ ;;
+ esac
+ ;;
+
+ route)
+ case $subcmd in
+ list|flush)
+ # TODO
+ ;;
+ get)
+ # TODO
+ ;;
+ add|del|change|append|replace|monitor)
+ # TODO
+ ;;
+ *)
+ [[ $cword -eq $subcword ]] && \
+ COMPREPLY=( $( compgen -W 'help list flush get add del
+ change append replace monitor' -- "$cur" ) )
+ ;;
+ esac
+ ;;
+
+ rule)
+ case $subcmd in
+ list|add|del|flush)
+ # TODO
+ ;;
+ *)
+ [[ $cword -eq $subcword ]] && \
+ COMPREPLY=( $( compgen -W 'help list add del flush' \
+ -- "$cur" ) )
+ ;;
+ esac
+ ;;
+
+ neigh)
+ case $subcmd in
+ add|del|change|replace)
+ # TODO
+ ;;
+ show|flush)
+ # TODO
+ ;;
+ *)
+ [[ $cword -eq $subcword ]] && \
+ COMPREPLY=( $( compgen -W 'help add del change replace
+ show flush' -- "$cur" ) )
+ ;;
+ esac
+ ;;
+
+ ntable)
+ case $subcmd in
+ change)
+ # TODO
+ ;;
+ show)
+ # TODO
+ ;;
+ *)
+ [[ $cword -eq $subcword ]] && \
+ COMPREPLY=( $( compgen -W 'help change show' \
+ -- "$cur" ) )
+ ;;
+ esac
+ ;;
+
+ tunnel)
+ case $subcmd in
+ add|change|del|show|prl|6rd)
+ # TODO
+ ;;
+ *)
+ [[ $cword -eq $subcword ]] && \
+ COMPREPLY=( $( compgen -W 'help add change del show prl
+ 6rd' -- "$cur" ) )
+ ;;
+ esac
+ ;;
+
+ maddr)
+ case $subcmd in
+ add|del)
+ # TODO
+ ;;
+ show)
+ if [[ $cword -eq $subcword+1 || $prev == dev ]]; then
+ _available_interfaces
+ [[ $prev != dev ]] && \
+ COMPREPLY=( $( compgen -W '${COMPREPLY[@]} dev' \
+ -- "$cur" ) )
+ fi
+ ;;
+ *)
+ [[ $cword -eq $subcword ]] && \
+ COMPREPLY=( $( compgen -W 'help add del show' \
+ -- "$cur" ) )
+ ;;
+ esac
+ ;;
+
+ mroute)
+ case $subcmd in
+ show)
+ # TODO
+ ;;
+ *)
+ [[ $cword -eq $subcword ]] && \
+ COMPREPLY=( $( compgen -W 'help show' -- "$cur" ) )
+ ;;
+ esac
+ ;;
+
+ monitor)
+ case $subcmd in
+ all) ;;
+ *)
+ [[ $cword -eq $subcword ]] && \
+ COMPREPLY=( $( compgen -W 'help all' -- "$cur" ) )
+ ;;
+ esac
+ ;;
+
+ xfrm)
+ case $subcmd in
+ state|policy|monitor)
+ # TODO
+ ;;
+ *)
+ [[ $cword -eq $subcword ]] && \
+ COMPREPLY=( $( compgen -W 'state policy monitor' \
+ -- "$cur" ) )
+ ;;
+ esac
+ ;;
+ esac
+} &&
+complete -F _ip ip
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/ipsec b/completions/ipsec
new file mode 100644
index 00000000..acb8c995
--- /dev/null
+++ b/completions/ipsec
@@ -0,0 +1,51 @@
+# Linux ipsec(8) completion (for FreeS/WAN)
+#
+[ $UNAME = Linux ] && have ipsec &&
+_ipsec()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+
+ if [ $COMP_CWORD -eq 1 ]; then
+ COMPREPLY=( $( compgen -W 'auto barf eroute klipsdebug look manual \
+ pluto ranbits rsasigkey setup showdefaults showhostkey spi spigrp \
+ tncfg whack' -- "$cur" ) )
+ return 0
+ fi
+
+ case ${COMP_WORDS[1]} in
+ auto)
+ COMPREPLY=( $( compgen -W '--asynchronous --up --add --delete \
+ --replace --down --route --unroute \
+ --ready --status --rereadsecrets' \
+ -- "$cur" ) )
+ ;;
+ manual)
+ COMPREPLY=( $( compgen -W '--up --down --route --unroute \
+ --union' -- "$cur" ) )
+ ;;
+ ranbits)
+ COMPREPLY=( $( compgen -W '--quick --continuous --bytes' \
+ -- "$cur" ) )
+ ;;
+ setup)
+ COMPREPLY=( $( compgen -W '--start --stop --restart' -- "$cur" ) )
+ ;;
+ *)
+ ;;
+ esac
+
+ return 0
+} &&
+complete -F _ipsec ipsec
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/iptables b/completions/iptables
new file mode 100644
index 00000000..bd0e4622
--- /dev/null
+++ b/completions/iptables
@@ -0,0 +1,70 @@
+# bash completion for iptables
+
+have iptables &&
+_iptables()
+{
+ local cur prev table chain
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+ chain='s/^Chain \([^ ]\{1,\}\).*$/\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
+
+ _split_longopt
+
+ case $prev in
+ -*[AIDRPFXLZ])
+ COMPREPLY=( $( compgen -W '`iptables $table -nL | \
+ sed -ne "s/^Chain \([^ ]\{1,\}\).*$/\1/p"`' -- "$cur" ) )
+ ;;
+ -*t)
+ COMPREPLY=( $( compgen -W 'nat filter mangle' -- "$cur" ) )
+ ;;
+ -j)
+ if [[ "$table" == "-t filter" || -z "$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 '--in-interface --out-interface --source \
+ --destination --protocol --fragment --match --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
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/ipv6calc b/completions/ipv6calc
new file mode 100644
index 00000000..20e810df
--- /dev/null
+++ b/completions/ipv6calc
@@ -0,0 +1,57 @@
+have ipv6calc &&
+_ipv6calc()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref -n = cur prev
+ #cur=`_get_cword =`
+ #prev=`_get_pword`
+
+ _split_longopt && split=true
+
+ case "$prev" in
+ -d|--debug)
+ return 0
+ ;;
+ -I|--in|-O|--out|-A|--action)
+ # With ipv6calc < 0.73.0, -m does nothing here, so use sed instead.
+ COMPREPLY=( $( compgen -W "$( ipv6calc "$prev" -h 2>&1 | \
+ sed -ne 's/^[[:space:]]\{1,\}\([^[:space:]:]\{1,\}\)[[:space:]]*:.*/\1/p' )" \
+ -- "$cur" ) )
+ return 0
+ ;;
+ --db-geoip|--db-ip2location-ipv4|--db-ip2location-ipv6)
+ _filedir
+ return 0
+ ;;
+ --printstart|--printend)
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--help --debug --quiet --in \
+ --out --action --examples --showinfo --show_types \
+ --machine_readable --db-geoip --db-geoip-default \
+ --db-ip2location-ipv4 --db-ip2location-ipv6 \
+ --lowercase --uppercase --printprefix --printsuffix \
+ --maskprefix --masksuffix --printstart --printend \
+ --printcompressed --printuncompressed \
+ --printfulluncompressed --printmirrored' -- "$cur" ) )
+ return 0
+ fi
+
+ return 0
+} &&
+complete -F _ipv6calc ipv6calc
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/isql b/completions/isql
new file mode 100644
index 00000000..f0ddbd75
--- /dev/null
+++ b/completions/isql
@@ -0,0 +1,20 @@
+# isql completion by Victor Bogado da Silva Lins <victor@bogado.net>
+
+have isql &&
+_isql()
+{
+ local cur
+ _get_comp_words_by_ref cur
+
+ [ -f "$ODBCINI" ] \
+ && COMPREPLY=( $( command grep \\["$cur" "$ODBCINI" | tr -d \\[\\] ) )
+} &&
+complete -F _isql isql
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/jar b/completions/jar
new file mode 100644
index 00000000..d703019d
--- /dev/null
+++ b/completions/jar
@@ -0,0 +1,36 @@
+# jar(1) completion
+
+have jar &&
+_jar()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ 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|apk)'
+ ;;
+ *)
+ _filedir
+ ;;
+ esac
+} &&
+complete -F _jar jar
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/java b/completions/java
new file mode 100644
index 00000000..460ae285
--- /dev/null
+++ b/completions/java
@@ -0,0 +1,533 @@
+# bash completion for java, javac and javadoc
+
+# available path elements completion
+have java || have javac || have javadoc &&
+_java_path()
+{
+ cur=${cur##*:}
+ _filedir '@(jar|zip)'
+}
+
+have java || have javadoc && {
+# 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 [[ "$i" == *.@(jar|zip) && -r $i ]]; then
+ if type zipinfo &>/dev/null; then
+ COMPREPLY=( "${COMPREPLY[@]}" $( zipinfo -1 \
+ "$i" "$cur*" 2>/dev/null | \
+ command grep '^[^$]*\.class$' ) )
+ else
+ COMPREPLY=( "${COMPREPLY[@]}" $( jar tf "$i" \
+ "$cur" | command grep '^[^$]*\.class$' ) )
+ fi
+
+ elif [ -d $i ]; then
+ # Intentionally looking for *.class only in $i (not subdirs),
+ # see Debian bug #496828.
+ COMPREPLY=( "${COMPREPLY[@]}"
+ $( command ls $i/$cur*.class 2>/dev/null | \
+ sed -ne '/\$/d' -e "s|^$i//*||p" ) )
+
+ # 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=( $( tr " " "\n" <<<"${COMPREPLY[@]}" | command grep "/$" ) )
+ # remove packages extension
+ COMPREPLY=( ${COMPREPLY[@]%/} )
+ # convert path syntax to package syntax
+ cur=${COMPREPLY[@]//\//.}
+}
+}
+
+# java completion
+#
+have java &&
+_java()
+{
+ local cur prev words cword i
+
+ COMPREPLY=()
+ _get_comp_words_by_ref -n : cur prev words cword
+
+ for ((i=1; i < $cword; i++)); do
+ case ${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 $cur in
+ # standard option completions
+ -verbose:*)
+ COMPREPLY=( $( compgen -W 'class gc jni' -- "${cur#*:}" ) )
+ return 0
+ ;;
+ -javaagent:*)
+ cur=${cur#*:}
+ _filedir '@(jar|zip)'
+ return 0
+ ;;
+ -agentpath:*)
+ cur=${cur#*:}
+ _filedir so
+ return 0
+ ;;
+ # various non-standard option completions
+ -splash:*)
+ cur=${cur#*:}
+ _filedir '@(gif|jp?(e)g|png)'
+ return 0
+ ;;
+ -Xbootclasspath*:*)
+ _java_path
+ return 0
+ ;;
+ -Xcheck:*)
+ COMPREPLY=( $( compgen -W 'jni' -- "${cur#*:}" ) )
+ return 0
+ ;;
+ -Xgc:*)
+ COMPREPLY=( $( compgen -W 'singlecon gencon singlepar genpar' \
+ -- "${cur#*:}" ) )
+ return 0
+ ;;
+ -Xgcprio:*)
+ COMPREPLY=( $( compgen -W 'throughput pausetime deterministic' \
+ -- "${cur#*:}" ) )
+ return 0
+ ;;
+ -Xloggc:*|-Xverboselog:*)
+ cur=${cur#*:}
+ _filedir
+ return 0
+ ;;
+ -Xshare:*)
+ COMPREPLY=( $( compgen -W 'auto off on' -- "${cur#*:}" ) )
+ return 0
+ ;;
+ -Xverbose:*)
+ COMPREPLY=( $( compgen -W 'memory load jni cpuinfo codegen opt
+ gcpause gcreport' -- "${cur#*:}" ) )
+ return 0
+ ;;
+ -Xverify:*)
+ COMPREPLY=( $( compgen -W 'all none remote' -- "${cur#*:}" ) )
+ return 0
+ ;;
+ # the rest that we have no completions for
+ -D*|-*:*)
+ return 0
+ ;;
+ esac
+
+ case $prev in
+ -cp|-classpath)
+ _java_path
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ # standard options
+ COMPREPLY=( $( compgen -W '-client -server -agentlib: -agentpath:
+ -classpath -D -d32 -d64 -enableassertions -disableassertions
+ -enablesystemassertions -disablesystemassertions -jar -javaagent:
+ -verbose -verbose -version -showversion -help -X' -- "$cur" ) )
+ else
+ if [[ "$prev" == -jar ]]; then
+ # jar file completion
+ _filedir jar
+ else
+ # classes completion
+ _java_classes
+ fi
+ fi
+
+ [[ ${#COMPREPLY[@]} -eq 1 && ${COMPREPLY[0]} == -*[:=] ]] && \
+ type compopt &>/dev/null && compopt -o nospace
+
+ __ltrim_colon_completions "$cur"
+} &&
+complete -F _java java
+
+have javadoc &&
+_javadoc()
+{
+ COMPREPLY=()
+ local cur prev classpath
+
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -overview|-helpfile)
+ _filedir '?(x)htm?(l)'
+ return 0
+ ;;
+ -stylesheetfile)
+ _filedir css
+ return 0
+ ;;
+ -d|-link|-linkoffline)
+ # TODO: -linkoffline takes two arguments
+ _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 javadoc
+
+have javac &&
+_javac()
+{
+ COMPREPLY=()
+ local cur prev
+
+ _get_comp_words_by_ref cur prev
+
+ 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 javac
+
+have pack200 &&
+_pack200()
+{
+ COMPREPLY=()
+ local cur prev
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -S|--segment-limit|-P|--pass-file|-C|--class-attribute|\
+ -F|--field-attribute|-M|--method-attribute|-D|--code-attribute|\
+ '-?'|-h|--help|-V|--version|-J)
+ return 0
+ ;;
+ -E|--effort)
+ COMPREPLY=( $( compgen -W '0 1 2 3 4 5 6 7 8 9' -- "$cur" ) )
+ return 0
+ ;;
+ -H|--deflate-hint)
+ COMPREPLY=( $( compgen -W 'true false keep' -- "$cur" ) )
+ return 0
+ ;;
+ -m|--modification-time)
+ COMPREPLY=( $( compgen -W 'latest keep' -- "$cur" ) )
+ return 0
+ ;;
+ -U|--unknown-attribute)
+ COMPREPLY=( $( compgen -W 'error strip pass' -- "$cur" ) )
+ return 0
+ ;;
+ -f|--config-file)
+ _filedir properties
+ return 0
+ ;;
+ -l|--log-file)
+ COMPREPLY=( $( compgen -W '-' -- "$cur" ) )
+ _filedir log
+ return 0
+ ;;
+ -r|--repack)
+ _filedir jar
+ return 0
+ ;;
+ esac
+
+ # Check if a pack or a jar was already given.
+ local i pack=false jar=false
+ for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )) ; do
+ case ${COMP_WORDS[i]} in
+ *.pack|*.pack.gz) pack=true ;;
+ *.jar) jar=true ;;
+ esac
+ done
+
+ if ! $pack ; then
+ if [[ "$cur" == -* ]] ; then
+ COMPREPLY=( $( compgen -W '--no-gzip --gzip --strip-debug \
+ --no-keep-file-order --segment-limit= --effort= \
+ --deflate-hint= --modification-time= --pass-file= \
+ --unknown-attribute= --class-attribute= --field-attribute= \
+ --method-attribute= --code-attribute= --config-file= \
+ --verbose --quiet --log-file= --help --version -J \
+ --repack' -- "$cur" ) )
+ [[ ${#COMPREPLY[@]} -eq 1 && ${COMPREPLY[0]} == *= ]] && \
+ type compopt &>/dev/null && compopt -o nospace
+ else
+ _filedir 'pack?(.gz)'
+ fi
+ elif ! $jar ; then
+ _filedir jar
+ fi
+} &&
+complete -F _pack200 pack200
+
+have unpack200 &&
+_unpack200()
+{
+ COMPREPLY=()
+ local cur prev
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ '-?'|-h|--help|-V|--version|-J)
+ return 0
+ ;;
+ -H|--deflate-hint)
+ COMPREPLY=( $( compgen -W 'true false keep' -- "$cur" ) )
+ return 0
+ ;;
+ -l|--log-file)
+ COMPREPLY=( $( compgen -W '-' -- "$cur" ) )
+ _filedir log
+ return 0
+ ;;
+ esac
+
+ # Check if a pack or a jar was already given.
+ local i pack=false jar=false
+ for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )) ; do
+ case ${COMP_WORDS[i]} in
+ *.pack|*.pack.gz) pack=true ;;
+ *.jar) jar=true ;;
+ esac
+ done
+
+ if ! $pack ; then
+ if [[ "$cur" == -* ]] ; then
+ COMPREPLY=( $( compgen -W '--deflate-hint= --remove-pack-file \
+ --verbose --quiet --log-file= --help --version' -- "$cur" ) )
+ [[ ${#COMPREPLY[@]} -eq 1 && ${COMPREPLY[0]} == *= ]] && \
+ type compopt &>/dev/null && compopt -o nospace
+ else
+ _filedir 'pack?(.gz)'
+ fi
+ elif ! $jar ; then
+ _filedir jar
+ fi
+} &&
+complete -F _unpack200 unpack200
+
+have jarsigner &&
+_jarsigner()
+{
+ COMPREPLY=()
+ local cur prev
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -keystore)
+ COMPREPLY=( $( compgen -W 'NONE' -- "$cur" ) )
+ _filedir '@(jks|ks|p12|pfx)'
+ return 0
+ ;;
+ -storepass|-keypass|-sigfile|-digestalg|-sigalg|-tsacert|-altsigner|\
+ -altsignerpath|-providerName|-providerClass|-providerArg)
+ return 0
+ ;;
+ -storetype)
+ COMPREPLY=( $( compgen -W 'JKS PKCS11 PKCS12' -- "$cur" ) )
+ return 0
+ ;;
+ -signedjar)
+ _filedir jar
+ return 0
+ ;;
+ -tsa)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ # Check if a jar was already given.
+ local i jar=false
+ for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )) ; do
+ if [[ "${COMP_WORDS[i]}" == *.jar && \
+ "${COMP_WORDS[i-1]}" != -signedjar ]] ; then
+ jar=true
+ break
+ fi
+ done
+
+ if ! $jar ; then
+ if [[ "$cur" == -* ]] ; then
+ # Documented as "should not be used": -internalsf, -sectionsonly
+ COMPREPLY=( $( compgen -W '-keystore -storepass -storetype \
+ -keypass -sigfile -signedjar -digestalg -sigalg -verify \
+ -verbose -certs -tsa -tsacert -altsigner -altsignerpath \
+ -protected -providerName -providerClass -providerArg' \
+ -- "$cur" ) )
+ fi
+ _filedir jar
+ fi
+} &&
+complete -F _jarsigner jarsigner
+
+have javaws &&
+_javaws()
+{
+ COMPREPLY=()
+ local cur prev
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -help|-license|-about|-viewer|-arg|-param|-property|-update|-umask)
+ return 0
+ ;;
+ -basedir|-codebase)
+ _filedir -d
+ return 0
+ ;;
+ -uninstall|-import)
+ _filedir jnlp
+ return 0
+ ;;
+ esac
+
+ if [[ $cur == -* ]]; then
+ COMPREPLY=( $( compgen -W "$( _parse_help "$1" -help ) " -- "$cur" ) )
+ return 0
+ fi
+
+ _filedir jnlp
+} &&
+complete -F _javaws javaws
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/k3b b/completions/k3b
new file mode 100644
index 00000000..1965717b
--- /dev/null
+++ b/completions/k3b
@@ -0,0 +1,55 @@
+# bash completion for k3b
+
+have k3b &&
+_k3b()
+{
+ local cur prev
+ _get_comp_words_by_ref cur prev
+ COMPREPLY=()
+
+ case $prev in
+ --help*|--author|-v|--version|--license|--lang)
+ return 0
+ ;;
+ --datacd|--audiocd|--videocd|--mixedcd|--emovixcd|--videodvd)
+ _filedir
+ return 0
+ ;;
+ --copydvd|--formatdvd|--videodvdrip)
+ _dvd_devices
+ return 0
+ ;;
+ --copycd|--erasecd|--cddarip|--videocdrip)
+ _cd_devices
+ _dvd_devices
+ return 0
+ ;;
+ --cdimage|--image)
+ _filedir @(cue|iso|toc)
+ return 0
+ ;;
+ --dvdimage)
+ _filedir iso
+ return 0
+ ;;
+ --ao)
+ COMPREPLY=( $( compgen -W 'alsa arts' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]] ; then
+ COMPREPLY=( $( compgen -W "$( _parse_help "$1" )" -- "$cur" ) )
+ else
+ _filedir
+ fi
+} &&
+complete -F _k3b k3b
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/kldload b/completions/kldload
new file mode 100644
index 00000000..e5bce0a3
--- /dev/null
+++ b/completions/kldload
@@ -0,0 +1,40 @@
+# bash completion for FreeBSD kernel module commands
+
+[ $UNAME = FreeBSD ] &&
+{
+
+_kldload()
+{
+ local cur moddir
+
+ moddir=/modules/
+ [ -d $moddir ] || moddir=/boot/kernel/
+ _get_comp_words_by_ref cur
+
+ _compopt_o_filenames
+ COMPREPLY=( $( compgen -f "$moddir$cur" ) )
+ COMPREPLY=( ${COMPREPLY[@]#$moddir} )
+ COMPREPLY=( ${COMPREPLY[@]%.ko} )
+
+ return 0
+}
+complete -F _kldload kldload
+
+_kldunload()
+{
+ local cur
+ _get_comp_words_by_ref cur
+ COMPREPLY=( $( kldstat | \
+ sed -ne "s/^.*[ \t]\{1,\}\($cur[a-z_]\{1,\}\).ko$/\1/p" ) )
+}
+complete -F _kldunload kldunload
+
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/larch b/completions/larch
new file mode 100644
index 00000000..e58374f7
--- /dev/null
+++ b/completions/larch
@@ -0,0 +1,48 @@
+# larch(1) completion by Alex Shinn <foof@synthcode.com>
+
+have larch &&
+_larch()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ if [[ $COMP_CWORD -eq 1 || "$prev" == -* ]]; then
+ COMPREPLY=( $( compgen -W ' \
+ my-id my-default-archive register-archive whereis-archive archives \
+ init-tree tree-root tree-version set-tree-version inventory \
+ tagging-method tree-lint missing-tags add delete \
+ move explicit-default set-manifest manifest check-manifest mkpatch \
+ dopatch patch-report empty-patch make-archive make-category \
+ make-branch make-version categories branches versions revisions \
+ cat-archive-log archive-cache-revision archive-cached-revisions \
+ archive-uncache-revision category-readme branch-readme \
+ version-readme make-log logs add-log log-ls cat-log \
+ log-header-field changelog log-for-merge merge-points \
+ new-on-branch import commit get get-patch lock-branch \
+ lock-revision push-mirror build-config update-config replay-config \
+ record-config show-config config-history update replay delta-patch \
+ star-merge tag prepare-branch finish-branch join-branch \
+ whats-missing what-changed file-diffs pristines lock-pristine \
+ my-revision-library library-find library-add library-remove \
+ library-archives library-categories library-branches \
+ library-versions library-revisions library-log library-file \
+ touched-files-prereqs patch-set-web update-distributions \
+ distribution-name notify my-notifier mail-new-categories \
+ mail-new-branches mail-new-versions mail-new-revisions \
+ notify-library notify-browser push-new-revisions sendmail-mailx' \
+ "$cur" ))
+ fi
+
+ return 0
+} &&
+complete -F _larch -o default larch
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/ldapvi b/completions/ldapvi
new file mode 100644
index 00000000..31e26d1c
--- /dev/null
+++ b/completions/ldapvi
@@ -0,0 +1,72 @@
+# bash completion for ldapvi
+
+have ldapvi &&
+_ldapvi()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -h|--host)
+ _known_hosts_real "$cur"
+ return 0
+ ;;
+ -Y|--sasl-mech)
+ COMPREPLY=( $( compgen -W 'EXTERNAL GSSAPI DIGEST-MD5 \
+ CRAM-MD5 PLAIN ANONYMOUS' -- "$cur" ) )
+ return 0
+ ;;
+ --bind)
+ COMPREPLY=( $( compgen -W 'simple sasl' -- "$cur" ) )
+ return 0
+ ;;
+ --bind-dialog)
+ COMPREPLY=( $( compgen -W 'never auto always' -- $cur ) )
+ return 0
+ ;;
+ --scope)
+ COMPREPLY=( $( compgen -W 'base one sub' -- "$cur" ) )
+ return 0
+ ;;
+ --deref)
+ COMPREPLY=( $( compgen -W 'never searching finding always' \
+ -- "$cur" ) )
+ return 0
+ ;;
+ --encoding)
+ COMPREPLY=( $( compgen -W 'ASCII UTF-8 binary' -- "$cur" ) )
+ return 0
+ ;;
+ --tls)
+ COMPREPLY=( $( compgen -W 'never allow try strict' \
+ -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--discover --out --in --delete \
+ --rename -h --host -D --user -w --password --bind \
+ --bind-dialog -I --sasl-interactive --bind-dialog -O \
+ --sasl-secprops -Q --sasl-quiet -R --sasl-realm -U \
+ --sasl-authcid -X --sasl-authzid -Y --sasl-mech -b \
+ --base -s --scope -S --sort --add -o --class --config \
+ -c --continue --deleteoldrdn -a --deref -d --discover \
+ -A --empty --ncoding -H --help --ldap-conf -m --may -M \
+ --managedsait --noquestions -! --noninteractive -q \
+ --quiet -R --read -Z --starttls --tls -v --verbose \
+ --ldapsearch --ldapmodify --ldapdelete --ldapmoddn' \
+ -- "$cur" ) )
+ fi
+} &&
+complete -F _ldapvi ldapvi
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/lftp b/completions/lftp
new file mode 100644
index 00000000..1de87aec
--- /dev/null
+++ b/completions/lftp
@@ -0,0 +1,52 @@
+# bash completion for lftp
+
+have lftp &&
+_lftp()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -f)
+ _filedir
+ return 0
+ ;;
+ -c|-h|--help|-v|--version|-e|-u|-p)
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]] ; then
+ COMPREPLY=( $( compgen -W '-f -c --help --version -e -u -p' \
+ -- "$cur" ) )
+ return 0
+ fi
+
+ COMPREPLY=( $( compgen -W \
+ '$( cut -f 1 -s ~/.lftp/bookmarks 2>/dev/null )' -- "$cur" ) )
+ _known_hosts_real "$cur"
+} &&
+complete -F _lftp lftp
+
+have lftpget &&
+_lftpget()
+{
+ COMPREPLY=()
+ local cur
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]] ; then
+ COMPREPLY=( $( compgen -W '-c -d -v' -- "$cur" ) )
+ fi
+} &&
+complete -F _lftpget lftpget
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/lilo b/completions/lilo
new file mode 100644
index 00000000..ab0d9dc3
--- /dev/null
+++ b/completions/lilo
@@ -0,0 +1,60 @@
+# bash completion for lilo(8)
+
+have lilo && {
+_lilo_labels()
+{
+ COMPREPLY=( $( compgen -W "$( awk -F'=' '/label/ {print $2}' \
+ /etc/lilo.conf | sed -e 's/\"//g' )" -- "$cur" ) )
+}
+
+_lilo()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/links b/completions/links
new file mode 100644
index 00000000..9b7b50f0
--- /dev/null
+++ b/completions/links
@@ -0,0 +1,43 @@
+# bash completion for links
+
+have links &&
+_links()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ 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 links
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/lintian b/completions/lintian
new file mode 100644
index 00000000..e2237893
--- /dev/null
+++ b/completions/lintian
@@ -0,0 +1,186 @@
+# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*-
+# ex: ts=8 sw=8 noet filetype=sh
+#
+# bash completion for lintian(1) and lintian-info(1)
+
+have lintian && {
+_lintian_tags() {
+ local match search tags
+
+ tags=$( grep -e ^Tag /usr/share/lintian/checks/*.desc | cut -d\ -f2 )
+ if [[ "$cur" == *, ]]; then
+ search=${cur//,/ }
+ for item in $search; do
+ match=$(grep -nE "^Tag: $item$" /usr/share/lintian/checks/*.desc \
+ | cut -d: -f1 )
+ tags=$( echo $tags | sed -e "s/\<$item\>//g" )
+ done
+ COMPREPLY=( ${COMPREPLY[@]} $(compgen -W "$tags") )
+ elif [[ "$cur" == *,* ]]; then
+ COMPREPLY=( ${COMPREPLY[@]} $(compgen -P "${cur%,*}," -W "$tags" -- \
+ "${cur##*,}") )
+ else
+ COMPREPLY=( ${COMPREPLY[@]} $(compgen -W "$tags" -- "$cur") )
+ fi
+ return 0
+}
+
+_lintian_checks() {
+ local match search todisable checks
+
+ checks=$(grep -e ^Check-Script -e ^Abbrev \
+ /usr/share/lintian/checks/*.desc | cut -d\ -f2 )
+ if [[ "$cur" == *, ]]; then
+ search=${cur//,/ }
+ for item in $search; do
+ match=$(grep -nE "^(Check-Script|Abbrev): $item$" \
+ /usr/share/lintian/checks/*.desc | cut -d: -f1 )
+ todisable=$(grep -e ^Check-Script -e ^Abbrev $match | \
+ cut -d\ -f2 )
+ for name in $todisable; do
+ checks=$( echo $checks | sed -e "s/\<$name\>//g" )
+ done
+ done
+ COMPREPLY=( ${COMPREPLY[@]} $(compgen -W "$checks") )
+ elif [[ "$cur" == *,* ]]; then
+ COMPREPLY=( ${COMPREPLY[@]} $(compgen -P "${cur%,*}," -W "$checks" \
+ -- "${cur##*,}") )
+ else
+ COMPREPLY=( ${COMPREPLY[@]} $(compgen -W "$checks" -- "$cur") )
+ fi
+ return 0
+}
+
+_lintian_infos() {
+ local match search infos
+
+ infos=$(grep -e ^Collector /usr/share/lintian/collection/*.desc \
+ | cut -d\ -f2 )
+ if [[ "$cur" == *, ]]; then
+ search=${cur//,/ }
+ for item in $search; do
+ match=$( grep -nE "^Collector: $item$" \
+ /usr/share/lintian/collection/*.desc | cut -d: -f1 )
+ infos=$( echo $infos | sed -e "s/\<$item\>//g" )
+ done
+ COMPREPLY=( ${COMPREPLY[@]} $(compgen -W "$infos") )
+ elif [[ "$cur" == *,* ]]; then
+ COMPREPLY=( ${COMPREPLY[@]} $(compgen -P "${cur%,*}," -W "$infos" \
+ -- "${cur##*,}") )
+ else
+ COMPREPLY=( ${COMPREPLY[@]} $(compgen -W "$infos" -- "$cur") )
+ fi
+ return 0
+}
+
+_lintian_arches() {
+ return 0
+}
+
+_lintian() {
+ local cur prev action lint_actions general_opts behaviour_opts \
+ configuration_opts selection_opts
+
+ _get_comp_words_by_ref cur prev
+
+ lint_actions="--setup-lab --remove-lab --check --check-part --tags \
+ --tags-from-file --ftp-master-rejects --dont-check-part \
+ --unpack --remove"
+ general_opts="--help --version --print-version --verbose --debug --quiet"
+ behaviour_opts="--info --display-info --display-experimental --pedantic \
+ --display-level --suppress-tags --unpack-level \
+ --suppress-tags-from-file --no-override --show-overrides \
+ --color --unpack-info --md5sums --checksums --allow-root \
+ --fail-on-warnings --keep-lab"
+ configuration_opts="--cfg --lab --archivedir --dist --area --section \
+ --arch --root"
+ selection_opts="--all --binary --source --udeb --packages-file"
+
+ if [[ "$prev" = -* ]]; then
+ case $prev in
+ -C|--check-part|-X|--dont-check-part)
+ _lintian_checks
+ ;;
+ -T|--tags|--suppress-tags)
+ _lintian_tags
+ ;;
+ --tags-from-file|--suppress-tags-from-file|--cfg|-p|\
+ --packages-file)
+ _filedir
+ ;;
+ --lab|--archivedir|--dist|--root)
+ _filedir -d
+ ;;
+ -l|--unpack-level)
+ COMPREPLY=($(compgen -W "0 none 1 basic 2 contents" -- \
+ "$cur"))
+ ;;
+ --color)
+ COMPREPLY=($(compgen -W "never always auto html" -- "$cur"))
+ ;;
+ -U|--unpack-info)
+ _lintian_infos
+ ;;
+ --area|--section)
+ COMPREPLY=($(compgen -W "main contrib non-free" -- "$cur"))
+ ;;
+ --arch)
+ ;;
+ esac
+ fi
+
+ case "$cur" in
+ --*)
+ COMPREPLY=($(compgen -W "$lint_actions $general_opts \
+ $behaviour_opts $configuration_opts" -- "$cur"))
+ ;;
+ *,)
+ # If we're here, the user is trying to complete on
+ # --action tag,tag,<TAB>
+ # Only few actions permit that, re-complete them now.
+ echo $prev
+ case "$prev" in
+ -C|--check-part|-X|--dont-check-part)
+ _lintian_checks
+ ;;
+ -T|--tags|--suppress-tags)
+ _lintian_tags
+ ;;
+ -U|--unpack-info)
+ _lintian_infos
+ ;;
+ esac
+ ;;
+ *)
+ _filedir '@(?(u)deb|changes|dsc)'
+ ;;
+ esac
+ return 0
+}
+
+_lintian_info() {
+ local cur prev
+
+ _get_comp_words_by_ref cur prev
+
+ case "$prev" in
+ -t|--tags)
+ _lintian_tags
+ return 0
+ ;;
+ esac
+
+ case "$cur" in
+ --*)
+ COMPREPLY=($(compgen -W "--annotate --help --tags" -- "$cur"))
+ ;;
+ *)
+ _filedir
+ ;;
+ esac
+ return 0
+}
+
+complete -F _lintian lintian
+complete -F _lintian_info lintian-info
+}
diff --git a/completions/lisp b/completions/lisp
new file mode 100644
index 00000000..ee43a019
--- /dev/null
+++ b/completions/lisp
@@ -0,0 +1,31 @@
+# bash programmable completion for various Common Lisp implementations by
+# Nikodemus Siivola <nikodemus@random-state.net>
+
+have lisp &&
+_lisp()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ # completing an option (may or may not be separated by a space)
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-core -lib -batch -quit -edit -eval -init \
+ -dynamic-space-size -hinit -noinit -nositeinit -load -slave ' \
+ -- "$cur" ) )
+ else
+ _filedir
+ fi
+
+ return 0
+} &&
+complete -F _lisp -o default lisp
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/lrzip b/completions/lrzip
new file mode 100644
index 00000000..5cde88a8
--- /dev/null
+++ b/completions/lrzip
@@ -0,0 +1,64 @@
+# lrzip(1) completion
+
+have lrzip &&
+_lrzip()
+{
+ COMPREPLY=()
+ local cur prev
+ _get_comp_words_by_ref cur prev
+
+ if [[ "$cur" == -* && $prev != -N ]]; then
+ COMPREPLY=( $( compgen -W '-w -d -o -O -S -f -D -q -L -n -l -b -g -M \
+ -T -N -v -vv -V -h' -- "$cur" ) )
+ return 0
+ fi
+
+ local xspec="*.lrz"
+
+ case $prev in
+ -w|-S|-V|-h)
+ return 0
+ ;;
+ -d)
+ xspec="!"$xspec
+ ;;
+ -o)
+ _filedir
+ return 0
+ ;;
+ -O)
+ _filedir -d
+ return 0
+ ;;
+ -L)
+ COMPREPLY=( $( compgen -W '1 2 3 4 5 6 7 8 9' -- "$cur" ) )
+ return 0
+ ;;
+ -T)
+ COMPREPLY=( $( compgen -W '1 2 3 4 5 6 7 8 9 10' -- "$cur" ) )
+ return 0
+ ;;
+ -N)
+ COMPREPLY=( $( compgen -W '-20 -19 -18 -17 -16 -15 -14 -13 -12 \
+ -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 \
+ 12 13 14 15 16 17 18 19' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ _expand || return 0
+
+ local IFS=$'\n'
+ _compopt_o_filenames
+ COMPREPLY=( $( compgen -f -X "$xspec" -- "$cur" ) \
+ $( compgen -d -- "$cur" ) )
+} &&
+complete -F _lrzip lrzip
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/lsof b/completions/lsof
new file mode 100644
index 00000000..ac010dad
--- /dev/null
+++ b/completions/lsof
@@ -0,0 +1,64 @@
+# lsof(8) completion
+
+have lsof &&
+_lsof()
+{
+ COMPREPLY=()
+ local cur prev
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -'?'|-h|+c|-c|-d|-F|-i|+r|-r|-s|-S|-T)
+ return 0
+ ;;
+ -A|-k|-m|+m|-o)
+ _filedir
+ return 0
+ ;;
+ +d|+D)
+ _filedir -d
+ return 0
+ ;;
+ -D)
+ COMPREPLY=( $( compgen -W '? b i r u' -- "$cur" ) )
+ return 0
+ ;;
+ -f)
+ COMPREPLY=( $( compgen -W 'c f g G n' -- "$cur" ) )
+ return 0
+ ;;
+ -g)
+ # TODO: handle ^foo exclusions, comma separated lists
+ _pgids
+ return 0
+ ;;
+ -p)
+ # TODO: handle ^foo exclusions, comma separated lists
+ _pids
+ return 0
+ ;;
+ -u)
+ # TODO: handle ^foo exclusions, comma separated lists
+ COMPREPLY=( $( compgen -u -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == [-+]* ]]; then
+ COMPREPLY=( $( compgen -W '-h -a -A -b -c +c -C +d -d +D -D +f -f -F -g
+ -i -k -l +L -L +m -m +M -M -n -N -o -O -p -P +r -r -R -s -S -T -t
+ -u -U -v -V +w -w -x -X -z -Z' -- "$cur" ) )
+ return 0
+ fi
+
+ _filedir
+} &&
+complete -F _lsof lsof
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/lvm b/completions/lvm
new file mode 100644
index 00000000..f4d3b77d
--- /dev/null
+++ b/completions/lvm
@@ -0,0 +1,1094 @@
+# bash completion for lvm
+
+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=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--debug --help \
+ --lvmpartition --verbose --version' -- "$cur" ) )
+ fi
+}
+complete -F _lvmdiskscan lvmdiskscan
+
+_pvscan()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--debug --exported --novolumegroup \
+ --help --ignorelockingfailure --partial --short --uuid \
+ --verbose --version' -- "$cur" ) )
+ fi
+}
+complete -F _pvscan pvscan
+
+_pvs()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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 --all --debug \
+ --help --ignorelockingfailure --noheadings \
+ --nosuffix --options --sort --separator --unbuffered --units \
+ --verbose --version' -- "$cur" ) )
+ else
+ _physicalvolumes
+ fi
+}
+complete -F _pvs pvs
+
+_pvdisplay()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ --units)
+ _units
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--colon --columns --units \
+ --verbose --debug --help --version' -- "$cur" ) )
+ else
+ _physicalvolumes
+ fi
+}
+complete -F _pvdisplay pvdisplay
+
+_pvchange()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -A|-x|--autobackup|--allocatable)
+ COMPREPLY=( $( compgen -W 'y n' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--all --autobackup \
+ --debug --help --test --uuid \
+ --allocatable --verbose --addtag --deltag \
+ --version' -- "$cur" ) )
+ else
+ _physicalvolumes
+ fi
+}
+complete -F _pvchange pvchange
+
+_pvcreate()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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 --debug \
+ --force --help --labelsector --metadatatype \
+ --metadatacopies --metadatasize \
+ --setphysicalvolumesize --test --uuid \
+ --verbose --yes --version' -- "$cur" ) )
+ else
+ _physicalvolumes
+ fi
+}
+complete -F _pvcreate pvcreate
+
+_pvmove()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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 --autobackup \
+ --background --debug --force --help --interval --test --verbose \
+ --version --name' -- "$cur" ) )
+ else
+ _physicalvolumes
+ fi
+}
+complete -F _pvmove pvmove
+
+_pvremove()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--debug --force \
+ --help --yes --test --verbose --version' -- "$cur" ) )
+ else
+ _physicalvolumes
+ fi
+}
+complete -F _pvremove pvremove
+
+_vgscan()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--debug --help \
+ --ignorelockingfailure --mknodes \
+ --partial --verbose --version' -- "$cur" ) )
+ fi
+}
+complete -F _vgscan vgscan
+
+_vgs()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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 --debug \
+ --help --ignorelockingfailure --noheadings \
+ --nosuffix --options --sort --partial \
+ --separator --unbuffered --units \
+ --verbose --version' -- "$cur" ) )
+ else
+ _volumegroups
+ fi
+}
+complete -F _vgs vgs
+
+_vgdisplay()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ --units)
+ _units
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--colon --columns --units \
+ --partial --activevolumegroups --verbose \
+ --debug --help --version' -- "$cur" ) )
+ else
+ _volumegroups
+ fi
+}
+complete -F _vgdisplay vgdisplay
+
+_vgchange()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -a|-A|-x|--available|--autobackup|--resizeable)
+ COMPREPLY=( $( compgen -W 'y n' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--autobackup --alloc \
+ --partial --debug --help --ignorelockingfailure \
+ --test --uuid --verbose --version \
+ --available --resizeable --logicalvolume \
+ --addtag --deltag' -- "$cur" ) )
+ else
+ _volumegroups
+ fi
+}
+complete -F _vgchange vgchange
+
+_vgcreate()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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 '--autobackup --addtag --alloc \
+ --debug --help --maxlogicalvolumes --metadatatype \
+ --maxphysicalvolumes --physicalextentsize --test \
+ --verbose --version' -- "$cur" ) )
+ else
+ _args
+ if [ $args -eq 0 ]; then
+ _volumegroups
+ else
+ _physicalvolumes
+ fi
+ fi
+}
+complete -F _vgcreate vgcreate
+
+_vgremove()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--debug --help --test \
+ --verbose --version' -- "$cur" ) )
+ else
+ _volumegroups
+ fi
+}
+complete -F _vgremove vgremove
+
+_vgrename()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -A|--autobackup)
+ COMPREPLY=( $( compgen -W 'y n' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--autobackup --debug \
+ --help --test --verbose --version' -- "$cur" ) )
+ else
+ _volumegroups
+ fi
+}
+complete -F _vgrename vgrename
+
+_vgreduce()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -A|--autobackup)
+ COMPREPLY=( $( compgen -W 'y n' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--all --autobackup \
+ --debug --help --removemissing --test \
+ --verbose --version' -- "$cur" ) )
+
+ else
+ _args
+ if [ $args -eq 0 ]; then
+ _volumegroups
+ else
+ _physicalvolumes
+ fi
+ fi
+}
+complete -F _vgreduce vgreduce
+
+_vgextend()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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 '--autobackup --debug \
+ --help --test --verbose --version' -- "$cur" ) )
+ else
+ _args
+ if [ $args -eq 0 ]; then
+ _volumegroups
+ else
+ _physicalvolumes
+ fi
+ fi
+}
+complete -F _vgextend vgextend
+
+_vgport()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--all --debug \
+ --help --verbose --version' -- "$cur" ) )
+ else
+ _volumegroups
+ fi
+}
+complete -F _vgport vgimport vgexport
+
+_vgck()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--debug \
+ --help --verbose --version' -- "$cur" ) )
+ else
+ _volumegroups
+ fi
+}
+complete -F _vgck vgck
+
+_vgconvert()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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 '--debug --help --labelsector \
+ --metadatatype --metadatacopies --metadatasize \
+ --test --verbose --version' -- "$cur" ) )
+ else
+ _volumegroups
+ fi
+}
+complete -F _vgconvert vgconvert
+
+_vgcfgbackup()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -f|--file)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--debug --file --help \
+ --ignorelockingfailure --partial --verbose \
+ --version' -- "$cur" ) )
+ else
+ _volumegroups
+ fi
+}
+complete -F _vgcfgbackup vgcfgbackup
+
+_vgcfgrestore()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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 '--debug --file --list \
+ --help --metadatatype --name --test \
+ --verbose --version' -- "$cur" ) )
+ else
+ _volumegroups
+ fi
+}
+complete -F _vgcfgrestore vgcfgrestore
+
+_vgmerge()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -A|--autobackup)
+ COMPREPLY=( $( compgen -W 'y n' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--autobackup --debug --help \
+ --list --test --verbose --version' -- "$cur" ) )
+ else
+ _volumegroups
+ fi
+}
+complete -F _vgmerge vgmerge
+
+_vgsplit()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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 '--autobackup --debug \
+ --help --list --metadatatype --test \
+ --verbose --version' -- "$cur" ) )
+ else
+ _args
+ if [[ $args -eq 0 || $args -eq 1 ]]; then
+ _volumegroups
+ else
+ _physicalvolumes
+ fi
+ fi
+}
+complete -F _vgsplit vgsplit
+
+_vgmknodes()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--debug --help --verbose \
+ --version' -- "$cur" ) )
+ else
+ _volumegroups
+ fi
+}
+complete -F _vgmknodes vgmknodes
+
+_lvscan()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--blockdevice --debug \
+ --help --ignorelockingfailure \
+ --partial --verbose --version' -- "$cur" ) )
+ fi
+}
+complete -F _lvscan lvscan
+
+_lvs()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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 --debug --help \
+ --ignorelockingfailure --noheadings --nosuffix --options \
+ --sort --partial --segments --separator --unbuffered --units \
+ --verbose --version' -- "$cur" ) )
+ else
+ _logicalvolumes
+ fi
+}
+complete -F _lvs lvs
+
+_lvdisplay()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ --units)
+ _units
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--colon --columns --units \
+ --partial --maps --verbose --debug --help --version' -- "$cur" ) )
+ else
+ _logicalvolumes
+ fi
+}
+complete -F _lvdisplay lvdisplay
+
+_lvchange()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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 '--autobackup --available \
+ --addtag --alloc --contiguous --debug --deltag \
+ --force --help --ignorelockingfailure \
+ --persistent --major --minor --partial \
+ --permission --readahead --refresh --test \
+ --verbose --version' -- "$cur" ) )
+ else
+ _logicalvolumes
+ fi
+}
+complete -F _lvchange lvchange
+
+_lvcreate()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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 '--autobackup --addtag --alloc \
+ --contiguous --debug --help --stripes \
+ --stripesize --extents --size --persistent \
+ --major --minor --name --permission \
+ --readahead --test --type --verbose --zero \
+ --version' -- "$cur" ) )
+ else
+ _args
+ if [ $args -eq 0 ]; then
+ _volumegroups
+ else
+ _physicalvolumes
+ fi
+ fi
+}
+complete -F _lvcreate lvcreate
+
+_lvremove()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -A|--autobackup)
+ COMPREPLY=( $( compgen -W 'y n' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--autobackup --debug \
+ --force --help --test --verbose --version' -- "$cur" ) )
+ else
+ _logicalvolumes
+ fi
+}
+complete -F _lvremove lvremove
+
+_lvrename()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -A|--autobackup)
+ COMPREPLY=( $( compgen -W 'y n' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--autobackup --debug \
+ --help --test --verbose --version' -- "$cur" ) )
+ else
+ _logicalvolumes
+ fi
+}
+complete -F _lvrename lvrename
+
+_lvreduce()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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 '--autobackup \
+ --debug --force --help --extents \
+ --size --nofsck --resizefs --test --verbose --version' -- "$cur" ) )
+ else
+ _logicalvolumes
+ fi
+}
+complete -F _lvreduce lvreduce
+
+_lvresize()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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 '--autobackup --alloc \
+ --debug --help --stripes --stripesize \
+ --extents --size --nofsck --resizefs \
+ --test --type --verbose --version' -- "$cur" ) )
+ else
+ _args
+ if [ $args -eq 0 ]; then
+ _logicalvolumes
+ else
+ _physicalvolumes
+ fi
+ fi
+}
+complete -F _lvresize lvresize
+
+_lvextend()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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 '--autobackup --alloc \
+ --debug --help --stripes --stripesize \
+ --extents --size --nofsck --resizefs \
+ --test --type --verbose --version' -- "$cur" ) )
+ else
+ _args
+ if [ $args -eq 0 ]; then
+ _logicalvolumes
+ else
+ _physicalvolumes
+ fi
+ fi
+}
+complete -F _lvextend lvextend
+
+_lvm()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ 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
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/lzma b/completions/lzma
new file mode 100644
index 00000000..295ef37b
--- /dev/null
+++ b/completions/lzma
@@ -0,0 +1,46 @@
+# lzma(1) completion by Per Øyvind Karlsen <peroyvind@mandriva.org>
+
+have lzma &&
+_lzma()
+{
+ local cur prev xspec
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-1 -2 -3 -4 -5 -6 -7 -8 -9 \
+ --help --decompress --compress --keep --force --suffix \
+ --test --stdout --quiet --verbose --license --list \
+ --version --small --fast --best --text' -- "$cur" ) )
+ return 0
+ fi
+
+ local IFS=$'\n'
+
+ xspec="*.@(lzma|tlz)"
+ 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
+
+ _compopt_o_filenames
+ COMPREPLY=( $( compgen -f -X "$xspec" -- "$cur" ) \
+ $( compgen -d -- "$cur" ) )
+} &&
+complete -F _lzma lzma
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/lzop b/completions/lzop
new file mode 100644
index 00000000..6d384128
--- /dev/null
+++ b/completions/lzop
@@ -0,0 +1,69 @@
+# lzop(1) completion
+
+have lzop &&
+_lzop()
+{
+ local cur prev xspec
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-1 -2 -3 -4 -5 -6 -7 -8 -9 -P \
+ --fast --best --decompress --extract --test --list --ls --info \
+ --sysinfo --license --help --version --stdout --output --path \
+ --force --no-checksum --no-name --name --no-mode --no-time \
+ --suffix --keep --delete --crc32 --no-warn --ignore-warn --quiet \
+ --verbose --no-stdin --filter --checksum --no-color --mono \
+ --color' -- "$cur" ) )
+ return 0
+ fi
+
+ case $prev in
+ -o|--output)
+ _filedir
+ return 0
+ ;;
+ --path)
+ _filedir -d
+ return 0
+ ;;
+ -S|--suffix)
+ return 0
+ ;;
+ esac
+
+ xspec="*.?(t)lzo"
+ case $prev in
+ --decompress|--uncompress|--extract|--list|--ls|--info|--test)
+ xspec="!"$xspec
+ ;;
+ --force)
+ xspec=
+ ;;
+ --*)
+ ;;
+ -*f*|'<'|'>')
+ xspec=
+ ;;
+ -*[dltx]*)
+ xspec="!"$xspec
+ ;;
+ esac
+
+ _expand || return 0
+
+ local IFS=$'\n'
+ _compopt_o_filenames
+ COMPREPLY=( $( compgen -f -X "$xspec" -- "$cur" ) \
+ $( compgen -d -- "$cur" ) )
+} &&
+complete -F _lzop lzop
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/mailman b/completions/mailman
new file mode 100644
index 00000000..b239cbbf
--- /dev/null
+++ b/completions/mailman
@@ -0,0 +1,587 @@
+# mailman completion
+
+have list_lists && {
+_mailman_lists()
+{
+ COMPREPLY=( $( compgen -W '$( list_lists -b )' -- "$cur" ) )
+}
+
+_list_lists()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--advertised --virtual-host-overview \
+ --bare --help' -- "$cur" ) )
+ fi
+
+} &&
+complete -F _list_lists list_lists
+}
+
+have add_members &&
+_add_members()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -r|-d|--regular-members-file|--digest-members-file)
+ _filedir
+ return 0
+ ;;
+ -w|-a|--welcome-msg|--admin-notify)
+ COMPREPLY=( $( compgen -W 'y n' -- "$cur") )
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--regular-members-file \
+ --digest-members-file --welcome-msg \
+ --admin-notify --help' -- "$cur" ) )
+ else
+ _mailman_lists
+ fi
+
+} &&
+complete -F _add_members add_members
+
+have remove_members &&
+_remove_members()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -f|--file)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--file --all --fromall --nouserack \
+ --noadminack --help' -- "$cur" ) )
+ else
+ _mailman_lists
+ fi
+
+} &&
+complete -F _remove_members remove_members
+
+have find_member &&
+_find_member()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -l|-x|--listname|--exclude)
+ _mailman_lists
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--listname --exclude --owners \
+ --help' -- "$cur" ) )
+ fi
+
+} &&
+complete -F _find_member find_member
+
+have clone_member &&
+_clone_member()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -l|--listname)
+ _mailman_lists
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--listname --remove --admin \
+ --quiet --nomodify --help' -- "$cur" ) )
+ fi
+
+} &&
+complete -F _clone_member clone_member
+
+have sync_members &&
+_sync_members()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -w|-g|-d|--welcome-msg|--goodbye-msg|--digest)
+ COMPREPLY=( $( compgen -W 'y n' -- "$cur") )
+ return 0
+ ;;
+ -d|--file)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--no-change --welcome-msg \
+ --goodbye-msg --digest --notifyadmin --file --help' -- "$cur" ) )
+ else
+ _mailman_lists
+ fi
+
+} &&
+complete -F _sync_members sync_members
+
+have unshunt &&
+_unshunt()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--help' -- "$cur" ) )
+ else
+ _filedir -d
+ fi
+
+} &&
+complete -F _unshunt unshunt
+
+have list_admins &&
+_list_admins()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--all-vhost --all --help' -- "$cur" ) )
+ else
+ _mailman_lists
+ fi
+
+} &&
+complete -F _list_admins list_admins
+
+have list_owners &&
+_list_owners()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--with-listnames --moderators \
+ --help' -- "$cur" ) )
+ else
+ _mailman_lists
+ fi
+
+} &&
+complete -F _list_owners list_owners
+
+have list_members &&
+_list_members()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -o|--output)
+ _filedir
+ return 0
+ ;;
+ -d|--digest)
+ COMPREPLY=( $( compgen -W 'mime plain' -- "$cur") )
+ return 0
+ ;;
+ -n|--nomail)
+ COMPREPLY=( $( compgen -W 'byadmin byuser bybounce unknown' \
+ -- "$cur") )
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--output --regular --digest \
+ --nomail --fullnames --preserve --help' -- "$cur" ) )
+ else
+ _mailman_lists
+ fi
+
+} &&
+complete -F _list_members list_members
+
+have change_pw &&
+_change_pw()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -l|--listname)
+ _mailman_lists
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--all --domain --listname \
+ --password --quiet --help' -- "$cur" ) )
+ fi
+
+} &&
+complete -F _change_pw change_pw
+
+have withlist &&
+_withlist()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--lock --interactive \
+ --run --all --quiet --help' -- "$cur" ) )
+ else
+ _mailman_lists
+ fi
+
+} &&
+complete -F _withlist withlist
+
+have newlist &&
+_newlist()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--language --quiet --help' -- "$cur" ) )
+ else
+ _mailman_lists
+ fi
+
+} &&
+complete -F _newlist newlist
+
+have rmlist &&
+_rmlist()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--archives --help' -- "$cur" ) )
+ else
+ _mailman_lists
+ fi
+
+} &&
+complete -F _rmlist rmlist
+
+have config_list &&
+_config_list()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -i|-o|--inputfile|--outputfile)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--inputfile --outputfile \
+ --checkonly --verbose --help' -- "$cur" ) )
+ else
+ _mailman_lists
+ fi
+
+} &&
+complete -F _config_list config_list
+
+# Try to detect whether this is the mailman "arch" to avoid installing
+# it for the coreutils/util-linux-ng one.
+have arch && have mailmanctl &&
+_arch()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -w|-g|-d|--welcome-msg|--goodbye-msg|--digest)
+ COMPREPLY=( $( compgen -W 'y n' -- "$cur") )
+ return 0
+ ;;
+ -d|--file)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--wipe --start --end --quiet \
+ --help' -- "$cur" ) )
+ else
+ args=$COMP_CWORD
+ for (( i=1; i < COMP_CWORD; i++ )); do
+ if [[ "${COMP_WORDS[i]}" == -* ]]; then
+ args=$(($args-1))
+ fi
+ done
+ case $args in
+ 1)
+ _mailman_lists
+ ;;
+ 2)
+ _filedir
+ ;;
+ esac
+ fi
+
+} &&
+complete -F _arch arch
+
+have cleanarch &&
+_cleanarch()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--status --dry-run --quiet \
+ --help' -- "$cur" ) )
+ fi
+
+} &&
+complete -F _cleanarch cleanarch
+
+have inject &&
+_inject()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -l|--listname)
+ _mailman_lists
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--listname --queue --help' -- "$cur" ) )
+ else
+ _filedir
+ fi
+
+} &&
+complete -F _inject inject
+
+have dumpdb &&
+_dumpdb()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--marshal --pickle --noprint \
+ --help' -- "$cur" ) )
+ else
+ _filedir
+ fi
+
+} &&
+complete -F _dumpdb dumpdb
+
+have check_db &&
+_check_db()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--all --verbose --help' -- "$cur" ) )
+ else
+ _mailman_lists
+ fi
+
+} &&
+complete -F _check_db check_db
+
+have check_perms &&
+_check_perms()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-f -v -h' -- "$cur" ) )
+ fi
+
+} &&
+complete -F _check_perms check_perms
+
+have genaliases &&
+_genaliases()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--quiet --help' -- "$cur" ) )
+ fi
+
+} &&
+complete -F _genaliases genaliases
+
+have mmsitepass &&
+_mmsitepass()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--listcreator --help' -- "$cur" ) )
+ fi
+
+} &&
+complete -F _mmsitepass mmsitepass
+
+have qrunner &&
+_qrunner()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--runner --once \
+ --list --verbose --subproc --help' -- "$cur" ) )
+ fi
+
+} &&
+complete -F _qrunner qrunner
+
+have mailmanctl &&
+_mailmanctl()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--no-restart --run-as-user \
+ --stale-lock-cleanup --quiet --help' -- "$cur" ) )
+ else
+ COMPREPLY=( $( compgen -W 'start stop restart reopen' -- "$cur" ) )
+ fi
+
+} &&
+complete -F _mailmanctl mailmanctl
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/make b/completions/make
new file mode 100644
index 00000000..76e95284
--- /dev/null
+++ b/completions/make
@@ -0,0 +1,78 @@
+# bash completion for GNU make
+
+have make || have gmake || have gnumake || have pmake &&
+_make()
+{
+ local file makef makef_dir="." makef_inc cur prev i split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -f|-o|-W|--file|--makefile|--old-file|--new-file|--assume-old|--assume-new|--what-if)
+ _filedir
+ return 0
+ ;;
+ -I|-C|--directory|--include-dir)
+ _filedir -d
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ 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/--directory
+ for (( i=0; i < ${#COMP_WORDS[@]}; i++ )); do
+ if [[ ${COMP_WORDS[i]} == -@(C|-directory) ]]; then
+ # eval for tilde expansion
+ eval makef_dir=${COMP_WORDS[i+1]}
+ break
+ fi
+ done
+
+ # before we scan for targets, see if a Makefile name was
+ # specified with -f/--file/--makefile
+ for (( i=0; i < ${#COMP_WORDS[@]}; i++ )); do
+ if [[ ${COMP_WORDS[i]} == -@(f|-?(make)file) ]]; then
+ # eval for tilde expansion
+ eval makef=${COMP_WORDS[i+1]}
+ break
+ fi
+ done
+
+ [ -n "$makef" ] && makef="-f ${makef}"
+ [ -n "$makef_dir" ] && makef_dir="-C ${makef_dir}"
+
+ COMPREPLY=( $( compgen -W "$( 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]}' )" \
+ -- "$cur" ) )
+
+ fi
+} &&
+complete -F _make make gmake gnumake pmake
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/man b/completions/man
new file mode 100644
index 00000000..9e5cd3a8
--- /dev/null
+++ b/completions/man
@@ -0,0 +1,80 @@
+# man(1) completion
+
+[ $USERLAND = GNU -o $UNAME = Darwin \
+ -o $UNAME = FreeBSD -o $UNAME = SunOS -o $UNAME = Cygwin \
+ -o $UNAME = OpenBSD ] &&
+_man()
+{
+ local cur i prev sect manpath manext mansect uname
+
+ manext="@([0-9lnp]|[0-9][px]|man|3pm)?(.@([gx]z|bz2|lzma|Z))"
+ mansect="@([0-9lnp]|[0-9][px]|3pm)"
+
+ COMPREPLY=()
+ _get_comp_words_by_ref -n : cur prev
+
+ 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 )
+ if [[ $uname == @(Linux|GNU|GNU/*|FreeBSD|Cygwin|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[@]%.@([gx]z|bz2|lzma|Z)} )
+ 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
+
+ __ltrim_colon_completions "$cur"
+ return 0
+} &&
+complete -F _man man apropos whatis
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/mc b/completions/mc
new file mode 100644
index 00000000..09e9eabe
--- /dev/null
+++ b/completions/mc
@@ -0,0 +1,47 @@
+# bash completion for mc
+
+have mc &&
+_mc()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -e|--edit|-v|--view|-l|--ftplog|-P|--printwd)
+ _filedir
+ return 0
+ ;;
+ -C|--colors|-D|--debuglevel)
+ # argument required but no completions available
+ return 0
+ ;;
+ -h|--help|-V|--version)
+ # all other arguments are noop with these
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--stickchars --nocolor --color --colors \
+ --nomouse --edit --datadir --resetsoft --ftplog --printwd --slow \
+ --termcap --nosubshell --subshell --view --version --xterm \
+ --debuglevel --help' -- "$cur" ) )
+ else
+ _filedir -d
+ fi
+} &&
+complete -F _mc mc
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/mcrypt b/completions/mcrypt
new file mode 100644
index 00000000..32c4f89f
--- /dev/null
+++ b/completions/mcrypt
@@ -0,0 +1,84 @@
+# mcrypt(1) completion by Ariel Fermani <the_end@bbs.frc.utn.edu.ar>
+
+have mcrypt || have mdecrypt &&
+_mcrypt()
+{
+ local cur prev i decrypt
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -g|--openpgp-z)
+ COMPREPLY=( $( compgen -W '0 1 2 3 4 5 6 7 8 9' -- "$cur" ) )
+ return 0
+ ;;
+ -o|--keymode)
+ COMPREPLY=( $( compgen -W '$( mcrypt --list-keymodes \
+ 2>/dev/null )' -- "$cur" ) )
+ return 0
+ ;;
+ -m|--mode)
+ COMPREPLY=( $( compgen -W "$( mcrypt --list \
+ 2>/dev/null | sed -e 's/.*: //' -e 's/ $//' | \
+ sort -u )" -- "$cur" ) )
+ return 0
+ ;;
+ -a|--algorithm)
+ COMPREPLY=( $( compgen -W "$( mcrypt --list 2>/dev/null | \
+ awk '{print $1}' )" -- "$cur" ) )
+ return 0
+ ;;
+ -h|--hash)
+ COMPREPLY=( $( compgen -W '$( mcrypt --list-hash 2>/dev/null | \
+ sed -e 1d )' -- "$cur" ) )
+ return 0
+ ;;
+ -k|-s|--key|--keysize)
+ return 0
+ ;;
+ -f|-c|--keyfile|--config)
+ _filedir
+ return 0
+ ;;
+ --algorithms-directory|--modes-directory)
+ _filedir -d
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--openpgp --openpgp-z \
+ --decrypt --keysize --keymode --keyfile \
+ --config --algorithm --algorithms-directory \
+ --mode --modes-directory --hash --key \
+ --noiv --bare --gzip --bzip2 --flush \
+ --doublecheck --unlink --nodelete --time \
+ --force --echo --random --list --list-keymodes \
+ --list-hash --verbose --quiet --help \
+ --version --license' -- "$cur" ) )
+ elif [[ ${COMP_WORDS[0]} == mdecrypt ]]; then
+ _filedir nc
+ else
+ decrypt=0
+ for (( i=1; i < ${#COMP_WORDS[@]}-1; i++ )); do
+ if [[ ${COMP_WORDS[i]} == -@(d|-decrypt) ]]; then
+ _filedir nc
+ decrypt=1
+ break
+ fi
+ done
+ if [[ $decrypt -eq 0 ]]; then
+ _filedir
+ fi
+ fi
+} &&
+complete -F _mcrypt mcrypt mdecrypt
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/mdadm b/completions/mdadm
new file mode 100644
index 00000000..9cbaad7b
--- /dev/null
+++ b/completions/mdadm
@@ -0,0 +1,162 @@
+# bash completion for mdadm
+
+have mdadm &&
+{
+_mdadm_raid_level()
+{
+ local mode
+
+ for (( i=1; i < COMP_CWORD; i++ )); do
+ case ${COMP_WORDS[i]} in
+ -C|--create)
+ mode=create
+ break
+ ;;
+ -B|--build)
+ mode=build
+ break
+ ;;
+ esac
+ done
+
+ case $mode in
+ create)
+ COMPREPLY=( $( compgen -W 'linear raid0 0 stripe raid1 1 mirror \
+ raid4 4 raid5 5 raid6 6 raid10 10 multipath mp faulty' \
+ -- "$cur" ) )
+ ;;
+ build)
+ COMPREPLY=( $( compgen -W 'linear stripe raid0 0 raid1 multipath \
+ mp faulty' -- "$cur" ) )
+ ;;
+ esac
+}
+
+_mdadm_raid_layout()
+{
+ local level
+ for (( i=1; i < COMP_CWORD; i++ )); do
+ if [[ "${COMP_WORDS[i]}" == -@(l|-level) ]]; then
+ level=${COMP_WORDS[i+1]}
+ break
+ fi
+ done
+
+ case $level in
+ raid5)
+ COMPREPLY=( $( compgen -W 'left-asymmetric left-symmetric \
+ right-asymmetric right-symmetric la ra ls rs' -- "$cur" ) )
+ ;;
+ raid10)
+ COMPREPLY=( $( compgen -W 'n o p' -- "$cur" ) )
+ ;;
+ faulty)
+ COMPREPLY=( $( compgen -W 'write-transient wt read-transient rt \
+ write-persistent wp read-persistent rp write-all read-fixable \
+ rf clear flush none' -- $cur ) )
+ ;;
+ esac
+}
+
+_mdadm_auto_flag()
+{
+ COMPREPLY=( $( compgen -W 'no yes md mdp part p' -- "$cur" ) )
+}
+
+_mdadm_update_flag()
+{
+ COMPREPLY=( $( compgen -W 'sparc2.2 summaries uuid name homehost resync \
+ byteorder super-minor' -- "$cur" ) )
+}
+
+
+_mdadm()
+{
+ local cur prev mode options split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -c|--config|-b|--bitmap|--backup-file)
+ _filedir
+ return 0
+ ;;
+ -l|--level)
+ _mdadm_raid_level
+ return 0
+ ;;
+ -p|--layout|--parity)
+ _mdadm_raid_layout
+ return 0
+ ;;
+ -a|--auto)
+ _mdadm_auto_flag
+ return 0
+ ;;
+ -U|--update)
+ _mdadm_update_flag
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ options='--help --help-options --version --verbose --quiet \
+ --brief --force --config --scan --metadata --homehost'
+
+ if [[ "$cur" == -* ]]; then
+ if [[ $COMP_CWORD -eq 1 ]] ; then
+ COMPREPLY=( $( compgen -W "$options --assemble --build \
+ --create --monitor --grow" -- "$cur" ) )
+ else
+ case ${COMP_WORDS[COMP_CWORD-1]} in
+ -A|--assemble)
+ COMPREPLY=( $( compgen -W "$options --uuid \
+ --super-minor --name --force --run \
+ --no-degraded --auto --bitmap --backup-file \
+ --update --auto-update-homehost" -- "$cur" ) )
+ ;;
+ -B|-C|-G|--build|--create|--grow)
+ COMPREPLY=( $( compgen -W "$options --raid-devices \
+ --spare-devices --size --chunk --rounding \
+ --level --layout --parity --bitmap \
+ --bitmap-chunk --write-mostly --write-behind \
+ --assume-clean --backup-file --name --run \
+ --force --auto" -- "$cur" ) )
+ ;;
+ -F|--follow|--monitor)
+ COMPREPLY=( $( compgen -W "$options --mail --program \
+ --alert --syslog --delay --daemonise \
+ --pid-file --oneshot --test" -- "$cur" ) )
+
+ ;;
+ /dev/*|--add|--fail|--remove)
+ COMPREPLY=( $( compgen -W "$options --add --re-add \
+ --remove --fail --set-faulty" -- "$cur" ) )
+ ;;
+ *)
+ COMPREPLY=( $( compgen -W "$options --query --detail \
+ --examine --sparc2.2 --examine-bitmap --run \
+ --stop --readonly --readwrite \
+ --zero-superblock --test" -- "$cur" ) )
+ ;;
+ esac
+ fi
+ else
+ cur=${cur:=/dev/}
+ _filedir
+ fi
+}
+complete -F _mdadm mdadm
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/medusa b/completions/medusa
new file mode 100644
index 00000000..d8dcfe41
--- /dev/null
+++ b/completions/medusa
@@ -0,0 +1,41 @@
+# bash completion for medusa
+
+have medusa &&
+_medusa()
+{
+ local cur prev
+
+ COMPREPLY=()
+ cur=`_get_cword`
+ prev=`_get_pword`
+
+ case $prev in
+ -h)
+ _known_hosts_real "$cur"
+ return 0
+ ;;
+ -H|-U|-P|-C|-O)
+ _filedir
+ return 0
+ ;;
+ -M)
+ COMPREPLY=( $( compgen -W "$(medusa -d | awk '/^ +\+/ {print $2}' \
+ | sed -e 's/\.mod$//')" ) )
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-h -H -u -U -p -P -C -O -e -M -m -d -n -s \
+ -g -r -R -t -T -L -f -F -b -q -v -w -V -Z' -- "$cur" ) )
+ fi
+} &&
+complete -F _medusa medusa
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/minicom b/completions/minicom
new file mode 100644
index 00000000..76553317
--- /dev/null
+++ b/completions/minicom
@@ -0,0 +1,53 @@
+# bash completion for minicom
+
+have minicom &&
+_minicom()
+{
+ local cur prev confdir
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -a|-c)
+ COMPREPLY=( $( compgen -W 'on off' -- "$cur" ) )
+ return 0
+ ;;
+ -S|-C)
+ _filedir
+ return 0
+ ;;
+ -P)
+ COMPREPLY=( $( printf '%s\n' /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 -7 -8' -- "$cur" ) )
+ return 0
+ else
+ [ -n "$( command ls /etc/minirc.* 2>/dev/null)" ] \
+ && confdir=/etc
+ [ -n "$( command ls /etc/minicom/minirc.* 2>/dev/null)" ] \
+ && confdir=/etc/minicom
+ if [ -n "$confdir" ]; then
+ COMPREPLY=( $( compgen -W '$( printf "%s\n" $confdir/minirc.* | \
+ sed -e "s|$confdir/minirc.||")' -- "$cur" ) )
+ return 0
+ fi
+ fi
+} &&
+complete -F _minicom -o default minicom
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/mkinitrd b/completions/mkinitrd
new file mode 100644
index 00000000..48893471
--- /dev/null
+++ b/completions/mkinitrd
@@ -0,0 +1,59 @@
+# bash completion for mkinitrd
+
+have mkinitrd &&
+_mkinitrd()
+{
+ local cur prev args split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ --preload|--with|--builtin)
+ _modules
+ return 0
+ ;;
+ --fstab|--dsdt)
+ _filedir
+ return 0
+ ;;
+ --net-dev)
+ _available_interfaces
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--version --help -v -f --preload \
+ --force-scsi-probe --omit-scsi-modules \
+ --omit-ide-modules --image-version --force-raid-probe \
+ --omit-raid-modules --with --force-lvm-probe \
+ --omit-lvm-modules --builtin --omit-dmraid --net-dev \
+ --fstab --nocompress --dsdt --bootchart' -- "$cur" ) )
+ else
+ _count_args
+
+ case $args in
+ 1)
+ _filedir
+ ;;
+ 2)
+ _kernel_versions
+ ;;
+ esac
+ fi
+
+} &&
+complete -F _mkinitrd mkinitrd
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/module-init-tools b/completions/module-init-tools
new file mode 100644
index 00000000..bf2d24d1
--- /dev/null
+++ b/completions/module-init-tools
@@ -0,0 +1,61 @@
+# bash completion for Linux module-init-tools
+
+# Linux rmmod(8) completion. This completes on a list of all currently
+# installed kernel modules.
+#
+have rmmod &&
+_rmmod()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ _installed_modules "$cur"
+ return 0
+} &&
+complete -F _rmmod rmmod
+
+# Linux insmod(8), modprobe(8) and modinfo(8) completion. This completes on a
+# list of all available modules for the version of the kernel currently
+# running.
+#
+have insmod || have modprobe || have modinfo &&
+_insmod()
+{
+ local cur prev modpath
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ # behave like lsmod for modprobe -r
+ if [[ ${1##*/} == modprobe && "${COMP_WORDS[1]}" == -r ]]; then
+ _installed_modules "$cur"
+ return 0
+ fi
+
+ # do filename completion if we're giving a path to a module
+ if [[ "$cur" == */* ]]; then
+ _filedir '@(?(k)o?(.gz))'
+ return 0
+ fi
+
+ if [[ $COMP_CWORD -gt 1 && "${COMP_WORDS[COMP_CWORD-1]}" != -* ]]; then
+ # do module parameter completion
+ COMPREPLY=( $( compgen -W "$( /sbin/modinfo -p ${COMP_WORDS[1]} | \
+ cut -d: -f1 )" -- "$cur" ) )
+ else
+ _modules $(uname -r)
+ fi
+
+ return 0
+} &&
+complete -F _insmod insmod modprobe modinfo
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/monodevelop b/completions/monodevelop
new file mode 100644
index 00000000..69b23445
--- /dev/null
+++ b/completions/monodevelop
@@ -0,0 +1,86 @@
+# Monodevelop completion
+
+have monodevelop &&
+_monodevelop()
+{
+ local cur
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-? -help -help2 -ipc-tcp -newwindow -nologo \
+ -usage -V -version' -- "$cur" ) )
+ else
+ _filedir
+ fi
+ return 0
+} &&
+complete -F _monodevelop monodevelop
+
+have mdtool &&
+_mdtool()
+{
+ local cur prev command i
+
+ COMPREPLY=()
+
+ _get_comp_words_by_ref cur prev
+
+ for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do
+ if [[ ${COMP_WORDS[i]} == @(build|generate-makefiles|setup) ]]; then
+ command=${COMP_WORDS[i]}
+ fi
+ done
+
+ if [[ -n "$command" ]]; then
+ case $command in
+ "build")
+ COMPREPLY=( $( compgen -W '--f --buildfile --p --project' \
+ -S":" -- "$cur" ) )
+ # TODO: This does not work :(
+ #if [[ "$prev" == *: ]]; then
+ # case $prev in
+ # @(--p:|--project:))
+ # COMPREPLY=( $( compgen -f -G "*.mdp" -- "$cur" ) )
+ # ;;
+ # @(--f:|--buildfile:))
+ # COMPREPLY=( $( compgen -f -G "*.mdp" -G "*.mds" -- "$cur" ) )
+ # ;;
+ # esac
+ #fi
+ return 0
+ ;;
+ "generate-makefiles")
+ _compopt_o_filenames
+ COMPREPLY=( $( compgen -o filenames -G"*.mds" -- "$cur" ) )
+ if [[ "$prev" == *mds ]]; then
+ COMPREPLY=( $( compgen -W '--simple-makefiles --s --d:' \
+ -- "$cur" ) )
+ fi
+ return 0
+ ;;
+ "setup")
+ # TODO: at least return filenames after these options.
+ COMPREPLY=( $( compgen -W 'install i uninstall u check-install \
+ ci update up list l list-av la list-update lu rep-add ra \
+ rep-remove rr rep-update ru rep-list rl reg-update \
+ reg-build rgu info rep-build rb pack p help h dump-file' \
+ -- "$cur" ) )
+ return 0
+ ;;
+ esac
+ fi
+
+ COMPREPLY=( $( compgen -W 'gsetup build dbgen project-export \
+ generate-makefiles gettext-update setup -q' -- "$cur" ) )
+
+ return 0
+} &&
+complete -F _mdtool mdtool
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/mount b/completions/mount
new file mode 100644
index 00000000..b14eef3e
--- /dev/null
+++ b/completions/mount
@@ -0,0 +1,165 @@
+# mount(8) completion. This will pull a list of possible mounts out of
+# /etc/{,v}fstab, unless the word being completed contains a ':', which
+# would indicate the specification of an NFS server. In that case, we
+# query the server for a list of all available exports and complete on
+# that instead.
+#
+have mount &&
+{
+
+# Just like COMPREPLY=(`compgen -W "${COMPREPLY[*]}" -- "$cur"`), only better!
+#
+# This will correctly escape special characters in COMPREPLY.
+_reply_compgen_array()
+{
+ # Create the argument for compgen -W by escaping twice.
+ #
+ # One round of escape is because we want to reply with escaped arguments. A
+ # second round is required because compgen -W will helpfully expand it's
+ # argument.
+ local i wlist
+ for i in ${!COMPREPLY[*]}; do
+ local q=$(quote "$(printf %q "${COMPREPLY[$i]}")")
+ wlist+=$q$'\n'
+ done
+
+ # We also have to add another round of escaping to $cur.
+ local ecur="$cur"
+ ecur="${ecur//\\/\\\\}"
+ ecur="${ecur//\'/\'}"
+
+ # Actually generate completions.
+ local oldifs=$IFS
+ IFS=$'\n' eval 'COMPREPLY=(`compgen -W "$wlist" -- "${ecur}"`)'
+ IFS=$oldifs
+}
+
+# Unescape strings in the linux fstab(5) format (with octal escapes).
+__linux_fstab_unescape() {
+ eval $1="'${!1//\'/\047}'"
+ eval $1="'${!1/%\\/\\\\}'"
+ eval "$1=$'${!1}'"
+}
+
+# Complete linux fstab entries.
+#
+# Reads a file from stdin in the linux fstab(5) format; as used by /etc/fstab
+# and /proc/mounts.
+_linux_fstab()
+{
+ COMPREPLY=()
+
+ # Read and unescape values into COMPREPLY
+ local fs_spec fs_file fs_other
+ local oldifs="$IFS"
+ while read -r fs_spec fs_file fs_other; do
+ if [[ $fs_spec = [#]* ]]; then continue; fi
+ if [[ $1 == -L ]]; then
+ local fs_label=${fs_spec/#LABEL=}
+ if [[ $fs_label != "$fs_spec" ]]; then
+ __linux_fstab_unescape fs_label
+ IFS=$'\0'
+ COMPREPLY+=("$fs_label")
+ IFS=$oldifs
+ fi
+ else
+ __linux_fstab_unescape fs_spec
+ __linux_fstab_unescape fs_file
+ IFS=$'\0'
+ [[ $fs_spec = */* ]] && COMPREPLY+=("$fs_spec")
+ [[ $fs_file = */* ]] && COMPREPLY+=("$fs_file")
+ IFS=$oldifs
+ fi
+ done
+
+ _reply_compgen_array
+}
+
+_mount()
+{
+ local cur sm host prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref -n : cur prev
+
+ case $prev in
+ -t|--types)
+ _fstypes
+ return 0
+ ;;
+ esac
+
+ [[ "$cur" == \\ ]] && cur="/"
+
+ if [[ "$cur" == *:* ]]; then
+ for sm in "$(type -P showmount)" {,/usr}/{,s}bin/showmount; do
+ [ -x "$sm" ] || continue
+ COMPREPLY=( $( compgen -W "$( "$sm" -e ${cur%%:*} | \
+ awk 'NR>1 {print $1}' )" -- "${cur#*:}" ) )
+ return 0
+ done
+ fi
+
+ if [[ "$cur" == //* ]]; then
+ host=${cur#//}
+ host=${host%%/*}
+ if [ -n "$host" ]; then
+ COMPREPLY=( $( compgen -P "//$host" -W \
+ "$( smbclient -d 0 -NL $host 2>/dev/null |
+ sed -ne '/^['"$'\t '"']*Sharename/,/^$/p' |
+ sed -ne '3,$s|^[^A-Za-z]*\([^'"$'\t '"']*\).*$|/\1|p' )" \
+ -- "${cur#//$host}" ) )
+ fi
+ elif [ -r /etc/vfstab ]; then
+ # Solaris
+ COMPREPLY=( $( compgen -W "$( awk '! /^[ \t]*#/ {if ($3 ~ /\//) print $3}' /etc/vfstab )" -- "$cur" ) )
+ elif [ ! -e /etc/fstab ]; then
+ # probably Cygwin
+ COMPREPLY=( $( compgen -W "$( mount | awk '! /^[ \t]*#/ {if ($3 ~ /\//) print $3}' )" -- "$cur" ) )
+ else
+ # probably Linux
+ if [ "$prev" = -L ]; then
+ _linux_fstab -L < /etc/fstab
+ elif [ "$prev" = -U ]; then
+ COMPREPLY=( $( compgen -W '$(sed -ne "s/^[[:space:]]*UUID=\([^[:space:]]*\).*/\1/p" /etc/fstab )' -- "$cur" ) )
+ else
+ _linux_fstab < /etc/fstab
+ fi
+ fi
+
+ return 0
+} &&
+complete -F _mount -o default -o dirnames mount
+
+# umount(8) completion. This relies on the mount point being the third
+# space-delimited field in the output of mount(8)
+#
+have umount &&
+_umount()
+{
+ local cur
+ _get_comp_words_by_ref cur
+ COMPREPLY=()
+
+ if [[ $(uname -s) = Linux && -r /proc/mounts ]]; then
+ # Linux /proc/mounts is properly quoted. This is important when
+ # unmounting usb devices with pretty names.
+ _linux_fstab < /proc/mounts
+ else
+ local IFS=$'\n'
+ COMPREPLY=( $( compgen -W '$( mount | cut -d" " -f 3 )' -- "$cur" ) )
+ fi
+
+ return 0
+} &&
+complete -F _umount -o dirnames umount
+
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/mplayer b/completions/mplayer
new file mode 100644
index 00000000..39711370
--- /dev/null
+++ b/completions/mplayer
@@ -0,0 +1,269 @@
+# mplayer(1) completion
+
+have mplayer && {
+_mplayer_options_list()
+{
+ cur=${cur%\\}
+ COMPREPLY=( $( compgen -W "$( $1 -nomsgcolor -nomsgmodule $2 help 2>/dev/null | \
+ sed -e '/^Available/,/^$/!d' -e '/^Available/d' | awk '{print $1}' | \
+ sed -e 's/:$//' -e 's/^'${2#-}'$//' -e 's/<.*//' )" -- "$cur" ) )
+}
+
+_mplayer()
+{
+ local cmd cur prev i j k=0
+
+ COMPREPLY=()
+ cmd=${COMP_WORDS[0]}
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -[av][cfo]|-[av]fm|-vop|-fstype|-demuxer|-o[av]c|-of|-profile| \
+ -audio-demuxer|-sub-demuxer)
+ _mplayer_options_list $cmd $prev
+ return 0
+ ;;
+ -show-profile)
+ _mplayer_options_list $cmd -profile
+ return 0
+ ;;
+ -audiofile)
+ _filedir '@(mp3|mpg|ogg|w?(a)v|mid|flac|mka|ape)'
+ return 0
+ ;;
+ -font|-subfont)
+ if [ "$prev" = -font ]; then
+ _filedir '@(desc|ttf)'
+ else
+ _filedir ttf
+ fi
+ local IFS=$'\n'
+ COMPREPLY=( "${COMPREPLY[@]}"
+ $( compgen -W '$( fc-list 2>/dev/null )' -- "$cur" ) )
+ return 0
+ ;;
+ -sub)
+ _filedir '@(srt|sub|txt|utf|rar|mpsub|smi|js|ssa|ass)'
+ return 0
+ ;;
+ -vobsub)
+ _filedir '@(idx|ifo|sub)'
+ local IFS=$'\n'
+ COMPREPLY=( $( for i in "${COMPREPLY[@]}"; do
+ if [[ -f $i && -r $i ]]; then
+ printf '%s\n' ${i%.*}
+ else
+ printf '%s\n' $i
+ fi
+ done ) )
+ return 0
+ ;;
+ -ifo)
+ _filedir ifo
+ return 0
+ ;;
+ -cuefile)
+ _filedir '@(bin|cue)'
+ return 0
+ ;;
+ -skin)
+ # if you don't have installed mplayer in /usr you
+ # may want to set the MPLAYER_SKINS_DIR global variable
+ local -a dirs
+ if [ -n "$MPLAYER_SKINS_DIR" ]; then
+ dirs=($MPLAYER_SKINS_DIR)
+ else
+ dirs=(/usr/share/mplayer/skins /usr/local/share/mplayer/skins)
+ fi
+
+ local IFS=$'\n'
+ for i in ~/.mplayer/skins ${dirs[@]}; do
+ if [[ -d $i && -r $i ]]; then
+ for j in $( compgen -d $i/$cur ); do
+ COMPREPLY[$k]=${j#$i/}
+ k=$((++k))
+ done
+ fi
+ done
+ return 0
+ ;;
+ -cdrom-device)
+ _cd_devices
+ _dvd_devices
+ return 0
+ ;;
+ -dvd-device)
+ _filedir
+ return 0
+ ;;
+ -mixer|-dvdauth|-fb|-zrdev)
+ cur=${cur:=/dev/}
+ _filedir
+ return 0
+ ;;
+ -edl|-edlout|-lircconf|-menu-cfg|-playlist|-csslib|-dumpfile| \
+ -subfile|-vobsub|-aofile|-fbmodeconfig|-include|-o|-dvdkey| \
+ -passlogfile)
+ _filedir
+ return 0
+ ;;
+ -autoq|-autosync|-loop|-menu-root|-speed|-sstep|-aid|-alang| \
+ -bandwidth|-cache|-chapter| \
+ -dvd|-dvdangle|-fps|-frames|-mc|-passwd|-user|-sb|-srate|-ss|-vcd| \
+ -vi|-vid|-vivo|-ffactor|-sid|-slang|-spualign|-spuaa|-spugauss| \
+ -vobsubid|-delay|-bpp|-brightness|-contrast|-dfbopts|-display| \
+ -fbmode|-geometry|-guiwid|-hue|-icelayer|-screen[wh]|-wid| \
+ -monitoraspect|-monitor-dotclock|-monitor-[hv]freq|-panscan| \
+ -saturation|-xineramascreen|-zrcrop|-zrnorm|-zrquality| \
+ -zr[xy]doff|-zr[vh]dec|-aspect|-pp|-x|-y|-xy|-z|-stereo| \
+ -audio-density|-audio-delay|-audio-preload|-endpos|-osdlevel| \
+ -ffourcc|-sws|-channels|-skiplimit|-format|-ofps|-aadriver| \
+ -aaosdcolor|-aasubcolor|-vobsubout|-vobsuboutid|-vobsuboutindex| \
+ -sub-bg-alpha|-sub-bg-color|-sub-cp|-sub-delay|-sub-fps|-sub-pos| \
+ -sub-align|-sub-width|-subfont-blur|-subfont-outline| \
+ -subfont-autoscale|-subfont-encoding|-subfont-osd-scale| \
+ -subfont-osd-text)
+ return 0
+ ;;
+ -lavdopts)
+ COMPREPLY=( $( compgen -W 'bitexact bug= debug= ec= er= fast gray idct= lowres= sb= st= skiploopfilter= skipidct= skipframe= threads= vismv= vstats' -- "$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
+ ;;
+ -noconfig)
+ COMPREPLY=( $( compgen -W 'all gui system user' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ case $cur in
+ -*)
+ COMPREPLY=( $( compgen -W '$( $cmd -nomsgcolor -nomsgmodule -list-options 2>/dev/null | \
+ sed -ne '1,/^[[:space:]]*Name/d' \
+ -e "s/^[[:space:]]*/-/" -e "s/[[:space:]:].*//" \
+ -e "/^-\(Total\|.*\*\)\{0,1\}$/!p" )' -- "$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]|fxm|FXM|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|m[24]v|M[24]V|dv|DV|rmvb|RMVB|mid|MID|t[ps]|T[PS]|3g[p2]|3gpp?(2)|mpc|MPC|flac|FLAC|vro|VRO|divx|DIVX|aif?(f)|AIF?(F)|m2t?(s)|M2T?(S)|vdr|VDR|xvid|XVID|ape|APE|gif|GIF|nut|NUT|bik|BIK|webm|WEBM|amr|AMR|awb|AWB|iso|ISO)?(.part)'
+ ;;
+ esac
+
+ return 0
+}
+complete -F _mplayer mplayer mencoder gmplayer kplayer
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/msynctool b/completions/msynctool
new file mode 100644
index 00000000..3f9afb7f
--- /dev/null
+++ b/completions/msynctool
@@ -0,0 +1,51 @@
+# bash completion for msynctool
+
+have msynctool &&
+_msynctool()
+{
+ local cur prev anteprev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev anteprev
+
+ case $anteprev in
+ --configure)
+ COMPREPLY=( $( compgen -W "$(msynctool --showgroup \
+ $prev | awk '/^Member/ {print $2}' | sed \
+ -e 's/:$//' )" -- "$cur" ) )
+ return 0
+ ;;
+ --addmember)
+ COMPREPLY=( $( compgen -W '$(msynctool --listplugins \
+ | sed -e '1d' )' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ case $prev in
+ --configure|--addgroup|--delgroup|--showgroup|--sync|--addmember)
+ COMPREPLY=( $( compgen -W '$(msynctool --listgroups \
+ | sed -e '1d' )' -- "$cur" ) )
+ return 0
+ ;;
+ --showformats|--filter-objtype|--slow-sync)
+ COMPREPLY=( $( compgen -W '$(msynctool --listobjects \
+ | sed -e '1d' )' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ COMPREPLY=( $( compgen -W '--listgroups --listplugins --listobjects \
+ --showformats --showgroup --sync --filter-objtype --slow-sync \
+ --wait --multi --addgroup --delgroup --addmember --configure \
+ --manual --configdir --conflict' -- "$cur" ) )
+} &&
+complete -F _msynctool msynctool
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/mtx b/completions/mtx
new file mode 100644
index 00000000..0454f032
--- /dev/null
+++ b/completions/mtx
@@ -0,0 +1,51 @@
+# mtx completion by Jon Middleton <jjm@ixtab.org.uk>
+
+have mtx &&
+_mtx()
+{
+ local cur prev options tapes drives
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ options="-f nobarcode invert noattach --version inquiry noattach \
+ inventory status load unload eepos first last next"
+
+ tapes=$(mtx status | \
+ awk '/Storage Element [0-9]+:Full/ { printf "%s ", $3 }')
+ tapes=${tapes//:Full}
+
+ drives=$(mtx status | \
+ awk '/Data Transfer Element [0-9]+:(Full|Empty)/ { printf "%s ", $4 }')
+ drives=${drives//:Full}
+ drives=${drives//:Empty}
+
+ if [ $COMP_CWORD -gt 1 ]; then
+ case $prev in
+ load)
+ COMPREPLY=( $( compgen -W "$tapes" -- "$cur" ) )
+ ;;
+ unload|first|last|next)
+ COMPREPLY=( $( compgen -W "$drives" -- "$cur" ) )
+ ;;
+ -f)
+ true
+ ;;
+ *)
+ true
+ ;;
+ esac
+ else
+ COMPREPLY=( $( compgen -W "$options" -- "$cur" ) )
+ fi
+ return 0
+} &&
+complete -F _mtx mtx
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/munin-node b/completions/munin-node
new file mode 100644
index 00000000..abf2b0f6
--- /dev/null
+++ b/completions/munin-node
@@ -0,0 +1,113 @@
+# bash completion for munin node
+
+have munin-run &&
+_munin_run()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ --config|--sconffile)
+ _filedir
+ return 0
+ ;;
+ --servicedir|--sconfdir)
+ _filedir -d
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--config --servicedir --sconfdir \
+ --sconffile --help --debug --version' -- "$cur" ) )
+ else
+ COMPREPLY=( $( compgen -W '$( command ls /etc/munin/plugins )' \
+ -- "$cur" ) )
+ fi
+} &&
+complete -F _munin_run munin-run
+
+have munindoc &&
+_munindoc()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ COMPREPLY=( $( compgen -W '$( command ls /usr/share/munin/plugins )' \
+ -- "$cur" ) )
+} &&
+complete -F _munindoc munindoc
+
+have munin-update &&
+_munin_update()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ --config)
+ _filedir
+ return 0
+ ;;
+ --host)
+ _known_hosts_real "$cur"
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--force-root --[no]force-root \
+ --service --host --config --help --debug --nodebug \
+ --fork --nofork --stdout --nostdout --timeout' -- "$cur" ) )
+ fi
+} &&
+complete -F _munin_update munin-update
+
+have munin-node-configure &&
+_munin_node_configure()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ --config)
+ _filedir
+ return 0
+ ;;
+ --servicedir|--libdir)
+ _filedir -d
+ return 0
+ ;;
+ --snmp)
+ _known_hosts_real "$cur"
+ return 0
+ ;;
+ --snmpversion)
+ COMPREPLY=( $( compgen -W '1 2c 3' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--help --version --debug --config \
+ --servicedir --libdir --families --suggest --shell \
+ --remove-also --snmp --snmpversion --snmpcommunity' -- "$cur" ) )
+ fi
+} &&
+complete -F _munin_node_configure munin-node-configure
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/mutt b/completions/mutt
new file mode 100644
index 00000000..e5e9d289
--- /dev/null
+++ b/completions/mutt
@@ -0,0 +1,186 @@
+# 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 && {
+
+# @param $1 (cur) Current word to complete
+_muttaddr()
+{
+ _muttaliases "$1"
+ _muttquery "$1"
+
+ COMPREPLY=( "${COMPREPLY[@]}" $( compgen -u -- "$1" ) )
+
+ return 0
+} # _muttaddr()
+
+
+# Find muttrc to use
+# @output muttrc filename
+_muttrc()
+{
+ # Search COMP_WORDS for '-F muttrc' or '-Fmuttrc' argument
+ set -- "${COMP_WORDS[@]}"
+ while [ $# -gt 0 ]; do
+ if [ "${1:0:2}" = -F ]; then
+ if [ ${#1} -gt 2 ]; then
+ muttrc="$(dequote "${1:2}")"
+ else
+ shift
+ [ "$1" ] && muttrc="$(dequote "$1")"
+ fi
+ break
+ fi
+ shift
+ done
+
+ if [ -z "$muttrc" ]; then
+ if [ -f ~/.${muttcmd}rc ]; then
+ muttrc="~/.${muttcmd}rc"
+ elif [ -f ~/.${muttcmd}/${muttcmd}rc ]; then
+ muttrc="~/.${muttcmd}/${muttcmd}rc"
+ fi
+ fi
+ printf "%s" "$muttrc"
+} # _muttrc()
+
+
+# Recursively build list of sourced config files
+# @param $1 List of config files found so far
+# @param $2 Config file to process
+# @output List of config files
+_muttconffiles()
+{
+ local file sofar
+ local -a newconffiles
+
+ sofar=" $1 "
+ shift
+ while [[ "$1" ]]; do
+ newconffiles=( $(sed -n 's|^source[[:space:]]\{1,\}\([^[:space:]]\{1,\}\).*$|\1|p' $(eval echo $1) ) )
+ for file in "${newconffiles[@]}"; do
+ [[ ! -f "$file" || "${sofar/ ${file} / }" != "$sofar" ]] &&
+ continue
+ sofar="$sofar $file"
+ sofar=" $(eval _muttconffiles \"$sofar\" $file) "
+ done
+ shift
+ done
+ printf '%s\n' $sofar
+} # _muttconffiles()
+
+
+# @param $1 (cur) Current word to complete
+_muttaliases()
+{
+ local cur=$1 muttrc muttcmd=${COMP_WORDS[0]}
+ local -a conffiles aliases
+
+ muttrc=$(_muttrc)
+ [ -z "$muttrc" ] && return 0
+
+ conffiles=( $(eval _muttconffiles $muttrc $muttrc) )
+ aliases=( $( sed -n 's|^alias[[:space:]]\{1,\}\([^[:space:]]\{1,\}\).*$|\1|p' \
+ $(eval echo "${conffiles[@]}") ) )
+ COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "${aliases[*]}" -- "$cur" ) )
+
+ return 0
+}
+
+
+# @param $1 (cur) Current word to complete
+_muttquery()
+{
+ local cur=$1 querycmd muttcmd=${COMP_WORDS[0]}
+ local -a queryresults
+
+ querycmd="$( $muttcmd -Q query_command | sed -e 's|^query_command=\"\(.*\)\"$|\1|' -e 's|%s|'$cur'|' )"
+ if [[ -z "$cur" || -z "$querycmd" ]]; then
+ queryresults=()
+ else
+ queryresults=( $( $querycmd | \
+ sed -n '2,$s|^\([^[:space:]]\{1,\}\).*|\1|p' ) )
+ fi
+
+ COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "${queryresults[*]}" \
+ -- "$cur" ) )
+
+ return 0
+}
+
+
+# @param $1 (cur) Current word to complete
+_muttfiledir()
+{
+ local cur=$1 folder muttrc spoolfile muttcmd=${COMP_WORDS[0]}
+
+ muttrc=$(_muttrc)
+ if [[ $cur == [=+]* ]]; then
+ folder="$( $muttcmd -F "$muttrc" -Q folder | sed -e 's|^folder=\"\(.*\)\"$|\1|' )"
+ : folder:=~/Mail
+
+ # Match any file in $folder beginning with $cur
+ # (minus the leading '=' sign).
+ _compopt_o_filenames
+ COMPREPLY=( $( compgen -f -- "$folder/${cur:1}" ) )
+ COMPREPLY=( ${COMPREPLY[@]#$folder/} )
+ return 0
+ elif [ "$cur" == !* ]; then
+ spoolfile="$( $muttcmd -F "$muttrc" -Q spoolfile | \
+ sed -e 's|^spoolfile=\"\(.*\)\"$|\1|' )"
+ [ ! -z "$spoolfile" ] && eval cur="${cur/^!/$spoolfile}";
+ fi
+ _filedir
+
+ return 0
+} # _muttfiledir
+
+
+_mutt()
+{
+ local cur prev
+ _get_comp_words_by_ref -n =+! cur prev
+ #cur=`_get_cword =+!`
+ #prev=`_get_pword =+!`
+
+ COMPREPLY=()
+
+ 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 "$cur"
+ return 0
+ ;;
+ -A)
+ _muttaliases "$cur"
+ return 0
+ ;;
+ -e|-m|-Q|-s|-h|-p|-R|-v|-y|-z|-Z)
+ return 0
+ ;;
+ *)
+ _muttaddr "$cur"
+ return 0
+ ;;
+ esac
+ ;;
+ esac
+} # _mutt()
+complete -F _mutt -o default mutt muttng
+} # have mutt
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/mysqladmin b/completions/mysqladmin
new file mode 100644
index 00000000..c9415696
--- /dev/null
+++ b/completions/mysqladmin
@@ -0,0 +1,71 @@
+# bash completion for mysqladmin
+
+have mysqladmin &&
+_mysqladmin()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -u|--user)
+ COMPREPLY=( $( compgen -u -- "$cur" ) )
+ return 0
+ ;;
+ -h|--host)
+ _known_hosts_real "$cur"
+ return 0
+ ;;
+ --character-sets-dir|--ssl-capath)
+ _filedir -d
+ return 0
+ ;;
+ -S|--socket)
+ _filedir sock
+ return 0
+ ;;
+ --defaults-file|--defaults-extra-file)
+ _filedir
+ return 0
+ ;;
+ -c|--count|--default-character-set|-P|--port|-O|--set-variable|\
+ -i|--sleep|--ssl-ca|--ssl-cert|--ssl-cipher|--ssl-key|-w|--wait|\
+ --connect_timeout|--shutdown_timeout)
+ # Argument required but no completions available
+ return 0
+ ;;
+ '-?'|--help|-V|--version)
+ # All other options are noop with these
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ COMPREPLY=( $( compgen -W '--count --debug-check --debug-info --force \
+ --compress --character-sets-dir --default-character-set --help --host \
+ --no-beep --password --port --protocol --relative --set-variable \
+ --silent --socket --sleep --ssl --ssl-ca --ssl-capath --ssl-cert \
+ --ssl-cipher --ssl-key --ssl-verify-server-cert --user --verbose \
+ --version --vertical --wait --connect_timeout --shutdown_timeout \
+ --print-defaults --no-defaults --defaults-file --defaults-extra-file' \
+ -- "$cur" ) )
+
+ COMPREPLY=( "${COMPREPLY[@]}" \
+ $( compgen -W 'create debug drop extended-status flush-hosts \
+ flush-logs flush-status flush-tables flush-threads flush-privileges \
+ kill password old-password ping processlist reload refresh shutdown \
+ status start-slave stop-slave variables version' -- "$cur" ) )
+} &&
+complete -F _mysqladmin mysqladmin
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/ncftp b/completions/ncftp
new file mode 100644
index 00000000..b831f444
--- /dev/null
+++ b/completions/ncftp
@@ -0,0 +1,26 @@
+# bash completion for ncftp
+
+have ncftp &&
+_ncftp()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ 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 -o default ncftp
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/net-tools b/completions/net-tools
new file mode 100644
index 00000000..e7de2b04
--- /dev/null
+++ b/completions/net-tools
@@ -0,0 +1,131 @@
+# bash completion for net tools
+
+have mii-tool &&
+_mii_tool()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -F|--force)
+ COMPREPLY=( $( compgen -W '100baseTx-FD 100baseTx-HD \
+ 10baseT-FD 10baseT-HD' -- "$cur" ) )
+ return 0
+ ;;
+ -A|--advertise)
+ COMPREPLY=( $( compgen -W '100baseT4 100baseTx-FD 100baseTx-HD \
+ 10baseT-FD 10baseT-HD' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--verbose --version --reset --restart \
+ --watch --log --advertise --force' -- "$cur" ) )
+ else
+ _available_interfaces -a
+ fi
+} &&
+complete -F _mii_tool -o default mii-tool
+
+have mii-diag &&
+_mii_diag()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -F|-A|--advertise|--fixed-speed)
+ COMPREPLY=( $( compgen -W '100baseT4 100baseTx \
+ 100baseTx-FD 100baseTx-HD 10baseT 10baseT-FD \
+ 10baseT-HD' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--advertise --fixed-speed --all-interfaces \
+ --status --debug --read-parameters --set-parameters --msg-level \
+ --phy --restart --reset --verbose --version --watch --help' \
+ -- "$cur" ) )
+ else
+ _available_interfaces -a
+ fi
+} &&
+complete -F _mii_diag -o default mii-diag
+
+# Linux route(8) completion
+#
+[ $UNAME = Linux ] && have route &&
+_route()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ if [ "$prev" = dev ]; then
+ _available_interfaces
+ return 0
+ fi
+
+ # Remove already given options from completions
+ local i found
+ for opt in add del -host -net netmask metric mss window irtt reject mod \
+ dyn reinstate dev default gw; do
+ found=false
+ for (( i=1; i < ${#COMP_WORDS[@]}-1; i++ )); do
+ [ "${COMP_WORDS[i]}" = "$opt" ] && found=true && break
+ done
+ $found || COMPREPLY[${#COMPREPLY[@]}]="$opt"
+ done
+
+ COMPREPLY=( $( compgen -W '"${COMPREPLY[@]}"' -- "$cur" ) )
+} &&
+complete -F _route route
+
+have ether-wake &&
+_ether_wake()
+{
+ COMPREPLY=()
+ local cur prev
+ _get_comp_words_by_ref -n : cur prev
+
+ case $prev in
+ -i)
+ _available_interfaces
+ return 0
+ ;;
+ -p)
+ return 0
+ ;;
+ esac
+
+ if [[ $cur == -* ]]; then
+ COMPREPLY=( $( compgen -W '-b -D -i -p -V' -- "$cur" ) )
+ return 0
+ fi
+
+ _mac_addresses
+} &&
+complete -F _ether_wake ether-wake
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/nmap b/completions/nmap
new file mode 100644
index 00000000..19f0a07e
--- /dev/null
+++ b/completions/nmap
@@ -0,0 +1,60 @@
+# bash completion for nmap
+
+have nmap &&
+_nmap()
+{
+ local cur prev
+
+ COMPREPLY=()
+ cur=`_get_cword`
+ prev=`_get_pword`
+
+ case $prev in
+ -iL|-oN|-oX|-oS|-oG|---excludefile|--resume|--stylesheet)
+ _filedir
+ return 0
+ ;;
+ -oA|--datadir)
+ _filedir -d
+ return 0
+ ;;
+ -e)
+ _available_interfaces
+ return 0
+ ;;
+ -b|--dns-servers)
+ _known_hosts_real "$cur"
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-iL -iR --exclude --excludefile -sL -sP \
+ -PN -PS -PA -PU -PY -PE -PP -PM -PO -n -R --dns-servers \
+ --system-dns --traceroute -sS -sT -sA -sW -sM -sU -sN -sF -sX \
+ --scanflags -sI -sY -sZ -sO -b -p -F -r --top-ports --port-ratio \
+ -sV --version-intensity --version-light --version-all \
+ --version-trace -sC --script= --script-args= --script-trace \
+ --script-updatedb -O --osscan-limit --osscan-guess -T0 -T1 -T2 -T3 \
+ -T4 -T5 --min-hostgroup --max-hostgroup --min-parallelism \
+ --max-parallelism --min-rtt-timeout --max-rtt-timeout \
+ --initial-rtt-timeout --max-retries --host-timeout --scan-delay \
+ --max-scan-delay --min-rate --max-rate -f --mtu -D -S -e \
+ --source-port --data-length --ip-options --ttl --spoof-mac \
+ --badsum --adler32 -oN -oX -oS -oG -oA -v -d --reason --open \
+ --packet-trace --iflist --log-errors --append-output --resume \
+ --stylesheet --webxml --no-stylesheet -6 -A --datadir --send-eth \
+ --send-ip --privilege--unprivileged -V -h' -- "$cur" ) )
+ else
+ _known_hosts_real "$cur"
+ fi
+} &&
+complete -F _nmap nmap
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/ntpdate b/completions/ntpdate
new file mode 100644
index 00000000..bf004b55
--- /dev/null
+++ b/completions/ntpdate
@@ -0,0 +1,37 @@
+# bash completion for ntpdate
+
+have ntpdate &&
+_ntpdate()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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_real "$cur"
+ fi
+} &&
+complete -F _ntpdate ntpdate
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/open-iscsi b/completions/open-iscsi
new file mode 100644
index 00000000..8c650d59
--- /dev/null
+++ b/completions/open-iscsi
@@ -0,0 +1,78 @@
+# iscsiadm(1) completion
+
+have iscsiadm &&
+_iscsiadm()
+{
+ local cur prev mode split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -m|--mode)
+ COMPREPLY=( $( compgen -W 'discovery node session iface fw host' \
+ -- "$cur" ) )
+ return 0;
+ ;;
+ -o|--op)
+ COMPREPLY=( $( compgen -W 'new delete update show' -- "$cur" ) )
+ return 0;
+ ;;
+ -t|--type)
+ COMPREPLY=( $( compgen -W 'sendtargets st slp isns fw' -- "$cur" ) )
+ return 0;
+ ;;
+ -L|-U|--loginall|--logoutall)
+ COMPREPLY=( $( compgen -W 'all manual automatic' -- "$cur" ) )
+ return 0;
+ ;;
+ esac
+
+ $split && return 0
+
+ local options
+ if [[ $COMP_CWORD -gt 1 ]] ; then
+ mode=${COMP_WORDS[2]}
+
+ case $mode in
+ discovery)
+ options='--help --version --debug --print --interface --type \
+ --portal --login --op --name --value'
+ ;;
+ node)
+ options='--help --version --debug --print --loginall \
+ --logoutall--show -T --portal --interface --login \
+ --logout --rescan --stats --op --name --value'
+ ;;
+ session)
+ options='--help --version --debug --print --sid --logout \
+ --rescan --stats'
+ ;;
+ iface)
+ options='--help --version --debug --print --interface --op \
+ --name --value'
+ ;;
+ fw)
+ options='--login'
+ ;;
+ host)
+ options='--print -H'
+ ;;
+ esac
+ else
+ options='--mode'
+ fi
+
+ COMPREPLY=( $( compgen -W "$options" -- "$cur" ) )
+} &&
+complete -F _iscsiadm iscsiadm
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/openldap b/completions/openldap
new file mode 100644
index 00000000..e4bbba1f
--- /dev/null
+++ b/completions/openldap
@@ -0,0 +1,266 @@
+# bash completion for openldap
+
+have ldapsearch && {
+_ldap_uris()
+{
+ COMPREPLY=( $( compgen -W 'ldap:// ldaps://' -- "$cur" ) )
+}
+
+_ldap_protocols()
+{
+ COMPREPLY=( $( compgen -W '2 3' -- "$cur" ) )
+}
+
+_ldapsearch()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -h)
+ _known_hosts_real "$cur"
+ return 0
+ ;;
+ -H)
+ _ldap_uris
+ return 0
+ ;;
+ -T)
+ _filedir -d
+ return 0
+ ;;
+ -f|-y)
+ _filedir
+ return 0
+ ;;
+ -s)
+ COMPREPLY=( $( compgen -W 'base one sub children' -- "$cur" ) )
+ return 0
+ ;;
+ -a)
+ COMPREPLY=( $( compgen -W 'never always search find' \
+ -- "$cur" ) )
+ return 0
+ ;;
+ -P)
+ _ldap_protocols
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-n -u -v -t -tt -T -F -A -C -L -LL \
+ -LLL -M -MM -S -d -f -x -D -W -w -y -H -h -p -b -s -a \
+ -P -e -E -l -z -O -I -Q -U -R -X -Y -Z -ZZ' -- "$cur" ) )
+ fi
+}
+complete -F _ldapsearch ldapsearch
+
+_ldapaddmodify()
+{
+ local cur prev options
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -h)
+ _known_hosts_real "$cur"
+ return 0
+ ;;
+ -H)
+ _ldap_uris
+ return 0
+ ;;
+ -S|-f|-y)
+ _filedir
+ return 0
+ ;;
+ -P)
+ _ldap_protocols
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ options='-c -S -n -v -M -MM -d -D -W -w -y -h -H -p -P -O -I \
+ -Q -U -R -x -X -Y -Z -ZZ -f'
+ if [[ ${COMP_WORDS[0]} == ldapmodify ]]; then
+ options="$options -a"
+ fi
+ COMPREPLY=( $( compgen -W "$options" -- "$cur" ) )
+ fi
+}
+complete -F _ldapaddmodify ldapadd ldapmodify
+
+_ldapdelete()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -h)
+ _known_hosts_real "$cur"
+ return 0
+ ;;
+ -H)
+ _ldap_uris
+ return 0
+ ;;
+ -f|-y)
+ _filedir
+ return 0
+ ;;
+ -P)
+ _ldap_protocols
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-n -v -c -M -MM -d -f -D -W -w -y \
+ -H -h -P -p -O -U -R -r -x -I -Q -X -Y -Z -ZZ' -- "$cur" ) )
+ fi
+}
+complete -F _ldapdelete ldapdelete
+
+_ldapcompare()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -h)
+ _known_hosts_real "$cur"
+ return 0
+ ;;
+ -H)
+ _ldap_uris
+ return 0
+ ;;
+ -y)
+ _filedir
+ return 0
+ ;;
+ -P)
+ _ldap_protocols
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-n -v -z -M -MM -d -D -W -w -y \
+ -H -h -P -p -O -I -Q -U -R -x -X -Y -Z -ZZ' -- "$cur" ) )
+ fi
+}
+complete -F _ldapcompare ldapcompare
+
+_ldapmodrdn()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -h)
+ _known_hosts_real "$cur"
+ return 0
+ ;;
+ -H)
+ _ldap_uris
+ return 0
+ ;;
+ -f|-y)
+ _filedir
+ return 0
+ ;;
+ -P)
+ _ldap_protocols
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-r -s -n -v -c -M -MM -d -D -W -w \
+ -y -H -h -P -p -O -I -Q -U -R -x -X -Y -Z -ZZ -f' -- "$cur" ) )
+ fi
+}
+complete -F _ldapmodrdn ldapmodrdn
+
+_ldapwhoami()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -h)
+ _known_hosts_real "$cur"
+ return 0
+ ;;
+ -H)
+ _ldap_uris
+ return 0
+ ;;
+ -f|-y)
+ _filedir
+ return 0
+ ;;
+ -P)
+ _ldap_protocols
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-n -v -z -d -D -W -w -y -H -h -p -P \
+ -O -I -Q -U -R -x -X -Y -Z -ZZ' -- "$cur" ) )
+ fi
+}
+complete -F _ldapwhoami ldapwhoami
+
+_ldappasswd()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -h)
+ _known_hosts_real "$cur"
+ return 0
+ ;;
+ -H)
+ _ldap_uris
+ return 0
+ ;;
+ -t|-T|-y)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-A -a -t -d -D -H -h -n -p -S -s -T \
+ -v -W -w -y -O -I -Q -U -R -x -X -Y -Z -ZZ' -- "$cur" ) )
+ fi
+}
+complete -F _ldappasswd ldappasswd
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/openssl b/completions/openssl
new file mode 100644
index 00000000..e9796e6f
--- /dev/null
+++ b/completions/openssl
@@ -0,0 +1,254 @@
+# bash completion for openssl
+
+have openssl && {
+_openssl_sections()
+{
+ local config f
+
+ # check if a specific configuration file is used
+ for (( i=2; i < COMP_CWORD; i++ )); do
+ if [[ "${COMP_WORDS[i]}" == -config ]]; then
+ config=${COMP_WORDS[i+1]}
+ break
+ fi
+ done
+
+ # if no config given, check some usual default locations
+ if [ -z "$config" ]; then
+ for f in /etc/ssl/openssl.cnf /etc/pki/tls/openssl.cnf \
+ /usr/share/ssl/openssl.cnf; do
+ [ -f $f ] && config=$f && break
+ done
+ fi
+
+ [ ! -f "$config" ] && return 0
+
+ COMPREPLY=( $( compgen -W "$( awk '/\[.*\]/ {print $2}' $config )" \
+ -- "$cur" ) )
+}
+
+_openssl()
+{
+ local cur prev commands command options formats
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ commands='asn1parse ca ciphers crl crl2pkcs7 dgst dh dhparam dsa \
+ dsaparam ec ecparam enc engine errstr gendh gendsa genrsa \
+ nseq ocsp passwd pkcs12 pkcs7 pkcs8 prime rand req rsa \
+ rsautl s_client s_server s_time sess_id smime speed spkac \
+ verify version x509 md2 md4 md5 rmd160 sha sha1 aes-128-cbc \
+ aes-128-ecb aes-192-cbc aes-192-ecb aes-256-cbc aes-256-ecb \
+ base64 bf bf-cbc bf-cfb bf-ecb bf-ofb camellia-128-cbc \
+ camellia-128-ecb camellia-192-cbc camellia-192-ecb \
+ camellia-256-cbc camellia-256-ecb 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'
+
+ if [ $COMP_CWORD -eq 1 ]; then
+ COMPREPLY=( $( compgen -W "$commands" -- "$cur" ) )
+ else
+ command=${COMP_WORDS[1]}
+ case $prev in
+ -CA|-CAfile|-CAkey|-CAserial|-cert|-certfile|-config|-content| \
+ -dcert|-dkey|-dhparam|-extfile|-in|-inkey|-kfile|-key|-keyout| \
+ -out|-oid|-prvrify|-rand|-recip|-revoke|-sess_in|-sess_out| \
+ -spkac|-sign|-signkey|-signer|-signature|-ss_cert|-untrusted| \
+ -verify)
+ _filedir
+ return 0
+ ;;
+ -outdir|-CApath)
+ _filedir -d
+ return 0
+ ;;
+ -name|-crlexts|-extensions)
+ _openssl_sections
+ return 0
+ ;;
+ -inform|-outform|-keyform|-certform|-CAform|-CAkeyform|-dkeyform|-dcertform)
+ formats='DER PEM'
+ case $command in
+ x509)
+ formats="$formats NET"
+ ;;
+ smime)
+ formats="$formats SMIME"
+ ;;
+ esac
+ COMPREPLY=( $( compgen -W "$formats" -- "$cur" ) )
+ return 0
+ ;;
+ -connect)
+ _known_hosts_real "$cur"
+ return 0
+ ;;
+ -starttls)
+ COMPREPLY=( $( compgen -W 'smtp pop3 imap ftp' \
+ -- "$cur" ) )
+ return 0
+ ;;
+ -cipher)
+ COMPREPLY=( $( compgen -W "$(openssl ciphers | \
+ tr ':' '\n')" -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ # possible options for the command
+ case $command in
+ asn1parse)
+ options='-inform -in -out -noout -offset -length -i -oid \
+ -strparse'
+ ;;
+ ca)
+ options='-verbose -config -name -gencrl -revoke \
+ -crl_reason -crl_hold -crl_compromise \
+ -crl_CA_compromise -crldays -crlhours -crlexts \
+ -startdate -enddate -days -md -policy -keyfile -key \
+ -passin -cert -selfsig -in -out -notext -outdir \
+ -infiles -spkac -ss_cert -preserveDN -noemailDN \
+ -batch -msie_hack -extensions -extfile -engine \
+ -subj -utf8 -multivalue-rdn'
+ ;;
+ ciphers)
+ options='-v -ssl2 -ssl3 -tls1'
+ ;;
+ crl)
+ options='-inform -outform -text -in -out -noout -hash \
+ -issuer -lastupdate -nextupdate -CAfile -CApath'
+ ;;
+ crl2pkcs7)
+ options='-inform -outform -in -out -print_certs'
+ ;;
+ dgst)
+ options='-md5 -md4 -md2 -sha1 -sha -mdc2 -ripemd160 -dss1 \
+ -c -d -hex -binary -out -sign -verify -prverify \
+ -signature'
+ ;;
+ dsa)
+ options='-inform -outform -in -passin -out -passout -des \
+ -des3 -idea -text -noout -modulus -pubin -pubout'
+ ;;
+ dsaparam)
+ options='-inform -outform -in -out -noout -text -C -rand \
+ -genkey'
+ ;;
+ enc)
+ options='-ciphername -in -out -pass -e -d -a -A -k -kfile \
+ -S -K -iv -p -P -bufsize -debug'
+ ;;
+ dhparam)
+ options='-inform -outform -in -out -dsaparam -noout -text \
+ -C -2 -5 -rand'
+ ;;
+ gendsa)
+ options='-out -des -des3 -idea -rand'
+ ;;
+ genrsa)
+ options='-out -passout -des -des3 -idea -f4 -3 -rand'
+ ;;
+ pkcs7)
+ options='-inform -outform -in -out -print_certs -text \
+ -noout'
+ ;;
+ rand)
+ options='-out -rand -base64'
+ ;;
+ req)
+ options='-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'
+ ;;
+ rsa)
+ options='-inform -outform -in -passin -out -passout \
+ -sgckey -des -des3 -idea -text -noout -modulus -check \
+ -pubin -pubout -engine'
+ ;;
+ rsautl)
+ options='-in -out -inkey -pubin -certin -sign -verify \
+ -encrypt -decrypt -pkcs -ssl -raw -hexdump -asn1parse'
+ ;;
+ s_client)
+ options='-connect -verify -cert -certform -key -keyform \
+ -pass -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 -tlsextdebug \
+ -no_ticket -sess_out -sess_in -rand'
+ ;;
+ s_server)
+ options='-accept -context -verify -Verify -crl_check \
+ -crl_check_all -cert -certform -key -keyform -pass \
+ -dcert -dcertform -dkey -dkeyform -dpass -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 -tlsextdebug \
+ -no_ticket -id_prefix -rand'
+ ;;
+ s_time)
+ options='-connect -www -cert -key -CApath -CAfile -reuse \
+ -new -verify -nbio -time -ssl2 -ssl3 -bugs -cipher'
+ ;;
+ sess_id)
+ options='-inform -outform -in -out -text -noout -context \
+ ID'
+ ;;
+ smime)
+ options='-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'
+ ;;
+ speed)
+ options='-engine'
+ ;;
+ verify)
+ options='-CApath -CAfile -purpose -untrusted -help \
+ -issuer_checks -verbose -certificates'
+ ;;
+ x509)
+ options='-inform -outform -keyform -CAform -CAkeyform -in \
+ -out -serial -hash -subject_hash -issuer_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'
+ ;;
+ md5|md4|md2|sha1|sha|mdc2|ripemd160)
+ options='-c -d'
+ ;;
+ esac
+ COMPREPLY=( $( compgen -W "$options" -- "$cur" ) )
+ else
+ if [[ "$command" == speed ]]; then
+ 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" ) )
+ else
+ _filedir
+ fi
+ fi
+ fi
+}
+complete -F _openssl -o default openssl
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/p4 b/completions/p4
new file mode 100644
index 00000000..59b02c1d
--- /dev/null
+++ b/completions/p4
@@ -0,0 +1,58 @@
+# Perforce completion by Frank Cusack <frank@google.com>
+
+have p4 &&
+_p4()
+{
+ local cur prev words cword p4commands p4filetypes
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev words cword
+
+ # rename isn't really a command
+ p4commands="$( p4 help commands | awk 'NF>3 {print $1}' )"
+ p4filetypes="ctext cxtext ktext kxtext ltext tempobj ubinary \
+ uresource uxbinary xbinary xltext xtempobj xtext \
+ text binary resource"
+
+ if [ $cword -eq 1 ]; then
+ COMPREPLY=( $( compgen -W "$p4commands" -- "$cur" ) )
+ elif [ $cword -eq 2 ]; then
+ case $prev in
+ help)
+ COMPREPLY=( $( compgen -W "simple commands \
+ environment filetypes jobview revisions \
+ usage views $p4commands" -- "$cur" ) )
+ ;;
+ admin)
+ COMPREPLY=( $( compgen -W "checkpoint stop" -- "$cur" ) )
+ ;;
+ *)
+ ;;
+ esac
+ elif [ $cword -gt 2 ]; then
+ case $prev in
+ -t)
+ case ${words[$cword-2]} in
+ add|edit|reopen)
+ COMPREPLY=( $( compgen -W "$p4filetypes" -- "$cur") )
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+ fi
+
+ return 0
+} &&
+complete -F _p4 -o default p4 g4
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/perl b/completions/perl
new file mode 100644
index 00000000..843e249b
--- /dev/null
+++ b/completions/perl
@@ -0,0 +1,131 @@
+# bash completion for perl
+
+have perl &&
+{
+_perlmodules()
+{
+ COMPREPLY=( $( compgen -P "$prefix" -W "$( $1 ${BASH_SOURCE[0]%/*}/helpers/perl modules $cur )" -- "$cur" ) )
+ __ltrim_colon_completions "$prefix$cur"
+}
+
+_perlfunctions()
+{
+ COMPREPLY=( $( compgen -P "$prefix" -W "$( ${BASH_SOURCE[0]%/*}/helpers/perl functions $cur )" -- "$cur" ) )
+}
+
+_perl()
+{
+ local cur prev prefix temp
+ local optPrefix optSuffix
+
+ COMPREPLY=()
+ _get_comp_words_by_ref -n : cur prev
+ 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
+
+ case $prev in
+ -D|-e|-E|-i|-F|-l)
+ return 0
+ ;;
+ -I|-x)
+ local IFS=$'\n'
+ _compopt_o_filenames
+ COMPREPLY=( $( compgen -d $optPrefix $optSuffix -- "$cur" ) )
+ return 0
+ ;;
+ -m|-M)
+ temp="${cur#-}"
+ prefix="$prefix${cur%$temp}"
+ cur="$temp"
+ _perlmodules $1
+ return 0
+ ;;
+ -V)
+ if [[ $cur == :* ]]; then
+ temp="${cur##+(:)}"
+ prefix="$prefix${cur%$temp}"
+ local IFS=$'\n'
+ COMPREPLY=( $( compgen -P "$prefix" -W \
+ '$( $1 -MConfig -e "print join \"\\n\",
+ keys %Config::Config" 2>/dev/null )' -- "$temp" ) )
+ __ltrim_colon_completions "$prefix$temp"
+ fi
+ return 0
+ ;;
+ -d|-dt)
+ if [[ $cur == :* ]]; then
+ temp="${cur#:}"
+ prefix="$prefix${cur%$temp}"
+ cur="Devel::$temp"
+ _perlmodules $1
+ fi
+ 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 perl
+
+_perldoc()
+{
+ local cur prev prefix temp
+
+ COMPREPLY=()
+ _get_comp_words_by_ref -n : cur prev
+ 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)
+ _perlfunctions "$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}" | command grep perl )' -- "$cur" ) )
+ fi
+ _filedir 'p@(l|m|od)'
+ fi
+}
+complete -F _perldoc -o bashdefault perldoc
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/pine b/completions/pine
new file mode 100644
index 00000000..2f069287
--- /dev/null
+++ b/completions/pine
@@ -0,0 +1,22 @@
+# PINE address-book completion
+
+have pine || have alpine &&
+_pineaddr()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ COMPREPLY=( $( compgen -W '$( awk "{print \$1}" ~/.addressbook \
+ 2>/dev/null)' -- "$cur" ) )
+} &&
+complete -F _pineaddr -o default pine alpine
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/pkg-config b/completions/pkg-config
new file mode 100644
index 00000000..b999bd81
--- /dev/null
+++ b/completions/pkg-config
@@ -0,0 +1,51 @@
+# bash completion for pkgconfig
+
+have pkg-config &&
+_pkg_config()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ --variable|--define-variable|--atleast-version|--atleast-pkgconfig-version| \
+ --exact-version|--max-version)
+ # argument required but no completions available
+ return 0
+ ;;
+ -\?|--help|--version|--usage)
+ # all other arguments are noop with these
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ # return list of available options
+ COMPREPLY=( $( compgen -W '--version --modversion \
+ --atleast-pkgconfig-version --libs --static \
+ --short-errors --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 \
+ --print-provides --print-requires --help --usage' -- "$cur") )
+ else
+ COMPREPLY=( $( compgen -W "$( pkg-config --list-all \
+ 2>/dev/null | awk '{print $1}' )" -- "$cur" ) )
+ fi
+} &&
+complete -F _pkg_config pkg-config
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/pkg_install b/completions/pkg_install
new file mode 100644
index 00000000..577d9c94
--- /dev/null
+++ b/completions/pkg_install
@@ -0,0 +1,30 @@
+# bash completion for FreeBSD base package management tools
+
+[ $UNAME = FreeBSD ] &&
+{
+
+_pkg_delete()
+{
+ local cur pkgdir prev
+
+ pkgdir=${PKG_DBDIR:-/var/db/pkg}/
+ _get_comp_words_by_ref cur prev
+
+ [[ "$prev" == -o || "$prev" == -p || "$prev" == -W ]] && return 0
+
+ COMPREPLY=( $( compgen -d "$pkgdir$cur" ) )
+ COMPREPLY=( ${COMPREPLY[@]#$pkgdir} )
+
+ return 0
+}
+complete -F _pkg_delete -o dirnames pkg_delete pkg_info
+
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/pkgtools b/completions/pkgtools
new file mode 100644
index 00000000..3a5df278
--- /dev/null
+++ b/completions/pkgtools
@@ -0,0 +1,22 @@
+# bash completion for Slackware Linux pkgtools
+
+have removepkg && [ -f /etc/slackware-version ] &&
+_removepkg()
+{
+ local packages cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ COMPREPLY=( $( (cd /var/log/packages; compgen -f -- "$cur") ) )
+} &&
+complete -F _removepkg -o filenames removepkg &&
+ complete -o dirnames -f -X '!*.t[bglx]z' installpkg upgradepkg explodepkg
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/pm-utils b/completions/pm-utils
new file mode 100644
index 00000000..4deb82e7
--- /dev/null
+++ b/completions/pm-utils
@@ -0,0 +1,37 @@
+# bash completion for pm-utils
+
+have pm-is-supported &&
+_pm_is_supported()
+{
+ local cur
+ _get_comp_words_by_ref cur
+ COMPREPLY=( $( compgen -W '--help --suspend --hibernate --suspend-hybrid' \
+ -- "$cur" ) )
+} &&
+complete -F _pm_is_supported pm-is-supported
+
+have pm-hibernate || have pm-suspend || have pm-suspend-hybrid &&
+_pm_action()
+{
+ local cur
+ _get_comp_words_by_ref cur
+ COMPREPLY=( $( compgen -W "--help $( _parse_help "$1" )" -- "$cur" ) )
+} &&
+complete -F _pm_action pm-hibernate pm-suspend pm-suspend-hybrid
+
+have pm-powersave &&
+_pm_powersave()
+{
+ local cur
+ _get_comp_words_by_ref cur
+ COMPREPLY=( $( compgen -W "true false" -- "$cur" ) )
+} &&
+complete -F _pm_powersave pm-powersave
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/portupgrade b/completions/portupgrade
new file mode 100644
index 00000000..5389a5ca
--- /dev/null
+++ b/completions/portupgrade
@@ -0,0 +1,57 @@
+# bash completion for FreeBSD portupgrade package
+
+have portupgrade &&
+_portupgrade()
+{
+ local cur pkgdir prev
+
+ pkgdir=${PKG_DBDIR:-/var/db/pkg}/
+ _get_comp_words_by_ref cur prev
+
+ [[ "$prev" == -l || "$prev" == -L || "$prev" == -o ]] && return 0
+
+ COMPREPLY=( $( compgen -d "$pkgdir$cur" ) )
+ COMPREPLY=( ${COMPREPLY[@]#$pkgdir} )
+ COMPREPLY=( ${COMPREPLY[@]%-*} )
+
+ return 0
+} &&
+complete -F _portupgrade -o dirnames portupgrade
+
+have portinstall &&
+_portinstall()
+{
+ local cur portsdir prev indexfile
+ local -a COMPREPLY2
+
+ portsdir=${PORTSDIR:-/usr/ports}/
+ _get_comp_words_by_ref cur prev
+ # 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 && -f $indexfile ]] ||
+ indexfile=$portsdir/INDEX
+
+ [[ "$prev" == -l || "$prev" == -L || "$prev" == -o ]] && return 0
+
+ COMPREPLY=( $( command grep -E "^$cur" < $indexfile | cut -d'|' -f1 ) )
+ COMPREPLY2=( $( command grep -E "^[^\|]+\|$portsdir$cur" < $indexfile | \
+ cut -d'|' -f2 ) )
+ COMPREPLY2=( ${COMPREPLY2[@]#$portsdir} )
+ COMPREPLY=( "${COMPREPLY[@]}" "${COMPREPLY2[@]}" )
+
+ return 0
+} &&
+complete -F _portinstall -o dirnames portinstall
+
+# _pkg_delete is in pkg_install
+type _pkg_delete &>/dev/null && have pkg_deinstall && \
+complete -F _pkg_delete -o dirnames pkg_deinstall
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/postfix b/completions/postfix
new file mode 100644
index 00000000..1311c987
--- /dev/null
+++ b/completions/postfix
@@ -0,0 +1,233 @@
+# bash completion for postfix
+
+have postfix && {
+# postfix(1)
+#
+_postfix()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -c)
+ _filedir -d
+ return 0
+ ;;
+ -D)
+ COMPREPLY=( $( compgen -W 'start' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ if [[ $cur == -* ]]; then
+ COMPREPLY=( $( compgen -W '-c -D -v' -- "$cur" ) )
+ return 0
+ fi
+
+ COMPREPLY=( $( compgen -W 'check start stop abort flush reload status \
+ set-permissions upgrade-configuration' -- "$cur" ) )
+}
+complete -F _postfix postfix
+
+# postalias(1) and postmap(1)
+#
+_postmap()
+{
+ local cur prev len idx
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -c)
+ _filedir -d
+ return 0
+ ;;
+ -[dq])
+ return 0
+ ;;
+ esac
+
+ if [[ $cur == -* ]]; then
+ COMPREPLY=( $( compgen -W '-N -f -i -n -o -p -r -v -w -c -d -q' \
+ -- "$cur" ) )
+ return 0
+ fi
+
+ if [[ "$cur" == *:* ]]; then
+ _compopt_o_filenames
+ 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
+ _compopt_o_filenames
+ COMPREPLY=( $( compgen -f -- "$cur" ) )
+ fi
+ fi
+ return 0
+}
+complete -F _postmap postmap postalias
+
+# postcat(1)
+#
+_postcat()
+{
+ local cur prev pval len idx qfile
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -c)
+ _filedir -d
+ return 0
+ ;;
+ esac
+
+ if [[ $cur == -* ]]; then
+ COMPREPLY=( $( compgen -W '-c -q -v' -- "$cur" ) )
+ 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 2>/dev/null | \
+ sed -e '1d; $d; /^[^0-9A-Z]/d; /^$/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
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -b|-t)
+ _filedir
+ return 0
+ ;;
+ -c)
+ _filedir -d
+ return 0
+ ;;
+ -e)
+ cur=${cur#[\"\']}
+ eqext='='
+ ;;
+ esac
+
+ if [[ $cur == -* ]]; then
+ COMPREPLY=( $( compgen -W '-A -a -b -c -d -e -h -m -l -n -t -v' \
+ -- "$cur" ) )
+ return 0
+ fi
+
+ len=${#cur}
+ idx=0
+ for pval in $( /usr/sbin/postconf 2>/dev/null | 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
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -c)
+ _filedir -d
+ return 0
+ ;;
+ -[dr])
+ len=${#cur}
+ idx=0
+ for pval in ALL $( mailq 2>/dev/null | \
+ sed -e '1d; $d; /^[^0-9A-Z]/d; /^$/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 ALL $( mailq 2>/dev/null | \
+ sed -e '1d; $d; /^[^0-9A-Z]/d; /^$/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 ALL $( mailq 2>/dev/null | \
+ sed -e '1d; $d; /^[^0-9A-Z]/d; /^$/d; /^[0-9A-Z]*[* ]/d; s/!.*$//' ); do
+ if [[ "$cur" == "${pval:0:$len}" ]]; then
+ COMPREPLY[$idx]=$pval
+ idx=$(($idx+1))
+ fi
+ done
+ return 0
+ ;;
+ esac
+
+ if [[ $cur == -* ]]; then
+ COMPREPLY=( $( compgen -W '-c -d -h -H -p -r -s -v' -- "$cur" ) )
+ return 0
+ fi
+
+ COMPREPLY=( $( compgen -W 'hold incoming active deferred' -- "$cur" ) )
+}
+complete -F _postsuper postsuper
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/postgresql b/completions/postgresql
new file mode 100644
index 00000000..f874b67b
--- /dev/null
+++ b/completions/postgresql
@@ -0,0 +1,162 @@
+# bash completion for Postgresql
+
+have psql && {
+_pg_databases()
+{
+ # -w was introduced in 8.4, https://launchpad.net/bugs/164772
+ # "Access privileges" in output may contain linefeeds, hence the NF > 1
+ COMPREPLY=( $( compgen -W "$( psql -AtqwlF $'\t' 2>/dev/null | \
+ awk 'NF > 1 { print $1 }' )" -- "$cur" ) )
+}
+
+_pg_users()
+{
+ # -w was introduced in 8.4, https://launchpad.net/bugs/164772
+ COMPREPLY=( $( compgen -W "$( psql -Atqwc 'select usename from pg_user' \
+ template1 2>/dev/null )" -- "$cur" ) )
+ [ ${#COMPREPLY[@]} -eq 0 ] && COMPREPLY=( $( compgen -u -- "$cur" ) )
+}
+
+# createdb(1) completion
+#
+_createdb()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -h|--host)
+ _known_hosts_real "$cur"
+ return 0
+ ;;
+ -U|--username|-O|--owner)
+ _pg_users
+ return 0
+ ;;
+ -p|--port|-D|--tablespace|-E|--encoding|-T|--template)
+ # argument required but no completions available
+ return 0
+ ;;
+ --help|--version)
+ # all other arguments are noop with these
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--tablespace --template --encoding --host \
+ --port --username --password --echo --quiet --help --version' \
+ -- "$cur" ) )
+ else
+ _pg_databases
+ fi
+}
+complete -F _createdb -o default createdb
+
+# dropdb(1) completion
+#
+_dropdb()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -h|--host)
+ _known_hosts_real "$cur"
+ return 0
+ ;;
+ -U|--username)
+ _pg_users
+ return 0
+ ;;
+ --help|--version)
+ # all other arguments are noop with these
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--host --port --username --password \
+ --interactive --echo --quiet --help --version' -- "$cur" ) )
+ else
+ _pg_databases
+ fi
+}
+complete -F _dropdb -o default dropdb
+
+# psql(1) completion
+#
+_psql()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -h|--host)
+ _known_hosts_real "$cur"
+ return 0
+ ;;
+ -U|--username)
+ _pg_users
+ return 0
+ ;;
+ -d|--dbname)
+ _pg_databases
+ return 0
+ ;;
+ -o|--output|-f|--file|-L|--log-file)
+ _filedir
+ return 0
+ ;;
+ -c|--command|-F|--field-separator|-p|--port|-P|--pset|\
+ -R|--record-separator|-T|--table-attr|-v|--set|--variable)
+ # argument required but no completions available
+ return 0
+ ;;
+ -\?|--help|-V|--version)
+ # all other arguments are noop with these
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ # return list of available options
+ COMPREPLY=( $( compgen -W '--echo-all --no-align --command --dbname \
+ --echo-queries --echo-hidden --file --field-separator --host \
+ --html --list --log-file --output --port --pset --quiet \
+ --record-separator --single-step --single-line --tuples-only \
+ --table-attr --username --set --version --password --expanded \
+ --no-psqlrc --single-transaction --help' -- "$cur" ) )
+ else
+ # return list of available databases
+ _pg_databases
+ fi
+}
+complete -F _psql psql
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/povray b/completions/povray
new file mode 100644
index 00000000..a843a5cb
--- /dev/null
+++ b/completions/povray
@@ -0,0 +1,65 @@
+# povray completion by "David Necas (Yeti)" <yeti@physics.muni.cz>
+
+have povray || have xpovray || have spovray &&
+_povray()
+{
+ local cur prev povcur pfx oext defoext
+ defoext=png # default output extension, if cannot be determined FIXME
+
+ COMPREPLY=()
+ _get_comp_words_by_ref -c povcur prev
+
+ _expand || return 0
+
+ case $povcur in
+ [-+]I*)
+ cur="${povcur#[-+]I}" # to confuse _filedir
+ pfx="${povcur%"$cur"}"
+ _filedir pov
+ COMPREPLY=( ${COMPREPLY[@]/#/$pfx} )
+ return 0
+ ;;
+ [-+]O*)
+ # guess what output file type user may want
+ case $( ( IFS=$'\n'; command grep '^[-+]F' <<<"${COMP_WORDS[*]}" ) ) in
+ [-+]FN) oext=png ;;
+ [-+]FP) oext=ppm ;;
+ [-+]F[CT]) oext=tga ;;
+ *) oext=$defoext ;;
+ esac
+ # complete filename corresponding to previously specified +I
+ COMPREPLY=( $( ( IFS=$'\n'; command grep '^[-+]I' <<<"${COMP_WORDS[*]}" ) ) )
+ COMPREPLY=( ${COMPREPLY[@]#[-+]I} )
+ COMPREPLY=( ${COMPREPLY[@]/%.pov/.$oext} )
+ cur="${povcur#[-+]O}" # to confuse _filedir
+ pfx="${povcur%"$cur"}"
+ _filedir $oext
+ COMPREPLY=( ${COMPREPLY[@]/#/$pfx} )
+ return 0
+ ;;
+ *.ini\[|*.ini\[*[^]]) # sections in .ini files
+ cur="${povcur#*\[}"
+ pfx="${povcur%\["$cur"}" # prefix == filename
+ [ -r "$pfx" ] || return 0
+ COMPREPLY=( $(sed -e 's/^[[:space:]]*\[\('"$cur"'[^]]*\]\).*$/\1/' \
+ -e 't' -e 'd' -- "$pfx") )
+ # to prevent [bar] expand to nothing. can be done more easily?
+ COMPREPLY=( "${COMPREPLY[@]/#/$pfx[}" )
+ return 0
+ ;;
+ *)
+ cur="$povcur"
+ _filedir '@(ini|pov)'
+ return 0
+ ;;
+ esac
+} &&
+complete -F _povray povray xpovray spovray
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/procps b/completions/procps
new file mode 100644
index 00000000..db8fc3d5
--- /dev/null
+++ b/completions/procps
@@ -0,0 +1,49 @@
+# Completions for tools included in procps and related
+
+# killall(1) (Linux and FreeBSD) and pkill(1) completion.
+#
+[[ $UNAME == Linux || $UNAME == FreeBSD ]] || have pkill &&
+_killall()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ $COMP_CWORD -eq 1 && "$cur" == -* ]]; then
+ _signals
+ else
+ _pnames
+ fi
+
+ return 0
+}
+[[ $UNAME == Linux || $UNAME == FreeBSD ]] && complete -F _killall killall
+have pkill && complete -F _killall pkill
+
+# pgrep(1) completion.
+#
+[ $UNAME = Linux ] || have pgrep &&
+_pgrep()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ _pnames
+
+ return 0
+}
+have pgrep && complete -F _pgrep pgrep
+
+# Linux pidof(8) completion.
+[ $UNAME = Linux ] && complete -F _pgrep pidof
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/python b/completions/python
new file mode 100644
index 00000000..17f96f50
--- /dev/null
+++ b/completions/python
@@ -0,0 +1,55 @@
+# bash completion for python
+
+have python &&
+_python()
+{
+ local prev cur i
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -'?'|-h|--help|-V|--version|-c|-m)
+ return 0
+ ;;
+ -Q)
+ COMPREPLY=( $( compgen -W "old new warn warnall" -- "$cur" ) )
+ return 0
+ ;;
+ -W)
+ COMPREPLY=( $( compgen -W "ignore default all module once error" \
+ -- "$cur" ) )
+ return 0
+ ;;
+ !(?(*/)python*([0-9.])|-?))
+ [[ $COMP_CWORD -lt 2 || ${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?([co])'
+ else
+ COMPREPLY=( $( compgen -W "$( _parse_help $1 -h )" -- "$cur" ) )
+ fi
+
+ return 0
+} &&
+complete -F _python python python2 python3
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/qdbus b/completions/qdbus
new file mode 100644
index 00000000..879df68d
--- /dev/null
+++ b/completions/qdbus
@@ -0,0 +1,23 @@
+# Qt qdbus, dcop completion
+
+have qdbus || have dcop &&
+_qdbus()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ [ -n "$cur" ] && unset COMP_WORDS[${#COMP_WORDS[@]}-1]
+ COMPREPLY=( $( compgen -W '$( command ${COMP_WORDS[@]} 2>/dev/null | \
+ sed s/\(.*\)// )' -- "$cur" ) )
+} &&
+complete -F _qdbus qdbus dcop
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/qemu b/completions/qemu
new file mode 100644
index 00000000..03fa5632
--- /dev/null
+++ b/completions/qemu
@@ -0,0 +1,132 @@
+# bash completion for qemu
+
+have qemu &&
+_qemu()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -fd[ab]|-hd[abcd]|-cdrom|-option-rom|-kernel|-initrd|-bootp|-pidfile| \
+ -loadvm|-mtdblock|-sd|-pflash|-bios)
+ _filedir
+ return 0
+ ;;
+ -tftp|-smb|-L|-chroot)
+ _filedir -d
+ return 0
+ ;;
+ -boot)
+ COMPREPLY=( $( compgen -W 'a c d n' -- "$cur" ) )
+ return 0
+ ;;
+ -k)
+ COMPREPLY=( $( compgen -W 'ar de-ch es fo fr-ca hu ja \
+ mk no pt-br sv da en-gb et fr fr-ch is lt nl pl\
+ ru th de en-us fi fr-be hr it lv nl-be pt sl tr' -- "$cur" ) )
+ return 0
+ ;;
+ -soundhw)
+ COMPREPLY=( $( compgen -W "$( qemu -soundhw ? | awk \
+ '/^[[:lower:]]/ {print $1}' ) all" -- "$cur" ) )
+ return 0
+ ;;
+ -M)
+ COMPREPLY=( $( compgen -W "$( qemu -M ? | awk \
+ '/^[[:lower:]]/ {print $1}' )" -- "$cur" ) )
+ return 0
+ ;;
+ -cpu)
+ COMPREPLY=( $( compgen -W "$( qemu -cpu ? | awk \
+ '{print $2}' )" -- "$cur" ) )
+ return 0
+ ;;
+ -usbdevice)
+ COMPREPLY=( $( compgen -W 'mouse tablet disk: host: \
+ serial: braille net' -- "$cur" ) )
+ return 0
+ ;;
+ -net)
+ COMPREPLY=( $( compgen -W 'nic user tap socket vde none dump' \
+ -- "$cur" ) )
+ return 0
+ ;;
+ -serial|-parallel|-monitor)
+ COMPREPLY=( $( compgen -W 'vc pty none null /dev/ \
+ file: stdio pipe: COM udp: tcp: telnet: unix: \
+ mon: braille' -- "$cur" ) )
+ return 0
+ ;;
+ -redir)
+ COMPREPLY=( $( compgen -S":" -W 'tcp udp' -- "$cur" ) )
+ return 0
+ ;;
+ -bt)
+ COMPREPLY=( $( compgen -W 'hci vhci device' -- "$cur" ) )
+ return 0
+ ;;
+ -vga)
+ COMPREPLY=( $( compgen -W 'cirrus std vmware xenfb none' \
+ -- "$cur" ) )
+ return 0
+ ;;
+ -drive)
+ COMPREPLY=( $( compgen -S"=" -W 'file if bus unit index media \
+ cyls snapshot cache format serial addr' -- "$cur" ) )
+ return 0
+ ;;
+ -ballon)
+ COMPREPLY=( $( compgen -W 'none virtio' -- "$cur" ) )
+ return 0
+ ;;
+ -smbios)
+ COMPREPLY=( $( compgen -W 'file type' -- "$cur" ) )
+ return 0
+ ;;
+ -watchdog)
+ COMPREPLY=( $( compgen -W "$( qemu -watchdog ? 2>&1 | \
+ awk '{print $1}' )" -- "$cur" ) )
+ return 0
+ ;;
+ -watchdog-action)
+ COMPREPLY=( $( compgen -W 'reset shutdown poweroff pause debug \
+ none' -- "$cur" ) )
+ return 0
+ ;;
+ -runas)
+ _allowed_users
+ return 0
+ ;;
+ esac
+
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-M -fda -fdb -hda -hdb -hdc -hdd \
+ -cdrom -boot -snapshot -no-fd-bootchk -m -smp -nographic -vnc \
+ -k -audio-help -soundhw -localtime -full-screen -pidfile \
+ -daemonize -win2k-hack -option-rom -usb -usbdevice -net -tftp \
+ -smb -redir -kernel -append -initrd -serial -parallel -monitor \
+ -s -p -S -d -hdachs -L -std-vga -no-acpi -no-reboot -loadvm \
+ -semihosting -cpu -bt -vga -drive -startdate -name -curses \
+ -no-frame -no-quit -bootp -echr -no-shutdown -icount -g \
+ -prom-env -help -version -numa -mtdblock -sd -pflash \
+ -device -uuid -alt-grab -sdl -portrait -rtc-td-hack -no-hpet \
+ -balloon -acpitable -smbios -singlestep -gdb -hdachs -bios \
+ -kernel-kqemu -enable-kqemu -enable-kvm -clock -watchdog \
+ -watchdog-action -virtioconsole -show-cursor -tb-size -incoming \
+ -chroot -runas' -- "$cur" ) )
+ else
+ _filedir
+ fi
+} &&
+complete -F _qemu qemu
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/quota-tools b/completions/quota-tools
new file mode 100644
index 00000000..2b528d92
--- /dev/null
+++ b/completions/quota-tools
@@ -0,0 +1,257 @@
+# bash completion for quota-tools
+
+have quota && {
+_user_or_group()
+{
+ local i
+
+ # complete on groups if -g was given
+ for (( i=1; i < COMP_CWORD; i++ )); do
+ if [[ "${COMP_WORDS[i]}" == -g ]]; then
+ COMPREPLY=( $( compgen -g -- "$cur" ) )
+ return 0
+ fi
+ done
+
+ # otherwise complete on users
+ COMPREPLY=( $( compgen -u -- "$cur" ) )
+}
+
+_quota_formats()
+{
+ COMPREPLY=( $( compgen -W 'vfsold vfsv0 rpc xfs' -- "$cur" ) )
+}
+
+_filesystems()
+{
+ # Only list filesystems starting with "/", otherwise we also get
+ #+ "binfmt_misc", "proc", "tmpfs", ...
+ COMPREPLY=( $( compgen -W "$(awk '/^\// {print $1}' /etc/mtab)" \
+ -- "$cur" ) )
+}
+
+_quota()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -F|--format)
+ _quota_formats
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-F --format -g --group -u --user -v \
+ --verbose -s --human-readable -p --raw-grace -i --no-autofs -l \
+ --local-only -A --all-nfs -m --no-mixed-pathnames -q --quiet -Q \
+ --quiet-refuse -w --no-wrap' -- "$cur" ) )
+ else
+ _user_or_group
+ fi
+}
+complete -F _quota -o default quota
+
+_setquota()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -F|--format)
+ _quota_formats
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-r --remote -m --no-mixed-pathnames \
+ -F --format -g --group -u --user -p --prototype -b --batch \
+ -c --continue-batch -t --edit-period -T --edit-times -a --all' \
+ -- "$cur" ) )
+ else
+ _count_args
+
+ case $args in
+ 1)
+ _user_or_group
+ ;;
+ 2)
+ _filesystems
+ ;;
+ esac
+
+ fi
+}
+complete -F _setquota -o default setquota
+
+_edquota()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -F|--format)
+ _quota_formats
+ return 0
+ ;;
+ -f|--filesystem)
+ _filesystems
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-r --remote -m --no-mixed-pathnames \
+ -g --group -u --user -p --prototype -F --format -f --filesystem \
+ -t --edit-period -T --edit-times' -- "$cur" ) )
+ else
+ _user_or_group
+ fi
+}
+complete -F _edquota -o default edquota
+
+_quotacheck()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -F|--format)
+ _quota_formats
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-b --backup -v --verbose -d --debug \
+ -g --group -u --user -c --create-files -f --force -i \
+ --interactive -n --use-first-dquot -M --try-remount -m \
+ --no-remount -R --exclude-root -F --format -a --all' -- "$cur" ) )
+ else
+ _filesystems
+ fi
+}
+complete -F _quotacheck -o default quotacheck
+
+_repquota()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -F|--format)
+ _quota_formats
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-a --all -v --verbose -s --human-readable \
+ -c --batch-translation -C --no-batch-translation -t \
+ --truncate-names -n --no-names -p --raw-grace -i --no-autofs \
+ -u --user -g --group -F --format' -- "$cur" ) )
+ else
+ _filesystems
+ fi
+}
+complete -F _repquota -o default repquota
+
+_quotaon()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -F|--format)
+ _quota_formats
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-a --all -v --verbose -u --user \
+ -g --group -f --off -p --print-state -F --format' -- "$cur" ) )
+ else
+ _filesystems
+ fi
+}
+complete -F _quotaon -o default quotaon
+
+_quotaoff()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -F|--format)
+ _quota_formats
+ return 0
+ ;;
+ -x|--xfs-command)
+ COMPREPLY=( $( compgen -W 'delete enforce' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-a --all -v --verbose -u --user \
+ -g --group -p --print-state -x --xfs-command -F --format' \
+ -- "$cur" ) )
+ else
+ _filesystems
+ fi
+}
+complete -F _quotaoff -o default quotaoff
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/rcs b/completions/rcs
new file mode 100644
index 00000000..d859b8a9
--- /dev/null
+++ b/completions/rcs
@@ -0,0 +1,43 @@
+# bash completion for rcs
+
+have rcs &&
+_rcs()
+{
+ local cur prev file dir i
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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 && $1 == ci ]] && _filedir || _filedir -d
+} &&
+complete -F _rcs ci co rlog rcs rcsdiff
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/rdesktop b/completions/rdesktop
new file mode 100644
index 00000000..7acf47a5
--- /dev/null
+++ b/completions/rdesktop
@@ -0,0 +1,57 @@
+# bash completion for rdesktop
+
+have rdesktop &&
+_rdesktop()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -k)
+ COMPREPLY=( $( command ls \
+ /usr/share/rdesktop/keymaps 2>/dev/null | \
+ command grep -E -v '(common|modifiers)' ) )
+ COMPREPLY=( ${COMPREPLY[@]:-} $( command ls \
+ $HOME/.rdesktop/keymaps 2>/dev/null ) )
+ COMPREPLY=( ${COMPREPLY[@]:-} $( command ls \
+ ./keymaps 2>/dev/null ) )
+ COMPREPLY=( $( compgen -W '${COMPREPLY[@]}' -- "$cur" ) )
+ return 0
+ ;;
+ -a)
+ COMPREPLY=( $( compgen -W '8 15 16 24' -- "$cur" ) )
+ return 0
+ ;;
+ -x)
+ COMPREPLY=( $( compgen -W 'b broadband m modem l lan' \
+ -- $cur ) )
+ return 0
+ ;;
+ -r)
+ # FIXME: should do -o nospace for the colon options
+ COMPREPLY=( $( compgen -W 'comport: disk: lptport: \
+ printer: sound: lspci scard' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-u -d -s -c -p -n -k -g -f -b -L \
+ -A -B -e -E -m -C -D -K -S -T -N -X -a -z -x -P -r \
+ -0 -4 -5' -- "$cur" ) )
+ else
+ _known_hosts_real "$cur"
+ fi
+
+} &&
+complete -F _rdesktop rdesktop
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/reportbug b/completions/reportbug
new file mode 100644
index 00000000..0c44bd68
--- /dev/null
+++ b/completions/reportbug
@@ -0,0 +1,132 @@
+# bash completion for (Debian) reportbug package
+
+have reportbug &&
+_reportbug()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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|--tag)
+ 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
+ ;;
+ --from-buildd)
+ COMPREPLY=( $( compgen -S "_" -W '$( apt-cache dumpavail | \
+ command grep "^Source: $cur" | sort -u | cut -f2 -d" " )' ))
+ return 0
+ ;;
+ *)
+ ;;
+ esac
+
+ COMPREPLY=($( compgen -W '--help --version --attach \
+ --no-query-bts --query-bts --bts --body --body-file --bodyfile \
+ --no-config-files --class --configure --check-available --debug \
+ --no-check-available --debconf --test --draftpath --editor --email \
+ --exit-prompt --filename --from-buildd --gnupg --gpg --path --gnus \
+ --header --include --no-check-installed --check-installed \
+ --justification --kudos --keyid --license --list-cc \
+ --maintonly --mirror --mode --mua --mta --mutt --mh --nmh \
+ --bugnumber --no-bug-script --no-cc-menu --output --offline \
+ --print --paranoid --no-paranoid --pgp --proxy --http_proxy \
+ --pseudo-header --quiet --query-only --query-source --no-query-source \
+ --realname --report-quiet --reply-to --replyto --subject --severity \
+ --smtphost --timeout --tls --smtpuser --smtppasswd --src --source --type \
+ --tag --template --verify --no-verify --no-cc --package-version \
+ --no-compress --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) )
+ _filedir
+ return 0
+} &&
+complete -F _reportbug reportbug
+
+have querybts &&
+_querybts()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ 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
+
+ $split && return 0
+
+ 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 querybts
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/resolvconf b/completions/resolvconf
new file mode 100644
index 00000000..9773696d
--- /dev/null
+++ b/completions/resolvconf
@@ -0,0 +1,30 @@
+# bash completion for resolvconf
+
+have resolvconf &&
+_resolvconf()
+{
+ local cur command
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -a|-d)
+ _available_interfaces
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-a -d -u' -- "$cur" ) )
+ fi
+} &&
+complete -F _resolvconf resolvconf
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/rfkill b/completions/rfkill
new file mode 100644
index 00000000..5c51ff9d
--- /dev/null
+++ b/completions/rfkill
@@ -0,0 +1,37 @@
+# bash completion for rfkill
+
+have rfkill &&
+_rfkill()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--version' -- "$cur" ) )
+ else
+ case $COMP_CWORD in
+ 1)
+ COMPREPLY=( $( compgen -W "help event list block unblock" \
+ -- "$cur" ) )
+ ;;
+ 2)
+ if [[ $prev == block || $prev == unblock ]]; then
+ COMPREPLY=( $( compgen -W "$(rfkill list | awk -F: \
+ '/^[0-9]/ {print $1}') all wifi bluetooth uwb wimax \
+ wwan gps" -- "$cur" ) )
+ fi
+ ;;
+ esac
+ fi
+} &&
+complete -F _rfkill rfkill
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/ri b/completions/ri
new file mode 100644
index 00000000..be66d98f
--- /dev/null
+++ b/completions/ri
@@ -0,0 +1,96 @@
+# ri completion for Ruby documentation by Ian Macdonald <ian@caliban.org>
+
+have ri && {
+ri_get_methods()
+{
+ local regex
+
+ if [ "$ri_version" = integrated ]; then
+ if [ -z "$separator" ]; then
+ regex="(Instance|Class)"
+ elif [ "$separator" = "#" ]; then
+ regex=Instance
+ else
+ regex=Class
+ fi
+
+ COMPREPLY=( ${COMPREPLY[@]} \
+ "$( ri ${classes[@]} 2>/dev/null | ruby -ane \
+ 'if /^'"$regex"' methods:/.../^------------------|^$/ and \
+ /^ / then print $_.split(/, |,$/).grep(/^[^\[]*$/).join("\n"); \
+ end' | sort -u )" )
+ else
+ # older versions of ri didn't distinguish between class/module and
+ # instance methods
+ COMPREPLY=( ${COMPREPLY[@]} \
+ "$( ruby -W0 $ri_path ${classes[@]} | ruby -ane \
+ 'if /^-/.../^-/ and ! /^-/ and ! /^ +(class|module): / then \
+ print $_.split(/, |,$| +/).grep(/^[^\[]*$/).join("\n"); \
+ end' | sort -u )" )
+ fi
+ COMPREPLY=( $( compgen $prefix -W '${COMPREPLY[@]}' -- $method ) )
+}
+
+# needs at least Ruby 1.8.0 in order to use -W0
+_ri()
+{
+ local cur class method prefix ri_path ri_version separator IFS
+ local -a classes
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ ri_path=$(type -p ri)
+ # which version of ri are we using?
+ # -W0 is required here to stop warnings from older versions of ri
+ # from being captured when used with Ruby 1.8.1 and later
+ ri_version="$(ruby -W0 $ri_path -v 2>&1)" || ri_version=integrated
+ [ "$ri_version" != "${ri_version%200*}" ] && ri_version=integrated
+
+ # need to also split on commas
+ IFS=$', \n\t'
+ if [[ "$cur" == [A-Z]*[#.]* ]]; then
+ [[ "$cur" == *#* ]] && separator=# || separator=.
+ # we're completing on class and method
+ class=${cur%$separator*}
+ method=${cur#*$separator}
+ classes=( $class )
+ prefix="-P $class$separator"
+ ri_get_methods
+ return 0
+ fi
+
+ if [ "$ri_version" = integrated ]; then
+ # integrated ri from Ruby 1.9
+ classes=( $( ri -c | ruby -ne 'if /^\s*$/..$stdin.eof then \
+ if /, [A-Z]+/ then print; end; end' ) )
+ elif [ "$ri_version" = "ri 1.8a" ]; then
+ classes=( $( ruby -W0 $ri_path | \
+ ruby -ne 'if /^'"'"'ri'"'"' has/..$stdin.eof then \
+ if /^ .*[A-Z]/ then print; end; end' ))
+ else
+ classes=( $( ruby -W0 $ri_path | \
+ ruby -ne 'if /^I have/..$stdin.eof then \
+ if /^ .*[A-Z]/ then print; end; end' ))
+ fi
+
+ COMPREPLY=( $( compgen -W '${classes[@]}' -- "$cur" ) )
+ if [[ "$cur" == [A-Z]* ]]; then
+ # we're completing on class or module alone
+ return 0
+ fi
+
+ # we're completing on methods
+ method=$cur
+ ri_get_methods
+}
+complete -F _ri ri
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/rpcdebug b/completions/rpcdebug
new file mode 100644
index 00000000..be2a8709
--- /dev/null
+++ b/completions/rpcdebug
@@ -0,0 +1,57 @@
+# bash completion for rpcdebug
+
+have rpcdebug && {
+_rpcdebug_flags()
+{
+
+ local i module
+
+ for (( i=0; i < ${#COMP_WORDS[@]}; i++ )); do
+ if [[ ${COMP_WORDS[i]} == -m ]]; then
+ module=${COMP_WORDS[i+1]}
+ fi
+ done
+
+ if [ -n "$module" ]; then
+ COMPREPLY=( $( compgen -W "$(rpcdebug -vh 2>&1 \
+ | command grep '^'$module' '\
+ | awk '{$1 = ""; print $0}')" -- "$cur" ) )
+ fi
+}
+
+_rpcdebug()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -s)
+ _rpcdebug_flags
+ return 0
+ ;;
+ -c)
+ _rpcdebug_flags
+ return 0
+ ;;
+ -m)
+ COMPREPLY=( $( compgen -W 'rpc nfs nfsd nlm' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-v -h -m -s -c' -- "$cur" ) )
+ fi
+}
+complete -F _rpcdebug rpcdebug
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/rpm b/completions/rpm
new file mode 100644
index 00000000..bbab0368
--- /dev/null
+++ b/completions/rpm
@@ -0,0 +1,309 @@
+# bash completion for rpm
+
+have rpm && {
+# helper functions
+
+_rpm_installed_packages()
+{
+ local nodig="$1" nosig="$2"
+
+ if [[ -r /var/log/rpmpkgs && \
+ /var/log/rpmpkgs -nt /var/lib/rpm/Packages ]]; then
+ # using RHL 7.2 or later - this is quicker than querying the DB
+ COMPREPLY=( $( compgen -W "$( sed -ne \
+ 's|^\([^[:space:]]\{1,\}\)-[^[:space:]-]\{1,\}-[^[:space:]-]\{1,\}\.rpm$|\1|p' \
+ /var/log/rpmpkgs )" -- "$cur" ) )
+ elif type rpmqpack &>/dev/null ; then
+ # SUSE's rpmqpack is faster than rpm -qa
+ COMPREPLY=( $( compgen -W '$( rpmqpack )' -- "$cur" ) )
+ else
+ _rpm_nodigsig
+ COMPREPLY=( $( rpm -qa $nodig $nosig --qf='%{NAME} ' "$cur*" ) )
+ fi
+}
+
+_rpm_groups()
+{
+ local IFS=$'\n'
+ COMPREPLY=( $( compgen -W "$( rpm -qa $nodig $nosig --queryformat \
+ '%{group}\n' )" -- "$cur" ) )
+}
+
+_rpm_nodigsig()
+{
+ if [[ -z "$nodig" && -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 opts nodig nosig
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+ 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
+ --dbpath|--excludepath|--prefix|--relocate|--root)
+ _filedir -d
+ return 0
+ ;;
+ --eval|-E)
+ # get a list of macros
+ COMPREPLY=( $( compgen -W "$( rpm --showrc | sed -ne \
+ 's/^-\{0,1\}[0-9]\{1,\}[:=][[:space:]]\{1,\}\([^[:space:](]\{3,\}\).*/%\1/p' )" \
+ -- "$cur" ) )
+ return 0
+ ;;
+ --pipe)
+ _compopt_o_filenames
+ 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
+ local IFS=$'\n'
+ COMPREPLY=( $( compgen -W "$( rpm -qa $nodig $nosig \
+ --queryformat='%{providename}\n' )" -- "$cur" ) )
+ fi
+ return 0
+ ;;
+ --whatrequires)
+ if [[ "$cur" == */* ]]; then
+ _filedir
+ else
+ # complete on capabilities
+ local IFS=$'\n'
+ COMPREPLY=( $( compgen -W "$( rpm -qa $nodig $nosig \
+ --queryformat='%{requirename}\n' )" -- "$cur" ) )
+ fi
+ return 0
+ ;;
+ --target)
+ COMPREPLY=( $( compgen -W "$( command rpm --showrc | sed -ne \
+ 's/^\s*compatible\s\s*build\s\s*archs\s*:\s*\(.*\)/\1/ p' )" \
+ -- "$cur" ) )
+ return 0
+ ;;
+ --define|-D|--fileid|--hdrid|--pkgid)
+ # argument required but no completions available
+ return 0
+ ;;
+ esac
+
+ # options common to all modes
+ opts="--define --eval --macros --nodigest --nosignature --rcfile \
+ --quiet --pipe --verbose"
+
+ case ${COMP_WORDS[1]} in
+ -[iFU]*|--install|--freshen|--upgrade)
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W "$opts --percent --force \
+ --test --replacepkgs --replacefiles --root \
+ --excludedocs --includedocs --noscripts --ignorearch \
+ --dbpath --prefix --ignoreos --nodeps --allfiles \
+ --ftpproxy --ftpport --justdb --httpproxy --httpport \
+ --noorder --relocate --badreloc --notriggers \
+ --excludepath --ignoresize --oldpackage \
+ --queryformat --repackage --nosuggests" -- "$cur" ) )
+ else
+ _filedir '[rs]pm'
+ fi
+ ;;
+ -e|--erase)
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W "$opts --allmatches \
+ --noscripts --notriggers --nodeps --test --repackage" \
+ -- "$cur" ) )
+ else
+ _rpm_installed_packages "$nodig" "$nosig"
+ fi
+ ;;
+ -q*|--query)
+ # options common to all query types
+ opts="$opts --changelog --configfiles --conflicts --docfiles
+ --dump --enhances --filesbypkg --filecaps --fileclass
+ --filecolor --fileprovide --filerequire --filesbypkg --info
+ --list --obsoletes --pipe --provides --queryformat --rcfile
+ --requires --scripts --suggests --triggers --xml"
+
+ if [[ $COMP_LINE == *\ -@(*([^ -])f|-file )* ]]; then
+ # -qf completion
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W "$opts --dbpath --fscontext \
+ --last --root --state" -- "$cur" ) )
+ else
+ _filedir
+ fi
+ elif [[ $COMP_LINE == *\ -@(*([^ -])g|-group )* ]]; then
+ # -qg completion
+ _rpm_groups
+ elif [[ $COMP_LINE == *\ -@(*([^ -])p|-package )* ]]; then
+ # -qp; uninstalled package completion
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W "$opts --ftpport --ftpproxy \
+ --httpport --httpproxy --nomanifest" -- "$cur" ) )
+ else
+ _filedir '[rs]pm'
+ fi
+ else
+ # -q; installed package completion
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W "$opts --all --file --fileid
+ --dbpath --fscontext --ftswalk --group --hdrid --last
+ --package --pkgid --root --specfile --state
+ --triggeredby --whatprovides --whatrequires" \
+ -- "$cur" ) )
+ elif [[ $COMP_LINE != *\ -@(*([^ -])a|-all )* ]]; then
+ _rpm_installed_packages "$nodig" "$nosig"
+ fi
+ fi
+ ;;
+ -K*|--checksig)
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W "$opts --nopgp --nogpg --nomd5" \
+ -- "$cur" ) )
+ else
+ _filedir '[rs]pm'
+ fi
+ ;;
+ -[Vy]*|--verify)
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W "$opts --root --dbpath --nodeps \
+ --nogroup --nolinkto --nomode --nomtime --nordev --nouser \
+ --nofiles --noscripts --nomd5 --querytags --specfile \
+ --whatrequires --whatprovides" -- "$cur" ) )
+ # check whether we're doing file completion
+ elif [[ $COMP_LINE == *\ -@(*([^ -])f|-file )* ]]; then
+ _filedir
+ elif [[ $COMP_LINE == *\ -@(*([^ -])g|-group )* ]]; then
+ _rpm_groups
+ elif [[ $COMP_LINE == *\ -@(*([^ -])p|-package )* ]]; then
+ _filedir '[rs]pm'
+ else
+ _rpm_installed_packages "$nodig" "$nosig"
+ fi
+ ;;
+ -[bt]*)
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W "$opts --short-circuit --timecheck \
+ --clean --rmsource --rmspec --test --sign --buildroot \
+ --target --nobuild --nodeps --nodirtokens" -- "$cur" ) )
+ elif [[ ${COMP_WORDS[1]} == -b* ]]; then
+ _filedir spec
+ else
+ _filedir '@(t?(ar.)@([gx]z|bz?(2))|tar?(.@(lzma|Z)))'
+ fi
+ ;;
+ --rebuild|--recompile)
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W "$opts --nodeps --rmsource \
+ --rmspec --sign --nodirtokens --target" -- "$cur" ) )
+ else
+ _filedir '@(?(no)src.r|s)pm'
+ fi
+ ;;
+ --tarbuild)
+ _filedir '@(t?(ar.)@([gx]z|bz?(2))|tar?(.@(lzma|Z)))'
+ ;;
+ --resign|--addsign)
+ _filedir '[rs]pm'
+ ;;
+ --setperms|--setgids)
+ _rpm_installed_packages "$nodig" "$nosig"
+ ;;
+ --clean|--rmsource|--rmspec)
+ 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 rpm rpmbuild
+}
+
+have gendiff &&
+_gendiff()
+{
+ COMPREPLY=()
+ local cur cword
+ _get_comp_words_by_ref cur cword
+ [[ $cword != 1 ]] || _filedir -d
+} &&
+complete -F _gendiff gendiff
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/rpmcheck b/completions/rpmcheck
new file mode 100644
index 00000000..5d9aada7
--- /dev/null
+++ b/completions/rpmcheck
@@ -0,0 +1,33 @@
+# bash completion for rpmcheck
+
+have rpmcheck &&
+_rpmcheck()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -base)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-explain -failures -successes \
+ -dump -dump-all -base -help -compressed-input' -- "$cur" ) )
+ else
+ _filedir
+ fi
+} &&
+complete -F _rpmcheck rpmcheck $files
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/rrdtool b/completions/rrdtool
new file mode 100644
index 00000000..0b15a23f
--- /dev/null
+++ b/completions/rrdtool
@@ -0,0 +1,20 @@
+# bash completion for rrdtool
+
+have rrdtool &&
+_rrdtool ()
+{
+ local cur
+ _get_comp_words_by_ref cur
+
+ COMPREPLY=( $( compgen -W 'create update updatev graph dump restore last \
+ lastupdate first info fetch tune resize xport' -- "$cur" ) )
+} &&
+complete -F _rrdtool rrdtool
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/rsync b/completions/rsync
new file mode 100644
index 00000000..b0f2d106
--- /dev/null
+++ b/completions/rsync
@@ -0,0 +1,92 @@
+# bash completion for rsync
+
+have rsync &&
+_rsync()
+{
+ # TODO: _split_longopt
+
+ COMPREPLY=()
+ local cur prev
+ _get_comp_words_by_ref -n : cur prev
+
+ _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
+ ;;
+ --compress-level)
+ COMPREPLY=( $( compgen -W '1 2 3 4 5 6 7 8 9' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ case $cur in
+ -*)
+ COMPREPLY=( $( compgen -W '--verbose --quiet --no-motd --checksum \
+ --archive --recursive --relative --no-implied-dirs \
+ --backup --backup-dir --suffix= --update --inplace --append \
+ --append-verify --dirs --old-dirs --links --copy-links \
+ --copy-unsafe-links --safe-links --copy-dirlinks \
+ --keep-dirlinks --hard-links --perms --executability --chmod= \
+ --acls --xattrs --owner --group --devices --copy-devices \
+ --specials --times --omit-dir-times --super --fake-super \
+ --sparse --dry-run --whole-file --no-whole-file \
+ --one-file-system --block-size= --rsh= --rsync-path= \
+ --existing --ignore-existing --remove-source-files --delete \
+ --delete-before --delete-during --delete-delay --delete-after \
+ --delete-excluded --ignore-errors --force --max-delete= \
+ --max-size= --min-size= --partial --partial-dir= \
+ --delay-updates --prune-empty-dirs --numeric-ids --timeout= \
+ --contimeout= --ignore-times --size-only --modify-window= \
+ --temp-dir= --fuzzy --compare-dest= --copy-dest= --link-dest= \
+ --compress --compress-level= --skip-compress= --cvs-exclude \
+ --filter= --exclude= --exclude-from= --include= \
+ --include-from= --files-from= --from0 --protect-args \
+ --address= --port= --sockopts= --blocking-io --no-blocking-io \
+ --stats --8-bit-output --human-readable --progress \
+ --itemize-changes --out-format= --log-file= \
+ --log-file-format= --password-file= --list-only --bwlimit= \
+ --write-batch= --only-write-batch= --read-batch= --protocol= \
+ --iconv= --ipv4 --ipv6 --version --help --daemon --config= \
+ --no-detach' -- "$cur" ) )
+ ;;
+ *:*)
+ if type _scp_remote_files &>/dev/null; then
+ # find which remote shell is used
+ local i 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
+ [ "$shell" = ssh ] && _scp_remote_files
+ fi
+ ;;
+ *)
+ _known_hosts_real -c -a "$cur"
+ type _scp_local_files &>/dev/null && _scp_local_files || _filedir
+ ;;
+ esac
+
+ return 0
+} &&
+complete -F _rsync -o nospace rsync
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/rtcwake b/completions/rtcwake
new file mode 100644
index 00000000..c95c1d76
--- /dev/null
+++ b/completions/rtcwake
@@ -0,0 +1,40 @@
+# bash completion for rtcwake
+
+have rtcwake &&
+_rtcwake()
+{
+ COMPREPLY=()
+ local cur prev split=false
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case "$prev" in
+ --help|-h|--version|-V|--seconds|-s|--time|-t)
+ return 0
+ ;;
+ --mode|-m)
+ COMPREPLY=( $( compgen -W 'standby mem disk on no off' -- "$cur" ) )
+ return 0
+ ;;
+ --device|-d)
+ COMPREPLY=( $( command ls -d /dev/rtc?* 2>/dev/null ) )
+ COMPREPLY=( $( compgen -W '${COMPREPLY[@]#/dev/}' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ COMPREPLY=( $( compgen -W '--device --local --mode --seconds --time --utc \
+ --verbose --version --help' -- "$cur" ) )
+} &&
+complete -F _rtcwake rtcwake
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/samba b/completions/samba
new file mode 100644
index 00000000..61d78abc
--- /dev/null
+++ b/completions/samba
@@ -0,0 +1,298 @@
+# bash completion for samba
+
+have smbclient && {
+_samba_resolve_order()
+{
+ COMPREPLY=( $( compgen -W 'lmhosts host wins bcast' -- "$cur" ) )
+}
+
+_samba_domains()
+{
+ if [ -n "${COMP_SAMBA_SCAN:-}" ]; then
+ COMPREPLY=( $( compgen -W '$( smbtree -N -D )' -- "$cur" ) )
+ fi
+}
+
+_samba_hosts()
+{
+ if [ -n "${COMP_SAMBA_SCAN:-}" ]; then
+ COMPREPLY=( $( compgen -W "$( smbtree -N -S | \
+ sed -ne 's/^[[:space:]]*\\\\*\([^[:space:]]*\).*/\1/p' \
+ )" -- $cur ) )
+ fi
+}
+
+_samba_debuglevel()
+{
+ COMPREPLY=( $( compgen -W '0 1 2 3 4 5 6 7 8 9 10' -- "$cur" ) )
+}
+
+_smbclient()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -R)
+ _samba_resolve_order
+ return 0;
+ ;;
+ -t)
+ COMPREPLY=( $( compgen -W 'SJIS EUC JIS7 JIS8 JUNET HEX CAP' \
+ -- "$cur" ) )
+ return 0;
+ ;;
+ -s|-A|--authentication-file)
+ _filedir
+ return 0;
+ ;;
+ -l|--log-basename|-D)
+ _filedir -d
+ return 0;
+ ;;
+ -O)
+ COMPREPLY=( $( compgen -W 'SO_KEEPALIVE SO_REUSEADDR \
+ SO_BROADCAST TCP_NODELAY IPTOS_LOWDELAY \
+ IPTOS_THROUGHPUT SO_SNDBUF SO_RCVBUF \
+ SO_SNDLOWAT SO_RCVLOWAT' -- "$cur" ) )
+ return 0;
+ ;;
+ -T)
+ COMPREPLY=( $( compgen -W 'c x I X F b g q r N a' -- "$cur" ) )
+ return 0;
+ ;;
+ -W|--workgroup)
+ _samba_domains
+ return 0;
+ ;;
+ -d|--debuglevel)
+ _samba_debuglevel
+ return 0
+ ;;
+ -p|--port|-M|-I|-b|-U|--user|-n|-i|-T|-c)
+ # argument required but no completions available
+ return 0
+ ;;
+ -\?|--help|-V|--version)
+ # all other arguments are noop with these
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-b -d -L -U -I -M -m -A -N -i -O \
+ -p -R -s -k -P -c -D -W -l -E --debuglevel \
+ --log-basename --workgroup' -- "$cur" ) )
+ fi
+}
+complete -F _smbclient smbclient
+
+_smbget()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -o|-f|--outputfile|--rcfile)
+ _filedir
+ return 0;
+ ;;
+ -d|--debuglevel)
+ _samba_debuglevel
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-a --guest -r --resume -R --recursive -u \
+ --username -p --password -w --workgroup -n --nonprompt -d \
+ --debuglevel -D --dots -P --keep-permissions -o --outputfile -f \
+ --rcfile -q --quiet -v --verbose -b --blocksize -? --help --usage' \
+ -- "$cur" ) )
+ fi
+}
+complete -F _smbget smbget
+
+_smbcacls()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -s)
+ _filedir
+ return 0;
+ ;;
+ -l|--log-basename)
+ _filedir -d
+ return 0;
+ ;;
+ -d|--debuglevel)
+ _samba_debuglevel
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-a -M -D -S -U -C -G --numeric -t \
+ -h --help -V -s -d --debuglevel -l --log-basename' -- "$cur" ) )
+ fi
+}
+complete -F _smbcacls smbcacls
+
+_smbcquotas()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -s|-A|--authentication-file)
+ _filedir
+ return 0;
+ ;;
+ -l|--log-basename)
+ _filedir -d
+ return 0;
+ ;;
+ -d|--debuglevel)
+ _samba_debuglevel
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-u -L -F -S -n -t -v -h --help -V \
+ -s --debuglevel --log-basename -N -k \
+ --authentication-file --user' -- "$cur" ) )
+ fi
+}
+complete -F _smbcquotas smbcquotas
+
+_smbpasswd()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -r)
+ _samba_hosts
+ return 0;
+ ;;
+ -R)
+ _samba_resolve_order
+ return 0;
+ ;;
+ -c)
+ _filedir
+ return 0;
+ ;;
+ -D)
+ _samba_debuglevel
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-a -c -x -d -e -D -n -r -R -m -U -h \
+ -s -w -W -i -L' -- "$cur" ) )
+ fi
+}
+complete -F _smbpasswd smbpasswd
+
+_smbtar()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -r|-t)
+ _filedir tar
+ return 0;
+ ;;
+ -s)
+ _samba_hosts
+ return 0;
+ ;;
+ -l)
+ _samba_debuglevel
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-r -i -a -v -s -p -x -X -N -b -d -l -u -t' \
+ -- "$cur" ) )
+ fi
+}
+complete -F _smbtar smbtar
+
+_smbtree()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -s|-A|--authentication-file)
+ _filedir
+ return 0;
+ ;;
+ -l|--log-basename)
+ _filedir -d
+ return 0;
+ ;;
+ -d|--debuglevel)
+ _samba_debuglevel
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-b -D -S -V -s -d --debuglevel -l \
+ --log-basename -N -k -A --authentication-file -U --user\
+ -h --help' -- "$cur" ) )
+ fi
+}
+complete -F _smbtree smbtree
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/sbcl b/completions/sbcl
new file mode 100644
index 00000000..33671a6e
--- /dev/null
+++ b/completions/sbcl
@@ -0,0 +1,31 @@
+# bash programmable completion for various Common Lisp implementations by
+# Nikodemus Siivola <nikodemus@random-state.net>
+
+have sbcl || have sbcl-mt &&
+_sbcl()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ # completing an option (may or may not be separated by a space)
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--core --noinform --help --version
+ --sysinit --userinit --eval --noprint --disable-debugger
+ --end-runtime-options --end-toplevel-options ' -- "$cur" ) )
+ else
+ _filedir
+ fi
+
+ return 0
+} &&
+complete -F _sbcl sbcl sbcl-mt
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/screen b/completions/screen
new file mode 100644
index 00000000..952d9766
--- /dev/null
+++ b/completions/screen
@@ -0,0 +1,66 @@
+# bash completion for screen
+
+have screen &&
+_screen_sessions()
+{
+ COMPREPLY=( $( compgen -W "$( command screen -ls | sed -ne \
+ 's|^\t\{1,\}\([0-9]\{1,\}\.[^\t]\{1,\}\).*'"$1"'.*$|\1|p' )" \
+ -- "$cur" ) )
+} &&
+_screen()
+{
+ local cur prev words cword
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev words cword
+
+ if ((cword > 2)); then
+ case ${words[cword-2]} in
+ -[dD])
+ _screen_sessions
+ return 0
+ ;;
+ esac
+ fi
+
+ case $prev in
+ -[rR])
+ # list detached
+ _screen_sessions 'Detached'
+ return 0
+ ;;
+ -[dD])
+ # list attached
+ _screen_sessions 'Attached'
+ return 0
+ ;;
+ -x)
+ # list both
+ _screen_sessions
+ return 0
+ ;;
+ -s)
+ _shells
+ return 0
+ ;;
+ -c)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-a -A -c -d -D -e -f -fn -fa -h -i -ln \
+ -list -L -m -O -p -q -r -R -s -S -t -U -v -wipe -x -X --help \
+ --version' -- "$cur" ) )
+ fi
+} &&
+complete -F _screen -o default screen
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/service b/completions/service
new file mode 100644
index 00000000..1a36f59b
--- /dev/null
+++ b/completions/service
@@ -0,0 +1,47 @@
+# service(8) and /etc/init.d/* completion
+
+# This completes on a list of all available service scripts for the
+# 'service' command and/or the SysV init.d directory, followed by
+# that script's available commands
+#
+{ have service || [ -d /etc/init.d/ ]; } &&
+_service()
+{
+ local cur prev sysvdir
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ # don't complete for things like killall, ssh and mysql if it's
+ # the standalone command, rather than the init script
+ [[ ${COMP_WORDS[0]} != @(*init.d/!(functions|~)|service) ]] && return 0
+
+ # don't complete past 2nd token
+ [ $COMP_CWORD -gt 2 ] && return 0
+
+ if [[ $COMP_CWORD -eq 1 && $prev == "service" ]]; then
+ _services
+ else
+ [ -d /etc/rc.d/init.d ] && \
+ sysvdir=/etc/rc.d/init.d || sysvdir=/etc/init.d
+ COMPREPLY=( $( compgen -W '`sed -e "y/|/ /" \
+ -ne "s/^.*\(U\|msg_u\)sage.*{\(.*\)}.*$/\2/p" \
+ $sysvdir/${prev##*/} 2>/dev/null`' -- "$cur" ) )
+ fi
+
+ return 0
+} &&
+complete -F _service service
+for svc in /etc/init.d/*; do
+ [ ! -x "$svc" ] || complete -p "${svc##*/}" &>/dev/null || \
+ complete -F _service -o default "${svc##*/}"
+done
+unset svc
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/sh b/completions/sh
new file mode 100644
index 00000000..9c7ca020
--- /dev/null
+++ b/completions/sh
@@ -0,0 +1,41 @@
+# POSIX sh(1) completion
+
+have sh &&
+_sh()
+{
+ COMPREPLY=()
+ local cur prev
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -c)
+ return 0
+ ;;
+ -o|+o)
+ COMPREPLY=( $( compgen -W 'allexport errexit ignoreeof monitor
+ noclobber noglob noexec nolog notify nounset verbose vi
+ xtrace' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ local opts="-a -b -C -e -f -h -i -m -n -o -u -v -x"
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W "$opts -c -s" -- "$cur" ) )
+ return 0
+ elif [[ "$cur" == +* ]]; then
+ COMPREPLY=( $( compgen -W "${opts//-/+}" -- "$cur" ) )
+ return 0
+ fi
+
+ _filedir sh
+} &&
+complete -F _sh sh
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/shadow b/completions/shadow
new file mode 100644
index 00000000..6aea045b
--- /dev/null
+++ b/completions/shadow
@@ -0,0 +1,482 @@
+# bash completion for shadow utils
+
+have useradd &&
+_useradd()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ # TODO: if -o/--non-unique is given, could complete on existing uids
+ # with -u/--uid
+
+ case $prev in
+ -c|--comment|-h|--help|-e|--expiredate|-f|--inactive|-k|--key|\
+ -p|--password|-u|--uid|-Z|--selinux-user)
+ return 0
+ ;;
+ -b|--base-dir|-d|--home|-k|--skel)
+ _filedir -d
+ return 0
+ ;;
+ -g|--gid)
+ _gids
+ COMPREPLY=( $( compgen -W '${COMPREPLY[@]} $( compgen -g )' \
+ -- "$cur" ) )
+ return 0
+ ;;
+ -G|--groups)
+ COMPREPLY=( $( compgen -g -- "$cur" ) )
+ return 0
+ ;;
+ -s|--shell)
+ _shells
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--base-dir --comment --home-dir --defaults \
+ --expiredate --inactive --gid --groups --help --skel --key \
+ --no-log-init --create-home --no-create-home --no-user-group \
+ --non-unique --password --system --shell --uid --user-group \
+ --selinux-user' -- "$cur" ) )
+ return 0
+ fi
+} &&
+complete -F _useradd useradd
+
+have usermod &&
+_usermod()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ # TODO: if -o/--non-unique is given, could complete on existing uids
+ # with -u/--uid
+
+ case $prev in
+ -c|--comment|-d|--home|-e|--expiredate|-f|--inactive|-h|--help|\
+ -l|--login|-p|--password|-u|--uid|-Z|--selinux-user)
+ return 0
+ ;;
+ -g|--gid)
+ _gids
+ COMPREPLY=( $( compgen -W '${COMPREPLY[@]} $( compgen -g )' \
+ -- "$cur" ) )
+ return 0
+ ;;
+ -G|--groups)
+ COMPREPLY=( $( compgen -g -- "$cur" ) )
+ return 0
+ ;;
+ -s|--shell)
+ _shells
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ # TODO: -U/--unlock, -p/--password, -L/--lock mutually exclusive
+ COMPREPLY=( $( compgen -W '--append --comment --home --expiredate \
+ --inactive --gid --groups --help --login --lock --move-home \
+ --non-unique --password --shell --uid --unlock --selinux-user' \
+ -- "$cur" ) )
+ return 0
+ fi
+
+ COMPREPLY=( $( compgen -u -- "$cur" ) )
+} &&
+complete -F _usermod usermod
+
+have userdel &&
+_userdel()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--force --help --remove' -- "$cur" ) )
+ return 0
+ fi
+
+ COMPREPLY=( $( compgen -u -- "$cur" ) )
+} &&
+complete -F _userdel userdel
+
+have chage &&
+_chage()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -d|--lastday|-E|--expiredate|-h|--help|-I|--inactive|-m|--mindays|\
+ -M|--maxdays|-W|--warndays)
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--lastday --expiredate --help --inactive \
+ --list --mindays --maxdays --warndays' -- "$cur" ) )
+ return 0
+ fi
+
+ COMPREPLY=( $( compgen -u -- "$cur" ) )
+} &&
+complete -F _chage chage
+
+have passwd &&
+_passwd()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -n|-x|-w|-i|-\?|--help|--usage)
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-k -l --stdin -u -d -n -x -w -i -S \
+ -? --help --usage' -- "$cur" ) )
+ return 0
+ fi
+
+ _allowed_users
+} &&
+complete -F _passwd passwd
+
+have chpasswd &&
+_chpasswd()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -c|--crypt)
+ COMPREPLY=( $( compgen -W 'DES MD5 NONE SHA256 SHA512' \
+ -- "$cur" ) )
+ return 0
+ ;;
+ -s|--sha-rounds)
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--crypt-method --encrypted \
+ --help --md5 --sha-rounds' -- "$cur" ) )
+ return 0
+ fi
+} &&
+complete -F _chpasswd chpasswd
+
+have newusers &&
+_newusers()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -c|--crypt)
+ COMPREPLY=( $( compgen -W 'DES MD5 NONE SHA256 SHA512' \
+ -- "$cur" ) )
+ return 0
+ ;;
+ -s|--sha-rounds)
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--crypt-method --help --system \
+ --sha-rounds' -- "$cur" ) )
+ return 0
+ fi
+
+ _filedir
+} &&
+complete -F _newusers newusers
+
+have pwck &&
+_pwck()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-q -r -s' -- "$cur" ) )
+ return 0
+ fi
+
+ _filedir
+} &&
+complete -F _pwck pwck
+
+have groupadd &&
+_groupadd()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ # TODO: if -o/--non-unique is given, could complete on existing gids
+ # with -g/--gid
+
+ case $prev in
+ -g|--gid|-K|--key|-p|--password)
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--force --gid --help \
+ --key --non-unique --password --system' -- "$cur" ) )
+ return 0
+ fi
+} &&
+complete -F _groupadd groupadd
+
+have groupmod &&
+_groupmod()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ # TODO: if -o/--non-unique is given, could complete on existing gids
+ # with -g/--gid
+
+ case $prev in
+ -g|--gid|-h|--help|-n|--new-name|-p|--password)
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--gid --help --new-name \
+ --non-unique --password' -- "$cur" ) )
+ return 0
+ fi
+
+ COMPREPLY=( $( compgen -g -- "$cur" ) )
+} &&
+complete -F _groupmod groupmod
+
+complete -g groupdel
+
+have newgrp &&
+_newgrp()
+{
+ COMPREPLY=()
+ if [[ "`_get_cword`" == "-" ]]; then
+ COMPREPLY=( - )
+ else
+ _allowed_groups
+ fi
+} &&
+complete -F _newgrp newgrp
+
+have gpasswd &&
+_gpasswd()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -a|-d|-A|-M)
+ COMPREPLY=( $( compgen -u -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-a -d -r -R -A -M' -- "$cur" ) )
+ return 0
+ fi
+
+ COMPREPLY=( $( compgen -g -- "$cur" ) )
+} &&
+complete -F _gpasswd gpasswd
+
+have groupmems &&
+_groupmems()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -a|-d)
+ COMPREPLY=( $( compgen -u -- "$cur" ) )
+ return 0
+ ;;
+ -g)
+ COMPREPLY=( $( compgen -g -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-a -d -p -g -l' -- "$cur" ) )
+ return 0
+ fi
+} &&
+complete -F _groupmems groupmems
+
+have grpck &&
+_grpck()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-r -s' -- "$cur" ) )
+ return 0
+ fi
+
+ _filedir
+} &&
+complete -F _grpck grpck
+
+have vipw || have vigr &&
+_vipw()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -h|--help)
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--group --help --passwd \
+ --quiet --shadow' -- "$cur" ) )
+ return 0
+ fi
+} &&
+complete -F _vipw vipw vigr
+
+have faillog &&
+_faillog()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -h|--help|-l|--lock-time|-m|--maximum|-t|--time)
+ return 0
+ ;;
+ -u|--user)
+ COMPREPLY=( $( compgen -u -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--all --help --lock-time \
+ --maximum --reset --time --user' -- "$cur" ) )
+ return 0
+ fi
+} &&
+complete -F _faillog faillog
+
+have lastlog &&
+_lastlog()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -b|--before|-h|--help|-t|--time)
+ return 0
+ ;;
+ -u|--user)
+ COMPREPLY=( $( compgen -u -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--before --help --time --user' -- "$cur" ) )
+ return 0
+ fi
+} &&
+complete -F _lastlog lastlog
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/sitecopy b/completions/sitecopy
new file mode 100644
index 00000000..616bc5e4
--- /dev/null
+++ b/completions/sitecopy
@@ -0,0 +1,40 @@
+# sitecopy(1) completion
+# Copyright 2003 Eelco Lempsink <eelcolempsink@gmx.net>
+# License: GNU GPL v2 or later
+
+have sitecopy &&
+_sitecopy()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ case $cur in
+ --*)
+ COMPREPLY=( $( compgen -W "$(sitecopy -h | command grep -e '--\w' |\
+ awk '{sub (/=(FILE|PATH)/, "", $2); print $2}')" -- "$cur" ) )
+ ;;
+ -*)
+ COMPREPLY=( $( compgen -W "$(sitecopy -h | command grep -e '-\w' | \
+ awk '{sub (",", "", $1); print $1}')" -- "$cur" ) )
+ ;;
+ *)
+ if [ -r ~/.sitecopyrc ]; then
+ COMPREPLY=( $( compgen -W "$(command grep '^["$'\t '"]*site' \
+ ~/.sitecopyrc | awk '{print $2}')" -- "$cur" ) )
+ fi
+ ;;
+ esac
+
+ return 0
+} &&
+complete -F _sitecopy -o default sitecopy
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/smartctl b/completions/smartctl
new file mode 100644
index 00000000..74e42816
--- /dev/null
+++ b/completions/smartctl
@@ -0,0 +1,146 @@
+# bash completion for smartctl(8)
+
+have smartctl &&
+{
+_smartctl_quietmode()
+{
+ COMPREPLY=( $( compgen -W 'errorsonly silent noserial' -- "$cur" ) )
+}
+_smartctl_device()
+{
+ local i opts='ata scsi sat marvell hpt cciss'
+ for (( i=0; i <= 31; i++ )) ; do
+ opts="$opts 3ware,$i"
+ done
+ COMPREPLY=( $( compgen -W "$opts" -- "$cur" ) )
+}
+_smartctl_tolerance()
+{
+ COMPREPLY=( $( compgen -W 'normal conservative permissive \
+ verypermissive' -- "$cur" ) )
+}
+_smartctl_badsum()
+{
+ COMPREPLY=( $( compgen -W 'warn exit ignore' -- "$cur" ) )
+}
+_smartctl_report()
+{
+ COMPREPLY=( $( compgen -W 'ioctl ataioctl scsiioctl' -- "$cur" ) )
+}
+_smartctl_powermode()
+{
+ COMPREPLY=( $( compgen -W 'never sleep standby idle' -- "$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 samsung3 swapid' \
+ -- "$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 scttempint' -- "$cur" ) )
+}
+
+
+_smartctl()
+{
+ local cur prev split=false
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _split_longopt && split=true
+
+ case $prev in
+ -q|--quietmode)
+ _smartctl_quietmode
+ ;;
+ -d|--device)
+ _smartctl_device
+ return 0
+ ;;
+ -t|--tolerance)
+ _smartctl_tolerance
+ return 0
+ ;;
+ -b|--badsum)
+ _smartctl_badsum
+ return 0
+ ;;
+ -r|--report)
+ _smartctl_report
+ return 0
+ ;;
+ -n|--nocheck)
+ _smartctl_powermode
+ return 0
+ ;;
+ -s|--smart|-o|--offlineauto|-S|--saveauto)
+ _smartctl_feature
+ return 0
+ ;;
+ -l|--log)
+ _smartctl_log
+ return 0
+ ;;
+ -v|--vendorattribute)
+ _smartctl_vendorattribute
+ return 0
+ ;;
+ -F|--firmwarebug)
+ _smartctl_firmwarebug
+ return 0
+ ;;
+ -P|--presets)
+ _smartctl_presets
+ return 0
+ ;;
+ -t|--test)
+ _smartctl_test
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--help --version --info --all --quietmode \
+ --device --tolerance --badsum --report --nocheck --smart \
+ --offlineauto --saveauto --health --capabilities --attributes \
+ --log --vendorattribute --firmwarebug --presets --test --captive \
+ --abort' -- "$cur" ) )
+ else
+ cur=${cur:=/dev/}
+ _filedir
+ fi
+}
+complete -F _smartctl smartctl
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/snownews b/completions/snownews
new file mode 100644
index 00000000..9c99ed7c
--- /dev/null
+++ b/completions/snownews
@@ -0,0 +1,25 @@
+# snownews(1) completion
+
+have snownews &&
+_snownews()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]]; then
+ # return list of available options
+ COMPREPLY=( $( compgen -W '--update --help --version \
+ --disable-versioncheck -u -h -V' -- "$cur"))
+ fi
+} &&
+complete -F _snownews snownews
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/sqlite3 b/completions/sqlite3
new file mode 100644
index 00000000..b37c55f7
--- /dev/null
+++ b/completions/sqlite3
@@ -0,0 +1,39 @@
+# sqlite3(1) completion
+
+have sqlite3 &&
+_sqlite3()
+{
+ COMPREPLY=()
+ local cur prev
+ _get_comp_words_by_ref cur prev
+
+ local dbexts='@(sqlite?(3)|?(s?(3))db)'
+
+ case $prev in
+ -help|-version|-separator|-nullvalue|*.$dbexts)
+ return 0
+ ;;
+ -init)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-help -init -echo -header -noheader -bail
+ -interactive -batch -column -csv -html -line -list -separator
+ -nullvalue -version' -- "$cur" ) )
+ return 0
+ fi
+
+ _filedir $dbexts
+} &&
+complete -F _sqlite3 sqlite3
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/ssh b/completions/ssh
new file mode 100644
index 00000000..cf966ae5
--- /dev/null
+++ b/completions/ssh
@@ -0,0 +1,428 @@
+# ssh(1) completion
+
+have ssh &&
+{
+
+_ssh_bindaddress()
+{
+ COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W \
+ "$( PATH="$PATH:/sbin" ifconfig -a | \
+ sed -ne 's/.*addr:\([^[:space:]]*\).*/\1/p' \
+ -ne 's/.*inet[[:space:]]\{1,\}\([^[:space:]]*\).*/\1/p' )" \
+ -- "$cur" ) )
+}
+
+_ssh_ciphers()
+{
+ COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W '3des-cbc aes128-cbc \
+ aes192-cbc aes256-cbc aes128-ctr aes192-ctr aes256-ctr arcfour128 \
+ arcfour256 arcfour blowfish-cbc cast128-cbc' -- "$cur" ) )
+}
+
+_ssh_macs()
+{
+ COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W 'hmac-md5 hmac-sha1 \
+ umac-64@openssh.com hmac-ripemd160 hmac-sha1-96 hmac-md5-96' \
+ -- "$cur" ) )
+}
+
+_ssh_options()
+{
+ type compopt &>/dev/null && compopt -o nospace
+ COMPREPLY=( $( compgen -S = -W 'AddressFamily BatchMode BindAddress \
+ ChallengeResponseAuthentication CheckHostIP Cipher Ciphers \
+ ClearAllForwardings Compression CompressionLevel ConnectionAttempts \
+ ConnectTimeout ControlMaster ControlPath DynamicForward EscapeChar \
+ ExitOnForwardFailure ForwardAgent ForwardX11 ForwardX11Trusted \
+ GatewayPorts GlobalKnownHostsFile GSSAPIAuthentication \
+ GSSAPIDelegateCredentials HashKnownHosts Host HostbasedAuthentication \
+ HostKeyAlgorithms HostKeyAlias HostName IdentityFile IdentitiesOnly \
+ KbdInteractiveDevices LocalCommand LocalForward LogLevel MACs \
+ NoHostAuthenticationForLocalhost NumberOfPasswordPrompts \
+ PasswordAuthentication PermitLocalCommand Port \
+ PreferredAuthentications Protocol ProxyCommand PubkeyAuthentication \
+ RekeyLimit RemoteForward RhostsRSAAuthentication RSAAuthentication \
+ SendEnv ServerAliveInterval ServerAliveCountMax SmartcardDevice \
+ StrictHostKeyChecking TCPKeepAlive Tunnel TunnelDevice \
+ UsePrivilegedPort User UserKnownHostsFile VerifyHostKeyDNS \
+ VisualHostKey XAuthLocation' -- "$cur" ) )
+}
+
+# Complete a ssh suboption (like ForwardAgent=y<tab>)
+# Only one parameter: the string to complete including the equal sign.
+# Not all suboptions are completed.
+# Doesn't handle comma-separated lists.
+_ssh_suboption()
+{
+ # Split into subopt and subval
+ local prev=${1%%=*} cur=${1#*=}
+
+ case $prev in
+ BatchMode|ChallengeResponseAuthentication|CheckHostIP|\
+ ClearAllForwardings|Compression|ExitOnForwardFailure|ForwardAgent|\
+ ForwardX11|ForwardX11Trusted|GatewayPorts|GSSAPIAuthentication|\
+ GSSAPIKeyExchange|GSSAPIDelegateCredentials|GSSAPITrustDns|\
+ HashKnownHosts|HostbasedAuthentication|IdentitiesOnly|\
+ KbdInteractiveAuthentication|KbdInteractiveDevices|\
+ NoHostAuthenticationForLocalhost|PasswordAuthentication|\
+ PubkeyAuthentication|RhostsRSAAuthentication|RSAAuthentication|\
+ StrictHostKeyChecking|TCPKeepAlive|UsePrivilegedPort|\
+ VerifyHostKeyDNS|VisualHostKey)
+ COMPREPLY=( $( compgen -W 'yes no' -- "$cur") )
+ ;;
+ AddressFamily)
+ COMPREPLY=( $( compgen -W 'any inet inet6' -- "$cur" ) )
+ ;;
+ BindAddress)
+ _ssh_bindaddress
+ ;;
+ Cipher)
+ COMPREPLY=( $( compgen -W 'blowfish des 3des' -- "$cur" ) )
+ ;;
+ Protocol)
+ COMPREPLY=( $( compgen -W '1 2 1,2 2,1' -- "$cur" ) )
+ ;;
+ Tunnel)
+ COMPREPLY=( $( compgen -W 'yes no point-to-point ethernet' \
+ -- "$cur" ) )
+ ;;
+ PreferredAuthentications)
+ COMPREPLY=( $( compgen -W 'gssapi-with-mic host-based \
+ publickey keyboard-interactive password' -- "$cur" ) )
+ ;;
+ MACs)
+ _ssh_macs
+ ;;
+ Ciphers)
+ _ssh_ciphers
+ ;;
+ esac
+ return 0
+}
+
+# Try to complete -o SubOptions=
+#
+# Returns 0 if the completion was handled or non-zero otherwise.
+_ssh_suboption_check()
+{
+ # Get prev and cur words without splitting on =
+ local cureq=`_get_cword :=` preveq=`_get_pword :=`
+ if [[ $cureq == *=* && $preveq == -o ]]; then
+ _ssh_suboption $cureq
+ return $?
+ fi
+ return 1
+}
+
+_ssh()
+{
+ local cur prev configfile
+ local -a config
+
+ COMPREPLY=()
+ _get_comp_words_by_ref -n : cur prev
+ #cur=`_get_cword :`
+ #prev=`_get_pword`
+
+ _ssh_suboption_check && return 0
+
+ case $prev in
+ -F|-i|-S)
+ _filedir
+ return 0
+ ;;
+ -c)
+ _ssh_ciphers
+ return 0
+ ;;
+ -m)
+ _ssh_macs
+ return 0
+ ;;
+ -l)
+ COMPREPLY=( $( compgen -u -- "$cur" ) )
+ return 0
+ ;;
+ -o)
+ _ssh_options
+ return 0
+ ;;
+ -w)
+ _available_interfaces
+ return 0
+ ;;
+ -b)
+ _ssh_bindaddress
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -F* ]]; then
+ cur=${cur#-F}
+ _filedir
+ # Prefix completions with '-F'
+ COMPREPLY=( "${COMPREPLY[@]/#/-F}" )
+ cur=-F$cur # Restore cur
+ elif [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-1 -2 -4 -6 -A -a -C -f -g -K -k -M \
+ -N -n -q -s -T -t -V -v -X -v -Y -y -b -b -c -D -e -F \
+ -i -L -l -m -O -o -p -R -S -w' -- "$cur" ) )
+ else
+ # Search COMP_WORDS for '-F configfile' or '-Fconfigfile' argument
+ set -- "${COMP_WORDS[@]}"
+ while [ $# -gt 0 ]; do
+ if [ "${1:0:2}" = -F ]; then
+ if [ ${#1} -gt 2 ]; then
+ configfile="$(dequote "${1:2}")"
+ else
+ shift
+ [ "$1" ] && configfile="$(dequote "$1")"
+ fi
+ break
+ fi
+ shift
+ done
+ _known_hosts_real -a -F "$configfile" "$cur"
+ if [ $COMP_CWORD -ne 1 ]; then
+ _compopt_o_filenames
+ COMPREPLY=( "${COMPREPLY[@]}" $( compgen -c -- "$cur" ) )
+ fi
+ fi
+
+ return 0
+}
+shopt -u hostcomplete && complete -F _ssh ssh slogin autossh
+
+# sftp(1) completion
+#
+_sftp()
+{
+ local cur prev configfile
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ _ssh_suboption_check && return 0
+
+ case $prev in
+ -b|-F|-P)
+ _filedir
+ return 0
+ ;;
+ -o)
+ _ssh_options
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -F* ]]; then
+ cur=${cur#-F}
+ _filedir
+ # Prefix completions with '-F'
+ COMPREPLY=( "${COMPREPLY[@]/#/-F}" )
+ cur=-F$cur # Restore cur
+ elif [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-1 -C -v -B -b -F -o -P -R -S -s' \
+ -- "$cur" ) )
+ else
+ # Search COMP_WORDS for '-F configfile' argument
+ set -- "${COMP_WORDS[@]}"
+ while [ $# -gt 0 ]; do
+ if [ "${1:0:2}" = -F ]; then
+ if [ ${#1} -gt 2 ]; then
+ configfile="$(dequote "${1:2}")"
+ else
+ shift
+ [ "$1" ] && configfile="$(dequote "$1")"
+ fi
+ break
+ fi
+ shift
+ done
+ _known_hosts_real -a -F "$configfile" "$cur"
+ fi
+
+ return 0
+}
+shopt -u hostcomplete && complete -F _sftp sftp
+
+# things we want to backslash escape in scp paths
+_scp_path_esc='[][(){}<>",:;^&!$=?`|\\'"'"'[:space:]]'
+
+# Complete remote files with ssh. If the first arg is -d, complete on dirs
+# only. Returns paths escaped with three backslashes.
+_scp_remote_files()
+{
+ local IFS=$'\n'
+
+ # remove backslash escape from the first colon
+ cur=${cur/\\:/:}
+
+ local userhost=${cur%%?(\\):*}
+ local path=${cur#*:}
+
+ # unescape (3 backslashes to 1 for chars we escaped)
+ path=$( sed -e 's/\\\\\\\('$_scp_path_esc'\)/\\\1/g' <<<"$path" )
+
+ # default to home dir of specified user on remote host
+ if [ -z "$path" ]; then
+ path=$(ssh -o 'Batchmode yes' $userhost pwd 2>/dev/null)
+ fi
+
+ local files
+ if [ "$1" = -d ] ; then
+ # escape problematic characters; remove non-dirs
+ files=$( ssh -o 'Batchmode yes' $userhost \
+ command ls -aF1d "$path*" 2>/dev/null | \
+ sed -e 's/'$_scp_path_esc'/\\\\\\&/g' -e '/[^\/]$/d' )
+ else
+ # escape problematic characters; remove executables, aliases, pipes
+ # and sockets; add space at end of file names
+ files=$( ssh -o 'Batchmode yes' $userhost \
+ command ls -aF1d "$path*" 2>/dev/null | \
+ sed -e 's/'$_scp_path_esc'/\\\\\\&/g' -e 's/[*@|=]$//g' \
+ -e 's/[^\/]$/& /g' )
+ fi
+ COMPREPLY=( "${COMPREPLY[@]}" $files )
+}
+
+# This approach is used instead of _filedir to get a space appended
+# after local file/dir completions, and -o nospace retained for others.
+# If first arg is -d, complete on directory names only. The next arg is
+# an optional prefix to add to returned completions.
+_scp_local_files()
+{
+ local IFS=$'\n'
+
+ local dirsonly=false
+ if [ "$1" = -d ]; then
+ dirsonly=true
+ shift
+ fi
+
+ if $dirsonly ; then
+ COMPREPLY=( "${COMPREPLY[@]}" $( command ls -aF1d $cur* 2>/dev/null | \
+ sed -e "s/$_scp_path_esc/\\\\&/g" -e '/[^\/]$/d' -e "s/^/$1/") )
+ else
+ COMPREPLY=( "${COMPREPLY[@]}" $( command ls -aF1d $cur* 2>/dev/null | \
+ sed -e "s/$_scp_path_esc/\\\\&/g" -e 's/[*@|=]$//g' \
+ -e 's/[^\/]$/& /g' -e "s/^/$1/") )
+ fi
+}
+
+# scp(1) completion
+#
+_scp()
+{
+ local configfile cur prev prefix
+
+ COMPREPLY=()
+ _get_comp_words_by_ref -n : cur prev
+
+ _ssh_suboption_check && {
+ COMPREPLY=( "${COMPREPLY[@]/%/ }" )
+ return 0
+ }
+
+ case $prev in
+ -l|-P)
+ return 0
+ ;;
+ -F|-i|-S)
+ _filedir
+ type compopt &>/dev/null && compopt +o nospace
+ return 0
+ ;;
+ -c)
+ _ssh_ciphers
+ COMPREPLY=( "${COMPREPLY[@]/%/ }" )
+ return 0
+ ;;
+ -o)
+ _ssh_options
+ return 0
+ ;;
+ esac
+
+ _expand || return 0
+
+ if [[ "$cur" == *:* ]]; then
+ _scp_remote_files
+ return 0
+ fi
+
+ if [[ "$cur" == -F* ]]; then
+ cur=${cur#-F}
+ prefix=-F
+ else
+ # Search COMP_WORDS for '-F configfile' or '-Fconfigfile' argument
+ set -- "${COMP_WORDS[@]}"
+ while [ $# -gt 0 ]; do
+ if [ "${1:0:2}" = -F ]; then
+ if [ ${#1} -gt 2 ]; then
+ configfile="$(dequote "${1:2}")"
+ else
+ shift
+ [ "$1" ] && configfile="$(dequote "$1")"
+ fi
+ break
+ fi
+ shift
+ done
+
+ case $cur in
+ -*)
+ COMPREPLY=( $( compgen -W '-1 -2 -4 -6 -B -C -c -F -i -l -o \
+ -P -p -q -r -S -v' -- "$cur" ) )
+ COMPREPLY=( "${COMPREPLY[@]/%/ }" )
+ return 0
+ ;;
+ */*)
+ # pass through
+ ;;
+ *)
+ _known_hosts_real -c -a -F "$configfile" "$cur"
+ ;;
+ esac
+ fi
+
+ _scp_local_files "$prefix"
+
+ return 0
+}
+complete -F _scp -o nospace scp
+
+# ssh-copy-id(1) completion
+#
+_ssh_copy_id()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -i)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-i' -- "$cur" ) )
+ else
+ _known_hosts_real -a "$cur"
+ fi
+
+ return 0
+}
+complete -F _ssh_copy_id ssh-copy-id
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/sshfs b/completions/sshfs
new file mode 100644
index 00000000..d7945f88
--- /dev/null
+++ b/completions/sshfs
@@ -0,0 +1,34 @@
+# sshfs(1) completion
+
+have sshfs &&
+_sshfs()
+{
+ local cur userhost path
+
+ COMPREPLY=()
+ _get_comp_words_by_ref -n : cur
+
+ _expand || return 0
+
+ if [[ "$cur" == *:* ]] && type _scp_remote_files &>/dev/null ; then
+ _scp_remote_files -d
+ # unlike scp and rsync, sshfs works with 1 backslash instead of 3
+ COMPREPLY=( "${COMPREPLY[@]//\\\\\\/\\}" )
+ return 0
+ fi
+
+ [[ "$cur" == */* ]] || _known_hosts_real -c -a "$cur"
+
+ type _scp_local_files &>/dev/null && _scp_local_files -d
+
+ return 0
+} &&
+complete -F _sshfs -o nospace sshfs
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/strace b/completions/strace
new file mode 100644
index 00000000..0ee27377
--- /dev/null
+++ b/completions/strace
@@ -0,0 +1,103 @@
+# bash completion for strace
+
+have strace &&
+_strace()
+{
+ local cur prev offset i syscalls arch unistd
+
+ # check if we're still completing strace
+ offset=0
+ for (( i=1; i <= COMP_CWORD; i++ )); do
+ case ${COMP_WORDS[$i]} in
+ -o|-e|-p)
+ i=$((i+1))
+ continue
+ ;;
+ -*)
+ continue
+ ;;
+ esac
+ offset=$i
+ break
+ done
+
+ if [ $offset -gt 0 ]; then
+ # FAIL: _command_offset is not defined anywhere. Guillame?
+ _command_offset $offset
+ else
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -e)
+ if [[ "$cur" == *=* ]]; then
+ prev=${cur/=*/}
+ cur=${cur/*=/}
+
+ # Import arch-specific syscalls -- not foolproof IMHO
+ #+ --David Paleino
+ arch=$(command uname -m)
+ syscalls=$(awk '/^#define __NR/ {print $2}' \
+ /usr/include/asm/unistd.h | sed -e \
+ 's/__NR_//')
+ if [ -z "$syscalls" ]; then
+ if [[ "$arch" == *86 ]]; then
+ unistd=/usr/include/asm/unistd_32.h
+ else
+ unistd=/usr/include/asm/unistd_64.h
+ fi
+ syscalls=$(awk '/^#define __NR/ {print $2}' \
+ $unistd | sed -e 's/__NR_//')
+ fi
+
+ case $prev in
+ trace)
+ COMPREPLY=( $( compgen -W "$syscalls file process
+ network signal ipc desc all none" -- "$cur") )
+ return 0
+ ;;
+ esac
+ else
+ COMPREPLY=( $( compgen -S"=" -W 'trace abbrev verbose raw
+ signal read write' -- "$cur" ) )
+ fi
+ return 0
+ ;;
+ -o)
+ _filedir
+ return 0
+ ;;
+ -p)
+ _pids
+ return 0
+ ;;
+ -S)
+ COMPREPLY=( $( compgen -W 'time calls name nothing' \
+ -- "$cur" ) )
+ return 0
+ ;;
+ -u)
+ _allowed_users
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-c -d -f -ff -F --help -i -q \
+ -r -t -tt -ttt -T -v -V -x -xx -a -e -o -O -p \
+ -s -S -u -E' -- "$cur" ) )
+ else
+ COMPREPLY=( $( compgen -c -- "$cur" ) )
+ fi
+ fi
+} &&
+complete -F _strace -o default strace
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/svk b/completions/svk
new file mode 100644
index 00000000..bda5997a
--- /dev/null
+++ b/completions/svk
@@ -0,0 +1,225 @@
+# svk(1) completion
+
+have svk &&
+_svk()
+{
+ local cur prev commands options command
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ commands='add admin annotate ann blame praise cat checkout co cleanup \
+ cmerge cm commit ci copy cp delete del remove rm depotmap \
+ depot describe desc diff di help h ? import info list ls log \
+ merge mirror mi mkdir move mv ren rename patch propdel pd pdel \
+ propedit pe pedit propget pg pget proplist pl plist propset ps \
+ pset pull push resolved revert smerge sm status st stat switch \
+ sw sync sy update up verify'
+
+ if [[ $COMP_CWORD -eq 1 ]] ; then
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--version' -- "$cur" ) )
+ else
+ COMPREPLY=( $( compgen -W "$commands" -- "$cur" ) )
+ fi
+ else
+ case $prev in
+ -F|--file|--targets)
+ _filedir
+ return 0;
+ ;;
+ --encoding)
+ COMPREPLY=( $( compgen -W \
+ '$( iconv --list | sed -e "s@//@@;" )' -- "$cur" ) )
+ return 0;
+ ;;
+ esac
+
+ command=${COMP_WORDS[1]}
+
+ if [[ "$cur" == -* ]]; then
+ # possible options for the command
+ case $command in
+ add)
+ options=' --non-recursive -N -q --quiet'
+ ;;
+ blame|annotate|ann|praise)
+ options='-r --revisions -x --cross'
+ ;;
+ cat)
+ options='-r --revision'
+ ;;
+ checkout|co)
+ options='-r --revision -q --quiet -N --non-recursive -l \
+ --list -d --detach --export --relocate --purge'
+ ;;
+ cleanup)
+ options='-a --all'
+ ;;
+ cmerge|cm)
+ options='-c --change -l --log -r --revision -a --auto \
+ --verbatim --no-ticket -m --message -F --file \
+ --template --encoding -P --patch -S --sign -C \
+ --check-only --direct'
+ ;;
+ commit|ci)
+ options='--import -m --message -F --file --encoding \
+ --template -P --patch -S --sign -C --check-only -N \
+ --non-recursive --direct'
+ ;;
+ copy|cp)
+ options='-r --revision -p --parent -q --quiet -m --message \
+ -F --file --template --encoding -P --patch -S --sign \
+ -C --check-only --direct'
+ ;;
+ delete|del|remove|rm)
+ options='-k --keep-local -m --message -F --file --encoding \
+ --template -P --patch -S --sign -C --check-only \
+ --direct'
+ ;;
+ depotmap|depot)
+ options='-i --init -l --list -d --detach --relocate'
+ ;;
+ diff|di)
+ options='-r --revision -s --summarize -b --verbose -N \
+ --non-recursive'
+ ;;
+ import)
+ options='-f --from-checkout -t --to-checkout -m --message \
+ -F --file --template --encoding -P --patch -S --sign \
+ -C --check-only -N --non-recursive --direct'
+ ;;
+ list|ls)
+ options='-r --revision -v --verbose -R --recursive -d \
+ --depth -f --full-path'
+ ;;
+ log)
+ options='-r --revision -l --limit -q --quiet -x --cross \
+ -v --verbose'
+ ;;
+ merge)
+ options='-r --revision -c --change -I --incremental -a \
+ --auto -l --log -s --sync -t --to -f --from \
+ --verbatim --no-ticket --track-rename -m --message \
+ -F --file --template --encoding -P --patch -S --sign \
+ -C --check-only --direct'
+ ;;
+ mirror|mi)
+ options='-l --list -d --detach --relocate --recover \
+ --unlock --upgrade'
+ ;;
+ mkdir)
+ options='-p --parent -m --message -F --file --template \
+ --encoding -P --patch -S --sign -C --check-only \
+ --direct'
+ ;;
+ move|mv|rename|ren)
+ options='-r --revision -p --parent -q --quiet -m \
+ --message -F --file --encoding --template -P --patch \
+ -S --sign -C --check-only --direct'
+ ;;
+ patch)
+ options='--depot'
+ ;;
+ propdel|propset|pdel|pset|pd|ps)
+ options='-R --recursive -r --revision --revprop -m \
+ --message -F --file --template --encoding -P --patch \
+ -S --sign -C --check-only -q --quiet --direct'
+ ;;
+ propedit|pedit|pe)
+ options='-R --recursive -r --revision --revprop -m \
+ --message -F --file --template --encoding -P --patch \
+ -S --sign -C --check-only --direct'
+ ;;
+ propget|pget|pg)
+ options='-R --recursive -r --revision --revprop --strict'
+ ;;
+ proplist|plist|pl)
+ options='-R --recursive -v --verbose \
+ -r --revision --revprop'
+ ;;
+ pull)
+ options='-a --all -l --lump'
+ ;;
+ push)
+ options='-f --from -l --lump -C --check -P --patch -S \
+ --sign --verbatim'
+ ;;
+ resolved)
+ options='-R --recursive'
+ ;;
+ revert)
+ options='-R --recursive -q --quiet'
+ ;;
+ smerge|sm)
+ options='-I --incremental -l --log -B --baseless -b \
+ --base -s --sync -t --to -f --from --verbatim \
+ --no-ticket --track-rename --host --remoterev -m \
+ --message -F --file --template --encoding -P --patch \
+ -S --sign -C --check-only --direct'
+ ;;
+ status|stat|st)
+ options='-q --quiet --no-ignore -N --non-recursive -v \
+ --verbose'
+ ;;
+ switch|sw)
+ options='-r --revision -d --detach -q --quiet'
+ ;;
+ sync|sy)
+ options='-a --all -s --skipto -t --torev'
+ ;;
+ update|up)
+ options='-r --revision -N --non-recursive -C --check-only \
+ -s --sync -m --merge -q --quiet'
+ ;;
+ esac
+ options="$options --help -h"
+
+ COMPREPLY=( $( compgen -W "$options" -- "$cur" ) )
+ else
+ case $command in
+ help|h|\?)
+ COMPREPLY=( $( compgen -W "$commands \
+ environment commands intro" -- "$cur" ) )
+ ;;
+ admin)
+ COMPREPLY=( $( compgen -W 'help deltify dump hotcopy \
+ list-dblogs list-unused-dblogs load lstxns recover \
+ rmtxns setlog verify rmcache' -- "$cur" ) )
+ ;;
+ patch)
+ COMPREPLY=( $( compgen -W '--ls --list --cat --view \
+ --regen --regenerate --up --update --apply --rm \
+ --delete' -- "$cur" ) )
+ ;;
+ sync)
+ COMPREPLY=( $( compgen -W "$( svk mirror --list \
+ 2>/dev/null | awk '/^\//{print $1}' )" -- "$cur" ) )
+ ;;
+ co|checkout|push|pull)
+ if [[ "$cur" == //*/* ]]; then
+ path=${cur%/*}/
+ else
+ path=//
+ fi
+ COMPREPLY=( $( compgen -W "$( svk list $path 2>/dev/null | \
+ sed -e 's|\(.*\)|'$path'\1|')" -- "$cur" ) )
+ ;;
+ *)
+ _filedir
+ ;;
+ esac
+ fi
+ fi
+
+ return 0
+} &&
+complete -F _svk svk
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/sysbench b/completions/sysbench
new file mode 100644
index 00000000..3b309a9a
--- /dev/null
+++ b/completions/sysbench
@@ -0,0 +1,175 @@
+# bash completion for sysbench
+
+# We set -o nospace and turn it off in quite a few places for bash < 4
+# reasons; assuming bash >= 4 we could instead not turn it on
+# initially but only in the few cases where it's actually needed.
+
+have sysbench &&
+_sysbench()
+{
+ COMPREPLY=()
+ local cur prev words split=false
+ _get_comp_words_by_ref -n = cur prev words
+
+ # long options need the "=" (whitespace split doesn't work), but we split
+ # internally to make processing easier
+ _split_longopt && split=true
+
+ case $prev in
+ --num-threads|--max-requests|--max-time|--thread-stack-size| \
+ --help|--version|help|version)
+ return 0
+ ;;
+ --init-rng|--debug|--validate)
+ compopt +o nospace &>/dev/null
+ COMPREPLY=( $( compgen -W 'on off' -- "$cur" ) )
+ return 0
+ ;;
+ --test)
+ compopt +o nospace &>/dev/null
+ COMPREPLY=( $( compgen -W 'fileio cpu memory threads mutex oltp' \
+ -- "$cur" ) )
+ return 0
+ ;;
+ --cpu-max-prime)
+ return 0
+ ;;
+ --file-test-mode)
+ compopt +o nospace &>/dev/null
+ COMPREPLY=( $( compgen -W 'seqwr seqrewr seqrd rndrd rndwr rndrw' \
+ -- "$cur" ) )
+ return 0
+ ;;
+ --file-io-mode)
+ compopt +o nospace &>/dev/null
+ COMPREPLY=( $( compgen -W 'sync async fastmmap slowmmap' \
+ -- "$cur" ) )
+ return 0
+ ;;
+ --file-extra-flags)
+ compopt +o nospace &>/dev/null
+ COMPREPLY=( $( compgen -W 'sync dsync direct' -- "$cur" ) )
+ return 0
+ ;;
+ --file-fsync-all|--file-fsync-end)
+ compopt +o nospace &>/dev/null
+ COMPREPLY=( $( compgen -W 'on off' -- "$cur" ) )
+ return 0
+ ;;
+ --file-fsync-mode)
+ compopt +o nospace &>/dev/null
+ COMPREPLY=( $( compgen -W 'fsync fdatasync' -- "$cur" ) )
+ return 0
+ ;;
+ --memory-scope)
+ compopt +o nospace &>/dev/null
+ COMPREPLY=( $( compgen -W 'global local' -- "$cur" ) )
+ return 0
+ ;;
+ --memory-hugetlb)
+ compopt +o nospace &>/dev/null
+ COMPREPLY=( $( compgen -W 'on off' -- "$cur" ) )
+ return 0
+ ;;
+ --memory-oper)
+ compopt +o nospace &>/dev/null
+ COMPREPLY=( $( compgen -W 'read write none' -- "$cur" ) )
+ return 0
+ ;;
+ --memory-access-mode)
+ compopt +o nospace &>/dev/null
+ COMPREPLY=( $( compgen -W 'seq rnd' -- "$cur" ) )
+ return 0
+ ;;
+ --oltp-test-mode)
+ compopt +o nospace &>/dev/null
+ COMPREPLY=( $( compgen -W 'simple complex nontrx sp' -- "$cur" ) )
+ return 0
+ ;;
+ --oltp-read-only|--oltp-skip-trx|--oltp-quto-inc|--mysql-ssl)
+ compopt +o nospace &>/dev/null
+ COMPREPLY=( $( compgen -W 'on off' -- "$cur" ) )
+ return 0
+ ;;
+ --oltp-nontrx-mode)
+ compopt +o nospace &>/dev/null
+ COMPREPLY=( $( compgen -W 'select update_key update_nokey insert
+ delete' -- "$cur" ) )
+ return 0
+ ;;
+ --oltp-dist-type)
+ compopt +o nospace &>/dev/null
+ COMPREPLY=( $( compgen -W 'uniform gaussian special' -- "$cur" ) )
+ return 0
+ ;;
+ --db-driver)
+ compopt +o nospace &>/dev/null
+ COMPREPLY=( $( compgen -W "$( $1 --test=oltp help 2>/dev/null |
+ sed -e '/^.*database drivers:/,/^$/!d' \
+ -ne 's/^ *\([^ ]*\) .*/\1/p' )" -- "$cur" ) )
+ return 0
+ ;;
+ --db-ps-mode)
+ compopt +o nospace &>/dev/null
+ COMPREPLY=( $( compgen -W 'auto disable' -- "$cur" ) )
+ return 0
+ ;;
+ --mysql-socket)
+ compopt +o nospace &>/dev/null
+ _filedir sock
+ return 0
+ ;;
+ --mysql-table-engine)
+ compopt +o nospace &>/dev/null
+ COMPREPLY=( $( compgen -W 'myisam innodb bdb heap ndbcluster
+ federated' -- "$cur" ) )
+ return 0
+ ;;
+ --mysql-engine-trx)
+ compopt +o nospace &>/dev/null
+ COMPREPLY=( $( compgen -W 'yes no auto' -- "$cur" ) )
+ return 0
+ ;;
+ --*)
+ $split && return 0
+ ;;
+ esac
+
+ # find out which test we're running
+ local i test
+ for (( i=1 ; $i < ${#words[@]}-1 ; i++ )); do
+ if [[ ${words[i]} == --test* ]]; then
+ test=${words[i]#*=}
+ break
+ fi
+ done
+
+ local opts="--num-threads= --max-requests= --max-time= --thread-stack-size=
+ --init-rng= --debug= --validate= --help --version"
+
+ if [[ $test ]]; then
+ local help=( $( _parse_help $1 "--test=$test help" ) )
+ opts="$opts ${help[@]/%/=} prepare run cleanup help version"
+ else
+ opts="$opts --test="
+ fi
+
+ if [[ "$cur" == -* || ! $test ]]; then
+ COMPREPLY=( $( compgen -W "$opts" -- "$cur" ) )
+ [[ ${#COMPREPLY[@]} == 1 && ${COMPREPLY[0]} != *= ]] && \
+ compopt +o nospace &>/dev/null
+ else
+ compopt +o nospace &>/dev/null
+ COMPREPLY=( $( compgen -W "prepare run cleanup help version" \
+ -- "$cur" ) )
+ fi
+} &&
+complete -F _sysbench -o nospace sysbench
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/sysctl b/completions/sysctl
new file mode 100644
index 00000000..ac25f4ef
--- /dev/null
+++ b/completions/sysctl
@@ -0,0 +1,24 @@
+# bash completion for sysctl
+
+have sysctl &&
+_sysctl()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ COMPREPLY=( $( compgen -W \
+ "$( PATH="$PATH:/sbin" sysctl -N -a 2>/dev/null )" -- "$cur" ) )
+
+ return 0
+} &&
+complete -F _sysctl sysctl
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/sysv-rc b/completions/sysv-rc
new file mode 100644
index 00000000..735a4042
--- /dev/null
+++ b/completions/sysv-rc
@@ -0,0 +1,110 @@
+# update-rc.d(8) completion
+#
+# Copyright (C) 2004 Servilio Afre Puentes <servilio@gmail.com>
+
+have update-rc.d &&
+_update_rc_d()
+{
+ local cur prev sysvdir services options valid_options
+
+ _get_comp_words_by_ref cur prev
+
+ [ -d /etc/rc.d/init.d ] && sysvdir=/etc/rc.d/init.d \
+ || sysvdir=/etc/init.d
+
+ services=( $(printf '%s ' $sysvdir/!(README*|*.sh|*.dpkg*|*.rpm@(orig|new|save))) )
+ services=( ${services[@]#$sysvdir/} )
+ options=( -f -n )
+
+ if [[ $COMP_CWORD -eq 1 || "$prev" == -* ]]; then
+ valid_options=( $( \
+ tr " " "\n" <<<"${COMP_WORDS[@]} ${options[@]}" \
+ | sed -ne "/$( sed "s/ /\\|/g" <<<"${options[@]}" )/p" \
+ | sort | uniq -u \
+ ) )
+ COMPREPLY=( $( compgen -W '${options[@]} ${services[@]}' \
+ -X '$( tr " " "|" <<<${COMP_WORDS[@]} )' -- "$cur" ) )
+ elif [[ "$prev" == ?($( tr " " "|" <<<${services[@]} )) ]]; 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@gmail.com>
+#
+have invoke-rc.d &&
+_invoke_rc_d()
+{
+ local cur prev sysvdir services options valid_options
+
+ _get_comp_words_by_ref cur prev
+
+ [ -d /etc/rc.d/init.d ] && sysvdir=/etc/rc.d/init.d \
+ || sysvdir=/etc/init.d
+
+ services=( $( printf '%s ' \
+ $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=( $( \
+ tr " " "\n" <<<"${COMP_WORDS[@]} ${options[@]}" \
+ | sed -ne "/$( sed "s/ /\\\\|/g" <<<"${options[@]}" )/p" \
+ | sort | uniq -u \
+ ) )
+ COMPREPLY=( $( compgen -W '${valid_options[@]} ${services[@]}' -- "$cur" ) )
+ elif [ -x $sysvdir/$prev ]; then
+ COMPREPLY=( $( compgen -W '`sed -e "y/|/ /" \
+ -ne "s/^.*Usage:[ ]*[^ ]*[ ]*{*\([^}\"]*\).*$/\1/p" \
+ $sysvdir/$prev`' -- "$cur" ) )
+ else
+ COMPREPLY=()
+ fi
+
+ return 0
+} &&
+complete -F _invoke_rc_d invoke-rc.d
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/tar b/completions/tar
new file mode 100644
index 00000000..a5c02490
--- /dev/null
+++ b/completions/tar
@@ -0,0 +1,72 @@
+# bash completion for GNU tar
+
+have tar && {
+_tar()
+{
+ local cur ext regex tar untar
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [ $COMP_CWORD -eq 1 ]; then
+ COMPREPLY=( $( compgen -W 'c t x u r d A' -- "$cur" ) )
+ return 0
+ fi
+
+ case ${COMP_WORDS[1]} in
+ ?(-)[cr]*f)
+ _filedir
+ return 0
+ ;;
+ +([^IZzJjy])f)
+ ext='@(@(tar|gem|spkg)?(.@(Z|[gx]z|bz?(2)|lzma))|t@([glx]z|bz?(2)))'
+ regex='\(\(tar\|gem\|spkg\)\(\.\(Z\|[gx]z\|bz?(2)\|lzma\)\)\?\|t\([glx]z\|bz2\?\)\)'
+ ;;
+ *[Zz]*f)
+ ext='@(t?(ar.)|gem.|spkg.)@(gz|Z)'
+ regex='\(t\(ar\.\)\?\|gem\.\|spkg\.\)\(gz\|Z\)'
+ ;;
+ *[Ijy]*f)
+ ext='@(@(t?(ar.)|gem.)bz?(2)|spkg)'
+ regex='\(\(t\(ar\.\)\?\|gem\.\)bz2\?\|spkg\)'
+ ;;
+ *[J]*f)
+ ext='@(t?(ar.)|gem.|spkg.)@(lz?(ma)|xz)'
+ regex='\(t\(ar\.\)\?\|gem\.\|spkg\.\)\(lzma\|xz\)\?'
+ ;;
+ *)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ if [[ "$COMP_LINE" == *$ext' ' ]]; then
+ # complete on files in tar file
+ #
+ # get name of tar file from command line
+ tar=$( sed -e 's/^.* \([^ ]*'$regex'\) .*$/\1/' <<<"$COMP_LINE" )
+ # devise how to untar and list it
+ untar=t${COMP_WORDS[1]//[^Izjyf]/}
+
+ local IFS=$'\n'
+ COMPREPLY=( $( compgen -W "$( printf '%s\n' $( 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 -o dirnames tar ||
+ complete -F _tar tar
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/tcpdump b/completions/tcpdump
new file mode 100644
index 00000000..259f13e0
--- /dev/null
+++ b/completions/tcpdump
@@ -0,0 +1,37 @@
+# bash completion for tcpdump
+
+have tcpdump &&
+_tcpdump()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/unace b/completions/unace
new file mode 100644
index 00000000..9d27ef50
--- /dev/null
+++ b/completions/unace
@@ -0,0 +1,29 @@
+# unace(1) completion
+
+have unace &&
+_unace()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]] ; then
+ COMPREPLY=( $( compgen -W '-c -c- -f -f- -o -o- -p -y -y-' -- "$cur" ) )
+ else
+ if [ $COMP_CWORD -eq 1 ]; then
+ COMPREPLY=( $( compgen -W 'e l t v x' -- "$cur" ) )
+ else
+ _filedir ace
+ fi
+ fi
+} &&
+complete -F _unace unace
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/unrar b/completions/unrar
new file mode 100644
index 00000000..0a4fe27a
--- /dev/null
+++ b/completions/unrar
@@ -0,0 +1,32 @@
+# unrar(1) completion
+
+have unrar &&
+_unrar()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]] ; then
+ COMPREPLY=( $( compgen -W '-ad -ap -av- -c- -cfg- -cl -cu \
+ -dh -ep -f -idp -ierr -inul -kb -o+ -o- -ow -p -p- -r -ta \
+ -tb -tn -to -u -v -ver -vp -x -x@ -y' -- "$cur" ) )
+ else
+ if [ $COMP_CWORD -eq 1 ]; then
+ COMPREPLY=( $( compgen -W 'e l lb lt p t v vb vt x' -- "$cur" ) )
+ else
+ _filedir rar
+ fi
+ fi
+
+} &&
+complete -F _unrar unrar
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/update-alternatives b/completions/update-alternatives
new file mode 100644
index 00000000..ebed294d
--- /dev/null
+++ b/completions/update-alternatives
@@ -0,0 +1,100 @@
+# bash completion for update-alternatives
+
+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=( $( compgen -W '$( command ls $admindir )' -- "$cur" ) )
+}
+
+_update_alternatives()
+{
+ local cur prev mode args i
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ --altdir|--admindir)
+ _filedir -d
+ return 0
+ ;;
+ --help|--usage|--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|set) ]]; then
+ mode=${COMP_WORDS[i]}
+ args=$(($COMP_CWORD - i))
+ break
+ fi
+ done
+
+ case $mode in
+ --install)
+ case $args in
+ 1|3)
+ _filedir
+ ;;
+ 2)
+ _installed_alternatives
+ ;;
+ 4)
+ # priority - no completions
+ ;;
+ *)
+ case $((args % 4)) in
+ 0|2)
+ _filedir
+ ;;
+ 1)
+ COMPREPLY=( $( compgen -W '--slave' -- "$cur" ) )
+ ;;
+ 3)
+ _installed_alternatives
+ ;;
+ esac
+ esac
+ ;;
+ --remove|--set)
+ case $args in
+ 1)
+ _installed_alternatives
+ ;;
+ 2)
+ _filedir
+ ;;
+ esac
+ ;;
+ --auto|--remove-all|--display|--config)
+ _installed_alternatives
+ ;;
+ *)
+ COMPREPLY=( $( compgen -W '--verbose --quiet --help --version \
+ --altdir --admindir --install --remove --auto --display \
+ --config --set' -- "$cur" ) )
+ esac
+}
+complete -F _update_alternatives update-alternatives alternatives
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/util-linux b/completions/util-linux
new file mode 100644
index 00000000..f45ffd56
--- /dev/null
+++ b/completions/util-linux
@@ -0,0 +1,76 @@
+# Completions for tools included in util-linux (not necessarily Linux specific)
+
+# renice(8) completion
+#
+have renice &&
+_renice()
+{
+ local command cur curopt i
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+ command=$1
+
+ i=0
+ # walk back through command line and find last option
+ while [[ $i -le $COMP_CWORD && ${#COMPREPLY[@]} -eq 0 ]]; do
+ curopt=${COMP_WORDS[COMP_CWORD-$i]}
+ case "$curopt" in
+ -u)
+ _allowed_users
+ ;;
+ -g)
+ _pgids
+ ;;
+ -p|$command)
+ _pids
+ ;;
+ esac
+ i=$(( ++i ))
+ done
+} &&
+complete -F _renice renice
+
+# kill(1) completion
+#
+have kill &&
+_kill()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ $COMP_CWORD -eq 1 && "$cur" == -* ]]; then
+ # return list of available signals
+ _signals
+ else
+ # return list of available PIDs
+ _pids
+ fi
+} &&
+complete -F _kill kill
+
+# look(1) completion
+#
+have look &&
+_look()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [ $COMP_CWORD = 1 ]; then
+ COMPREPLY=( $( compgen -W '$(look "$cur" 2>/dev/null)' -- "$cur" ) )
+ fi
+} &&
+complete -F _look -o default look
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/vncviewer b/completions/vncviewer
new file mode 100644
index 00000000..296eb8af
--- /dev/null
+++ b/completions/vncviewer
@@ -0,0 +1,130 @@
+# bash completion for vncviewer
+
+have vncviewer &&
+_vncviewer_bootstrap()
+{
+ local fname
+ case $(_realcommand vncviewer) in
+ *xvnc4viewer) fname=_xvnc4viewer ;;
+ *tightvncviewer) fname=_tightvncviewer ;;
+ *) fname=_known_hosts ;;
+ esac
+
+ # Install real completion for subsequent completions
+ complete -F $fname vncviewer
+ $fname # Generate completions once for now
+ unset -f _vncviewer_bootstrap
+} &&
+complete -F _vncviewer_bootstrap vncviewer
+
+have tightvncviewer &&
+_tightvncviewer()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -passwd)
+ _filedir
+ return 0
+ ;;
+ -encodings)
+ COMPREPLY=( $( compgen -W 'copyrect tight hextile zlib \
+ corre rre raw' -- "$cur" ) )
+ return 0
+ ;;
+ -via)
+ _known_hosts_real "$cur"
+ return 0
+ ;;
+ esac
+
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-help -listen -via -shared -noshared\
+ -viewonly -fullscreen -noraiseonbeep -passwd -encodings\
+ -bgr233 -owncmap -truecolour -truecolor -depth \
+ -compresslevel -quality -nojpeg -nocursorshape \
+ -x11cursor' -- $cur ) )
+ else
+ _known_hosts_real "$cur"
+ fi
+} &&
+complete -F _tightvncviewer tightvncviewer
+
+
+# NOTE: - VNC Viewer options are case insensitive.
+# Preferred case is taken from -help.
+# - Both single dash (-) and double dash (--) are allowed as option prefix
+have xvnc4viewer &&
+_xvnc4viewer()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ # Convert double dash to single dash
+ case ${prev/#--/-} in
+ # -passwd, -PasswordFile
+ -[pP][aA][sS][sS][wW][dD]|-[pP][aA][sS][sS][wW][oO][rR][dD][fF][iI][lL][eE])
+ _filedir
+ return 0
+ ;;
+ # -PreferredEncoding
+ -[pP][rR][eE][fF][eE][rR][rR][eE][dD][eE][nN][cC][oO][dD][iI][nN][gG])
+ COMPREPLY=( $( compgen -W 'zrle hextile raw' -- $cur ) )
+ return 0
+ ;;
+ # -via
+ -[vV][iI][aA])
+ _known_hosts_real "$cur"
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* || "$cur" == --* ]]; then
+ # Default to vncviewer camelcase options, see `vncviewer -help'
+ local dash options=( \
+ AcceptClipboard AutoSelect DebugDelay display \
+ DotWhenNoCursor FullColor FullColour FullScreen \
+ geometry help listen Log \
+ LowColourLevel MenuKey name Parent \
+ passwd PasswordFile PointerEventInterval PreferredEncoding \
+ SendClipboard SendPrimary Shared UseLocalCursor \
+ via ViewOnly WMDecorationHeight WMDecorationWidth \
+ ZlibLevel \
+ )
+ [[ "$cur" == --* ]] && dash=-- || dash=-
+ # Is a `nocasematch' variable available (bash > v3.1)?
+ if shopt nocasematch 2> /dev/null | command grep -q ^nocasematch; then
+ # Variable `nocasematch' is available
+ # Use vncviewer camelcase options
+ local option oldNoCaseMatch=$(shopt -p nocasematch)
+ shopt -s nocasematch
+ COMPREPLY=( $( for option in "${options[@]}"; do
+ [[ $dash$option == "$cur"* ]] && printf '%s\n' $dash$option
+ done ) )
+ eval "$oldNoCaseMatch" 2> /dev/null
+ else
+ # Variable 'nocasematch' isn't available;
+ # Convert completions to lowercase
+ COMPREPLY=( $( compgen -W \
+ "$( tr [:upper:] [:lower:] <<<${options[@]/#/$dash} )" \
+ -- "$( tr [:upper:] [:lower:] <<<"$cur" )" ) )
+ fi
+ else
+ _known_hosts_real "$cur"
+ fi
+} &&
+complete -F _xvnc4viewer xvnc4viewer
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/vpnc b/completions/vpnc
new file mode 100644
index 00000000..722fee3a
--- /dev/null
+++ b/completions/vpnc
@@ -0,0 +1,49 @@
+# bash completion for vpnc
+
+have vpnc &&
+_vpnc()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ --pfs)
+ COMPREPLY=( $( compgen -W 'nopfs dh1 dh2 dh5 server' -- "$cur" ) )
+ return 0
+ ;;
+ --pfs)
+ COMPREPLY=( $( compgen -W 'dh1 dh2 dh5' -- "$cur" ) )
+ return 0
+ ;;
+ --pid-file|--script)
+ _filedir
+ return 0
+ ;;
+ --gateway)
+ _known_hosts_real "$cur"
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--version --print-config --help \
+ --long-help --gateway --id --username --udp --domain \
+ --xauth-inter --script --dh --pfs --enable-1des \
+ --application-version --ifname --debug --no-detach \
+ --pid-file --local-port --udp-port --disable-natt \
+ --non-inter' -- "$cur" ) )
+ else
+ COMPREPLY=( $( compgen -W '$( command ls /etc/vpnc )' -- "$cur" ) )
+ fi
+} &&
+complete -F _vpnc vpnc
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/wireless-tools b/completions/wireless-tools
new file mode 100644
index 00000000..56ba0db8
--- /dev/null
+++ b/completions/wireless-tools
@@ -0,0 +1,180 @@
+# bash completion for Linux wireless-tools
+
+[ $UNAME = Linux ] &&
+{
+
+have iwconfig &&
+_iwconfig()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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[@]}" $( compgen -W \
+ "$( iwlist ${COMP_WORDS[1]} scan | \
+ awk -F'\"' '/ESSID/ {print $2}' )" -- "$cur" ) )
+ fi
+ return 0
+ ;;
+ nwid)
+ COMPREPLY=( $( compgen -W 'on off' -- "$cur" ) )
+ return 0
+ ;;
+ channel)
+ COMPREPLY=( $( compgen -W "$( iwlist ${COMP_WORDS[1]} channel | \
+ awk '/^[ \t]*Channel/ {print $2}' )" -- "$cur" ) )
+ return 0
+ ;;
+
+ freq)
+ COMPREPLY=( $( compgen -W "$( iwlist ${COMP_WORDS[1]} channel | \
+ awk '/^[ \t]*Channel/ {print $4"G"}')" -- "$cur" ) )
+ return 0
+ ;;
+ ap)
+ COMPREPLY=( $( compgen -W 'on off any' -- "$cur" ) )
+ if [ -n "${COMP_IWLIST_SCAN:-}" ]; then
+ COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W \
+ "$( iwlist ${COMP_WORDS[1]} scan | \
+ awk -F ': ' '/Address/ {print $2}' )" -- "$cur" ) )
+ fi
+ return 0
+ ;;
+ rate)
+ COMPREPLY=( $( compgen -W 'auto fixed' -- "$cur" ) )
+ COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W \
+ "$( iwlist ${COMP_WORDS[1]} rate | \
+ awk '/^[ \t]*[0-9]/ {print $1"M"}' )" -- "$cur" ) )
+ return 0
+ ;;
+ rts|frag)
+ COMPREPLY=( $( compgen -W 'auto fixed off' -- "$cur" ) )
+ return 0
+ ;;
+ key|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
+
+
+have iwlist &&
+_iwlist()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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
+
+
+have iwspy &&
+_iwspy()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ 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
+
+
+have iwpriv &&
+_iwpriv()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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
+
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/wodim b/completions/wodim
new file mode 100644
index 00000000..abc0ff25
--- /dev/null
+++ b/completions/wodim
@@ -0,0 +1,118 @@
+# bash completion for cdrecord/wodim
+
+# We set -o nospace and turn it off in several places for bash < 4
+# reasons; assuming bash >= 4 we could instead not turn it on
+# initially but only in the few cases where it's actually needed.
+
+have cdrecord || have wodim &&
+_cdrecord()
+{
+ local cur prev i generic_options track_options track_mode
+
+ COMPREPLY=()
+ _get_comp_words_by_ref -n = cur prev
+
+ # foo=bar style option
+ if [[ "$cur" == *=* ]]; then
+ prev=${cur%%=*}
+ cur=${cur#*=}
+ case $prev in
+ textfile|cuefile|msifile)
+ compopt +o nospace &>/dev/null
+ _filedir
+ ;;
+ blank)
+ compopt +o nospace &>/dev/null
+ COMPREPLY=( $( compgen -W 'help all fast track unreserve trtail
+ unclose session' -- "$cur" ) )
+ ;;
+ driveropts)
+ if [[ $cur == *=* ]]; then
+ prev=${cur%%=*}
+ cur=${cur#*=}
+ case $prev in
+ varirec)
+ compopt +o nospace &>/dev/null
+ COMPREPLY=( $( compgen -W "-2 -1 0 1 2" \
+ -- "$cur" ) )
+ ;;
+ gigarec)
+ compopt +o nospace &>/dev/null
+ COMPREPLY=( $( compgen -W "0.6 0.7 0.8 1.0 1.2 1.3
+ 1.4" -- "$cur" ) )
+ ;;
+ tattoofile)
+ compopt +o nospace &>/dev/null
+ _filedir
+ ;;
+ esac
+ else
+ COMPREPLY=( $( compgen -W 'burnfree noburnfree varirec=
+ gigarec= audiomaster forcespeed noforcespeed speedread
+ nospeedread singlesession nosinglesession hidecdr
+ nohidecdr tattooinfo tattoofile=' -- "$cur" ) )
+ [[ ${#COMPREPLY[@]} == 1 && ${COMPREPLY[0]} != *= ]] && \
+ compopt +o nospace &>/dev/null
+ fi
+ ;;
+ driver)
+ compopt +o nospace &>/dev/null
+ COMPREPLY=( $( compgen -W "$( $1 driver=help 2>&1 | \
+ awk 'NR > 1 { print $1 }' ) help" -- "$cur" ) )
+ ;;
+ minbuf)
+ compopt +o nospace &>/dev/null
+ COMPREPLY=( $( compgen -W "$( seq 25 95 2>/dev/null )" \
+ -- "$cur" ) )
+ ;;
+ esac
+ return 0
+ fi
+
+ generic_options=( -version -v -V -d -silent -force -immed -dummy -clone \
+ -dao -sao -tao -raw -raw96r -raw96p -raw16 -multi -msinfo -toc -atip \
+ -fix -nofix -waiti -load -lock -eject -format -setdropts -checkdrive \
+ -prcap -inq -scanbus --devices -reset -abort -overburn -ignsize \
+ -useinfo -packet -noclose -text debug= kdebug= minbuf= msifile= \
+ speed= blank= fs= ts= dev= gracetime= timeout= driver= driveropts= \
+ defpregap= pktsize= mcn= textfile= cuefile= )
+ track_options=( -audio -swab -data -mode2 -xa -xa1 -xa2 -xamix -cdi \
+ -isosize -pad -nopad -shorttrack -noshorttrack -preemp -nopreemp \
+ -copy -nocopy -scms isrc= index= padsize= pregap= tsize= )
+ # 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
+ [[ ${#COMPREPLY[@]} == 1 && ${COMPREPLY[0]} != *= ]] && \
+ compopt +o nospace &>/dev/null
+} &&
+complete -F _cdrecord -o nospace cdrecord wodim
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/wol b/completions/wol
new file mode 100644
index 00000000..89a1a8ba
--- /dev/null
+++ b/completions/wol
@@ -0,0 +1,47 @@
+# wol(1) completion
+
+have wol &&
+_wol()
+{
+ local cur prev split=false
+ COMPREPLY=()
+ _get_comp_words_by_ref -n : cur prev
+ _split_longopt && split=true
+
+ case $prev in
+ -V|--version|--help|-p|--port|--passwd|-w|--wait)
+ return 0
+ ;;
+ -h|--host|-i|--ipaddr)
+ # Broadcast addresses
+ COMPREPLY=( $( PATH=$PATH:/sbin ifconfig -a 2>/dev/null | \
+ sed -ne 's/.*[[:space:]]\{1,\}Bcast:\([^[:space:]]*\).*/\1/p' \
+ -e 's/.*[[:space:]]\{1,\}broadcast[[:space:]]\{1,\}\([^[:space:]]*\).*/\1/p' ) )
+ _known_hosts_real "$cur"
+ return 0
+ ;;
+ -f|--file)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--help --version --verbose --wait --host
+ --port --file --passwd' -- "$cur" ) )
+ return 0
+ fi
+
+ _mac_addresses
+} &&
+complete -F _wol wol
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/wtf b/completions/wtf
new file mode 100644
index 00000000..a611978d
--- /dev/null
+++ b/completions/wtf
@@ -0,0 +1,36 @@
+# wtf completion
+# Raphael Droz, 25/09/2009
+
+have wtf &&
+_wtf()
+{
+ local cur prev db
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ [ "$prev" = -f ] && _filedir && return 0
+ [[ "$cur" == -* ]] && COMPREPLY=( -f ) && return 0
+
+ set -- "${COMP_WORDS[@]}"
+ while [ $# -gt 0 ]; do
+ if [ "$1" = -f ]; then
+ shift ; db=$1 ; break
+ fi
+ shift
+ done
+ [ -z $db ] && db=${ACRONYMDB:-/usr/share/misc/acronyms*}
+
+ [ ${BASH_VERSINFO[0]} -ge 4 ] && cur="${cur^^}"
+
+ COMPREPLY=( $( compgen -W "$( cut -f 1 -s $db ) -f" -- "${cur}" ) )
+} &&
+complete -F _wtf wtf
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/wvdial b/completions/wvdial
new file mode 100644
index 00000000..3b135f0a
--- /dev/null
+++ b/completions/wvdial
@@ -0,0 +1,52 @@
+# bash completion for wvdial
+
+have wvdial &&
+_wvdial()
+{
+ local cur prev config i IFS=$'\n'
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ 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"$'\n'"$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 | command grep -v '^Defaults$'))
+ # escape spaces
+ COMPREPLY=${COMPREPLY// /\\ }
+ ;;
+ esac
+
+} &&
+complete -F _wvdial wvdial
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/xhost b/completions/xhost
new file mode 100644
index 00000000..cec4adcf
--- /dev/null
+++ b/completions/xhost
@@ -0,0 +1,25 @@
+# xhost(1) completion
+
+have xhost &&
+_xhost ()
+{
+ local cur
+ _get_comp_words_by_ref cur
+
+ case $cur in
+ +*) _known_hosts_real -p+ "${cur:1}" ;;
+ -*) _known_hosts_real -p- "${cur:1}" ;;
+ *) _known_hosts_real "$cur" ;;
+ esac
+
+ return 0
+} &&
+complete -F _xhost xhost
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/xm b/completions/xm
new file mode 100644
index 00000000..f9f69a29
--- /dev/null
+++ b/completions/xm
@@ -0,0 +1,233 @@
+# bash completion for xm
+
+have xm && {
+_xen_domain_names()
+{
+ COMPREPLY=( $(compgen -W "$( xm list 2>/dev/null | \
+ awk '!/Name|Domain-0/ { print $1 }' )" -- "$cur") )
+}
+
+_xen_domain_ids()
+{
+ COMPREPLY=( $(compgen -W "$( xm list 2>/dev/null | \
+ awk '!/Name|Domain-0/ { print $2 }' )" -- "$cur") )
+}
+
+_xm()
+{
+ # TODO: _split_longopt
+
+ local cur prev command options
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ commands='console vncviewer create new delete destroy domid domname \
+ dump-core list mem-max mem-set migrate pause reboot rename reset \
+ restore resume save shutdown start suspend sysrq trigger top unpause \
+ uptime usb-add usb-del vcpu-list vcpu-pin vcpu-set debug-keys dmesg \
+ info log serve sched-credit sched-sedf block-attach block-detach \
+ block-list block-configure network-attach network-detach network-list \
+ vtpm-list pci-attach pci-detach pci-list pci-list-assignable-devices \
+ scsi-attach scsi-detach scsi-list vnet-list vnet-create vnet-delete \
+ labels addlabel rmlabel getlabel dry-run resources dumppolicy \
+ setpolicy resetpolicy getpolicy shell help'
+
+ if [[ $COMP_CWORD -eq 1 ]] ; then
+ COMPREPLY=( $( compgen -W "$commands" -- "$cur" ) )
+ else
+ if [[ "$cur" == *=* ]]; then
+ prev=${cur/=*/}
+ cur=${cur/*=/}
+ fi
+
+ command=${COMP_WORDS[1]}
+ if [[ "$cur" == -* ]]; then
+ # possible options for the command
+ case $command in
+ create)
+ options='-c'
+ ;;
+ dmesg)
+ options='--clear'
+ ;;
+ list)
+ options='--long'
+ ;;
+ reboot)
+ options='-w -a'
+ ;;
+ shutdown)
+ options='-w -a -R -H'
+ ;;
+ sched-credit)
+ options='-d -w -c'
+ ;;
+ block-list|network-list|vtpm-list|vnet-list)
+ options='-l --long'
+ ;;
+ getpolicy)
+ options='--dumpxml'
+ ;;
+ new)
+ options='-h --help --help_config -q \
+ --quiet --path= -f= \
+ --defconfig= -F= --config= \
+ -b --dryrun -x --xmldryrun \
+ -s --skipdtd -p --paused -c \
+ --console_autoconnect'
+ ;;
+ esac
+ COMPREPLY=( $( compgen -W "$options" -- "$cur" ) )
+ else
+ case $command in
+ console|destroy|domname|domid|list|mem-set|mem-max| \
+ pause|reboot|rename|shutdown|unpause|vcpu-list|vcpu-pin| \
+ vcpu-set|block-list|network-list|vtpm-list)
+ _count_args
+ case $args in
+ 2)
+ _xen_domain_names
+ ;;
+ esac
+ ;;
+ migrate)
+ _count_args
+ case $args in
+ 2)
+ _xen_domain_names
+ ;;
+ 3)
+ _known_hosts_real "$cur"
+ ;;
+ esac
+ ;;
+ restore|dry-run|vnet-create)
+ _filedir
+ ;;
+ save)
+ _count_args
+ case $args in
+ 2)
+ _xen_domain_names
+ ;;
+ 3)
+ _filedir
+ ;;
+ esac
+ ;;
+ sysrq)
+ _count_args
+ case $args in
+ 2)
+ _xen_domain_names
+ ;;
+ 3)
+ COMPREPLY=( $(compgen -W "r s e i u b" -- "$cur") )
+ ;;
+ esac
+ ;;
+ block-attach)
+ _count_args
+ case $args in
+ 2)
+ _xen_domain_names
+ ;;
+ 3)
+ COMPREPLY=( $(compgen -W "phy: file:" -- "$cur") )
+ ;;
+ 5)
+ COMPREPLY=( $(compgen -W "w r" -- "$cur") )
+ ;;
+ 6)
+ _xen_domain_names
+ ;;
+ esac
+ ;;
+ block-detach)
+ _count_args
+ case $args in
+ 2)
+ _xen_domain_names
+ ;;
+ 3)
+ COMPREPLY=( $(compgen -W "$( xm block-list $prev \
+ 2>/dev/null | awk '!/Vdev/ { print $1 }' )" \
+ -- "$cur") )
+ ;;
+ esac
+ ;;
+ network-attach)
+ _count_args
+ case $args in
+ 2)
+ _xen_domain_names
+ ;;
+ *)
+ COMPREPLY=( $(compgen -W "script= ip= mac= \
+ bridge= backend=" -- "$cur") )
+ ;;
+ esac
+ ;;
+ network-detach)
+ _count_args
+ case $args in
+ 2)
+ _xen_domain_names
+ ;;
+ 3)
+ COMPREPLY=( $(compgen -W "$( xm network-list $prev \
+ 2>/dev/null | awk '!/Idx/ { print $1 }' )" \
+ -- "$cur") )
+ ;;
+ esac
+ ;;
+ sched-credit)
+ case $prev in
+ -d)
+ _xen_domain_names
+ return 0
+ ;;
+ esac
+ ;;
+ create)
+ _filedir
+ COMPREPLY=( ${COMPREPLY[@]:-} \
+ $( compgen -W '$( command ls /etc/xen 2>/dev/null )' \
+ -- "$cur" ) )
+ ;;
+ new)
+ case $prev in
+ -f|-F|--defconfig|--config)
+ _filedir
+ return 0
+ ;;
+ --path)
+ _filedir -d
+ return 0
+ ;;
+ esac
+
+ _count_args
+ case $args in
+ 2)
+ _xen_domain_names
+ ;;
+ esac
+ ;;
+ esac
+ fi
+ fi
+
+ return 0
+}
+complete -F _xm xm
+}
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/xmllint b/completions/xmllint
new file mode 100644
index 00000000..5b9c301c
--- /dev/null
+++ b/completions/xmllint
@@ -0,0 +1,55 @@
+# bash completion for xmllint(1)
+
+have xmllint &&
+_xmllint()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -o|--output)
+ _filedir
+ return 0
+ ;;
+ --path|--dtdvalidfpi|--maxmem|--encode|--pattern)
+ # argument required but no completions available
+ return 0
+ ;;
+ --dtdvalid)
+ _filedir 'dtd?(.gz)'
+ return 0
+ ;;
+ --relaxng)
+ _filedir 'rng?(.gz)'
+ return 0
+ ;;
+ --schema)
+ _filedir 'xsd?(.gz)'
+ return 0
+ ;;
+ --schematron)
+ _filedir 'sch?(.gz)'
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '$( xmllint --help 2>&1 | \
+ sed -ne "s/^[[:space:]]*\(--[^[:space:]:]*\).*/\1/p" ) \
+ -o' -- "$cur" ) )
+ return 0
+ fi
+
+ _filedir '@(*ml|htm|svg|xs[dl]|rng|wsdl|jnlp)?(.gz)'
+} &&
+complete -F _xmllint xmllint
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/xmlwf b/completions/xmlwf
new file mode 100644
index 00000000..ba02524b
--- /dev/null
+++ b/completions/xmlwf
@@ -0,0 +1,39 @@
+# bash completion for xmlwf(1)
+
+have xmlwf &&
+_xmlwf()
+{
+ local cur prev
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -d)
+ _filedir -d
+ return 0
+ ;;
+ -e)
+ COMPREPLY=( $( compgen -W 'US-ASCII UTF-8 UTF-16 \
+ ISO-8859-1' -- "$cur" ) )
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-c -d -e -m -n -p -r -s -t -v -w \
+ -x' -- "$cur" ) )
+ return 0
+ fi
+
+ _filedir '@(*ml|htm|svg|xs[dl]|rng|wsdl|jnlp)'
+} &&
+complete -F _xmlwf xmlwf
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/xmms b/completions/xmms
new file mode 100644
index 00000000..662e2faa
--- /dev/null
+++ b/completions/xmms
@@ -0,0 +1,30 @@
+# bash completion for xmms
+
+have xmms &&
+_xmms()
+{
+ local cur
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ 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]|ogg|wav|pls|m3u|xm|mod|s[3t]m|it|mtm|ult|flac)'
+
+ fi
+
+} &&
+complete -F _xmms xmms
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/xmodmap b/completions/xmodmap
new file mode 100644
index 00000000..cde9e7e1
--- /dev/null
+++ b/completions/xmodmap
@@ -0,0 +1,32 @@
+# xmodmap(1) completion
+
+have xmodmap &&
+_xmodmap()
+{
+ COMPREPLY=()
+ local cur prev
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -display|-e)
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-display -help -grammar -verbose -quiet -n
+ -e -pm -pk -pke -pp' -- "$cur" ) )
+ return 0
+ fi
+
+ _filedir
+} &&
+complete -F _xmodmap xmodmap
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/xrandr b/completions/xrandr
new file mode 100644
index 00000000..70de80f7
--- /dev/null
+++ b/completions/xrandr
@@ -0,0 +1,52 @@
+# bash completion for xrandr
+
+have xrandr &&
+_xrandr()
+{
+ local cur prev output modes
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ --output)
+ local outputs=$(xrandr|awk '/connected/ {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 '-display -help --orientation --query \
+ --size --rate --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
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/xrdb b/completions/xrdb
new file mode 100644
index 00000000..7307f013
--- /dev/null
+++ b/completions/xrdb
@@ -0,0 +1,37 @@
+# xrdb(1) completion
+
+have xrdb &&
+_xrdb()
+{
+ COMPREPLY=()
+ local cur prev
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ -backup|-display|-help)
+ return 0
+ ;;
+ -cpp|-edit)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '-help -display -all -global -screen -screens
+ -n -quiet -cpp -nocpp -symbols -query -load -override -merge
+ -remove -retain -edit -backup' -- "$cur" ) )
+ return 0
+ fi
+
+ _filedir
+} &&
+complete -F _xrdb xrdb
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/xsltproc b/completions/xsltproc
new file mode 100644
index 00000000..2782f805
--- /dev/null
+++ b/completions/xsltproc
@@ -0,0 +1,56 @@
+# xsltproc(1) completion
+
+have xsltproc &&
+_xsltproc()
+{
+ local cur prev
+ COMPREPLY=()
+ _get_comp_words_by_ref cur prev
+
+ case $prev in
+ --output|-o)
+ _filedir
+ return 0
+ ;;
+ # TODO : number only
+ --maxdepth)
+ return 0
+ ;;
+ --encoding)
+ # some aliases removed
+ COMPREPLY=( $( compgen -W "$( iconv -l | sed -e '/^UTF[1378]/d' \
+ -e '/^ISO[0-9_]/d' -e '/^8859/d' -e 's/\/.*//')" -- "$cur" ) )
+ return 0
+ ;;
+ --param|--stringparam)
+ return 0
+ ;;
+ # not really like --writesubtree
+ --path)
+ _filedir -d
+ return 0
+ ;;
+ --writesubtree)
+ _filedir -d
+ return 0
+ ;;
+ esac
+
+ [[ $COMP_CWORD -gt 2 && `_get_cword '' 2` == --?(string)param ]] && \
+ return 0
+
+ if [[ "$cur" == -* ]]; then
+ _longopt xsltproc
+ else
+ _filedir '@(xsl|xslt|xml)'
+ fi
+} &&
+complete -F _xsltproc xsltproc
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/xz b/completions/xz
new file mode 100644
index 00000000..89a8ac98
--- /dev/null
+++ b/completions/xz
@@ -0,0 +1,102 @@
+# xz(1) completion
+
+have xz &&
+_xz()
+{
+ COMPREPLY=()
+ local cur prev
+ _get_comp_words_by_ref cur prev
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--compress --decompress --test --list \
+ --keep --force --stdout --suffix --files --files0 --format --check \
+ -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 --fast --best --extreme --memory \
+ --lzma1 --lzma2 --x86 --powerpc --ia64 --arm --armthumb --sparc \
+ --delta --quiet --verbose --no-warn --help --long-help --version' \
+ -- "$cur" ) )
+ return 0
+ fi
+
+ local split=false
+ _split_longopt && split=true
+
+ local xspec="*.@(xz|lzma|txz|tlz)"
+
+ case $prev in
+ --decompress|--list|--test|-!(-*)[dlt]*)
+ xspec="!"$xspec
+ ;;
+ --files|--files0)
+ _filedir
+ return 0
+ ;;
+ -C|--check)
+ COMPREPLY=( $( compgen -W 'crc32 crc64 sha256' -- "$cur" ) )
+ return 0
+ ;;
+ -F|--format)
+ COMPREPLY=( $( compgen -W 'auto xz lzma raw' -- "$cur" ) )
+ return 0
+ ;;
+ -M|--memory|-S|--suffix|--delta|--lzma1|--lzma2)
+ # argument required but no completions available
+ return 0
+ ;;
+ -h|--help|-H|--long-help|-V|--version)
+ # all other arguments are noop with these
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ _expand || return 0
+
+ local IFS=$'\n'
+ _compopt_o_filenames
+ COMPREPLY=( $( compgen -f -X "$xspec" -- "$cur" ) \
+ $( compgen -d -- "$cur" ) )
+} &&
+complete -F _xz xz
+
+# xzdec(1) completion
+#
+have xzdec &&
+_xzdec()
+{
+ COMPREPLY=()
+ local cur prev
+ _get_comp_words_by_ref cur prev
+
+ if [[ "$cur" == -* ]]; then
+ COMPREPLY=( $( compgen -W '--memory --help --version' -- "$cur" ) )
+ return 0
+ fi
+
+ local split=false
+ _split_longopt && split=true
+
+ case $prev in
+ -M|--memory)
+ # argument required but no completions available
+ return 0
+ ;;
+ -h|--help|-V|--version)
+ # all other arguments are noop with these
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ _filedir xz # no lzma support here as of xz 4.999.9beta
+} &&
+complete -F _xzdec xzdec
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/yp-tools b/completions/yp-tools
new file mode 100644
index 00000000..7252a129
--- /dev/null
+++ b/completions/yp-tools
@@ -0,0 +1,36 @@
+# bash completion for yp-tools
+
+have ypcat &&
+_ypmatch()
+{
+ local cur map cmd
+
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+ cmd=${1##*/}
+
+ [[ $cmd == ypcat && $COMP_CWORD -gt 1 ]] && return 0
+ [[ $cmd == ypmatch && $COMP_CWORD -gt 2 ]] && return 0
+
+ if [[ $cmd == 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
+ [[ $cmd == ypmatch && $COMP_CWORD -ne 2 ]] && return 0
+ COMPREPLY=( $( compgen -W \
+ '$( printf "%s\n" $(ypcat -x | cut -d"\"" -f 2) )' -- "$cur"))
+ fi
+
+ return 0
+} &&
+complete -F _ypmatch ypmatch ypcat
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/completions/yum-arch b/completions/yum-arch
new file mode 100644
index 00000000..bb864af4
--- /dev/null
+++ b/completions/yum-arch
@@ -0,0 +1,24 @@
+# yum-arch(8) completion
+
+have yum-arch &&
+_yum_arch()
+{
+ local cur
+ COMPREPLY=()
+ _get_comp_words_by_ref cur
+
+ if [[ "$cur" == -* ]] ; then
+ COMPREPLY=( $( compgen -W '-d -v -vv -n -c -z -s -l -q' -- "$cur" ) )
+ else
+ _filedir -d
+ fi
+} &&
+complete -F _yum_arch yum-arch
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh