@@ -89,10 +89,10 @@ fn get_correct_tarball(alloc: Allocator, io: Io, client: *Client, tarball_dw_fil
8989
9090 if (! hash_matched ) {
9191 if (tries < 3 ) {
92- std .log .warn ("Hashes do match for downloaded tarball. Retrying again..." , .{});
92+ std .log .warn ("Hashes do not match for downloaded tarball. Retrying again..." , .{});
9393 tarball = try get_correct_tarball (alloc , io , client , tarball_dw_filename , tarball_url , total_size , shasum , cp , tries + 1 );
9494 } else {
95- std .log .err ("Hashes do match for downloaded tarball. Exitting " , .{});
95+ std .log .err ("Hashes do not match for downloaded tarball. Exiting " , .{});
9696 return error .BadChecksum ;
9797 }
9898 }
@@ -126,27 +126,22 @@ pub fn downloadTarball(alloc: Allocator, io: Io, client: *Client, tb_url: []cons
126126
127127 var buff : [1024 ]u8 = undefined ;
128128
129- // Convert everything into f64 for less typing in calculating % download and download speed
130- var dlnow = std .atomic .Value (f32 ).init (0 );
131- const total_size_d : f64 = @floatFromInt (total_size );
132- const tarball_size_d : f64 = @floatFromInt (tarball_size );
129+ var dlnow = std .atomic .Value (usize ).init (0 );
130+ const tarball_size_u : usize = @intCast (tarball_size );
133131
134- const progress_thread = try std .Thread .spawn (.{}, download_progress_bar , .{ io , & dlnow , tarball_size_d , total_size_d });
132+ const progress_thread = try std .Thread .spawn (.{}, download_progress_bar , .{ io , & dlnow , tarball_size_u , total_size });
135133 const tbw_intf = & tb_writer .interface ;
136- while (tarball_size_d + dlnow .load (AtomicOrder .monotonic ) <= total_size_d ) {
134+ while (tarball_size_u + dlnow .load (AtomicOrder .monotonic ) < total_size ) {
137135 const len = try reader .readSliceShort (& buff );
138- _ = try tbw_intf .write (buff [0.. len ]);
139- _ = dlnow .fetchAdd (@floatFromInt (len ), AtomicOrder .monotonic );
140-
141- if (len < buff .len ) {
142- break ;
143- }
136+ if (len == 0 ) break ;
137+ try tbw_intf .writeAll (buff [0.. len ]);
138+ _ = dlnow .fetchAdd (len , AtomicOrder .monotonic );
144139 }
145140 progress_thread .join ();
146141 try tb_writer .end ();
147142}
148143
149- pub fn download_progress_bar (io : Io , dlnow : * std .atomic .Value (f32 ), tarball_size : f64 , total_size : f64 ) ! void {
144+ pub fn download_progress_bar (io : Io , dlnow : * std .atomic .Value (usize ), tarball_size : usize , total_size : usize ) ! void {
150145 const stderr = File .stderr ();
151146 var stderrw = stderr .writer (io , &.{});
152147 const stderr_writer = & stderrw .interface ;
@@ -158,14 +153,14 @@ pub fn download_progress_bar(io: Io, dlnow: *std.atomic.Value(f32), tarball_size
158153 var downloaded = dlnow .load (AtomicOrder .monotonic );
159154
160155 while (true ) {
161- const pcnt_complete : u8 = @intFromFloat ((downloaded + tarball_size ) * 100 / total_size );
156+ const pcnt_complete : u8 = @intCast ((downloaded + tarball_size ) * 100 / total_size );
162157 const newbars : u8 = pcnt_complete / 2 ;
163158 for (bars .. newbars ) | i | {
164159 std .mem .copyForwards (u8 , progress_bar [i * 3 .. i * 3 + 3 ], "█" );
165160 }
166161 bars = newbars ;
167162 const time_passed : f64 = @floatFromInt (start .untilNow (io , clock ).toSeconds ());
168- const speed = downloaded / 1024 / time_passed ;
163+ const speed = @as ( f64 , @floatFromInt ( downloaded )) / 1024.0 / time_passed ;
169164 try stderr_writer .print ("\x1b [G\x1b [0K\t \x1b [33m{s}\x1b [0m{s} {d}% {d:.1}KB/s" , .{ progress_bar [0 .. newbars * 3 ], progress_bar [newbars * 3 .. ], pcnt_complete , speed });
170165
171166 if (downloaded + tarball_size >= total_size ) break ;
0 commit comments