summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--winsup/doc/utils.xml39
-rw-r--r--winsup/utils/locale.cc9
2 files changed, 34 insertions, 14 deletions
diff --git a/winsup/doc/utils.xml b/winsup/doc/utils.xml
index 906c3773b..4af6583da 100644
--- a/winsup/doc/utils.xml
+++ b/winsup/doc/utils.xml
@@ -787,7 +787,7 @@ ldd [OPTION]... FILE...
<screen>
locale [-amvhV]
locale [-ck] NAME
-locale [-usfnU]
+locale [-iusfnU]
</screen>
</refsynopsisdiv>
@@ -807,6 +807,7 @@ Modify output format:
Default locale information:
+ -i, --input Print current input locale
-u, --user Print locale of user's default UI language
-s, --system Print locale of system default UI language
-f, --format Print locale of user's regional format settings
@@ -826,20 +827,34 @@ Other options:
<para><command>locale</command> without parameters prints information about
the current locale environment settings.</para>
- <para>The <literal>-u</literal>, <literal>-s</literal>,
- <literal>-f</literal>, and <literal>-n</literal> options can be used to
- request the various Windows locale settings. The purpose is to use this
- command in scripts to set the POSIX locale variables.</para>
+ <para>The <literal>-i</literal>, <literal>-u</literal>,
+ <literal>-s</literal>, <literal>-f</literal>, and <literal>-n</literal>
+ options can be used to request the various Windows locale settings. The
+ purpose is to use this command in scripts to set the POSIX locale
+ variables.</para>
+
+ <para>The <literal>-i</literal> option prints the current input language.
+ This is called the "Input language" and basically equivalent to the
+ current keyboard layout setting.</para>
<para>The <literal>-u</literal> option prints the current user's Windows UI
locale to stdout. In Windows this setting is called the
- "Display Language". The <literal>-s</literal> option prints the systems
- default instead. The <literal>-f</literal> option prints the user's
- setting for time, date, number and currency. That's equivalent to the
- setting in the "Formats" or "Regional Options" tab in the "Region and
- Language" or "Regional and Language Options" dialog. With the
- <literal>-U</literal> option <command>locale</command> appends a
- ".UTF-8".</para>
+ "Display Language".</para>
+
+ <para>The <literal>-s</literal> option prints the systems default instead.
+ </para>
+
+ <para>The <literal>-f</literal> option prints the user's setting for time,
+ date, number and currency. That's equivalent to the setting in the
+ "Formats" or "Regional Options" tab in the "Region and Language" or
+ "Regional and Language Options" dialog.</para>
+
+ <para>The <literal>-n</literal> option prints the system's default
+ language used for applications which don't support Unicode.</para>
+
+ <para>With the <literal>-U</literal> option <command>locale</command>
+ appends the string ".UTF-8" to enforce using UTF-8. Using UTF-8
+ as codeset is recommended.</para>
<para>Usage example:</para>
diff --git a/winsup/utils/locale.cc b/winsup/utils/locale.cc
index c9d4b5d59..1cd04337c 100644
--- a/winsup/utils/locale.cc
+++ b/winsup/utils/locale.cc
@@ -48,7 +48,7 @@ usage ()
printf (
"Usage: %1$s [-amvhV]\n"
" or: %1$s [-ck] NAME\n"
-" or: %1$s [-usfnU]\n"
+" or: %1$s [-iusfnU]\n"
"\n"
"Get locale-specific information.\n"
"\n"
@@ -65,6 +65,7 @@ usage ()
"\n"
"Default locale information:\n"
"\n"
+" -i, --input Print current input locale\n"
" -u, --user Print locale of user's default UI language\n"
" -s, --system Print locale of system default UI language\n"
" -f, --format Print locale of user's regional format settings\n"
@@ -93,6 +94,7 @@ struct option longopts[] = {
{"category-name", no_argument, NULL, 'c'},
{"format", no_argument, NULL, 'f'},
{"help", no_argument, NULL, 'h'},
+ {"input", no_argument, NULL, 'i'},
{"keyword-name", no_argument, NULL, 'k'},
{"charmaps", no_argument, NULL, 'm'},
{"no-unicode", no_argument, NULL, 'n'},
@@ -103,7 +105,7 @@ struct option longopts[] = {
{"version", no_argument, NULL, 'V'},
{0, no_argument, NULL, 0}
};
-const char *opts = "acfhkmnsuUvV";
+const char *opts = "acfhikmnsuUvV";
int
getlocale (LCID lcid, char *name)
@@ -786,6 +788,9 @@ main (int argc, char **argv)
case 'm':
maps = 1;
break;
+ case 'i':
+ lcid = (UINT_PTR) GetKeyboardLayout (0) & 0xffff;
+ break;
case 's':
lcid = GetSystemDefaultUILanguage ();
break;