71 lines
2.0 KiB
C
71 lines
2.0 KiB
C
#ifndef _H_MACRO_
|
|
#define _H_MACRO_
|
|
|
|
/*! The structure used to store a macro. */
|
|
typedef /*@abstract@*/ struct MacroEntry {
|
|
struct MacroEntry *prev;/*!< Macro entry stack. */
|
|
const char *name; /*!< Macro name. */
|
|
const char *opts; /*!< Macro parameters (a la getopt) */
|
|
const char *body; /*!< Macro body. */
|
|
int used; /*!< No. of expansions. */
|
|
int level; /*!< Scoping level. */
|
|
} MacroEntry;
|
|
|
|
/*! The structure used to store the set of macros in a context. */
|
|
typedef /*@abstract@*/ struct MacroContext {
|
|
MacroEntry ** macroTable; /*!< Macro entry table for context. */
|
|
int macrosAllocated;/*!< No. of allocated macros. */
|
|
int firstFree; /*!< No. of macros. */
|
|
} MacroContext;
|
|
|
|
/*
|
|
* Markers for types of macros added throughout rpm.
|
|
*/
|
|
#define RMIL_DEFAULT -15
|
|
#define RMIL_MACROFILES -13
|
|
#define RMIL_RPMRC -11
|
|
|
|
#define RMIL_CMDLINE -7
|
|
#define RMIL_TARBALL -5
|
|
#define RMIL_SPEC -3
|
|
#define RMIL_OLDSPEC -1
|
|
#define RMIL_GLOBAL 0
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
void rpmDumpMacroTable (MacroContext * mc, FILE * fp);
|
|
|
|
/* XXX this is used only in build/expression.c and will go away. */
|
|
const char *getMacroBody (MacroContext *mc, const char *name);
|
|
|
|
int expandMacros (void * spec, MacroContext * mc, char * sbuf,
|
|
size_t sbuflen);
|
|
void addMacro (MacroContext * mc, const char * n, const char * o,
|
|
const char * b, int depth);
|
|
void delMacro (MacroContext * mc, const char * n);
|
|
|
|
int rpmDefineMacro (MacroContext * mc, const char * macro, int level);
|
|
void rpmLoadMacros (MacroContext *mc, int level);
|
|
void rpmInitMacros (MacroContext * mc, const char * macrofiles);
|
|
void rpmFreeMacros (MacroContext * mc);
|
|
|
|
#define COMPRESSED_NOT 0
|
|
#define COMPRESSED_OTHER 1
|
|
#define COMPRESSED_BZIP2 2
|
|
int isCompressed (const char * file, int * compressed);
|
|
|
|
char * rpmExpand (const char * arg, ...);
|
|
char * rpmCleanPath (char * path);
|
|
const char *rpmGetPath (const char * path, ...);
|
|
const char *rpmGenPath (const char * root, const char * mdir,
|
|
const char * file);
|
|
int rpmExpandNumeric (const char * arg);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* _H_ MACRO_ */
|