reencode_string(): introduce and use same_encoding()
Callers of reencode_string() that re-encodes a string from one encoding to another all used ad-hoc way to bypass the case where the input and the output encodings are the same. Some did strcmp(), some did strcasecmp(), yet some others when converting to UTF-8 used is_encoding_utf8(). Introduce same_encoding() helper function to make these callers use the same logic. Notably, is_encoding_utf8() has a work-around for common misconfiguration to use "utf8" to name UTF-8 encoding, which does not match "UTF-8" hence strcasecmp() would not consider the same. Make use of it in this helper function. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Jeff King

parent
7e2010537e
commit
0e18bcd5e9
7
utf8.c
7
utf8.c
@ -423,6 +423,13 @@ int is_encoding_utf8(const char *name)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int same_encoding(const char *src, const char *dst)
|
||||
{
|
||||
if (is_encoding_utf8(src) && is_encoding_utf8(dst))
|
||||
return 1;
|
||||
return !strcasecmp(src, dst);
|
||||
}
|
||||
|
||||
/*
|
||||
* Given a buffer and its encoding, return it re-encoded
|
||||
* with iconv. If the conversion fails, returns NULL.
|
||||
|
Reference in New Issue
Block a user