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>2011-10-10 13:50:43 +0400
committerCorinna Vinschen <corinna@vinschen.de>2011-10-10 13:50:43 +0400
commit9198ac4dc6f5b3c32e1bd8964a1e42799fd6ec91 (patch)
tree097a1c43a15d9a7a163e29fd6badedd3cc21cfa9 /winsup/utils
parentf818494c6372b5d0184ec4065876b065c6b34bfe (diff)
* 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.
Diffstat (limited to 'winsup/utils')
-rw-r--r--winsup/utils/ChangeLog16
-rw-r--r--winsup/utils/locale.cc96
-rw-r--r--winsup/utils/utils.sgml51
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 &amp; 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