NOISSUE tabs -> spaces
This commit is contained in:
.arcconfig.clang-format.gitmodulesCMakeLists.txtCOPYING.md
api
gui
logic
BaseInstaller.cppBaseInstaller.hBaseInstance.cppBaseInstance.hBaseInstanceProvider.hBaseVersion.hBaseVersionList.cppBaseVersionList.hCMakeLists.txtCommandline.cppCommandline.hDefaultVariable.hEnv.cppEnv.hException.hFileSystem.cppFileSystem.hFileSystem_test.cppFilter.cppFilter.hFolderInstanceProvider.cppFolderInstanceProvider.hGZip.cppGZip.hGZip_test.cppInstanceCopyTask.cppInstanceCopyTask.hInstanceCreationTask.cppInstanceCreationTask.hInstanceImportTask.cppInstanceImportTask.hInstanceList.cppInstanceList.hInstanceTask.hJson.cppJson.hLoggedProcess.cppLoggedProcess.hMMCStrings.cppMMCStrings.hMMCZip.cppMMCZip.hMessageLevel.cppMessageLevel.hNullInstance.hProblemProvider.hQObjectPtr.hRWStorage.hRecursiveFileSystemWatcher.cppRecursiveFileSystemWatcher.hSeparatorPrefixTree.hUsable.hVersion.cppVersion.hVersion_test.cpp
icons
java
JavaChecker.cppJavaChecker.hJavaCheckerJob.cppJavaCheckerJob.hJavaInstall.cppJavaInstall.hJavaInstallList.cppJavaInstallList.hJavaUtils.cppJavaUtils.hJavaVersion.cppJavaVersion.hJavaVersion_test.cpp
launch
launch
meta
BaseEntity.cppBaseEntity.hIndex.cppIndex.hIndex_test.cppJsonFormat.cppJsonFormat.hVersion.cppVersion.hVersionList.cppVersionList.h
minecraft
AssetsUtils.cppAssetsUtils.hComponent.cppComponent.hComponentList.cppComponentList.hComponentList_p.hComponentUpdateTask.cppComponentUpdateTask.hComponentUpdateTask_p.hGradleSpecifier.hGradleSpecifier_test.cppLaunchProfile.cppLaunchProfile.hLibrary.cppLibrary.hLibrary_test.cppMinecraftInstance.cppMinecraftInstance.hMinecraftLoadAndCheck.cppMinecraftLoadAndCheck.hMinecraftUpdate.cppMinecraftUpdate.hMod.cppMod.hModsModel.cppModsModel.hMojangDownloadInfo.hMojangVersionFormat.cppMojangVersionFormat.hMojangVersionFormat_test.cppOneSixVersionFormat.cppOneSixVersionFormat.hOpSys.cppOpSys.hParseUtils.cppParseUtils_test.cppProfileUtils.cppRule.cppRule.hSimpleModList.cppSimpleModList.hSimpleModList_test.cppSkinUpload.cppSkinUpload.hVersionFile.cppVersionFile.hVersionFilterData.cppVersionFilterData.hWorld.cppWorld.hWorldList.cppWorldList.h
auth
AuthSession.cppAuthSession.hMojangAccount.cppMojangAccount.hMojangAccountList.cppMojangAccountList.hYggdrasilTask.cppYggdrasilTask.h
flows
forge
launch
ClaimAccount.cppClaimAccount.hCreateServerResourcePacksFolder.cppCreateServerResourcePacksFolder.hDirectJavaLaunch.cppDirectJavaLaunch.hExtractNatives.cppExtractNatives.hLauncherPartLaunch.cppLauncherPartLaunch.hModMinecraftJar.cppModMinecraftJar.hPrintInstanceInfo.h
legacy
LegacyInstance.cppLegacyInstance.hLegacyModList.cppLegacyModList.hLegacyUpgradeTask.cppLegacyUpgradeTask.h
testdata
update
modplatform
flame
ftb
net
ByteArraySink.hChecksumValidator.hDownload.cppDownload.hFileSink.cppFileSink.hHttpMetaCache.cppHttpMetaCache.hMetaCacheSink.cppMetaCacheSink.hMode.hNetAction.hNetJob.cppNetJob.hPasteUpload.cppPasteUpload.hSink.hURLConstants.cppValidator.h
news
notifications
pathmatcher
screenshots
settings
INIFile.cppINIFile.hINIFile_test.cppINISettingsObject.cppINISettingsObject.hOverrideSetting.cppOverrideSetting.hPassthroughSetting.cppPassthroughSetting.hSetting.cppSetting.hSettingsObject.cppSettingsObject.h
status
tasks
tools
BaseExternalTool.cppBaseExternalTool.hBaseProfiler.cppBaseProfiler.hJProfiler.cppJProfiler.hJVisualVM.cppJVisualVM.hMCEditTool.cppMCEditTool.h
translations
updater
application
BuildConfig.cpp.inBuildConfig.hColorCache.cppColorCache.hColumnResizer.cppColumnResizer.hGuiUtil.cppHoeDown.hInstancePageProvider.hInstanceProxyModel.cppInstanceProxyModel.hInstanceWindow.cppInstanceWindow.hJavaCommon.cppJavaCommon.hKonamiCode.cppKonamiCode.hLaunchController.cppLaunchController.hMainWindow.cppMainWindow.hMultiMC.cppMultiMC.hSettingsUI.hUpdateController.cppUpdateController.hVersionProxyModel.cppVersionProxyModel.h
dialogs
AboutDialog.cppAboutDialog.hCopyInstanceDialog.cppCopyInstanceDialog.hCustomMessageBox.cppCustomMessageBox.hEditAccountDialog.cppEditAccountDialog.hExportInstanceDialog.cppExportInstanceDialog.hIconPickerDialog.cppIconPickerDialog.hLoginDialog.cppLoginDialog.hModEditDialogCommon.cppNewComponentDialog.cppNewComponentDialog.hNewInstanceDialog.cppNewInstanceDialog.hNotificationDialog.cppNotificationDialog.hProfileSelectDialog.cppProfileSelectDialog.hProgressDialog.cppProgressDialog.hSkinUploadDialog.cppSkinUploadDialog.hUpdateDialog.cppUpdateDialog.hVersionSelectDialog.cppVersionSelectDialog.h
groupview
GroupView.cppGroupView.hGroupedProxyModel.cppGroupedProxyModel.hInstanceDelegate.cppInstanceDelegate.hVisualGroup.cppVisualGroup.h
install_prereqs.cmake.inmain.cpppackage
linux
pagedialog
pages
BasePage.hBasePageContainer.hBasePageProvider.h
global
AccountListPage.cppAccountListPage.hCustomCommandsPage.cppCustomCommandsPage.hExternalToolsPage.cppExternalToolsPage.hJavaPage.cppJavaPage.hMinecraftPage.cppMinecraftPage.hMultiMCPage.cppMultiMCPage.hPackagesPage.cppPackagesPage.hPasteEEPage.cppPasteEEPage.hProxyPage.cppProxyPage.h
instance
InstanceSettingsPage.cppInstanceSettingsPage.hLegacyUpgradePage.cppLegacyUpgradePage.hLogPage.cppLogPage.hModFolderPage.cppModFolderPage.hNewModFolderPage.cppNewModFolderPage.hNotesPage.cppNotesPage.hOtherLogsPage.cppOtherLogsPage.hResourcePackPage.hScreenshotsPage.cppScreenshotsPage.hServersPage.cppServersPage.hTexturePackPage.hVersionPage.cppVersionPage.hWorldListPage.cppWorldListPage.h
modplatform
resources
OSX
assets
documents
flat
iOS
multimc
pe_blue
pe_colored
pe_dark
pe_light
setupwizard
AnalyticsWizardPage.cppAnalyticsWizardPage.hBaseWizardPage.hJavaWizardPage.cppJavaWizardPage.hLanguageWizardPage.cppLanguageWizardPage.hSetupWizard.cppSetupWizard.h
themes
BrightTheme.cppBrightTheme.hCustomTheme.cppCustomTheme.hDarkTheme.cppDarkTheme.hFusionTheme.cppFusionTheme.hITheme.cppITheme.hSystemTheme.cppSystemTheme.h
widgets
Common.cppCommon.hCustomCommands.cppCustomCommands.hFocusLineEdit.cppFocusLineEdit.hIconLabel.cppIconLabel.hJavaSettingsWidget.cppJavaSettingsWidget.hLabeledToolButton.cppLabeledToolButton.hLineSeparator.cppLineSeparator.hLogView.cppLogView.hMCModInfoFrame.cppMCModInfoFrame.hModListView.cppModListView.hPageContainer.cppPageContainer.hPageContainer_p.hProgressWidget.cppProgressWidget.hServerStatus.cppServerStatus.hVersionListView.cppVersionListView.hVersionSelectWidget.cppVersionSelectWidget.h
libraries
LocalPeer
classparser
ganalytics
hoedown
include
src
iconfix
javacheck
launcher
pack200
rainbow
systeminfo
xz-embedded
travis
@ -16,149 +16,149 @@ JavaChecker::JavaChecker(QObject *parent) : QObject(parent)
|
||||
|
||||
void JavaChecker::performCheck()
|
||||
{
|
||||
QString checkerJar = FS::PathCombine(ENV.getJarsPath(), "JavaCheck.jar");
|
||||
QString checkerJar = FS::PathCombine(ENV.getJarsPath(), "JavaCheck.jar");
|
||||
|
||||
QStringList args;
|
||||
QStringList args;
|
||||
|
||||
process.reset(new QProcess());
|
||||
if(m_args.size())
|
||||
{
|
||||
auto extraArgs = Commandline::splitArgs(m_args);
|
||||
args.append(extraArgs);
|
||||
}
|
||||
if(m_minMem != 0)
|
||||
{
|
||||
args << QString("-Xms%1m").arg(m_minMem);
|
||||
}
|
||||
if(m_maxMem != 0)
|
||||
{
|
||||
args << QString("-Xmx%1m").arg(m_maxMem);
|
||||
}
|
||||
if(m_permGen != 64)
|
||||
{
|
||||
args << QString("-XX:PermSize=%1m").arg(m_permGen);
|
||||
}
|
||||
process.reset(new QProcess());
|
||||
if(m_args.size())
|
||||
{
|
||||
auto extraArgs = Commandline::splitArgs(m_args);
|
||||
args.append(extraArgs);
|
||||
}
|
||||
if(m_minMem != 0)
|
||||
{
|
||||
args << QString("-Xms%1m").arg(m_minMem);
|
||||
}
|
||||
if(m_maxMem != 0)
|
||||
{
|
||||
args << QString("-Xmx%1m").arg(m_maxMem);
|
||||
}
|
||||
if(m_permGen != 64)
|
||||
{
|
||||
args << QString("-XX:PermSize=%1m").arg(m_permGen);
|
||||
}
|
||||
|
||||
args.append({"-jar", checkerJar});
|
||||
process->setArguments(args);
|
||||
process->setProgram(m_path);
|
||||
process->setProcessChannelMode(QProcess::SeparateChannels);
|
||||
process->setProcessEnvironment(CleanEnviroment());
|
||||
qDebug() << "Running java checker: " + m_path + args.join(" ");;
|
||||
args.append({"-jar", checkerJar});
|
||||
process->setArguments(args);
|
||||
process->setProgram(m_path);
|
||||
process->setProcessChannelMode(QProcess::SeparateChannels);
|
||||
process->setProcessEnvironment(CleanEnviroment());
|
||||
qDebug() << "Running java checker: " + m_path + args.join(" ");;
|
||||
|
||||
connect(process.get(), SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(finished(int, QProcess::ExitStatus)));
|
||||
connect(process.get(), SIGNAL(error(QProcess::ProcessError)), this, SLOT(error(QProcess::ProcessError)));
|
||||
connect(process.get(), SIGNAL(readyReadStandardOutput()), this, SLOT(stdoutReady()));
|
||||
connect(process.get(), SIGNAL(readyReadStandardError()), this, SLOT(stderrReady()));
|
||||
connect(&killTimer, SIGNAL(timeout()), SLOT(timeout()));
|
||||
killTimer.setSingleShot(true);
|
||||
killTimer.start(15000);
|
||||
process->start();
|
||||
connect(process.get(), SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(finished(int, QProcess::ExitStatus)));
|
||||
connect(process.get(), SIGNAL(error(QProcess::ProcessError)), this, SLOT(error(QProcess::ProcessError)));
|
||||
connect(process.get(), SIGNAL(readyReadStandardOutput()), this, SLOT(stdoutReady()));
|
||||
connect(process.get(), SIGNAL(readyReadStandardError()), this, SLOT(stderrReady()));
|
||||
connect(&killTimer, SIGNAL(timeout()), SLOT(timeout()));
|
||||
killTimer.setSingleShot(true);
|
||||
killTimer.start(15000);
|
||||
process->start();
|
||||
}
|
||||
|
||||
void JavaChecker::stdoutReady()
|
||||
{
|
||||
QByteArray data = process->readAllStandardOutput();
|
||||
QString added = QString::fromLocal8Bit(data);
|
||||
added.remove('\r');
|
||||
m_stdout += added;
|
||||
QByteArray data = process->readAllStandardOutput();
|
||||
QString added = QString::fromLocal8Bit(data);
|
||||
added.remove('\r');
|
||||
m_stdout += added;
|
||||
}
|
||||
|
||||
void JavaChecker::stderrReady()
|
||||
{
|
||||
QByteArray data = process->readAllStandardError();
|
||||
QString added = QString::fromLocal8Bit(data);
|
||||
added.remove('\r');
|
||||
m_stderr += added;
|
||||
QByteArray data = process->readAllStandardError();
|
||||
QString added = QString::fromLocal8Bit(data);
|
||||
added.remove('\r');
|
||||
m_stderr += added;
|
||||
}
|
||||
|
||||
void JavaChecker::finished(int exitcode, QProcess::ExitStatus status)
|
||||
{
|
||||
killTimer.stop();
|
||||
QProcessPtr _process;
|
||||
_process.swap(process);
|
||||
killTimer.stop();
|
||||
QProcessPtr _process;
|
||||
_process.swap(process);
|
||||
|
||||
JavaCheckResult result;
|
||||
{
|
||||
result.path = m_path;
|
||||
result.id = m_id;
|
||||
}
|
||||
result.errorLog = m_stderr;
|
||||
result.outLog = m_stdout;
|
||||
qDebug() << "STDOUT" << m_stdout;
|
||||
qWarning() << "STDERR" << m_stderr;
|
||||
qDebug() << "Java checker finished with status " << status << " exit code " << exitcode;
|
||||
JavaCheckResult result;
|
||||
{
|
||||
result.path = m_path;
|
||||
result.id = m_id;
|
||||
}
|
||||
result.errorLog = m_stderr;
|
||||
result.outLog = m_stdout;
|
||||
qDebug() << "STDOUT" << m_stdout;
|
||||
qWarning() << "STDERR" << m_stderr;
|
||||
qDebug() << "Java checker finished with status " << status << " exit code " << exitcode;
|
||||
|
||||
if (status == QProcess::CrashExit || exitcode == 1)
|
||||
{
|
||||
result.validity = JavaCheckResult::Validity::Errored;
|
||||
emit checkFinished(result);
|
||||
return;
|
||||
}
|
||||
if (status == QProcess::CrashExit || exitcode == 1)
|
||||
{
|
||||
result.validity = JavaCheckResult::Validity::Errored;
|
||||
emit checkFinished(result);
|
||||
return;
|
||||
}
|
||||
|
||||
bool success = true;
|
||||
bool success = true;
|
||||
|
||||
QMap<QString, QString> results;
|
||||
QStringList lines = m_stdout.split("\n", QString::SkipEmptyParts);
|
||||
for(QString line : lines)
|
||||
{
|
||||
line = line.trimmed();
|
||||
QMap<QString, QString> results;
|
||||
QStringList lines = m_stdout.split("\n", QString::SkipEmptyParts);
|
||||
for(QString line : lines)
|
||||
{
|
||||
line = line.trimmed();
|
||||
|
||||
auto parts = line.split('=', QString::SkipEmptyParts);
|
||||
if(parts.size() != 2 || parts[0].isEmpty() || parts[1].isEmpty())
|
||||
{
|
||||
success = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
results.insert(parts[0], parts[1]);
|
||||
}
|
||||
}
|
||||
auto parts = line.split('=', QString::SkipEmptyParts);
|
||||
if(parts.size() != 2 || parts[0].isEmpty() || parts[1].isEmpty())
|
||||
{
|
||||
success = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
results.insert(parts[0], parts[1]);
|
||||
}
|
||||
}
|
||||
|
||||
if(!results.contains("os.arch") || !results.contains("java.version") || !success)
|
||||
{
|
||||
result.validity = JavaCheckResult::Validity::ReturnedInvalidData;
|
||||
emit checkFinished(result);
|
||||
return;
|
||||
}
|
||||
if(!results.contains("os.arch") || !results.contains("java.version") || !success)
|
||||
{
|
||||
result.validity = JavaCheckResult::Validity::ReturnedInvalidData;
|
||||
emit checkFinished(result);
|
||||
return;
|
||||
}
|
||||
|
||||
auto os_arch = results["os.arch"];
|
||||
auto java_version = results["java.version"];
|
||||
bool is_64 = os_arch == "x86_64" || os_arch == "amd64";
|
||||
auto os_arch = results["os.arch"];
|
||||
auto java_version = results["java.version"];
|
||||
bool is_64 = os_arch == "x86_64" || os_arch == "amd64";
|
||||
|
||||
|
||||
result.validity = JavaCheckResult::Validity::Valid;
|
||||
result.is_64bit = is_64;
|
||||
result.mojangPlatform = is_64 ? "64" : "32";
|
||||
result.realPlatform = os_arch;
|
||||
result.javaVersion = java_version;
|
||||
qDebug() << "Java checker succeeded.";
|
||||
emit checkFinished(result);
|
||||
result.validity = JavaCheckResult::Validity::Valid;
|
||||
result.is_64bit = is_64;
|
||||
result.mojangPlatform = is_64 ? "64" : "32";
|
||||
result.realPlatform = os_arch;
|
||||
result.javaVersion = java_version;
|
||||
qDebug() << "Java checker succeeded.";
|
||||
emit checkFinished(result);
|
||||
}
|
||||
|
||||
void JavaChecker::error(QProcess::ProcessError err)
|
||||
{
|
||||
if(err == QProcess::FailedToStart)
|
||||
{
|
||||
killTimer.stop();
|
||||
qDebug() << "Java checker has failed to start.";
|
||||
JavaCheckResult result;
|
||||
{
|
||||
result.path = m_path;
|
||||
result.id = m_id;
|
||||
}
|
||||
if(err == QProcess::FailedToStart)
|
||||
{
|
||||
killTimer.stop();
|
||||
qDebug() << "Java checker has failed to start.";
|
||||
JavaCheckResult result;
|
||||
{
|
||||
result.path = m_path;
|
||||
result.id = m_id;
|
||||
}
|
||||
|
||||
emit checkFinished(result);
|
||||
return;
|
||||
}
|
||||
emit checkFinished(result);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void JavaChecker::timeout()
|
||||
{
|
||||
// NO MERCY. NO ABUSE.
|
||||
if(process)
|
||||
{
|
||||
qDebug() << "Java checker has been killed by timeout.";
|
||||
process->kill();
|
||||
}
|
||||
// NO MERCY. NO ABUSE.
|
||||
if(process)
|
||||
{
|
||||
qDebug() << "Java checker has been killed by timeout.";
|
||||
process->kill();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user