summaryrefslogtreecommitdiff
path: root/version.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-04-27 03:53:23 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-04-27 03:53:23 +0000
commitc17052a0f0768935c063e28c649bf1614f8b5c76 (patch)
tree05d547be358422ca173b3e85a509e235dcfd0a21 /version.c
parent39d4e7596902af0236449e0ae402278bbbadce43 (diff)
* version.c (ruby_description, ruby_copyright): construct literals
statically even if string literal concatenation is not available. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@27510 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'version.c')
-rw-r--r--version.c56
1 files changed, 35 insertions, 21 deletions
diff --git a/version.c b/version.c
index 5b7f167fb8..d60ca2d92b 100644
--- a/version.c
+++ b/version.c
@@ -11,6 +11,7 @@
**********************************************************************/
#include "ruby.h"
+#define RUBY_VERSION_C 1
#include "version.h"
#include <stdio.h>
@@ -27,17 +28,44 @@ 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];
+const struct {
+ char ruby[sizeof("ruby ")-1];
+ char version[sizeof(RUBY_VERSION)-1];
+ char patchlevel[sizeof(RUBY_PATCHLEVEL_STR)-1];
+ char pad1[2];
+ char release_date[sizeof(RUBY_RELEASE_DATE)-1];
+ char revision[sizeof(RUBY_REVISION_STR)-1];
+ char pad2[3];
+ char platform[sizeof(RUBY_PLATFORM)-1];
+ char pad3[2];
+} ruby_description[1] = {
+ {
+ "ruby ", RUBY_VERSION, RUBY_PATCHLEVEL_STR,
+ " (", RUBY_RELEASE_DATE, RUBY_REVISION_STR, ") [",
+ RUBY_PLATFORM, "]"
+ }
+};
+#define ruby_description ((const char *)ruby_description)
#endif
+
#ifdef RUBY_COPYRIGHT
const char ruby_copyright[] = RUBY_COPYRIGHT;
#else
-char ruby_copyright[
- sizeof("ruby - Copyright (C) - ") + 20 + sizeof(RUBY_AUTHOR)-1];
+const struct {
+ char ruby[21];
+ char birth[4];
+ char pad1[1];
+ char release[sizeof(STRINGIZE(RUBY_RELEASE_YEAR))-1];
+ char pad2[1];
+ char author[sizeof(RUBY_AUTHOR)];
+} ruby_copyright[1] = {
+ {
+ "ruby - Copyright (C) ",
+ STRINGIZE(RUBY_BIRTH_YEAR), "-", STRINGIZE(RUBY_RELEASE_YEAR),
+ " ", RUBY_AUTHOR
+ }
+};
+#define ruby_copyright ((const char *)ruby_copyright)
#endif
const struct ruby_initial_loadpath {
@@ -97,20 +125,6 @@ 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);