|
rpm 5.3.12
|
#include "system.h"#include <stdarg.h>#include <rpmio_internal.h>#include <rpmlog.h>#include <mire.h>#include <rpmaug.h>#include <rpmficl.h>#include <rpmjs.h>#include <rpmperl.h>#include <rpmpython.h>#include <rpmruby.h>#include <rpmsm.h>#include <rpmsquirrel.h>#include <rpmsql.h>#include <rpmtcl.h>#include <rpmuuid.h>#include <rpmmacro.h>#include "debug.h"
Go to the source code of this file.
Data Structures | |
| struct | MacroBuf_s |
| Macro expansion state. More... | |
Defines | |
| #define | isblank(_c) ((char)(_c) == ' ' || (char)(_c) == '\t') |
| #define | iseol(_c) ((char)(_c) == '\n' || (char)(_c) == '\r') |
| #define | STREQ(_t, _f, _fn) ((_fn) == (sizeof(_t)-1) && !strncmp((_t), (_f), (_fn))) |
| #define | _RPMAUG_INTERNAL |
| #define | _MACRO_INTERNAL |
| #define | SAVECHAR(_mb, _c) { *(_mb)->t = (char) (_c), (_mb)->t++, (_mb)->nb--; } |
| #define | _MAX_MACRO_DEPTH 16 |
| #define | _PRINT_MACRO_TRACE 0 |
| #define | _PRINT_EXPAND_TRACE 0 |
| #define | _MAX_LOAD_DEPTH 2 |
| #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 struct MacroBuf_s * | MacroBuf |
Functions | |
| static int | expandMacro (MacroBuf mb) |
| Parse args and string for PHP like %{foo <args> : <string> } syntax. | |
| 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. | |
| static char * | dupMacroEntry (MacroEntry me) |
| void | rpmDumpMacroTable (MacroContext mc, FILE *fp) |
| Print macros to file stream. | |
| int | rpmGetMacroEntries (MacroContext mc, void *_mire, int used, const char ***avp) |
| Return macro entries as string array. | |
| 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 | expandFIFO (MacroBuf mb, MacroEntry me, const char *g, size_t gn) |
| static int | XpoptDupArgv (int argc, char **argv, int *argcPtr, char ***argvPtr) |
| static int | XpoptParseArgvString (const char *s, int *argcPtr, char ***argvPtr) |
| int | rpmSecuritySaneFile (const char *filename) |
| Check whether configuration file is moderately secure to load. | |
| 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. | |
| int | rpmUndefineMacro (MacroContext mc, const char *macro) |
| Undefine macro in context. | |
| void | rpmLoadMacros (MacroContext mc, int level) |
| Load macros from specific context into global context. | |
| int | rpmLoadMacroFile (MacroContext mc, const char *fn, int nesting) |
| 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). | |
| char * | rpmMCExpand (MacroContext mc, const char *arg,...) |
| Return (malloc'ed) concatenated macro expansion(s) in a context. | |
| int | rpmExpandNumeric (const char *arg) |
| Return macro expansion as a numeric value. | |
| char * | rpmCleanPath (char *path) |
| Canonicalize file path. | |
| 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 |
| int | _max_load_depth = 2 |
| static size_t | _macro_BUFSIZ = 16 * 1024 |
| static int | _debug = 0 |
Definition in file macro.c.
| #define _MAX_MACRO_DEPTH 16 |
Definition at line 151 of file macro.c.
Referenced by rpmLoadMacroFile().
| #define _suffix | ( | _s, | |
| _x | |||
| ) | (slen >= sizeof(_x) && !strcmp((_s)+slen-(sizeof(_x)-1), (_x))) |
| #define COPYNAME | ( | _ne, | |
| _s, | |||
| _c | |||
| ) |
{ SKIPBLANK(_s,_c); \
while(((_c) = (int) *(_s)) && (xisalnum(_c) || (_c) == (int) '_')) \
*(_ne)++ = *(_s)++; \
*(_ne) = '\0'; \
}
Definition at line 586 of file macro.c.
Referenced by doDefine(), and doUndefine().
| #define COPYOPTS | ( | _oe, | |
| _s, | |||
| _c | |||
| ) |
{ while(((_c) = (int) *(_s)) && (_c) != (int) ')') \
*(_oe)++ = *(_s)++; \
*(_oe) = '\0'; \
}
Definition at line 593 of file macro.c.
Referenced by doDefine().
| #define isblank | ( | _c | ) | ((char)(_c) == ' ' || (char)(_c) == '\t') |
Definition at line 9 of file macro.c.
Referenced by doDefine(), doFoo(), expandMacro(), and grabArgs().
| #define iseol | ( | _c | ) | ((char)(_c) == '\n' || (char)(_c) == '\r') |
Definition at line 11 of file macro.c.
Referenced by doDefine(), doShellEscape(), doUndefine(), expandMacro(), printExpansion(), printMacro(), and rdcl().
| #define MACRO_CHUNK_SIZE 16 |
Definition at line 168 of file macro.c.
Referenced by expandMacroTable().
| #define POPT_ARGV_ARRAY_GROW_DELTA 5 |
Definition at line 1473 of file macro.c.
Referenced by XpoptParseArgvString().
| #define POPT_ERROR_BADQUOTE -15 |
error in paramter quoting
Definition at line 1470 of file macro.c.
Referenced by XpoptParseArgvString().
| #define POPT_ERROR_MALLOC -21 |
memory allocation failed
Definition at line 1471 of file macro.c.
Referenced by XpoptDupArgv(), and XpoptParseArgvString().
| #define POPT_ERROR_NOARG -10 |
| #define SAVECHAR | ( | _mb, | |
| _c | |||
| ) | { *(_mb)->t = (char) (_c), (_mb)->t++, (_mb)->nb--; } |
Definition at line 147 of file macro.c.
Referenced by doShellEscape(), and expandMacro().
| #define SKIPBLANK | ( | _s, | |
| _c | |||
| ) |
/*@-globs@*/ /* FIX: __ctype_b */ \ while (((_c) = (int) *(_s)) && isblank(_c)) \ (_s)++; \
Definition at line 574 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))) |
Definition at line 13 of file macro.c.
Referenced by doFoo(), and expandMacro().
| typedef struct MacroBuf_s * MacroBuf |
| 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 2638 of file macro.c.
References _, expandMacroTable(), findEntry(), name, pushMacro(), rpmGlobalMacroContext, rpmlog(), RPMLOG_ERR, and sortMacroTable().
Referenced by addMacroDefault(), addSource(), doDefine(), doSetupMacro(), expandMacro(), grabArgs(), handlePreambleTag(), headerMacrosLoad(), makeGPGSignature(), parsePreamble(), parseSpec(), rpmcliInstall(), rpmLoadMacros(), rpmPlatform(), rpmRebuildTargetVars(), rpmtsOpenSDB(), setDefaults(), and setPathDefault().
| 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 192 of file macro.c.
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 2677 of file macro.c.
References findEntry(), popMacro(), rpmGlobalMacroContext, and sortMacroTable().
Referenced by doUndefine(), handlePreambleTag(), headerMacrosUnload(), makeGPGSignature(), parseSpec(), rpmcliInstall(), 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 736 of file macro.c.
References _, _macro_BUFSIZ, addMacro(), alloca(), COPYNAME, COPYOPTS, expandU(), isblank, iseol, matchchar(), MacroBuf_s::mc, rpmlog(), RPMLOG_ERR, 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 1231 of file macro.c.
References _macro_BUFSIZ, alloca(), COMPRESSED_OTHER, expandT(), expandU(), getenv(), isblank, isCompressed(), PATH_MAX, realpath(), rpmlog(), RPMLOG_ERR, RPMLOG_INFO, RPMLOG_MASK, rpmlogSetMask(), rpmuuidMake(), stpcpy(), stpncpy(), STREQ, urlPath(), uuid_ns, uuid_version, xisdigit(), and xisspace().
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 1205 of file macro.c.
References _macro_BUFSIZ, alloca(), expandU(), rpmlog(), and RPMLOG_ERR.
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 697 of file macro.c.
References _macro_BUFSIZ, alloca(), expandU(), iseol, MacroBuf_s::nb, SAVECHAR, and MacroBuf_s::t.
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 871 of file macro.c.
References _, _macro_BUFSIZ, alloca(), COPYNAME, delMacro(), iseol, rpmlog(), RPMLOG_ERR, and xisalpha().
Referenced by expandMacro(), and rpmUndefineMacro().
| static char* dupMacroEntry | ( | MacroEntry | me | ) | [static] |
Definition at line 256 of file macro.c.
References stpcpy(), and xmalloc().
Referenced by rpmGetMacroEntries().
| static int expandFIFO | ( | MacroBuf | mb, |
| MacroEntry | me, | ||
| const char * | g, | ||
| size_t | gn | ||
| ) | [static] |
| static int expandMacro | ( | MacroBuf | mb | ) | [static] |
Parse args and string for PHP like %{foo <args> : <string> } syntax.
| s | "{ ... }" construct to parse |
| nb | no. of bytes |
| *avp | invocation args |
| mb | macro expansion state |
Definition at line 1633 of file macro.c.
References _, _free(), _max_load_depth, addMacro(), alloca(), MacroBuf_s::depth, doDefine(), doFoo(), doOutput(), doShellEscape(), doUndefine(), MacroBuf_s::expand_trace, expandFIFO(), expandT(), findEntry(), freeArgs(), grabArgs(), isblank, iseol, MacroBuf_s::macro_trace, matchchar(), max_macro_depth, MacroBuf_s::mc, MacroBuf_s::nb, print_expand_trace, print_macro_trace, printExpansion(), printMacro(), RMIL_GLOBAL, rpmDumpMacroTable(), rpmjsFree(), rpmjsNew(), rpmjsRun(), rpmLoadMacroFile(), rpmlog(), RPMLOG_ERR, rpmluaGetGlobalState(), rpmluaGetPrintBuffer(), rpmluaRunScript(), rpmperlFree(), rpmperlNew(), rpmperlRun(), rpmpythonFree(), rpmpythonNew(), rpmpythonRun(), RPMRC_OK, rpmrubyFree(), rpmrubyNew(), rpmrubyRun(), rpmsqlFree(), rpmsqlNew(), rpmsqlRun(), rpmsquirrelFree(), rpmsquirrelNew(), rpmsquirrelRun(), rpmtclFree(), rpmtclNew(), rpmtclRun(), MacroBuf_s::s, SAVECHAR, STREQ, MacroBuf_s::t, xisalnum(), xisdigit(), xmalloc(), and xstrdup().
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 2603 of file macro.c.
References _, alloca(), MacroBuf_s::depth, MacroBuf_s::expand_trace, expandMacro(), MacroBuf_s::macro_trace, MacroBuf_s::mc, MacroBuf_s::nb, print_expand_trace, print_macro_trace, rpmGlobalMacroContext, rpmlog(), RPMLOG_ERR, MacroBuf_s::s, MacroBuf_s::spec, and MacroBuf_s::t.
Referenced by addFileToTagAux(), copyNextLineFromOFI(), processPackageFiles(), rpmExpand(), rpmGetPath(), and rpmMCExpand().
| static void expandMacroTable | ( | MacroContext | mc | ) | [static] |
Enlarge macro table.
| mc | macro context |
Definition at line 212 of file macro.c.
References MACRO_CHUNK_SIZE, 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 607 of file macro.c.
References alloca(), expandMacro(), and MacroBuf_s::s.
Referenced by doFoo(), expandFIFO(), 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 660 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.
| mc | macro context |
| name | macro name |
| namelen | no. of bytes |
Definition at line 365 of file macro.c.
References alloca(), compareMacroName(), and rpmGlobalMacroContext.
Referenced by addMacro(), delMacro(), and expandMacro().
| static void freeArgs | ( | MacroBuf | mb | ) | [static] |
Free parsed arguments for parameterized macro.
| mb | macro expansion state |
Definition at line 979 of file macro.c.
References _, MacroBuf_s::depth, MacroBuf_s::mc, popMacro(), rpmlog(), RPMLOG_ERR, and sortMacroTable().
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 1030 of file macro.c.
References _, _free(), _macro_BUFSIZ, addMacro(), alloca(), MacroBuf_s::depth, expandU(), isblank, MacroBuf_s::mc, rpmlog(), RPMLOG_ERR, stpcpy(), and xcalloc().
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 2939 of file macro.c.
References _, COMPRESSED_BZIP2, COMPRESSED_LZMA, COMPRESSED_LZOP, COMPRESSED_NOT, COMPRESSED_OTHER, COMPRESSED_XZ, COMPRESSED_ZIP, Fclose(), Ferror(), Fopen(), Fread(), Fstrerror(), rpmlog(), and RPMLOG_ERR.
| 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 467 of file macro.c.
Referenced by doDefine(), expandMacro(), and rpmLoadMacroFile().
| static void popMacro | ( | MacroEntry * | mep | ) | [static] |
Pop macro definition from macro entry stack.
| mep | address of macro entry slot |
Definition at line 957 of file macro.c.
References _free().
Referenced by delMacro(), and freeArgs().
| 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 537 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 493 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 924 of file macro.c.
References _free(), 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 403 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 3152 of file macro.c.
Referenced by db3open(), doLookup(), relocateFileList(), 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 2693 of file macro.c.
References alloca(), doDefine(), MacroBuf_s::mc, and rpmGlobalMacroContext.
Referenced by ftsCacheUpdate(), main(), rpmcliAllArgCallback(), rpmioAllArgCallback(), 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 284 of file macro.c.
References _, 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 3051 of file macro.c.
References _macro_BUFSIZ, expandMacros(), stpcpy(), xmalloc(), xrealloc(), and xstrdup().
Referenced by _GetPass(), addChangelog(), archScore(), checkForValidArchitectures(), checkUnpackagedFiles(), cpio_doio(), dbiTagsInit(), debevrfmtTag(), debmd5sumsTag(), defaultMachine(), doPatch(), doPrimary(), doSetupMacro(), fillOutMainPackage(), Fopen(), formatValue(), getMachineInfo(), headerMacrosLoad(), headerMacrosUnload(), i18nTag(), initGlobs(), initSourceHeader(), lookupPackage(), main(), makeGPGSignature(), Open(), open_dso(), packageBinaries(), parseBuildInstallClean(), parseForRegexLang(), parseForSimple(), parsePreamble(), parseSpec(), prepFetch(), processSourceFiles(), rdToken(), readLine(), Realpath(), rpmCheckPassPhrase(), rpmcliEvalSlurp(), rpmcliImportPubkeys(), rpmcliInstallElementPath(), rpmcliQuery(), rpmdbNew(), rpmdcParseZeroInstall(), rpmdsCpuinfo(), rpmdsGetconf(), rpmdsSysinfo(), rpmEVRmire(), rpmEVRorder(), rpmExpandNumeric(), rpmfcClassify(), rpmfcExec(), rpmfcExpandAppend(), rpmfcExpandRegexps(), rpmfcGenerateDependsHelper(), rpmfcSCRIPT(), rpmgiNext(), rpmgiOpen(), rpmInstallSourcePackage(), rpmioAllArgCallback(), rpmmiAddPattern(), rpmnsArch(), rpmnsParse(), rpmnsProbeSignature(), rpmPlatform(), rpmpsmStage(), rpmReadConfigFiles(), rpmReadRC(), rpmrepoDoRepoMetadata(), rpmrepoInitPopt(), rpmrepoMDExpand(), rpmRollback(), rpmShowProgress(), rpmShowRC(), rpmsqlNew(), rpmsqlRun(), rpmts_IDTXglob(), rpmtsAddInstallElement(), rpmtsAddObsoletes(), rpmtsAddUpgrades(), rpmtsEraseDebuginfo(), rpmtsFindPubkey(), rpmtsOpenSDB(), rpmtsRollback(), rpmtsSkipFiles(), rpmtsSolve(), rpmvtNew(), runImmedTriggers(), runInstScript(), runScript(), runTriggers(), spec_get_buildroot(), statFormat(), strsubFormat(), tagLoadATags(), tagValidate(), unsatisfiedDepend(), urlFind(), urlGetFile(), 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 3125 of file macro.c.
References _free(), and rpmExpand().
Referenced by _rpmtsRun(), addReqProv(), checkPackageDeps(), checkUnpackagedFiles(), doIcon(), doPatchMacro(), getDigestAlgo(), handleInstInstalledFile(), handleOverlappedFiles(), main(), newSpec(), parseScript(), parseSpec(), processPackageFiles(), relocateFileList(), rpmcliInstall(), rpmcliQuery(), rpmcliVerify(), rpmdbOpen(), rpmErase(), rpmfcGenerateDepends(), rpmfcHelper(), rpmpsmStage(), rpmRollback(), rpmts_new(), rpmtsCreate(), rpmtsOpenSDB(), rpmtsPrepare(), rpmtsRollback(), rpmtsSkipFiles(), unsatisfiedDepend(), and urlGetFile().
| void rpmFreeMacros | ( | MacroContext | mc | ) |
Destroy macro context.
| mc | macro context (NULL uses global context). |
Definition at line 2912 of file macro.c.
References _free(), and rpmGlobalMacroContext.
Referenced by main(), rpmcliFini(), rpmioFini(), 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 3290 of file macro.c.
References _free(), alloca(), file, rpmGetPath(), URL_IS_DASH, and urlPath().
Referenced by addSource(), createDir(), db3close(), db3open(), db_init(), doIcon(), doPatch(), doScript(), doSetupMacro(), doUntar(), handlePreambleTag(), isSpecFile(), main(), prepFetch(), processBinaryFile(), processMetadataFile(), processPackageFiles(), rpmdsNew(), rpmfcGenerateDepends(), rpmfiNew(), rpmpsmStage(), rpmrepoInitPopt(), rpmTempFile(), sql_close(), sql_initDB(), and sql_open().
| int rpmGetMacroEntries | ( | MacroContext | mc, |
| void * | _mire, | ||
| int | used, | ||
| const char *** | avp | ||
| ) |
Return macro entries as string array.
| mc | macro context (NULL uses global context) |
| _mire | pattern to match (NULL disables) |
| used | macro usage (<0 all, =0 unused, >=1 used count) |
| *avp | macro definitions |
Definition at line 318 of file macro.c.
References dupMacroEntry(), mireRegexec(), rpmGlobalMacroContext, xcalloc(), and xrealloc().
Referenced by packageSources(), and rpmtsFini().
| char* rpmGetPath | ( | const char * | path, |
| ... | |||
| ) |
Return (malloc'ed) expanded, canonicalized, file path.
| path | macro(s) to expand (NULL terminates list) |
Definition at line 3244 of file macro.c.
References _macro_BUFSIZ, alloca(), expandMacros(), rpmCleanPath(), stpcpy(), and xstrdup().
Referenced by addFileToTagAux(), buildSpec(), checkSpec(), Chroot(), db3open(), db_init(), defaultMachine(), doPatch(), doUntar(), fpLookupSubdir(), initSourceHeader(), main(), packageBinaries(), packageSources(), parseFiles(), parseForSimple(), parseSpec(), processPackageFiles(), Realpath(), repoWriteMetadataDocs(), rpmcliInit(), rpmcliInstallElementPath(), rpmdbExportInfo(), rpmdbURIPath(), rpmdsSysinfo(), rpmfiNew(), rpmGenPath(), rpmGetFilesystemUsage(), rpmpsmStage(), rpmQueryVerify(), rpmrepoCloseMDFile(), rpmrepoDoFinalMove(), rpmrepoDoPkgMetadata(), rpmrepoDoRepoMetadata(), rpmrepoGetPath(), rpmrepoInitPopt(), rpmrepoMkdir(), rpmrepoOpenMDFile(), rpmrepoTestSetupDirs(), rpmsqlNew(), rpmsxNew(), rpmtsFindPubkey(), rpmtsOpenDB(), rpmtsOpenSDB(), rpmtsPRCO(), rpmtsRebuildDB(), rpmvfNew(), str2uuid(), and unsatisfiedDepend().
| int rpmGlob | ( | const char * | patterns, |
| int * | argcPtr, | ||
| const char *** | argvPtr | ||
| ) |
Return URL path(s) from a (URL prefixed) pattern glob.
| patterns | glob pattern |
| *argcPtr | no. of paths |
| *argvPtr | array of paths (malloc'd contiguous blob) |
Definition at line 2464 of file macro.c.
References _free(), glob_t::gl_pathc, glob_t::gl_pathv, Glob(), Glob_error(), Glob_pattern_p(), GLOB_TILDE, Globfree(), setlocale, URL_IS_DASH, URL_IS_FTP, URL_IS_HKP, URL_IS_HTTP, URL_IS_HTTPS, URL_IS_PATH, URL_IS_UNKNOWN, urlPath(), xmalloc(), XpoptParseArgvString(), xrealloc(), and xstrdup().
Referenced by IDTXglob(), processBinaryFile(), rpmcliInit(), rpmcliInstallElementPath(), rpmgiGlobArgv(), rpmInitMacros(), rpmioInit(), and rpmReadPackageManifest().
| void rpmInitMacros | ( | MacroContext | mc, |
| const char * | macrofiles | ||
| ) |
Initialize macro context from set of macrofile(s).
| mc | macro context |
| macrofiles | colon separated list of macro files (NULL does nothing) |
Definition at line 2826 of file macro.c.
References _free(), _max_load_depth, _suffix, RMIL_CMDLINE, rpmCLIMacroContext, rpmGlob(), rpmGlobalMacroContext, rpmLoadMacroFile(), rpmLoadMacros(), rpmlog(), RPMLOG_WARNING, rpmSecuritySaneFile(), xmalloc(), and xstrdup().
Referenced by rpmReadRC().
| int rpmLoadMacroFile | ( | MacroContext | mc, |
| const char * | fn, | ||
| int | nesting | ||
| ) |
Load macro context from a macro file.
| mc | (unused) |
| fn | macro file name |
| nesting | max load recursion depth, 0 disables. |
Definition at line 2755 of file macro.c.
References _, _free(), _macro_BUFSIZ, _MAX_MACRO_DEPTH, alloca(), Fclose(), Ferror(), Fopen(), matchchar(), max_macro_depth, rdcl(), RMIL_MACROFILES, rpmDefineMacro(), rpmLoadMacroFile(), rpmlog(), RPMLOG_WARNING, rpmMCExpand(), and SKIPBLANK.
Referenced by expandMacro(), rpmInitMacros(), and rpmLoadMacroFile().
| void rpmLoadMacros | ( | MacroContext | mc, |
| int | level | ||
| ) |
Load macros from specific context into global context.
| mc | macro context (NULL does nothing). |
| level | macro recursion level (0 is entry API) |
Definition at line 2715 of file macro.c.
References addMacro(), and rpmGlobalMacroContext.
Referenced by rpmInitMacros().
| char* rpmMCExpand | ( | MacroContext | mc, |
| const char * | arg, | ||
| ... | |||
| ) |
Return (malloc'ed) concatenated macro expansion(s) in a context.
| mc | macro context |
| arg | macro(s) to expand (NULL terminates list) |
Definition at line 3088 of file macro.c.
References _macro_BUFSIZ, expandMacros(), stpcpy(), xmalloc(), xrealloc(), and xstrdup().
Referenced by rpmLoadMacroFile().
| int rpmSecuritySaneFile | ( | const char * | filename | ) |
Check whether configuration file is moderately secure to load.
| filename | filename to check |
Definition at line 2441 of file macro.c.
Referenced by rpmcliInit(), rpmInitMacros(), and rpmioInit().
| int rpmUndefineMacro | ( | MacroContext | mc, |
| const char * | macro | ||
| ) |
Undefine macro in context.
| mc | macro context (NULL uses global context). |
| macro | macro name |
Definition at line 2707 of file macro.c.
References doUndefine(), and rpmGlobalMacroContext.
Referenced by rpmcliAllArgCallback(), and rpmioAllArgCallback().
| static void sortMacroTable | ( | MacroContext | mc | ) | [static] |
Sort entries in macro table.
| mc | macro context |
Definition at line 234 of file macro.c.
References compareMacroName().
Referenced by addMacro(), delMacro(), and freeArgs().
| static int XpoptDupArgv | ( | int | argc, |
| char ** | argv, | ||
| int * | argcPtr, | ||
| char *** | argvPtr | ||
| ) | [static] |
< missing argument
< missing argument
< memory allocation failed
Definition at line 1475 of file macro.c.
References POPT_ERROR_MALLOC, POPT_ERROR_NOARG, and xmalloc().
Referenced by XpoptParseArgvString().
| static int XpoptParseArgvString | ( | const char * | s, |
| int * | argcPtr, | ||
| char *** | argvPtr | ||
| ) | [static] |
< memory allocation failed
< error in paramter quoting
< error in paramter quoting
Definition at line 1515 of file macro.c.
References alloca(), POPT_ARGV_ARRAY_GROW_DELTA, POPT_ERROR_BADQUOTE, POPT_ERROR_MALLOC, xmalloc(), and XpoptDupArgv().
Referenced by rpmGlob().
size_t _macro_BUFSIZ = 16 * 1024 [static] |
Definition at line 172 of file macro.c.
Referenced by doDefine(), doFoo(), doOutput(), doShellEscape(), doUndefine(), grabArgs(), rpmExpand(), rpmGetPath(), rpmLoadMacroFile(), and rpmMCExpand().
| int _max_load_depth = 2 |
Definition at line 165 of file macro.c.
Referenced by expandMacro(), and rpmInitMacros().
| int max_macro_depth = 16 |
Definition at line 153 of file macro.c.
Referenced by expandMacro(), and rpmLoadMacroFile().
| int print_expand_trace = 0 |
Definition at line 161 of file macro.c.
Referenced by expandMacro(), and expandMacros().
| int print_macro_trace = 0 |
Definition at line 157 of file macro.c.
Referenced by expandMacro(), and expandMacros().
Definition at line 126 of file macro.c.
Referenced by rpmcliAllArgCallback(), rpmcliFini(), rpmInitMacros(), rpmioAllArgCallback(), and rpmioFini().
struct MacroContext_s rpmCLIMacroContext_s [static] |
Definition at line 121 of file macro.c.
Referenced by addMacro(), delMacro(), expandMacros(), findEntry(), newSpec(), rpmDefineMacro(), rpmDumpMacroTable(), rpmFreeMacros(), rpmGetMacroEntries(), rpmInitMacros(), rpmLoadMacros(), and rpmUndefineMacro().
struct MacroContext_s rpmGlobalMacroContext_s [static] |
1.7.4