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.
This commit is contained in:
Ludovic Courtès 2017-03-08 22:21:31 +01:00
parent 30906825cb
commit 1062063a65
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
2 changed files with 18 additions and 14 deletions

View File

@ -635,16 +635,17 @@ report what is prerequisites are available for download."
(define (right-arrow port) (define (right-arrow port)
"Return either a string containing the 'RIGHT ARROW' character, or an ASCII "Return either a string containing the 'RIGHT ARROW' character, or an ASCII
replacement if PORT is not Unicode-capable." replacement if PORT is not Unicode-capable."
(with-fluids ((%default-port-encoding (port-encoding port))) (let ((encoding (port-encoding port))
(let ((arrow "→")) (arrow "→"))
(catch 'encoding-error (catch 'encoding-error
(lambda () (lambda ()
(call-with-output-string (call-with-output-string
(lambda (port) (lambda (port)
(set-port-encoding! port encoding)
(set-port-conversion-strategy! port 'error) (set-port-conversion-strategy! port 'error)
(display arrow port)))) (display arrow port))))
(lambda (key . args) (lambda (key . args)
"->"))))) "->"))))
(define* (show-manifest-transaction store manifest transaction (define* (show-manifest-transaction store manifest transaction
#:key dry-run?) #:key dry-run?)

View File

@ -248,9 +248,12 @@ Second line" 24))
(lambda () (lambda ()
(show-manifest-transaction store m t))))) (show-manifest-transaction store m t)))))
(string-match "guile\t1.8.8 -> 2.0.9" (string-match "guile\t1.8.8 -> 2.0.9"
(with-fluids ((%default-port-encoding "ISO-8859-1"))
(with-error-to-string (with-error-to-string
(lambda () (lambda ()
(show-manifest-transaction store m t))))))))) ;; 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") (test-end "ui")