summaryrefslogtreecommitdiff
path: root/encoding.c
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-01-13 01:15:32 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-01-13 01:15:32 +0000
commit80a569906d1fcbede2278193226fef84cdaa96f4 (patch)
treed1c6a1134db4e7e796798e6caa78132cabbc3fd4 /encoding.c
parent55fc5598453ed67a86692e3540fca34ce27d2f13 (diff)
* encoding.c (rb_enc_init): revert removing SJIS.
* enc/sjis.c: move to enc/shift_jis.c, to make encoding name equal to filename for convinience of loading lib. * enc/shift_jis.c: moved from enc/sjis.c. * common.mk: follows enc/shift_jis.c. * enc/Makefile.in: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15014 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'encoding.c')
-rw-r--r--encoding.c33
1 files changed, 20 insertions, 13 deletions
diff --git a/encoding.c b/encoding.c
index c62e32b3d7..b7debda0ba 100644
--- a/encoding.c
+++ b/encoding.c
@@ -292,6 +292,8 @@ rb_enc_alias(const char *alias, const char *orig)
enum {
ENCINDEX_ASCII,
+ ENCINDEX_EUC_JP,
+ ENCINDEX_SJIS,
ENCINDEX_UTF8,
ENCINDEX_BUILTIN_MAX
};
@@ -302,6 +304,8 @@ rb_enc_init(void)
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
}
@@ -366,21 +370,24 @@ rb_enc_find_index(const char *name)
OBJ_FREEZE(enclib);
if (RTEST(rb_protect(require_enc, enclib, 0)))
i = rb_enc_registered(name);
- else {
- st_data_t key = (st_data_t)name, orig;
- if (st_lookup(enc_table_replica_name, key, &orig)) {
- i = rb_enc_find_index((char *)orig);
- if (i < 0) {
- rb_raise(rb_eRuntimeError, "unknown original encoding name - %s for %s", (char *)orig, name);
- }
- i = rb_enc_replicate(name, rb_enc_from_index(i));
- st_delete(enc_table_replica_name, &key, &orig);
- } else if (st_lookup(enc_table_alias_name, key, &orig)) {
- i = rb_enc_alias(name, (char *)orig);
- st_delete(enc_table_replica_name, &key, &orig);
+ rb_set_errinfo(Qnil);
+ }
+ if (i < 0) {
+ st_data_t key = (st_data_t)name, orig;
+ if (st_lookup(enc_table_replica_name, key, &orig)) {
+ i = rb_enc_find_index((char *)orig);
+ if (i < 0) {
+ rb_raise(rb_eRuntimeError, "unknown original encoding name - '%s' for replica '%s'", (char *)orig, name);
+ }
+ i = rb_enc_replicate(name, rb_enc_from_index(i));
+ st_delete(enc_table_replica_name, &key, &orig);
+ } else if (st_lookup(enc_table_alias_name, key, &orig)) {
+ i = rb_enc_alias(name, (char *)orig);
+ if (i < 0) {
+ rb_raise(rb_eRuntimeError, "unknown original encoding name - '%s' for alias '%s'", (char *)orig, name);
}
+ st_delete(enc_table_alias_name, &key, &orig);
}
- rb_set_errinfo(Qnil);
}
return i;
}