Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2010-01-25 12:22:12 +0300
committerCorinna Vinschen <corinna@vinschen.de>2010-01-25 12:22:12 +0300
commitca2b906d557f7313ba10cf07738d81d75e8b3b8c (patch)
treed3db7fa8521fdfed52188876b805d592a5800d43 /winsup/utils
parentaf7f57b9fbe78eb8fa0d834b1ddcdbcc6eb42ece (diff)
* getlocale.c (main): Use setlocale and fetch string from Windows
using GetLocaleInfoW. Explain why.
Diffstat (limited to 'winsup/utils')
-rw-r--r--winsup/utils/ChangeLog5
-rw-r--r--winsup/utils/getlocale.c14
2 files changed, 14 insertions, 5 deletions
diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog
index 8d677e6fd..83318f3da 100644
--- a/winsup/utils/ChangeLog
+++ b/winsup/utils/ChangeLog
@@ -1,3 +1,8 @@
+2010-01-25 Corinna Vinschen <corinna@vinschen.de>
+
+ * getlocale.c (main): Use setlocale and fetch string from Windows
+ using GetLocaleInfoW. Explain why.
+
2010-01-22 Corinna Vinschen <corinna@vinschen.de>
* Makefile.in (CYGWIN_BINS): Add getlocale.
diff --git a/winsup/utils/getlocale.c b/winsup/utils/getlocale.c
index 3a601269f..024dee762 100644
--- a/winsup/utils/getlocale.c
+++ b/winsup/utils/getlocale.c
@@ -26,6 +26,7 @@
#include <stdio.h>
#include <getopt.h>
#include <string.h>
+#include <locale.h>
#define WINVER 0x0601
#include <windows.h>
@@ -83,6 +84,7 @@ int main (int argc, char **argv)
const char *utf = "";
char name[32];
+ setlocale (LC_ALL, "");
while ((opt = getopt_long (argc, argv, opts, longopts, NULL)) != EOF)
switch (opt)
{
@@ -112,13 +114,15 @@ int main (int argc, char **argv)
lcid = (sublang << 10) | lang;
if (getlocale (lcid, name))
{
- char lang[256];
- char country[256];
+ wchar_t lang[256];
+ wchar_t country[256];
char loc[32];
- GetLocaleInfo (lcid, LOCALE_SENGLANGUAGE, lang, 256);
- GetLocaleInfo (lcid, LOCALE_SENGCOUNTRY, country, 256);
+ /* Go figure. Even the English name of a language or
+ locale might contain native characters. */
+ GetLocaleInfoW (lcid, LOCALE_SENGLANGUAGE, lang, 256);
+ GetLocaleInfoW (lcid, LOCALE_SENGCOUNTRY, country, 256);
stpcpy (stpcpy (loc, name), utf);
- printf ("%-16s %s (%s)\n", loc, lang, country);
+ printf ("%-16s %ls (%ls)\n", loc, lang, country);
}
}
return 0;