From aa06e69000ef8e1ba440925462672f359f91c48d Mon Sep 17 00:00:00 2001 From: yugui Date: Fri, 12 Dec 2008 05:25:39 +0000 Subject: * encoding.c (enc_get_default_encoding): removed. Generalizing rb_default_{external,internal}_encoding seems to be difficult. default_external cannot be NULL even before detected. [ruby-dev:37390] * encoding.c (rb_default_external_encoding): has its own implementation again. * encoding.c (rb_default_internal_encoding): ditto. * gem_prelude.rb: added notice. * ruby.c (rubylib_mangled_path, rubylib_mangled_path2): uses locale encoding but not ASCII-8BIT. * ruby.c (process_options): refers less to default_external. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20656 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 19 +++++++++++++++++++ encoding.c | 24 +++++++++++++----------- gem_prelude.rb | 4 ++++ ruby.c | 12 ++++++------ 4 files changed, 42 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index b8c99d0cfc..1fee2b14e0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,22 @@ +Fri Dec 12 14:09:55 2008 Yuki Sonoda (Yugui) + + * encoding.c (enc_get_default_encoding): removed. + Generalizing rb_default_{external,internal}_encoding seems to be + difficult. + default_external cannot be NULL even before detected. [ruby-dev:37390] + + * encoding.c (rb_default_external_encoding): has its own + implementation again. + + * encoding.c (rb_default_internal_encoding): ditto. + + * gem_prelude.rb: added notice. + + * ruby.c (rubylib_mangled_path, rubylib_mangled_path2): uses locale + encoding but not ASCII-8BIT. + + * ruby.c (process_options): refers less to default_external. + Fri Dec 12 11:00:52 2008 Nobuyoshi Nakada * load.c (rb_feature_p): load path must be expanded. diff --git a/encoding.c b/encoding.c index 8a2f9dbfb9..910768d56a 100644 --- a/encoding.c +++ b/encoding.c @@ -1037,15 +1037,6 @@ struct default_encoding { rb_encoding *enc; }; -static rb_encoding * -enc_get_default_encoding(struct default_encoding *def) -{ - if (!def->enc && def->index >= 0) { - def->enc = rb_enc_from_index(def->index); - } - return def->enc; -} - static int enc_set_default_encoding(struct default_encoding *def, VALUE encoding, const char *name, int defindex) @@ -1077,7 +1068,15 @@ static struct default_encoding default_external = {-2}; rb_encoding * rb_default_external_encoding(void) { - return enc_get_default_encoding(&default_external); + if (default_external.enc) return default_external.enc; + + if (default_external.index >= 0) { + default_external.enc = rb_enc_from_index(default_external.index); + return default_external.enc; + } + else { + return rb_locale_encoding(); + } } VALUE @@ -1126,7 +1125,10 @@ static struct default_encoding default_internal = {-2}; rb_encoding * rb_default_internal_encoding(void) { - return enc_get_default_encoding(&default_internal); + if (!default_internal.enc && default_internal.index >= 0) { + default_internal.enc = rb_enc_from_index(default_internal.index); + } + return default_internal.enc; /* can be NULL */ } VALUE diff --git a/gem_prelude.rb b/gem_prelude.rb index ddc56c87d1..406f40fe5a 100644 --- a/gem_prelude.rb +++ b/gem_prelude.rb @@ -2,6 +2,10 @@ # vim: filetype=ruby # THIS FILE WAS AUTOGENERATED, DO NOT EDIT +# NOTICE: Ruby is during initialization here. +# * Encoding.default_external does not reflects -E. +# * Should not expect Encoding.default_internal. +# * Locale encoding is available. if defined?(Gem) then module Kernel diff --git a/ruby.c b/ruby.c index 913b454fd7..0b6bb8227e 100644 --- a/ruby.c +++ b/ruby.c @@ -213,9 +213,9 @@ rubylib_mangled_path(const char *s, unsigned int l) } } if (!newp || l < oldl || STRNCASECMP(oldp, s, oldl) != 0) { - return rb_str_new(s, l); + return rb_locale_str_new(s, l); } - ret = rb_str_new(0, l + newl - oldl); + ret = rb_locale_str_new(0, l + newl - oldl); ptr = RSTRING_PTR(ret); memcpy(ptr, newp, newl); memcpy(ptr + newl, s + oldl, l - oldl); @@ -229,8 +229,8 @@ rubylib_mangled_path2(const char *s) return rubylib_mangled_path(s, strlen(s)); } #else -#define rubylib_mangled_path rb_str_new -#define rubylib_mangled_path2 rb_str_new2 +#define rubylib_mangled_path rb_locale_str_new +#define rubylib_mangled_path2 rb_locale_str_new_cstr #endif static void @@ -1178,7 +1178,7 @@ process_options(VALUE arg) } } - ruby_script(opt->script); + rb_progname = rb_obj_freeze(rb_str_new_cstr(opt->script)); #if defined DOSISH || defined __CYGWIN__ translate_char(RSTRING_PTR(rb_progname), '\\', '/'); #endif @@ -1670,7 +1670,7 @@ ruby_process_options(int argc, char **argv) struct cmdline_options opt; NODE *tree; - ruby_script(argv[0]); /* for the time being */ + ruby_script(argv[0]); /* for the time being */ rb_argv0 = rb_str_new4(rb_progname); rb_gc_register_mark_object(rb_argv0); args.argc = argc; -- cgit v1.2.3