~ruther/guix-local

0561e9ae16c2894d19432f1c6eb8e99ad508dc47 — Ludovic Courtès 11 years ago 87db655
substitute-binary: Allow callers to specify the size of a narinfo.

* guix/scripts/substitute-binary.scm (read-narinfo): Add #:size
  parameter and honor it.
1 files changed, 7 insertions(+), 3 deletions(-)

M guix/scripts/substitute-binary.scm
M guix/scripts/substitute-binary.scm => guix/scripts/substitute-binary.scm +7 -3
@@ 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"