4 /** \ingroup rpmdep rpmtrans
6 * Structure used for handling a dependency set.
10 * A package filename set.
13 int i; /*!< File index. */
16 const char * Type; /*!< Tag name. */
18 rpmTag tagN; /*!< Header tag. */
19 /*@refcounted@*/ /*@null@*/
20 Header h; /*!< Header for file name set (or NULL) */
23 const char ** bnl; /*!< Base name(s) (from header) */
25 const char ** dnl; /*!< Directory name(s) (from header) */
28 const char ** fmd5s; /*!< File MD5 sum(s) (from header) */
30 const char ** flinks; /*!< File link(s) (from header) */
32 const char ** flangs; /*!< File lang(s) */
35 const uint_32 * dil; /*!< Directory indice(s) (from header) */
37 const uint_32 * fflags; /*!< File flag(s) (from header) */
39 const uint_32 * fsizes; /*!< File size(s) (from header) */
41 const uint_32 * fmtimes; /*!< File modification time(s) (from header) */
43 const uint_16 * fmodes; /*!< File mode(s) (from header) */
45 const uint_16 * frdevs; /*!< File rdev(s) (from header) */
48 char * fstates; /*!< File state(s) (from header) */
50 int_32 dc; /*!< No. of directories. */
51 int_32 fc; /*!< No. of files. */
52 /*@refs@*/ int nrefs; /*!< Reference count. */
56 * A package dependency set.
59 int i; /*!< Element index. */
62 const char * Type; /*!< Tag name. */
64 const char * DNEVR; /*!< Formatted dependency string. */
66 rpmTag tagN; /*!< Header tag. */
67 /*@refcounted@*/ /*@null@*/
68 Header h; /*!< Header for dependency set (or NULL) */
71 const char ** N; /*!< Name. */
73 const char ** EVR; /*!< Epoch-Version-Release. */
75 const int_32 * Flags; /*!< Flags identifying context/comparison. */
76 rpmTagType Nt, EVRt, Ft; /*!< Tag data types. */
77 int_32 Count; /*!< No. of elements */
78 /*@refs@*/ int nrefs; /*!< Reference count. */
86 * Unreference a file info set instance.
87 * @param fns file info set
90 /*@unused@*/ /*@null@*/
91 rpmFNSet rpmfnsUnlink (/*@killref@*/ /*@only@*/ /*@null@*/ rpmFNSet fns,
95 /** @todo Remove debugging entry from the ABI. */
98 rpmFNSet XrpmfnsUnlink (/*@killref@*/ /*@only@*/ /*@null@*/ rpmFNSet fns,
99 const char * msg, const char * fn, unsigned ln)
102 #define rpmfnsUnlink(_fns, _msg) XrpmfnsUnlink(_fns, _msg, __FILE__, __LINE__)
105 * Reference a file info set instance.
106 * @param fns file info set
107 * @return new file info set reference
110 rpmFNSet rpmfnsLink (/*@null@*/ rpmFNSet fns, const char * msg)
113 /** @todo Remove debugging entry from the ABI. */
114 rpmFNSet XrpmfnsLink (/*@null@*/ rpmFNSet fns, const char * msg,
115 const char * fn, unsigned ln)
117 #define rpmfnsLink(_fns, _msg) XrpmfnsLink(_fns, _msg, __FILE__, __LINE__)
120 * Destroy a file name set.
121 * @param ds file name set
122 * @return NULL always
125 rpmFNSet fnsFree(/*@killref@*/ /*@only@*/ /*@null@*/ rpmFNSet fns)
129 * Create and load a file name set.
131 * @param tagN RPMTAG_BASENAMES
132 * @param scareMem Use pointers to refcounted header memory?
133 * @return new file name set
136 rpmFNSet fnsNew(Header h, rpmTag tagN, int scareMem)
140 * Unreference a dependency set instance.
141 * @param ds dependency set
142 * @return NULL always
144 /*@unused@*/ /*@null@*/
145 rpmDepSet rpmdsUnlink (/*@killref@*/ /*@only@*/ /*@null@*/ rpmDepSet ds,
149 /** @todo Remove debugging entry from the ABI. */
152 rpmDepSet XrpmdsUnlink (/*@killref@*/ /*@only@*/ /*@null@*/ rpmDepSet ds,
153 const char * msg, const char * fn, unsigned ln)
156 #define rpmdsUnlink(_ds, _msg) XrpmdsUnlink(_ds, _msg, __FILE__, __LINE__)
159 * Reference a dependency set instance.
160 * @param ds dependency set
161 * @return new dependency set reference
164 rpmDepSet rpmdsLink (/*@null@*/ rpmDepSet ds, const char * msg)
167 /** @todo Remove debugging entry from the ABI. */
168 rpmDepSet XrpmdsLink (/*@null@*/ rpmDepSet ds, const char * msg,
169 const char * fn, unsigned ln)
171 #define rpmdsLink(_ds, _msg) XrpmdsLink(_ds, _msg, __FILE__, __LINE__)
174 * Destroy a dependency set.
175 * @param ds dependency set
176 * @return NULL always
179 rpmDepSet dsFree(/*@killref@*/ /*@only@*/ /*@null@*/ rpmDepSet ds)
182 * Create and load a dependency set.
184 * @param tagN type of dependency
185 * @param scareMem Use pointers to refcounted header memory?
186 * @return new dependency set
189 rpmDepSet dsNew(Header h, rpmTag tagN, int scareMem)
193 * Return new formatted dependency string.
194 * @param dspfx formatted dependency string prefix
195 * @param ds dependency set
196 * @return new formatted dependency (malloc'ed)
199 char * dsDNEVR(const char * dspfx, const rpmDepSet ds)
203 * Return dependency set count.
204 * @param ds dependency set
205 * @return current count
207 int dsiGetCount(/*@null@*/ rpmDepSet ds)
211 * Return dependency set index.
212 * @param ds dependency set
213 * @return current index
215 int dsiGetIx(/*@null@*/ rpmDepSet ds)
219 * Set dependency set index.
220 * @param ds dependency set
221 * @param ix new index
222 * @return current index
224 int dsiSetIx(/*@null@*/ rpmDepSet ds, int ix)
228 * Return current formatted dependency string.
229 * @param ds dependency set
230 * @return current dependency DNEVR, NULL on invalid
233 const char * dsiGetDNEVR(/*@null@*/ rpmDepSet ds)
237 * Return current dependency name.
238 * @param ds dependency set
239 * @return current dependency name, NULL on invalid
242 const char * dsiGetN(/*@null@*/ rpmDepSet ds)
246 * Return current dependency epoch-version-release.
247 * @param ds dependency set
248 * @return current dependency EVR, NULL on invalid
251 const char * dsiGetEVR(/*@null@*/ rpmDepSet ds)
255 * Return current dependency Flags.
256 * @param ds dependency set
257 * @return current dependency EVR, 0 on invalid
259 int_32 dsiGetFlags(/*@null@*/ rpmDepSet ds)
263 * Notify of results of dependency match;
264 * @param ds dependency set
265 * @param where where dependency was resolved (or NULL)
266 * @param rc 0 == YES, otherwise NO
268 /*@-globuse@*/ /* FIX: rpmMessage annotation is a lie */
269 void dsiNotify(/*@null@*/ rpmDepSet ds, /*@null@*/ const char * where, int rc)
270 /*@globals fileSystem @*/
271 /*@modifies fileSystem @*/;
275 * Return next dependency set iterator index.
276 * @param ds dependency set
277 * @return dependency set iterator index, -1 on termination
279 int dsiNext(/*@null@*/ rpmDepSet ds)
283 * Initialize dependency set iterator.
284 * @param ds dependency set
285 * @return dependency set
288 rpmDepSet dsiInit(/*@returned@*/ /*@null@*/ rpmDepSet ds)
292 * Compare two versioned dependency ranges, looking for overlap.
293 * @param A 1st dependency
294 * @param B 2nd dependency
295 * @return 1 if dependencies overlap, 0 otherwise
297 int dsCompare(const rpmDepSet A, const rpmDepSet B)
301 * Report a Requires: or Conflicts: dependency problem.
303 void dsProblem(/*@null@*/ rpmProblemSet tsprobs, Header h, const rpmDepSet ds,
304 /*@only@*/ /*@null@*/ const fnpyKey * suggestedKeys)
305 /*@modifies tsprobs, h @*/;
308 * Compare package provides dependencies from header with a single dependency.
310 * @param ds dependency set
312 int rangeMatchesDepFlags (Header h, const rpmDepSet req)
316 * Compare package name-version-release from header with a single dependency.
317 * @deprecated Remove from API when obsoletes is correctly implemented.
319 * @param req dependency
320 * @return 1 if dependency overlaps, 0 otherwise
322 int headerMatchesDepFlags(Header h, const rpmDepSet req)