summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Schumacher <timschumi@gmx.de>2021-11-21 19:56:48 +0100
committerAndreas Kling <kling@serenityos.org>2021-11-22 09:03:47 +0100
commit0d679bf34892b8e4577798d7e877af40f3cea0e8 (patch)
treea16b712560f5938a99d8b65650c06f325ac2b12e
parent07351762c75e248d8bf77a2972e0527f02a7fa75 (diff)
downloadserenity-0d679bf34892b8e4577798d7e877af40f3cea0e8.zip
tar: Implement usage of prefixes when extracting
-rw-r--r--Userland/Utilities/tar.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/Userland/Utilities/tar.cpp b/Userland/Utilities/tar.cpp
index ce36b8db94..09b18146e2 100644
--- a/Userland/Utilities/tar.cpp
+++ b/Userland/Utilities/tar.cpp
@@ -76,7 +76,13 @@ int main(int argc, char** argv)
Archive::TarFileStream file_stream = tar_stream.file_contents();
const Archive::TarFileHeader& header = tar_stream.header();
- String absolute_path = Core::File::absolute_path(header.filename());
+
+ LexicalPath path = LexicalPath(header.filename());
+ if (!header.prefix().is_empty())
+ path = path.prepend(header.prefix());
+
+ String absolute_path = Core::File::absolute_path(path.string());
+
switch (header.type_flag()) {
case Archive::TarFileType::NormalFile:
case Archive::TarFileType::AlternateNormalFile: {