summaryrefslogtreecommitdiff
path: root/src/win32
diff options
context:
space:
mode:
Diffstat (limited to 'src/win32')
-rw-r--r--src/win32/anope_windows.h2
-rw-r--r--src/win32/dl/dl.cpp3
-rw-r--r--src/win32/windows.cpp17
3 files changed, 14 insertions, 8 deletions
diff --git a/src/win32/anope_windows.h b/src/win32/anope_windows.h
index f2a496c33..061934752 100644
--- a/src/win32/anope_windows.h
+++ b/src/win32/anope_windows.h
@@ -74,7 +74,7 @@ namespace Anope
extern CoreExport void OnStartup();
extern CoreExport void OnShutdown();
-extern CoreExport USHORT WindowsGetLanguage(const char *lang);
+extern CoreExport USHORT WindowsGetLanguage(const Anope::string &lang);
extern CoreExport int gettimeofday(timeval *tv, void *);
extern CoreExport Anope::string GetWindowsVersion();
extern CoreExport bool SupportedWindowsVersion();
diff --git a/src/win32/dl/dl.cpp b/src/win32/dl/dl.cpp
index b7ffddaa3..5b19d7441 100644
--- a/src/win32/dl/dl.cpp
+++ b/src/win32/dl/dl.cpp
@@ -15,7 +15,8 @@ void *dlopen(const char *filename, int)
char *dlerror(void)
{
- static Anope::string err = Anope::LastError();
+ static Anope::string err;
+ err = Anope::LastError();
SetLastError(0);
return err.empty() ? NULL : const_cast<char *>(err.c_str());
}
diff --git a/src/win32/windows.cpp b/src/win32/windows.cpp
index 319bebf58..a70ff53c3 100644
--- a/src/win32/windows.cpp
+++ b/src/win32/windows.cpp
@@ -20,12 +20,13 @@
static struct WindowsLanguage
{
- const char *languageName;
+ Anope::string languageName;
USHORT windowsLanguageName;
} WindowsLanguages[] = {
{"ca_ES", LANG_CATALAN},
{"de_DE", LANG_GERMAN},
{"el_GR", LANG_GREEK},
+ {"en_US", LANG_ENGLISH},
{"es_ES", LANG_SPANISH},
{"fr_FR", LANG_FRENCH},
{"hu_HU", LANG_HUNGARIAN},
@@ -35,7 +36,6 @@ static struct WindowsLanguage
{"pt_PT", LANG_PORTUGUESE},
{"ru_RU", LANG_RUSSIAN},
{"tr_TR", LANG_TURKISH},
- {NULL, 0}
};
static WSADATA wsa;
@@ -51,11 +51,16 @@ void OnShutdown()
WSACleanup();
}
-USHORT WindowsGetLanguage(const char *lang)
+USHORT WindowsGetLanguage(const Anope::string &lang)
{
- for (int i = 0; WindowsLanguages[i].languageName; ++i)
- if (!strcmp(lang, WindowsLanguages[i].languageName))
- return WindowsLanguages[i].windowsLanguageName;
+ for (int i = 0; i < sizeof(WindowsLanguages) / sizeof(WindowsLanguage); ++i)
+ {
+ WindowsLanguage &l = WindowsLanguages[i];
+
+ if (lang == l.languageName || !lang.find(l.languageName + "."))
+ return l.windowsLanguageName;
+ }
+
return LANG_NEUTRAL;
}