diff options
author | Jesse Hall <jessehall@google.com> | 2012-07-09 11:27:07 -0700 |
---|---|---|
committer | Jesse Hall <jessehall@google.com> | 2012-07-22 00:35:08 -0700 |
commit | 9682c8870b8ff5e4ac2e4c70b759f791c6f38c1f (patch) | |
tree | ded6ee18c4e1f33df235e53615a6d65e2d64f4ef /distrib/sdl-1.2.15/test/testiconv.c | |
parent | 74b55003f76dbca96e4a26d98fe464081ca5341f (diff) | |
download | external_qemu-9682c8870b8ff5e4ac2e4c70b759f791c6f38c1f.zip external_qemu-9682c8870b8ff5e4ac2e4c70b759f791c6f38c1f.tar.gz external_qemu-9682c8870b8ff5e4ac2e4c70b759f791c6f38c1f.tar.bz2 |
Import SDL release-1.2.15
Change-Id: I505c4aea24325cad475f217db5589814b4c75dbf
Diffstat (limited to 'distrib/sdl-1.2.15/test/testiconv.c')
-rw-r--r-- | distrib/sdl-1.2.15/test/testiconv.c | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/distrib/sdl-1.2.15/test/testiconv.c b/distrib/sdl-1.2.15/test/testiconv.c new file mode 100644 index 0000000..53415d0 --- /dev/null +++ b/distrib/sdl-1.2.15/test/testiconv.c @@ -0,0 +1,73 @@ + +#include <stdio.h> + +#include "SDL.h" + +static size_t widelen(char *data) +{ + size_t len = 0; + Uint32 *p = (Uint32 *)data; + while(*p++) { + ++len; + } + return len; +} + +int main(int argc, char *argv[]) +{ + const char * formats[] = { + "UTF8", + "UTF-8", + "UTF16BE", + "UTF-16BE", + "UTF16LE", + "UTF-16LE", + "UTF32BE", + "UTF-32BE", + "UTF32LE", + "UTF-32LE", + "UCS4", + "UCS-4", + }; + char buffer[BUFSIZ]; + char *ucs4; + char *test[2]; + int i, index = 0; + FILE *file; + int errors = 0; + + if ( !argv[1] ) { + argv[1] = "utf8.txt"; + } + file = fopen(argv[1], "rb"); + if ( !file ) { + fprintf(stderr, "Unable to open %s\n", argv[1]); + return (1); + } + + while ( fgets(buffer, sizeof(buffer), file) ) { + /* Convert to UCS-4 */ + size_t len; + ucs4 = SDL_iconv_string("UCS-4", "UTF-8", buffer, SDL_strlen(buffer)+1); + len = (widelen(ucs4)+1)*4; + 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 ( !test[1] || SDL_memcmp(test[1], ucs4, len) != 0 ) { + fprintf(stderr, "FAIL: %s\n", formats[i]); + ++errors; + } + 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); + fputs(test[0], stdout); + SDL_free(test[0]); + } + return (errors ? errors + 1 : 0); +} |