summaryrefslogtreecommitdiff
path: root/ruby.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-03-01 08:59:04 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-03-01 08:59:04 +0000
commitb8a733d0b87ae6b1425375a0cdeec37406f6e2f6 (patch)
tree92e661840c6b3849f3a238efa3d1302f546165d9 /ruby.c
parentcce9eb092b7a8be2259c8fce5f286d183535ad3b (diff)
* io.c (struct argf): packed ARGF stuffs.
* ruby.c (proc_options): use ruby_set_inplace_mode(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15663 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ruby.c')
-rw-r--r--ruby.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/ruby.c b/ruby.c
index c4f8daa0bf..7fca2969b8 100644
--- a/ruby.c
+++ b/ruby.c
@@ -63,7 +63,11 @@ VALUE ruby_verbose = Qfalse;
VALUE rb_parser_get_yydebug(VALUE);
VALUE rb_parser_set_yydebug(VALUE, VALUE);
-char *ruby_inplace_mode = 0;
+const char *ruby_get_inplace_mode(void);
+void ruby_set_inplace_mode(const char *);
+
+extern VALUE rb_get_argv(void);
+#define rb_argv rb_get_argv()
#define DISABLE_BIT(bit) (1U << disable_##bit)
enum disable_flag_bits {
@@ -461,9 +465,10 @@ process_sflag(struct cmdline_options *opt)
if (opt->sflag) {
long n;
VALUE *args;
+ VALUE argv = rb_argv;
- n = RARRAY_LEN(rb_argv);
- args = RARRAY_PTR(rb_argv);
+ n = RARRAY_LEN(argv);
+ args = RARRAY_PTR(argv);
while (n > 0) {
VALUE v = *args++;
char *s = StringValuePtr(v);
@@ -510,9 +515,9 @@ process_sflag(struct cmdline_options *opt)
}
rb_gv_set(s, v);
}
- n = RARRAY_LEN(rb_argv) - n;
+ n = RARRAY_LEN(argv) - n;
while (n--) {
- rb_ary_shift(rb_argv);
+ rb_ary_shift(argv);
}
}
opt->sflag = 0;
@@ -720,9 +725,7 @@ proc_options(int argc, char **argv, struct cmdline_options *opt)
case 'i':
forbid_setid("-i");
- if (ruby_inplace_mode)
- free(ruby_inplace_mode);
- ruby_inplace_mode = strdup(s + 1);
+ ruby_set_inplace_mode(s + 1);
break;
case 'x':
@@ -1272,7 +1275,6 @@ rb_load_file(const char *fname)
}
VALUE rb_progname;
-VALUE rb_argv;
VALUE rb_argv0;
#if !defined(PSTAT_SETCMD) && !defined(HAVE_SETPROCTITLE)
@@ -1436,8 +1438,6 @@ ruby_prog_init(void)
rb_define_hooked_variable("$0", &rb_progname, 0, set_arg0);
rb_define_hooked_variable("$PROGRAM_NAME", &rb_progname, 0, set_arg0);
- rb_define_readonly_variable("$*", &rb_argv);
- rb_argv = rb_ary_new();
rb_define_global_const("ARGV", rb_argv);
rb_global_variable(&rb_argv0);
@@ -1455,6 +1455,7 @@ void
ruby_set_argv(int argc, char **argv)
{
int i;
+ VALUE av = rb_argv;
#if defined(USE_DLN_A_OUT)
if (origarg.argv)
@@ -1462,12 +1463,12 @@ ruby_set_argv(int argc, char **argv)
else
dln_argv0 = argv[0];
#endif
- rb_ary_clear(rb_argv);
+ rb_ary_clear(av);
for (i = 0; i < argc; i++) {
VALUE arg = rb_tainted_str_new2(argv[i]);
OBJ_FREEZE(arg);
- rb_ary_push(rb_argv, arg);
+ rb_ary_push(av, arg);
}
}