# [PATCH] git-mergetool: print filename when it contains %

4 messages from 2013-02-08 to 2013-02-08. Participants: Asheesh Laroia, Junio C Hamano.
Thread: https://gitlist.dev/t/32854

## Asheesh Laroia, 2013-02-08 01:16

Subject: [PATCH] git-mergetool: print filename when it contains %
Message-ID: <1360286184-14278-1-git-send-email-asheesh@asheesh.org>
URL: https://gitlist.dev/e/1360286184-14278-1-git-send-email-asheesh%40asheesh.org

```
Before this change, if git-mergetool was invoked with regard to
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 <asheesh@asheesh.org>
---
 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"
 
 IFS='
 '
-- 
1.7.10.4

```

## Junio C Hamano, 2013-02-08 17:32

Subject: Re: [PATCH] git-mergetool: print filename when it contains %
Message-ID: <7vhalm3e54.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vhalm3e54.fsf%40alter.siamese.dyndns.org
In-Reply-To: <1360286184-14278-1-git-send-email-asheesh@asheesh.org>

```
Asheesh Laroia <asheesh@asheesh.org> 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 <asheesh@asheesh.org>
> ---

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='
>  '

```

## Asheesh Laroia, 2013-02-08 20:58

Subject: Re: [PATCH] git-mergetool: print filename when it contains %
Message-ID: <alpine.DEB.2.02.1302081558130.23245@rose.makesad.us>
URL: https://gitlist.dev/e/alpine.DEB.2.02.1302081558130.23245%40rose.makesad.us
In-Reply-To: <7vhalm3e54.fsf@alter.siamese.dyndns.org>

```
On Fri, 8 Feb 2013, Junio C Hamano wrote:

> Asheesh Laroia <asheesh@asheesh.org> 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.
>

Junio, thanks for the quick reply! I agree with your suggestions, and will 
take a look at addressing them, hopefully by Tuesday or so.

-- Asheesh.

```

## Junio C Hamano, 2013-02-08 21:09

Subject: Re: [PATCH] git-mergetool: print filename when it contains %
Message-ID: <7vliayzf4r.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vliayzf4r.fsf%40alter.siamese.dyndns.org
In-Reply-To: <alpine.DEB.2.02.1302081558130.23245@rose.makesad.us>

```
Asheesh Laroia <asheesh@asheesh.org> writes:

> Junio, thanks for the quick reply! I agree with your suggestions, and
> will take a look at addressing them, hopefully by Tuesday or so.

FYI, here is what I queued for now.

-- >8 --
From: Asheesh Laroia <asheesh@asheesh.org>
Date: Thu, 7 Feb 2013 17:16:24 -0800
Subject: [PATCH] git-mergetool: print filename when it contains %

If git-mergetool was invoked with 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

Do not pass random string to printf as if it were a valid format.
Use format string "%s" and pass the string as a data to be formatted
instead.

Signed-off-by: Asheesh Laroia <asheesh@asheesh.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 git-mergetool.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/git-mergetool.sh b/git-mergetool.sh
index c50e18a..012afa5 100755
--- a/git-mergetool.sh
+++ b/git-mergetool.sh
@@ -440,7 +440,7 @@ then
 fi
 
 printf "Merging:\n"
-printf "$files\n"
+printf "%s\n" "$files"
 
 IFS='
 '
-- 
1.8.1.3.617.gb5c8e72

```
