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 @@ (define show-what-to-build*
(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?)

View file

@ -248,9 +248,12 @@ (define guile-2.0.9
(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")