2.39.3-3: fix libsmartcols
This commit is contained in:
parent
a16ce36c6f
commit
8ecb7f1bee
69
libsmartcols-fix-columns-reduction.patch
Normal file
69
libsmartcols-fix-columns-reduction.patch
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
From bb525b59190e3b40b2424f4f1febc22ca9c6b9f3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Karel Zak <kzak@redhat.com>
|
||||||
|
Date: Thu, 18 Jan 2024 13:09:24 +0100
|
||||||
|
Subject: [PATCH] libsmartcols: fix columns reduction
|
||||||
|
|
||||||
|
* reduce_to_68() does not care if subtract from column width is
|
||||||
|
possible (and width is size_t)
|
||||||
|
|
||||||
|
* improve some calculations with 'double'
|
||||||
|
|
||||||
|
Fixes: https://github.com/util-linux/util-linux/issues/2563
|
||||||
|
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||||
|
---
|
||||||
|
libsmartcols/src/calculate.c | 16 +++++++++++-----
|
||||||
|
1 file changed, 11 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libsmartcols/src/calculate.c b/libsmartcols/src/calculate.c
|
||||||
|
index e9db3b299..84198da3b 100644
|
||||||
|
--- a/libsmartcols/src/calculate.c
|
||||||
|
+++ b/libsmartcols/src/calculate.c
|
||||||
|
@@ -118,7 +118,7 @@ static void count_column_deviation(struct libscols_table *tb, struct libscols_co
|
||||||
|
}
|
||||||
|
|
||||||
|
if (n)
|
||||||
|
- st->width_avg = sum / n;
|
||||||
|
+ st->width_avg = (double) sum / (double) n;
|
||||||
|
|
||||||
|
/* count deviation */
|
||||||
|
if (n > 1) {
|
||||||
|
@@ -133,7 +133,7 @@ static void count_column_deviation(struct libscols_table *tb, struct libscols_co
|
||||||
|
st->width_sqr_sum += diff * diff; /* aka pow(x, 2) */
|
||||||
|
}
|
||||||
|
|
||||||
|
- variance = st->width_sqr_sum / (n - 1);
|
||||||
|
+ variance = st->width_sqr_sum / (double) (n - 1);
|
||||||
|
st->width_deviation = sqrtroot(variance);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -240,8 +240,8 @@ static int cmp_deviation(struct list_head *a, struct list_head *b,
|
||||||
|
struct libscols_column *ca = list_entry(a, struct libscols_column, cl_columns);
|
||||||
|
struct libscols_column *cb = list_entry(b, struct libscols_column, cl_columns);
|
||||||
|
|
||||||
|
- double xa = ca->wstat.width_avg + (3*ca->wstat.width_deviation);
|
||||||
|
- double xb = cb->wstat.width_avg + (3*cb->wstat.width_deviation);
|
||||||
|
+ double xa = ca->wstat.width_avg + (3.0 * ca->wstat.width_deviation);
|
||||||
|
+ double xb = cb->wstat.width_avg + (3.0 * cb->wstat.width_deviation);
|
||||||
|
|
||||||
|
return cmp_numbers(xa, xb);
|
||||||
|
}
|
||||||
|
@@ -280,9 +280,15 @@ static void reduce_to_68(struct libscols_column *cl, size_t wanted)
|
||||||
|
if (st->width_deviation < 1.0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
- new = st->width_avg + st->width_deviation;
|
||||||
|
+ new = (size_t) (st->width_avg + st->width_deviation);
|
||||||
|
+
|
||||||
|
if (new < st->width_min)
|
||||||
|
new = st->width_min;
|
||||||
|
+ else if (new > st->width_max)
|
||||||
|
+ new = st->width_max;
|
||||||
|
+
|
||||||
|
+ if (new >= cl->width)
|
||||||
|
+ return;
|
||||||
|
|
||||||
|
if (cl->width - new > wanted)
|
||||||
|
cl->width -= wanted;
|
||||||
|
--
|
||||||
|
2.43.0
|
||||||
|
|
@ -2,7 +2,7 @@
|
|||||||
Summary: Collection of basic system utilities
|
Summary: Collection of basic system utilities
|
||||||
Name: util-linux
|
Name: util-linux
|
||||||
Version: 2.39.3
|
Version: 2.39.3
|
||||||
Release: 2%{?dist}
|
Release: 3%{?dist}
|
||||||
License: GPLv2 and GPLv2+ and LGPLv2+ and BSD with advertising and Public Domain
|
License: GPLv2 and GPLv2+ and LGPLv2+ and BSD with advertising and Public Domain
|
||||||
URL: https://en.wikipedia.org/wiki/Util-linux
|
URL: https://en.wikipedia.org/wiki/Util-linux
|
||||||
|
|
||||||
@ -97,6 +97,8 @@ Patch0: login-lastlog-create.patch
|
|||||||
# Add `/run/motd.d` to the hardcoded MOTD_FILE
|
# Add `/run/motd.d` to the hardcoded MOTD_FILE
|
||||||
# https://github.com/coreos/console-login-helper-messages/issues/60
|
# https://github.com/coreos/console-login-helper-messages/issues/60
|
||||||
Patch1: login-default-motd-file.patch
|
Patch1: login-default-motd-file.patch
|
||||||
|
# 2258501 - dnf5 unusable with libsmartcols
|
||||||
|
Patch2: libsmartcols-fix-columns-reduction.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
The util-linux package contains a large variety of low-level system
|
The util-linux package contains a large variety of low-level system
|
||||||
@ -930,6 +932,9 @@ fi
|
|||||||
%files -n util-linux-i18n -f %{name}.lang
|
%files -n util-linux-i18n -f %{name}.lang
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Jan 25 2024 Karel Zak <kzak@redhat.com> - 2.39.3-3
|
||||||
|
- fix #2258501 - dnf5 unusable with libsmartcols
|
||||||
|
|
||||||
* Thu Jan 11 2024 Karel Zak <kzak@redhat.com> - 2.39.3-2
|
* Thu Jan 11 2024 Karel Zak <kzak@redhat.com> - 2.39.3-2
|
||||||
- fix #2256391 util-linux-i18n conflicts with file from package shadow-utils
|
- fix #2256391 util-linux-i18n conflicts with file from package shadow-utils
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user