diff options
Diffstat (limited to 'version.c')
| -rw-r--r-- | version.c | 99 |
1 files changed, 76 insertions, 23 deletions
@@ -2,51 +2,104 @@ version.c - - $Author: shyouhei $ - $Date: 2006/11/26 09:34:32 $ + $Author$ created at: Thu Sep 30 20:08:01 JST 1993 - Copyright (C) 1993-2003 Yukihiro Matsumoto + Copyright (C) 1993-2007 Yukihiro Matsumoto **********************************************************************/ -#include "ruby.h" +#include "ruby/ruby.h" #include "version.h" #include <stdio.h> +#ifndef EXIT_SUCCESS +#define EXIT_SUCCESS 0 +#endif + +#define PRINT(type) puts(ruby_##type) +#define MKSTR(type) rb_obj_freeze(rb_usascii_str_new_static(ruby_##type, sizeof(ruby_##type)-1)) +#define MKINT(name) INT2FIX(ruby_##name) + +const int ruby_api_version[] = { + RUBY_API_VERSION_MAJOR, + RUBY_API_VERSION_MINOR, + RUBY_API_VERSION_TEENY, +}; const char ruby_version[] = RUBY_VERSION; const char ruby_release_date[] = RUBY_RELEASE_DATE; const char ruby_platform[] = RUBY_PLATFORM; const int ruby_patchlevel = RUBY_PATCHLEVEL; +const char ruby_description[] = RUBY_DESCRIPTION; +const char ruby_copyright[] = RUBY_COPYRIGHT; +const char ruby_engine[] = "ruby"; +/*! Defines platform-depended Ruby-level constants */ void -Init_version() +Init_version(void) { - VALUE v = rb_obj_freeze(rb_str_new2(ruby_version)); - VALUE d = rb_obj_freeze(rb_str_new2(ruby_release_date)); - VALUE p = rb_obj_freeze(rb_str_new2(ruby_platform)); - - rb_define_global_const("RUBY_VERSION", v); - rb_define_global_const("RUBY_RELEASE_DATE", d); - rb_define_global_const("RUBY_PLATFORM", p); - rb_define_global_const("RUBY_PATCHLEVEL", INT2FIX(RUBY_PATCHLEVEL)); - - /* obsolete constants */ - rb_define_global_const("VERSION", v); - rb_define_global_const("RELEASE_DATE", d); - rb_define_global_const("PLATFORM", p); + enum {ruby_patchlevel = RUBY_PATCHLEVEL}; + enum {ruby_revision = RUBY_REVISION}; + VALUE version; + VALUE ruby_engine_name; + /* + * The running version of ruby + */ + rb_define_global_const("RUBY_VERSION", (version = MKSTR(version))); + /* + * The date this ruby was released + */ + rb_define_global_const("RUBY_RELEASE_DATE", MKSTR(release_date)); + /* + * The platform for this ruby + */ + rb_define_global_const("RUBY_PLATFORM", MKSTR(platform)); + /* + * The patchlevel for this ruby. If this is a development build of ruby + * the patchlevel will be -1 + */ + rb_define_global_const("RUBY_PATCHLEVEL", MKINT(patchlevel)); + /* + * The SVN revision for this ruby. + */ + rb_define_global_const("RUBY_REVISION", MKINT(revision)); + /* + * The full ruby version string, like <tt>ruby -v</tt> prints' + */ + rb_define_global_const("RUBY_DESCRIPTION", MKSTR(description)); + /* + * The copyright string for ruby + */ + rb_define_global_const("RUBY_COPYRIGHT", MKSTR(copyright)); + /* + * The engine or interpreter this ruby uses. + */ + rb_define_global_const("RUBY_ENGINE", ruby_engine_name = MKSTR(engine)); + ruby_set_script_name(ruby_engine_name); + /* + * The version of the engine or interpreter this ruby uses. + */ + rb_define_global_const("RUBY_ENGINE_VERSION", (1 ? version : MKSTR(version))); } +/*! Prints the version information of the CRuby interpreter to stdout. */ void -ruby_show_version() +ruby_show_version(void) { - printf("ruby %s (%s patchlevel %d) [%s]\n", RUBY_VERSION, RUBY_RELEASE_DATE, RUBY_PATCHLEVEL, RUBY_PLATFORM); + PRINT(description); +#ifdef RUBY_LAST_COMMIT_TITLE + fputs("last_commit=" RUBY_LAST_COMMIT_TITLE, stdout); +#endif +#ifdef HAVE_MALLOC_CONF + if (malloc_conf) printf("malloc_conf=%s\n", malloc_conf); +#endif fflush(stdout); } +/*! Prints the copyright notice of the CRuby interpreter to stdout. */ void -ruby_show_copyright() +ruby_show_copyright(void) { - printf("ruby - Copyright (C) 1993-%d Yukihiro Matsumoto\n", RUBY_RELEASE_YEAR); - exit(0); + PRINT(copyright); + fflush(stdout); } |
