summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/numfmt.c6
-rw-r--r--src/sort.c8
-rwxr-xr-xtests/misc/sort-debug-warn.sh2
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