rpm: rpmds.h Source File

rpm 4.13.0

rpmds.h
Go to the documentation of this file.
1 #ifndef H_RPMDS
2 #define H_RPMDS
3
9 #include <time.h>
10
11 #include <rpm/rpmtypes.h>
12 #include <rpm/rpmps.h>
13
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
17
20 extern int _rpmds_nopromote;
21
25 enum rpmsenseFlags_e {
26 RPMSENSE_ANY = 0,
27 RPMSENSE_LESS = (1 << 1),
28 RPMSENSE_GREATER = (1 << 2),
29 RPMSENSE_EQUAL = (1 << 3),
30 /* bit 4 unused */
31 RPMSENSE_POSTTRANS = (1 << 5),
32 RPMSENSE_PREREQ = (1 << 6), /* legacy prereq dependency */
33 RPMSENSE_PRETRANS = (1 << 7),
34 RPMSENSE_INTERP = (1 << 8),
35 RPMSENSE_SCRIPT_PRE = (1 << 9),
36 RPMSENSE_SCRIPT_POST = (1 << 10),
37 RPMSENSE_SCRIPT_PREUN = (1 << 11),
38 RPMSENSE_SCRIPT_POSTUN = (1 << 12),
39 RPMSENSE_SCRIPT_VERIFY = (1 << 13),
40 RPMSENSE_FIND_REQUIRES = (1 << 14),
41 RPMSENSE_FIND_PROVIDES = (1 << 15),
43 RPMSENSE_TRIGGERIN = (1 << 16),
44 RPMSENSE_TRIGGERUN = (1 << 17),
45 RPMSENSE_TRIGGERPOSTUN = (1 << 18),
46 RPMSENSE_MISSINGOK = (1 << 19),
47 /* bits 20-23 unused */
48 RPMSENSE_RPMLIB = (1 << 24),
49 RPMSENSE_TRIGGERPREIN = (1 << 25),
50 RPMSENSE_KEYRING = (1 << 26),
51 /* bit 27 unused */
52 RPMSENSE_CONFIG = (1 << 28)
53 };
54
55 typedef rpmFlags rpmsenseFlags;
56
57 #define RPMSENSE_SENSEMASK 15 /* Mask to get senses, ie serial, */
58 /* less, greater, equal. */
59
60 #define RPMSENSE_TRIGGER \
61 (RPMSENSE_TRIGGERPREIN | RPMSENSE_TRIGGERIN | RPMSENSE_TRIGGERUN | RPMSENSE_TRIGGERPOSTUN)
62
63 #define _ALL_REQUIRES_MASK (\
64 RPMSENSE_INTERP | \
65 RPMSENSE_SCRIPT_PRE | \
66 RPMSENSE_SCRIPT_POST | \
67 RPMSENSE_SCRIPT_PREUN | \
68 RPMSENSE_SCRIPT_POSTUN | \
69 RPMSENSE_SCRIPT_VERIFY | \
70 RPMSENSE_FIND_REQUIRES | \
71 RPMSENSE_RPMLIB | \
72 RPMSENSE_KEYRING | \
73 RPMSENSE_PRETRANS | \
74 RPMSENSE_POSTTRANS | \
75 RPMSENSE_PREREQ | \
76 RPMSENSE_MISSINGOK)
77
78 #define _notpre(_x) ((_x) & ~RPMSENSE_PREREQ)
79 #define _INSTALL_ONLY_MASK \
80 _notpre(RPMSENSE_SCRIPT_PRE|RPMSENSE_SCRIPT_POST|RPMSENSE_RPMLIB|RPMSENSE_KEYRING|RPMSENSE_PRETRANS|RPMSENSE_POSTTRANS)
81 #define _ERASE_ONLY_MASK \
82 _notpre(RPMSENSE_SCRIPT_PREUN|RPMSENSE_SCRIPT_POSTUN)
83
84 #define isLegacyPreReq(_x) (((_x) & _ALL_REQUIRES_MASK) == RPMSENSE_PREREQ)
85 #define isInstallPreReq(_x) ((_x) & _INSTALL_ONLY_MASK)
86 #define isErasePreReq(_x) ((_x) & _ERASE_ONLY_MASK)
87
88
89
96 rpmsenseFlags rpmSanitizeDSFlags(rpmTagVal tagN, rpmsenseFlags Flags);
97
104 rpmsenseFlags rpmParseDSFlags(const char *str, size_t len);
105
111 rpmds rpmdsLink(rpmds ds);
112
118 rpmds rpmdsFree(rpmds ds);
119
127 rpmds rpmdsNew(Header h, rpmTagVal tagN, int flags);
128
135 char * rpmdsNewDNEVR(const char * dspfx, const rpmds ds);
136
144 rpmds rpmdsThis(Header h, rpmTagVal tagN, rpmsenseFlags Flags);
145
154 rpmds rpmdsSingle(rpmTagVal tagN, const char * N, const char * EVR, rpmsenseFlags Flags);
155
161 rpmds rpmdsCurrent(rpmds ds);
162
169 int rpmdsPutToHeader(rpmds ds, Header h);
170
176 int rpmdsCount(const rpmds ds);
177
183 int rpmdsIx(const rpmds ds);
184
191 int rpmdsSetIx(rpmds ds, int ix);
192
198 const char * rpmdsDNEVR(const rpmds ds);
199
205 char rpmdsD(const rpmds ds);
206
212 rpmTagVal rpmdsDToTagN(char deptype);
213
219 const char * rpmdsN(const rpmds ds);
220
226 const char * rpmdsEVR(const rpmds ds);
227
233 int rpmdsTi(const rpmds ds);
234
240 rpmsenseFlags rpmdsFlags(const rpmds ds);
241
247 rpmTagVal rpmdsTagN(const rpmds ds);
248
254 rpmTagVal rpmdsTagEVR(const rpmds ds);
255
261 rpmTagVal rpmdsTagF(const rpmds ds);
262
268 rpmTagVal rpmdsTagTi(const rpmds ds);
269
276 unsigned int rpmdsInstance(rpmds ds);
277
291 int rpmdsNoPromote(const rpmds ds);
292
299 int rpmdsSetNoPromote(rpmds ds, int nopromote);
300
306 rpm_color_t rpmdsColor(const rpmds ds);
307
314 rpm_color_t rpmdsSetColor(const rpmds ds, rpm_color_t color);
315
322 /* FIX: rpmMessage annotation is a lie */
323 void rpmdsNotify(rpmds ds, const char * where, int rc);
324
330 int rpmdsNext(rpmds ds);
331
337 rpmds rpmdsInit(rpmds ds);
338
345 int rpmdsFind(rpmds ds, const rpmds ods);
346
353 int rpmdsMerge(rpmds * dsp, rpmds ods);
354
363 int rpmdsSearch(rpmds ds, rpmds ods);
364
371 int rpmdsCompare(const rpmds A, const rpmds B);
372
380 int rpmdsAnyMatchesDep (const Header h, const rpmds req, int nopromote);
381
390 int rpmdsMatchesDep (const Header h, int ix, const rpmds req, int nopromote);
391
399 int rpmdsNVRMatchesDep(const Header h, const rpmds req, int nopromote);
400
407 int rpmdsRpmlib(rpmds * dsp, const void * tblp);
408
417 rpmds rpmdsNewPool(rpmstrPool pool, Header h, rpmTagVal tagN, int flags);
418
427 rpmds rpmdsThisPool(rpmstrPool pool,
428 Header h, rpmTagVal tagN, rpmsenseFlags Flags);
429
439 rpmds rpmdsSinglePool(rpmstrPool pool, rpmTagVal tagN,
440 const char * N, const char * EVR, rpmsenseFlags Flags);
441
452 rpmds rpmdsSinglePoolTix(rpmstrPool pool, rpmTagVal tagN,
453 const char * N, const char * EVR,
454 rpmsenseFlags Flags, int triggerIndex);
455
463 int rpmdsRpmlibPool(rpmstrPool pool, rpmds * dsp, const void * tblp);
464
465
466 typedef enum rpmrichOp_e {
467 RPMRICHOP_SINGLE = 1,
468 RPMRICHOP_AND = 2,
469 RPMRICHOP_OR = 3,
470 RPMRICHOP_IF = 4,
471 RPMRICHOP_ELSE = 5
472 } rpmrichOp;
473
474 typedef enum rpmrichParseType_e {
475 RPMRICH_PARSE_SIMPLE = 1, /* standard N <=> EVR dep */
476 RPMRICH_PARSE_ENTER = 2, /* entering sub-dependency */
477 RPMRICH_PARSE_LEAVE = 3, /* leaving sub-dependency */
478 RPMRICH_PARSE_OP = 4 /* parsed a rich dependency op */
479 } rpmrichParseType;
480
481 typedef rpmRC (*rpmrichParseFunction) (void *cbdata, rpmrichParseType type,
482 const char *n, int nl, const char *e, int el, rpmsenseFlags sense,
483 rpmrichOp op, char **emsg);
484
493 rpmRC rpmrichParse(const char **dstrp, char **emsg, rpmrichParseFunction cb, void *cbdata);
494
495
501 int rpmdsIsRich(rpmds dep);
502
508 const char *rpmrichOpStr(rpmrichOp op);
509
519 rpmRC rpmdsParseRichDep(rpmds dep, rpmds *leftds, rpmds *rightds, rpmrichOp *op, char **emsg);
520
521 #ifdef __cplusplus
522 }
523 #endif
524
525 #endif /* H_RPMDS */
rpmdsCurrent
rpmds rpmdsCurrent(rpmds ds)
Return a new dependency set of size 1 from the current iteration index.
rpmdsNext
int rpmdsNext(rpmds ds)
Return next dependency set iterator index.
rpmdsMatchesDep
int rpmdsMatchesDep(const Header h, int ix, const rpmds req, int nopromote)
Compare package provides dependencies from header with a single dependency.
rpmdsNewPool
rpmds rpmdsNewPool(rpmstrPool pool, Header h, rpmTagVal tagN, int flags)
Create and load a dependency set.
RPMSENSE_TRIGGERPREIN
Definition: rpmds.h:49
rpmdsTagN
rpmTagVal rpmdsTagN(const rpmds ds)
Return current dependency type.
rpmdsParseRichDep
rpmRC rpmdsParseRichDep(rpmds dep, rpmds *leftds, rpmds *rightds, rpmrichOp *op, char **emsg)
Parse a rich dependency string.
RPMRICHOP_SINGLE
Definition: rpmds.h:467
rpmdsTagTi
rpmTagVal rpmdsTagTi(const rpmds ds)
Return current dependency type.
rpmrichOp
enum rpmrichOp_e rpmrichOp
RPMSENSE_PREREQ
Definition: rpmds.h:32
RPMSENSE_FIND_PROVIDES
Definition: rpmds.h:41
rpmdsNewDNEVR
char * rpmdsNewDNEVR(const char *dspfx, const rpmds ds)
Return new formatted dependency string.
RPMSENSE_CONFIG
Definition: rpmds.h:52
rpmdsFind
int rpmdsFind(rpmds ds, const rpmds ods)
Find a dependency set element using binary search.
RPMSENSE_ANY
Definition: rpmds.h:26
rpmdsMerge
int rpmdsMerge(rpmds *dsp, rpmds ods)
Merge a dependency set maintaining (N,EVR,Flags) sorted order.
rpmdsIx
int rpmdsIx(const rpmds ds)
Return dependency set index.
RPMSENSE_SCRIPT_PRE
Definition: rpmds.h:35
RPMRICH_PARSE_ENTER
Definition: rpmds.h:476
rpmdsNVRMatchesDep
int rpmdsNVRMatchesDep(const Header h, const rpmds req, int nopromote)
Compare package name-version-release from header with a single dependency.
rpmdsLink
rpmds rpmdsLink(rpmds ds)
Reference a dependency set instance.
RPMSENSE_RPMLIB
Definition: rpmds.h:48
RPMSENSE_PRETRANS
Definition: rpmds.h:33
RPMSENSE_SCRIPT_PREUN
Definition: rpmds.h:37
RPMSENSE_GREATER
Definition: rpmds.h:28
RPMSENSE_TRIGGERIN
Definition: rpmds.h:43
rpmdsRpmlib
int rpmdsRpmlib(rpmds *dsp, const void *tblp)
Load rpmlib provides into a dependency set.
rpmdsRpmlibPool
int rpmdsRpmlibPool(rpmstrPool pool, rpmds *dsp, const void *tblp)
Load rpmlib provides into a dependency set.
rpmdsFlags
rpmsenseFlags rpmdsFlags(const rpmds ds)
Return current dependency flags.
rpmsenseFlags_e
rpmsenseFlags_e
Dependency Attributes.
Definition: rpmds.h:25
rpmdsNotify
void rpmdsNotify(rpmds ds, const char *where, int rc)
Notify of results of dependency match.
rpmdsSetIx
int rpmdsSetIx(rpmds ds, int ix)
Set dependency set index.
rpmFlags
uint32_t rpmFlags
Definition: rpmtypes.h:42
rpmdsTagEVR
rpmTagVal rpmdsTagEVR(const rpmds ds)
Return current dependency type.
rpmdsN
const char * rpmdsN(const rpmds ds)
Return current dependency name.
rpmdsSearch
int rpmdsSearch(rpmds ds, rpmds ods)
Search a sorted dependency set for an element that overlaps.
rpmstrPool
struct rpmstrPool_s * rpmstrPool
Definition: rpmtypes.h:83
RPMSENSE_SCRIPT_POSTUN
Definition: rpmds.h:38
RPMSENSE_LESS
Definition: rpmds.h:27
rpmdsAnyMatchesDep
int rpmdsAnyMatchesDep(const Header h, const rpmds req, int nopromote)
Compare package provides dependencies from header with a single dependency.
RPMSENSE_FIND_REQUIRES
Definition: rpmds.h:40
RPMSENSE_MISSINGOK
Definition: rpmds.h:46
rpmdsSinglePoolTix
rpmds rpmdsSinglePoolTix(rpmstrPool pool, rpmTagVal tagN, const char *N, const char *EVR, rpmsenseFlags Flags, int triggerIndex)
Create, load and initialize a trigger dependency set of size 1.
rpmdsThisPool
rpmds rpmdsThisPool(rpmstrPool pool, Header h, rpmTagVal tagN, rpmsenseFlags Flags)
Create, load and initialize a dependency for this header.
rpmdsNoPromote
int rpmdsNoPromote(const rpmds ds)
Return current "Don&#39;t promote Epoch:" flag.
RPMRICH_PARSE_LEAVE
Definition: rpmds.h:477
rpm_color_t
uint32_t rpm_color_t
Definition: rpmtypes.h:38
RPMSENSE_TRIGGERPOSTUN
Definition: rpmds.h:45
RPMRICH_PARSE_SIMPLE
Definition: rpmds.h:475
rpmdsThis
rpmds rpmdsThis(Header h, rpmTagVal tagN, rpmsenseFlags Flags)
Create, load and initialize a dependency for this header.
Header
struct headerToken_s * Header
RPM header and data retrieval types.
Definition: rpmtypes.h:24
rpmdsCount
int rpmdsCount(const rpmds ds)
Return dependency set count.
rpmdsD
char rpmdsD(const rpmds ds)
Return one char indicating the type of the dependency.
rpmrichOp_e
rpmrichOp_e
Definition: rpmds.h:466
RPMRICHOP_AND
Definition: rpmds.h:468
rpmdsSinglePool
rpmds rpmdsSinglePool(rpmstrPool pool, rpmTagVal tagN, const char *N, const char *EVR, rpmsenseFlags Flags)
Create, load and initialize a dependency set of size 1.
rpmdsSingle
rpmds rpmdsSingle(rpmTagVal tagN, const char *N, const char *EVR, rpmsenseFlags Flags)
Create, load and initialize a dependency set of size 1.
rpmds
struct rpmds_s * rpmds
Definition: rpmtypes.h:65
rpmdsDToTagN
rpmTagVal rpmdsDToTagN(char deptype)
Return matching tagN for one char dependency type description.
rpmTagVal
rpm_tag_t rpmTagVal
Definition: rpmtypes.h:30
rpmdsFree
rpmds rpmdsFree(rpmds ds)
Destroy a dependency set.
rpmrichParseType_e
rpmrichParseType_e
Definition: rpmds.h:474
_rpmds_nopromote
int _rpmds_nopromote
RPMSENSE_SCRIPT_POST
Definition: rpmds.h:36
rpmParseDSFlags
rpmsenseFlags rpmParseDSFlags(const char *str, size_t len)
Convert a string to the sense flags.
rpmdsNew
rpmds rpmdsNew(Header h, rpmTagVal tagN, int flags)
Create and load a dependency set.
rpmdsColor
rpm_color_t rpmdsColor(const rpmds ds)
Return current dependency color.
RPMRICHOP_ELSE
Definition: rpmds.h:471
RPMRICH_PARSE_OP
Definition: rpmds.h:478
rpmdsPutToHeader
int rpmdsPutToHeader(rpmds ds, Header h)
Write content of the dependency set to the header.
RPMSENSE_EQUAL
Definition: rpmds.h:29
rpmdsIsRich
int rpmdsIsRich(rpmds dep)
Return if current depenency is rich.
rpmrichOpStr
const char * rpmrichOpStr(rpmrichOp op)
Return a string representation of the rich dependency op.
rpmdsCompare
int rpmdsCompare(const rpmds A, const rpmds B)
Compare two versioned dependency ranges, looking for overlap.
rpmdsTagF
rpmTagVal rpmdsTagF(const rpmds ds)
Return current dependency type.
rpmSanitizeDSFlags
rpmsenseFlags rpmSanitizeDSFlags(rpmTagVal tagN, rpmsenseFlags Flags)
Return only those flags allowed for given type of dependencies.
rpmdsInit
rpmds rpmdsInit(rpmds ds)
Initialize dependency set iterator.
RPMSENSE_SCRIPT_VERIFY
Definition: rpmds.h:39
rpmdsEVR
const char * rpmdsEVR(const rpmds ds)
Return current dependency epoch-version-release.
rpmdsDNEVR
const char * rpmdsDNEVR(const rpmds ds)
Return current formatted dependency string.
RPMSENSE_INTERP
Definition: rpmds.h:34
RPMRICHOP_OR
Definition: rpmds.h:469
rpmdsInstance
unsigned int rpmdsInstance(rpmds ds)
Return dependency header instance, ie whether the dependency comes from an installed header or not...
rpmrichParseType
enum rpmrichParseType_e rpmrichParseType
RPMSENSE_TRIGGERUN
Definition: rpmds.h:44
rpmdsSetColor
rpm_color_t rpmdsSetColor(const rpmds ds, rpm_color_t color)
Return current dependency color.
RPMSENSE_POSTTRANS
Definition: rpmds.h:31
rpmrichParseFunction
rpmRC(* rpmrichParseFunction)(void *cbdata, rpmrichParseType type, const char *n, int nl, const char *e, int el, rpmsenseFlags sense, rpmrichOp op, char **emsg)
Definition: rpmds.h:481
rpmdsTi
int rpmdsTi(const rpmds ds)
Return current dependency triggerindex.
rpmsenseFlags
rpmFlags rpmsenseFlags
Definition: rpmds.h:55
RPMRICHOP_IF
Definition: rpmds.h:470
rpmdsSetNoPromote
int rpmdsSetNoPromote(rpmds ds, int nopromote)
Set "Don&#39;t promote Epoch:" flag.
rpmRC
enum rpmRC_e rpmRC
Package read return codes.
rpmrichParse
rpmRC rpmrichParse(const char **dstrp, char **emsg, rpmrichParseFunction cb, void *cbdata)
Parse a rich dependency string.
RPMSENSE_KEYRING
Definition: rpmds.h:50