summaryrefslogtreecommitdiff log msg author committer range
path: root/version.c
blob: f3c687dedbdb72912d33e35082217c1e87c5551b (plain)
 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103  /********************************************************************** version.c - $Author$ created at: Thu Sep 30 20:08:01 JST 1993 Copyright (C) 1993-2007 Yukihiro Matsumoto **********************************************************************/ #include "ruby/ruby.h" #include "version.h" #include #ifndef EXIT_SUCCESS #define EXIT_SUCCESS 0 #endif #define PRINT(type) puts(ruby_##type) #define MKSTR(type) rb_obj_freeze(rb_usascii_str_new(ruby_##type, sizeof(ruby_##type)-1)) 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"; VALUE ruby_engine_name = Qnil; /*! Defines platform-depended Ruby-level constants */ void Init_version(void) { VALUE v = MKSTR(version); /* * The running version of ruby */ rb_define_global_const("RUBY_VERSION", v); /* * 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", INT2FIX(RUBY_PATCHLEVEL)); /* * The SVN revision for this ruby. */ rb_define_global_const("RUBY_REVISION", INT2FIX(RUBY_REVISION)); /* * The full ruby version string, like ruby -v 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)); /* * The version of the engine or interpreter this ruby uses. */ rb_define_global_const("RUBY_ENGINE_VERSION", v); } /*! Prints the version information of the CRuby interpreter to stdout. */ void 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 and \em exits * this process successfully. */ void ruby_show_copyright(void) { PRINT(copyright); exit(EXIT_SUCCESS); }