From: Tanaka Akira Date: 2007-11-16T11:01:04+09:00 Subject: Re: primary encoding and source encoding In article <87hcjsxd8l.fsf@fsij.org>, Tanaka Akira writes: > File.default_encoding is better. I made a patch for this. This moves Encoding.primary_encoding to File.default_encoding. Index: encoding.c =================================================================== --- encoding.c (revision 13943) +++ encoding.c (working copy) @@ -586,7 +586,7 @@ return enc_find(klass, str); } -static int primary_encoding_index; +static int default_file_encoding_index; rb_encoding * rb_enc_default(void) @@ -598,27 +598,21 @@ } rb_encoding * -rb_enc_primary(void) +rb_enc_default_file_encoding(void) { - return rb_enc_from_index(primary_encoding_index); + return rb_enc_from_index(default_file_encoding_index); } VALUE -rb_get_primary_encoding(void) +rb_get_default_file_encoding(void) { - return rb_enc_from_encoding(rb_enc_primary()); + return rb_enc_from_encoding(rb_enc_default_file_encoding()); } -static VALUE -get_primary_encoding(VALUE klass) -{ - return rb_get_primary_encoding(); -} - void -rb_set_primary_encoding(VALUE encoding) +rb_set_default_file_encoding(VALUE encoding) { - primary_encoding_index = rb_enc_to_index(rb_to_encoding(encoding)); + default_file_encoding_index = rb_enc_to_index(rb_to_encoding(encoding)); } static void @@ -689,8 +683,6 @@ rb_define_method(rb_cEncoding, "_dump", enc_dump, -1); rb_define_singleton_method(rb_cEncoding, "_load", enc_load, 1); - rb_define_singleton_method(rb_cEncoding, "primary_encoding", get_primary_encoding, 0); - /* should be imported from Oniguruma */ rb_enc_replicate("ISO-8859-1", rb_enc_find(rb_enc_name(ONIG_ENCODING_ASCII))); Index: include/ruby/encoding.h =================================================================== --- include/ruby/encoding.h (revision 13943) +++ include/ruby/encoding.h (working copy) @@ -103,7 +103,7 @@ VALUE rb_enc_from_encoding(rb_encoding *enc); rb_encoding *rb_enc_primary(void); rb_encoding *rb_enc_default(void); -VALUE rb_get_primary_encoding(void); -void rb_set_primary_encoding(VALUE encoding); +VALUE rb_get_default_file_encoding(void); +void rb_set_default_file_encoding(VALUE encoding); #endif /* RUBY_ENCODING_H */ Index: ruby.c =================================================================== --- ruby.c (revision 13943) +++ ruby.c (working copy) @@ -1033,7 +1033,7 @@ else { enc = locale_encoding(); } - rb_set_primary_encoding(rb_enc_from_encoding(enc)); + rb_set_default_file_encoding(rb_enc_from_encoding(enc)); return (VALUE)tree; } Index: file.c =================================================================== --- file.c (revision 13943) +++ file.c (working copy) @@ -2976,6 +2976,13 @@ return rb_file_join(args, separator); } + +static VALUE +rb_file_default_encoding(VALUE klass) +{ + return rb_get_default_file_encoding(); +} + /* * call-seq: * File.truncate(file_name, integer) => 0 @@ -4405,6 +4412,8 @@ rb_define_singleton_method(rb_cFile, "split", rb_file_s_split, 1); rb_define_singleton_method(rb_cFile, "join", rb_file_s_join, -2); + rb_define_singleton_method(rb_cFile, "default_encoding", rb_file_default_encoding, 0); + #ifdef DOSISH rb_define_const(rb_cFile, "ALT_SEPARATOR", rb_obj_freeze(rb_str_new2("\\"))); #else -- Tanaka Akira