src/java.base/share/native/libjava/jdk_util.c

Print this page




  35    /* if not defined set to 00 */
  36    #define JDK_UPDATE_VERSION "00"
  37 #endif
  38 
  39 JNIEXPORT void
  40 JDK_GetVersionInfo0(jdk_version_info* info, size_t info_size) {
  41     /* These JDK_* macros are set at Makefile or the command line */
  42     const unsigned int jdk_major_version =
  43         (unsigned int) atoi(JDK_MAJOR_VERSION);
  44     const unsigned int jdk_minor_version =
  45         (unsigned int) atoi(JDK_MINOR_VERSION);
  46     const unsigned int jdk_micro_version =
  47         (unsigned int) atoi(JDK_MICRO_VERSION);
  48 
  49     const char* jdk_build_string = JDK_BUILD_NUMBER;
  50     char build_number[4];
  51     unsigned int jdk_build_number = 0;
  52 
  53     const char* jdk_update_string = JDK_UPDATE_VERSION;
  54     unsigned int jdk_update_version = 0;

  55     char update_ver[3];
  56     char jdk_special_version = '\0';
  57 
  58     /* If the JDK_BUILD_NUMBER is of format bXX and XX is an integer
  59      * XX is the jdk_build_number.
  60      */
  61     size_t len = strlen(jdk_build_string);
  62     if (jdk_build_string[0] == 'b' && len >= 2) {
  63         size_t i = 0;
  64         for (i = 1; i < len; i++) {
  65             if (isdigit(jdk_build_string[i])) {
  66                 build_number[i-1] = jdk_build_string[i];
  67             } else {
  68                 // invalid build number
  69                 i = -1;
  70                 break;
  71             }
  72         }
  73         if (i == len) {
  74             build_number[len-1] = '\0';
  75             jdk_build_number = (unsigned int) atoi(build_number) ;
  76         }
  77     }
  78 
  79     assert(jdk_build_number <= 255);
  80 
  81     if (strlen(jdk_update_string) == 2 || strlen(jdk_update_string) == 3) {
  82         if (isdigit(jdk_update_string[0]) && isdigit(jdk_update_string[1])) {
  83             update_ver[0] = jdk_update_string[0];
  84             update_ver[1] = jdk_update_string[1];
  85             update_ver[2] = '\0';





  86             jdk_update_version = (unsigned int) atoi(update_ver);
  87             if (strlen(jdk_update_string) == 3) {
  88                 jdk_special_version = jdk_update_string[2];
  89             }
  90         }
  91     }
  92 
  93     memset(info, 0, info_size);
  94     info->jdk_version = ((jdk_major_version & 0xFF) << 24) |
  95                         ((jdk_minor_version & 0xFF) << 16) |
  96                         ((jdk_micro_version & 0xFF) << 8)  |
  97                         (jdk_build_number & 0xFF);
  98     info->update_version = jdk_update_version;
  99     info->special_update_version = (unsigned int) jdk_special_version;
 100     info->thread_park_blocker = 1;
 101     // Advertise presence of sun.misc.PostVMInitHook:
 102     // future optimization: detect if this is enabled.
 103     info->post_vm_init_hook_enabled = 1;
 104     info->pending_list_uses_discovered_field = 1;
 105 }


  35    /* if not defined set to 00 */
  36    #define JDK_UPDATE_VERSION "00"
  37 #endif
  38 
  39 JNIEXPORT void
  40 JDK_GetVersionInfo0(jdk_version_info* info, size_t info_size) {
  41     /* These JDK_* macros are set at Makefile or the command line */
  42     const unsigned int jdk_major_version =
  43         (unsigned int) atoi(JDK_MAJOR_VERSION);
  44     const unsigned int jdk_minor_version =
  45         (unsigned int) atoi(JDK_MINOR_VERSION);
  46     const unsigned int jdk_micro_version =
  47         (unsigned int) atoi(JDK_MICRO_VERSION);
  48 
  49     const char* jdk_build_string = JDK_BUILD_NUMBER;
  50     char build_number[4];
  51     unsigned int jdk_build_number = 0;
  52 
  53     const char* jdk_update_string = JDK_UPDATE_VERSION;
  54     unsigned int jdk_update_version = 0;
  55     int len_update_ver = 0;
  56     char update_ver[3];
  57     char jdk_special_version = '\0';
  58 
  59     /* If the JDK_BUILD_NUMBER is of format bXX and XX is an integer
  60      * XX is the jdk_build_number.
  61      */
  62     size_t len = strlen(jdk_build_string);
  63     if (jdk_build_string[0] == 'b' && len >= 2) {
  64         size_t i = 0;
  65         for (i = 1; i < len; i++) {
  66             if (isdigit(jdk_build_string[i])) {
  67                 build_number[i-1] = jdk_build_string[i];
  68             } else {
  69                 // invalid build number
  70                 i = -1;
  71                 break;
  72             }
  73         }
  74         if (i == len) {
  75             build_number[len-1] = '\0';
  76             jdk_build_number = (unsigned int) atoi(build_number) ;
  77         }
  78     }
  79 
  80     assert(jdk_build_number <= 255);
  81 
  82     len_update_ver = strlen(jdk_update_string);
  83     if (len_update_ver >= 2 && len_update_ver <= 4) {
  84         int update_digits = len_update_ver;
  85 
  86         if (!isdigit(jdk_update_string[len_update_ver - 1])) {
  87             jdk_special_version = jdk_update_string[len_update_ver -1];
  88             update_digits = len_update_ver - 1;
  89         }
  90         strncpy(update_ver, jdk_update_string, update_digits);
  91         update_ver[update_digits] = '\0';
  92         jdk_update_version = (unsigned int) atoi(update_ver);


  93     }


  94 
  95     memset(info, 0, info_size);
  96     info->jdk_version = ((jdk_major_version & 0xFF) << 24) |
  97                         ((jdk_minor_version & 0xFF) << 16) |
  98                         ((jdk_micro_version & 0xFF) << 8)  |
  99                         (jdk_build_number & 0xFF);
 100     info->update_version = jdk_update_version;
 101     info->special_update_version = (unsigned int) jdk_special_version;
 102     info->thread_park_blocker = 1;
 103     // Advertise presence of sun.misc.PostVMInitHook:
 104     // future optimization: detect if this is enabled.
 105     info->post_vm_init_hook_enabled = 1;
 106     info->pending_list_uses_discovered_field = 1;
 107 }