changeset 2142:ca80c942e69c

Fixed bug #349 Solaris doesn't support the LATIN1 character set alias. Merged from 1.2 svn revision 3133f
author Sam Lantinga <slouken@libsdl.org>
date Wed, 04 Jul 2007 07:08:16 +0000
parents e1a70460c354
children e906da4414a3
files include/SDL_stdinc.h src/stdlib/SDL_iconv.c test/testiconv.c
diffstat 3 files changed, 36 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
--- a/include/SDL_stdinc.h	Tue Jul 03 09:55:29 2007 +0000
+++ b/include/SDL_stdinc.h	Wed Jul 04 07:08:16 2007 +0000
@@ -656,8 +656,8 @@
                                                const char *fromcode,
                                                const char *inbuf,
                                                size_t inbytesleft);
-#define SDL_iconv_utf8_ascii(S)		SDL_iconv_string("ASCII", "UTF-8", S, SDL_strlen(S)+1)
-#define SDL_iconv_utf8_latin1(S)	SDL_iconv_string("LATIN1", "UTF-8", S, SDL_strlen(S)+1)
+#define SDL_iconv_utf8_ascii(S)		SDL_iconv_string("646", "UTF-8", S, SDL_strlen(S)+1)
+#define SDL_iconv_utf8_latin1(S)	SDL_iconv_string("8859-1", "UTF-8", S, SDL_strlen(S)+1)
 #define SDL_iconv_utf8_ucs2(S)		(Uint16 *)SDL_iconv_string("UCS-2", "UTF-8", S, SDL_strlen(S)+1)
 #define SDL_iconv_utf8_ucs4(S)		(Uint32 *)SDL_iconv_string("UCS-4", "UTF-8", S, SDL_strlen(S)+1)
 
--- a/src/stdlib/SDL_iconv.c	Tue Jul 03 09:55:29 2007 +0000
+++ b/src/stdlib/SDL_iconv.c	Wed Jul 04 07:08:16 2007 +0000
@@ -110,29 +110,33 @@
     const char *name;
     int format;
 } encodings[] = {
-    {
-    "ASCII", ENCODING_ASCII}, {
-    "US-ASCII", ENCODING_ASCII}, {
-    "LATIN1", ENCODING_LATIN1}, {
-    "ISO-8859-1", ENCODING_LATIN1}, {
-    "UTF8", ENCODING_UTF8}, {
-    "UTF-8", ENCODING_UTF8}, {
-    "UTF16", ENCODING_UTF16}, {
-    "UTF-16", ENCODING_UTF16}, {
-    "UTF16BE", ENCODING_UTF16BE}, {
-    "UTF-16BE", ENCODING_UTF16BE}, {
-    "UTF16LE", ENCODING_UTF16LE}, {
-    "UTF-16LE", ENCODING_UTF16LE}, {
-    "UTF32", ENCODING_UTF32}, {
-    "UTF-32", ENCODING_UTF32}, {
-    "UTF32BE", ENCODING_UTF32BE}, {
-    "UTF-32BE", ENCODING_UTF32BE}, {
-    "UTF32LE", ENCODING_UTF32LE}, {
-    "UTF-32LE", ENCODING_UTF32LE}, {
-    "UCS2", ENCODING_UCS2}, {
-    "UCS-2", ENCODING_UCS2}, {
-    "UCS4", ENCODING_UCS4}, {
-"UCS-4", ENCODING_UCS4},};
+/* *INDENT-OFF* */
+    { "646", ENCODING_ASCII },
+    { "ASCII", ENCODING_ASCII },
+    { "US-ASCII", ENCODING_ASCII },
+    { "LATIN1", ENCODING_LATIN1 },
+    { "8859-1", ENCODING_LATIN1 },
+    { "ISO-8859-1", ENCODING_LATIN1 },
+    { "UTF8", ENCODING_UTF8 },
+    { "UTF-8", ENCODING_UTF8 },
+    { "UTF16", ENCODING_UTF16 },
+    { "UTF-16", ENCODING_UTF16 },
+    { "UTF16BE", ENCODING_UTF16BE },
+    { "UTF-16BE", ENCODING_UTF16BE },
+    { "UTF16LE", ENCODING_UTF16LE },
+    { "UTF-16LE", ENCODING_UTF16LE },
+    { "UTF32", ENCODING_UTF32 },
+    { "UTF-32", ENCODING_UTF32 },
+    { "UTF32BE", ENCODING_UTF32BE },
+    { "UTF-32BE", ENCODING_UTF32BE },
+    { "UTF32LE", ENCODING_UTF32LE },
+    { "UTF-32LE", ENCODING_UTF32LE },
+    { "UCS2", ENCODING_UCS2 },
+    { "UCS-2", ENCODING_UCS2 },
+    { "UCS4", ENCODING_UCS4 },
+    { "UCS-4", ENCODING_UCS4 },
+/* *INDENT-ON* */
+};
 
 SDL_iconv_t
 SDL_iconv_open(const char *tocode, const char *fromcode)
--- a/test/testiconv.c	Tue Jul 03 09:55:29 2007 +0000
+++ b/test/testiconv.c	Wed Jul 04 07:08:16 2007 +0000
@@ -57,12 +57,16 @@
         for (i = 0; i < SDL_arraysize(formats); ++i) {
             test[0] = SDL_iconv_string(formats[i], "UCS-4", ucs4, len);
             test[1] = SDL_iconv_string("UCS-4", formats[i], test[0], len);
-            if (SDL_memcmp(test[1], ucs4, len) != 0) {
+            if (!test[1] || SDL_memcmp(test[1], ucs4, len) != 0) {
                 fprintf(stderr, "FAIL: %s\n", formats[i]);
                 ++errors;
             }
-            SDL_free(test[0]);
-            SDL_free(test[1]);
+            if(test[0]) {
+                SDL_free(test[0]);
+            }
+            if(test[1]) {
+                SDL_free(test[1]);
+            }
         }
         test[0] = SDL_iconv_string("UTF-8", "UCS-4", ucs4, len);
         SDL_free(ucs4);