coreutils/coreutils-8.29-ls-abmon-width.patch

105 lines
3.6 KiB
Diff

From 5a820c5a312d6a5b7a1a755cd0f81c84f7c676d7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P@draigBrady.com>
Date: Wed, 14 Mar 2018 11:31:43 -0700
Subject: [PATCH 1/2] ls: increase the allowed abmon width from 5 to 12
This will impact relatively few languages,
and will make Arabic or Catalan etc.
output unambiguous abbreviated month names.
* src/ls.c (MAX_MON_WIDTH): Increase from 5 to 12.
* tests/ls/abmon-align.sh: Augment to check for ambiguous output.
Fixes https://bugs.gnu.org/30814
Upstream-commit: 5ed2018360ba44f673b1dc74fb3d2927f7fcfae3
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
---
src/ls.c | 7 +++++--
tests/ls/abmon-align.sh | 9 ++++++---
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/src/ls.c b/src/ls.c
index 4becd06..b2983aa 100644
--- a/src/ls.c
+++ b/src/ls.c
@@ -1095,8 +1095,11 @@ file_escape_init (void)
variable width abbreviated months and also precomputing/caching
the names was seen to increase the performance of ls significantly. */
-/* max number of display cells to use */
-enum { MAX_MON_WIDTH = 5 };
+/* max number of display cells to use.
+ As of 2018 the abmon for Arabic has entries with width 12.
+ It doesn't make much sense to support wider than this
+ and locales should aim for abmon entries of width <= 5. */
+enum { MAX_MON_WIDTH = 12 };
/* abformat[RECENT][MON] is the format to use for timestamps with
recentness RECENT and month MON. */
enum { ABFORMAT_SIZE = 128 };
diff --git a/tests/ls/abmon-align.sh b/tests/ls/abmon-align.sh
index e474047..a81266b 100755
--- a/tests/ls/abmon-align.sh
+++ b/tests/ls/abmon-align.sh
@@ -32,17 +32,20 @@ for format in "%b" "[%b" "%b]" "[%b]"; do
# The sed usage here is slightly different from the original,
# removing the \(.*\), to avoid triggering misbehavior in at least
# GNU sed 4.2 (possibly miscompiled) on Mac OS X (Darwin 9.8.0).
- n_widths=$(
+ months="$(
LC_ALL=$LOC TIME_STYLE=+"$format" ls -lgG *.ts |
- LC_ALL=C sed 's/.\{15\}//;s/ ..\.ts$//;s/ /./g' |
+ LC_ALL=C sed 's/.\{15\}//;s/ ..\.ts$//;s/ /./g')"
+ n_widths=$(echo "$months" |
while read mon; do echo "$mon" | LC_ALL=$LOC wc -L; done |
uniq | wc -l
)
+ n_dupes=$(echo "$months" | sort | uniq -d | wc -l)
test "$n_widths" = "1" || { fail=1; break 2; }
+ test "$n_dupes" = "0" || { fail=1; break 2; }
done
done
if test "$fail" = "1"; then
- echo "misalignment detected in $LOC locale:"
+ echo "misalignment or ambiguous output in $LOC locale:"
LC_ALL=$LOC TIME_STYLE=+%b ls -lgG *.ts
fi
--
2.14.3
From 58196889eb9621a0bc8a97d7eda1174efb1b078c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P@draigBrady.com>
Date: Tue, 29 May 2018 10:10:35 -0700
Subject: [PATCH 2/2] tests: fix periodic false failure in month alignment
* tests/ls/abmon-align.sh: Base relative month adjustment
from the middle of the month, to avoid failures due
to months being repeated.
Fixes https://bugs.gnu.org/31644
Upstream-commit: c8eb21c9c0ba00559afc5e0d200085ac656396e0
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
---
tests/ls/abmon-align.sh | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tests/ls/abmon-align.sh b/tests/ls/abmon-align.sh
index a81266b..8bd20ae 100755
--- a/tests/ls/abmon-align.sh
+++ b/tests/ls/abmon-align.sh
@@ -19,8 +19,9 @@
. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
print_ver_ ls
+mid_month="$(date +%Y-%m-15)" || framework_failure_
for mon in $(seq -w 12); do
- touch -d"+$mon month" $mon.ts || framework_failure_
+ touch -d"$mid_month +$mon month" $mon.ts || framework_failure_
done
--
2.14.3