SDL
2.0
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
testiconv.c
Go to the documentation of this file.
1
/*
2
Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org>
3
4
This software is provided 'as-is', without any express or implied
5
warranty. In no event will the authors be held liable for any damages
6
arising from the use of this software.
7
8
Permission is granted to anyone to use this software for any purpose,
9
including commercial applications, and to alter it and redistribute it
10
freely.
11
*/
12
13
#include <stdio.h>
14
15
#include "
SDL.h
"
16
17
static
size_t
18
widelen
(
char
*
data
)
19
{
20
size_t
len
= 0;
21
Uint32
*
p
= (
Uint32
*) data;
22
while
(*p++) {
23
++
len
;
24
}
25
return
len
;
26
}
27
28
int
29
main
(
int
argc,
char
*argv[])
30
{
31
const
char
*
formats
[] = {
32
"UTF8"
,
33
"UTF-8"
,
34
"UTF16BE"
,
35
"UTF-16BE"
,
36
"UTF16LE"
,
37
"UTF-16LE"
,
38
"UTF32BE"
,
39
"UTF-32BE"
,
40
"UTF32LE"
,
41
"UTF-32LE"
,
42
"UCS4"
,
43
"UCS-4"
,
44
};
45
char
buffer
[BUFSIZ];
46
char
*ucs4;
47
char
*test[2];
48
int
i
;
49
FILE *file;
50
int
errors = 0;
51
52
/* Enable standard application logging */
53
SDL_LogSetPriority
(
SDL_LOG_CATEGORY_APPLICATION
,
SDL_LOG_PRIORITY_INFO
);
54
55
if
(!argv[1]) {
56
argv[1] =
"utf8.txt"
;
57
}
58
file = fopen(argv[1],
"rb"
);
59
if
(!file) {
60
SDL_LogError
(
SDL_LOG_CATEGORY_APPLICATION
,
"Unable to open %s\n"
, argv[1]);
61
return
(1);
62
}
63
64
while
(fgets(buffer,
sizeof
(buffer), file)) {
65
/* Convert to UCS-4 */
66
size_t
len
;
67
ucs4 =
68
SDL_iconv_string
(
"UCS-4"
,
"UTF-8"
, buffer,
69
SDL_strlen
(buffer) + 1);
70
len = (
widelen
(ucs4) + 1) * 4;
71
for
(i = 0; i <
SDL_arraysize
(formats); ++
i
) {
72
test[0] =
SDL_iconv_string
(formats[i],
"UCS-4"
, ucs4, len);
73
test[1] =
SDL_iconv_string
(
"UCS-4"
, formats[i], test[0], len);
74
if
(!test[1] ||
SDL_memcmp
(test[1], ucs4, len) != 0) {
75
SDL_LogError
(
SDL_LOG_CATEGORY_APPLICATION
,
"FAIL: %s\n"
, formats[i]);
76
++errors;
77
}
78
SDL_free
(test[0]);
79
SDL_free
(test[1]);
80
}
81
test[0] =
SDL_iconv_string
(
"UTF-8"
,
"UCS-4"
, ucs4, len);
82
SDL_free
(ucs4);
83
fputs(test[0], stdout);
84
SDL_free
(test[0]);
85
}
86
fclose(file);
87
return
(errors ? errors + 1 : 0);
88
}
test
testiconv.c
Generated on Sun Jun 26 2022 23:07:20 for SDL by
1.8.1.2