... | ... |
@@ -160,6 +160,19 @@ struct xfer_progress { |
160 | 160 |
CURL *curl; |
161 | 161 |
}; |
162 | 162 |
|
163 |
+static void printBytes(curl_off_t bytes) |
|
164 |
+{ |
|
165 |
+ if (bytes / (1024 * 1024) > 1) { |
|
166 |
+ double megabytes = bytes / (double)(1024 * 1024); |
|
167 |
+ fprintf(stdout, "%.02fMiB", megabytes); |
|
168 |
+ } else if (bytes / 1024 > 1) { |
|
169 |
+ double kilobytes = bytes / (double)(1024 * 1024); |
|
170 |
+ fprintf(stdout, "%.02fKiB", kilobytes); |
|
171 |
+ } else { |
|
172 |
+ fprintf(stdout, "%" CURL_FORMAT_CURL_OFF_T "B", bytes); |
|
173 |
+ } |
|
174 |
+} |
|
175 |
+ |
|
163 | 176 |
/** |
164 | 177 |
* Function from curl example code, Copyright (C) 1998 - 2018, Daniel Stenberg, see COPYING.curl for license details |
165 | 178 |
* Progress bar callback function ( CURLOPT_XFERINFOFUNCTION ). |
... | ... |
@@ -192,30 +205,19 @@ static int xferinfo(void *prog, |
192 | 192 |
|
193 | 193 |
#ifdef TIME_IN_US |
194 | 194 |
if (fractiondownloaded <= 0.0) { |
195 |
- fprintf(stdout, "Elapsed: %" CURL_FORMAT_CURL_OFF_T ".%06ld sec. ", |
|
196 |
- (curtime / 1000000), (long)(curtime % 1000000)); |
|
195 |
+ fprintf(stdout, "Time: %.1fs ", curtime / 1000000.0); |
|
197 | 196 |
} else { |
198 |
- fprintf(stdout, "Elapsed: %" CURL_FORMAT_CURL_OFF_T ".%06ld sec, Remaining; %f sec. ", |
|
199 |
- (curtime / 1000000), (long)(curtime % 1000000), |
|
200 |
- (remtime / 1000000), (long)(remtime % 1000000)); |
|
197 |
+ fprintf(stdout, "Time: %.1fs, ETA; %.1fs ", curtime / 1000000.0, remtime / 1000000.0); |
|
201 | 198 |
} |
202 | 199 |
#else |
203 | 200 |
if (fractiondownloaded <= 0.0) { |
204 |
- fprintf(stdout, "Elapsed: %f sec. ", curtime); |
|
201 |
+ fprintf(stdout, "Time: %.1fs ", curtime); |
|
205 | 202 |
} else { |
206 |
- fprintf(stdout, "Elapsed: %f sec, Remaining: %f sec. ", curtime, remtime); |
|
203 |
+ fprintf(stdout, "Time: %.1fs, ETA: %.1fs ", curtime, remtime); |
|
207 | 204 |
} |
208 | 205 |
#endif |
209 | 206 |
|
210 |
- if (TotalToUpload > 0.0) { |
|
211 |
- fprintf(stdout, "Uploaded: %" CURL_FORMAT_CURL_OFF_T " of %" CURL_FORMAT_CURL_OFF_T, |
|
212 |
- NowUploaded, TotalToUpload); |
|
213 |
- } else if (TotalToDownload > 0.0) { |
|
214 |
- fprintf(stdout, "Downloaded: %" CURL_FORMAT_CURL_OFF_T " of %" CURL_FORMAT_CURL_OFF_T, |
|
215 |
- NowDownloaded, TotalToDownload); |
|
216 |
- } |
|
217 |
- |
|
218 |
- fprintf(stdout, " ["); |
|
207 |
+ fprintf(stdout, "["); |
|
219 | 208 |
if (numDots > 0) { |
220 | 209 |
if (numDots > 1) { |
221 | 210 |
for (i = 0; i < numDots - 1; i++) { |
... | ... |
@@ -228,10 +230,23 @@ static int xferinfo(void *prog, |
228 | 228 |
for (; i < totalNumDots; i++) { |
229 | 229 |
printf(" "); |
230 | 230 |
} |
231 |
+ |
|
232 |
+ fprintf(stdout, "] "); |
|
233 |
+ |
|
234 |
+ if (TotalToUpload > 0.0) { |
|
235 |
+ printBytes(NowUploaded); |
|
236 |
+ fprintf(stdout, "/"); |
|
237 |
+ printBytes(TotalToUpload); |
|
238 |
+ } else if (TotalToDownload > 0.0) { |
|
239 |
+ printBytes(NowDownloaded); |
|
240 |
+ fprintf(stdout, "/"); |
|
241 |
+ printBytes(TotalToDownload); |
|
242 |
+ } |
|
243 |
+ |
|
231 | 244 |
if (NowDownloaded < TotalToDownload) { |
232 |
- fprintf(stdout, "] \r"); |
|
245 |
+ fprintf(stdout, " \r"); |
|
233 | 246 |
} else { |
234 |
- fprintf(stdout, "] \n"); |
|
247 |
+ fprintf(stdout, " \n"); |
|
235 | 248 |
xferProg->bComplete = 1; |
236 | 249 |
} |
237 | 250 |
fflush(stdout); |