summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-12-21 06:59:48 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-12-21 06:59:48 +0000
commit12df6cf7cece79a1d5d99037b35b6a28c3c3296c (patch)
tree05cb8f23c43b7fcd17dad6e3b84a228d24885a3b
parent328e6a02bf19c4b0397a6a2e066b273e7dd339de (diff)
* encoding.c (rb_enc_init): use enc_register_at() directly.
* encoding.c (rb_utf8_encoding): returns utf-8 encoding. * include/ruby/encoding.h (rb_utf8_encoding): prototyped. * parse.y (UTF8_ENC): uses rb_utf8_encoding(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14410 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog10
-rw-r--r--encoding.c28
-rw-r--r--include/ruby/encoding.h1
-rw-r--r--parse.y2
4 files changed, 35 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index d46b89f6c2..84323a22fa 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+Fri Dec 21 15:59:46 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * encoding.c (rb_enc_init): use enc_register_at() directly.
+
+ * encoding.c (rb_utf8_encoding): returns utf-8 encoding.
+
+ * include/ruby/encoding.h (rb_utf8_encoding): prototyped.
+
+ * parse.y (UTF8_ENC): uses rb_utf8_encoding().
+
Fri Dec 21 15:24:22 2007 Shugo Maeda <shugo@ruby-lang.org>
* lib/net/imap.rb (initialize): accept service name. changed
diff --git a/encoding.c b/encoding.c
index 819ac54071..47646cc36c 100644
--- a/encoding.c
+++ b/encoding.c
@@ -236,14 +236,23 @@ rb_enc_alias(const char *alias, const char *orig)
return enc_alias(alias, orig);
}
+enum {
+ ENCINDEX_ASCII,
+ ENCINDEX_EUC_JP,
+ ENCINDEX_SJIS,
+ ENCINDEX_UTF8,
+ ENCINDEX_BUILTIN_MAX
+};
+
void
rb_enc_init(void)
{
-#define ENC_REGISTER(enc) enc_register(rb_enc_name(enc), enc)
- ENC_REGISTER(ONIG_ENCODING_ASCII);
- ENC_REGISTER(ONIG_ENCODING_EUC_JP);
- ENC_REGISTER(ONIG_ENCODING_SJIS);
- ENC_REGISTER(ONIG_ENCODING_UTF8);
+ enc_table_count = enc_table_expand(ENCINDEX_BUILTIN_MAX);
+#define ENC_REGISTER(enc) enc_register_at(ENCINDEX_##enc, rb_enc_name(ONIG_ENCODING_##enc), ONIG_ENCODING_##enc)
+ ENC_REGISTER(ASCII);
+ ENC_REGISTER(EUC_JP);
+ ENC_REGISTER(SJIS);
+ ENC_REGISTER(UTF8);
#undef ENC_REGISTER
enc_alias("ASCII", rb_enc_name(ONIG_ENCODING_ASCII));
enc_alias("BINARY", rb_enc_name(ONIG_ENCODING_ASCII));
@@ -695,6 +704,15 @@ rb_default_encoding(void)
return enc_table[0].enc;
}
+rb_encoding *
+rb_utf8_encoding(void)
+{
+ if (!enc_table) {
+ rb_enc_init();
+ }
+ return enc_table[ENCINDEX_UTF8].enc;
+}
+
static int default_external_index;
rb_encoding *
diff --git a/include/ruby/encoding.h b/include/ruby/encoding.h
index 1c45abb4bb..4b238d3a52 100644
--- a/include/ruby/encoding.h
+++ b/include/ruby/encoding.h
@@ -114,6 +114,7 @@ int rb_enc_str_asciionly_p(VALUE);
#define rb_enc_str_asciicompat_p(str) rb_enc_asciicompat(rb_enc_get(str))
VALUE rb_enc_from_encoding(rb_encoding *enc);
rb_encoding *rb_default_encoding(void);
+rb_encoding *rb_utf8_encoding(void);
rb_encoding *rb_default_external_encoding(void);
VALUE rb_enc_default_external(void);
void rb_enc_set_default_external(VALUE encoding);
diff --git a/parse.y b/parse.y
index d86cd71afd..de0b596f51 100644
--- a/parse.y
+++ b/parse.y
@@ -266,7 +266,7 @@ struct parser_params {
};
#define UTF8_ENC() (parser->utf8 ? parser->utf8 : \
- (parser->utf8 = rb_enc_find("utf-8")))
+ (parser->utf8 = rb_utf8_encoding()))
#define STR_NEW(p,n) rb_enc_str_new((p),(n),parser->enc)
#define STR_NEW0() rb_str_new(0,0)
#define STR_NEW2(p) rb_enc_str_new((p),strlen(p),parser->enc)