diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2002-03-11 08:02:04 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2002-03-11 08:02:04 +0000 |
commit | 86c6af5873ae218a3fa92aed419de5b92653b9fb (patch) | |
tree | 40149bab7e1444f3ce2cd9517fede590dee6e4f1 /signal.c | |
parent | 81930da895afee14918490b072593860cb12d09b (diff) | |
download | ruby-86c6af5873ae218a3fa92aed419de5b92653b9fb.tar.gz |
* marshal.c (w_object): module inclusion using extend() should
also be detected.
* eval.c (rb_eval_cmd): cbase should not be NULL; it should be
either ruby_wrapper or Object.
* enum.c (enum_each_with_index): should return self.
* process.c (proc_setpgrp): should return value for non-void function.
* process.c (proc_getpgid): should raise exception if getpgid() return -1.
* string.c (rb_str_ljust): should return a duplicated string.
* string.c (rb_str_rjust): ditto.
* string.c (rb_str_center): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2172 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'signal.c')
-rw-r--r-- | signal.c | 39 |
1 files changed, 23 insertions, 16 deletions
@@ -217,26 +217,33 @@ rb_f_kill(argc, argv) goto str_signal; case T_STRING: - { - s = RSTRING(argv[0])->ptr; - if (s[0] == '-') { - negative++; - s++; - } - str_signal: - if (strncmp("SIG", s, 3) == 0) - s += 3; - if((sig = signm2signo(s)) == 0) - rb_raise(rb_eArgError, "unrecognized signal name `%s'", s); - - if (negative) - sig = -sig; + s = RSTRING(argv[0])->ptr; + if (s[0] == '-') { + negative++; + s++; } + str_signal: + if (strncmp("SIG", s, 3) == 0) + s += 3; + if((sig = signm2signo(s)) == 0) + rb_raise(rb_eArgError, "unsupported name `SIG%s'", s); + + if (negative) + sig = -sig; break; default: - rb_raise(rb_eArgError, "bad signal type %s", - rb_class2name(CLASS_OF(argv[0]))); + { + VALUE str; + + str = rb_check_convert_type(argv[0], T_STRING, "String", "to_str"); + if (!NIL_P(str)) { + s = RSTRING(str)->ptr; + goto str_signal; + } + rb_raise(rb_eArgError, "bad signal type %s", + rb_class2name(CLASS_OF(argv[0]))); + } break; } |