Extended maintenance of Ruby 1.9.3 ended on February 23, 2015. Read more
Raised by exit to initiate the termination of the script.
Create a new SystemExit exception with the given status.
static VALUE
exit_initialize(int argc, VALUE *argv, VALUE exc)
{
VALUE status = INT2FIX(EXIT_SUCCESS);
if (argc > 0 && FIXNUM_P(argv[0])) {
status = *argv++;
--argc;
}
rb_call_super(argc, argv);
rb_iv_set(exc, "status", status);
return exc;
}
Return the status value associated with this system exit.
static VALUE
exit_status(VALUE exc)
{
return rb_attr_get(exc, rb_intern("status"));
}
Returns true if exiting successful, false if not.
static VALUE
exit_success_p(VALUE exc)
{
VALUE status_val = rb_attr_get(exc, rb_intern("status"));
int status;
if (NIL_P(status_val))
return Qtrue;
status = NUM2INT(status_val);
if (WIFEXITED(status) && WEXITSTATUS(status) == EXIT_SUCCESS)
return Qtrue;
return Qfalse;
}