Usermode/wget - Fixed divide-by-zero in streamToFile
authorJohn Hodge <[email protected]>
Tue, 19 Nov 2013 01:34:39 +0000 (09:34 +0800)
committerJohn Hodge <[email protected]>
Tue, 19 Nov 2013 01:34:39 +0000 (09:34 +0800)
Usermode/Applications/wget_src/main.c

index ee32457..d068053 100644 (file)
@@ -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)
                );
 }
 

UCC git Repository :: git.ucc.asn.au