]>
Commit | Line | Data |
---|---|---|
453b82a3 DK |
1 | #include <config.h> |
2 | ||
b2e465d6 AL |
3 | #include <apt-pkg/dirstream.h> |
4 | #include <apt-pkg/debfile.h> | |
5 | #include <apt-pkg/error.h> | |
6 | #include <apt-pkg/extracttar.h> | |
453b82a3 DK |
7 | #include <apt-pkg/arfile.h> |
8 | #include <apt-pkg/fileutl.h> | |
9 | ||
10 | #include <iostream> | |
11 | #include <string> | |
b2e465d6 AL |
12 | |
13 | class NullStream : public pkgDirStream | |
14 | { | |
15 | public: | |
3b302846 | 16 | virtual bool DoItem(Item &/*Itm*/, int &/*Fd*/) APT_OVERRIDE {return true;}; |
b2e465d6 AL |
17 | }; |
18 | ||
c3ccac92 | 19 | static bool Test(const char *File) |
b2e465d6 AL |
20 | { |
21 | FileFd Fd(File,FileFd::ReadOnly); | |
22 | debDebFile Deb(Fd); | |
23 | ||
24 | if (_error->PendingError() == true) | |
25 | return false; | |
26 | ||
27 | // Get the archive member and positition the file | |
28 | const ARArchive::Member *Member = Deb.GotoMember("data.tar.gz"); | |
29 | if (Member == 0) | |
30 | return false; | |
31 | ||
32 | // Extract it. | |
9373b975 | 33 | ExtractTar Tar(Deb.GetFile(),Member->Size, "gzip"); |
b2e465d6 AL |
34 | NullStream Dir; |
35 | if (Tar.Go(Dir) == false) | |
36 | return false; | |
37 | ||
38 | return true; | |
39 | } | |
40 | ||
41 | int main(int argc, const char *argv[]) | |
42 | { | |
65512241 DK |
43 | if (argc != 2) { |
44 | std::cout << "One parameter expected - given " << argc << std::endl; | |
45 | return 100; | |
46 | } | |
47 | ||
b2e465d6 AL |
48 | Test(argv[1]); |
49 | _error->DumpErrors(); | |
50 | return 0; | |
51 | } |