Hello community, here is the log from the commit of package aaa_base for openSUSE:Factory checked in at Tue Feb 22 15:58:05 CET 2011. -------- --- aaa_base/aaa_base.changes 2011-02-18 17:42:27.000000000 +0100 +++ /mounts/work_src_done/STABLE/aaa_base/aaa_base.changes 2011-02-22 13:39:37.000000000 +0100 @@ -1,0 +2,6 @@ +Tue Feb 22 13:37:46 CET 2011 - werner@suse.de + +- Work around colon as breaking character in tab completion +- Allow arguments of command done by sudo to complete (bnc#673663) + +------------------------------------------------------------------- calling whatdependson for head-i586 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ aaa_base.spec ++++++ --- /var/tmp/diff_new_pack.HvBfwM/_old 2011-02-22 15:54:36.000000000 +0100 +++ /var/tmp/diff_new_pack.HvBfwM/_new 2011-02-22 15:54:36.000000000 +0100 @@ -21,7 +21,7 @@ Name: aaa_base Version: 11.4 -Release: 57 +Release: 58 License: GPLv2+ Group: System/Fhs Provides: bin bootutls etc skeleng skelger ++++++ aaa_base.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aaa_base/etc/profile.d/complete.bash new/aaa_base/etc/profile.d/complete.bash --- old/aaa_base/etc/profile.d/complete.bash 2010-09-20 17:10:22.000000000 +0200 +++ new/aaa_base/etc/profile.d/complete.bash 2011-02-22 13:37:17.000000000 +0100 @@ -20,6 +20,7 @@ local IFS=$'\n' local s x local -i o + local -i isdir=$1 test ${#COMPREPLY[@]} -eq 0 && return 0 @@ -28,6 +29,7 @@ # for ((o=0; o < ${#COMPREPLY[@]}; o++)) ; do if test ! -d "${COMPREPLY[$o]}" ; then + ((isdir == 0)) || continue COMPREPLY[$o]="${COMPREPLY[$o]%%/}" continue fi @@ -37,7 +39,7 @@ # # Escape spaces and braces in path names with `\' # - s="${COMP_WORDBREAKS// }" + s="${COMP_WORDBREAKS//[: ]}" s="${s// }" s="${s//[\{\}()\[\]]}" s="${s} (){}[]" @@ -59,10 +61,25 @@ local s g=0 x local IFS=$'\n' local -i o + local -i isdir=0 shopt -q extglob && g=1 test $g -eq 0 && shopt -s extglob + if [[ $COMP_WORDBREAKS =~ : && $COMP_LINE =~ : ]] ; then + # Do not use plusdirs as there is a colon in the directory + # name(s) which will not work even if escaped with backslash. + compopt +o plusdirs + # Restore last argument without breaking at colon + if ((COMP_CWORD > 1)) ; then + IFS="${COMP_WORDBREAKS//:}" + COMP_WORDS=($COMP_LINE) + let COMP_CWORD=${#COMP_WORDS[@]}-1 + c=${COMP_WORDS[COMP_CWORD]} + IFS=$'\n' + fi + fi + case "$(complete -p ${1##*/} 2> /dev/null)" in mkdir) ;; *) s="-S/" @@ -79,15 +96,18 @@ \$\{*\}) eval COMPREPLY=\(${c}\) ;; \$\{*) COMPREPLY=($(compgen -v -P '${' -S '}' -- ${c#??})) ;; \$*) COMPREPLY=($(compgen -v -P '$' $s -- ${c#?})) ;; - \~*/*) COMPREPLY=($(compgen -d $s -- "${c}")) ;; + \~*/*) COMPREPLY=($(compgen -d $s -- "${c}")) + ((${#COMPREPLY[@]} == 0)) || let isdir++ ;; \~*) COMPREPLY=($(compgen -u $s -- "${c}")) ;; - *\:*) - if [[ $COMP_WORDBREAKS =~ : ]] ; then + *\:*) if [[ $COMP_WORDBREAKS =~ : ]] ; then x=${c%"${c##*[^\\]:}"} COMPREPLY=($(compgen -d $s -- "${c}")) - COMPREPLY=(${COMPREPLY[@]#"$x"}) - fi ;; - *) COMPREPLY=() # use bashdefault + COMPREPLY=(${COMPREPLY[@]#"$x"}) + ((${#COMPREPLY[@]} == 0)) || let isdir++ + fi + test $g -eq 0 && shopt -u extglob + return 0 ;; + *) COMPREPLY=() # use (bash)default test $g -eq 0 && shopt -u extglob return 0 ;; esac @@ -108,10 +128,11 @@ fi COMPREPLY[o++]=${s#$x/} done + ((${#COMPREPLY[@]} == 0)) || let isdir++ done fi - _compreply_ + _compreply_ $isdir test $g -eq 0 && shopt -u extglob return 0 @@ -433,8 +454,12 @@ local os="-h -K -k -L -l -V -v -b -E -H -P -S -i -s" local ox="-r -p -t -u" case "$c" in - -*) COMPREPLY=($(compgen -W "$os $ox" -- "$c")) ;; - *) COMPREPLY=($(PATH=/sbin:/usr/sbin:$PATH:/usr/local/sbin compgen -c -- "${c}")) + -*) COMPREPLY=($(compgen -W "$os $ox" -- "$c")) ;; + *) if ((COMP_CWORD <= 1)) ; then + COMPREPLY=($(PATH=/sbin:/usr/sbin:$PATH:/usr/local/sbin compgen -c -- "${c}")) + else + COMPREPLY=() + fi esac } ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org