23 #ifndef ARCHIVEUTILS_H
24 #define ARCHIVEUTILS_H
26 #include "string_utils.h"
29 #include <archive_entry.h>
32 #if ARCHIVE_VERSION_NUMBER >= 3000000
33 #define INIT_ARCHIVE(ar) \
34 archive_read_support_filter_gzip((ar)); \
35 archive_read_support_filter_bzip2((ar)); \
36 archive_read_support_filter_xz((ar)); \
37 archive_read_support_filter_zstd((ar)); \
38 archive_read_support_format_tar((ar))
39 #define FREE_ARCHIVE(ar) \
40 archive_read_free((ar))
42 #define INIT_ARCHIVE(ar) \
43 archive_read_support_compression_gzip((ar)); \
44 archive_read_support_compression_bzip2((ar)); \
45 archive_read_support_compression_xz((ar)); \
46 archive_read_support_format_tar((ar))
47 #define FREE_ARCHIVE(ar) \
48 archive_read_finish((ar))
51 #define DEFAULT_BYTES_PER_BLOCK (20 * 512)
52 #define METAFILE ".META"
53 #define INFOFILE ".INFO"
54 #define MTREEFILE ".MTREE"
60 CANNOT_FIND_META_FILE,
61 CANNOT_FIND_MTREE_FILE,
76 virtual void treatErrors(
const std::string& s)
const;
84 unsigned int long size();
85 std::set<std::string> setofFiles();
86 std::set<std::string> listofDependencies();
87 std::set<std::string> listofAlias();
88 std::set<std::pair<std::string,time_t> > listofDependenciesBuildDate();
90 std::string version();
92 std::string description();
94 std::string contributors();
95 std::string maintainer();
96 std::string collection();
97 std::string packager();
98 std::string builddate();
101 std::string namebuildn();
102 std::string epochBuildDate();
107 std::string getPackageName();
108 std::string getPackageArch();
109 std::vector<std::string> extractFileContent(
const char * fileName);
110 void getRunTimeDependencies();
111 void getRunTimeDependenciesEpoch();
114 unsigned int long m_size;
116 std::vector<std::string> m_contentMtree;
117 std::vector<std::string> m_contentMeta;
118 std::vector<std::string> m_contentInfo;
120 std::set<std::string> m_rtDependenciesList;
121 std::set<std::pair<std::string,time_t> > m_rtDependenciesEpochList;
122 std::string m_fileName;
123 std::string m_packageName;
124 std::string m_packageArch;
125 std::set<std::string> m_filesList;
126 std::set<std::string> m_aliasList;
128 archive_error m_actualError;
131 int openArchive(
const char *fileName);