Skip to content

Commit

Permalink
fix: Optimization of file list encryption method for decompression
Browse files Browse the repository at this point in the history
Optimization of file list encryption method for decompression
Task: https://pms.uniontech.com/task-view-326497.html
Log: Optimization of file list encryption method for decompression
  • Loading branch information
myk1343 authored and deepin-bot[bot] committed Mar 5, 2024
1 parent 4f8a88a commit ad4330e
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 15 deletions.
47 changes: 33 additions & 14 deletions 3rdparty/interface/archiveinterface/cliinterface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,39 @@ PluginFinishType CliInterface::testArchive()

PluginFinishType CliInterface::extractFiles(const QList<FileEntry> &files, const ExtractionOptions &options)
{
bool bDlnfs = m_common->isSubpathOfDlnfs(options.strTargetPath);
setProperty("dlnfs", bDlnfs);
ArchiveData arcData = DataManager::get_instance().archiveData();

if(!bDlnfs) {
if(arcData.listRootEntry.isEmpty() && options.qSize < FILE_MAX_SIZE) {
emit signalprogress(1);
setProperty("list", "tmpList");
list();
setProperty("list", "");
connect(m_process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished), this,
[=](int exitCode, QProcess::ExitStatus){
if(m_process) {
if(exitCode != 0) {
emit signalprogress(100);
emit signalFinished(m_finishType);
return PFT_Error;
}
m_process->deleteLater();
m_process = nullptr;
extractFiles(files, options, property("dlnfs").toBool());
}
});
return PFT_Nomral;
}
}
return extractFiles(files, options, bDlnfs);
}

PluginFinishType CliInterface::extractFiles(const QList<FileEntry> &files, const ExtractionOptions &options, bool bDlnfs)
{
ArchiveData arcData = DataManager::get_instance().archiveData();
setProperty("list", "");
setPassword(QString());
m_workStatus = WT_Extract;
m_files = files;
Expand Down Expand Up @@ -114,7 +147,6 @@ PluginFinishType CliInterface::extractFiles(const QList<FileEntry> &files, const
qInfo() << "解压目标路径 --- " << destPath;
}
bool bHandleLongName = false;
bool bDlnfs = m_common->isSubpathOfDlnfs(options.strTargetPath);
QDir::setCurrent(destPath);
if (!m_extractOptions.bAllExtract) { // 提取部分文件
m_files.clear();
Expand Down Expand Up @@ -200,20 +232,7 @@ PluginFinishType CliInterface::extractFiles(const QList<FileEntry> &files, const
} else {
password = options.password;
}
ArchiveData arcData = DataManager::get_instance().archiveData();
if(!bDlnfs) {
if(arcData.listRootEntry.isEmpty() && options.qSize < FILE_MAX_SIZE) {
setProperty("list", "tmpList");
list();
if(m_process) {
m_process->waitForFinished();
m_process->deleteLater();
m_process = nullptr;
}
m_workStatus = WT_Extract;
arcData = DataManager::get_instance().archiveData();
setProperty("list", "");
}
for (QMap<QString, FileEntry>::const_iterator iter = arcData.mapFileEntry.begin(); iter != arcData.mapFileEntry.end(); iter++) {
if(NAME_MAX < iter.value().strFileName.toLocal8Bit().length())
{
Expand Down
5 changes: 5 additions & 0 deletions 3rdparty/interface/archiveinterface/cliinterface.h
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,11 @@ class CliInterface : public ReadWriteArchiveInterface
*/
QString getTargetPath();

/**
* @brief extractFiles 业务解压
*/
PluginFinishType extractFiles(const QList<FileEntry> &files, const ExtractionOptions &options, bool bDlnfs);

private:
/**
* @brief moveDroppedFilesToDest 提取文件后,将文件从临时目录移到目的路径
Expand Down
2 changes: 1 addition & 1 deletion 3rdparty/interface/archiveinterface/cliproperties.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,7 @@ QStringList CliProperties::substituteCommentSwitch(const QString &commentfile) c

QStringList CliProperties::substitutePasswordSwitch(const QString &password, bool headerEnc) const
{
if (password.isEmpty()) {
if (password.isEmpty() || password.isNull()) {
return QStringList();
}

Expand Down

0 comments on commit ad4330e

Please sign in to comment.