mirror of
https://https.git.savannah.gnu.org/git/coreutils.git
synced 2026-01-27 01:44:21 +00:00
sort: handle musl locale differences in --debug reporting
* src/sort.c (main): Don't assume hard_LC_COLLATE implies a successful setting of the locale as musl defaults to UTF8 when failing to set the specified locale. * tests/misc/sort-debug-warn.sh: Adjust for the now separated locale debug info and map the musl specific message back to the common case. Addresses https://bugs.gnu.org/28054
This commit is contained in:
parent
ae15011284
commit
787a8876fa
17
src/sort.c
17
src/sort.c
@ -4675,18 +4675,19 @@ main (int argc, char **argv)
|
||||
|
||||
/* Always output the locale in debug mode, since this
|
||||
is such a common source of confusion. */
|
||||
|
||||
/* OpenBSD can only set some categories with LC_ALL above,
|
||||
so set LC_COLLATE explicitly to flag errors. */
|
||||
if (locale_ok)
|
||||
locale_ok = !! setlocale (LC_COLLATE, "");
|
||||
if (! locale_ok)
|
||||
error (0, 0, "%s", _("failed to set locale"));
|
||||
if (hard_LC_COLLATE)
|
||||
error (0, 0, _("using %s sorting rules"),
|
||||
quote (setlocale (LC_COLLATE, NULL)));
|
||||
else
|
||||
{
|
||||
/* OpenBSD can only set some categories with LC_ALL above,
|
||||
so set LC_COLLATE explicitly to flag errors. */
|
||||
if (locale_ok)
|
||||
locale_ok = !! setlocale (LC_COLLATE, "");
|
||||
error (0, 0, "%s%s", locale_ok ? "" : _("failed to set locale; "),
|
||||
_("using simple byte comparison"));
|
||||
}
|
||||
error (0, 0, "%s", _("using simple byte comparison"));
|
||||
|
||||
key_warnings (&gkey, gkey_only);
|
||||
}
|
||||
|
||||
|
||||
@ -71,7 +71,8 @@ sort: using simple byte comparison
|
||||
17
|
||||
sort: using simple byte comparison
|
||||
18
|
||||
sort: failed to set locale; using simple byte comparison
|
||||
sort: failed to set locale
|
||||
sort: using simple byte comparison
|
||||
EOF
|
||||
|
||||
echo 1 >> out
|
||||
@ -109,7 +110,11 @@ sort -rM --debug /dev/null 2>>out #no warning
|
||||
echo 17 >> out
|
||||
sort -rM -k1,1 --debug /dev/null 2>>out #no warning
|
||||
echo 18 >> out
|
||||
LC_ALL=missing sort --debug /dev/null 2>>out
|
||||
LC_ALL=missing sort --debug /dev/null 2>>out.t
|
||||
# musl libc accepts "missing" and implicitly uses UTF8,
|
||||
# so adjust the expected message accordingly.
|
||||
sed 's/using .*missing.* sorting rules/using simple byte comparison/' \
|
||||
out.t >>out
|
||||
|
||||
compare exp out || fail=1
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user