equal
deleted
inserted
replaced
231 _zip = zip; |
231 _zip = zip; |
232 char *copy = NEW_C_HEAP_ARRAY(char, strlen(zip_name)+1, mtClass); |
232 char *copy = NEW_C_HEAP_ARRAY(char, strlen(zip_name)+1, mtClass); |
233 strcpy(copy, zip_name); |
233 strcpy(copy, zip_name); |
234 _zip_name = copy; |
234 _zip_name = copy; |
235 _is_boot_append = is_boot_append; |
235 _is_boot_append = is_boot_append; |
|
236 _multi_versioned = _unknown; |
236 } |
237 } |
237 |
238 |
238 ClassPathZipEntry::~ClassPathZipEntry() { |
239 ClassPathZipEntry::~ClassPathZipEntry() { |
239 if (ZipClose != NULL) { |
240 if (ZipClose != NULL) { |
240 (*ZipClose)(_zip); |
241 (*ZipClose)(_zip); |
328 return buffer; |
329 return buffer; |
329 } |
330 } |
330 |
331 |
331 bool ClassPathZipEntry::is_multiple_versioned(TRAPS) { |
332 bool ClassPathZipEntry::is_multiple_versioned(TRAPS) { |
332 assert(DumpSharedSpaces, "called only at dump time"); |
333 assert(DumpSharedSpaces, "called only at dump time"); |
|
334 if (_multi_versioned != _unknown) { |
|
335 return (_multi_versioned == _yes) ? true : false; |
|
336 } |
333 jint size; |
337 jint size; |
334 char* buffer = (char*)open_entry("META-INF/MANIFEST.MF", &size, false, CHECK_false); |
338 char* buffer = (char*)open_entry("META-INF/MANIFEST.MF", &size, true, CHECK_false); |
335 if (buffer != NULL) { |
339 if (buffer != NULL) { |
336 if (strstr(buffer, "Multi-Release: true") != NULL) { |
340 char* p = buffer; |
|
341 for ( ; *p; ++p) *p = tolower(*p); |
|
342 if (strstr(buffer, "multi-release: true") != NULL) { |
|
343 _multi_versioned = _yes; |
337 return true; |
344 return true; |
338 } |
345 } |
339 } |
346 } |
|
347 _multi_versioned = _no; |
340 return false; |
348 return false; |
341 } |
349 } |
342 #endif // INCLUDE_CDS |
350 #endif // INCLUDE_CDS |
343 |
351 |
344 ClassFileStream* ClassPathZipEntry::open_stream(const char* name, TRAPS) { |
352 ClassFileStream* ClassPathZipEntry::open_stream(const char* name, TRAPS) { |