in iconv_open, accept "CHAR" and "" as aliases for "UTF-8"
authorRich Felker <dalias@aerifal.cx>
Thu, 21 May 2015 21:01:23 +0000 (17:01 -0400)
committerRich Felker <dalias@aerifal.cx>
Thu, 21 May 2015 21:01:23 +0000 (17:01 -0400)
while not a requirement, it's common convention in other iconv
implementations to accept "CHAR" as an alias for nl_langinfo(CODESET),
meaning the encoding used for char[] strings in the current locale,
and also "" as an alternate form. supporting this is not costly and
improves compatibility.

src/locale/iconv.c

index a0b0232015a2be6d4a3f42ea081b1eae1d055c95..3c20c8987692c2d8fc402136eae6994710acf531 100644 (file)
@@ -35,7 +35,7 @@
  * 3. Character table (size determined by field 2). */
 
 static const unsigned char charmaps[] =
-"utf8\0\0\310"
+"utf8\0char\0\0\310"
 "wchart\0\0\306"
 "ucs2\0ucs2be\0\0\304"
 "ucs2le\0\0\305"
@@ -90,6 +90,7 @@ static int fuzzycmp(const unsigned char *a, const unsigned char *b)
 static size_t find_charmap(const void *name)
 {
        const unsigned char *s;
+       if (!*(char *)name) name=charmaps; /* "utf8" */
        for (s=charmaps; *s; ) {
                if (!fuzzycmp(name, s)) {
                        for (; *s; s+=strlen((void *)s)+1);