From 7aab062ef3772c7e8e50fc872a1647918c76dbba Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 7 Jan 2016 02:34:33 +0000 Subject: version.c: no exit in ruby_show_copyright * include/ruby/backward.h (ruby_show_copyright_to_die): for source code backward compatibility. * ruby.c (process_options): return Qtrue to exit the process successfully. * version.c (ruby_show_copyright): no longer exit. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53446 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 10 ++++++++++ NEWS | 4 ++++ include/ruby/backward.h | 20 ++++++++++++++++++++ include/ruby/ruby.h | 4 ++++ ruby.c | 1 + version.c | 6 ++---- 6 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 include/ruby/backward.h diff --git a/ChangeLog b/ChangeLog index 5942d0c02a..bfaf2ac69d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +Thu Jan 7 11:34:14 2016 Nobuyoshi Nakada + + * include/ruby/backward.h (ruby_show_copyright_to_die): for source + code backward compatibility. + + * ruby.c (process_options): return Qtrue to exit the process + successfully. + + * version.c (ruby_show_copyright): no longer exit. + Wed Jan 6 17:22:53 2016 Nobuyoshi Nakada * lib/optparse.rb (OptionParser#order!): add `into` optional diff --git a/NEWS b/NEWS index 7384eb7931..d84c275087 100644 --- a/NEWS +++ b/NEWS @@ -30,6 +30,10 @@ with all sufficient information, see the ChangeLog file or Redmine === C API updates +* ruby_show_version() will no longer exits the process, if + RUBY_SHOW_COPYRIGHT_TO_DIE is set to 0. This will be the default in + the future. + === Supported platform changes === Implementation improvements diff --git a/include/ruby/backward.h b/include/ruby/backward.h new file mode 100644 index 0000000000..4574cb98da --- /dev/null +++ b/include/ruby/backward.h @@ -0,0 +1,20 @@ +#ifndef RUBY_RUBY_BACKWARD_H +#define RUBY_RUBY_BACKWARD_H 1 + +#ifndef RUBY_SHOW_COPYRIGHT_TO_DIE +# define RUBY_SHOW_COPYRIGHT_TO_DIE 1 +#endif +#if RUBY_SHOW_COPYRIGHT_TO_DIE +/* for source code backward compatibility */ +DEPRECATED(static inline int ruby_show_copyright_to_die(int)); +static inline int +ruby_show_copyright_to_die(int exitcode) +{ + ruby_show_copyright(); + return exitcode; +} +#define ruby_show_copyright() /* defer EXIT_SUCCESS */ \ + (exit(ruby_show_copyright_to_die(EXIT_SUCCESS))) +#endif + +#endif /* RUBY_RUBY_BACKWARD_H */ diff --git a/include/ruby/ruby.h b/include/ruby/ruby.h index 14fe7c3e16..7aabf5bd68 100644 --- a/include/ruby/ruby.h +++ b/include/ruby/ruby.h @@ -2206,6 +2206,10 @@ void ruby_sig_finalize(void); /*! @} */ +#if !defined RUBY_EXPORT && !defined RUBY_NO_OLD_COMPATIBILITY +# include "ruby/backward.h" +#endif + RUBY_SYMBOL_EXPORT_END #if defined(__cplusplus) diff --git a/ruby.c b/ruby.c index 0a39bfba97..dfbf714f37 100644 --- a/ruby.c +++ b/ruby.c @@ -1414,6 +1414,7 @@ process_options(int argc, char **argv, struct cmdline_options *opt) } if (opt->dump & DUMP_BIT(copyright)) { ruby_show_copyright(); + return Qtrue; } if (!opt->e_script) { diff --git a/version.c b/version.c index 6caf91226a..4c7b1abb40 100644 --- a/version.c +++ b/version.c @@ -96,12 +96,10 @@ ruby_show_version(void) fflush(stdout); } -/*! Prints the copyright notice of the CRuby interpreter to stdout and \em exits - * this process successfully. - */ +/*! Prints the copyright notice of the CRuby interpreter to stdout. */ void ruby_show_copyright(void) { PRINT(copyright); - exit(EXIT_SUCCESS); + fflush(stdout); } -- cgit v1.2.3