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