ruby-changes:13762
From: naruse <ko1@a...>
Date: Thu, 29 Oct 2009 17:14:25 +0900 (JST)
Subject: [ruby-changes:13762] Ruby:r25558 (trunk): * encoding.c (Init_Encoding): set locale and filesystem encindex.
naruse 2009-10-29 17:14:09 +0900 (Thu, 29 Oct 2009) New Revision: 25558 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=25558 Log: * encoding.c (Init_Encoding): set locale and filesystem encindex. * ruby.c (process_options): move setting func of filesystem encoding to Init_Encoding. Modified files: trunk/ChangeLog trunk/encoding.c trunk/ruby.c Index: encoding.c =================================================================== --- encoding.c (revision 25557) +++ encoding.c (revision 25558) @@ -26,6 +26,7 @@ static ID id_encoding; VALUE rb_cEncoding; static VALUE rb_encoding_list; +static int locale_encindex = -1, filesystem_encindex = -1; struct rb_encoding_entry { const char *name; @@ -1093,53 +1094,47 @@ return ENCINDEX_US_ASCII; } -static int -rb_locale_encindex(void) +static void +set_locale_encindex(void) { VALUE charmap = rb_locale_charmap(rb_cEncoding); - int idx; if (NIL_P(charmap)) - idx = rb_usascii_encindex(); - else if ((idx = rb_enc_find_index(StringValueCStr(charmap))) < 0) - idx = rb_ascii8bit_encindex(); + locale_encindex = rb_usascii_encindex(); + else if ((locale_encindex = rb_enc_find_index(StringValueCStr(charmap))) < 0) + locale_encindex = rb_ascii8bit_encindex(); - if (rb_enc_registered("locale") < 0) enc_alias_internal("locale", idx); - - return idx; + if (rb_enc_registered("locale") < 0) enc_alias_internal("locale", locale_encindex); } rb_encoding * rb_locale_encoding(void) { - return rb_enc_from_index(rb_locale_encindex()); + return rb_enc_from_index(locale_encindex); } -static int -rb_filesystem_encindex(void) +static void +set_filesystem_encindex(void) { - int idx; #if defined NO_LOCALE_CHARMAP - idx = rb_enc_to_index(rb_default_external_encoding()); + filesystem_encindex = rb_enc_to_index(rb_default_external_encoding()); #elif defined _WIN32 || defined __CYGWIN__ char cp[sizeof(int) * 8 / 3 + 4]; snprintf(cp, sizeof cp, "CP%d", AreFileApisANSI() ? GetACP() : GetOEMCP()); - idx = rb_enc_find_index(cp); + filesystem_encindex = rb_enc_find_index(cp); #elif defined __APPLE__ - idx = rb_utf8_encindex(); + filesystem_encindex = rb_utf8_encindex(); #else - idx = rb_locale_encindex(); + filesystem_encindex = locale_encindex; #endif - if (rb_enc_registered("filesystem") < 0) enc_alias_internal("filesystem", idx); - - return idx; + if (rb_enc_registered("filesystem") < 0) enc_alias_internal("filesystem", filesystem_encindex); } rb_encoding * rb_filesystem_encoding(void) { - return rb_enc_from_index(rb_filesystem_encindex()); + return rb_enc_from_index(filesystem_encindex); } struct default_encoding { @@ -1501,6 +1496,9 @@ for (i = 0; i < enc_table.count; ++i) { rb_ary_push(list, enc_new(enc_table.list[i].enc)); } + set_locale_encindex(); + set_filesystem_encindex(); + } /* locale insensitive functions */ Index: ChangeLog =================================================================== --- ChangeLog (revision 25557) +++ ChangeLog (revision 25558) @@ -1,3 +1,10 @@ +Thu Oct 29 15:35:39 2009 NARUSE, Yui <naruse@r...> + + * encoding.c (Init_Encoding): set locale and filesystem encindex. + + * ruby.c (process_options): move setting func of filesystem + encoding to Init_Encoding. + Thu Oct 29 15:43:25 2009 Nobuyoshi Nakada <nobu@r...> * vm_core.h (rb_name_err_mesg_new): added prototype. Index: ruby.c =================================================================== --- ruby.c (revision 25557) +++ ruby.c (revision 25558) @@ -1302,7 +1302,6 @@ ruby_init_loadpath_safe(opt->safe_level); rb_enc_find_index("encdb"); lenc = rb_locale_encoding(); - (void)rb_filesystem_encoding(); rb_enc_associate(rb_progname, lenc); parser = rb_parser_new(); if (opt->dump & DUMP_BIT(yydebug)) { -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/