rpm  5.4.15
rpmmacro.h
Go to the documentation of this file.
1 #ifndef _H_MACRO_
2 #define _H_MACRO_
3 
4 #include <stdio.h> /* XXX FILE * typedef */
5 #include <sys/types.h> /* XXX size_t typedef */
6 
10 #include <stdio.h>
11 
12 typedef /*@abstract@*/ struct MacroEntry_s * MacroEntry;
13 typedef /*@abstract@*/ struct MacroContext_s * MacroContext;
14 
15 #if defined(_MACRO_INTERNAL)
16 #include <rpmiotypes.h>
18 struct MacroEntry_s {
19  struct rpmioItem_s _item;
20  struct MacroEntry_s *prev;
21  const char *name;
22  const char *opts;
23  const char *body;
24  int used;
25  short level;
26  unsigned short flags;
27 };
28 
30 struct MacroContext_s {
31  struct rpmioItem_s _item;
32 /*@owned@*//*@null@*/
33  MacroEntry *macroTable;
34  int macrosAllocated;
35  int firstFree;
36 #if defined(__LCLINT__)
37 /*@refs@*/
38  int nrefs;
39 #endif
40 };
41 #endif
42 
43 /*@-redecl@*/
44 /*@checked@*/
46 
47 /*@checked@*/
49 
55 /*@observer@*/ /*@checked@*/
56 extern const char * rpmMacrofiles;
57 /*@=redecl@*/
58 
62 #define RMIL_DEFAULT -15
63 #define RMIL_MACROFILES -13
64 #define RMIL_RPMRC -11
65 
66 #define RMIL_CMDLINE -7
67 #define RMIL_TARBALL -5
68 #define RMIL_SPEC -3
69 #define RMIL_OLDSPEC -1
70 #define RMIL_GLOBAL 0
71 
72 #ifdef __cplusplus
73 extern "C" {
74 #endif
75 
81 void rpmDumpMacroTable(/*@null@*/ MacroContext mc, /*@null@*/ FILE * fp)
82  /*@globals rpmGlobalMacroContext, fileSystem @*/
83  /*@modifies *fp, fileSystem @*/;
84 
93 int
94 rpmGetMacroEntries(/*@null@*/ MacroContext mc, /*@null@*/ void * _mire,
95  int used, /*@null@*/ const char *** avp)
96  /*@globals rpmGlobalMacroContext @*/
97  /*@modifies _mire, *avp @*/;
98 
105 int rpmSecuritySaneFile(const char *filename)
106  /*@globals internalState @*/;
107 
116 int rpmGlob(const char * patterns, /*@out@*/ int * argcPtr,
117  /*@out@*/ const char *** argvPtr)
118  /*@globals fileSystem, internalState @*/
119  /*@modifies *argcPtr, *argvPtr, fileSystem, internalState @*/;
120 
131 int expandMacros(/*@null@*/ void * spec, /*@null@*/ MacroContext mc,
132  /*@in@*/ /*@out@*/ char * sbuf, size_t slen)
133  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
134  /*@modifies *sbuf, rpmGlobalMacroContext, fileSystem, internalState @*/;
135 
145 void addMacro(/*@null@*/ MacroContext mc, const char * n,
146  /*@null@*/ const char * o, /*@null@*/ const char * b, int level)
147  /*@globals rpmGlobalMacroContext, internalState @*/
148  /*@modifies mc, rpmGlobalMacroContext, internalState @*/;
149 
155 void delMacro(/*@null@*/ MacroContext mc, const char * n)
156  /*@globals rpmGlobalMacroContext @*/
157  /*@modifies mc, rpmGlobalMacroContext @*/;
158 
166 int rpmDefineMacro(/*@null@*/ MacroContext mc, const char * macro, int level)
167  /*@globals rpmGlobalMacroContext, h_errno, internalState @*/
168  /*@modifies mc, rpmGlobalMacroContext, internalState @*/;
169 
176 int rpmUndefineMacro(/*@null@*/ MacroContext mc, const char * macro)
177  /*@globals rpmGlobalMacroContext, internalState @*/
178  /*@modifies mc, rpmGlobalMacroContext, internalState @*/;
179 
185 void rpmLoadMacros(/*@null@*/ MacroContext mc, int level)
186  /*@globals rpmGlobalMacroContext, internalState @*/
187  /*@modifies rpmGlobalMacroContext, internalState @*/;
188 
195 int rpmLoadMacroFile(/*@null@*/ MacroContext mc, const char * fn, int nesting)
196  /*@globals rpmGlobalMacroContext,
197  h_errno, fileSystem, internalState @*/
198  /*@modifies mc, rpmGlobalMacroContext, fileSystem, internalState @*/;
199 
205 void rpmInitMacros(/*@null@*/ MacroContext mc, const char * macrofiles)
206  /*@globals rpmGlobalMacroContext, rpmCLIMacroContext,
207  h_errno, fileSystem, internalState @*/
208  /*@modifies mc, rpmGlobalMacroContext, fileSystem, internalState @*/;
209 
214 void rpmFreeMacros(/*@null@*/ MacroContext mc)
215  /*@globals rpmGlobalMacroContext @*/
216  /*@modifies mc, rpmGlobalMacroContext @*/;
217 
218 typedef enum rpmCompressedMagic_e {
230 
237 int isCompressed(const char * file, /*@out@*/ rpmCompressedMagic * compressed)
238  /*@globals h_errno, fileSystem, internalState @*/
239  /*@modifies *compressed, fileSystem, internalState @*/;
240 
246 char * rpmExpand(/*@null@*/ const char * arg, ...)
247 #if defined(__GNUC__) && __GNUC__ >= 4
248  /* issue a warning if the list is not NULL-terminated */
249  __attribute__((sentinel))
250 #endif
251  /*@globals rpmGlobalMacroContext, h_errno, internalState @*/
252  /*@modifies rpmGlobalMacroContext, internalState @*/;
253 
260 char * rpmMCExpand(/*@null@*/ MacroContext mc, /*@null@*/ const char * arg, ...)
261 #if defined(__GNUC__) && __GNUC__ >= 4
262  /* issue a warning if the list is not NULL-terminated */
263  __attribute__((sentinel))
264 #endif
265  /*@globals rpmGlobalMacroContext, h_errno, internalState @*/
266  /*@modifies rpmGlobalMacroContext, internalState @*/;
267 
274 /*@null@*/
275 char * rpmCleanPath(/*@returned@*/ /*@null@*/ char * path)
276  /*@modifies *path @*/;
277 
284 /*@-redecl@*/ /* LCL: shrug */
285 char * rpmGetPath(/*@null@*/ const char * path, ...)
286 #if defined(__GNUC__) && __GNUC__ >= 4
287  /* issue a warning if the list is not NULL-terminated */
288  __attribute__((sentinel))
289 #endif
290  /*@globals rpmGlobalMacroContext, h_errno, internalState @*/
291  /*@modifies rpmGlobalMacroContext, internalState @*/;
292 /*@=redecl@*/
293 
304 /*@-redecl@*/ /* LCL: shrug */
305 const char * rpmGenPath(/*@null@*/ const char * urlroot,
306  /*@null@*/ const char * urlmdir,
307  /*@null@*/ const char * urlfile)
308  /*@globals rpmGlobalMacroContext, h_errno, internalState @*/
309  /*@modifies rpmGlobalMacroContext, internalState @*/;
310 /*@=redecl@*/
311 
319 int rpmExpandNumeric (const char * arg)
320  /*@globals rpmGlobalMacroContext, h_errno, internalState @*/
321  /*@modifies rpmGlobalMacroContext, internalState @*/;
322 
323 #ifdef __cplusplus
324 }
325 #endif
326 
327 #endif /* _H_ MACRO_ */
const bson * b
Definition: bson.h:280
char * rpmExpand(const char *arg,...)
Return (malloc'ed) concatenated macro expansion(s).
Definition: macro.c:3252
static ARGV_t patterns
Definition: rpmgrep.c:87
rpmCompressedMagic_e
Definition: rpmmacro.h:218
int rpmGlob(const char *patterns, int *argcPtr, const char ***argvPtr)
Return URL path(s) from a (URL prefixed) pattern glob.
Definition: macro.c:2611
int rpmGetMacroEntries(MacroContext mc, void *_mire, int used, const char ***avp)
Return macro entries as string array.
Definition: macro.c:321
void rpmFreeMacros(MacroContext mc)
Destroy macro context.
Definition: macro.c:3090
char * rpmMCExpand(MacroContext mc, const char *arg,...)
Return (malloc'ed) concatenated macro expansion(s) in a context.
Definition: macro.c:3289
MacroContext rpmCLIMacroContext
Definition: macro.c:129
char * rpmGetPath(const char *path,...)
Return (malloc'ed) expanded, canonicalized, file path.
Definition: macro.c:3445
void rpmLoadMacros(MacroContext mc, int level)
Load macros from specific context into global context.
Definition: macro.c:2875
const char * rpmGenPath(const char *urlroot, const char *urlmdir, const char *urlfile)
Merge 3 args into path, any or all of which may be a url.
Definition: macro.c:3491
const char * rpmMacrofiles
List of macro files to read when configuring rpm.
Definition: macro.c:62
int rpmDefineMacro(MacroContext mc, const char *macro, int level)
Define macro in context.
Definition: macro.c:2853
static const char * file
Definition: parseFiles.c:20
int rpmExpandNumeric(const char *arg)
Return macro expansion as a numeric value.
Definition: macro.c:3326
const char const char int arg
Definition: mongo.h:777
int rpmLoadMacroFile(MacroContext mc, const char *fn, int nesting)
Load macro context from a macro file.
Definition: macro.c:2915
const char const bson int mongo_write_concern int flags
Definition: mongo.h:485
void addMacro(MacroContext mc, const char *n, const char *o, const char *b, int level)
Add macro to context.
Definition: macro.c:2786
const char const char const char * opts
Definition: bson.h:971
enum rpmCompressedMagic_e rpmCompressedMagic
int rpmSecuritySaneFile(const char *filename)
Check whether configuration file is moderately secure to load.
Definition: macro.c:2588
int isCompressed(const char *file, rpmCompressedMagic *compressed)
Return type of compression used in file.
Definition: macro.c:3119
struct MacroContext_s * MacroContext
Definition: rpmmacro.h:13
void rpmInitMacros(MacroContext mc, const char *macrofiles)
Initialize macro context from set of macrofile(s).
Definition: macro.c:3004
int expandMacros(void *spec, MacroContext mc, char *sbuf, size_t slen)
Expand macro into buffer.
Definition: macro.c:2751
static const char * name
struct MacroEntry_s * MacroEntry
Definition: rpmmacro.h:12
MacroContext rpmGlobalMacroContext
Definition: macro.c:124
char * rpmCleanPath(char *path)
Canonicalize file path.
Definition: macro.c:3353
void rpmDumpMacroTable(MacroContext mc, FILE *fp)
Print macros to file stream.
Definition: macro.c:287
void delMacro(MacroContext mc, const char *n)
Delete macro from context.
Definition: macro.c:2825
int rpmUndefineMacro(MacroContext mc, const char *macro)
Undefine macro in context.
Definition: macro.c:2867
__attribute__((visibility("hidden"))) int mayAddToFilesAwaitingFiletriggers(const char *rootDir