From b9b34059a6f7eaa63aa0b7764db6eacb77531315 Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 1 Oct 2007 01:52:32 +0000 Subject: [PATCH] * eval.c (ruby_options), ruby.c (proc_options, process_options): not call exit(2) directly. [ruby-dev:31912] * eval.c (ruby_run_node): deal with direct exit code. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13579 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 7 +++++++ eval.c | 13 ++++++++++--- ruby.c | 10 +++++----- version.h | 8 ++++---- 4 files changed, 26 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3909cfc10b..77c44c0e15 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Mon Oct 1 10:52:30 2007 Nobuyoshi Nakada + + * eval.c (ruby_options), ruby.c (proc_options, process_options): not + call exit(2) directly. [ruby-dev:31912] + + * eval.c (ruby_run_node): deal with direct exit code. + Sun Sep 30 17:12:53 2007 Nobuyoshi Nakada * string.c (rb_str_append): always set encoding, and coderange diff --git a/eval.c b/eval.c index 49c6f5213d..cddf518adf 100644 --- a/eval.c +++ b/eval.c @@ -121,7 +121,8 @@ ruby_options(int argc, char **argv) } else { rb_clear_trace_func(); - exit(error_handle(state)); + state = error_handle(state); + tree = (void *)INT2FIX(state); } POP_TAG(); return tree; @@ -249,8 +250,13 @@ int ruby_run_node(void *n) { NODE *node = (NODE *)n; - if (!n) { - return EXIT_FAILURE; + + switch ((VALUE)n) { + case Qtrue: return EXIT_SUCCESS; + case Qfalse: return EXIT_FAILURE; + } + if (FIXNUM_P((VALUE)n)) { + return FIX2INT((VALUE)n); } Init_stack((void *)&n); return ruby_cleanup(ruby_exec_node(node, node->nd_file)); @@ -964,6 +970,7 @@ loop_i() for (;;) { rb_yield_0(0, 0); } + return Qnil; } /* diff --git a/ruby.c b/ruby.c index 126e79eb3f..784d246448 100644 --- a/ruby.c +++ b/ruby.c @@ -614,7 +614,8 @@ proc_options(int argc, char **argv, struct cmdline_options *opt) case 'h': usage(origarg.argv[0]); - exit(0); + rb_exit(EXIT_SUCCESS); + break; case 'l': opt->do_line = Qtrue; @@ -787,7 +788,7 @@ proc_options(int argc, char **argv, struct cmdline_options *opt) ruby_yydebug = 1; else if (strcmp("help", s) == 0) { usage(origarg.argv[0]); - exit(0); + rb_exit(EXIT_SUCCESS); } else { rb_raise(rb_eRuntimeError, @@ -873,7 +874,7 @@ process_options(int argc, char **argv, struct cmdline_options *opt) if (opt->version) { ruby_show_version(); - exit(0); + return (NODE *)Qtrue; } if (opt->copyright) { ruby_show_copyright(); @@ -887,7 +888,7 @@ process_options(int argc, char **argv, struct cmdline_options *opt) if (!opt->e_script) { if (argc == 0) { /* no more args */ if (opt->verbose) - return 0; + return (NODE *)Qtrue; opt->script = "-"; } else { @@ -1311,7 +1312,6 @@ ruby_process_options(int argc, char **argv) struct cmdline_options opt; NODE *tree; - MEMZERO(&opt, opt, 1); ruby_script(argv[0]); /* for the time being */ rb_argv0 = rb_progname; diff --git a/version.h b/version.h index f4299ce60d..49accc6764 100644 --- a/version.h +++ b/version.h @@ -1,15 +1,15 @@ #define RUBY_VERSION "1.9.0" -#define RUBY_RELEASE_DATE "2007-09-30" +#define RUBY_RELEASE_DATE "2007-10-01" #define RUBY_VERSION_CODE 190 -#define RUBY_RELEASE_CODE 20070930 +#define RUBY_RELEASE_CODE 20071001 #define RUBY_PATCHLEVEL 0 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 9 #define RUBY_VERSION_TEENY 0 #define RUBY_RELEASE_YEAR 2007 -#define RUBY_RELEASE_MONTH 9 -#define RUBY_RELEASE_DAY 30 +#define RUBY_RELEASE_MONTH 10 +#define RUBY_RELEASE_DAY 1 #ifdef RUBY_EXTERN RUBY_EXTERN const char ruby_version[];