summaryrefslogtreecommitdiff
path: root/version.c
diff options
context:
space:
mode:
Diffstat (limited to 'version.c')
-rw-r--r--version.c110
1 files changed, 71 insertions, 39 deletions
diff --git a/version.c b/version.c
index dbc65b08a4..4c7b1abb40 100644
--- a/version.c
+++ b/version.c
@@ -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);
}