MCPcopy Create free account
hub / github.com/PolyMC/PolyMC / extractFinished

Method extractFinished

launcher/modplatform/technic/SingleZipPackInstallTask.cpp:92–137  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

90}
91
92void Technic::SingleZipPackInstallTask::extractFinished()
93{
94 m_packZip.reset();
95 if (!m_extractFuture.result())
96 {
97 emitFailed(tr("Failed to extract modpack"));
98 return;
99 }
100 QDir extractDir(m_stagingPath);
101
102 qDebug() << "Fixing permissions for extracted pack files...";
103 QDirIterator it(extractDir, QDirIterator::Subdirectories);
104 while (it.hasNext())
105 {
106 auto filepath = it.next();
107 QFileInfo file(filepath);
108 auto permissions = QFile::permissions(filepath);
109 auto origPermissions = permissions;
110 if (file.isDir())
111 {
112 // Folder +rwx for current user
113 permissions |= QFileDevice::Permission::ReadUser | QFileDevice::Permission::WriteUser | QFileDevice::Permission::ExeUser;
114 }
115 else
116 {
117 // File +rw for current user
118 permissions |= QFileDevice::Permission::ReadUser | QFileDevice::Permission::WriteUser;
119 }
120 if (origPermissions != permissions)
121 {
122 if (!QFile::setPermissions(filepath, permissions))
123 {
124 logWarning(tr("Could not fix permissions for %1").arg(filepath));
125 }
126 else
127 {
128 qDebug() << "Fixed" << filepath;
129 }
130 }
131 }
132
133 shared_qobject_ptr<Technic::TechnicPackProcessor> packProcessor = new Technic::TechnicPackProcessor();
134 connect(packProcessor.get(), &Technic::TechnicPackProcessor::succeeded, this, &Technic::SingleZipPackInstallTask::emitSucceeded);
135 connect(packProcessor.get(), &Technic::TechnicPackProcessor::failed, this, &Technic::SingleZipPackInstallTask::emitFailed);
136 packProcessor->run(m_globalSettings, name(), m_instIcon, m_stagingPath, m_minecraftVersion);
137}
138
139void Technic::SingleZipPackInstallTask::extractAborted()
140{

Callers

nothing calls this directly

Calls 5

nextMethod · 0.80
resetMethod · 0.45
resultMethod · 0.45
getMethod · 0.45
runMethod · 0.45

Tested by

no test coverage detected