diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2011-10-10 09:50:43 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2011-10-10 09:50:43 +0000 |
commit | 9198ac4dc6f5b3c32e1bd8964a1e42799fd6ec91 (patch) | |
tree | 097a1c43a15d9a7a163e29fd6badedd3cc21cfa9 | |
parent | f818494c6372b5d0184ec4065876b065c6b34bfe (diff) | |
download | cygnal-9198ac4dc6f5b3c32e1bd8964a1e42799fd6ec91.tar.gz cygnal-9198ac4dc6f5b3c32e1bd8964a1e42799fd6ec91.tar.bz2 cygnal-9198ac4dc6f5b3c32e1bd8964a1e42799fd6ec91.zip |
* locale.cc (usage): Restructure, rephrase, add new options. Drop
arguments, don't exit.
(print_version): New function.
(longopts): Add -f, -n, and -V options. Reorder.
(opts): Add -f, -n, and -V options.
(main): Call GetSystemDefaultUILanguage for -s option. Call
GetUserDefaultUILanguage for -u option. Add -f and -n options and
call GetUserDefaultLCID and GetSystemDefaultLCID respectively. Return
0 after calling usage in -h case. Add -V option and call print_version.
Don't print full usage in default case, rather just a short help message
similar to GNU tools.
* utils.sgml (locale): Align to above changes. Rephrase description.
-rw-r--r-- | winsup/utils/ChangeLog | 16 | ||||
-rw-r--r-- | winsup/utils/locale.cc | 96 | ||||
-rw-r--r-- | winsup/utils/utils.sgml | 51 |
3 files changed, 123 insertions, 40 deletions
diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog index e1cca1540..b365b95a0 100644 --- a/winsup/utils/ChangeLog +++ b/winsup/utils/ChangeLog @@ -1,3 +1,19 @@ +2011-10-10 Andy Koppe <andy.koppe@gmail.com> + Corinna Vinschen <corinna@vinschen.de> + + * locale.cc (usage): Restructure, rephrase, add new options. Drop + arguments, don't exit. + (print_version): New function. + (longopts): Add -f, -n, and -V options. Reorder. + (opts): Add -f, -n, and -V options. + (main): Call GetSystemDefaultUILanguage for -s option. Call + GetUserDefaultUILanguage for -u option. Add -f and -n options and + call GetUserDefaultLCID and GetSystemDefaultLCID respectively. Return + 0 after calling usage in -h case. Add -V option and call print_version. + Don't print full usage in default case, rather just a short help message + similar to GNU tools. + * utils.sgml (locale): Align to above changes. Rephrase description. + 2011-10-10 Corinna Vinschen <corinna@vinschen.de> * cygcheck.cc (check_keys): Use UNICODE Win32 functions. diff --git a/winsup/utils/locale.cc b/winsup/utils/locale.cc index 30568f638..a287d1f79 100644 --- a/winsup/utils/locale.cc +++ b/winsup/utils/locale.cc @@ -32,6 +32,7 @@ #include <langinfo.h> #include <limits.h> #include <sys/cygwin.h> +#include <cygwin/version.h> #define WINVER 0x0601 #include <windows.h> @@ -40,44 +41,72 @@ extern char *__progname; -void usage (FILE *, int) __attribute__ ((noreturn)); +void +usage () +{ + printf ( +"Usage: %1$s [-amvhV]\n" +" or: %1$s [-ck] NAME\n" +" or: %1$s [-usfnU]\n" +"Get locale-specific information.\n" +"\n" +"System information:\n" +"\n" +" -a, --all-locales List all available supported locales\n" +" -m, --charmaps List all available character maps\n" +" -v, --verbose More verbose output\n" +"\n" +"Modify output format:\n" +"\n" +" -c, --category-name List information about given category NAME\n" +" -k, --keyword-name Print information about given keyword NAME\n" +"\n" +"Default locale information:\n" +"\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" +" (time, numeric & monetary)\n" +" -n, --no-unicode Print system default locale for non-Unicode programs\n" +" -U, --utf Attach \".UTF-8\" to the result\n" +"\n" +"Other options:\n" +"\n" +" -h, --help This text\n" +" -V, --version Print program version and exit\n\n", + __progname); +} void -usage (FILE * stream, int status) +print_version () { - fprintf (stream, - "Usage: %s [-amsuUvh]\n" - " or: %s [-ck] NAME\n" - "Get locale-specific information.\n" - "\n" - "Options:\n" - "\n" - " -a, --all-locales List all available supported locales\n" - " -c, --category-name List information about given category NAME\n" - " -k, --keyword-name Print information about given keyword NAME\n" - " -m, --charmaps List all available character maps\n" - " -s, --system Print system default locale\n" - " -u, --user Print user's default locale\n" - " -U, --utf Attach \".UTF-8\" to the result\n" - " -v, --verbose More verbose output\n" - " -h, --help This text\n", - __progname, __progname); - exit (status); + printf ("%s (cygwin) %d.%d.%d\n" + "Get locale-specific information.\n" + "Copyright 2011 Red Hat, Inc.\n" + "Compiled on %s\n", + __progname, + CYGWIN_VERSION_DLL_MAJOR / 1000, + CYGWIN_VERSION_DLL_MAJOR % 1000, + CYGWIN_VERSION_DLL_MINOR, + __DATE__); } struct option longopts[] = { {"all-locales", no_argument, NULL, 'a'}, {"category-name", no_argument, NULL, 'c'}, + {"format", no_argument, NULL, 'f'}, + {"help", no_argument, NULL, 'h'}, {"keyword-name", no_argument, NULL, 'k'}, {"charmaps", no_argument, NULL, 'm'}, + {"no-unicode", no_argument, NULL, 'n'}, {"system", no_argument, NULL, 's'}, {"user", no_argument, NULL, 'u'}, {"utf", no_argument, NULL, 'U'}, {"verbose", no_argument, NULL, 'v'}, - {"help", no_argument, NULL, 'h'}, + {"version", no_argument, NULL, 'V'}, {0, no_argument, NULL, 0} }; -const char *opts = "achkmsuUv"; +const char *opts = "acfhkmnsuUvV"; int getlocale (LCID lcid, char *name) @@ -772,10 +801,16 @@ main (int argc, char **argv) maps = 1; break; case 's': - lcid = LOCALE_SYSTEM_DEFAULT; + lcid = GetSystemDefaultUILanguage (); break; case 'u': - lcid = LOCALE_USER_DEFAULT; + lcid = GetUserDefaultUILanguage (); + break; + case 'f': + lcid = GetUserDefaultLCID (); + break; + case 'n': + lcid = GetSystemDefaultLCID (); break; case 'U': utf = ".UTF-8"; @@ -784,11 +819,16 @@ main (int argc, char **argv) verbose = 1; break; case 'h': - usage (stdout, 0); - break; + usage (); + return 0; + case 'V': + print_version (); + return 0; default: - usage (stderr, 1); - break; + fprintf (stderr, + "Try `%1$s --help' or `%1$s -h' for more information.\n", + __progname); + return 1; } if (all) print_all_locales (verbose); diff --git a/winsup/utils/utils.sgml b/winsup/utils/utils.sgml index f57f7248e..ef6dfdb65 100644 --- a/winsup/utils/utils.sgml +++ b/winsup/utils/utils.sgml @@ -606,37 +606,64 @@ SIGUSR2 31 user defined signal 2 <sect2 id="locale"><title>locale</title> <screen> -Usage: locale [-amsuUvh] +Usage: locale [-amvhV] or: locale [-ck] NAME + or: locale [-usfnU] Get locale-specific information. -Options: +System information: -a, --all-locales List all available supported locales - -c, --category-name List information about given category NAME - -k, --keyword-name Print information about given keyword NAME -m, --charmaps List all available character maps - -s, --system Print system default locale - -u, --user Print user's default locale - -U, --utf Attach ".UTF-8" to the result -v, --verbose More verbose output + +Modify output format: + + -c, --category-name List information about given category NAME + -k, --keyword-name Print information about given keyword NAME + +Default locale information: + + -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 + (time, numeric & monetary) + -n, --no-unicode Print system default locale for non-Unicode programs + -U, --utf Attach \".UTF-8\" to the result + +Other options: + -h, --help This text + -V, --version Print program version and exit </screen> <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>-u</literal> option prints the current user's Windows -default locale to stdout. The <literal>-s</literal> option prints the -systems default locale instead. With the <literal>-U</literal> option -<command>locale</command> appends a ".UTF-8". This can be used in scripts -to set the Cygwin locale to the Windows user or system default, for instance: -</para> +UI locale to stdout. In Windows Vista and Windows 7 this setting is called +the "Display Language"; there was no corresponding user setting in Windows XP. +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> + +<para>Usage example:</para> <screen> bash$ export LANG=$(locale -uU) bash$ echo $LANG en_US.UTF-8 +bash$ export LC_TIME=$(locale -fU) +bash$ echo $LC_TIME +de_DE.UTF-8 </screen> <para>The <literal>-a</literal> option is helpful to learn which locales |