rpm  5.4.10
rpmspec.h
Go to the documentation of this file.
1 #ifndef _H_RPMSPEC_
2 #define _H_RPMSPEC_
3 
9 #include <rpmevr.h>
10 #include <rpmfi.h> /* XXX rpmfi typedef */
11 #include <rpmcli.h> /* XXX QVA_t typedef */
12 
15 typedef /*@abstract@*/ /*@refcounted@*/ struct Package_s * Package;
16 
19 typedef struct Source * SpecSource;
20 
24  int index;
25 /*@only@*/
26  char * fileName;
27 /*@only@*/
28  char * script;
29 /*@only@*/
30  char * prog;
31 /*@owned@*/
33 };
34 
35 #define RPMBUILD_DEFAULT_LANG "C"
36 
39 struct Source {
40 /*@owned@*/
41  const char * fullSource;
42 /*@dependent@*/ /*@relnull@*/
43  const char * source; /* Pointer into fullSource */
44  int flags;
46 /*@owned@*/
47  struct Source * next;
48 };
49 
52 /*@-typeuse@*/
53 typedef struct ReadLevelEntry {
54  int reading;
55 /*@dependent@*/
56  struct ReadLevelEntry * next;
57 } RLE_t;
58 /*@=typeuse@*/
59 
62 typedef struct OpenFileInfo {
63 /*@only@*/
64  const char * fileName;
65 /*@relnull@*/
67  int lineNum;
68  char readBuf[BUFSIZ];
69 /*@dependent@*/
70  char * readPtr;
71 /*@owned@*/
72  struct OpenFileInfo * next;
73 } OFI_t;
74 
77 typedef struct spectag_s {
78  int t_tag;
79  int t_startx;
80  int t_nlines;
81 /*@only@*/
82  const char * t_lang;
83 /*@only@*/
84  const char * t_msgid;
85 } * spectag;
86 
89 typedef struct spectags_s {
90 /*@owned@*/
92  int st_nalloc;
93  int st_ntags;
94 } * spectags;
95 
98 typedef struct speclines_s {
99 /*@only@*/
100  char **sl_lines;
103 } * speclines;
104 
108 struct Spec_s {
109  struct rpmioItem_s _item;
110 /*@only@*/
111  const char * specFile;
112 /*@only@*/
113  const char * buildSubdir;
114 /*@only@*/
115  const char * rootURL;
116 
117 /*@owned@*/ /*@null@*/
119 /*@owned@*/ /*@null@*/
121 
122 /*@owned@*/
124 /*@owned@*/
125  char *lbuf;
126  size_t lbuf_len;
127 /*@dependent@*/
128  char *lbufPtr;
129  char nextpeekc;
130 /*@dependent@*/
131  char * nextline;
132 /*@dependent@*/
133  char * line;
134  int lineNum;
135 
136 /*@owned@*/
138 
139 /*@owned@*/ /*@null@*/
141 /*@only@*/ /*@null@*/
142  const char ** BANames;
143  int BACount;
144  int recursing;
145  int toplevel;
146 
147  int force;
148  int anyarch;
149 
150 /*@null@*/
151  char * passPhrase;
153 /*@null@*/
154  const char * cookie;
155 
156 /*@owned@*/
157  struct Source * sources;
159  int noSource;
160 
161 /*@only@*/
162  const char * sourceRpmName;
163 /*@only@*/
164  unsigned char * sourcePkgId;
165 /*@refcounted@*/
167 /*@refcounted@*/
170 
171 /*@dependent@*/ /*@null@*/
173 
174  rpmRC (*_parseRCPOT) (Spec spec, Package pkg, const char *field, rpmTag tagN,
175  rpmuint32_t index, rpmsenseFlags tagflags);
176 
180 /*@only@*/
182 /*@only@*/
184 /*@only@*/
186 /*@only@*/
188 /*@only@*/
191  size_t nfoo;
192 /*@only@*/ /*@relnull@*/
194 
195  void * dig;
197  Package packages;
198 #if defined(__LCLINT__)
199 /*@refs@*/
200  int nrefs;
201 #endif
202 };
203 
207 struct Package_s {
208  struct rpmioItem_s _item;
209 /*@refcounted@*/
211 /*@refcounted@*/
213 /*@refcounted@*/
215 
216  int autoReq;
217  int autoProv;
218  int noarch;
219 
220 /*@only@*/
221  const char * preInFile;
222 /*@only@*/
223  const char * postInFile;
224 /*@only@*/
225  const char * preUnFile;
226 /*@only@*/
227  const char * postUnFile;
228 /*@only@*/
229  const char * preTransFile;
230 /*@only@*/
231  const char * postTransFile;
232 /*@only@*/
233  const char * verifyFile;
234 /*@only@*/
235  const char * sanityCheckFile;
237 /*@only@*/
239 
240 /*@only@*/
242 
243 /*@only@*/
244  const char * fileFile;
245 /*@only@*/
246  rpmiob fileList; /* If NULL, package will not be written */
247 
248  Package next;
249 #if defined(__LCLINT__)
250 /*@refs@*/
251  int nrefs;
252 #endif
253 };
254 
255 #ifdef __cplusplus
256 extern "C" {
257 #endif
258 
265 /*@null@*/
266 Spec freeSpec(/*@killref@*/ /*@null@*/ Spec spec)
267  /*@globals fileSystem, internalState @*/
268  /*@modifies spec, fileSystem, internalState @*/;
269 #define freeSpec(_spec) \
270  ((Spec)rpmioFreePoolItem((rpmioItem)(_spec), __FUNCTION__, __FILE__, __LINE__))
271 
276 /*@only@*/
277 Spec newSpec(void)
278  /*@globals rpmGlobalMacroContext, h_errno, internalState @*/
279  /*@modifies rpmGlobalMacroContext, internalState @*/;
280 
288 int rpmspecQuery(rpmts ts, QVA_t qva, const char * arg)
289  /*@globals rpmCLIMacroContext,
290  rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
291  /*@modifies ts, qva, rpmCLIMacroContext, rpmGlobalMacroContext,
292  fileSystem, internalState @*/;
293 
296 struct OpenFileInfo * newOpenFileInfo(void)
297  /*@*/;
298 
307 spectag stashSt(Spec spec, Header h, rpmTag tag, const char * lang)
308  /*@globals internalState @*/
309  /*@modifies spec->st, internalState @*/;
310 
319 int addSource(Spec spec, Package pkg, const char * field, rpmTag tag)
320  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
321  /*@modifies spec->sources, spec->numSources,
322  spec->st, spec->macros,
323  rpmGlobalMacroContext, fileSystem, internalState @*/;
324 
332 int parseNoSource(Spec spec, const char * field, rpmTag tag)
333  /*@*/;
334 
340 int SpecSourceCount(Spec spec)
341  /*@*/;
342 
349 SpecSource getSource(Spec spec, int num)
350  /*@*/;
351 
357 /*@exposed@*/
358 const char * specSourceName(SpecSource source)
359  /*@*/;
360 
366 /*@exposed@*/
367 const char * specFullSourceName(SpecSource source)
368  /*@*/;
369 
375 int specSourceNum(SpecSource source)
376  /*@*/;
377 
383 int specSourceFlags(SpecSource source)
384  /*@*/;
385 
391 /*@null@*/
392 #if defined(RPM_VENDOR_OPENPKG) /* splitted-source-directory */
393 const char * getSourceDir(rpmfileAttrs attr, const char *filename)
394 #else
395 const char * getSourceDir(rpmfileAttrs attr)
396 #endif
397  /*@*/;
398 
399 #ifdef __cplusplus
400 }
401 #endif
402 
403 #endif /* _H_SPEC_ */
int sourceHdrInit
Definition: rpmspec.h:169
rpmiob build
Definition: rpmspec.h:183
char * fileName
Definition: rpmspec.h:26
const char * fileName
Definition: rpmspec.h:64
char ** sl_lines
Definition: rpmspec.h:100
struct Source * SpecSource
Definition: rpmspec.h:19
struct spectags_s * spectags
struct speclines_s * speclines
rpmiob clean
Definition: rpmspec.h:189
const char * sourceRpmName
Definition: rpmspec.h:162
Package next
Definition: rpmspec.h:248
rpmiob fileList
Definition: rpmspec.h:246
int noSource
Definition: rpmspec.h:159
struct OpenFileInfo * next
Definition: rpmspec.h:72
const char * postInFile
Definition: rpmspec.h:223
spectag st_t
Definition: rpmspec.h:91
const char * rootURL
Definition: rpmspec.h:115
const char * specFile
Definition: rpmspec.h:111
Structure(s) used for file info tag sets.
char * lbuf
Definition: rpmspec.h:125
char * prog
Definition: rpmspec.h:30
The Header data structure.
const char * fileFile
Definition: rpmspec.h:244
struct OpenFileInfo OFI_t
int sl_nalloc
Definition: rpmspec.h:101
rpmuint32_t num
Definition: rpmspec.h:45
rpmiob check
Definition: rpmspec.h:187
int addSource(Spec spec, Package pkg, const char *field, rpmTag tag)
addSource.
Definition: spec.c:365
Header sourceHeader
Definition: rpmspec.h:166
size_t lbuf_len
Definition: rpmspec.h:126
struct Source * sources
Definition: rpmspec.h:157
const char ** BANames
Definition: rpmspec.h:142
struct rpmds_s * rpmds
Dependency tag sets from a header, so that a header can be discarded early.
Definition: rpmtypes.h:28
char * passPhrase
Definition: rpmspec.h:151
struct Source * next
Definition: rpmspec.h:47
Command line option information.
Definition: rpmcli.h:634
int t_tag
Definition: rpmspec.h:78
const char * fullSource
Definition: rpmspec.h:41
rpmiob prep
Definition: rpmspec.h:181
const char * source
Definition: rpmspec.h:43
Definition: rpmspec.h:39
int lineNum
Definition: rpmspec.h:67
Header header
Definition: rpmspec.h:210
unsigned int rpmuint32_t
Definition: rpmiotypes.h:25
char * nextline
Definition: rpmspec.h:131
const char * getSourceDir(rpmfileAttrs attr)
Return the macro directory location from source file flags.
Definition: build.c:24
int parseNoSource(Spec spec, const char *field, rpmTag tag)
parseNoSource.
Definition: spec.c:321
int recursing
Definition: rpmspec.h:144
SpecSource getSource(Spec spec, int num)
Return a source control structure.
Definition: spec.c:279
const char * cookie
Definition: rpmspec.h:154
char * line
Definition: rpmspec.h:133
struct rpmfi_s * rpmfi
File info tag sets from a header, so that a header can be discarded early.
Definition: rpmfi.h:78
rpmiob specialDoc
Definition: rpmspec.h:238
enum evrFlags_e rpmsenseFlags
Definition: rpmevr.h:72
MacroContext macros
Definition: rpmspec.h:172
int specSourceNum(SpecSource source)
Return the spec or source patch number.
Definition: spec.c:309
char nextpeekc
Definition: rpmspec.h:129
struct TriggerFileEntry * triggerFiles
Definition: rpmspec.h:241
struct tagStore_s * tagStore_t
Definition: rpmtag.h:522
int t_startx
Definition: rpmspec.h:79
const char * specSourceName(SpecSource source)
Return a ptr to the source file name.
Definition: spec.c:295
int autoProv
Definition: rpmspec.h:217
int anyarch
Definition: rpmspec.h:148
The FD_t File Handle data structure.
struct spectag_s * spectag
static const char * lang
The structure used to store values parsed from a spec file.
Definition: rpmspec.h:108
const char * specFullSourceName(SpecSource source)
Return a ptr to the full url of the source.
Definition: spec.c:302
const char * buildSubdir
Definition: rpmspec.h:113
struct ReadLevelEntry RLE_t
const char * preInFile
Definition: rpmspec.h:221
const char * t_lang
Definition: rpmspec.h:82
int SpecSourceCount(Spec spec)
Return the count of source set in specfile.
Definition: spec.c:272
struct Package_s * Package
Definition: rpmspec.h:15
struct TriggerFileEntry * next
Definition: rpmspec.h:32
size_t nfoo
Definition: rpmspec.h:191
int numSources
Definition: rpmspec.h:158
char * script
Definition: rpmspec.h:28
struct ReadLevelEntry * readStack
Definition: rpmspec.h:137
enum rpmfileAttrs_e rpmfileAttrs
File Attributes.
spectags st
Definition: rpmspec.h:120
Spec newSpec(void)
Create and initialize Spec structure.
Definition: spec.c:645
int BACount
Definition: rpmspec.h:143
int noarch
Definition: rpmspec.h:218
const char * postUnFile
Definition: rpmspec.h:227
enum rpmRC_e rpmRC
RPM return codes.
Package packages
Definition: rpmspec.h:197
const char * t_msgid
Definition: rpmspec.h:84
Spec * BASpecs
Definition: rpmspec.h:140
int timeCheck
Definition: rpmspec.h:152
spectag stashSt(Spec spec, Header h, rpmTag tag, const char *lang)
stashSt.
int rpmspecQuery(rpmts ts, QVA_t qva, const char *arg)
Function to query spec file(s).
Definition: spec.c:1003
char * readPtr
Definition: rpmspec.h:70
struct rpmts_s * rpmts
The RPM Transaction Set.
Definition: rpmtypes.h:14
struct MacroContext_s * MacroContext
Definition: rpmmacro.h:8
struct rpmiob_s * rpmiob
Definition: rpmiotypes.h:57
int sl_nlines
Definition: rpmspec.h:102
rpmds ds
Definition: rpmspec.h:212
int t_nlines
Definition: rpmspec.h:80
int lineNum
Definition: rpmspec.h:134
speclines sl
Definition: rpmspec.h:118
rpmfi fi
Definition: rpmspec.h:168
const char * verifyFile
Definition: rpmspec.h:233
int specSourceFlags(SpecSource source)
Return flags set for the source.
Definition: spec.c:316
int force
Definition: rpmspec.h:147
FD_t fd
Definition: rpmspec.h:66
The structure used to store values for a package.
Definition: rpmspec.h:207
const char * preUnFile
Definition: rpmspec.h:225
rpmiob install
Definition: rpmspec.h:185
int st_nalloc
Definition: rpmspec.h:92
rpmfi fi
Definition: rpmspec.h:214
enum rpmTag_e rpmTag
Definition: rpmtag.h:471
struct OpenFileInfo * newOpenFileInfo(void)
Definition: spec.c:716
tagStore_t foo
Definition: rpmspec.h:193
#define freeSpec(_spec)
Definition: rpmspec.h:269
int st_ntags
Definition: rpmspec.h:93
int toplevel
Definition: rpmspec.h:145
struct OpenFileInfo * fileStack
Definition: rpmspec.h:123
const char * postTransFile
Definition: rpmspec.h:231
void * dig
Definition: rpmspec.h:195
int flags
Definition: rpmspec.h:44
char * lbufPtr
Definition: rpmspec.h:128
struct ReadLevelEntry * next
Definition: rpmspec.h:56
const char * preTransFile
Definition: rpmspec.h:229
unsigned char * sourcePkgId
Definition: rpmspec.h:164
int autoReq
Definition: rpmspec.h:216
const char * sanityCheckFile
Definition: rpmspec.h:235