bool LoadVMOptions() { TCHAR optionsFileName[_MAX_PATH]; if (LoadString(hInst, IDS_VM_OPTIONS_PATH, optionsFileName, _MAX_PATH-1)) { TCHAR fullOptionsFileName[_MAX_PATH]; ExpandEnvironmentStrings(optionsFileName, fullOptionsFileName, _MAX_PATH-1); if (GetFileAttributes(fullOptionsFileName) == INVALID_FILE_ATTRIBUTES) { GetModuleFileName(NULL, fullOptionsFileName, _MAX_PATH-1); _tcscat_s(fullOptionsFileName, _T(".vmoptions")); } std::vector<std::string> vmOptionLines; if (LoadVMOptionsFile(fullOptionsFileName, vmOptionLines)) { if (!AddClassPathOptions(vmOptionLines)) return false; AddPredefinedVMOptions(vmOptionLines); vmOptionCount = vmOptionLines.size(); vmOptions = (JavaVMOption*) malloc(vmOptionCount * sizeof(JavaVMOption)); for(int i=0; i<vmOptionLines.size(); i++) { vmOptions[i].optionString = _strdup(vmOptionLines[i].c_str()); vmOptions[i].extraInfo = 0; } return true; } } MessageBox(NULL, _T("Cannot find VM options file"), _T("Error launching IntelliJ Platform"), MB_OK); return false; }
bool LoadVMOptions() { TCHAR buffer[_MAX_PATH]; TCHAR copy[_MAX_PATH]; std::vector<std::wstring> files; GetModuleFileName(NULL, buffer, _MAX_PATH); std::wstring module(buffer); if (LoadString(hInst, IDS_VM_OPTIONS_ENV_VAR, buffer, _MAX_PATH)) { if (GetEnvironmentVariableW(buffer, copy, _MAX_PATH)) { ExpandEnvironmentStrings(copy, buffer, _MAX_PATH); files.push_back(std::wstring(buffer)); } } if (LoadString(hInst, IDS_VM_OPTIONS_PATH, buffer, _MAX_PATH)) { ExpandEnvironmentStrings(buffer, copy, _MAX_PATH - 1); std::wstring selector(copy); files.push_back(selector + module.substr(module.find_last_of('\\')) + L".vmoptions"); } files.push_back(module + L".vmoptions"); std::wstring used; std::vector<std::string> vmOptionLines; if (!FindValidVMOptions(files, used, vmOptionLines)) { std::string error = LoadStdString(IDS_ERROR_LAUNCHING_APP); MessageBoxA(NULL, "Cannot find VM options file", error.c_str(), MB_OK); return false; } vmOptionLines.push_back(std::string("-Djb.vmOptionsFile=") + EncodeWideACP(used)); if (!AddClassPathOptions(vmOptionLines)) return false; AddPredefinedVMOptions(vmOptionLines); vmOptionCount = vmOptionLines.size(); vmOptions = (JavaVMOption*)malloc(vmOptionCount * sizeof(JavaVMOption)); for (int i = 0; i < vmOptionLines.size(); i++) { vmOptions[i].optionString = _strdup(vmOptionLines[i].c_str()); vmOptions[i].extraInfo = 0; } return true; }