summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/libs/installer/libarchivearchive.cpp12
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()