19484ec5acc747f276edd232d27839f124c9155c
[platform/upstream/rpm.git] / lib / rpmfi_internal.h
1 #ifndef _RPMFI_INTERNAL_H
2 #define _RPMFI_INTERNAL_H
3
4 #include <rpm/header.h>
5 #include <rpm/rpmfi.h>
6 #include <rpm/rpmstrpool.h>
7 #include "lib/fprint.h"
8
9 #define RPMFIMAGIC      0x09697923
10
11 /**
12  * A package filename set.
13  */
14 struct rpmfi_s {
15     int i;                      /*!< Current file index. */
16     int j;                      /*!< Current directory index. */
17
18     Header h;                   /*!< Header for file info set (or NULL) */
19     rpmstrPool pool;            /*!< String pool of this file info set */
20
21     rpmsid * bnid;              /*!< Index to base name(s) (pool) */
22     rpmsid * dnid;              /*!< Index to directory name(s) (pool) */
23
24     rpmsid * flinks;            /*!< Index to file link(s) (pool) */
25
26     uint32_t * dil;             /*!< Directory indice(s) (from header) */
27     rpm_flag_t * fflags;        /*!< File flag(s) (from header) */
28     rpm_off_t * fsizes;         /*!< File size(s) (from header) */
29     rpm_time_t * fmtimes;       /*!< File modification time(s) (from header) */
30     rpm_mode_t * fmodes;        /*!< File mode(s) (from header) */
31     rpm_rdev_t * frdevs;        /*!< File rdev(s) (from header) */
32     rpm_ino_t * finodes;        /*!< File inodes(s) (from header) */
33
34     rpmsid * fuser;             /*!< Index to file owner(s) (misc pool) */
35     rpmsid * fgroup;            /*!< Index to file group(s) (misc pool) */
36     rpmsid * flangs;            /*!< Index to file lang(s) (misc pool) */
37
38     char * fstates;             /*!< File state(s) (from header) */
39
40     rpm_color_t * fcolors;      /*!< File color bits (header) */
41     char ** fcaps;              /*!< File capability strings (header) */
42
43     char ** cdict;              /*!< File class dictionary (header) */
44     rpm_count_t ncdict;         /*!< No. of class entries. */
45     uint32_t * fcdictx;         /*!< File class dictionary index (header) */
46
47     uint32_t * ddict;           /*!< File depends dictionary (header) */
48     rpm_count_t nddict;         /*!< No. of depends entries. */
49     uint32_t * fddictx;         /*!< File depends dictionary start (header) */
50     uint32_t * fddictn;         /*!< File depends dictionary count (header) */
51     rpm_flag_t * vflags;        /*!< File verify flag(s) (from header) */
52
53     rpm_count_t dc;             /*!< No. of directories. */
54     rpm_count_t fc;             /*!< No. of files. */
55
56     rpmfiFlags fiflags;         /*!< file info set control flags */
57
58     struct fingerPrint_s * fps; /*!< File fingerprint(s). */
59
60     int digestalgo;             /*!< File digest algorithm */
61     unsigned char * digests;    /*!< File digests in binary. */
62
63     char * fn;                  /*!< File name buffer. */
64
65     char ** apath;
66     rpm_off_t * replacedSizes;  /*!< (TR_ADDED) */
67     int magic;
68     int nrefs;          /*!< Reference count. */
69 };
70
71 #ifdef __cplusplus
72 extern "C" {
73 #endif
74
75 /** \ingroup rpmfi
76  * Create and load a file info set.
77  * @param pool          shared string pool (or NULL for private pool)
78  * @param h             header
79  * @param tagN          unused
80  * @param flags         Flags to control what information is loaded.
81  * @return              new file info set
82  */
83 RPM_GNUC_INTERNAL
84 rpmfi rpmfiNewPool(rpmstrPool pool, Header h, rpmTagVal tagN, rpmfiFlags flags);
85
86 /** \ingroup rpmfi
87  * Return file info set string pool handle
88  * @param fi            file info
89  * @return              string pool handle (weak reference)
90  */
91 RPM_GNUC_INTERNAL
92 rpmstrPool rpmfiPool(rpmfi fi);
93
94 /** \ingroup rpmfi
95  * Return current base name pool id from file info set.
96  * @param fi            file info set
97  * @return              current base name id, 0 on invalid
98  */
99 RPM_GNUC_INTERNAL
100 rpmsid rpmfiBNId(rpmfi fi);
101
102 /** \ingroup rpmfi
103  * Return current directory name pool id from file info set.
104  * @param fi            file info set
105  * @return              current base name id, 0 on invalid
106  */
107 RPM_GNUC_INTERNAL
108 rpmsid rpmfiDNId(rpmfi fi);
109
110 RPM_GNUC_INTERNAL
111 int rpmfiDIIndex(rpmfi fi, int dx);
112
113 RPM_GNUC_INTERNAL
114 rpmsid rpmfiBNIdIndex(rpmfi fi, int ix);
115
116 RPM_GNUC_INTERNAL
117 rpmsid rpmfiDNIdIndex(rpmfi fi, int jx);
118
119 RPM_GNUC_INTERNAL
120 const char * rpmfiBNIndex(rpmfi fi, int ix);
121
122 RPM_GNUC_INTERNAL
123 const char * rpmfiDNIndex(rpmfi fi, int jx);
124
125 RPM_GNUC_INTERNAL
126 char * rpmfiFNIndex(rpmfi fi, int ix);
127
128 RPM_GNUC_INTERNAL
129 rpmVerifyAttrs rpmfiVFlagsIndex(rpmfi fi, int ix);
130
131 RPM_GNUC_INTERNAL
132 rpmfileState rpmfiFStateIndex(rpmfi fi, int ix);
133
134 RPM_GNUC_INTERNAL
135 const char * rpmfiFLinkIndex(rpmfi fi, int ix);
136
137 RPM_GNUC_INTERNAL
138 rpm_loff_t rpmfiFSizeIndex(rpmfi fi, int ix);
139
140 RPM_GNUC_INTERNAL
141 rpm_color_t rpmfiFColorIndex(rpmfi fi, int ix);
142
143 RPM_GNUC_INTERNAL
144 const char * rpmfiFClassIndex(rpmfi fi, int ix);
145
146 RPM_GNUC_INTERNAL
147 uint32_t rpmfiFDependsIndex(rpmfi fi, int ix, const uint32_t ** fddictp);
148
149 RPM_GNUC_INTERNAL
150 uint32_t rpmfiFNlinkIndex(rpmfi fi, int ix);
151
152 RPM_GNUC_INTERNAL
153 const char * rpmfiFLangsIndex(rpmfi fi, int ix);
154
155 RPM_GNUC_INTERNAL
156 rpmfileAttrs rpmfiFFlagsIndex(rpmfi fi, int ix);
157
158 RPM_GNUC_INTERNAL
159 rpm_mode_t rpmfiFModeIndex(rpmfi fi, int ix);
160
161 RPM_GNUC_INTERNAL
162 const unsigned char * rpmfiFDigestIndex(rpmfi fi, int ix, int *algo, size_t *len);
163
164 RPM_GNUC_INTERNAL
165 rpm_rdev_t rpmfiFRdevIndex(rpmfi fi, int ix);
166
167 RPM_GNUC_INTERNAL
168 rpm_ino_t rpmfiFInodeIndex(rpmfi fi, int ix);
169
170 RPM_GNUC_INTERNAL
171 rpm_time_t rpmfiFMtimeIndex(rpmfi fi, int ix);
172
173 RPM_GNUC_INTERNAL
174 const char * rpmfiFUserIndex(rpmfi fi, int ix);
175
176 RPM_GNUC_INTERNAL
177 const char * rpmfiFGroupIndex(rpmfi fi, int ix);
178
179 RPM_GNUC_INTERNAL
180 const char * rpmfiFCapsIndex(rpmfi fi, int ix);
181
182 RPM_GNUC_INTERNAL
183 struct fingerPrint_s *rpmfiFps(rpmfi fi);
184
185 RPM_GNUC_INTERNAL
186 rpmFileAction rpmfiDecideFateIndex(rpmfi ofi, int oix, rpmfi nfi, int nix,
187                                    int skipMissing);
188
189 RPM_GNUC_INTERNAL
190 int rpmfiCompareIndex(rpmfi afi, int aix, rpmfi bfi, int bix);
191
192 RPM_GNUC_INTERNAL
193 int rpmfiConfigConflictIndex(rpmfi fi, int ix);
194
195 RPM_GNUC_INTERNAL
196 void rpmfiSetFReplacedSizeIndex(rpmfi fi, int ix, rpm_loff_t newsize);
197
198 RPM_GNUC_INTERNAL
199 rpm_loff_t rpmfiFReplacedSizeIndex(rpmfi fi, int ix);
200
201 RPM_GNUC_INTERNAL
202 void rpmfiFpLookup(rpmfi fi, fingerPrintCache fpc);
203
204 #ifdef __cplusplus
205 }
206 #endif
207
208 #endif  /* _RPMFI_INTERNAL_H */
209