progress: Generate valid 'download-progress' traces when the size is unknown.

Fixes <https://bugs.gnu.org/32895>.
Reported by Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>.

* guix/progress.scm (progress-reporter/trace): In 'stop', make sure SIZE
is an integer.  Previously we'd generate a "@ download-progress" trace
with #f for the 'transferred' number when downloading files whose size
is not known in advance.
This commit is contained in:
Ludovic Courtès 2018-10-04 10:24:34 +02:00
parent ff30bb010b
commit 1d0be47ab6
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -304,12 +304,12 @@ (define message
log-port)))
(report (rate-limited report-progress %progress-interval))
(stop (lambda ()
(report-progress size)
(display (format #f "@ download-succeeded ~a ~a ~a~%"
file url
(or (and=> (stat file #f) stat:size)
size))
log-port)))))
(let ((size (or (and=> (stat file #f) stat:size)
size)))
(report-progress size)
(display (format #f "@ download-succeeded ~a ~a ~a~%"
file url size)
log-port))))))
;; TODO: replace '(@ (guix build utils) dump-port))'.
(define* (dump-port* in out