Package: bash-completion
Version: 1:1.2-3
Severity: normal

NOTE: The attached /etc/bash_completion.d/tar fixes the bug by
commenting out the code which invokes the _tar function.
The bug exists when working with the /etc/bash_completion.d/tar file
installed by the package.

The bug is that when I start a 'tar zcvf tarfile.tgz ' command and want
to add filenames by tab-completing as much as possible, some files do
not appear in the lists of candidate files.  So I have to type out the
full filename rather than do tab-completion on that filename.

I saw the bug also in Debian Lenny and fixed it there the same way.

-- System Information:
Debian Release: 6.0.1
  APT prefers squeeze-updates
  APT policy: (500, 'squeeze-updates'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.32-5-vserver-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_US.utf8, LC_CTYPE=en_US.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages bash-completion depends on:
ii  bash                          4.1-3      The GNU Bourne Again SHell

bash-completion recommends no packages.

bash-completion suggests no packages.

-- Configuration Files:
/etc/bash_completion.d/tar changed:
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='t@(ar?(.@(Z|gz|bz?(2)|lz?(ma)|xz))|gz|bz?(2)|lz?(ma)|xz)'
        regex='t\(ar\(\.\(Z\|gz\|bz2\?\|lzma\|xz\)\)\?\|gz\|bz2\?\|lzma\|xz\)'
        ;;
    *[Zz]*f)
        ext='t?(ar.)@(gz|Z)'
        regex='t\(ar\.\)\?\(gz\|Z\)'
        ;;
    *[Ijy]*f)
        ext='t?(ar.)bz?(2)'
        regex='t\(ar\.\)\?bz2\?'
        ;;
    *[J]*f)
        ext='t?(ar.)@(lz?(ma)|xz)'
        regex='t\(ar\.\)\?\(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]/}
        COMPREPLY=( $( compgen -W "$( printf '%s ' $( tar $untar $tar \
            2>/dev/null ) )" -- "$cur" ) )
        return 0
    fi
    # file completion on relevant files
    _filedir "$ext"
    return 0
}
}


-- no debconf information



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to