From eb1014e4aeb30b9ba18686d4c955cad7e0372108 Mon Sep 17 00:00:00 2001 From: usa Date: Fri, 28 Dec 2007 10:41:52 +0000 Subject: * 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 --- ChangeLog | 13 +++++++++++++ encoding.c | 6 +++++- ext/readline/readline.c | 17 +---------------- ruby.c | 19 +------------------ 4 files changed, 20 insertions(+), 35 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4b1416b4b4..1ada769dec 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +Fri Dec 28 19:39:34 2007 NAKAMURA Usaku + + * 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 * 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); diff --git a/ruby.c b/ruby.c index 94aba59008..d345ec9c86 100644 --- a/ruby.c +++ b/ruby.c @@ -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)); -- cgit v1.2.3