summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-01-09 01:10:31 +0100
committerLudovic Courtès <ludo@gnu.org>2015-01-09 01:10:31 +0100
commit8234fcf21af93e5fac787ef4aeea0934740cbe52 (patch)
treeb8edd103bbb56aa7beafb19cedc5beda47d6fb3e
parentfb519bd8313e192d6eca2e51f9f33c87e5ee883e (diff)
downloadgnu-guix-8234fcf21af93e5fac787ef4aeea0934740cbe52.tar
gnu-guix-8234fcf21af93e5fac787ef4aeea0934740cbe52.tar.gz
substitute-binary: Micro-optimize 'narinfo-sha256'.
* guix/scripts/substitute-binary.scm (narinfo-signature->canonical-sexp): Change "~a" to "~s" in error message. (%signature-line-rx): Remove. (narinfo-sha256): Use 'string-contains' instead of 'regexp-exec', and 'string-take' instead of 'match:substring'.
-rwxr-xr-xguix/scripts/substitute-binary.scm13
1 files changed, 5 insertions, 8 deletions
diff --git a/guix/scripts/substitute-binary.scm b/guix/scripts/substitute-binary.scm
index 9c96411630..09b917fdf6 100755
--- a/guix/scripts/substitute-binary.scm
+++ b/guix/scripts/substitute-binary.scm
@@ -241,7 +241,7 @@ failure."
((version _ sig)
(let ((maybe-number (string->number version)))
(cond ((not (number? maybe-number))
- (leave (_ "signature version must be a number: ~a~%")
+ (leave (_ "signature version must be a number: ~s~%")
version))
;; Currently, there are no other versions.
((not (= 1 maybe-number))
@@ -313,18 +313,15 @@ No authentication and authorization checks are performed here!"
"References" "Deriver" "System"
"Signature"))))
-(define %signature-line-rx
- ;; Regexp matching a signature line in a narinfo.
- (make-regexp "(.+)^[[:blank:]]*Signature:[[:blank:]].+$"))
-
(define (narinfo-sha256 narinfo)
"Return the sha256 hash of NARINFO as a bytevector, or #f if NARINFO lacks a
'Signature' field."
(let ((contents (narinfo-contents narinfo)))
- (match (regexp-exec %signature-line-rx contents)
+ (match (string-contains contents "Signature:")
(#f #f)
- ((= (cut match:substring <> 1) above-signature)
- (sha256 (string->utf8 above-signature))))))
+ (index
+ (let ((above-signature (string-take contents index)))
+ (sha256 (string->utf8 above-signature)))))))
(define* (assert-valid-narinfo narinfo
#:optional (acl (current-acl))