summaryrefslogtreecommitdiff
path: root/src/win32
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2014-06-10 22:00:00 -0400
committerAdam <Adam@anope.org>2014-06-10 22:00:26 -0400
commit8066378471d5cecc5eeb3b9c2752fc684df33d50 (patch)
treea98fe995ed505317017d6b3994b9708760aec778 /src/win32
parentab27b792b051f61336c2243bef2750f4abb53cfc (diff)
Fix WindowsGetLanguage()
Diffstat (limited to 'src/win32')
-rw-r--r--src/win32/anope_windows.h2
-rw-r--r--src/win32/windows.cpp16
2 files changed, 11 insertions, 7 deletions
diff --git a/src/win32/anope_windows.h b/src/win32/anope_windows.h
index ad561f9b3..e534d7927 100644
--- a/src/win32/anope_windows.h
+++ b/src/win32/anope_windows.h
@@ -68,7 +68,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/windows.cpp b/src/win32/windows.cpp
index 04eb2fae3..3ef1bcfa9 100644
--- a/src/win32/windows.cpp
+++ b/src/win32/windows.cpp
@@ -20,7 +20,7 @@
static struct WindowsLanguage
{
- const char *languageName;
+ Anope::string languageName;
USHORT windowsLanguageName;
} WindowsLanguages[] = {
{"ca_ES", LANG_CATALAN},
@@ -36,7 +36,6 @@ static struct WindowsLanguage
{"pt_PT", LANG_PORTUGUESE},
{"ru_RU", LANG_RUSSIAN},
{"tr_TR", LANG_TURKISH},
- {NULL, 0}
};
static WSADATA wsa;
@@ -52,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;
}