diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-10-18 10:36:20 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-10-18 10:36:20 +0000 |
commit | 3f0ec8887f3bc75a98fd3ec8926518b635c70b7b (patch) | |
tree | cd0f721ca0e03ccec39353962869b9a6e8477c93 /ruby.c | |
parent | 88aa8632741d027d1d2e58f8073d4ec90845499d (diff) | |
download | ruby-3f0ec8887f3bc75a98fd3ec8926518b635c70b7b.tar.gz |
* string.c (rb_external_str_new): a new function to convert from
external encoding to internal encoding. if something went
wrong, it returns a string with the external encoding.
* string.c (rb_external_str_new_with_enc): same as above besides
you can specify the source encoding.
* ruby.c (ruby_set_argv): use rb_external_str_new()
* ruby.c (set_arg0, ruby_script): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19834 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ruby.c')
-rw-r--r-- | ruby.c | 14 |
1 files changed, 5 insertions, 9 deletions
@@ -999,7 +999,6 @@ process_options(VALUE arg) NODE *tree = 0; VALUE parser; VALUE iseq; - VALUE args; rb_encoding *enc, *lenc; const char *s; char fbuf[MAXPATHLEN]; @@ -1108,17 +1107,12 @@ process_options(VALUE arg) opt->script = RSTRING_PTR(opt->script_name); safe = rb_safe_level(); rb_set_safe_level_force(0); - ruby_set_argv(argc, argv); - process_sflag(opt); ruby_init_loadpath(); ruby_init_gems(!(opt->disable & DISABLE_BIT(gems))); lenc = rb_locale_encoding(); rb_enc_associate(rb_progname, lenc); opt->script_name = rb_str_new4(rb_progname); - for (i = 0, args = rb_argv; i < RARRAY_LEN(args); i++) { - rb_enc_associate(RARRAY_PTR(args)[i], lenc); - } parser = rb_parser_new(); if (opt->yydebug) rb_parser_set_yydebug(parser, Qtrue); if (opt->ext.enc.name != 0) { @@ -1143,6 +1137,8 @@ process_options(VALUE arg) rb_enc_set_default_internal(rb_enc_from_encoding(enc)); opt->intern.enc.index = -1; } + ruby_set_argv(argc, argv); + process_sflag(opt); rb_set_safe_level_force(safe); if (opt->e_script) { @@ -1457,14 +1453,14 @@ set_arg0(VALUE val, ID id) } } #endif - rb_progname = rb_obj_freeze(rb_tainted_str_new(s, i)); + rb_progname = rb_obj_freeze(rb_external_str_new(s, i)); } void ruby_script(const char *name) { if (name) { - rb_progname = rb_obj_freeze(rb_tainted_str_new2(name)); + rb_progname = rb_obj_freeze(rb_external_str_new(name, strlen(name))); } } @@ -1547,7 +1543,7 @@ ruby_set_argv(int argc, char **argv) #endif rb_ary_clear(av); for (i = 0; i < argc; i++) { - VALUE arg = rb_tainted_str_new2(argv[i]); + VALUE arg = rb_external_str_new(argv[i], strlen(argv[i])); OBJ_FREEZE(arg); rb_ary_push(av, arg); |