diff options
Diffstat (limited to 'src/win32')
| -rw-r--r-- | src/win32/anope_windows.h | 2 | ||||
| -rw-r--r-- | src/win32/dl/dl.cpp | 3 | ||||
| -rw-r--r-- | src/win32/windows.cpp | 17 |
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; } |
