rpm  6.0.91
The RPM Package Manager
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/rpmutil.h>
13 #include <rpm/rpmps.h>
14 
15 #ifdef __cplusplus
16 extern "C" {
17 #endif
18 
23  RPMSENSE_ANY = 0,
24  RPMSENSE_LESS = (1 << 1),
25  RPMSENSE_GREATER = (1 << 2),
26  RPMSENSE_EQUAL = (1 << 3),
27  /* bit 4 unused */
28  RPMSENSE_POSTTRANS = (1 << 5),
29  RPMSENSE_PREREQ = (1 << 6), /* legacy prereq dependency */
30  RPMSENSE_PRETRANS = (1 << 7),
31  RPMSENSE_INTERP = (1 << 8),
32  RPMSENSE_SCRIPT_PRE = (1 << 9),
33  RPMSENSE_SCRIPT_POST = (1 << 10),
34  RPMSENSE_SCRIPT_PREUN = (1 << 11),
35  RPMSENSE_SCRIPT_POSTUN = (1 << 12),
36  RPMSENSE_SCRIPT_VERIFY = (1 << 13),
37  RPMSENSE_FIND_REQUIRES = (1 << 14),
38  RPMSENSE_FIND_PROVIDES = (1 << 15),
40  RPMSENSE_TRIGGERIN = (1 << 16),
41  RPMSENSE_TRIGGERUN = (1 << 17),
42  RPMSENSE_TRIGGERPOSTUN = (1 << 18),
43  RPMSENSE_MISSINGOK = (1 << 19),
44  RPMSENSE_PREUNTRANS = (1 << 20),
45  RPMSENSE_POSTUNTRANS = (1 << 21),
46  /* bits 22-23 unused */
47  RPMSENSE_RPMLIB = (1 << 24),
48  RPMSENSE_TRIGGERPREIN = (1 << 25),
49  RPMSENSE_KEYRING = (1 << 26),
50  /* bit 27 unused */
51  RPMSENSE_CONFIG = (1 << 28),
52  RPMSENSE_META = (1 << 29),
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_PREUNTRANS | \
76  RPMSENSE_POSTUNTRANS | \
77  RPMSENSE_PREREQ | \
78  RPMSENSE_META | \
79  RPMSENSE_MISSINGOK)
80 
81 #define _notpre(_x) ((_x) & ~RPMSENSE_PREREQ)
82 #define _INSTALL_ONLY_MASK \
83  _notpre(RPMSENSE_SCRIPT_PRE|RPMSENSE_SCRIPT_POST|RPMSENSE_RPMLIB|RPMSENSE_KEYRING|RPMSENSE_PRETRANS|RPMSENSE_POSTTRANS)
84 #define _ERASE_ONLY_MASK \
85  _notpre(RPMSENSE_SCRIPT_PREUN|RPMSENSE_SCRIPT_POSTUN|RPMSENSE_PREUNTRANS|RPMSENSE_POSTUNTRANS)
86 #define _UNORDERED_ONLY_MASK \
87  _notpre(RPMSENSE_RPMLIB|RPMSENSE_CONFIG|RPMSENSE_PRETRANS|RPMSENSE_POSTTRANS|RPMSENSE_PREUNTRANS|RPMSENSE_POSTUNTRANS|RPMSENSE_SCRIPT_VERIFY|RPMSENSE_META)
88 #define _FORCE_ORDER_ONLY_MASK \
89  _notpre(RPMSENSE_SCRIPT_PRE|RPMSENSE_SCRIPT_POST|RPMSENSE_SCRIPT_PREUN|RPMSENSE_SCRIPT_POSTUN)
90 
91 #define isLegacyPreReq(_x) (((_x) & _ALL_REQUIRES_MASK) == RPMSENSE_PREREQ)
92 #define isInstallPreReq(_x) ((_x) & _INSTALL_ONLY_MASK)
93 #define isErasePreReq(_x) ((_x) & _ERASE_ONLY_MASK)
94 #define isUnorderedReq(_x) ((_x) & _UNORDERED_ONLY_MASK && \
95  !((_x) & _FORCE_ORDER_ONLY_MASK))
96 #define isTransientReq(_x) (isInstallPreReq(_x) && \
97  !isErasePreReq(_x) && \
98  !((_x) & RPMSENSE_META))
99 
106 rpmsenseFlags rpmSanitizeDSFlags(rpmTagVal tagN, rpmsenseFlags Flags);
107 
114 rpmsenseFlags rpmParseDSFlags(const char *str, size_t len);
115 
121 rpmds rpmdsLink(rpmds ds);
122 
128 rpmds rpmdsFree(rpmds ds);
129 
137 rpmds rpmdsNew(Header h, rpmTagVal tagN, int flags);
138 
145 char * rpmdsNewDNEVR(const char * dspfx, const rpmds ds);
146 
154 rpmds rpmdsThis(Header h, rpmTagVal tagN, rpmsenseFlags Flags);
155 
164 rpmds rpmdsSingle(rpmTagVal tagN, const char * N, const char * EVR, rpmsenseFlags Flags);
165 
171 rpmds rpmdsCurrent(rpmds ds);
172 
179 int rpmdsPutToHeader(rpmds ds, Header h);
180 
186 int rpmdsCount(const rpmds ds);
187 
193 int rpmdsIx(const rpmds ds);
194 
201 int rpmdsSetIx(rpmds ds, int ix);
202 
208 const char * rpmdsDNEVR(const rpmds ds);
209 
215 char rpmdsD(const rpmds ds);
216 
222 rpmTagVal rpmdsDToTagN(char deptype);
223 
229 const char * rpmdsN(const rpmds ds);
230 
236 const char * rpmdsEVR(const rpmds ds);
237 
243 int rpmdsTi(const rpmds ds);
244 
250 rpmsenseFlags rpmdsFlags(const rpmds ds);
251 
257 rpmTagVal rpmdsTagN(const rpmds ds);
258 
264 rpmTagVal rpmdsTagEVR(const rpmds ds);
265 
271 rpmTagVal rpmdsTagF(const rpmds ds);
272 
278 rpmTagVal rpmdsTagTi(const rpmds ds);
279 
286 unsigned int rpmdsInstance(rpmds ds);
287 
293 int rpmdsIsWeak(rpmds ds);
294 
300 int rpmdsIsReverse(rpmds ds);
301 
308 int rpmdsIsSysuser(rpmds ds, char **sysuser);
309 
315 rpm_color_t rpmdsColor(const rpmds ds);
316 
323 rpm_color_t rpmdsSetColor(const rpmds ds, rpm_color_t color);
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 
414 int rpmdsUname(rpmds * dsp);
415 
421 int rpmdsCpuinfo(rpmds * dsp);
422 
431 rpmds rpmdsNewPool(rpmstrPool pool, Header h, rpmTagVal tagN, int flags);
432 
441 rpmds rpmdsThisPool(rpmstrPool pool,
442  Header h, rpmTagVal tagN, rpmsenseFlags Flags);
443 
453 rpmds rpmdsSinglePool(rpmstrPool pool, rpmTagVal tagN,
454  const char * N, const char * EVR, rpmsenseFlags Flags);
455 
466 rpmds rpmdsSinglePoolTix(rpmstrPool pool, rpmTagVal tagN,
467  const char * N, const char * EVR,
468  rpmsenseFlags Flags, int triggerIndex);
469 
477 int rpmdsRpmlibPool(rpmstrPool pool, rpmds * dsp, const void * tblp);
478 
485 int rpmdsUnamePool(rpmstrPool pool, rpmds * dsp);
486 
493 int rpmdsCpuinfoPool(rpmstrPool pool, rpmds * dsp);
494 
495 
496 typedef enum rpmrichOp_e {
497  RPMRICHOP_NONE = 0,
498  RPMRICHOP_SINGLE = 1,
499  RPMRICHOP_AND = 2,
500  RPMRICHOP_OR = 3,
501  RPMRICHOP_IF = 4,
502  RPMRICHOP_ELSE = 5,
503  RPMRICHOP_WITH = 6,
504  RPMRICHOP_WITHOUT = 7,
505  RPMRICHOP_UNLESS = 8
506 } rpmrichOp;
507 
508 typedef enum rpmrichParseType_e {
509  RPMRICH_PARSE_SIMPLE = 1, /* standard N <=> EVR dep */
510  RPMRICH_PARSE_ENTER = 2, /* entering sub-dependency */
511  RPMRICH_PARSE_LEAVE = 3, /* leaving sub-dependency */
512  RPMRICH_PARSE_OP = 4 /* parsed a rich dependency op */
513 } rpmrichParseType;
514 
515 typedef rpmRC (*rpmrichParseFunction) (void *cbdata, rpmrichParseType type,
516  const char *n, int nl, const char *e, int el, rpmsenseFlags sense,
517  rpmrichOp op, char **emsg);
518 
527 rpmRC rpmrichParse(const char **dstrp, char **emsg, rpmrichParseFunction cb, void *cbdata);
528 
538 rpmRC rpmrichParseForTag(const char **dstrp, char **emsg, rpmrichParseFunction cb, void *cbdata, rpmTagVal tagN);
539 
540 
546 int rpmdsIsRich(rpmds dep);
547 
553 const char *rpmrichOpStr(rpmrichOp op);
554 
564 rpmRC rpmdsParseRichDep(rpmds dep, rpmds *leftds, rpmds *rightds, rpmrichOp *op, char **emsg);
565 
566 #ifdef __cplusplus
567 }
568 #endif
569 
570 #endif /* H_RPMDS */
rpmds rpmdsCurrent(rpmds ds)
int rpmdsNext(rpmds ds)
int rpmdsMatchesDep(const Header h, int ix, const rpmds req, int nopromote)
rpmRC rpmrichParseForTag(const char **dstrp, char **emsg, rpmrichParseFunction cb, void *cbdata, rpmTagVal tagN)
rpmds rpmdsNewPool(rpmstrPool pool, Header h, rpmTagVal tagN, int flags)
Definition: rpmds.h:44
Definition: rpmds.h:48
rpmTagVal rpmdsTagN(const rpmds ds)
rpmRC rpmdsParseRichDep(rpmds dep, rpmds *leftds, rpmds *rightds, rpmrichOp *op, char **emsg)
rpmTagVal rpmdsTagTi(const rpmds ds)
Definition: rpmds.h:38
char * rpmdsNewDNEVR(const char *dspfx, const rpmds ds)
int rpmdsFind(rpmds ds, const rpmds ods)
int rpmdsMerge(rpmds *dsp, rpmds ods)
int rpmdsIx(const rpmds ds)
Definition: rpmds.h:32
int rpmdsNVRMatchesDep(const Header h, const rpmds req, int nopromote)
rpmds rpmdsLink(rpmds ds)
int rpmdsCpuinfoPool(rpmstrPool pool, rpmds *dsp)
Definition: rpmds.h:47
int rpmdsUname(rpmds *dsp)
Definition: rpmds.h:30
Definition: rpmds.h:34
Definition: rpmds.h:40
Definition: rpmds.h:45
int rpmdsCpuinfo(rpmds *dsp)
int rpmdsRpmlib(rpmds *dsp, const void *tblp)
int rpmdsRpmlibPool(rpmstrPool pool, rpmds *dsp, const void *tblp)
rpmsenseFlags rpmdsFlags(const rpmds ds)
rpmsenseFlags_e
Definition: rpmds.h:22
int rpmdsSetIx(rpmds ds, int ix)
int rpmdsIsWeak(rpmds ds)
rpmTagVal rpmdsTagEVR(const rpmds ds)
const char * rpmdsN(const rpmds ds)
int rpmdsSearch(rpmds ds, rpmds ods)
Definition: rpmds.h:35
int rpmdsAnyMatchesDep(const Header h, const rpmds req, int nopromote)
Definition: rpmds.h:37
Definition: rpmds.h:43
rpmds rpmdsSinglePoolTix(rpmstrPool pool, rpmTagVal tagN, const char *N, const char *EVR, rpmsenseFlags Flags, int triggerIndex)
rpmds rpmdsThisPool(rpmstrPool pool, Header h, rpmTagVal tagN, rpmsenseFlags Flags)
Definition: rpmds.h:42
rpmds rpmdsThis(Header h, rpmTagVal tagN, rpmsenseFlags Flags)
struct headerToken_s * Header
Definition: rpmtypes.h:24
int rpmdsCount(const rpmds ds)
char rpmdsD(const rpmds ds)
rpmds rpmdsSinglePool(rpmstrPool pool, rpmTagVal tagN, const char *N, const char *EVR, rpmsenseFlags Flags)
rpmds rpmdsSingle(rpmTagVal tagN, const char *N, const char *EVR, rpmsenseFlags Flags)
rpmTagVal rpmdsDToTagN(char deptype)
rpmds rpmdsFree(rpmds ds)
Definition: rpmds.h:33
rpmsenseFlags rpmParseDSFlags(const char *str, size_t len)
rpmds rpmdsNew(Header h, rpmTagVal tagN, int flags)
rpm_color_t rpmdsColor(const rpmds ds)
int rpmdsPutToHeader(rpmds ds, Header h)
int rpmdsIsRich(rpmds dep)
const char * rpmrichOpStr(rpmrichOp op)
int rpmdsCompare(const rpmds A, const rpmds B)
rpmTagVal rpmdsTagF(const rpmds ds)
rpmsenseFlags rpmSanitizeDSFlags(rpmTagVal tagN, rpmsenseFlags Flags)
rpmds rpmdsInit(rpmds ds)
Definition: rpmds.h:36
const char * rpmdsEVR(const rpmds ds)
const char * rpmdsDNEVR(const rpmds ds)
Definition: rpmds.h:31
unsigned int rpmdsInstance(rpmds ds)
Definition: rpmds.h:41
rpm_color_t rpmdsSetColor(const rpmds ds, rpm_color_t color)
int rpmdsIsSysuser(rpmds ds, char **sysuser)
int rpmdsIsReverse(rpmds ds)
Definition: rpmds.h:28
int rpmdsTi(const rpmds ds)
Definition: rpmds.h:52
int rpmdsUnamePool(rpmstrPool pool, rpmds *dsp)
enum rpmRC_e rpmRC
rpmRC rpmrichParse(const char **dstrp, char **emsg, rpmrichParseFunction cb, void *cbdata)