rpm  5.4.14
rpmgi.h
Go to the documentation of this file.
1 #ifndef H_RPMGI
2 #define H_RPMGI
3 
8 #include <fts.h>
9 #include <argv.h>
10 #include <rpmtypes.h>
11 #include <rpmiotypes.h>
12 #include <rpmds.h>
13 #include <rpmte.h>
14 #include <rpmts.h>
15 #include <rpmtag.h>
16 #include <rpmio.h> /* XXX FD_t typedef */
17 
20 /*@-exportlocal@*/
21 /*@unchecked@*/
22 extern int _rpmgi_debug;
23 /*@=exportlocal@*/
24 
27 typedef enum rpmgiFlags_e {
29  RPMGI_TSADD = (1 << 0),
30  RPMGI_TSORDER = (1 << 1),
31  RPMGI_NOGLOB = (1 << 2),
32  RPMGI_NOMANIFEST = (1 << 3),
33  RPMGI_NOHEADER = (1 << 4),
34  RPMGI_ERASING = (1 << 5)
35 } rpmgiFlags;
36 
39 /*@unchecked@*/
40 extern rpmgiFlags giFlags;
41 
42 #if defined(_RPMGI_INTERNAL)
43 
45 struct rpmgi_s {
46  struct rpmioItem_s _item;
47 /*@refcounted@*/
48  rpmts ts;
49  int (*tsOrder) (rpmts ts);
50  rpmTag tag;
51 /*@kept@*/ /*@relnull@*/
52  const void * keyp;
53  size_t keylen;
56  int active;
57  int i;
58 /*@null@*/
59  const char * hdrPath;
60 /*@refcounted@*/ /*@null@*/
61  Header h;
62  int rc;
64 /*@null@*/
65  rpmtsi tsi;
66 
67 /*@null@*/
68  rpmmi mi;
69 
70 /*@refcounted@*/ /*@relnull@*/
71  FD_t fd;
72 
73  ARGV_t argv;
74  int argc;
75 
76  int ftsOpts;
77 /*@null@*/
78  FTS * ftsp;
79 /*@relnull@*/
80  FTSENT * fts;
81 /*@null@*/
82  rpmRC (*walkPathFilter) (rpmgi gi);
83 /*@null@*/
84  rpmRC (*stash) (rpmgi gi, Header h);
85 
86 #if defined(__LCLINT__)
87 /*@refs@*/
88  int nrefs;
89 #endif
90 };
91 #endif
92 
93 #ifdef __cplusplus
94 extern "C" {
95 #endif
96 
99 
106 /*@unused@*/ /*@null@*/
107 rpmgi rpmgiUnlink (/*@killref@*/ /*@only@*/ /*@null@*/ rpmgi gi,
108  /*@null@*/ const char * msg)
109  /*@modifies gi @*/;
110 #define rpmgiUnlink(_gi, _msg) \
111  ((rpmgi)rpmioUnlinkPoolItem((rpmioItem)(_gi), _msg, __FILE__, __LINE__))
112 
119 /*@unused@*/ /*@newref@*/ /*@null@*/
120 rpmgi rpmgiLink (/*@null@*/ rpmgi gi, /*@null@*/ const char * msg)
121  /*@modifies gi @*/;
122 #define rpmgiLink(_gi, _msg) \
123  ((rpmgi)rpmioLinkPoolItem((rpmioItem)(_gi), _msg, __FILE__, __LINE__))
124 
129 /*@null@*/
130 rpmgi rpmgiFree(/*@killref@*/ /*@only@*/ /*@null@*/ rpmgi gi)
131  /*@globals rpmGlobalMacroContext, h_errno, internalState @*/
132  /*@modifies gi, rpmGlobalMacroContext, h_errno, internalState @*/;
133 #define rpmgiFree(_gi) \
134  ((rpmgi)rpmioFreePoolItem((rpmioItem)(_gi), __FUNCTION__, __FILE__, __LINE__))
135 
144 /*@null@*/
145 rpmgi rpmgiNew(rpmts ts, int tag, /*@kept@*/ /*@null@*/ const void * keyp,
146  size_t keylen)
147  /*@globals internalState @*/
148  /*@modifies ts, internalState @*/;
149 
155 rpmRC rpmgiNext(/*@null@*/ rpmgi gi)
156  /*@globals rpmGlobalMacroContext, h_errno, internalState @*/
157  /*@modifies gi, rpmGlobalMacroContext, h_errno, internalState @*/;
158 
164 rpmgiFlags rpmgiGetFlags(/*@null@*/ rpmgi gi)
165  /*@*/;
166 
172 /*@observer@*/ /*@null@*/
173 const char * rpmgiHdrPath(/*@null@*/ rpmgi gi)
174  /*@*/;
175 
181 /*@null@*/
182 Header rpmgiHeader(/*@null@*/ rpmgi gi)
183  /*@*/;
184 
190 /*@null@*/
191 rpmts rpmgiTs(/*@null@*/ rpmgi gi)
192  /*@*/;
193 
199 /*@null@*/
200 int rpmgiRc(/*@null@*/ rpmgi gi)
201  /*@*/;
202 
208 const char * rpmgiEscapeSpaces(const char * s)
209  /*@*/;
210 
219 rpmRC rpmgiSetArgs(/*@null@*/ rpmgi gi, /*@null@*/ ARGV_t argv,
220  int ftsOpts, rpmgiFlags flags)
221  /*@globals internalState @*/
222  /*@modifies gi, internalState @*/;
223 
230 /*@null@*/
231 Header rpmgiReadHeader(rpmgi gi, const char * path)
232  /*@globals rpmGlobalMacroContext, h_errno, internalState @*/
233  /*@modifies gi, rpmGlobalMacroContext, h_errno, internalState @*/;
234 
237 #ifdef __cplusplus
238 }
239 #endif
240 
241 #endif /* H_RPMGI */
#define rpmgiFree(_gi)
Definition: rpmgi.h:133
int rpmgiRc(rpmgi gi)
Return current iteration item(s) exit code.
Definition: rpmgi.c:861
#define rpmgiLink(_gi, _msg)
Definition: rpmgi.h:122
rpmgiFlags rpmgiGetFlags(rpmgi gi)
Return current iteration flags.
Definition: rpmgi.c:837
Structures used for an &quot;rpmte&quot; transaction element.
int _rpmgi_debug
Definition: rpmgi.c:37
struct rpmts_s * rpmts
The RPM Transaction Set.
Definition: rpmtypes.h:14
int rc
Definition: poptALL.c:670
s ftsp
Definition: rpmfts-py.c:98
The Header data structure.
Definition: rpmdb.c:436
Header rpmgiHeader(rpmgi gi)
Return current iteration header.
Definition: rpmgi.c:847
enum rpmTag_e rpmTag
Definition: rpmtag.h:468
s fts
Definition: rpmfts-py.c:99
const char * rpmgiEscapeSpaces(const char *s)
Escape isspace(3) characters in string.
Definition: rpmgi.c:364
Header h
Definition: spec.c:739
argv
Definition: rpmmtree.c:3679
enum rpmRC_e rpmRC
RPM return codes.
Definition: signature.c:616
rpmgi rpmgiNew(rpmts ts, int tag, const void *keyp, size_t keylen)
Return a generalized iterator.
Definition: rpmgi.c:543
enum rpmgiFlags_e rpmgiFlags
rpmgiFlags giFlags
Definition: rpmgi.c:42
he tag
Definition: db3.c:1927
s active
Definition: rpmfts-py.c:100
Structure(s) used for dependency tag sets.
rpmRC rpmgiSetArgs(rpmgi gi, ARGV_t argv, int ftsOpts, rpmgiFlags flags)
Load iterator args.
Definition: rpmgi.c:866
The FD_t File Handle data structure.
Definition: fts.h:54
node fd
Definition: rpmfd-py.c:124
struct rpmtsi_s * rpmtsi
Transaction element iterator.
Definition: rpmte.h:31
const char * s
Definition: poptALL.c:734
Definition: fts.h:102
char * path
Definition: poptALL.c:744
rpmts rpmgiTs(rpmgi gi)
Return current iteration transaction set.
Definition: rpmgi.c:854
mi
Definition: rpmdb-py.c:159
Structures and prototypes used for an &quot;rpmts&quot; transaction set.
int flags
Definition: fnmatch.c:282
const char * msg
Definition: rpmts-py.c:976
rpmgiFlags_e
Definition: rpmgi.h:27
rpmRC rpmgiNext(rpmgi gi)
Perform next iteration step.
Definition: rpmgi.c:584
Header rpmgiReadHeader(rpmgi gi, const char *path)
Return header from package.
Definition: rpmgi.c:156
const char * rpmgiHdrPath(rpmgi gi)
Return current header path.
Definition: rpmgi.c:842
int
Save source and expand field into target.
Definition: rpmds.c:2709
ARGstr_t * ARGV_t
Definition: argv.h:12
#define rpmgiUnlink(_gi, _msg)
Definition: rpmgi.h:110
int i
Definition: spec.c:743
struct rpmgi_s * rpmgi
Generalized iterator.
Definition: rpmtypes.h:53