diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-01-09 01:10:31 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-01-09 01:10:31 +0100 |
commit | 8234fcf21af93e5fac787ef4aeea0934740cbe52 (patch) | |
tree | b8edd103bbb56aa7beafb19cedc5beda47d6fb3e /guix | |
parent | fb519bd8313e192d6eca2e51f9f33c87e5ee883e (diff) |
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'.
Diffstat (limited to 'guix')
-rwxr-xr-x | guix/scripts/substitute-binary.scm | 13 |
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)) |