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:
parent
30906825cb
commit
1062063a65
21
guix/ui.scm
21
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?)
|
||||
|
11
tests/ui.scm
11
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")
|
||||
|
Loading…
Reference in New Issue
Block a user