#include "system.h"#include <stdarg.h>#include <rpmio_internal.h>#include <rpmmessages.h>#include <rpmerr.h>#include <rpmmacro.h>#include "debug.h"Include dependency graph for macro.c:

Go to the source code of this file.
Data Structures | |
| struct | MacroBuf_s |
| Macro expansion state. More... | |
Defines | |
| #define | isblank(_c) ((_c) == ' ' || (_c) == '\t') |
| #define | iseol(_c) ((_c) == '\n' || (_c) == '\r') |
| #define | STREQ(_t, _f, _fn) ((_fn) == (sizeof(_t)-1) && !strncmp((_t), (_f), (_fn))) |
| #define | SAVECHAR(_mb, _c) { *(_mb)->t = (_c), (_mb)->t++, (_mb)->nb--; } |
| #define | _MAX_MACRO_DEPTH 16 |
| #define | _PRINT_MACRO_TRACE 0 |
| #define | _PRINT_EXPAND_TRACE 0 |
| #define | MACRO_CHUNK_SIZE 16 |
| #define | SKIPBLANK(_s, _c) |
| #define | SKIPNONBLANK(_s, _c) |
| #define | COPYNAME(_ne, _s, _c) |
| #define | COPYOPTS(_oe, _s, _c) |
| #define | POPT_ERROR_NOARG -10 |
| #define | POPT_ERROR_BADQUOTE -15 |
| #define | POPT_ERROR_MALLOC -21 |
| #define | POPT_ARGV_ARRAY_GROW_DELTA 5 |
| #define | _suffix(_s, _x) (slen >= sizeof(_x) && !strcmp((_s)+slen-(sizeof(_x)-1), (_x))) |
Typedefs | |
| typedef MacroBuf_s * | MacroBuf |
| Macro expansion state. | |
Functions | |
| static int | expandMacro (MacroBuf mb) |
| The main macro recursion loop. | |
| static void * | _free (const void *p) |
| Wrapper to free(3), hides const compilation noise, permit NULL, return NULL. | |
| static int | compareMacroName (const void *ap, const void *bp) |
| Compare macro entries by name (qsort/bsearch). | |
| static void | expandMacroTable (MacroContext mc) |
| Enlarge macro table. | |
| static void | sortMacroTable (MacroContext mc) |
| Sort entries in macro table. | |
| void | rpmDumpMacroTable (MacroContext mc, FILE *fp) |
| Print macros to file stream. | |
| static MacroEntry * | findEntry (MacroContext mc, const char *name, size_t namelen) |
| Find entry in macro table. | |
| static char * | rdcl (char *buf, size_t size, FD_t fd) |
| fgets(3) analogue that reads \ continuations. | |
| static const char * | matchchar (const char *p, char pl, char pr) |
| Return text between pl and matching pr characters. | |
| static void | printMacro (MacroBuf mb, const char *s, const char *se) |
| Pre-print macro expression to be expanded. | |
| static void | printExpansion (MacroBuf mb, const char *t, const char *te) |
| Post-print expanded macro expression. | |
| static int | expandT (MacroBuf mb, const char *f, size_t flen) |
| Save source and expand field into target. | |
| static int | expandU (MacroBuf mb, char *u, size_t ulen) |
| Save source/target and expand macro in u. | |
| static int | doShellEscape (MacroBuf mb, const char *cmd, size_t clen) |
| Expand output of shell command into target buffer. | |
| static const char * | doDefine (MacroBuf mb, const char *se, int level, int expandbody) |
| Parse (and execute) new macro definition. | |
| static const char * | doUndefine (MacroContext mc, const char *se) |
| Parse (and execute) macro undefinition. | |
| static void | pushMacro (MacroEntry *mep, const char *n, const char *o, const char *b, int level) |
| Push new macro definition onto macro entry stack. | |
| static void | popMacro (MacroEntry *mep) |
| Pop macro definition from macro entry stack. | |
| static void | freeArgs (MacroBuf mb) |
| Free parsed arguments for parameterized macro. | |
| static const char * | grabArgs (MacroBuf mb, const MacroEntry me, const char *se, const char *lastc) |
| Parse arguments (to next new line) for parameterized macro. | |
| static void | doOutput (MacroBuf mb, int waserror, const char *msg, size_t msglen) |
| Perform macro message output. | |
| static void | doFoo (MacroBuf mb, int negate, const char *f, size_t fn, const char *g, size_t gn) |
| Execute macro primitives. | |
| static int | XpoptDupArgv (int argc, const char **argv, int *argcPtr, const char ***argvPtr) |
| static int | XpoptParseArgvString (const char *s, int *argcPtr, const char ***argvPtr) |
| int | rpmGlob (const char *patterns, int *argcPtr, const char ***argvPtr) |
| Return URL path(s) from a (URL prefixed) pattern glob. | |
| int | expandMacros (void *spec, MacroContext mc, char *sbuf, size_t slen) |
| Expand macro into buffer. | |
| void | addMacro (MacroContext mc, const char *n, const char *o, const char *b, int level) |
| Add macro to context. | |
| void | delMacro (MacroContext mc, const char *n) |
| Delete macro from context. | |
| int | rpmDefineMacro (MacroContext mc, const char *macro, int level) |
| Define macro in context. | |
| void | rpmLoadMacros (MacroContext mc, int level) |
| Load macros from specific context into global context. | |
| int | rpmLoadMacroFile (MacroContext mc, const char *fn) |
| Load macro context from a macro file. | |
| void | rpmInitMacros (MacroContext mc, const char *macrofiles) |
| Initialize macro context from set of macrofile(s). | |
| void | rpmFreeMacros (MacroContext mc) |
| Destroy macro context. | |
| int | isCompressed (const char *file, rpmCompressedMagic *compressed) |
| Return type of compression used in file. | |
| char * | rpmExpand (const char *arg,...) |
| Return (malloc'ed) concatenated macro expansion(s). | |
| int | rpmExpandNumeric (const char *arg) |
| Return macro expansion as a numeric value. | |
| char * | rpmCleanPath (char *path) |
| Canonicalize file path. | |
| const char * | rpmGetPath (const char *path,...) |
| Return (malloc'ed) expanded, canonicalized, file path. | |
| 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. | |
Variables | |
| const char * | rpmMacrofiles = MACROFILES |
| List of macro files to read when configuring rpm. | |
| static struct MacroContext_s | rpmGlobalMacroContext_s |
| MacroContext | rpmGlobalMacroContext = &rpmGlobalMacroContext_s |
| static struct MacroContext_s | rpmCLIMacroContext_s |
| MacroContext | rpmCLIMacroContext = &rpmCLIMacroContext_s |
| int | max_macro_depth = 16 |
| int | print_macro_trace = 0 |
| int | print_expand_trace = 0 |
| static int | _debug = 0 |
Definition in file macro.c.
| #define _suffix | ( | _s, | |||
| _x | ) | (slen >= sizeof(_x) && !strcmp((_s)+slen-(sizeof(_x)-1), (_x))) |
| #define COPYNAME | ( | _ne, | |||
| _s, | |||||
| _c | ) |
Value:
{ SKIPBLANK(_s,_c); \
/*@-boundswrite@*/ \
while(((_c) = *(_s)) && (xisalnum(_c) || (_c) == '_')) \
*(_ne)++ = *(_s)++; \
*(_ne) = '\0'; \
/*@=boundswrite@*/ \
}
Definition at line 479 of file macro.c.
Referenced by doDefine(), and doUndefine().
| #define COPYOPTS | ( | _oe, | |||
| _s, | |||||
| _c | ) |
Value:
{ /*@-boundswrite@*/ \
while(((_c) = *(_s)) && (_c) != ')') \
*(_oe)++ = *(_s)++; \
*(_oe) = '\0'; \
/*@=boundswrite@*/ \
}
Definition at line 488 of file macro.c.
Referenced by doDefine().
| #define isblank | ( | _c | ) | ((_c) == ' ' || (_c) == '\t') |
Definition at line 10 of file macro.c.
Referenced by doDefine(), doFoo(), expandMacro(), and grabArgs().
| #define iseol | ( | _c | ) | ((_c) == '\n' || (_c) == '\r') |
Definition at line 12 of file macro.c.
Referenced by doDefine(), doShellEscape(), doUndefine(), expandMacro(), printExpansion(), printMacro(), and rdcl().
| #define MACRO_CHUNK_SIZE 16 |
| #define POPT_ARGV_ARRAY_GROW_DELTA 5 |
| #define POPT_ERROR_BADQUOTE -15 |
error in paramter quoting
Definition at line 1589 of file macro.c.
Referenced by XpoptParseArgvString().
| #define POPT_ERROR_MALLOC -21 |
memory allocation failed
Definition at line 1590 of file macro.c.
Referenced by XpoptDupArgv(), and XpoptParseArgvString().
| #define POPT_ERROR_NOARG -10 |
| #define SAVECHAR | ( | _mb, | |||
| _c | ) | { *(_mb)->t = (_c), (_mb)->t++, (_mb)->nb--; } |
| #define SKIPBLANK | ( | _s, | |||
| _c | ) |
Value:
/*@-globs@*/ /* FIX: __ctype_b */ \ while (((_c) = *(_s)) && isblank(_c)) \ (_s)++; \
Definition at line 467 of file macro.c.
Referenced by doDefine(), and rpmLoadMacroFile().
| #define SKIPNONBLANK | ( | _s, | |||
| _c | ) |
| #define STREQ | ( | _t, | |||
| _f, | |||||
| _fn | ) | ((_fn) == (sizeof(_t)-1) && !strncmp((_t), (_f), (_fn))) |
| typedef struct MacroBuf_s * MacroBuf |
Macro expansion state.
| static void* _free | ( | const void * | p | ) | [inline, static] |
| void addMacro | ( | MacroContext | mc, | |
| const char * | n, | |||
| const char * | o, | |||
| const char * | b, | |||
| int | level | |||
| ) |
Add macro to context.
| mc | macro context (NULL uses global context). | |
| n | macro name | |
| o | macro paramaters | |
| b | macro body | |
| level | macro recursion level (0 is entry API) |
Definition at line 1888 of file macro.c.
References _, expandMacroTable(), findEntry(), MacroContext_s::firstFree, MacroEntry_s::flags, MacroContext_s::macrosAllocated, MacroContext_s::macroTable, pushMacro(), RPMERR_BADSPEC, rpmError, rpmGlobalMacroContext, and sortMacroTable().
Referenced by addSource(), buildForTarget(), doDefine(), doReadRC(), doScript(), doSetupMacro(), expandMacro(), grabArgs(), handlePreambleTag(), headerMacrosLoad(), makeGPGSignature(), makePGPSignature(), parseSpec(), rpmLoadMacros(), rpmPlatform(), rpmrc_AddMacro(), rpmRebuildTargetVars(), rpmtsOpenSDB(), setDefaults(), setPathDefault(), and setVarDefault().
| static int compareMacroName | ( | const void * | ap, | |
| const void * | bp | |||
| ) | [static] |
Compare macro entries by name (qsort/bsearch).
| ap | 1st macro entry | |
| bp | 2nd macro entry |
Definition at line 147 of file macro.c.
References MacroEntry_s::name.
Referenced by findEntry(), and sortMacroTable().
| void delMacro | ( | MacroContext | mc, | |
| const char * | n | |||
| ) |
Delete macro from context.
| mc | macro context (NULL uses global context). | |
| n | macro name |
Definition at line 1927 of file macro.c.
References findEntry(), popMacro(), rpmGlobalMacroContext, and sortMacroTable().
Referenced by doScript(), doUndefine(), handlePreambleTag(), headerMacrosUnload(), makeGPGSignature(), makePGPSignature(), parseSpec(), rpmrc_DelMacro(), rpmRebuildTargetVars(), and rpmtsOpenSDB().
| static const char* doDefine | ( | MacroBuf | mb, | |
| const char * | se, | |||
| int | level, | |||
| int | expandbody | |||
| ) | [static] |
Parse (and execute) new macro definition.
| mb | macro expansion state | |
| se | macro definition to parse | |
| level | macro recursion level | |
| expandbody | should body be expanded? |
Definition at line 636 of file macro.c.
References _, addMacro(), COPYNAME, COPYOPTS, expandU(), isblank, iseol, matchchar(), MacroBuf_s::mc, RPMERR_BADSPEC, rpmError, SKIPBLANK, and xisalpha().
Referenced by expandMacro(), and rpmDefineMacro().
| static void doFoo | ( | MacroBuf | mb, | |
| int | negate, | |||
| const char * | f, | |||
| size_t | fn, | |||
| const char * | g, | |||
| size_t | gn | |||
| ) | [static] |
Execute macro primitives.
| mb | macro expansion state | |
| negate | should logic be inverted? | |
| f | beginning of field f | |
| fn | length of field f | |
| g | beginning of field g | |
| gn | length of field g |
Definition at line 1119 of file macro.c.
References COMPRESSED_OTHER, expandT(), expandU(), isblank, isCompressed(), rpmIsVerbose, STREQ, urlPath(), and xisdigit().
Referenced by expandMacro().
| static void doOutput | ( | MacroBuf | mb, | |
| int | waserror, | |||
| const char * | msg, | |||
| size_t | msglen | |||
| ) | [static] |
Perform macro message output.
| mb | macro expansion state | |
| waserror | use rpmError()? | |
| msg | message to ouput | |
| msglen | no. of bytes in message |
Definition at line 1094 of file macro.c.
References expandU(), RPMERR_BADSPEC, and rpmError.
Referenced by expandMacro().
| static int doShellEscape | ( | MacroBuf | mb, | |
| const char * | cmd, | |||
| size_t | clen | |||
| ) | [static] |
Expand output of shell command into target buffer.
| mb | macro expansion state | |
| cmd | shell command | |
| clen | no. bytes in shell command |
Definition at line 597 of file macro.c.
References expandU(), iseol, MacroBuf_s::nb, and SAVECHAR.
Referenced by expandMacro().
| static const char* doUndefine | ( | MacroContext | mc, | |
| const char * | se | |||
| ) | [static] |
Parse (and execute) macro undefinition.
| mc | macro context | |
| se | macro name to undefine |
Definition at line 773 of file macro.c.
References _, COPYNAME, delMacro(), iseol, RPMERR_BADSPEC, rpmError, and xisalpha().
Referenced by expandMacro().
| static int expandMacro | ( | MacroBuf | mb | ) | [static] |
The main macro recursion loop.
| mb | macro expansion state |
Definition at line 1224 of file macro.c.
References _, addMacro(), alloca(), MacroEntry_s::body, MacroBuf_s::depth, doDefine(), doFoo(), doOutput(), doShellEscape(), doUndefine(), MacroBuf_s::expand_trace, expandT(), findEntry(), freeArgs(), grabArgs(), isblank, iseol, MacroBuf_s::macro_trace, matchchar(), max_macro_depth, MacroBuf_s::mc, MacroEntry_s::name, MacroBuf_s::nb, MacroEntry_s::opts, print_expand_trace, print_macro_trace, printExpansion(), printMacro(), RMIL_GLOBAL, rpmDumpMacroTable(), RPMERR_BADSPEC, rpmError, rpmLoadMacroFile(), MacroBuf_s::s, SAVECHAR, STREQ, MacroBuf_s::t, MacroEntry_s::used, xisalnum(), and xmalloc().
Referenced by expandMacros(), expandT(), and expandU().
| int expandMacros | ( | void * | spec, | |
| MacroContext | mc, | |||
| char * | sbuf, | |||
| size_t | slen | |||
| ) |
Expand macro into buffer.
| spec | cookie (unused) | |
| mc | macro context (NULL uses global context). |
| sbuf | input macro to expand, output expansion |
| slen | size of buffer |
Definition at line 1853 of file macro.c.
References _, alloca(), expandMacro(), print_expand_trace, print_macro_trace, RPMERR_BADSPEC, rpmError, and rpmGlobalMacroContext.
Referenced by addFileToTagAux(), copyNextLine(), processPackageFiles(), rpmExpand(), and rpmGetPath().
| static void expandMacroTable | ( | MacroContext | mc | ) | [static] |
Enlarge macro table.
| mc | macro context |
Definition at line 168 of file macro.c.
References MacroContext_s::firstFree, MACRO_CHUNK_SIZE, MacroContext_s::macrosAllocated, MacroContext_s::macroTable, xmalloc(), and xrealloc().
Referenced by addMacro().
| static int expandT | ( | MacroBuf | mb, | |
| const char * | f, | |||
| size_t | flen | |||
| ) | [static] |
Save source and expand field into target.
| mb | macro expansion state | |
| f | field | |
| flen | no. bytes in field |
Definition at line 504 of file macro.c.
References alloca(), expandMacro(), and MacroBuf_s::s.
Referenced by doFoo(), and expandMacro().
| static int expandU | ( | MacroBuf | mb, | |
| char * | u, | |||
| size_t | ulen | |||
| ) | [static] |
Save source/target and expand macro in u.
| mb | macro expansion state | |
| u | input macro, output expansion | |
| ulen | no. bytes in u buffer |
Definition at line 558 of file macro.c.
References alloca(), expandMacro(), MacroBuf_s::nb, MacroBuf_s::s, and MacroBuf_s::t.
Referenced by doDefine(), doFoo(), doOutput(), doShellEscape(), and grabArgs().
| static MacroEntry* findEntry | ( | MacroContext | mc, | |
| const char * | name, | |||
| size_t | namelen | |||
| ) | [static] |
Find entry in macro table.
Definition at line 254 of file macro.c.
References alloca(), compareMacroName(), MacroContext_s::firstFree, MacroContext_s::macroTable, and rpmGlobalMacroContext.
| static void freeArgs | ( | MacroBuf | mb | ) | [static] |
Free parsed arguments for parameterized macro.
| mb | macro expansion state |
Definition at line 888 of file macro.c.
References _, MacroEntry_s::body, MacroBuf_s::depth, MacroContext_s::firstFree, MacroEntry_s::level, MacroContext_s::macroTable, MacroBuf_s::mc, MacroEntry_s::name, RPMERR_BADSPEC, rpmError, and MacroEntry_s::used.
Referenced by expandMacro().
| static const char* grabArgs | ( | MacroBuf | mb, | |
| const MacroEntry | me, | |||
| const char * | se, | |||
| const char * | lastc | |||
| ) | [static] |
Parse arguments (to next new line) for parameterized macro.
| mb | macro expansion state | |
| me | macro entry slot | |
| se | arguments to parse | |
| lastc | stop parsing at lastc |
Definition at line 940 of file macro.c.
References _, addMacro(), alloca(), argv, MacroBuf_s::depth, expandU(), isblank, MacroBuf_s::mc, MacroEntry_s::name, MacroEntry_s::opts, RPMERR_BADSPEC, rpmError, and stpcpy().
Referenced by expandMacro().
| int isCompressed | ( | const char * | file, | |
| rpmCompressedMagic * | compressed | |||
| ) |
Return type of compression used in file.
| file | name of file |
| compressed | address of compression type |
Definition at line 2101 of file macro.c.
References _, COMPRESSED_BZIP2, COMPRESSED_LZMA, COMPRESSED_LZOP, COMPRESSED_NOT, COMPRESSED_OTHER, COMPRESSED_ZIP, Fclose(), Ferror(), Fopen(), Fread(), Fstrerror(), RPMERR_BADSPEC, and rpmError.
Referenced by buildForTarget(), doFoo(), doPatch(), and doUntar().
| static const char* matchchar | ( | const char * | p, | |
| char | pl, | |||
| char | pr | |||
| ) | [static] |
Return text between pl and matching pr characters.
| p | start of text | |
| pl | left char, i.e. '[', '(', '{', etc. | |
| pr | right char, i.e. ']', ')', '}', etc. |
Definition at line 360 of file macro.c.
Referenced by doDefine(), and expandMacro().
| static void popMacro | ( | MacroEntry * | mep | ) | [static] |
Pop macro definition from macro entry stack.
| mep | address of macro entry slot |
Definition at line 862 of file macro.c.
References _free(), MacroEntry_s::body, MacroEntry_s::name, MacroEntry_s::opts, and MacroEntry_s::prev.
Referenced by delMacro().
| static void printExpansion | ( | MacroBuf | mb, | |
| const char * | t, | |||
| const char * | te | |||
| ) | [static] |
Post-print expanded macro expression.
| mb | macro expansion state | |
| t | current expansion string result | |
| te | end of string |
Definition at line 430 of file macro.c.
References _, MacroBuf_s::depth, and iseol.
Referenced by expandMacro().
| static void printMacro | ( | MacroBuf | mb, | |
| const char * | s, | |||
| const char * | se | |||
| ) | [static] |
Pre-print macro expression to be expanded.
| mb | macro expansion state | |
| s | current expansion string | |
| se | end of string |
Definition at line 386 of file macro.c.
References _, MacroBuf_s::depth, and iseol.
Referenced by expandMacro().
| static void pushMacro | ( | MacroEntry * | mep, | |
| const char * | n, | |||
| const char * | o, | |||
| const char * | b, | |||
| int | level | |||
| ) | [static] |
Push new macro definition onto macro entry stack.
| mep | address of macro entry slot | |
| n | macro name | |
| o | macro parameters (NULL if none) | |
| b | macro body (NULL becomes "") | |
| level | macro recursion level |
Definition at line 825 of file macro.c.
References _free(), MacroEntry_s::name, xmalloc(), and xstrdup().
Referenced by addMacro().
| static char* rdcl | ( | char * | buf, | |
| size_t | size, | |||
| FD_t | fd | |||
| ) | [static] |
fgets(3) analogue that reads \ continuations.
Last newline always trimmed.
| buf | input buffer | |
| size | inbut buffer size (bytes) | |
| fd | file handle |
Definition at line 297 of file macro.c.
References fdGetFILE, and iseol.
Referenced by rpmLoadMacroFile().
| char* rpmCleanPath | ( | char * | path | ) |
Canonicalize file path.
| path | path to canonicalize (in-place) |
Definition at line 2228 of file macro.c.
Referenced by db3open(), doLookup(), rpmdbMoveDatabase(), rpmdbRemoveDatabase(), rpmGetPath(), rpmioAccess(), and rpmQueryVerify().
| int rpmDefineMacro | ( | MacroContext | mc, | |
| const char * | macro, | |||
| int | level | |||
| ) |
Define macro in context.
| mc | macro context (NULL uses global context). | |
| macro | macro name, options, body | |
| level | macro recursion level (0 is entry API) |
Definition at line 1943 of file macro.c.
References alloca(), doDefine(), and rpmGlobalMacroContext.
Referenced by rpmcliAllArgCallback(), rpmdbRebuild(), and rpmLoadMacroFile().
| void rpmDumpMacroTable | ( | MacroContext | mc, | |
| FILE * | fp | |||
| ) |
Print macros to file stream.
| mc | macro context (NULL uses global context). | |
| fp | file stream (NULL uses stderr). |
Definition at line 212 of file macro.c.
References MacroContext_s::firstFree, MacroContext_s::macroTable, and rpmGlobalMacroContext.
Referenced by expandMacro(), and rpmShowRC().
| char* rpmExpand | ( | const char * | arg, | |
| ... | ||||
| ) |
Return (malloc'ed) concatenated macro expansion(s).
| arg | macro(s) to expand (NULL terminates list) |
Definition at line 2162 of file macro.c.
References expandMacros(), stpcpy(), xmalloc(), xrealloc(), and xstrdup().
Referenced by addChangelog(), checkFiles(), checkForValidArchitectures(), checkPassPhrase(), cpio_doio(), db3New(), dbiTagsInit(), defaultMachine(), doPrimary(), doScript(), doSetupMacro(), fillOutMainPackage(), headerMacrosLoad(), headerMacrosUnload(), i18nTag(), ignoreDep(), makeGPGSignature(), makePGPSignature(), open_dso(), packageBinaries(), parseBuildInstallClean(), parseForRegexLang(), parseSpec(), rdToken(), readLine(), rpmcliAllArgCallback(), rpmcliImportPubkeys(), rpmcliQuery(), rpmdbNew(), rpmdbSetIteratorRE(), rpmdsCpuinfo(), rpmdsGetconf(), rpmdsLdconfig(), rpmdsPipe(), rpmdsSysinfo(), rpmExpandNumeric(), rpmfcClassify(), rpmfcExec(), rpmfcExpandAppend(), rpmfcGenerateDependsHelper(), rpmGetPassPhrase(), rpmgiNext(), rpmgiOpen(), rpmLookupSignatureType(), rpmnsParse(), rpmPlatform(), rpmReadConfigFiles(), rpmReadRC(), rpmRollback(), rpmShowRC(), rpmts_IDTXglob(), rpmtsAddInstallElement(), rpmtsFindPubkey(), rpmtsRollback(), rpmtsSolve(), runInstScript(), runScript(), skipFiles(), unsatisfiedDepend(), urlFind(), and writeRPM().
| int rpmExpandNumeric | ( | const char * | arg | ) |
Return macro expansion as a numeric value.
Boolean values ('Y' or 'y' returns 1, 'N' or 'n' returns 0) are permitted as well. An undefined macro returns 0.
| arg | macro to expand |
Definition at line 2201 of file macro.c.
References _free(), and rpmExpand().
Referenced by build(), checkFiles(), dbiOpen(), genCpioListAndHeader(), main(), parseSpec(), processPackageFiles(), relocateFileList(), rpmcliQuery(), rpmcliVerify(), rpmdbInit(), rpmdbNew(), rpmdbOpen(), rpmdbRebuild(), rpmdbVerify(), rpmdsELF(), rpmErase(), rpmfcGenerateDepends(), rpmInstall(), rpmLeadVersion(), rpmRollback(), rpmts_Create(), rpmts_init(), rpmtsCreate(), rpmtsOpenSDB(), rpmtsRollback(), rpmtsRun(), skipFiles(), and unsatisfiedDepend().
| void rpmFreeMacros | ( | MacroContext | mc | ) |
Destroy macro context.
| mc | macro context (NULL uses global context). |
Definition at line 2074 of file macro.c.
References _free(), MacroEntry_s::body, MacroContext_s::firstFree, MacroContext_s::macroTable, MacroEntry_s::name, MacroEntry_s::opts, MacroEntry_s::prev, and rpmGlobalMacroContext.
Referenced by build(), rpmcliFini(), and rpmspecQuery().
| 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.
The leading part of the first URL encountered is used for the result, other URL prefixes are discarded, permitting a primitive form of URL inheiritance.
| urlroot | root URL (often path to chroot, or NULL) | |
| urlmdir | directory URL (often a directory, or NULL) | |
| urlfile | file URL (often a file, or NULL) |
Definition at line 2350 of file macro.c.
References _free(), alloca(), file, rpmGetPath(), URL_IS_DASH, and urlPath().
Referenced by addSource(), db3close(), db3open(), db_init(), doIcon(), doPatch(), doRmSource(), doScript(), doSetupMacro(), doUntar(), handlePreambleTag(), makeTempFile(), prepFetch(), processBinaryFile(), processMetadataFile(), processPackageFiles(), rpmdsNew(), rpmfcGenerateDepends(), rpmInstall(), and rpmpsmStage().