From 143d321a301b45d348dd8cf8a91163904e69e05b Mon Sep 17 00:00:00 2001 From: "Andrey A. Chernov" Date: Sat, 16 Jul 2016 13:26:18 +0000 Subject: [PATCH] Path generation was not according to collate Approved by: jilles --- bin/sh/expand.c | 2 +- bin/sh/tests/expansion/Makefile | 1 + bin/sh/tests/expansion/pathname1.0 | 4 ++++ bin/sh/tests/expansion/pathname2.0 | 4 ++++ bin/sh/tests/expansion/pathname6.0 | 29 +++++++++++++++++++++++++++++ 5 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 bin/sh/tests/expansion/pathname6.0 diff --git a/bin/sh/expand.c b/bin/sh/expand.c index 6d0d78a398df..fe72c49e957e 100644 --- a/bin/sh/expand.c +++ b/bin/sh/expand.c @@ -1196,7 +1196,7 @@ expsortcmp(const void *p1, const void *p2) const char *s1 = *(const char * const *)p1; const char *s2 = *(const char * const *)p2; - return (strcmp(s1, s2)); + return (strcoll(s1, s2)); } diff --git a/bin/sh/tests/expansion/Makefile b/bin/sh/tests/expansion/Makefile index 1726ff0f2ad8..eccf2392f9d6 100644 --- a/bin/sh/tests/expansion/Makefile +++ b/bin/sh/tests/expansion/Makefile @@ -66,6 +66,7 @@ ${PACKAGE}FILES+= pathname2.0 ${PACKAGE}FILES+= pathname3.0 ${PACKAGE}FILES+= pathname4.0 ${PACKAGE}FILES+= pathname5.0 +${PACKAGE}FILES+= pathname6.0 ${PACKAGE}FILES+= plus-minus1.0 ${PACKAGE}FILES+= plus-minus2.0 ${PACKAGE}FILES+= plus-minus3.0 diff --git a/bin/sh/tests/expansion/pathname1.0 b/bin/sh/tests/expansion/pathname1.0 index 8c6b01c8356a..a4bb0938837f 100644 --- a/bin/sh/tests/expansion/pathname1.0 +++ b/bin/sh/tests/expansion/pathname1.0 @@ -1,5 +1,9 @@ # $FreeBSD$ +unset LC_ALL +LC_COLLATE=C +export LC_COLLATE + failures=0 check() { diff --git a/bin/sh/tests/expansion/pathname2.0 b/bin/sh/tests/expansion/pathname2.0 index 8a884ff2901e..5643cf907c87 100644 --- a/bin/sh/tests/expansion/pathname2.0 +++ b/bin/sh/tests/expansion/pathname2.0 @@ -1,5 +1,9 @@ # $FreeBSD$ +unset LC_ALL +LC_COLLATE=C +export LC_COLLATE + failures=0 check() { diff --git a/bin/sh/tests/expansion/pathname6.0 b/bin/sh/tests/expansion/pathname6.0 new file mode 100644 index 000000000000..dc425ce64950 --- /dev/null +++ b/bin/sh/tests/expansion/pathname6.0 @@ -0,0 +1,29 @@ +# $FreeBSD$ + +unset LC_ALL +LC_COLLATE=en_US.US-ASCII +export LC_COLLATE + +failures=0 + +check() { + testcase=$1 + expect=$2 + eval "set -- $testcase" + actual="$*" + if [ "$actual" != "$expect" ]; then + failures=$((failures+1)) + printf '%s\n' "For $testcase, expected $expect actual $actual" + fi +} + +set -e +T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) +trap 'rm -rf $T' 0 +cd -P $T + +touch A B a b + +check '*' 'a A b B' + +exit $((failures != 0))