diff --git a/coreutils-i18n.patch b/coreutils-i18n.patch index 4ff0911..2ac39c6 100644 --- a/coreutils-i18n.patch +++ b/coreutils-i18n.patch @@ -19,7 +19,7 @@ Subject: [PATCH] coreutils-i18n.patch src/local.mk | 4 +- src/pr.c | 443 ++++++++++++++++++-- src/sort.c | 792 +++++++++++++++++++++++++++++++++--- - src/unexpand.c | 101 ++++- + src/unexpand.c | 103 ++++- src/uniq.c | 119 +++++- tests/Coreutils.pm | 3 + tests/expand/mb.sh | 183 +++++++++ @@ -35,7 +35,7 @@ Subject: [PATCH] coreutils-i18n.patch tests/misc/uniq.pl | 55 +++ tests/pr/pr-tests.pl | 49 +++ tests/unexpand/mb.sh | 172 ++++++++ - 31 files changed, 3698 insertions(+), 242 deletions(-) + 31 files changed, 3700 insertions(+), 242 deletions(-) create mode 100644 lib/mbfile.c create mode 100644 lib/mbfile.h create mode 100644 m4/mbfile.m4 @@ -4273,7 +4273,7 @@ index 7d6100f..04cd646 100644 { /* Go back one column, and force recalculation of the next tab stop. */ -@@ -218,9 +277,9 @@ unexpand (void) +@@ -218,9 +277,11 @@ unexpand (void) next_tab_column = column; tab_index -= !!tab_index; } @@ -4281,11 +4281,13 @@ index 7d6100f..04cd646 100644 + else if (!mb_iseq (c, '\n')) { - column++; -+ column += mb_width (c); ++ /* mb_width() returns 0 for control characters */ ++ const int width = mb_width (c); ++ column += (width) ? width : 1; if (!column) die (EXIT_FAILURE, 0, _("input line is too long")); } -@@ -228,8 +287,11 @@ unexpand (void) +@@ -228,8 +289,11 @@ unexpand (void) if (pending) { if (pending > 1 && one_blank_before_tab_stop) @@ -4299,7 +4301,7 @@ index 7d6100f..04cd646 100644 die (EXIT_FAILURE, errno, _("write error")); pending = 0; one_blank_before_tab_stop = false; -@@ -239,16 +301,17 @@ unexpand (void) +@@ -239,16 +303,17 @@ unexpand (void) convert &= convert_entire_line || blank; } @@ -4489,7 +4491,7 @@ diff --git a/tests/Coreutils.pm b/tests/Coreutils.pm index fad7ab9..c9021a6 100644 --- a/tests/Coreutils.pm +++ b/tests/Coreutils.pm -@@ -264,6 +264,9 @@ sub run_tests ($$$$$) +@@ -269,6 +269,9 @@ sub run_tests ($$$$$) # Yes, this is an arbitrary limit. If it causes trouble, # consider removing it. my $max = 30; diff --git a/coreutils.spec b/coreutils.spec index 894e7f0..761e6cd 100644 --- a/coreutils.spec +++ b/coreutils.spec @@ -1,7 +1,7 @@ Summary: A set of basic GNU tools commonly used in shell scripts Name: coreutils Version: 9.1 -Release: 3%{?dist} +Release: 4%{?dist} License: GPLv3+ Url: https://www.gnu.org/software/coreutils/ Source0: https://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.xz @@ -265,6 +265,9 @@ rm -f $RPM_BUILD_ROOT%{_infodir}/dir %license COPYING %changelog +* Mon Aug 01 2022 Kamil Dudka - 9.1-4 +- prevent unexpand from failing on control characters (#2112870) + * Wed Jul 20 2022 Fedora Release Engineering - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild