[git commit master 1/1] wget: fix ndelay_on call; progress bar: small shrink

Denys Vlasenko vda.linux at googlemail.com
Sun Aug 8 02:21:50 UTC 2010


commit: http://git.busybox.net/busybox/commit/?id=da0df47f244be581f48fd50909d6a68ceae327a9
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

function                                             old     new   delta
bb_progress_update                                   682     670     -12

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 libbb/progress.c  |   24 ++++++++++++------------
 networking/wget.c |    2 +-
 2 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/libbb/progress.c b/libbb/progress.c
index 7fb8536..f532713 100644
--- a/libbb/progress.c
+++ b/libbb/progress.c
@@ -76,7 +76,7 @@ void FAST_FUNC bb_progress_update(bb_progress_t *p,
 	elapsed = monotonic_sec();
 	since_last_update = elapsed - p->lastupdate_sec;
 	/* Do not update on every call
-	 * (might be: on every network read!) */
+	 * (we can be called on every network read!) */
 	if (since_last_update == 0 && !totalsize)
 			return;
 
@@ -84,7 +84,7 @@ void FAST_FUNC bb_progress_update(bb_progress_t *p,
 	ratio = 100;
 	if (beg_and_transferred < totalsize) {
 		/* Do not update on every call
-		 * (might be: on every network read!) */
+		 * (we can be called on every network read!) */
 		if (since_last_update == 0)
 			return;
 		/* long long helps to have it working even if !LFS */
@@ -118,14 +118,14 @@ void FAST_FUNC bb_progress_update(bb_progress_t *p,
 	barlength = get_tty2_width() - 49;
 	if (barlength > 0) {
 		/* god bless gcc for variable arrays :) */
-		i = barlength * ratio / 100;
-		{
-			char buf[i+1];
-			memset(buf, '*', i);
-			buf[i] = '\0';
-			fprintf(stderr, "|%s%*s|", buf, barlength - i, "");
-		}
+		char buf[barlength + 1];
+		unsigned stars = (unsigned)barlength * ratio / (unsigned)100;
+		memset(buf, ' ', barlength);
+		buf[barlength] = '\0';
+		memset(buf, '*', stars);
+		fprintf(stderr, "|%s|", buf);
 	}
+
 	i = 0;
 	while (beg_and_transferred >= 100000) {
 		i++;
@@ -155,10 +155,10 @@ void FAST_FUNC bb_progress_update(bb_progress_t *p,
 			fprintf(stderr, "--:--:-- ETA");
 		} else {
 			/* to_download / (transferred/elapsed) - elapsed: */
-			int eta = (int) ((unsigned long long)to_download*elapsed/transferred - elapsed);
 			/* (long long helps to have working ETA even if !LFS) */
-			i = eta % 3600;
-			fprintf(stderr, "%02d:%02d:%02d ETA", eta / 3600, i / 60, i % 60);
+			unsigned eta = (unsigned long long)to_download*elapsed/(uoff_t)transferred - elapsed;
+			unsigned secs = eta % 3600;
+			fprintf(stderr, "%02u:%02u:%02u ETA", eta / 3600, secs / 60, secs % 60);
 		}
 	}
 }
diff --git a/networking/wget.c b/networking/wget.c
index f623390..fb8e513 100644
--- a/networking/wget.c
+++ b/networking/wget.c
@@ -455,7 +455,7 @@ static void NOINLINE retrieve_file_data(FILE *dfp, int output_fd)
 
 	polldata.fd = fileno(dfp);
 	polldata.events = POLLIN | POLLPRI;
-	ndelay(polldata.fd);
+	ndelay_on(polldata.fd);
 #endif
 	progress_meter(PROGRESS_START);
 
-- 
1.7.1



More information about the busybox-cvs mailing list