serialization: Adjust the permissive UTF-8 decoder to Guile 2.0.12ish.

* guix/serialization.scm (read-maybe-utf8-string): Use
  'set-port-encoding!' and 'set-port-conversion-strategy!' instead of
  setting '%default-port-encoding' and
  '%default-port-conversion-strategy'.  This accounts for Guile commit
  d574d96, which changes bytevector input ports to use ISO-8859-1.
This commit is contained in:
Ludovic Courtès 2015-05-01 13:10:18 +02:00
parent 310709ae58
commit bc7d089a9c
1 changed files with 3 additions and 4 deletions

View File

@ -140,10 +140,9 @@ substitute invalid byte sequences with question marks. This is a
;; not very efficient. Eventually Guile may provide a lightweight ;; not very efficient. Eventually Guile may provide a lightweight
;; permissive UTF-8 decoder. ;; permissive UTF-8 decoder.
(let* ((bv (read-byte-string p)) (let* ((bv (read-byte-string p))
(port (with-fluids ((%default-port-encoding "UTF-8") (port (open-bytevector-input-port bv)))
(%default-port-conversion-strategy (set-port-encoding! port "UTF-8")
'substitute)) (set-port-conversion-strategy! port 'substitute)
(open-bytevector-input-port bv))))
(get-string-all port))) (get-string-all port)))
(define (write-string-list l p) (define (write-string-list l p)