~ruther/guix-local

1062063a65036f32a061c54866d33ffe079ec44e — Ludovic Courtès 9 years ago 3090682
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.
2 files changed, 18 insertions(+), 14 deletions(-)

M guix/ui.scm
M tests/ui.scm
M guix/ui.scm => guix/ui.scm +11 -10
@@ 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?)

M tests/ui.scm => tests/ui.scm +7 -4
@@ 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")