GNU bug report logs -
#20200
GUILE 2.0.11: open-bytevector-input-port fails to open in binary mode
Previous Next
Reported by: David Kastrup <dak <at> gnu.org>
Date: Wed, 25 Mar 2015 14:33:02 UTC
Severity: normal
Done: Mark H Weaver <mhw <at> netris.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
David Kastrup <dak <at> gnu.org> writes:
> Run the following code in an UTF-8 capable locale:
>
> (setlocale LC_ALL "")
> (use-modules (rnrs io ports) (rnrs bytevectors) (ice-9 format))
> (let ((p (open-bytevector-input-port
> (u8-list->bytevector '(#xc3 #x9f #xc3 #X9f)))))
> (format #t "~a ~a\n" (port-encoding p) (binary-port? p))
> (format #t "#x~x\n" (char->integer (read-char p)))
> (format #t "~a ~a\n" (port-encoding p) (binary-port? p))
> (set-port-encoding! p "ISO-8859-1")
> (format #t "~a ~a\n" (port-encoding p) (binary-port? p))
> (format #t "#x~x\n" (char->integer (read-char p)))
> (format #t "~a ~a\n" (port-encoding p) (binary-port? p)))
>
> This results in the output
> #f #t
> #xdf
> #f #t
> ISO-8859-1 #f
> #xc3
> ISO-8859-1 #f
>
> The manual, however, states:
>
> -- Scheme Procedure: port-encoding port
> -- C Function: scm_port_encoding (port)
> Returns, as a string, the character encoding that PORT uses to
> interpret its input and output. The value â#fâ is equivalent to
> â"ISO-8859-1"â.
>
> That would appear to be false since the value #f here is treated as
> equivalent to "UTF-8" rather than "ISO-8859-1".
This is indeed a bug, introduced in Guile 2.0.9. The workaround is to
explicitly set the encoding to "ISO-8859-1".
Mark
This bug report was last modified 10 years and 58 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.