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

Method extractFinished

launcher/InstanceImportTask.cpp:140–196  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 3

nextMethod · 0.80
resetMethod · 0.45
resultMethod · 0.45

Tested by

no test coverage detected