summaryrefslogtreecommitdiff
path: root/ruby.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-10-18 10:36:20 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-10-18 10:36:20 +0000
commit3f0ec8887f3bc75a98fd3ec8926518b635c70b7b (patch)
treecd0f721ca0e03ccec39353962869b9a6e8477c93 /ruby.c
parent88aa8632741d027d1d2e58f8073d4ec90845499d (diff)
* 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.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/ruby.c b/ruby.c
index 881ebe7fb2..ba30be6eff 100644
--- a/ruby.c
+++ b/ruby.c
@@ -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);