mirror of
https://github.com/moparisthebest/wget
synced 2024-07-03 16:38:41 -04:00
[svn] Force the use of separators in C locale.
This commit is contained in:
parent
2254e5c4e4
commit
6655b5afee
@ -1,3 +1,8 @@
|
|||||||
|
2005-06-27 Hrvoje Niksic <hniksic@xemacs.org>
|
||||||
|
|
||||||
|
* utils.c (get_grouping_data): Force the use of separators in C
|
||||||
|
locale.
|
||||||
|
|
||||||
2005-06-27 Hrvoje Niksic <hniksic@xemacs.org>
|
2005-06-27 Hrvoje Niksic <hniksic@xemacs.org>
|
||||||
|
|
||||||
* main.c (i18n_initialize): Set all locale categories.
|
* main.c (i18n_initialize): Set all locale categories.
|
||||||
|
38
src/utils.c
38
src/utils.c
@ -1164,6 +1164,15 @@ free_keys_and_values (struct hash_table *ht)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Get grouping data, the separator and grouping info, by calling
|
||||||
|
localeconv(). The information is cached after the first call to
|
||||||
|
the function.
|
||||||
|
|
||||||
|
In locales that don't set a thousand separator (such as the "C"
|
||||||
|
locale), this forces it to be ",". Wget 1.10 is only using
|
||||||
|
thousand separators in one place, so this shouldn't be a problem in
|
||||||
|
practice. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
get_grouping_data (const char **sep, const char **grouping)
|
get_grouping_data (const char **sep, const char **grouping)
|
||||||
{
|
{
|
||||||
@ -1172,20 +1181,23 @@ get_grouping_data (const char **sep, const char **grouping)
|
|||||||
static bool initialized;
|
static bool initialized;
|
||||||
if (!initialized)
|
if (!initialized)
|
||||||
{
|
{
|
||||||
#ifdef LC_NUMERIC
|
|
||||||
/* Get the grouping info from the locale. */
|
/* Get the grouping info from the locale. */
|
||||||
struct lconv *lconv;
|
struct lconv *lconv = localeconv ();
|
||||||
const char *oldlocale = setlocale (LC_NUMERIC, "");
|
cached_sep = lconv->thousands_sep;
|
||||||
lconv = localeconv ();
|
cached_grouping = lconv->grouping;
|
||||||
cached_sep = xstrdup (lconv->thousands_sep);
|
if (!*cached_sep)
|
||||||
cached_grouping = xstrdup (lconv->grouping);
|
{
|
||||||
/* Restore the locale to previous settings. */
|
/* Many locales (such as "C" or "hr_HR") don't specify
|
||||||
setlocale (LC_NUMERIC, oldlocale);
|
grouping, which we still want to use it for legibility.
|
||||||
if (!cached_sep)
|
In those locales set the sep char to ',', unless that
|
||||||
#endif
|
character is used for decimal point, in which case set it
|
||||||
/* Force separator for locales that specify no separators
|
to " ". */
|
||||||
("C", "hr", and probably many more.) */
|
if (*lconv->decimal_point != ',')
|
||||||
cached_sep = ",", cached_grouping = "\x03";
|
cached_sep = ",";
|
||||||
|
else
|
||||||
|
cached_sep = " ";
|
||||||
|
cached_grouping = "\x03";
|
||||||
|
}
|
||||||
initialized = true;
|
initialized = true;
|
||||||
}
|
}
|
||||||
*sep = cached_sep;
|
*sep = cached_sep;
|
||||||
|
Loading…
Reference in New Issue
Block a user