summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-07-02 08:22:34 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-07-02 08:22:34 +0000
commit42a2f89b3918cbe352528a0addc5ec59dfe2ad83 (patch)
tree288b9e2285d4d25e588def7e0915b62840b59888
parentea2b115efda5e1f0c7edea3d9951a073fbaacb37 (diff)
io.c: use built-in encoding indexes
* internal.h: add UTF-{16,32}{BE,LE}. * io.c (io_strip_bom): use built-in encoding indexes in internal.h. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41742 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog6
-rw-r--r--encoding.c4
-rw-r--r--internal.h4
-rw-r--r--io.c8
4 files changed, 17 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 7499920fff..3648e5d0e1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,8 @@
-Tue Jul 2 17:22:25 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Tue Jul 2 17:22:31 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * internal.h: add UTF-{16,32}{BE,LE}.
+
+ * io.c (io_strip_bom): use built-in encoding indexes in internal.h.
* internal.h (rb_{ascii8bit,utf8,usascii}_encindex): use built-in
encoding indexes for optimization.
diff --git a/encoding.c b/encoding.c
index d83fc2d002..98cecaec0a 100644
--- a/encoding.c
+++ b/encoding.c
@@ -559,6 +559,10 @@ rb_enc_init(void)
#undef ENC_REGISTER
#ifndef NO_PRESERVED_ENCODING
#define ENCDB_REGISTER(name, enc) enc_register_at(ENCINDEX_##enc, name, NULL)
+ ENCDB_REGISTER("UTF-16BE", UTF_16BE);
+ ENCDB_REGISTER("UTF-16LE", UTF_16LE);
+ ENCDB_REGISTER("UTF-32BE", UTF_32BE);
+ ENCDB_REGISTER("UTF-32LE", UTF_32LE);
#undef ENCDB_REGISTER
#endif
enc_table.count = ENCINDEX_BUILTIN_MAX;
diff --git a/internal.h b/internal.h
index 8c716e7be7..a5d72164ec 100644
--- a/internal.h
+++ b/internal.h
@@ -204,6 +204,10 @@ enum ruby_preserved_encindex {
#ifndef NO_PRESERVED_ENCODING
/* preserved indexes */
+ ENCINDEX_UTF_16BE,
+ ENCINDEX_UTF_16LE,
+ ENCINDEX_UTF_32BE,
+ ENCINDEX_UTF_32LE,
#endif
ENCINDEX_BUILTIN_MAX
diff --git a/io.c b/io.c
index 8261c99fda..1a3f998914 100644
--- a/io.c
+++ b/io.c
@@ -5319,7 +5319,7 @@ io_strip_bom(VALUE io)
case INT2FIX(0xFE):
if (NIL_P(b2 = rb_io_getbyte(io))) break;
if (b2 == INT2FIX(0xFF)) {
- return rb_enc_find_index("UTF-16BE");
+ return ENCINDEX_UTF_16BE;
}
rb_io_ungetbyte(io, b2);
break;
@@ -5330,14 +5330,14 @@ io_strip_bom(VALUE io)
b3 = rb_io_getbyte(io);
if (b3 == INT2FIX(0) && !NIL_P(b4 = rb_io_getbyte(io))) {
if (b4 == INT2FIX(0)) {
- return rb_enc_find_index("UTF-32LE");
+ return ENCINDEX_UTF_32LE;
}
rb_io_ungetbyte(io, b4);
rb_io_ungetbyte(io, b3);
}
else {
rb_io_ungetbyte(io, b3);
- return rb_enc_find_index("UTF-16LE");
+ return ENCINDEX_UTF_16LE;
}
}
rb_io_ungetbyte(io, b2);
@@ -5348,7 +5348,7 @@ io_strip_bom(VALUE io)
if (b2 == INT2FIX(0) && !NIL_P(b3 = rb_io_getbyte(io))) {
if (b3 == INT2FIX(0xFE) && !NIL_P(b4 = rb_io_getbyte(io))) {
if (b4 == INT2FIX(0xFF)) {
- return rb_enc_find_index("UTF-32BE");
+ return ENCINDEX_UTF_32BE;
}
rb_io_ungetbyte(io, b4);
}