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 
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 
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 
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 
145 
154 rpmds rpmdsSingle(rpmTagVal tagN, const char * N, const char * EVR, rpmsenseFlags Flags);
155 
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 
428  Header h, rpmTagVal tagN, rpmsenseFlags Flags);
429 
440  const char * N, const char * EVR, rpmsenseFlags Flags);
441 
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 {
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 */
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 */
RPMRICH_PARSE_ENTER
@ RPMRICH_PARSE_ENTER
Definition: rpmds.h:476
rpmFlags
uint32_t rpmFlags
Definition: rpmtypes.h:42
RPMRICH_PARSE_LEAVE
@ RPMRICH_PARSE_LEAVE
Definition: rpmds.h:477
rpmdsNoPromote
int rpmdsNoPromote(const rpmds ds)
rpmdsPutToHeader
int rpmdsPutToHeader(rpmds ds, Header h)
RPMSENSE_TRIGGERIN
@ RPMSENSE_TRIGGERIN
Definition: rpmds.h:43
RPMRICHOP_AND
@ RPMRICHOP_AND
Definition: rpmds.h:468
rpmdsFind
int rpmdsFind(rpmds ds, const rpmds ods)
rpmdsDNEVR
const char * rpmdsDNEVR(const rpmds ds)
rpmdsMatchesDep
int rpmdsMatchesDep(const Header h, int ix, const rpmds req, int nopromote)
rpmdsNext
int rpmdsNext(rpmds ds)
rpmdsNew
rpmds rpmdsNew(Header h, rpmTagVal tagN, int flags)
rpmdsAnyMatchesDep
int rpmdsAnyMatchesDep(const Header h, const rpmds req, int nopromote)
RPMSENSE_INTERP
@ RPMSENSE_INTERP
Definition: rpmds.h:34
RPMSENSE_MISSINGOK
@ RPMSENSE_MISSINGOK
Definition: rpmds.h:46
RPMRICHOP_SINGLE
@ RPMRICHOP_SINGLE
Definition: rpmds.h:467
RPMSENSE_SCRIPT_POSTUN
@ RPMSENSE_SCRIPT_POSTUN
Definition: rpmds.h:38
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
rpmdsInstance
unsigned int rpmdsInstance(rpmds ds)
rpmrichParseType_e
rpmrichParseType_e
Definition: rpmds.h:474
rpmdsD
char rpmdsD(const rpmds ds)
rpmrichOpStr
const char * rpmrichOpStr(rpmrichOp op)
Return a string representation of the rich dependency op.
rpmSanitizeDSFlags
rpmsenseFlags rpmSanitizeDSFlags(rpmTagVal tagN, rpmsenseFlags Flags)
rpmstrPool
struct rpmstrPool_s * rpmstrPool
Definition: rpmtypes.h:83
RPMSENSE_RPMLIB
@ RPMSENSE_RPMLIB
Definition: rpmds.h:48
rpmdsParseRichDep
rpmRC rpmdsParseRichDep(rpmds dep, rpmds *leftds, rpmds *rightds, rpmrichOp *op, char **emsg)
Parse a rich dependency string.
rpmdsThis
rpmds rpmdsThis(Header h, rpmTagVal tagN, rpmsenseFlags Flags)
rpmdsSetIx
int rpmdsSetIx(rpmds ds, int ix)
rpmdsTagEVR
rpmTagVal rpmdsTagEVR(const rpmds ds)
rpmdsColor
rpm_color_t rpmdsColor(const rpmds ds)
RPMSENSE_SCRIPT_VERIFY
@ RPMSENSE_SCRIPT_VERIFY
Definition: rpmds.h:39
rpmdsInit
rpmds rpmdsInit(rpmds ds)
RPMSENSE_PRETRANS
@ RPMSENSE_PRETRANS
Definition: rpmds.h:33
rpmdsFree
rpmds rpmdsFree(rpmds ds)
rpmdsFlags
rpmsenseFlags rpmdsFlags(const rpmds ds)
rpmdsSearch
int rpmdsSearch(rpmds ds, rpmds ods)
RPMSENSE_TRIGGERPREIN
@ RPMSENSE_TRIGGERPREIN
Definition: rpmds.h:49
_rpmds_nopromote
int _rpmds_nopromote
RPMSENSE_FIND_PROVIDES
@ RPMSENSE_FIND_PROVIDES
Definition: rpmds.h:41
rpmdsThisPool
rpmds rpmdsThisPool(rpmstrPool pool, Header h, rpmTagVal tagN, rpmsenseFlags Flags)
rpmdsLink
rpmds rpmdsLink(rpmds ds)
rpmdsSinglePoolTix
rpmds rpmdsSinglePoolTix(rpmstrPool pool, rpmTagVal tagN, const char *N, const char *EVR, rpmsenseFlags Flags, int triggerIndex)
rpmrichOp
enum rpmrichOp_e rpmrichOp
rpmdsTagN
rpmTagVal rpmdsTagN(const rpmds ds)
rpmdsSetColor
rpm_color_t rpmdsSetColor(const rpmds ds, rpm_color_t color)
rpmrichParseType
enum rpmrichParseType_e rpmrichParseType
rpmdsIsRich
int rpmdsIsRich(rpmds dep)
Return if current depenency is rich.
rpmdsTagTi
rpmTagVal rpmdsTagTi(const rpmds ds)
rpmdsCurrent
rpmds rpmdsCurrent(rpmds ds)
rpmdsSetNoPromote
int rpmdsSetNoPromote(rpmds ds, int nopromote)
RPMRICHOP_OR
@ RPMRICHOP_OR
Definition: rpmds.h:469
RPMSENSE_PREREQ
@ RPMSENSE_PREREQ
Definition: rpmds.h:32
rpmrichParse
rpmRC rpmrichParse(const char **dstrp, char **emsg, rpmrichParseFunction cb, void *cbdata)
Parse a rich dependency string.
rpmdsNotify
void rpmdsNotify(rpmds ds, const char *where, int rc)
rpmdsNewPool
rpmds rpmdsNewPool(rpmstrPool pool, Header h, rpmTagVal tagN, int flags)
rpmdsMerge
int rpmdsMerge(rpmds *dsp, rpmds ods)
rpmdsCompare
int rpmdsCompare(const rpmds A, const rpmds B)
RPMSENSE_ANY
@ RPMSENSE_ANY
Definition: rpmds.h:26
RPMSENSE_EQUAL
@ RPMSENSE_EQUAL
Definition: rpmds.h:29
RPMRICH_PARSE_OP
@ RPMRICH_PARSE_OP
Definition: rpmds.h:478
rpmdsRpmlib
int rpmdsRpmlib(rpmds *dsp, const void *tblp)
Load rpmlib provides into a dependency set.
rpmdsNVRMatchesDep
int rpmdsNVRMatchesDep(const Header h, const rpmds req, int nopromote)
RPMRICHOP_ELSE
@ RPMRICHOP_ELSE
Definition: rpmds.h:471
RPMSENSE_POSTTRANS
@ RPMSENSE_POSTTRANS
Definition: rpmds.h:31
RPMSENSE_KEYRING
@ RPMSENSE_KEYRING
Definition: rpmds.h:50
RPMSENSE_SCRIPT_PREUN
@ RPMSENSE_SCRIPT_PREUN
Definition: rpmds.h:37
rpmdsTi
int rpmdsTi(const rpmds ds)
rpm_color_t
uint32_t rpm_color_t
Definition: rpmtypes.h:38
RPMSENSE_LESS
@ RPMSENSE_LESS
Definition: rpmds.h:27
rpmdsN
const char * rpmdsN(const rpmds ds)
RPMSENSE_TRIGGERUN
@ RPMSENSE_TRIGGERUN
Definition: rpmds.h:44
Header
struct headerToken_s * Header
Definition: rpmtypes.h:24
rpmdsNewDNEVR
char * rpmdsNewDNEVR(const char *dspfx, const rpmds ds)
rpmdsTagF
rpmTagVal rpmdsTagF(const rpmds ds)
rpmTagVal
rpm_tag_t rpmTagVal
Definition: rpmtypes.h:30
RPMRICH_PARSE_SIMPLE
@ RPMRICH_PARSE_SIMPLE
Definition: rpmds.h:475
rpmsenseFlags
rpmFlags rpmsenseFlags
Definition: rpmds.h:55
rpmdsDToTagN
rpmTagVal rpmdsDToTagN(char deptype)
rpmdsEVR
const char * rpmdsEVR(const rpmds ds)
rpmdsSingle
rpmds rpmdsSingle(rpmTagVal tagN, const char *N, const char *EVR, rpmsenseFlags Flags)
RPMSENSE_FIND_REQUIRES
@ RPMSENSE_FIND_REQUIRES
Definition: rpmds.h:40
RPMSENSE_CONFIG
@ RPMSENSE_CONFIG
Definition: rpmds.h:52
rpmdsRpmlibPool
int rpmdsRpmlibPool(rpmstrPool pool, rpmds *dsp, const void *tblp)
Load rpmlib provides into a dependency set.
rpmrichOp_e
rpmrichOp_e
Definition: rpmds.h:466
rpmRC
enum rpmRC_e rpmRC
RPMSENSE_SCRIPT_PRE
@ RPMSENSE_SCRIPT_PRE
Definition: rpmds.h:35
RPMSENSE_GREATER
@ RPMSENSE_GREATER
Definition: rpmds.h:28
RPMRICHOP_IF
@ RPMRICHOP_IF
Definition: rpmds.h:470
rpmdsSinglePool
rpmds rpmdsSinglePool(rpmstrPool pool, rpmTagVal tagN, const char *N, const char *EVR, rpmsenseFlags Flags)
rpmsenseFlags_e
rpmsenseFlags_e
Definition: rpmds.h:25
RPMSENSE_SCRIPT_POST
@ RPMSENSE_SCRIPT_POST
Definition: rpmds.h:36
rpmdsIx
int rpmdsIx(const rpmds ds)
rpmParseDSFlags
rpmsenseFlags rpmParseDSFlags(const char *str, size_t len)
rpmdsCount
int rpmdsCount(const rpmds ds)
rpmds
struct rpmds_s * rpmds
Definition: rpmtypes.h:65
RPMSENSE_TRIGGERPOSTUN
@ RPMSENSE_TRIGGERPOSTUN
Definition: rpmds.h:45