diff options
author | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-12-28 10:41:52 +0000 |
---|---|---|
committer | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-12-28 10:41:52 +0000 |
commit | eb1014e4aeb30b9ba18686d4c955cad7e0372108 (patch) | |
tree | ad6c02a087ecc6805fb34ca6120e475e291b150e | |
parent | b1b238da2c20e2312e1e802960feeda6b94b1ca5 (diff) | |
download | ruby-eb1014e4aeb30b9ba18686d4c955cad7e0372108.tar.gz |
* encoding.c (rb_locale_encoding): should check return value from
rb_locale_charmap().
* ruby.c (locale_encoding): removed.
* ruby.c (process_options): use rb_locale_encoding() instead of
locale_encoding().
* ext/readline/readline.c (readline_readline): use locale encoding
instead of input IO's encoding. [ruby-dev:32872]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14770 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 13 | ||||
-rw-r--r-- | encoding.c | 6 | ||||
-rw-r--r-- | ext/readline/readline.c | 17 | ||||
-rw-r--r-- | ruby.c | 19 |
4 files changed, 20 insertions, 35 deletions
@@ -1,3 +1,16 @@ +Fri Dec 28 19:39:34 2007 NAKAMURA Usaku <usa@ruby-lang.org> + + * encoding.c (rb_locale_encoding): should check return value from + rb_locale_charmap(). + + * ruby.c (locale_encoding): removed. + + * ruby.c (process_options): use rb_locale_encoding() instead of + locale_encoding(). + + * ext/readline/readline.c (readline_readline): use locale encoding + instead of input IO's encoding. [ruby-dev:32872] + Fri Dec 28 19:29:07 2007 NAKAMURA Usaku <usa@ruby-lang.org> * ext/readline/readline.c (readline_readline, readline_s_set_input): diff --git a/encoding.c b/encoding.c index adbad670f1..ac47b9c157 100644 --- a/encoding.c +++ b/encoding.c @@ -857,8 +857,12 @@ rb_encoding * rb_locale_encoding(void) { VALUE charmap = rb_locale_charmap(rb_cEncoding); - int idx = rb_enc_find_index(StringValueCStr(charmap)); + int idx; + + if (NIL_P(charmap)) + return rb_ascii8bit_encoding(); + idx = rb_enc_find_index(StringValueCStr(charmap)); if (idx < 0) return rb_ascii8bit_encoding(); diff --git a/ext/readline/readline.c b/ext/readline/readline.c index ea9d97ca62..2e9a177c3b 100644 --- a/ext/readline/readline.c +++ b/ext/readline/readline.c @@ -29,7 +29,6 @@ #endif static VALUE mReadline; -static VALUE id_var_input; #define TOLOWER(c) (isupper(c) ? tolower(c) : c) @@ -95,18 +94,8 @@ readline_readline(int argc, VALUE *argv, VALUE self) add_history(buff); } if (buff) { - rb_encoding* enc; - VALUE input = rb_ivar_get(mReadline, id_var_input); - rb_io_t *ifp; - GetOpenFile(input, ifp); - if (ifp->enc) - enc = ifp->enc; - else if (ifp->mode & FMODE_BINMODE) - enc = rb_ascii8bit_encoding(); - else - enc = rb_default_external_encoding(); result = rb_tainted_str_new2(buff); - rb_enc_associate(result, enc); + rb_enc_associate(result, rb_locale_encoding()); } else result = Qnil; @@ -123,7 +112,6 @@ readline_s_set_input(VALUE self, VALUE input) Check_Type(input, T_FILE); GetOpenFile(input, ifp); rl_instream = rb_io_stdio_file(ifp); - rb_ivar_set(mReadline, id_var_input, input); return input; } @@ -769,9 +757,6 @@ Init_readline() rb_define_singleton_method(mReadline, "filename_quote_characters", readline_s_get_filename_quote_characters, 0); - id_var_input = rb_intern("#input"); - rb_ivar_set(mReadline, id_var_input, rb_stdin); - history = rb_obj_alloc(rb_cObject); rb_extend_object(history, rb_mEnumerable); rb_define_singleton_method(history,"to_s", hist_to_s, 0); @@ -135,23 +135,6 @@ usage(const char *name) printf(" %s\n", *p++); } -static rb_encoding * -locale_encoding(void) -{ - VALUE codeset = rb_locale_charmap(Qnil); - char *name; - int idx; - - if (codeset == Qnil) - return rb_ascii8bit_encoding(); - - name = StringValueCStr(codeset); - idx = rb_enc_find_index(name); - if (idx < 0) - return rb_ascii8bit_encoding(); - return rb_enc_from_index(idx); -} - extern VALUE rb_load_path; #ifndef CharNext /* defined as CharNext[AW] on Windows. */ @@ -1025,7 +1008,7 @@ process_options(VALUE arg) enc = rb_enc_from_index(opt->enc_index); } else { - enc = locale_encoding(); + enc = rb_locale_encoding(); } rb_enc_set_default_external(rb_enc_from_encoding(enc)); |