DWORD isJavaCompatible(JavaProperties *currentJava, JavaCompatible ** compatibleJava, DWORD number) { JavaVersion * current = currentJava->version; DWORD i = 0 ; for(i=0;i<number;i++) { DWORD check = 1; check = (compareJavaVersion(current, compatibleJava[i]->minVersion) >= 0 && compareJavaVersion(current, compatibleJava[i]->maxVersion) <= 0) ? check : 0; if (check) { if(compatibleJava[i]->vendor!=NULL) { check = (searchA(currentJava->vendor, compatibleJava[i]->vendor) != NULL) ? check : 0; } if (compatibleJava[i]->osName!=NULL) { check = (searchA(currentJava->osName, compatibleJava[i]->osName)!=NULL) ? check : 0; } if (compatibleJava[i]->osArch!=NULL) { check = (searchA(currentJava->osArch, compatibleJava[i]->osArch)!=NULL) ? check : 0; } if(check) { return 1; } } } return 0; }
void search_backward(void) { char *p, *string, tmp[BLOCK_SEARCH_SIZE], tmpstr[BLOCK_SEARCH_SIZE]; int quit, sizea, sizeb; INT blockstart; if (!searchA(&string, &sizea, tmp, sizeof(tmp))) return; quit = -1; blockstart = base + cursor - sizea + 1; do { blockstart -= BLOCK_SEARCH_SIZE - sizea + 1; sizeb = BLOCK_SEARCH_SIZE; if (blockstart < 0) { sizeb -= -blockstart; blockstart = 0; } if (sizeb < sizea) quit = -3; else { if (LSEEK_(fd, blockstart) == -1) { quit = -3; break; } if (sizeb != read(fd, tmp, sizeb)) quit = -3; else if (getch() != ERR) quit = -2; else if ((p = mymemrmem(tmp, sizeb, string, sizea))) quit = p - tmp; } sprintf(tmpstr,"searching... 0x%08llX", (long long) blockstart); nodelay(stdscr, TRUE); displayTwoLineMessage(tmpstr, "(press any key to cancel)"); } while (quit == -1); searchB(quit + (quit >= 0 ? blockstart : 0), string); }
DWORD getJavaPropertiesFromOutput(LauncherProperties * props, char *str, JavaProperties ** javaProps) { DWORD separators = getLineSeparatorNumber(str); DWORD result = ERROR_INPUTOUPUT; * javaProps = NULL; if(separators == TEST_JAVA_PARAMETERS) { char * start; char * end; char * javaVersion; char * javaVmVersion; char * javaVendor; char * osName; char * osArch; char * string; JavaVersion * vers; start = str; end = searchA(start, "\n"); javaVersion = appendStringN(NULL, 0, start, getLengthA(start) - getLengthA(end)-1); writeMessageA(props, OUTPUT_LEVEL_DEBUG, 0, " java.version = ", 0); writeMessageA(props, OUTPUT_LEVEL_DEBUG, 0, javaVersion, 1); start = end + 1; end = searchA(start, "\n"); javaVmVersion = appendStringN(NULL, 0, start, getLengthA(start) - getLengthA(end)-1); writeMessageA(props, OUTPUT_LEVEL_DEBUG, 0, " java.vm.version = ", 0); writeMessageA(props, OUTPUT_LEVEL_DEBUG, 0, javaVmVersion, 1); start = end + 1; end = searchA(start, "\n"); javaVendor = appendStringN(NULL, 0, start, getLengthA(start) - getLengthA(end)-1); writeMessageA(props, OUTPUT_LEVEL_DEBUG, 0, " java.vendor = ", 0); writeMessageA(props, OUTPUT_LEVEL_DEBUG, 0, javaVendor, 1); start = end + 1; end = searchA(start, "\n"); osName = appendStringN(NULL, 0, start, getLengthA(start) - getLengthA(end)-1); writeMessageA(props, OUTPUT_LEVEL_DEBUG, 0, " os.name = ", 0); writeMessageA(props, OUTPUT_LEVEL_DEBUG, 0, osName, 1); start = end + 1; end = searchA(start, "\n"); osArch = appendStringN(NULL, 0, start, getLengthA(start) - getLengthA(end)-1); writeMessageA(props, OUTPUT_LEVEL_DEBUG, 0, " os.arch = ", 0); writeMessageA(props, OUTPUT_LEVEL_DEBUG, 0, osArch, 2); string = javaVersion; if(javaVmVersion!=NULL) { string = searchA(javaVmVersion, javaVersion); if(string==NULL) { string = javaVersion; } } writeMessageA(props, OUTPUT_LEVEL_DEBUG, 0, "... getting java version from string : ", 0); writeMessageA(props, OUTPUT_LEVEL_DEBUG, 0, string, 1); vers = getJavaVersionFromString(string, & result); if(javaProps != NULL) { writeMessageA(props, OUTPUT_LEVEL_DEBUG, 0, "... some java there", 1); * javaProps = (JavaProperties *) LocalAlloc(LPTR, sizeof(JavaProperties)); (*javaProps)->version = vers; (*javaProps)->vendor = javaVendor; (*javaProps)->osName = osName; (*javaProps)->osArch = osArch; (*javaProps)->javaHome = NULL; (*javaProps)->javaExe = NULL; } else { writeMessageA(props, OUTPUT_LEVEL_DEBUG, 0, "... no java there", 1); FREE(javaVendor); FREE(osName); FREE(osArch); } FREE(javaVmVersion); FREE(javaVersion); } return result; }