From 8b4b1a3fe627039f98bbf77c0bcedbd155eb0e8a Mon Sep 17 00:00:00 2001 From: John Hodge Date: Tue, 19 Nov 2013 09:34:39 +0800 Subject: [PATCH] Usermode/wget - Fixed divide-by-zero in streamToFile --- Usermode/Applications/wget_src/main.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/Usermode/Applications/wget_src/main.c b/Usermode/Applications/wget_src/main.c index ee324577..d0680534 100644 --- a/Usermode/Applications/wget_src/main.c +++ b/Usermode/Applications/wget_src/main.c @@ -197,7 +197,7 @@ void streamToFile(int Socket, const char *OutputFile, int bAppend, size_t bytes_ return ; } - int64_t start_time = _SysTimestamp(); + int64_t start_time = _SysTimestamp()-1; size_t bytes_seen = 0; // Write the remainder of the buffer do @@ -205,19 +205,21 @@ void streamToFile(int Socket, const char *OutputFile, int bAppend, size_t bytes_ write(outfd, inbuf, len); bytes_seen += len; _SysDebug("%i/%i bytes done", bytes_seen, bytes_wanted); - printf("%7i/%7i KiB (%iKiB/s)\r", + printf("%7i/%7i KiB (%ikB/s) \r", bytes_seen/1024, bytes_wanted/1024, bytes_seen/(_SysTimestamp() - start_time) ); fflush(stdout); - len = read(Socket, inbuf, buflen); + if( bytes_seen < bytes_wanted ) + len = read(Socket, inbuf, buflen); } while( bytes_seen < bytes_wanted && len > 0 ); + int64_t stop_time = _SysTimestamp(); close(outfd); - printf("%i KiB done in %is (%i KiB/s)\n", + printf("%i KiB done in %is (%i kB/s)\n", bytes_seen/1024, - (_SysTimestamp() - start_time)/1000, - bytes_seen/(_SysTimestamp() - start_time) + (int)(stop_time - start_time)/1000, + bytes_seen/(stop_time - start_time) ); } -- 2.20.1