Sophie

Sophie

distrib > Fedora > 14 > x86_64 > media > updates > by-pkgid > c2e67b301da03468f1fa622772a8daa7 > files > 142

bash-completion-1.3-4.fc14.noarch.rpm

# 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

# 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

# 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

# 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