diff options
-rw-r--r-- | src/libs/installer/libarchivearchive.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/libs/installer/libarchivearchive.cpp b/src/libs/installer/libarchivearchive.cpp index 46200560b..d3a79bd40 100644 --- a/src/libs/installer/libarchivearchive.cpp +++ b/src/libs/installer/libarchivearchive.cpp @@ -123,6 +123,12 @@ void ExtractWorker::extract(const QString &dirPath, const quint64 totalFiles) const QString outputPath = dirPath + QDir::separator() + QString::fromLocal8Bit(current); archive_entry_set_pathname(entry, outputPath.toLocal8Bit()); + const char *hardlink = archive_entry_hardlink(entry); + if (hardlink) { + const QString hardLinkPath = dirPath + QDir::separator() + QString::fromLocal8Bit(hardlink); + archive_entry_set_hardlink(entry, hardLinkPath.toLocal8Bit()); + } + emit currentEntryChanged(outputPath); if (!writeEntry(reader.get(), writer.get(), entry)) return; @@ -440,6 +446,12 @@ bool LibArchiveArchive::extract(const QString &dirPath, const quint64 totalFiles const QString outputPath = dirPath + QDir::separator() + QString::fromLocal8Bit(current); archive_entry_set_pathname(entry, outputPath.toLocal8Bit()); + const char *hardlink = archive_entry_hardlink(entry); + if (hardlink) { + const QString hardLinkPath = dirPath + QDir::separator() + QString::fromLocal8Bit(hardlink); + archive_entry_set_hardlink(entry, hardLinkPath.toLocal8Bit()); + } + emit currentEntryChanged(outputPath); if (!writeEntry(reader.get(), writer.get(), entry)) throw Error(errorString()); // appropriate error string set in writeEntry() |