diff --git a/guix/ui.scm b/guix/ui.scm index 5ae082fc0a..3a0a6501d1 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 058207e8b9..cfe417d497 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")