[pacman-dev] [PATCH] Second attempt at fixing FS#59201, fixed line overflow caused by not updating padding settings.

Sever Oraz severoraz at gmail.com
Tue Feb 12 22:27:05 UTC 2019


Signed-off-by: Sever Oraz <severoraz at gmail.com>
---
 src/pacman/callback.c | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/src/pacman/callback.c b/src/pacman/callback.c
index ee75297c..4ee17d13 100644
--- a/src/pacman/callback.c
+++ b/src/pacman/callback.c
@@ -800,9 +800,11 @@ void cb_dl_progress(const char *filename, off_t file_xfered, off_t file_total)
 	fname[len] = '\0';
 
 	/* 1 space + filenamelen + 1 space + 6 for size + 1 space + 3 for label +
-	 * + 2 spaces + 4 for rate + 1 for label + 2 for /s + 1 space +
-	 * 8 for eta, gives us the magic 30 */
-	filenamelen = infolen - 30;
+	 * + 2 spaces + 4 for rate + 1 space + 3 for label + 2 for /s + 1 space +
+	 * 8 for eta, gives us the magic 33 */
+	/* > filename 1000.0 MiB  1000 KiB/s HH:MM:SS
+	 * >1        1     61  3 2   41  3 21       8 */
+	filenamelen = infolen - 33;
 	/* see printf() code, we omit 'HH:' in these conditions */
 	if(eta_h == 0 || eta_h >= 100) {
 		filenamelen += 3;
@@ -837,16 +839,16 @@ void cb_dl_progress(const char *filename, off_t file_xfered, off_t file_total)
 	xfered_human = humanize_size(xfered, '\0', -1, &xfered_label);
 
 	printf(" %ls%-*s ", wcfname, padwid, "");
-	/* We will show 1.62M/s, 11.6M/s, but 116K/s and 1116K/s */
+	/* We will show 1.62 MiB/s, 11.6 MiB/s, but 116 KiB/s and 1116 KiB/s */
 	if(rate_human < 9.995) {
-		printf("%6.1f %3s  %4.2f%c/s ",
-				xfered_human, xfered_label, rate_human, rate_label[0]);
+		printf("%6.1f %3s  %4.2f %3s/s ",
+				xfered_human, xfered_label, rate_human, rate_label);
 	} else if(rate_human < 99.95) {
-		printf("%6.1f %3s  %4.1f%c/s ",
-				xfered_human, xfered_label, rate_human, rate_label[0]);
+		printf("%6.1f %3s  %4.1f %3s/s ",
+				xfered_human, xfered_label, rate_human, rate_label);
 	} else {
-		printf("%6.1f %3s  %4.f%c/s ",
-				xfered_human, xfered_label, rate_human, rate_label[0]);
+		printf("%6.1f %3s  %4.f %3s/s ",
+				xfered_human, xfered_label, rate_human, rate_label);
 	}
 	if(eta_h == 0) {
 		printf("%02u:%02u", eta_m, eta_s);
-- 
2.20.1


More information about the pacman-dev mailing list