rpm 6.1.90
The RPM Package Manager
Loading...
Searching...
No Matches
rpmds.h
Go to the documentation of this file.
1#ifndef H_RPMDS
2#define H_RPMDS
3
8
9#include <time.h>
10
11#include <rpm/rpmtypes.h>
12#include <rpm/rpmutil.h>
13#include <rpm/rpmps.h>
14
15#ifdef __cplusplus
16extern "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),
39
40 RPMSENSE_TRIGGERIN = (1 << 16),
41 RPMSENSE_TRIGGERUN = (1 << 17),
43 RPMSENSE_MISSINGOK = (1 << 19),
44 RPMSENSE_PREUNTRANS = (1 << 20),
46 /* bits 22-23 unused */
47 RPMSENSE_RPMLIB = (1 << 24),
49 RPMSENSE_KEYRING = (1 << 26),
50 /* bit 27 unused */
51 RPMSENSE_CONFIG = (1 << 28),
52 RPMSENSE_META = (1 << 29),
53};
54
55typedef 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
106RPM_PUBLIC_API
107rpmsenseFlags rpmSanitizeDSFlags(rpmTagVal tagN, rpmsenseFlags Flags);
108
115RPM_PUBLIC_API
116rpmsenseFlags rpmParseDSFlags(const char *str, size_t len);
117
123RPM_PUBLIC_API
124rpmds rpmdsLink(rpmds ds);
125
131RPM_PUBLIC_API
132rpmds rpmdsFree(rpmds ds);
133
141RPM_PUBLIC_API
142rpmds rpmdsNew(Header h, rpmTagVal tagN, int flags);
143
150RPM_PUBLIC_API
151char * rpmdsNewDNEVR(const char * dspfx, const rpmds ds);
152
160RPM_PUBLIC_API
161rpmds rpmdsThis(Header h, rpmTagVal tagN, rpmsenseFlags Flags);
162
171RPM_PUBLIC_API
172rpmds rpmdsSingle(rpmTagVal tagN, const char * N, const char * EVR, rpmsenseFlags Flags);
173
179RPM_PUBLIC_API
180rpmds rpmdsCurrent(rpmds ds);
181
188RPM_PUBLIC_API
189int rpmdsPutToHeader(rpmds ds, Header h);
190
196RPM_PUBLIC_API
197int rpmdsCount(const rpmds ds);
198
204RPM_PUBLIC_API
205int rpmdsIx(const rpmds ds);
206
213RPM_PUBLIC_API
214int rpmdsSetIx(rpmds ds, int ix);
215
221RPM_PUBLIC_API
222const char * rpmdsDNEVR(const rpmds ds);
223
229RPM_PUBLIC_API
230char rpmdsD(const rpmds ds);
231
237RPM_PUBLIC_API
238rpmTagVal rpmdsDToTagN(char deptype);
239
245RPM_PUBLIC_API
246const char * rpmdsN(const rpmds ds);
247
253RPM_PUBLIC_API
254const char * rpmdsEVR(const rpmds ds);
255
261RPM_PUBLIC_API
262int rpmdsTi(const rpmds ds);
263
269RPM_PUBLIC_API
270rpmsenseFlags rpmdsFlags(const rpmds ds);
271
277RPM_PUBLIC_API
278rpmTagVal rpmdsTagN(const rpmds ds);
279
285RPM_PUBLIC_API
286rpmTagVal rpmdsTagEVR(const rpmds ds);
287
293RPM_PUBLIC_API
294rpmTagVal rpmdsTagF(const rpmds ds);
295
301RPM_PUBLIC_API
302rpmTagVal rpmdsTagTi(const rpmds ds);
303
310RPM_PUBLIC_API
311unsigned int rpmdsInstance(rpmds ds);
312
318RPM_PUBLIC_API
319int rpmdsIsWeak(rpmds ds);
320
326RPM_PUBLIC_API
327int rpmdsIsReverse(rpmds ds);
328
335RPM_PUBLIC_API
336int rpmdsIsSysuser(rpmds ds, char **sysuser);
337
343RPM_PUBLIC_API
344rpm_color_t rpmdsColor(const rpmds ds);
345
352RPM_PUBLIC_API
353rpm_color_t rpmdsSetColor(const rpmds ds, rpm_color_t color);
354
360RPM_PUBLIC_API
361int rpmdsNext(rpmds ds);
362
368RPM_PUBLIC_API
369rpmds rpmdsInit(rpmds ds);
370
377RPM_PUBLIC_API
378int rpmdsFind(rpmds ds, const rpmds ods);
379
386RPM_PUBLIC_API
387int rpmdsMerge(rpmds * dsp, rpmds ods);
388
397RPM_PUBLIC_API
398int rpmdsSearch(rpmds ds, rpmds ods);
399
406RPM_PUBLIC_API
407int rpmdsCompare(const rpmds A, const rpmds B);
408
416RPM_PUBLIC_API
417int rpmdsAnyMatchesDep (const Header h, const rpmds req, int nopromote);
418
427RPM_PUBLIC_API
428int rpmdsMatchesDep (const Header h, int ix, const rpmds req, int nopromote);
429
437RPM_PUBLIC_API
438int rpmdsNVRMatchesDep(const Header h, const rpmds req, int nopromote);
439
446RPM_PUBLIC_API
447int rpmdsRpmlib(rpmds * dsp, const void * tblp);
448
457RPM_PUBLIC_API
458rpmds rpmdsNewPool(rpmstrPool pool, Header h, rpmTagVal tagN, int flags);
459
468RPM_PUBLIC_API
469rpmds rpmdsThisPool(rpmstrPool pool,
470 Header h, rpmTagVal tagN, rpmsenseFlags Flags);
471
481RPM_PUBLIC_API
482rpmds rpmdsSinglePool(rpmstrPool pool, rpmTagVal tagN,
483 const char * N, const char * EVR, rpmsenseFlags Flags);
484
495RPM_PUBLIC_API
496rpmds rpmdsSinglePoolTix(rpmstrPool pool, rpmTagVal tagN,
497 const char * N, const char * EVR,
498 rpmsenseFlags Flags, int triggerIndex);
499
507RPM_PUBLIC_API
508int rpmdsRpmlibPool(rpmstrPool pool, rpmds * dsp, const void * tblp);
509
510
511typedef enum rpmrichOp_e {
512 RPMRICHOP_NONE = 0,
513 RPMRICHOP_SINGLE = 1,
514 RPMRICHOP_AND = 2,
515 RPMRICHOP_OR = 3,
516 RPMRICHOP_IF = 4,
517 RPMRICHOP_ELSE = 5,
518 RPMRICHOP_WITH = 6,
519 RPMRICHOP_WITHOUT = 7,
520 RPMRICHOP_UNLESS = 8
521} rpmrichOp;
522
523typedef enum rpmrichParseType_e {
524 RPMRICH_PARSE_SIMPLE = 1, /* standard N <=> EVR dep */
525 RPMRICH_PARSE_ENTER = 2, /* entering sub-dependency */
526 RPMRICH_PARSE_LEAVE = 3, /* leaving sub-dependency */
527 RPMRICH_PARSE_OP = 4 /* parsed a rich dependency op */
528} rpmrichParseType;
529
530typedef rpmRC (*rpmrichParseFunction) (void *cbdata, rpmrichParseType type,
531 const char *n, int nl, const char *e, int el, rpmsenseFlags sense,
532 rpmrichOp op, char **emsg);
533
542RPM_PUBLIC_API
543rpmRC rpmrichParse(const char **dstrp, char **emsg, rpmrichParseFunction cb, void *cbdata);
544
554RPM_PUBLIC_API
555rpmRC rpmrichParseForTag(const char **dstrp, char **emsg, rpmrichParseFunction cb, void *cbdata, rpmTagVal tagN);
556
557
563RPM_PUBLIC_API
564int rpmdsIsRich(rpmds dep);
565
571RPM_PUBLIC_API
572const char *rpmrichOpStr(rpmrichOp op);
573
583RPM_PUBLIC_API
584rpmRC rpmdsParseRichDep(rpmds dep, rpmds *leftds, rpmds *rightds, rpmrichOp *op, char **emsg);
585
586#ifdef __cplusplus
587}
588#endif
589
590#endif /* H_RPMDS */
RPM_PUBLIC_API int rpmdsSearch(rpmds ds, rpmds ods)
RPM_PUBLIC_API rpmds rpmdsSinglePool(rpmstrPool pool, rpmTagVal tagN, const char *N, const char *EVR, rpmsenseFlags Flags)
RPM_PUBLIC_API rpmds rpmdsSinglePoolTix(rpmstrPool pool, rpmTagVal tagN, const char *N, const char *EVR, rpmsenseFlags Flags, int triggerIndex)
RPM_PUBLIC_API rpmTagVal rpmdsTagEVR(const rpmds ds)
RPM_PUBLIC_API rpmsenseFlags rpmdsFlags(const rpmds ds)
RPM_PUBLIC_API int rpmdsSetIx(rpmds ds, int ix)
RPM_PUBLIC_API rpmds rpmdsSingle(rpmTagVal tagN, const char *N, const char *EVR, rpmsenseFlags Flags)
RPM_PUBLIC_API const char * rpmdsN(const rpmds ds)
RPM_PUBLIC_API rpmsenseFlags rpmSanitizeDSFlags(rpmTagVal tagN, rpmsenseFlags Flags)
RPM_PUBLIC_API unsigned int rpmdsInstance(rpmds ds)
RPM_PUBLIC_API char * rpmdsNewDNEVR(const char *dspfx, const rpmds ds)
RPM_PUBLIC_API rpmds rpmdsThisPool(rpmstrPool pool, Header h, rpmTagVal tagN, rpmsenseFlags Flags)
RPM_PUBLIC_API int rpmdsIsReverse(rpmds ds)
RPM_PUBLIC_API int rpmdsNext(rpmds ds)
RPM_PUBLIC_API int rpmdsMerge(rpmds *dsp, rpmds ods)
RPM_PUBLIC_API rpm_color_t rpmdsColor(const rpmds ds)
RPM_PUBLIC_API int rpmdsAnyMatchesDep(const Header h, const rpmds req, int nopromote)
RPM_PUBLIC_API int rpmdsFind(rpmds ds, const rpmds ods)
RPM_PUBLIC_API char rpmdsD(const rpmds ds)
RPM_PUBLIC_API rpmds rpmdsFree(rpmds ds)
RPM_PUBLIC_API rpmds rpmdsInit(rpmds ds)
RPM_PUBLIC_API rpm_color_t rpmdsSetColor(const rpmds ds, rpm_color_t color)
RPM_PUBLIC_API const char * rpmdsDNEVR(const rpmds ds)
RPM_PUBLIC_API int rpmdsIsSysuser(rpmds ds, char **sysuser)
RPM_PUBLIC_API rpmsenseFlags rpmParseDSFlags(const char *str, size_t len)
RPM_PUBLIC_API int rpmdsIx(const rpmds ds)
RPM_PUBLIC_API int rpmdsCompare(const rpmds A, const rpmds B)
RPM_PUBLIC_API rpmds rpmdsThis(Header h, rpmTagVal tagN, rpmsenseFlags Flags)
RPM_PUBLIC_API rpmTagVal rpmdsTagTi(const rpmds ds)
RPM_PUBLIC_API int rpmdsMatchesDep(const Header h, int ix, const rpmds req, int nopromote)
RPM_PUBLIC_API rpmTagVal rpmdsTagN(const rpmds ds)
RPM_PUBLIC_API int rpmdsIsWeak(rpmds ds)
RPM_PUBLIC_API int rpmdsCount(const rpmds ds)
RPM_PUBLIC_API int rpmdsTi(const rpmds ds)
RPM_PUBLIC_API const char * rpmdsEVR(const rpmds ds)
RPM_PUBLIC_API rpmTagVal rpmdsDToTagN(char deptype)
RPM_PUBLIC_API int rpmdsNVRMatchesDep(const Header h, const rpmds req, int nopromote)
RPM_PUBLIC_API rpmds rpmdsCurrent(rpmds ds)
rpmsenseFlags_e
Definition rpmds.h:22
RPM_PUBLIC_API rpmTagVal rpmdsTagF(const rpmds ds)
RPM_PUBLIC_API rpmds rpmdsNewPool(rpmstrPool pool, Header h, rpmTagVal tagN, int flags)
RPM_PUBLIC_API rpmds rpmdsLink(rpmds ds)
RPM_PUBLIC_API rpmds rpmdsNew(Header h, rpmTagVal tagN, int flags)
RPM_PUBLIC_API int rpmdsPutToHeader(rpmds ds, Header h)
@ RPMSENSE_POSTUNTRANS
Definition rpmds.h:45
@ RPMSENSE_FIND_PROVIDES
Definition rpmds.h:38
@ RPMSENSE_SCRIPT_POSTUN
Definition rpmds.h:35
@ RPMSENSE_TRIGGERPREIN
Definition rpmds.h:48
@ RPMSENSE_INTERP
Definition rpmds.h:31
@ RPMSENSE_TRIGGERUN
Definition rpmds.h:41
@ RPMSENSE_PREUNTRANS
Definition rpmds.h:44
@ RPMSENSE_FIND_REQUIRES
Definition rpmds.h:37
@ RPMSENSE_MISSINGOK
Definition rpmds.h:43
@ RPMSENSE_TRIGGERIN
Definition rpmds.h:40
@ RPMSENSE_TRIGGERPOSTUN
Definition rpmds.h:42
@ RPMSENSE_META
Definition rpmds.h:52
@ RPMSENSE_SCRIPT_PRE
Definition rpmds.h:32
@ RPMSENSE_SCRIPT_VERIFY
Definition rpmds.h:36
@ RPMSENSE_SCRIPT_PREUN
Definition rpmds.h:34
@ RPMSENSE_RPMLIB
Definition rpmds.h:47
@ RPMSENSE_SCRIPT_POST
Definition rpmds.h:33
@ RPMSENSE_POSTTRANS
Definition rpmds.h:28
@ RPMSENSE_PRETRANS
Definition rpmds.h:30
enum rpmRC_e rpmRC
struct headerToken_s * Header
Definition rpmtypes.h:24
RPM_PUBLIC_API int rpmdsRpmlib(rpmds *dsp, const void *tblp)
RPM_PUBLIC_API int rpmdsIsRich(rpmds dep)
RPM_PUBLIC_API const char * rpmrichOpStr(rpmrichOp op)
RPM_PUBLIC_API rpmRC rpmdsParseRichDep(rpmds dep, rpmds *leftds, rpmds *rightds, rpmrichOp *op, char **emsg)
RPM_PUBLIC_API rpmRC rpmrichParse(const char **dstrp, char **emsg, rpmrichParseFunction cb, void *cbdata)
RPM_PUBLIC_API rpmRC rpmrichParseForTag(const char **dstrp, char **emsg, rpmrichParseFunction cb, void *cbdata, rpmTagVal tagN)
RPM_PUBLIC_API int rpmdsRpmlibPool(rpmstrPool pool, rpmds *dsp, const void *tblp)