summaryrefslogtreecommitdiff
path: root/libguile/read.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2016-05-03 10:52:54 +0200
committerAndy Wingo <wingo@pobox.com>2016-05-03 10:52:54 +0200
commitd8711b97596fc52bad1d3139f5be4c8442e1b896 (patch)
tree20a79a7de94e421e5d1f10fa324c3c8b71fa5a34 /libguile/read.c
parent422f65fe09e93bff383cc3e818204902ed0d32d2 (diff)
downloadguile-d8711b97596fc52bad1d3139f5be4c8442e1b896.tar.gz
Port encoding internally represented as symbol
* libguile/ports-internal.h (scm_t_port_internal): Remove encoding_mode member. * libguile/ports.h (scm_t_port): "encoding" member is now a SCM symbol. * libguile/ports.c (scm_init_ports): Define symbols for the encodings that we handle explicitly. (encoding_matches): Adapt to check against an encoding as a symbol. (canonicalize_encoding): Return an encoding as a symbol. (scm_c_make_port_with_encoding, scm_i_set_default_port_encoding) (decide_utf16_encoding, decide_utf32_encoding) (scm_i_port_iconv_descriptors, scm_i_set_port_encoding_x) (scm_port_encoding, peek_codepoint, scm_ungetc): Adapt to encoding change. * libguile/print.c (display_string_using_iconv, display_string): * libguile/read.c (scm_read_character): * libguile/strings.c (scm_from_port_stringn, scm_to_port_stringn): Adapt to port encoding change.
Diffstat (limited to 'libguile/read.c')
-rw-r--r--libguile/read.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/libguile/read.c b/libguile/read.c
index cd90b205a..a4183d9a6 100644
--- a/libguile/read.c
+++ b/libguile/read.c
@@ -64,6 +64,7 @@ SCM_GLOBAL_SYMBOL (scm_sym_dot, ".");
SCM_SYMBOL (scm_keyword_prefix, "prefix");
SCM_SYMBOL (scm_keyword_postfix, "postfix");
SCM_SYMBOL (sym_nil, "nil");
+SCM_SYMBOL (sym_ISO_8859_1, "ISO-8859-1");
/* SRFI-105 curly infix expression support */
SCM_SYMBOL (sym_nfx, "$nfx$");
@@ -1040,7 +1041,7 @@ scm_read_character (scm_t_wchar chr, SCM port, scm_t_read_opts *opts)
size_t charname_len, bytes_read;
scm_t_wchar cp;
int overflow;
- scm_t_port_internal *pti;
+ scm_t_port *pt;
overflow = read_token (port, opts, buffer, READER_CHAR_NAME_MAX_SIZE,
&bytes_read);
@@ -1058,14 +1059,14 @@ scm_read_character (scm_t_wchar chr, SCM port, scm_t_read_opts *opts)
return (SCM_MAKE_CHAR (chr));
}
- pti = SCM_PORT_GET_INTERNAL (port);
+ pt = SCM_PTAB_ENTRY (port);
/* Simple ASCII characters can be processed immediately. Also, simple
ISO-8859-1 characters can be processed immediately if the encoding for this
port is ISO-8859-1. */
if (bytes_read == 1 &&
((unsigned char) buffer[0] <= 127
- || pti->encoding_mode == SCM_PORT_ENCODING_MODE_LATIN1))
+ || scm_is_eq (pt->encoding, sym_ISO_8859_1)))
{
SCM_COL (port) += 1;
return SCM_MAKE_CHAR (buffer[0]);