Skip to contentSkip to conversation

Purest update to bash completions to prevent unbounded variable errors.

PATCH In review Ted Pavlic 3 participants 6 messages Jun 15, 2016

lore
Share & tools
lore

Ted Pavlic

author
#0 lore raw

PATCH 1/3 Purest update to bash completions to prevent unbounded variable errors.

First in a series of patches that make bash completions more robust to different interactive shell configurations and editors.

---
 contrib/completion/git-completion.bash |   18 +++++++++---------
 1 files changed, 9 insertions(+), 9 deletions(-)
contrib/completion/git-completion.bash +9 -9
index 7b074d7..5d1515c 100755
@@ -52,7 +52,7 @@ esac
 
 __gitdir ()
 {
-	if [ -z "$1" ]; then
+	if [ -z "${1-}" ]; then
 		if [ -n "$__git_dir" ]; then
 			echo "$__git_dir"
 		elif [ -d .git ]; then
@@ -111,7 +111,7 @@ __git_ps1 ()
 			fi
 		fi
 
-		if [ -n "$1" ]; then
+		if [ -n "${1-}" ]; then
 			printf "$1" "${b##refs/heads/}$r"
 		else
 			printf " (%s)" "${b##refs/heads/}$r"
@@ -143,8 +143,8 @@ __gitcomp ()
 		;;
 	*)
 		local IFS=$'\n'
-		COMPREPLY=($(compgen -P "$2" \
-			-W "$(__gitcomp_1 "$1" "$4")" \
+		COMPREPLY=($(compgen -P "${2-}" \
+			-W "$(__gitcomp_1 "${1-}" "${4-}")" \
 			-- "$cur"))
 		;;
 	esac
@@ -152,13 +152,13 @@ __gitcomp ()
 
 __git_heads ()
 {
-	local cmd i is_hash=y dir="$(__gitdir "$1")"
+	local cmd i is_hash=y dir="$(__gitdir "${1-}")"
 	if [ -d "$dir" ]; then
 		git --git-dir="$dir" for-each-ref --format='%(refname:short)' \
 			refs/heads
 		return
 	fi
-	for i in $(git ls-remote "$1" 2>/dev/null); do
+	for i in $(git ls-remote "${1-}" 2>/dev/null); do
 		case "$is_hash,$i" in
 		y,*) is_hash=n ;;
 		n,*^{}) is_hash=y ;;
@@ -170,13 +170,13 @@ __git_heads ()
 
 __git_tags ()
 {
-	local cmd i is_hash=y dir="$(__gitdir "$1")"
+	local cmd i is_hash=y dir="$(__gitdir "${1-}")"
 	if [ -d "$dir" ]; then
 		git --git-dir="$dir" for-each-ref --format='%(refname:short)' \
 			refs/tags
 		return
 	fi
-	for i in $(git ls-remote "$1" 2>/dev/null); do
+	for i in $(git ls-remote "${1-}" 2>/dev/null); do
 		case "$is_hash,$i" in
 		y,*) is_hash=n ;;
 		n,*^{}) is_hash=y ;;
@@ -188,7 +188,7 @@ __git_tags ()
 
 __git_refs ()
 {
-	local i is_hash=y dir="$(__gitdir "$1")"
+	local i is_hash=y dir="$(__gitdir "${1-}")"
 	local cur="${COMP_WORDS[COMP_CWORD]}" format refs
 	if [ -d "$dir" ]; then
 		case "$cur" in
Signature · 1 line
1.6.1.87.g15624
Acked-by on v1 1/3
#1 lore raw
Quoted 6 lines · Ted Pavlic

First in a series of patches that make bash completions more robust to different interactive shell configurations and editors.

Your commit message leaves a lot to be desired. I would instead have written something like this:

bash-completion: Support running when set -u is enabled

Under set -u semenatics it is an error to access undefined variables. Some user environments may enable this in the interactive shell.

In any context where the completion functions access an undefined variable, accessing a default empty string (aka "${1-}" instead of "$1") is a reasonable way to code the function, as it silences the undefined variable error while still supplying an empty string.

Quoted 3 lines
---
 contrib/completion/git-completion.bash |   18 +++++++++---------
 1 files changed, 9 insertions(+), 9 deletions(-)
Signature · 1 line
Shawn.
author
#2 lore raw
Quoted 2 lines

Your commit message leaves a lot to be desired. I would instead have written something like this:

I agree completely. Sorry about that. stg fired off vim to edit the commit message, and I just wasn't thinking.

Would you like me to modify the commit message and resubmit?

--Ted

Signature · 5 lines
Ted Pavlic <[email protected]>

  Please visit my ALS association page:
        http://web.alsa.org/goto/tedpavlic
  My family appreciates your support in the fight to defeat ALS.
#3 lore raw
Quoted 7 lines · Ted Pavlic
Quoted 2 lines

Your commit message leaves a lot to be desired. I would instead have written something like this:

I agree completely. Sorry about that. stg fired off vim to edit the commit message, and I just wasn't thinking.

Would you like me to modify the commit message and resubmit?

You probably should, to be nice to Junio. Its far easier for the maintainer to save off well formatted messages to an mbox and run "git am" than it is to stitch it together from different emails and/or hand edit messages to make them work.

Signature · 1 line
Shawn.
#4 lore raw
In reply to Ted Pavlic
Quoted 7 lines · Ted Pavlic
Quoted 2 lines

Your commit message leaves a lot to be desired. I would instead have written something like this:

I agree completely. Sorry about that. stg fired off vim to edit the commit message, and I just wasn't thinking.

Would you like me to modify the commit message and resubmit?

Luckily or unluckily, you need to do that anyway, as your patches are whitespace damaged.

Please don't send "format=flowed".

author
#5 lore raw
Quoted 6 lines
Quoted 1 line

Would you like me to modify the commit message and resubmit?

Luckily or unluckily, you need to do that anyway, as your patches are whitespace damaged.

Please don't send "format=flowed".

Ok. Resubmitted using 'git send-email'. I think the submissions look much better now.<?>

--Ted

Signature · 5 lines
Ted Pavlic <[email protected]>

  Please visit my ALS association page:
        http://web.alsa.org/goto/tedpavlic
  My family appreciates your support in the fight to defeat ALS.