From 0e18bcd5e937b9e5857892e7f5c80c3c5b1da5d4 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Thu, 18 Oct 2012 22:41:56 -0700 Subject: 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 --- utf8.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'utf8.c') diff --git a/utf8.c b/utf8.c index a544f1545..6a5283457 100644 --- a/utf8.c +++ b/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. -- cgit v1.2.1