Version.cpp
Go to the documentation of this file.
1 /*----------------------------------------------------------------------------*/
2 /* */
3 /* Copyright (c) 1995, 2004 IBM Corporation. All rights reserved. */
4 /* Copyright (c) 2005-2009 Rexx Language Association. All rights reserved. */
5 /* */
6 /* This program and the accompanying materials are made available under */
7 /* the terms of the Common Public License v1.0 which accompanies this */
8 /* distribution. A copy is also available at the following address: */
9 /* http://www.oorexx.org/license.html */
10 /* */
11 /* Redistribution and use in source and binary forms, with or */
12 /* without modification, are permitted provided that the following */
13 /* conditions are met: */
14 /* */
15 /* Redistributions of source code must retain the above copyright */
16 /* notice, this list of conditions and the following disclaimer. */
17 /* Redistributions in binary form must reproduce the above copyright */
18 /* notice, this list of conditions and the following disclaimer in */
19 /* the documentation and/or other materials provided with the distribution. */
20 /* */
21 /* Neither the name of Rexx Language Association nor the names */
22 /* of its contributors may be used to endorse or promote products */
23 /* derived from this software without specific prior written permission. */
24 /* */
25 /* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */
26 /* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */
27 /* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */
28 /* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */
29 /* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
30 /* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */
31 /* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */
32 /* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY */
33 /* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */
34 /* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */
35 /* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
36 /* */
37 /*----------------------------------------------------------------------------*/
38 /******************************************************************************/
39 /* REXX Kernel */
40 /* */
41 /* Version Identification */
42 /* */
43 /******************************************************************************/
44 #include "RexxCore.h"
45 #include "StringClass.hpp"
46 #include "Interpreter.hpp"
47 
48 const char * build_date = __DATE__; /* date of last build */
49 
51 
53 /******************************************************************************/
54 /* Arguments: None */
55 /* */
56 /* Returned: Version string */
57 /******************************************************************************/
58 {
59  if (versionNumber == OREF_NULL)
60  {
61  char buffer[100]; /* buffer for building the string */
62  char work[20]; /* working buffer */
63 
64  strcpy(work, build_date); /* copy the build date */
65  char *month = strtok(work, " "); /* get the month */
66  char *day = strtok(NULL, " "); /* get the build day */
67  char *year = strtok(NULL, " "); /* and the year */
68  if (*day == '0') /* day have a leading zero? */
69  {
70  day++; /* step over it */
71  }
72  /* format the result */
73  snprintf(buffer, sizeof buffer, "REXX-ooRexx_%d.%d.%d(MT)_%s-bit 6.04 %s %s %s", ORX_VER, ORX_REL, ORX_MOD,
74 #ifdef __REXX64__
75  "64",
76 #else
77  "32",
78 #endif
79  day, month, year);
80  versionNumber = new_string(buffer); /* return as a rexx string */
81  }
82  return versionNumber;
83 }
84 
85 
86 /**
87  * Get the interpreter version level as a binary number
88  * to be returned in the APIs.
89  *
90  * @return The binary interpreter version level.
91  */
93 {
95 }
96 
97 /**
98  * Return the current language level implemented by this
99  * interpreter version.
100  *
101  * @return The current defined language level.
102  */
104 {
106 }
#define OREF_NULL
Definition: RexxCore.h:61
RexxString * new_string(const char *s, stringsize_t l)
const char * build_date
Definition: Version.cpp:48
static size_t getInterpreterVersion()
Definition: Version.cpp:92
static RexxString * getVersionNumber()
Definition: Version.cpp:52
static RexxString * versionNumber
static size_t getLanguageLevel()
Definition: Version.cpp:103
#define REXX_CURRENT_LANGUAGE_LEVEL
Definition: oorexxapi.h:228
#define REXX_CURRENT_INTERPRETER_VERSION
Definition: oorexxapi.h:223
char work[256]