Merged Ryan's patch from revision 3238 in SDL 1.2
--HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%402507
This commit is contained in:
parent
fc3b506099
commit
942236ea2a
1 changed files with 20 additions and 4 deletions
|
@ -137,9 +137,10 @@ static struct
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char *
|
static const char *
|
||||||
getlocale()
|
getlocale(char *buffer, size_t bufsize)
|
||||||
{
|
{
|
||||||
const char *lang;
|
const char *lang;
|
||||||
|
char *ptr;
|
||||||
|
|
||||||
lang = SDL_getenv("LC_ALL");
|
lang = SDL_getenv("LC_ALL");
|
||||||
if (!lang) {
|
if (!lang) {
|
||||||
|
@ -154,7 +155,20 @@ getlocale()
|
||||||
if (!lang || !*lang || SDL_strcmp(lang, "C") == 0) {
|
if (!lang || !*lang || SDL_strcmp(lang, "C") == 0) {
|
||||||
lang = "ASCII";
|
lang = "ASCII";
|
||||||
}
|
}
|
||||||
return lang;
|
|
||||||
|
/* We need to trim down strings like "en_US.UTF-8@blah" to "UTF-8" */
|
||||||
|
ptr = SDL_strchr(lang, '.');
|
||||||
|
if (ptr != NULL) {
|
||||||
|
lang = ptr + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
SDL_strlcpy(buffer, lang, bufsize);
|
||||||
|
ptr = SDL_strchr(buffer, '@');
|
||||||
|
if (ptr != NULL) {
|
||||||
|
*ptr = '\0'; /* chop end of string. */
|
||||||
|
}
|
||||||
|
|
||||||
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_iconv_t
|
SDL_iconv_t
|
||||||
|
@ -163,12 +177,14 @@ SDL_iconv_open(const char *tocode, const char *fromcode)
|
||||||
int src_fmt = ENCODING_UNKNOWN;
|
int src_fmt = ENCODING_UNKNOWN;
|
||||||
int dst_fmt = ENCODING_UNKNOWN;
|
int dst_fmt = ENCODING_UNKNOWN;
|
||||||
int i;
|
int i;
|
||||||
|
char fromcode_buffer[64];
|
||||||
|
char tocode_buffer[64];
|
||||||
|
|
||||||
if (!fromcode || !*fromcode) {
|
if (!fromcode || !*fromcode) {
|
||||||
fromcode = getlocale();
|
fromcode = getlocale(fromcode_buffer, sizeof(fromcode_buffer));
|
||||||
}
|
}
|
||||||
if (!tocode || !*tocode) {
|
if (!tocode || !*tocode) {
|
||||||
fromcode = getlocale();
|
tocode = getlocale(tocode_buffer, sizeof(tocode_buffer));
|
||||||
}
|
}
|
||||||
for (i = 0; i < SDL_arraysize(encodings); ++i) {
|
for (i = 0; i < SDL_arraysize(encodings); ++i) {
|
||||||
if (SDL_strcasecmp(fromcode, encodings[i].name) == 0) {
|
if (SDL_strcasecmp(fromcode, encodings[i].name) == 0) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue