]> git.saurik.com Git - apt.git/blob - apt-pkg/indexcopy.h
fileutl: empty file support: Avoid fstat() on -1 fd and check result
[apt.git] / apt-pkg / indexcopy.h
1 // -*- mode: cpp; mode: fold -*-
2 // Description /*{{{*/
3 /* ######################################################################
4
5 Index Copying - Aid for copying and verifying the index files
6
7 ##################################################################### */
8 /*}}}*/
9 #ifndef INDEXCOPY_H
10 #define INDEXCOPY_H
11
12 #include <vector>
13 #ifndef APT_11_CLEAN_HEADERS
14 #include <string>
15 #include <stdio.h>
16 #endif
17
18 #include <apt-pkg/macros.h>
19
20 #ifndef APT_10_CLEANER_HEADERS
21 #include <apt-pkg/gpgv.h>
22 class FileFd;
23 #endif
24 #ifndef APT_8_CLEANER_HEADERS
25 using std::string;
26 using std::vector;
27 #endif
28
29 class pkgTagSection;
30 class pkgCdromStatus;
31 class FileFd;
32 class metaIndex;
33
34 class IndexCopy /*{{{*/
35 {
36 /** \brief dpointer placeholder (for later in case we need it) */
37 void * const d;
38
39 protected:
40
41 pkgTagSection *Section;
42
43 std::string ChopDirs(std::string Path,unsigned int Depth);
44 bool ReconstructPrefix(std::string &Prefix,std::string OrigPath,std::string CD,
45 std::string File);
46 bool ReconstructChop(unsigned long &Chop,std::string Dir,std::string File);
47 void ConvertToSourceList(std::string CD,std::string &Path);
48 bool GrabFirst(std::string Path,std::string &To,unsigned int Depth);
49 virtual bool GetFile(std::string &Filename,unsigned long long &Size) = 0;
50 virtual bool RewriteEntry(FileFd &Target, std::string const &File) = 0;
51 virtual const char *GetFileName() = 0;
52 virtual const char *Type() = 0;
53
54 public:
55
56 bool CopyPackages(std::string CDROM,std::string Name,std::vector<std::string> &List,
57 pkgCdromStatus *log);
58 IndexCopy();
59 virtual ~IndexCopy();
60 };
61 /*}}}*/
62 class PackageCopy : public IndexCopy /*{{{*/
63 {
64 void * const d;
65 protected:
66
67 virtual bool GetFile(std::string &Filename,unsigned long long &Size) APT_OVERRIDE;
68 virtual bool RewriteEntry(FileFd &Target, std::string const &File) APT_OVERRIDE;
69 virtual const char *GetFileName() APT_OVERRIDE {return "Packages";};
70 virtual const char *Type() APT_OVERRIDE {return "Package";};
71
72 public:
73 PackageCopy();
74 virtual ~PackageCopy();
75 };
76 /*}}}*/
77 class SourceCopy : public IndexCopy /*{{{*/
78 {
79 void * const d;
80 protected:
81
82 virtual bool GetFile(std::string &Filename,unsigned long long &Size) APT_OVERRIDE;
83 virtual bool RewriteEntry(FileFd &Target, std::string const &File) APT_OVERRIDE;
84 virtual const char *GetFileName() APT_OVERRIDE {return "Sources";};
85 virtual const char *Type() APT_OVERRIDE {return "Source";};
86
87 public:
88 SourceCopy();
89 virtual ~SourceCopy();
90 };
91 /*}}}*/
92 class TranslationsCopy /*{{{*/
93 {
94 void * const d;
95 protected:
96 pkgTagSection *Section;
97
98 public:
99 bool CopyTranslations(std::string CDROM,std::string Name,std::vector<std::string> &List,
100 pkgCdromStatus *log);
101
102 TranslationsCopy();
103 virtual ~TranslationsCopy();
104 };
105 /*}}}*/
106 class SigVerify /*{{{*/
107 {
108 /** \brief dpointer placeholder (for later in case we need it) */
109 void * const d;
110
111 APT_HIDDEN bool Verify(std::string prefix,std::string file, metaIndex *records);
112 APT_HIDDEN bool CopyMetaIndex(std::string CDROM, std::string CDName,
113 std::string prefix, std::string file);
114
115 public:
116 bool CopyAndVerify(std::string CDROM,std::string Name,std::vector<std::string> &SigList,
117 std::vector<std::string> PkgList,std::vector<std::string> SrcList);
118
119 APT_DEPRECATED_MSG("Use ExecGPGV instead") static bool RunGPGV(std::string const &File, std::string const &FileOut,
120 int const &statusfd, int fd[2]);
121 APT_DEPRECATED_MSG("Use ExecGPGV instead") static bool RunGPGV(std::string const &File, std::string const &FileOut,
122 int const &statusfd = -1);
123
124 SigVerify();
125 virtual ~SigVerify();
126 };
127 /*}}}*/
128
129 #endif