rpm  5.4.14
rpmspec.h
Go to the documentation of this file.
1 #ifndef _H_RPMSPEC_
2 #define _H_RPMSPEC_
3 
9 #include <sys/types.h> /* XXX size_t typedef */
10 #include <rpmtypes.h>
11 #include <rpmiotypes.h>
12 #include <rpmevr.h>
13 #include <rpmfi.h> /* XXX rpmfi typedef */
14 #include <rpmcli.h> /* XXX QVA_t typedef */
15 #include <rpmtag.h>
16 #include <rpmio.h> /* XXX FD_t typedef */
17 
20 typedef /*@abstract@*/ /*@refcounted@*/ struct Package_s * Package;
21 
24 typedef struct Source * SpecSource;
25 
29  int index;
30 /*@only@*/
31  char * fileName;
32 /*@only@*/
33  char * script;
34 /*@only@*/
35  char * prog;
36 /*@owned@*/
38 };
39 
40 #define RPMBUILD_DEFAULT_LANG "C"
41 
44 struct Source {
45 /*@owned@*/
46  const char * fullSource;
47 /*@dependent@*/ /*@relnull@*/
48  const char * source; /* Pointer into fullSource */
49  int flags;
51 /*@owned@*/
52  struct Source * next;
53 };
54 
57 /*@-typeuse@*/
58 typedef struct ReadLevelEntry {
59  int reading;
60 /*@dependent@*/
61  struct ReadLevelEntry * next;
62 } RLE_t;
63 /*@=typeuse@*/
64 
67 typedef struct OpenFileInfo {
68 /*@only@*/
69  const char * fileName;
70 /*@relnull@*/
72  int lineNum;
73  char readBuf[BUFSIZ];
74 /*@dependent@*/
75  char * readPtr;
76 /*@owned@*/
77  struct OpenFileInfo * next;
78 } OFI_t;
79 
82 typedef struct spectag_s {
83  int t_tag;
84  int t_startx;
85  int t_nlines;
86 /*@only@*/
87  const char * t_lang;
88 /*@only@*/
89  const char * t_msgid;
90 } * spectag;
91 
94 typedef struct spectags_s {
95 /*@owned@*/
97  int st_nalloc;
98  int st_ntags;
99 } * spectags;
100 
103 typedef struct speclines_s {
104 /*@only@*/
105  char **sl_lines;
108 } * speclines;
109 
113 struct Spec_s {
115 /*@only@*/
116  const char * specFile;
117 /*@only@*/
118  const char * buildSubdir;
119 /*@only@*/
120  const char * rootURL;
121 
122 /*@owned@*/ /*@null@*/
124 /*@owned@*/ /*@null@*/
126 
127 /*@owned@*/
129 /*@owned@*/
130  char *lbuf;
131  size_t lbuf_len;
132 /*@dependent@*/
133  char *lbufPtr;
134  char nextpeekc;
135 /*@dependent@*/
136  char * nextline;
137 /*@dependent@*/
138  char * line;
139  int lineNum;
140 
141 /*@owned@*/
143 
144 /*@owned@*/ /*@null@*/
146 /*@only@*/ /*@null@*/
147  const char ** BANames;
148  int BACount;
149  int recursing;
150  int toplevel;
151 
152  int force;
153  int anyarch;
154 
155 /*@null@*/
156  char * passPhrase;
158 /*@null@*/
159  const char * cookie;
160 
161 /*@owned@*/
162  struct Source * sources;
164  int noSource;
165 
166 /*@only@*/
167  const char * sourceRpmName;
168 /*@only@*/
169  unsigned char * sourcePkgId;
170 /*@refcounted@*/
172 /*@refcounted@*/
175 
176 /*@dependent@*/ /*@null@*/
178 
179  rpmRC (*_parseRCPOT) (Spec spec, Package pkg, const char *field, rpmTag tagN,
180  rpmuint32_t index, rpmsenseFlags tagflags);
181 
185 /*@only@*/
187 /*@only@*/
189 /*@only@*/
191 /*@only@*/
193 /*@only@*/
197 
198  size_t nfoo;
199 /*@only@*/ /*@relnull@*/
201 
202  void * dig;
204  Package packages;
205 #if defined(__LCLINT__)
206 /*@refs@*/
207  int nrefs;
208 #endif
209 };
210 
214 struct Package_s {
216 /*@refcounted@*/
218 /*@refcounted@*/
220 /*@refcounted@*/
222 
223  int autoReq;
224  int autoProv;
225  int noarch;
226 
227 /*@only@*/
228  const char * preInFile;
229 /*@only@*/
230  const char * postInFile;
231 /*@only@*/
232  const char * preUnFile;
233 /*@only@*/
234  const char * postUnFile;
235 /*@only@*/
236  const char * preTransFile;
237 /*@only@*/
238  const char * postTransFile;
239 /*@only@*/
240  const char * verifyFile;
241 /*@only@*/
242  const char * sanityCheckFile;
244 /*@only@*/
246 
247 /*@only@*/
249 
250 /*@only@*/
251  const char * fileFile;
252 /*@only@*/
253  rpmiob fileList; /* If NULL, package will not be written */
254 
255  Package next;
256 #if defined(__LCLINT__)
257 /*@refs@*/
258  int nrefs;
259 #endif
260 };
261 
262 #ifdef __cplusplus
263 extern "C" {
264 #endif
265 
272 /*@null@*/
273 Spec freeSpec(/*@killref@*/ /*@null@*/ Spec spec)
274  /*@globals fileSystem, internalState @*/
275  /*@modifies spec, fileSystem, internalState @*/;
276 #define freeSpec(_spec) \
277  ((Spec)rpmioFreePoolItem((rpmioItem)(_spec), __FUNCTION__, __FILE__, __LINE__))
278 
283 /*@only@*/
284 Spec newSpec(void)
285  /*@globals rpmGlobalMacroContext, h_errno, internalState @*/
286  /*@modifies rpmGlobalMacroContext, internalState @*/;
287 
295 int rpmspecQuery(rpmts ts, QVA_t qva, const char * arg)
296  /*@globals rpmCLIMacroContext,
297  rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
298  /*@modifies ts, qva, rpmCLIMacroContext, rpmGlobalMacroContext,
299  fileSystem, internalState @*/;
300 
303 struct OpenFileInfo * newOpenFileInfo(void)
304  /*@*/;
305 
314 spectag stashSt(Spec spec, Header h, rpmTag tag, const char * lang)
315  /*@globals internalState @*/
316  /*@modifies spec->st, internalState @*/;
317 
326 int addSource(Spec spec, Package pkg, const char * field, rpmTag tag)
327  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
328  /*@modifies spec->sources, spec->numSources,
329  spec->st, spec->macros,
330  rpmGlobalMacroContext, fileSystem, internalState @*/;
331 
339 int parseNoSource(Spec spec, const char * field, rpmTag tag)
340  /*@*/;
341 
347 int SpecSourceCount(Spec spec)
348  /*@*/;
349 
356 SpecSource getSource(Spec spec, int num)
357  /*@*/;
358 
364 /*@exposed@*/
365 const char * specSourceName(SpecSource source)
366  /*@*/;
367 
373 /*@exposed@*/
374 const char * specFullSourceName(SpecSource source)
375  /*@*/;
376 
382 int specSourceNum(SpecSource source)
383  /*@*/;
384 
390 int specSourceFlags(SpecSource source)
391  /*@*/;
392 
398 /*@null@*/
399 #if defined(RPM_VENDOR_OPENPKG) /* splitted-source-directory */
400 const char * getSourceDir(rpmfileAttrs attr, const char *filename)
401 #else
402 const char * getSourceDir(rpmfileAttrs attr)
403 #endif
404  /*@*/;
405 
406 #ifdef __cplusplus
407 }
408 #endif
409 
410 #endif /* _H_SPEC_ */
const char * getSourceDir(rpmfileAttrs attr)
Return the macro directory location from source file flags.
Definition: build.c:24
int sourceHdrInit
Definition: rpmspec.h:174
rpmiob build
Definition: rpmspec.h:188
char * fileName
Definition: rpmspec.h:31
int specSourceNum(SpecSource source)
Return the spec or source patch number.
Definition: spec.c:305
const char * fileName
Definition: rpmspec.h:69
char ** sl_lines
Definition: rpmspec.h:105
rpmiob clean
Definition: rpmspec.h:194
const char * sourceRpmName
Definition: rpmspec.h:167
Package next
Definition: rpmspec.h:255
int SpecSourceCount(Spec spec)
Return the count of source set in specfile.
Definition: spec.c:268
rpmiob fileList
Definition: rpmspec.h:253
int noSource
Definition: rpmspec.h:164
struct OpenFileInfo * next
Definition: rpmspec.h:77
const char * postInFile
Definition: rpmspec.h:230
spectag st_t
Definition: rpmspec.h:96
const char * rootURL
Definition: rpmspec.h:120
const char * specFile
Definition: rpmspec.h:116
Structure(s) used for file info tag sets.
char * lbuf
Definition: rpmspec.h:130
int rpmspecQuery(rpmts ts, QVA_t qva, const char *arg)
Function to query spec file(s).
Definition: spec.c:968
struct rpmts_s * rpmts
The RPM Transaction Set.
Definition: rpmtypes.h:14
char * prog
Definition: rpmspec.h:35
The Header data structure.
const char * fileFile
Definition: rpmspec.h:251
int sl_nalloc
Definition: rpmspec.h:106
const char * specFullSourceName(SpecSource source)
Return a ptr to the full url of the source.
Definition: spec.c:298
rpmuint32_t num
Definition: rpmspec.h:50
enum rpmTag_e rpmTag
Definition: rpmtag.h:468
rpmiob check
Definition: rpmspec.h:192
Header sourceHeader
Definition: rpmspec.h:171
size_t lbuf_len
Definition: rpmspec.h:131
struct Source * sources
Definition: rpmspec.h:162
const char ** BANames
Definition: rpmspec.h:147
Header h
Definition: spec.c:739
char * passPhrase
Definition: rpmspec.h:156
spectag stashSt(Spec spec, Header h, rpmTag tag, const char *lang)
stashSt.
struct Source * next
Definition: rpmspec.h:52
Command line option information.
Definition: rpmcli.h:630
int t_tag
Definition: rpmspec.h:83
struct rpmiob_s * rpmiob
Definition: rpmiotypes.h:60
const char * fullSource
Definition: rpmspec.h:46
rpmiob prep
Definition: rpmspec.h:186
const char * source
Definition: rpmspec.h:48
Definition: rpmspec.h:44
const char * specSourceName(SpecSource source)
Return a ptr to the source file name.
Definition: spec.c:291
enum rpmRC_e rpmRC
RPM return codes.
Definition: signature.c:616
int lineNum
Definition: rpmspec.h:72
Header header
Definition: rpmspec.h:217
unsigned int rpmuint32_t
Definition: rpmiotypes.h:28
struct Package_s * Package
Definition: rpmspec.h:20
char * nextline
Definition: rpmspec.h:136
int recursing
Definition: rpmspec.h:149
const char * cookie
Definition: rpmspec.h:159
char * line
Definition: rpmspec.h:138
int specSourceFlags(SpecSource source)
Return flags set for the source.
Definition: spec.c:312
rpmiob specialDoc
Definition: rpmspec.h:245
struct spectag_s * spectag
enum evrFlags_e rpmsenseFlags
Definition: rpmevr.h:74
he tag
Definition: db3.c:1927
MacroContext macros
Definition: rpmspec.h:177
char nextpeekc
Definition: rpmspec.h:134
rpmuint32_t sstates[RPMSCRIPT_MAX]
Definition: rpmspec.h:182
struct TriggerFileEntry * triggerFiles
Definition: rpmspec.h:248
SpecSource getSource(Spec spec, int num)
Return a source control structure.
Definition: spec.c:275
int t_startx
Definition: rpmspec.h:84
int autoProv
Definition: rpmspec.h:224
int anyarch
Definition: rpmspec.h:153
rpmuint32_t smetrics[RPMSCRIPT_MAX]
Definition: rpmspec.h:183
The FD_t File Handle data structure.
rpmRC(* _parseRCPOT)(Spec spec, Package pkg, const char *field, rpmTag tagN, rpmuint32_t index, rpmsenseFlags tagflags)
Definition: rpmspec.h:179
Spec newSpec(void)
Create and initialize Spec structure.
Definition: spec.c:642
static const char * lang
struct tagStore_s * tagStore_t
Definition: rpmtag.h:519
The structure used to store values parsed from a spec file.
Definition: rpmspec.h:113
const char * buildSubdir
Definition: rpmspec.h:118
const char * preInFile
Definition: rpmspec.h:228
const char * t_lang
Definition: rpmspec.h:87
struct TriggerFileEntry * next
Definition: rpmspec.h:37
size_t nfoo
Definition: rpmspec.h:198
int numSources
Definition: rpmspec.h:163
char * script
Definition: rpmspec.h:33
struct rpmds_s * rpmds
Dependency tag sets from a header, so that a header can be discarded early.
Definition: rpmtypes.h:28
struct ReadLevelEntry * readStack
Definition: rpmspec.h:142
enum rpmfileAttrs_e rpmfileAttrs
File Attributes.
spectags st
Definition: rpmspec.h:125
int BACount
Definition: rpmspec.h:148
int noarch
Definition: rpmspec.h:225
const char * postUnFile
Definition: rpmspec.h:234
struct OpenFileInfo * newOpenFileInfo(void)
Definition: spec.c:713
Package packages
Definition: rpmspec.h:204
struct rpmioItem_s _item
Definition: rpmspec.h:215
struct spectags_s * spectags
const char * t_msgid
Definition: rpmspec.h:89
Spec * BASpecs
Definition: rpmspec.h:145
int timeCheck
Definition: rpmspec.h:157
char * readPtr
Definition: rpmspec.h:75
struct MacroContext_s * MacroContext
Definition: rpmmacro.h:13
struct ReadLevelEntry RLE_t
struct rpmioItem_s _item
Definition: rpmspec.h:114
int sl_nlines
Definition: rpmspec.h:107
rpmiob parsed
Definition: rpmspec.h:196
rpmds ds
Definition: rpmspec.h:219
int t_nlines
Definition: rpmspec.h:85
struct OpenFileInfo OFI_t
int lineNum
Definition: rpmspec.h:139
speclines sl
Definition: rpmspec.h:123
rpmfi fi
Definition: rpmspec.h:173
const char * verifyFile
Definition: rpmspec.h:240
int parseNoSource(Spec spec, const char *field, rpmTag tag)
parseNoSource.
Definition: spec.c:317
int force
Definition: rpmspec.h:152
struct Source * SpecSource
Definition: rpmspec.h:24
FD_t fd
Definition: rpmspec.h:71
int addSource(Spec spec, Package pkg, const char *field, rpmTag tag)
addSource.
Definition: spec.c:361
The structure used to store values for a package.
Definition: rpmspec.h:214
const char * preUnFile
Definition: rpmspec.h:232
rpmiob install
Definition: rpmspec.h:190
struct rpmfi_s * rpmfi
File info tag sets from a header, so that a header can be discarded early.
Definition: rpmfi.h:83
char readBuf[BUFSIZ]
Definition: rpmspec.h:73
int st_nalloc
Definition: rpmspec.h:97
rpmfi fi
Definition: rpmspec.h:221
tagStore_t foo
Definition: rpmspec.h:200
struct speclines_s * speclines
#define freeSpec(_spec)
Definition: rpmspec.h:276
int st_ntags
Definition: rpmspec.h:98
int toplevel
Definition: rpmspec.h:150
struct OpenFileInfo * fileStack
Definition: rpmspec.h:128
const char * postTransFile
Definition: rpmspec.h:238
void * dig
Definition: rpmspec.h:202
int flags
Definition: rpmspec.h:49
char * lbufPtr
Definition: rpmspec.h:133
struct ReadLevelEntry * next
Definition: rpmspec.h:61
const char * preTransFile
Definition: rpmspec.h:236
unsigned char * sourcePkgId
Definition: rpmspec.h:169
int autoReq
Definition: rpmspec.h:223
const char * sanityCheckFile
Definition: rpmspec.h:242
Spec spec
Definition: spec-py.c:121