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

Ville Skyttä ville.skytta at iki.fi
Sun Feb 15 16:51:09 UTC 2009


The following commit has been merged in the master branch:
commit c492f00705511800cee5634d241198355ff9db10
Author: Ville Skyttä <ville.skytta at iki.fi>
Date:   Sun Feb 15 18:47:34 2009 +0200

    Extract process name completion from _killall to _pnames, make it work for others than Linux and FreeBSD.

diff --git a/bash_completion b/bash_completion
index b03d79f..e522898 100644
--- a/bash_completion
+++ b/bash_completion
@@ -428,6 +428,31 @@ _pgids()
 	COMPREPLY=( $( compgen -W '$( command ps axo pgid | sed 1d )' -- $cur ))
 }
 
+# This function completes on process names.
+# AIX and SunOS prefer X/Open, all else should be BSD.
+[ $UNAME = SunOS -o $UNAME = AIX ] &&
+_pnames()
+{
+	COMPREPLY=( $( compgen -W '$( command ps -efo comm | \
+			           sed -e 1d -e "s:.*/::" -e "s/^-//" \
+				       -e "s/^<defunct>$//")' \
+			           -- $cur ) )
+} ||
+_pnames()
+{
+	# FIXME: completes "[kblockd/0]" to "0". Previously it was completed
+	# to "kblockd" which isn't correct either. "kblockd/0" would be
+	# arguably most correct, but killall from psmisc 22 treats arguments
+	# containing "/" specially unless -r is given so that wouldn't quite
+	# work either. Perhaps it'd be best to not complete these to anything
+	# for now.
+	COMPREPLY=( $( compgen -W '$( command ps axo command | \
+			           sed -e "1d; s/ .*//; s:.*/::; s/:$//;" \
+			               -e "s/^[[(-]//; s/[])]$//" \
+				       -e "s/^<defunct>$//")' \
+			           -- $cur ) )
+}
+
 # This function completes on user IDs
 #
 _uids()
@@ -1028,17 +1053,7 @@ _killall()
 	if [ $COMP_CWORD -eq 1 ] && [[ "$cur" == -* ]]; then
 		_signals
 	else
-		# FIXME: completes "[kblockd/0]" to "0". Previously it was
-		# completed to "kblockd" which isn't correct either.
-		# "kblockd/0" would be arguably most correct, but killall from
-		# psmisc 22 treats arguments containing "/" specially unless
-		# -r is given so that wouldn't quite work either. Perhaps it'd
-		# be best to not complete these to anything for now.
-		COMPREPLY=( $( compgen -W '$( command ps axo command | \
-			           sed -e "1d; s/ .*//; s:.*/::; s/:$//;" \
-			               -e "s/^[[(-]//; s/[])]$//" \
-				       -e "s/^<defunct>$//")' \
-			           -- $cur ) )
+		_pnames
 	fi
 
 	return 0
diff --git a/debian/changelog b/debian/changelog
index 54c0644..5d8c6cb 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -122,7 +122,9 @@ bash-completion (200902xx) UNRELEASED; urgency=low
   * Fix awk error in "modprobe -r /" completion (Closes: #512556).
   * Expand ~foo to dir name more eagerly to avoid quoting issues.
   * Fix -sourcepath handling in javadoc packages completion.
-  * Fix killall completion for commands with relative paths (RHBZ: #484578).
+  * Extract process name completion from _killall to _pnames, make it work
+    for others than Linux and FreeBSD.
+  * Fix process name completion with relative paths (RHBZ: #484578).
 
   [ Freddy Vulto ]
   * Restored `_display()' completion for `display' by removing

-- 
bash-completion



More information about the Bash-completion-commits mailing list