summaryrefslogtreecommitdiff
path: root/ext/nkf/nkf.c
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-12-22 08:36:30 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-12-22 08:36:30 +0000
commit573bd7500b2e845949ccffa2ae7d2077ddfa489f (patch)
tree373192f1c7b088c042a7c26c7dfc421dae5befda /ext/nkf/nkf.c
parenteff45d2cc8a7a2fe51b04bd1c05496dbdb499a9a (diff)
* ext/nkf/nkf-utf8.c: Update nkf.c rev:1.157.
* ext/nkf/nkf.c (rb_nkf_enc_get): replicate proper based encoding. * ext/nkf/kconv.c (Kconv#kconv, to*): use self.encoding as from_enc when from_enc isn't given. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14481 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/nkf/nkf.c')
-rw-r--r--ext/nkf/nkf.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/ext/nkf/nkf.c b/ext/nkf/nkf.c
index 9877901478..4f340f0b92 100644
--- a/ext/nkf/nkf.c
+++ b/ext/nkf/nkf.c
@@ -64,7 +64,17 @@ rb_nkf_putchar(unsigned int c)
rb_encoding* rb_nkf_enc_get(const char *name)
{
int idx = rb_enc_find_index(name);
- if (idx < 0) idx = rb_enc_replicate(name, rb_ascii_encoding());
+ if (idx < 0) {
+ nkf_encoding *nkf_enc = nkf_enc_find(name);
+ nkf_native_encoding * nkf_base_enc = nkf_enc_to_base_encoding(nkf_enc);
+ idx = rb_enc_find_index(nkf_enc_name(nkf_base_enc));
+ if (idx < 0) {
+ idx = rb_enc_replicate(name, rb_ascii_encoding());
+ } else {
+ rb_encoding *rb_enc = rb_enc_from_index(idx);
+ idx = rb_enc_replicate(name, rb_enc);
+ }
+ }
return rb_enc_from_index(idx);
}
@@ -475,11 +485,11 @@ Init_nkf()
rb_define_const(mNKF, "NOCONV", Qnil);
rb_define_const(mNKF, "UNKNOWN", Qnil);
rb_define_const(mNKF, "BINARY", rb_enc_from_encoding(rb_nkf_enc_get("BINARY")));
- rb_define_const(mNKF, "ASCII", rb_enc_from_encoding(rb_nkf_enc_get("US_ASCII")));
+ rb_define_const(mNKF, "ASCII", rb_enc_from_encoding(rb_nkf_enc_get("US-ASCII")));
rb_define_const(mNKF, "JIS", rb_enc_from_encoding(rb_nkf_enc_get("ISO-2022-JP")));
rb_define_const(mNKF, "EUC", rb_enc_from_encoding(rb_nkf_enc_get("EUC-JP")));
rb_define_const(mNKF, "SJIS", rb_enc_from_encoding(rb_nkf_enc_get("Shift_JIS")));
- rb_define_const(mNKF, "UTF8", rb_enc_from_encoding(rb_nkf_enc_get("UTF-8")));
+ rb_define_const(mNKF, "UTF8", rb_enc_from_encoding(rb_utf8_encoding()));
rb_define_const(mNKF, "UTF16", rb_enc_from_encoding(rb_nkf_enc_get("UTF-16")));
rb_define_const(mNKF, "UTF32", rb_enc_from_encoding(rb_nkf_enc_get("UTF-32")));