diff options
-rw-r--r-- | src/numfmt.c | 6 | ||||
-rw-r--r-- | src/sort.c | 8 | ||||
-rwxr-xr-x | tests/misc/sort-debug-warn.sh | 2 |
3 files changed, 13 insertions, 3 deletions
diff --git a/src/numfmt.c b/src/numfmt.c index 24bf45b37..109947e20 100644 --- a/src/numfmt.c +++ b/src/numfmt.c @@ -1429,10 +1429,11 @@ int main (int argc, char **argv) { int valid_numbers = 1; + bool locale_ok; initialize_main (&argc, &argv); set_program_name (argv[0]); - setlocale (LC_ALL, ""); + locale_ok = setlocale (LC_ALL, ""); bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); @@ -1558,6 +1559,9 @@ main (int argc, char **argv) if (format_str != NULL && grouping) error (EXIT_FAILURE, 0, _("--grouping cannot be combined with --format")); + if (debug && ! locale_ok) + error (0, 0, _("failed to set locale")); + /* Warn about no-op. */ if (debug && scale_from == scale_none && scale_to == scale_none && !grouping && (padding_width == 0) && (format_str == NULL)) diff --git a/src/sort.c b/src/sort.c index 7ce059282..9396f46dc 100644 --- a/src/sort.c +++ b/src/sort.c @@ -4187,10 +4187,11 @@ main (int argc, char **argv) char *files_from = NULL; struct Tokens tok; char const *outfile = NULL; + bool locale_ok; initialize_main (&argc, &argv); set_program_name (argv[0]); - setlocale (LC_ALL, ""); + locale_ok = setlocale (LC_ALL, ""); bindtextdomain (PACKAGE, LOCALEDIR); textdomain (PACKAGE); @@ -4664,7 +4665,10 @@ main (int argc, char **argv) error (0, 0, _("using %s sorting rules"), quote (setlocale (LC_COLLATE, NULL))); else - error (0, 0, _("using simple byte comparison")); + { + error (0, 0, "%s%s", locale_ok ? "" : _("failed to set locale; "), + _("using simple byte comparison")); + } key_warnings (&gkey, gkey_only); } diff --git a/tests/misc/sort-debug-warn.sh b/tests/misc/sort-debug-warn.sh index 19015664a..b25365f50 100755 --- a/tests/misc/sort-debug-warn.sh +++ b/tests/misc/sort-debug-warn.sh @@ -51,6 +51,7 @@ sort: option '-i' is ignored sort: using simple byte comparison sort: using simple byte comparison sort: using simple byte comparison +sort: failed to set locale; using simple byte comparison EOF sort -s -k2,1 --debug /dev/null 2>>out @@ -70,6 +71,7 @@ sort -i -k1,1d --debug /dev/null 2>>out sort -r --debug /dev/null 2>>out #no warning sort -rM --debug /dev/null 2>>out #no warning sort -rM -k1,1 --debug /dev/null 2>>out #no warning +LC_ALL=missing sort --debug /dev/null 2>>out compare exp out || fail=1 |