From: Michael Tremer Date: Tue, 11 Jun 2019 03:45:12 +0000 (+0100) Subject: libpakfire: archive: Implement extracting hardlinks X-Git-Tag: 0.9.28~1285^2~934 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6c9b2d34c1d537d0feedfb4ab391a2aa8570377b;p=pakfire.git libpakfire: archive: Implement extracting hardlinks Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/archive.c b/src/libpakfire/archive.c index bc6783bce..d1eef79dd 100644 --- a/src/libpakfire/archive.c +++ b/src/libpakfire/archive.c @@ -616,6 +616,17 @@ static int archive_extract(Pakfire pakfire, struct archive* a, const char* prefi DEBUG(pakfire, "Extracting %s (%zu bytes)\n", pathname, size); pakfire_free(pathname); + // Update hardlink targets + const char* hardlink = archive_entry_hardlink(entry); + if (hardlink) { + // Make new hardlink target relative to prefix + char* h = pakfire_path_join(prefix, hardlink); + + // Update the entry + archive_entry_set_hardlink(entry, h); + pakfire_free(h); + } + // Create file r = archive_write_header(ext, entry); if (r != ARCHIVE_OK) {