Get offset of data inside tar file

This commit is contained in:
Patrick Niklaus
2018-03-22 12:15:40 +00:00
parent 8e800c48bc
commit a52213c885
4 changed files with 39 additions and 26 deletions
+13 -2
View File
@@ -110,7 +110,13 @@ class FileReader
}
}
using TarEntry = std::tuple<std::string, std::size_t>;
struct FileEntry
{
std::string name;
std::size_t size;
std::size_t offset;
};
template <typename OutIter> void List(OutIter out)
{
mtar_header_t header;
@@ -118,7 +124,12 @@ class FileReader
{
if (header.type == MTAR_TREG)
{
*out++ = TarEntry{header.name, header.size};
mtar_read_data(&handle, nullptr, 0);
auto offset = handle.pos;
// seek back to the header
handle.remaining_data = 0;
mtar_seek(&handle, handle.last_header);
*out++ = FileEntry{header.name, header.size, offset};
}
mtar_next(&handle);
}