Nix 2.26.3
Nix, the purely functional package manager; unstable internal interfaces
 
Loading...
Searching...
No Matches
tarfile.hh
Go to the documentation of this file.
1#pragma once
3
4#include "serialise.hh"
5#include "fs-sink.hh"
6#include <archive.h>
7
8namespace nix {
9
10struct TarArchive
11{
12 struct archive * archive;
13 Source * source;
14 std::vector<unsigned char> buffer;
15
16 void check(int err, const std::string & reason = "failed to extract archive (%s)");
17
18 explicit TarArchive(const std::filesystem::path & path);
19
25 TarArchive(Source & source, bool raw = false, std::optional<std::string> compression_method = std::nullopt);
26
28 TarArchive(const TarArchive &) = delete;
29 TarArchive & operator=(const TarArchive &) = delete;
30 TarArchive(TarArchive &&) = default;
31 TarArchive & operator=(TarArchive &&) = default;
32
33 void close();
34
35 ~TarArchive();
36};
37
38int getArchiveFilterCodeByName(const std::string & method);
39
40void unpackTarfile(Source & source, const std::filesystem::path & destDir);
41
42void unpackTarfile(const std::filesystem::path & tarFile, const std::filesystem::path & destDir);
43
44time_t unpackTarfileToSink(TarArchive & archive, ExtendedFileSystemObjectSink & parseSink);
45
46}
void check()
ErrorInfo err
Definition lexer.l:679
Definition fs-sink.hh:48
Definition serialise.hh:68
Definition tarfile.hh:11
TarArchive(const TarArchive &)=delete
Disable copy constructor. Explicitly default move assignment/constructor.