00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include "verconf.h"
00013 #include "ruby/ruby.h"
00014 #include "version.h"
00015 #include <stdio.h>
00016
00017 #define PRINT(type) puts(ruby_##type)
00018 #define MKSTR(type) rb_obj_freeze(rb_usascii_str_new(ruby_##type, sizeof(ruby_##type)-1))
00019
00020 #ifndef RUBY_ARCH
00021 #define RUBY_ARCH RUBY_PLATFORM
00022 #endif
00023 #ifndef RUBY_SITEARCH
00024 #define RUBY_SITEARCH RUBY_ARCH
00025 #endif
00026 #ifdef RUBY_PLATFORM_CPU
00027 #define RUBY_THINARCH RUBY_PLATFORM_CPU"-"RUBY_PLATFORM_OS
00028 #endif
00029 #ifndef RUBY_LIB_PREFIX
00030 #ifndef RUBY_EXEC_PREFIX
00031 #error RUBY_EXEC_PREFIX must be defined
00032 #endif
00033 #define RUBY_LIB_PREFIX RUBY_EXEC_PREFIX"/lib/ruby"
00034 #endif
00035 #ifndef RUBY_SITE_LIB
00036 #define RUBY_SITE_LIB RUBY_LIB_PREFIX"/site_ruby"
00037 #endif
00038 #ifndef RUBY_VENDOR_LIB
00039 #define RUBY_VENDOR_LIB RUBY_LIB_PREFIX"/vendor_ruby"
00040 #endif
00041
00042 #define RUBY_LIB RUBY_LIB_PREFIX "/"RUBY_LIB_VERSION
00043 #define RUBY_SITE_LIB2 RUBY_SITE_LIB "/"RUBY_LIB_VERSION
00044 #define RUBY_VENDOR_LIB2 RUBY_VENDOR_LIB "/"RUBY_LIB_VERSION
00045 #ifndef RUBY_ARCH_LIB_FOR
00046 #define RUBY_ARCH_LIB_FOR(arch) RUBY_LIB "/"arch
00047 #endif
00048 #ifndef RUBY_SITE_ARCH_LIB_FOR
00049 #define RUBY_SITE_ARCH_LIB_FOR(arch) RUBY_SITE_LIB2 "/"arch
00050 #endif
00051 #ifndef RUBY_VENDOR_ARCH_LIB_FOR
00052 #define RUBY_VENDOR_ARCH_LIB_FOR(arch) RUBY_VENDOR_LIB2 "/"arch
00053 #endif
00054
00055 const int ruby_api_version[] = {
00056 RUBY_API_VERSION_MAJOR,
00057 RUBY_API_VERSION_MINOR,
00058 RUBY_API_VERSION_TEENY,
00059 };
00060 const char ruby_version[] = RUBY_VERSION;
00061 const char ruby_release_date[] = RUBY_RELEASE_DATE;
00062 const char ruby_platform[] = RUBY_PLATFORM;
00063 const int ruby_patchlevel = RUBY_PATCHLEVEL;
00064 const char ruby_description[] = RUBY_DESCRIPTION;
00065 const char ruby_copyright[] = RUBY_COPYRIGHT;
00066 const char ruby_engine[] = "ruby";
00067 VALUE ruby_engine_name = Qnil;
00068
00069 const char ruby_initial_load_paths[] =
00070 #ifndef NO_INITIAL_LOAD_PATH
00071 #ifdef RUBY_SEARCH_PATH
00072 RUBY_SEARCH_PATH "\0"
00073 #endif
00074 #ifndef NO_RUBY_SITE_LIB
00075 RUBY_SITE_LIB2 "\0"
00076 #ifdef RUBY_THINARCH
00077 RUBY_SITE_ARCH_LIB_FOR(RUBY_THINARCH) "\0"
00078 #endif
00079 RUBY_SITE_ARCH_LIB_FOR(RUBY_SITEARCH) "\0"
00080 RUBY_SITE_LIB "\0"
00081 #endif
00082
00083 #ifndef NO_RUBY_VENDOR_LIB
00084 RUBY_VENDOR_LIB2 "\0"
00085 #ifdef RUBY_THINARCH
00086 RUBY_VENDOR_ARCH_LIB_FOR(RUBY_THINARCH) "\0"
00087 #endif
00088 RUBY_VENDOR_ARCH_LIB_FOR(RUBY_SITEARCH) "\0"
00089 RUBY_VENDOR_LIB "\0"
00090 #endif
00091
00092 RUBY_LIB "\0"
00093 #ifdef RUBY_THINARCH
00094 RUBY_ARCH_LIB_FOR(RUBY_THINARCH) "\0"
00095 #endif
00096 RUBY_ARCH_LIB_FOR(RUBY_ARCH) "\0"
00097 #endif
00098 "";
00099
00101 void
00102 Init_version(void)
00103 {
00104
00105
00106
00107 rb_define_global_const("RUBY_VERSION", MKSTR(version));
00108
00109
00110
00111 rb_define_global_const("RUBY_RELEASE_DATE", MKSTR(release_date));
00112
00113
00114
00115 rb_define_global_const("RUBY_PLATFORM", MKSTR(platform));
00116
00117
00118
00119
00120 rb_define_global_const("RUBY_PATCHLEVEL", INT2FIX(RUBY_PATCHLEVEL));
00121
00122
00123
00124 rb_define_global_const("RUBY_REVISION", INT2FIX(RUBY_REVISION));
00125
00126
00127
00128 rb_define_global_const("RUBY_DESCRIPTION", MKSTR(description));
00129
00130
00131
00132 rb_define_global_const("RUBY_COPYRIGHT", MKSTR(copyright));
00133
00134
00135
00136 rb_define_global_const("RUBY_ENGINE", ruby_engine_name = MKSTR(engine));
00137 }
00138
00140 void
00141 ruby_show_version(void)
00142 {
00143 PRINT(description);
00144 fflush(stdout);
00145 }
00146
00150 void
00151 ruby_show_copyright(void)
00152 {
00153 PRINT(copyright);
00154 exit(0);
00155 }
00156