diff options
Diffstat (limited to 'version.c')
| -rw-r--r-- | version.c | 110 |
1 files changed, 71 insertions, 39 deletions
@@ -3,71 +3,103 @@ version.c - $Author$ - $Date$ 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_str_new(ruby_##type, sizeof(ruby_##type)-1)) +#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; -const char *ruby_copyright; +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) { - static char description[128]; - static char copyright[128]; - VALUE v = MKSTR(version); - VALUE d = MKSTR(release_date); - VALUE p = MKSTR(platform); - VALUE tmp; - - 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)); - - snprintf(description, sizeof(description), "ruby %s (%s %s %d) [%s]", - RUBY_VERSION, RUBY_RELEASE_DATE, RUBY_RELEASE_STR, - RUBY_RELEASE_NUM, RUBY_PLATFORM); - ruby_description = description; - tmp = rb_obj_freeze(rb_str_new2(description)); - rb_define_global_const("RUBY_DESCRIPTION", tmp); - - snprintf(copyright, sizeof(copyright), "ruby - Copyright (C) %d-%d %s", - RUBY_BIRTH_YEAR, RUBY_RELEASE_YEAR, RUBY_AUTHOR); - ruby_copyright = copyright; - tmp = rb_obj_freeze(rb_str_new2(copyright)); - rb_define_global_const("RUBY_COPYRIGHT", tmp); - - /* 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) { 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) { PRINT(copyright); - exit(0); + fflush(stdout); } |
