summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-12-28 10:41:52 +0000
committerusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-12-28 10:41:52 +0000
commiteb1014e4aeb30b9ba18686d4c955cad7e0372108 (patch)
treead6c02a087ecc6805fb34ca6120e475e291b150e
parentb1b238da2c20e2312e1e802960feeda6b94b1ca5 (diff)
* 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--ChangeLog13
-rw-r--r--encoding.c6
-rw-r--r--ext/readline/readline.c17
-rw-r--r--ruby.c19
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 <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);
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));