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