summaryrefslogtreecommitdiff
path: root/ruby.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-05-17 05:02:58 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-05-17 05:02:58 +0000
commit589ec2beb565ffae7e387e951539da03a1d0b255 (patch)
tree53b415c17fd0f99a4fd0e444dcb08123df63c917 /ruby.c
parent52b3bf363ad4f67d79226e2d0e3143d4f85f31c5 (diff)
* ruby.c (ruby_script): sets also VM toplevel program name.
* ruby.c (process_options): no longer needs additional frame. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23473 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ruby.c')
-rw-r--r--ruby.c21
1 files changed, 3 insertions, 18 deletions
diff --git a/ruby.c b/ruby.c
index 125455cdb5..059f3c26e8 100644
--- a/ruby.c
+++ b/ruby.c
@@ -112,12 +112,6 @@ cmdline_options_init(struct cmdline_options *opt)
return opt;
}
-struct cmdline_arguments {
- int argc;
- char **argv;
- struct cmdline_options *opt;
-};
-
static NODE *load_file(VALUE, const char *, int, struct cmdline_options *);
static void forbid_setid(const char *, struct cmdline_options *);
#define forbid_setid(s) forbid_setid(s, opt)
@@ -1222,12 +1216,8 @@ rb_f_chomp(argc, argv)
}
static VALUE
-process_options(VALUE arg)
+process_options(int argc, char **argv, struct cmdline_options *opt)
{
- struct cmdline_arguments *argp = (struct cmdline_arguments *)arg;
- struct cmdline_options *opt = argp->opt;
- int argc = argp->argc;
- char **argv = argp->argv;
NODE *tree = 0;
VALUE parser;
VALUE iseq;
@@ -1754,6 +1744,7 @@ ruby_script(const char *name)
{
if (name) {
rb_progname = rb_obj_freeze(rb_external_str_new(name, strlen(name)));
+ rb_vm_set_progname(rb_progname);
}
}
@@ -1846,19 +1837,13 @@ ruby_set_argv(int argc, char **argv)
void *
ruby_process_options(int argc, char **argv)
{
- struct cmdline_arguments args;
struct cmdline_options opt;
VALUE iseq;
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;
- args.argv = argv;
- args.opt = cmdline_options_init(&opt);
- iseq = rb_vm_call_cfunc(rb_vm_top_self(),
- process_options, (VALUE)&args,
- 0, rb_progname);
+ iseq = process_options(argc, argv, cmdline_options_init(&opt));
return (void*)(struct RData*)iseq;
}