guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/04: gnupg: Compile regexps only once.


From: guix-commits
Subject: 01/04: gnupg: Compile regexps only once.
Date: Thu, 19 Dec 2019 17:48:16 -0500 (EST)

civodul pushed a commit to branch master
in repository guix.

commit d8169d05bb9e7d70597a646c95ee4001809070ac
Author: Ludovic Courtès <address@hidden>
Date:   Thu Dec 19 22:16:50 2019 +0100

    gnupg: Compile regexps only once.
    
    This halves the run time on a large number of subsequent 'gnupg-verify'
    calls.
    
    * guix/gnupg.scm (sigid-rx, goodsig-rx, validsig-rx, expkeysig-rx)
    (errsig-rx): New variables, lifted from...
    (gnupg-verify)[status-line->sexp]: ... here.
---
 guix/gnupg.scm | 36 +++++++++++++++++++-----------------
 1 file changed, 19 insertions(+), 17 deletions(-)

diff --git a/guix/gnupg.scm b/guix/gnupg.scm
index 5b11aa9..35ab779 100644
--- a/guix/gnupg.scm
+++ b/guix/gnupg.scm
@@ -59,6 +59,25 @@
   ;; unreliable.
   (make-parameter "pool.sks-keyservers.net"))
 
+;; Regexps for status lines.  See file `doc/DETAILS' in GnuPG.
+
+(define sigid-rx
+  (make-regexp
+   "^\\[GNUPG:\\] SIG_ID ([A-Za-z0-9+/]+) 
([[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}) ([[:digit:]]+)"))
+(define goodsig-rx
+  (make-regexp "^\\[GNUPG:\\] GOODSIG ([[:xdigit:]]+) (.+)$"))
+(define validsig-rx
+  (make-regexp
+   "^\\[GNUPG:\\] VALIDSIG ([[:xdigit:]]+) 
([[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}) ([[:digit:]]+) .*$"))
+(define expkeysig-rx                    ; good signature, but expired key
+  (make-regexp "^\\[GNUPG:\\] EXPKEYSIG ([[:xdigit:]]+) (.*)$"))
+(define errsig-rx
+  ;; Note: The fingeprint part (the last element of the line) appeared in
+  ;; GnuPG 2.2.7 according to 'doc/DETAILS', and it may be missing.
+  (make-regexp
+   "^\\[GNUPG:\\] ERRSIG ([[:xdigit:]]+) ([^ ]+) ([^ ]+) ([^ ]+) 
([[:digit:]]+) ([[:digit:]]+)(.*)"))
+
+
 (define* (gnupg-verify sig file
                        #:optional (keyring (current-keyring)))
   "Verify signature SIG for FILE against the keys in KEYRING.  All the keys in
@@ -71,23 +90,6 @@ revoked.  Return a status s-exp if GnuPG failed."
       (fpr         fpr)))
 
   (define (status-line->sexp line)
-    ;; See file `doc/DETAILS' in GnuPG.
-    (define sigid-rx
-      (make-regexp
-       "^\\[GNUPG:\\] SIG_ID ([A-Za-z0-9+/]+) 
([[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}) ([[:digit:]]+)"))
-    (define goodsig-rx
-      (make-regexp "^\\[GNUPG:\\] GOODSIG ([[:xdigit:]]+) (.+)$"))
-    (define validsig-rx
-      (make-regexp
-       "^\\[GNUPG:\\] VALIDSIG ([[:xdigit:]]+) 
([[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}) ([[:digit:]]+) .*$"))
-    (define expkeysig-rx                    ; good signature, but expired key
-      (make-regexp "^\\[GNUPG:\\] EXPKEYSIG ([[:xdigit:]]+) (.*)$"))
-    (define errsig-rx
-      ;; Note: The fingeprint part (the last element of the line) appeared in
-      ;; GnuPG 2.2.7 according to 'doc/DETAILS', and it may be missing.
-      (make-regexp
-       "^\\[GNUPG:\\] ERRSIG ([[:xdigit:]]+) ([^ ]+) ([^ ]+) ([^ ]+) 
([[:digit:]]+) ([[:digit:]]+)(.*)"))
-
     (cond ((regexp-exec sigid-rx line)
            =>
            (lambda (match)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]