From: Junio C Hamano Date: Fri, 08 Feb 2013 17:32:23 GMT Subject: Re: [PATCH] git-mergetool: print filename when it contains % Message-ID: <7vhalm3e54.fsf@alter.siamese.dyndns.org> In-Reply-To: <1360286184-14278-1-git-send-email-asheesh@asheesh.org> Asheesh Laroia writes: > Before this change, if git-mergetool was invoked with regard to Drop "before this change,"; it is clear (and it is a recommended practice) you are first describing what problem you are addressing. > files with a percent sign (%) in their names, it would print an > error. For example, if you were calling mergetool on a file called > "%2F": > > printf: %2F: invalid directive > > This changes the behavior to pass "%s" to printf as its first argument > to avoid processing the filename as a format string. > > Signed-off-by: Asheesh Laroia > --- Thanks. As a follow-up to this patch, we may want to perform a systematic audit of $ git grep -e 'printf "[^"]*\$[^"]*"' There is one in git-difftool-helper.sh printf "\nViewing: '$MERGED'\n" and mergetools/p4merge: printf "$empty_file" > git-mergetool.sh | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/git-mergetool.sh b/git-mergetool.sh > index c50e18a..d2b9289 100755 > --- a/git-mergetool.sh > +++ b/git-mergetool.sh > @@ -440,7 +440,7 @@ then > fi > > printf "Merging:\n" > -printf "$files\n" > +printf "%s" "$files\n" I think printf "%s\n" "$files" would be clearer. > > IFS=' > '