Create a new SystemExit exception with the given status.
/*
* call-seq:
* SystemExit.new(status=0) => system_exit
*
* Create a new +SystemExit+ exception with the given status.
*/
static VALUE
exit_initialize(argc, argv, exc)
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;
}
Returns true if exiting successful, false if not.
/*
* call-seq:
* system_exit.success? => true or false
*
* Returns +true+ if exiting successful, +false+ if not.
*/
static VALUE
exit_success_p(exc)
VALUE exc;
{
VALUE status = rb_attr_get(exc, rb_intern("status"));
if (NIL_P(status)) return Qtrue;
if (status == INT2FIX(EXIT_SUCCESS)) return Qtrue;
return Qfalse;
}