substitute-binary: Allow callers to specify the size of a narinfo.

* guix/scripts/substitute-binary.scm (read-narinfo): Add #:size
  parameter and honor it.
This commit is contained in:
Ludovic Courtès 2015-01-05 22:31:34 +01:00
parent 87db65507e
commit 0561e9ae16
1 changed files with 7 additions and 3 deletions

View File

@ -309,12 +309,16 @@ NARINFO, doesn't match HASH, a bytevector containing the hash of NARINFO."
(corrupt-signature
(leave (_ "signature on '~a' is corrupt~%") uri)))))
(define* (read-narinfo port #:optional url)
(define* (read-narinfo port #:optional url
#:key size)
"Read a narinfo from PORT. If URL is true, it must be a string used to
build full URIs from relative URIs found while reading PORT.
build full URIs from relative URIs found while reading PORT. When SIZE is
true, read at most SIZE bytes from PORT; otherwise, read as much as possible.
No authentication and authorization checks are performed here!"
(let ((str (utf8->string (get-bytevector-all port))))
(let ((str (utf8->string (if size
(get-bytevector-n port size)
(get-bytevector-all port)))))
(alist->record (call-with-input-string str fields->alist)
(narinfo-maker str url)
'("StorePath" "URL" "Compression"