MCPcopy Create free account
hub / github.com/FreesmTeam/FreesmLauncher / mergeZipFiles

Function mergeZipFiles

launcher/MMCZip.cpp:54–95  ·  view source on GitHub ↗

ours

Source from the content-addressed store, hash-verified

52namespace MMCZip {
53// ours
54bool mergeZipFiles(QuaZip* into, QFileInfo from, QSet<QString>& contained, const FilterFunction& filter)
55{
56 QuaZip modZip(from.filePath());
57 modZip.open(QuaZip::mdUnzip);
58
59 QuaZipFile fileInsideMod(&modZip);
60 QuaZipFile zipOutFile(into);
61 for (bool more = modZip.goToFirstFile(); more; more = modZip.goToNextFile()) {
62 QString filename = modZip.getCurrentFileName();
63 if (filter && !filter(filename)) {
64 qDebug() << "Skipping file " << filename << " from " << from.fileName() << " - filtered";
65 continue;
66 }
67 if (contained.contains(filename)) {
68 qDebug() << "Skipping already contained file " << filename << " from " << from.fileName();
69 continue;
70 }
71 contained.insert(filename);
72
73 if (!fileInsideMod.open(QIODevice::ReadOnly)) {
74 qCritical() << "Failed to open " << filename << " from " << from.fileName();
75 return false;
76 }
77
78 QuaZipNewInfo info_out(fileInsideMod.getActualFileName());
79
80 if (!zipOutFile.open(QIODevice::WriteOnly, info_out)) {
81 qCritical() << "Failed to open " << filename << " in the jar";
82 fileInsideMod.close();
83 return false;
84 }
85 if (!JlCompress::copyData(fileInsideMod, zipOutFile)) {
86 zipOutFile.close();
87 fileInsideMod.close();
88 qCritical() << "Failed to copy data of " << filename << " into the jar";
89 return false;
90 }
91 zipOutFile.close();
92 fileInsideMod.close();
93 }
94 return true;
95}
96
97bool compressDirFiles(QuaZip* zip, QString dir, QFileInfoList files, bool followSymlinks)
98{

Callers 1

createModdedJarFunction · 0.85

Calls 5

filePathMethod · 0.80
openMethod · 0.80
insertMethod · 0.80
closeMethod · 0.80
containsMethod · 0.45

Tested by

no test coverage detected