rpm  5.4.15
rpmrepo.h
Go to the documentation of this file.
1 #ifndef H_RPMREPO
2 #define H_RPMREPO
3 
8 #include <rpmiotypes.h>
9 #include <rpmio.h>
10 #include <argv.h>
11 #include <mire.h>
12 #include <popt.h>
13 
16 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmrepo_s * rpmrepo;
17 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmrfile_s * rpmrfile;
18 
21 /*@unchecked@*/
22 extern int _rpmrepo_debug;
23 
24 #if defined(_RPMREPO_INTERNAL)
25 
28 struct rpmrfile_s {
29 /*@observer@*/
30  const char * type;
31 /*@observer@*/
32  const char * xml_init;
33 /*@observer@*/ /*@relnull@*/
34  const char * xml_qfmt;
35 /*@observer@*/
36  const char * xml_fini;
37 /*@observer@*/
38  const char ** sql_init;
39 /*@observer@*/
40  const char * sql_qfmt;
41 #ifdef NOTYET /* XXX char **?!? */
42 /*@observer@*/
43  const char ** sql_fini;
44 #endif
45 /*@observer@*/
46  const char * yaml_init;
47 /*@observer@*/
48  const char * yaml_qfmt;
49 /*@observer@*/
50  const char * yaml_fini;
51 /*@observer@*/
52  const char * Packages_init;
53 /*@observer@*/
54  const char * Packages_qfmt;
55 /*@observer@*/
56  const char * Packages_fini;
57 /*@observer@*/
58  const char * Sources_init;
59 /*@observer@*/
60  const char * Sources_qfmt;
61 /*@observer@*/
62  const char * Sources_fini;
63 /*@relnull@*/
64  FD_t fd;
65 #if defined(WITH_SQLITE)
66  sqlite3 * sqldb;
67 #endif
68 /*@null@*/
69  const char * digest;
70 /*@null@*/
71  const char * Zdigest;
72  time_t ctime;
73 };
74 
78 #define _RFB(n) ((1U << (n)) | 0x40000000)
79 
83 typedef enum rpmrepoFlags_e {
84  REPO_FLAGS_NONE = 0,
85  REPO_FLAGS_DRYRUN = _RFB( 0),
86  REPO_FLAGS_PRETTY = _RFB( 1),
87  REPO_FLAGS_DATABASE = _RFB( 2),
88  REPO_FLAGS_CHECKTS = _RFB( 3),
89  REPO_FLAGS_SPLIT = _RFB( 4),
90  REPO_FLAGS_NOFOLLOW = _RFB( 5),
91  REPO_FLAGS_UNIQUEMDFN = _RFB( 6),
93  /* 7-31 unused */
94 } rpmrepoFlags;
95 
96 #define REPO_ISSET(_FLAG) ((repo->flags & ((REPO_FLAGS_##_FLAG) & ~0x40000000)) != REPO_FLAGS_NONE)
97 
98 struct rpmrepo_s {
99  struct rpmioItem_s _item;
100  const char * fn;
101 
102  rpmrepoFlags flags;
103  poptContext con;
104  const char ** av;
106  int quiet;
107  int verbose;
108 /*@null@*/
110 /*@relnull@*/
112  int nexcludes;
113 /*@null@*/
115 /*@relnull@*/
117  int nincludes;
118 /*@null@*/
119  const char * basedir;
120 /*@null@*/
121  const char * baseurl;
122 #ifdef NOTYET
123 /*@null@*/
124  const char * groupfile;
125 #endif
126 /*@relnull@*/
127  const char * outputdir;
128 
129 /*@null@*/
130  ARGV_t manifests;
131 
132 /*@observer@*/ /*@relnull@*/
133  const char * tempdir;
134 /*@observer@*/ /*@relnull@*/
135  const char * finaldir;
136 /*@observer@*/ /*@relnull@*/
137  const char * olddir;
138 
139  time_t mdtimestamp;
140 
141 /*@null@*/
142  void * _ts;
143 /*@null@*/
144  ARGV_t pkglist;
145  unsigned current;
146  unsigned pkgcount;
147 
148 /*@null@*/
149  ARGV_t directories;
150  int ftsoptions;
151  uint32_t pkgalgo;
152  uint32_t algo;
153  int compression;
154 /*@observer@*/
155  const char * markup;
156 /*@observer@*/ /*@null@*/
157  const char * suffix;
158 /*@observer@*/
159  const char * wmode;
160 
161  struct rpmrfile_s primary;
162  struct rpmrfile_s filelists;
163  struct rpmrfile_s other;
164  struct rpmrfile_s repomd;
165 
166 #if defined(__LCLINT__)
167 /*@refs@*/
168  int nrefs;
169 #endif
170 };
171 
172 #endif /* _RPMREPO_INTERNAL */
173 
174 #ifdef __cplusplus
175 extern "C" {
176 #endif
177 
183 /*@unused@*/ /*@null@*/
184 rpmrepo rpmrepoUnlink (/*@killref@*/ /*@only@*/ /*@null@*/ rpmrepo repo)
185  /*@modifies repo @*/;
186 #define rpmrepoUnlink(_repo) \
187  ((rpmrepo)rpmioUnlinkPoolItem((rpmioItem)(_repo), __FUNCTION__, __FILE__, __LINE__))
188 
194 /*@unused@*/ /*@newref@*/ /*@null@*/
195 rpmrepo rpmrepoLink (/*@null@*/ rpmrepo repo)
196  /*@modifies repo @*/;
197 #define rpmrepoLink(_repo) \
198  ((rpmrepo)rpmioLinkPoolItem((rpmioItem)(_repo), __FUNCTION__, __FILE__, __LINE__))
199 
205 /*@null@*/
206 rpmrepo rpmrepoFree(/*@killref@*/ /*@null@*/rpmrepo repo)
207  /*@globals fileSystem @*/
208  /*@modifies repo, fileSystem @*/;
209 #define rpmrepoFree(_repo) \
210  ((rpmrepo)rpmioFreePoolItem((rpmioItem)(_repo), __FUNCTION__, __FILE__, __LINE__))
211 
218 /*@newref@*/ /*@null@*/
219 rpmrepo rpmrepoNew(char ** av, int flags)
220  /*@globals fileSystem, internalState @*/
221  /*@modifies fileSystem, internalState @*/;
222 
228 /*@mayexit@*/
229 void rpmrepoError(int lvl, const char *fmt, ...)
230  /*@globals fileSystem @*/
231  /*@modifies fileSystem @*/;
232 
238 /*@null@*/
239 const char * rpmrepoRealpath(const char * lpath)
240  /*@globals fileSystem, internalState @*/
241  /*@modifies fileSystem, internalState @*/;
242 
249  /*@globals h_errno, rpmGlobalMacroContext, fileSystem, internalState @*/
250  /*@modifies repo, rpmGlobalMacroContext, fileSystem, internalState @*/;
251 
259 /*@null@*/
260 const char ** rpmrepoGetFileList(rpmrepo repo, const char *roots[],
261  const char * ext)
262  /*@globals fileSystem, internalState @*/
263  /*@modifies repo, fileSystem, internalState @*/;
264 
271  /*@globals h_errno, fileSystem, internalState @*/
272  /*@modifies fileSystem, internalState @*/;
273 
280  /*@globals h_errno, rpmGlobalMacroContext, fileSystem, internalState @*/
281  /*@modifies repo, rpmGlobalMacroContext, fileSystem, internalState @*/;
282 
289  /*@globals h_errno, rpmGlobalMacroContext, fileSystem, internalState @*/
290  /*@modifies repo, rpmGlobalMacroContext, fileSystem, internalState @*/;
291 
297 int rpmrepoDoFinalMove(rpmrepo repo)
298  /*@globals h_errno, rpmGlobalMacroContext, fileSystem, internalState @*/
299  /*@modifies rpmGlobalMacroContext, fileSystem, internalState @*/;
300 
301 #ifdef __cplusplus
302 }
303 #endif
304 
305 #endif /* H_RPMREPO */
static const char * suffix[]
Definition: rpmgrep.c:188
static const char Packages_qfmt[]
Definition: rpmrepo.c:132
struct rpmrfile_s * rpmrfile
Definition: rpmrepo.h:17
#define rpmrepoLink(_repo)
Definition: rpmrepo.h:197
int rpmrepoDoRepoMetadata(rpmrepo repo)
Write repository manifest.
Definition: rpmrepo.c:1083
static int nexcludes
Definition: rpmgrep.c:98
void rpmrepoError(int lvl, const char *fmt,...)
Print an error message and exit (if requested).
Definition: rpmrepo.c:427
#define rpmrepoFree(_repo)
Definition: rpmrepo.h:209
const char * rpmrepoRealpath(const char *lpath)
Return realpath(3) canonicalized absolute path.
Definition: rpmrepo.c:516
#define rpmrepoUnlink(_repo)
Definition: rpmrepo.h:186
RPM pattern matching.
struct miRE_s * miRE
Definition: mire.h:60
static int nincludes
Definition: rpmgrep.c:105
static ARGV_t include_patterns
Definition: rpmgrep.c:101
static miRE excludeMire
Definition: rpmgrep.c:96
The FD_t File Handle data structure.
int rpmrepoTestSetupDirs(rpmrepo repo)
Test for repository sanity.
Definition: rpmrepo.c:531
const char const bson int mongo_write_concern int flags
Definition: mongo.h:485
static ARGV_t exclude_patterns
Definition: rpmgrep.c:94
static miRE includeMire
Definition: rpmgrep.c:103
int rpmrepoCheckTimeStamps(rpmrepo repo)
Check that repository time stamp is newer than any contained package.
Definition: rpmrepo.c:682
rpmrepo rpmrepoNew(char **av, int flags)
Create and load a repo wrapper.
Definition: rpmrepo.c:1902
static int compression
Definition: rpmrepo.c:1652
int _rpmrepo_debug
Definition: rpmrepo.c:66
const char char type
Definition: bson.h:908
struct rpmrepo_s * rpmrepo
Definition: rpmrepo.h:16
static const char Sources_qfmt[]
Definition: rpmrepo.c:137
ARGstr_t * ARGV_t
Definition: argv.h:12
static cptr_t current[2]
Definition: rpmrc.c:128
int rpmrepoDoFinalMove(rpmrepo repo)
Rename temporary repository to final paths.
Definition: rpmrepo.c:1269
int rpmrepoDoPkgMetadata(rpmrepo repo)
Write repository metadata files.
Definition: rpmrepo.c:1574
const char ** rpmrepoGetFileList(rpmrepo repo, const char *roots[], const char *ext)
Walk file/directory trees, looking for files with an extension.
Definition: rpmrepo.c:623