int getJvmPath(char* basedir, char *jvmPath, int buffer_size) { jvmPath[0] = 0; if (!getFileInPackage(basedir, "/runtime/jre/lib/"JAVAARCH"/client/libjvm.so", jvmPath, MAX_PATH)) { if (!getFileInPackage(basedir, "/runtime/jre/lib/"JAVAARCH"/server/libjvm.so", jvmPath, MAX_PATH)) { return FALSE; } } return TRUE; }
bool getJvmPath(TCHAR* basedir, TCHAR *jvmPath, int buffer_size) { jvmPath[0] = 0; if (!getFileInPackage(basedir, _T("\\runtime\\jre\\bin\\client\\jvm.dll"), jvmPath, LAUNCHER_MAXPATH)) { if (!getFileInPackage(basedir, _T("\\runtime\\jre\\bin\\server\\jvm.dll"), jvmPath, LAUNCHER_MAXPATH)) { return false; } } return true; }
int getSystemJvmPath(char *jvmPath, int buffer_size) { char basedir[MAX_PATH]; if (!getSystemJRE(basedir, MAX_PATH)) { return FALSE; } jvmPath[0] = 0; if (!getFileInPackage(basedir, "/lib/"JAVAARCH"/client/libjvm.so", jvmPath, MAX_PATH)) { if (!getFileInPackage(basedir, "/lib/"JAVAARCH"/server/libjvm.so", jvmPath, MAX_PATH)) { return FALSE; } } return TRUE; }
bool getSystemJvmPath(TCHAR *jvmPath, int buffer_size) { TCHAR basedir[LAUNCHER_MAXPATH]; if (!getSystemJRE(basedir, LAUNCHER_MAXPATH)) { return false; } jvmPath[0] = 0; if (!getFileInPackage(basedir, _T("\\bin\\client\\jvm.dll"), jvmPath, LAUNCHER_MAXPATH)) { if (!getFileInPackage(basedir, _T("\\bin\\server\\jvm.dll"), jvmPath, LAUNCHER_MAXPATH)) { return false; } } return true; }
//REWRITE: this is inefficient. We better read and parse file once int getConfigValue(char* basedir, char* lookupKey, char* outValue, int buf_size) { char config[MAX_PATH] = {0}; char buffer[MAX_PATH*2]; char *value; FILE *fp; char resolved_file[MAX_PATH]; if(boinc_resolve_filename(CONFIG_FILENAME, resolved_file+1, MAX_PATH-1)){ printf("Unable to resolve file (%s) via boinc_resolve_filename!\n", CONFIG_FILE); return FALSE; } resolved_file[0] = '/'; #ifdef DEBUG printf("Resolved %s to %s\n", CONFIG_FILENAME, resolved_file); #endif if (!getFileInPackage(basedir, resolved_file, config, MAX_PATH)) { printf("Configuration file (%s) is not found!\n", config); return FALSE; } #ifdef DEBUG printf("FullFilePath: %s\n", config); #endif //scan file for the key fp = fopen(config, "r"); if (fp == NULL) { return FALSE; } while (fgets(buffer, MAX_PATH*2, fp)) { value = strchr(buffer, '='); if (value != NULL) { //end key on the '=', value will point to the value string *value = 0; value++; if (!strcmp(buffer, lookupKey)) { //found it fclose(fp); strip_endofline(value); strncpy(outValue, value, buf_size); return TRUE; } } } fclose(fp); return FALSE; }
//Constructs full path to the main jar file //return false if not found int getMainJar(char* basedir, char* jar, int buffer_size) { char jarname[MAX_PATH] = {0}; char jar_relative[MAX_PATH] = {0}; char jar_full[MAX_PATH] = {0}; if (!getConfigValue(basedir, CONFIG_MAINJAR_KEY, jarname, MAX_PATH)) { return FALSE; } strcat(jar_relative, MAINJAR_FOLDER); strcat(jar_relative, jarname); int ret = getFileInPackage(basedir, jar_relative, jar_full, MAX_PATH); strcat(jar, jar_full); return ret; }
//Constructs full path to the main jar file //return false if not found bool getMainJar(TCHAR* basedir, TCHAR* jar, int buffer_size) { TCHAR jarname[LAUNCHER_MAXPATH] = {0}; TCHAR jar_relative[LAUNCHER_MAXPATH] = {0}; TCHAR jar_full[LAUNCHER_MAXPATH] = {0}; if (!getConfigValue(basedir, CONFIG_MAINJAR_KEY, jarname, LAUNCHER_MAXPATH)) { return false; } _tcscat_s(jar_relative, LAUNCHER_MAXPATH, MAINJAR_FOLDER); _tcscat_s(jar_relative, LAUNCHER_MAXPATH - _tcslen(jar_relative), jarname); bool ret = getFileInPackage(basedir, jar_relative, jar_full, LAUNCHER_MAXPATH); _tcscat_s(jar, LAUNCHER_MAXPATH - _tcslen(jar), jar_full); return ret; }
//Constructs full path to the main jar file //return false if not found int getMainJar(char* basedir, char* jar, int buffer_size) { char jarname[MAX_PATH] = {0}; char jar_relative[MAX_PATH] = {0}; char jar_full[MAX_PATH] = {0}; if (!getConfigValue(basedir, CONFIG_MAINJAR_KEY, jarname, MAX_PATH)) { return FALSE; } strcat(jar_relative, MAINJAR_FOLDER); //strcat(jar_relative, jarname); if(boinc_resolve_filename(jarname, (jar_relative+strlen(MAINJAR_FOLDER)), MAX_PATH-strlen(MAINJAR_FOLDER))) { printf("Unable to resolve file (%s) via boinc_resolve_filename!\n", jarname); return FALSE; } int ret = getFileInPackage(basedir, jar_relative, jar_full, MAX_PATH); strcat(jar, jar_full); return ret; }
//REWRITE: this is inefficient. We better read and parse file once bool getConfigValue(TCHAR* basedir, TCHAR* lookupKey, TCHAR* outValue, int buf_size) { TCHAR config[LAUNCHER_MAXPATH] = {0}; TCHAR buffer[LAUNCHER_MAXPATH*2]; TCHAR *value; FILE *fp; *outValue = 0; if (!getFileInPackage(basedir, CONFIG_FILE, config, LAUNCHER_MAXPATH)) { showError(config, _T("Configuration file is not found!")); return false; } //scan file for the key errno_t err = _tfopen_s(&fp, config, _T("r")); if (err) { return false; } while (_fgetts(buffer, LAUNCHER_MAXPATH*2, fp)) { value = _tcschr(buffer, '='); if (value != NULL) { //end key on the '=', value will point to the value string *value = 0; value++; if (!_tcscmp(buffer, lookupKey)) { //found it fclose(fp); strip_endofline(value); _tcscpy_s(outValue, buf_size, value); return true; } } } fclose(fp); return false; }
//REWRITE: this is inefficient. We better read and parse file once int getConfigValue(char* basedir, char* lookupKey, char* outValue, int buf_size) { char config[MAX_PATH] = {0}; char buffer[MAX_PATH*2]; char *value; FILE *fp; if (!getFileInPackage(basedir, CONFIG_FILE, config, MAX_PATH)) { printf("Configuration file (%s) is not found!\n", config); return FALSE; } //scan file for the key fp = fopen(config, "r"); if (fp == NULL) { return FALSE; } while (fgets(buffer, MAX_PATH*2, fp)) { value = strchr(buffer, '='); if (value != NULL) { //end key on the '=', value will point to the value string *value = 0; value++; if (!strcmp(buffer, lookupKey)) { //found it fclose(fp); strip_endofline(value); strncpy(outValue, value, buf_size); return TRUE; } } } fclose(fp); return FALSE; }
bool getAppFolder(TCHAR* basedir, TCHAR* appFolder, int buffer_size) { return getFileInPackage(basedir, MAINJAR_FOLDER, appFolder, LAUNCHER_MAXPATH); }