From ded1012f3c9f5d5e60481274c5b3280acc277b34 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@gnu.org>
Date: Fri, 4 Apr 2014 00:23:17 +0200
Subject: [PATCH] pki: Introduce 'write-acl', and fix wrong conversion in
 'ensure-acl'.

* guix/pki.scm (write-acl): New procedure.
  (ensure-acl): Use it.  Fixes a regression introduced in 39831f1,
  whereby 'ensure-acl' would yield a wrong-type-arg error.
* guix/scripts/archive.scm (authorize-key): Use 'write-acl'.
---
 guix/pki.scm             | 11 ++++++++---
 guix/scripts/archive.scm |  4 +---
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/guix/pki.scm b/guix/pki.scm
index 6f5e95b0ab1..3cd9763fdf0 100644
--- a/guix/pki.scm
+++ b/guix/pki.scm
@@ -30,6 +30,7 @@ (define-module (guix pki)
             public-keys->acl
             acl->public-keys
             authorized-key?
+            write-acl
 
             signature-sexp
             signature-subject
@@ -83,9 +84,13 @@ (define (ensure-acl)
         (mkdir-p (dirname %acl-file))
         (with-atomic-file-output %acl-file
           (lambda (port)
-            (display (canonical-sexp->string
-                      (public-keys->acl (list public-key)))
-                     port)))))))
+            (write-acl (public-keys->acl (list public-key))
+                       port)))))))
+
+(define (write-acl acl port)
+  "Write ACL to PORT in canonical-sexp format."
+  (let ((sexp (sexp->canonical-sexp acl)))
+    (display (canonical-sexp->string sexp) port)))
 
 (define (current-acl)
   "Return the current ACL."
diff --git a/guix/scripts/archive.scm b/guix/scripts/archive.scm
index 90dc8442818..0a2e186da68 100644
--- a/guix/scripts/archive.scm
+++ b/guix/scripts/archive.scm
@@ -288,9 +288,7 @@ (define (read-key)
     (let ((acl (public-keys->acl (cons key (acl->public-keys acl)))))
       (mkdir-p (dirname %acl-file))
       (with-atomic-file-output %acl-file
-        (lambda (port)
-          (display (canonical-sexp->string (sexp->canonical-sexp acl))
-                   port))))))
+        (cut write-acl acl <>)))))
 
 (define (guix-archive . args)
   (define (parse-options)
-- 
GitLab