MCPcopy Create free account
hub / github.com/MultiMC/Launcher / extractFinished

Method extractFinished

launcher/InstanceImportTask.cpp:143–199  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

141}
142
143void InstanceImportTask::extractFinished()
144{
145 m_packZip.reset();
146 if (!m_extractFuture.result())
147 {
148 emitFailed(tr("Failed to extract modpack"));
149 return;
150 }
151 QDir extractDir(m_stagingPath);
152
153 qDebug() << "Fixing permissions for extracted pack files...";
154 QDirIterator it(extractDir, QDirIterator::Subdirectories);
155 while (it.hasNext())
156 {
157 auto filepath = it.next();
158 QFileInfo file(filepath);
159 auto permissions = QFile::permissions(filepath);
160 auto origPermissions = permissions;
161 if(file.isDir())
162 {
163 // Folder +rwx for current user
164 permissions |= QFileDevice::Permission::ReadUser | QFileDevice::Permission::WriteUser | QFileDevice::Permission::ExeUser;
165 }
166 else
167 {
168 // File +rw for current user
169 permissions |= QFileDevice::Permission::ReadUser | QFileDevice::Permission::WriteUser;
170 }
171 if(origPermissions != permissions)
172 {
173 if(!QFile::setPermissions(filepath, permissions))
174 {
175 logWarning(tr("Could not fix permissions for %1").arg(filepath));
176 }
177 else
178 {
179 qDebug() << "Fixed" << filepath;
180 }
181 }
182 }
183
184 switch(m_modpackType)
185 {
186 case ModpackType::MultiMC:
187 processMultiMC();
188 return;
189 case ModpackType::Technic:
190 processTechnic();
191 return;
192 case ModpackType::Modrinth:
193 processModrinth();
194 return;
195 case ModpackType::Unknown:
196 emitFailed(tr("Archive does not contain a recognized modpack type."));
197 return;
198 }
199}
200

Callers

nothing calls this directly

Calls 3

nextMethod · 0.80
resetMethod · 0.45
resultMethod · 0.45

Tested by

no test coverage detected