summaryrefslogtreecommitdiff
path: root/version.c
diff options
context:
space:
mode:
Diffstat (limited to 'version.c')
-rw-r--r--version.c34
1 files changed, 32 insertions, 2 deletions
diff --git a/version.c b/version.c
index 047d870828..a02efdc265 100644
--- a/version.c
+++ b/version.c
@@ -14,15 +14,31 @@
#include "version.h"
#include <stdio.h>
-#define PRINT(type) puts(ruby_##type)
-#define MKSTR(type) rb_obj_freeze(rb_str_new(ruby_##type, sizeof(ruby_##type)-1))
+#define PRINT(type) puts(TOKEN_PASTE(ruby_,type))
+#ifndef rb_str_new_cstr
+#define rb_str_new_cstr(str) rb_str_new(str, strlen(str))
+#endif
+#define MKSTR(type) rb_obj_freeze(rb_str_new_cstr(TOKEN_PASTE(ruby_,type)))
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;
+#ifdef RUBY_DESCRIPTION
const char ruby_description[] = RUBY_DESCRIPTION;
+#else
+char ruby_description[
+ sizeof("ruby () []") +
+ sizeof(RUBY_VERSION)-1 + sizeof(RUBY_PATCHLEVEL_STR)-1 +
+ sizeof(RUBY_RELEASE_DATE)-1 + sizeof(RUBY_REVISION_STR)-1 +
+ sizeof(RUBY_PLATFORM)-1];
+#endif
+#ifdef RUBY_COPYRIGHT
const char ruby_copyright[] = RUBY_COPYRIGHT;
+#else
+char ruby_copyright[
+ sizeof("ruby - Copyright (C) - ") + 20 + sizeof(RUBY_AUTHOR)-1];
+#endif
void
Init_version()
@@ -31,6 +47,20 @@ Init_version()
VALUE d = MKSTR(release_date);
VALUE p = MKSTR(platform);
+#ifndef RUBY_DESCRIPTION
+ snprintf(ruby_description, sizeof(ruby_description),
+ "ruby %s%s (%s%s) [%s]",
+ RUBY_VERSION, RUBY_PATCHLEVEL_STR,
+ RUBY_RELEASE_DATE, RUBY_REVISION_STR,
+ RUBY_PLATFORM);
+#endif
+#ifndef RUBY_COPYRIGHT
+ snprintf(ruby_copyright, sizeof(ruby_copyright),
+ "ruby - Copyright (C) %d-%d %s",
+ RUBY_BIRTH_YEAR, RUBY_RELEASE_YEAR,
+ RUBY_AUTHOR);
+#endif
+
rb_define_global_const("RUBY_VERSION", v);
rb_define_global_const("RUBY_RELEASE_DATE", d);
rb_define_global_const("RUBY_PLATFORM", p);