summaryrefslogtreecommitdiff
path: root/ruby.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-06-17 14:02:20 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-06-17 14:02:20 +0000
commit3e30cdad087fb4cb7a6e320f1934937e9688c919 (patch)
treebbbe7bd7c3ac9da0ebb48cf20a6efc5c82b921af /ruby.c
parentd7baa40cac61f9d3af3c5a8b615ca0dd303cb8c2 (diff)
* ruby.c (opt_W_getter): made a hooked variable.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17386 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ruby.c')
-rw-r--r--ruby.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/ruby.c b/ruby.c
index bf80c95273..d1f02e69f8 100644
--- a/ruby.c
+++ b/ruby.c
@@ -1446,14 +1446,16 @@ verbose_setter(VALUE val, ID id, VALUE *variable)
}
static VALUE
-opt_W_getter(VALUE val, ID id)
+opt_W_getter(VALUE val, ID id, VALUE *variable)
{
- if (ruby_verbose == Qnil)
+ switch (*variable) {
+ case Qnil:
return INT2FIX(0);
- if (ruby_verbose == Qfalse)
+ case Qfalse:
return INT2FIX(1);
- if (ruby_verbose == Qtrue)
+ case Qtrue:
return INT2FIX(2);
+ }
return Qnil; /* not reached */
}
@@ -1463,7 +1465,7 @@ ruby_prog_init(void)
rb_define_hooked_variable("$VERBOSE", &ruby_verbose, 0, verbose_setter);
rb_define_hooked_variable("$-v", &ruby_verbose, 0, verbose_setter);
rb_define_hooked_variable("$-w", &ruby_verbose, 0, verbose_setter);
- rb_define_virtual_variable("$-W", opt_W_getter, 0);
+ rb_define_hooked_variable("$-W", &ruby_verbose, opt_W_getter, 0);
rb_define_variable("$DEBUG", &ruby_debug);
rb_define_variable("$-d", &ruby_debug);