Re: [PATCH ] t4210-log-i18n: spell encoding name "UTF-8" correctly

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 25.02.13 09:37, Johannes Sixt wrote:
> From: Johannes Sixt <j6t@xxxxxxxx>
> 
> iconv on Windows does not know the encoding name "utf8", and does not
> re-encode log messages when this name is given. Request "UTF-8" encoding.
> 
> Signed-off-by: Johannes Sixt <j6t@xxxxxxxx>
> ---
>  I'm not sure whether I'm right to say that "UTF-8" is the correct
>  spelling. Anyway, 'iconv -l' on my old Linux box lists "UTF8", but on
>  Windows it does not.
> 
>  A more correct fix would probably be to use is_encoding_utf8() in more
>  places, but it's outside my time budget look after it.
> 
>  -- Hannes
> 
>  t/t4210-log-i18n.sh | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/t/t4210-log-i18n.sh b/t/t4210-log-i18n.sh
> index 52a7472..b1956e2 100755
> --- a/t/t4210-log-i18n.sh
> +++ b/t/t4210-log-i18n.sh
> @@ -15,7 +15,7 @@ test_expect_success 'create commits in different encodings' '
>  	t${utf8_e}st
>  	EOF
>  	git add msg &&
> -	git -c i18n.commitencoding=utf8 commit -F msg &&
> +	git -c i18n.commitencoding=UTF-8 commit -F msg &&
>  	cat >msg <<-EOF &&
>  	latin1
>  
> @@ -30,7 +30,7 @@ test_expect_success 'log --grep searches in log output encoding (utf8)' '
>  	latin1
>  	utf8
>  	EOF
> -	git log --encoding=utf8 --format=%s --grep=$utf8_e >actual &&
> +	git log --encoding=UTF-8 --format=%s --grep=$utf8_e >actual &&
>  	test_cmp expect actual
>  '
>  
> @@ -45,7 +45,7 @@ test_expect_success 'log --grep searches in log output encoding (latin1)' '
>  
>  test_expect_success 'log --grep does not find non-reencoded values (utf8)' '
>  	>expect &&
> -	git log --encoding=utf8 --format=%s --grep=$latin1_e >actual &&
> +	git log --encoding=UTF-8 --format=%s --grep=$latin1_e >actual &&
>  	test_cmp expect actual
>  '
>  
> 
Hej,
(beside that I couldn't find t4210 somewhere),
is it something like the following you are tinking of?

(Not sure if my cut-and-paste stuff applies, its's rather for review)

-- >8 --
[PATCH] iconv_open(): Use UTF-8 if UTF8 failes

When iconv_open() failes with EINVAL, it may be that "UTF-8"
is spelled wrong by mistake.
For example, "UTF8" is used instead of "UTF-8".
Some iconv implementations tolerate "UTF8" or "utf8".
If not, iconv_open() fails.
If is_encoding_utf8() is true change the string to the
offical string "UTF-8" with uppercase letters.

Reported-By: Johannes Sixt <j6t@xxxxxxxx>
Signed-off-by: Torsten Bögershausen <tboegi@xxxxxx>
---
 utf8.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/utf8.c b/utf8.c
index a4ee665..e9850d0 100644
--- a/utf8.c
+++ b/utf8.c
@@ -487,6 +487,10 @@ char *reencode_string(const char *in, const char *out_encoding, const char *in_e
 	if (!in_encoding)
 		return NULL;
 	conv = iconv_open(out_encoding, in_encoding);
+	if (conv == (iconv_t) -1 && errno == EINVAL) {
+		conv = iconv_open(is_encoding_utf8(out_encoding) ? "UTF-8" : out_encoding,
+											is_encoding_utf8(in_encoding) ? "UTF-8" : in_encoding);
+	}
 	if (conv == (iconv_t) -1)
 		return NULL;
 	out = reencode_string_iconv(in, strlen(in), conv);
-- 
1.8.1.1



--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]