guix-commits
[Top][All Lists]
Advanced

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

13/16: ui: Don't use '%default-port-encoding' to set the encoding of str


From: Ludovic Courtès
Subject: 13/16: ui: Don't use '%default-port-encoding' to set the encoding of string ports.
Date: Wed, 8 Mar 2017 17:44:34 -0500 (EST)

civodul pushed a commit to branch master
in repository guix.

commit 1062063a65036f32a061c54866d33ffe079ec44e
Author: Ludovic Courtès <address@hidden>
Date:   Wed Mar 8 22:21:31 2017 +0100

    ui: Don't use '%default-port-encoding' to set the encoding of string ports.
    
    * guix/ui.scm (right-arrow): Call 'set-port-encoding!' to set PORT's
    encoding; remove use of 'with-fluids'.  This is for compatibility with
    Guile 2.2 where the encoding of string ports is not influenced by
    %DEFAULT-PORT-ENCODING.
    * tests/ui.scm ("show-manifest-transaction"): Likewise.
---
 guix/ui.scm  | 21 +++++++++++----------
 tests/ui.scm | 11 +++++++----
 2 files changed, 18 insertions(+), 14 deletions(-)

diff --git a/guix/ui.scm b/guix/ui.scm
index 5ae082f..3a0a650 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -635,16 +635,17 @@ report what is prerequisites are available for download."
 (define (right-arrow port)
   "Return either a string containing the 'RIGHT ARROW' character, or an ASCII
 replacement if PORT is not Unicode-capable."
-  (with-fluids ((%default-port-encoding (port-encoding port)))
-    (let ((arrow "→"))
-      (catch 'encoding-error
-        (lambda ()
-          (call-with-output-string
-            (lambda (port)
-              (set-port-conversion-strategy! port 'error)
-              (display arrow port))))
-        (lambda (key . args)
-          "->")))))
+  (let ((encoding (port-encoding port))
+        (arrow "→"))
+    (catch 'encoding-error
+      (lambda ()
+        (call-with-output-string
+          (lambda (port)
+            (set-port-encoding! port encoding)
+            (set-port-conversion-strategy! port 'error)
+            (display arrow port))))
+      (lambda (key . args)
+        "->"))))
 
 (define* (show-manifest-transaction store manifest transaction
                                     #:key dry-run?)
diff --git a/tests/ui.scm b/tests/ui.scm
index 058207e..cfe417d 100644
--- a/tests/ui.scm
+++ b/tests/ui.scm
@@ -248,9 +248,12 @@ Second line" 24))
                             (lambda ()
                               (show-manifest-transaction store m t)))))
            (string-match "guile\t1.8.8 -> 2.0.9"
-                         (with-fluids ((%default-port-encoding "ISO-8859-1"))
-                           (with-error-to-string
-                            (lambda ()
-                              (show-manifest-transaction store m t)))))))))
+                         (with-error-to-string
+                           (lambda ()
+                             ;; In Guile 2.2, %DEFAULT-PORT-ENCODING doesn't
+                             ;; influence the encoding of string ports.
+                             (set-port-encoding! (current-error-port)
+                                                 "ISO-8859-1")
+                             (show-manifest-transaction store m t))))))))
 
 (test-end "ui")



reply via email to

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