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... locale [-amvhV] locale [-ck] NAME -locale [-usfnU] +locale [-iusfnU] @@ -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: locale without parameters prints information about the current locale environment settings. - The -u, -s, - -f, and -n 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. + The -i, -u, + -s, -f, and -n + 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. + + The -i option prints the current input language. + This is called the "Input language" and basically equivalent to the + current keyboard layout setting. The -u option prints the current user's Windows UI locale to stdout. In Windows this setting is called the - "Display Language". The -s option prints the systems - default instead. The -f 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 - -U option locale appends a - ".UTF-8". + "Display Language". + + The -s option prints the systems default instead. + + + The -f 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. + + The -n option prints the system's default + language used for applications which don't support Unicode. + + With the -U option locale + appends the string ".UTF-8" to enforce using UTF-8. Using UTF-8 + as codeset is recommended. Usage example: 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;