Main Page Modules Data Structures File List Data Fields Globals Related Pages

# rpmio/macro.c File Reference

More...

`#include "system.h"`
`#include <stdarg.h>`
`#include <rpmio_internal.h>`
`#include <rpmmessages.h>`
`#include <rpmerr.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) ((_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 | MACRO_CHUNK_SIZE 16
#define | SKIPBLANK(_s, _c)
#define | SKIPNONBLANK(_s, _c)
#define | COPYNAME(_ne, _s, _c)
#define | COPYOPTS(_oe, _s, _c)
#define | COPYBODY(_be, _s, _c)
## Typedefs
typedef MacroBuf_s * | MacroBuf
| Macro expansion state. More...
## Functions
int | expandMacro (MacroBuf mb)
| The main macro recursion loop. More...
void * | _free (const void *p)
| Wrapper to free(3), hides const compilation noise, permit NULL, return NULL. More...
int | compareMacroName (const void *ap, const void *bp)
| Compare macro entries by name (qsort/bsearch). More...
void | expandMacroTable (MacroContext mc)
| Enlarge macro table. More...
void | sortMacroTable (MacroContext mc)
| Sort entries in macro table. More...
void | rpmDumpMacroTable (MacroContext mc, FILE *fp)
| Print macros to file stream. More...
MacroEntry * | findEntry (MacroContext mc, const char *name, size_t namelen)
| Find entry in macro table. More...
char * | rdcl (char *buf, size_t size, FD_t fd, int escapes)
| fgets(3) analogue that reads \ continuations. More...
const char * | matchchar (const char *p, char pl, char pr)
| Return text between pl and matching pr characters. More...
void | printMacro (MacroBuf mb, const char *s, const char *se)
| Pre-print macro expression to be expanded. More...
void | printExpansion (MacroBuf mb, const char *t, const char *te)
| Post-print expanded macro expression. More...
int | expandT (MacroBuf mb, const char *f, size_t flen)
| Save source and expand field into target. More...
int | expandU (MacroBuf mb, char *u, size_t ulen)
| Save source/target and expand macro in u. More...
int | doShellEscape (MacroBuf mb, const char *cmd, size_t clen)
| Expand output of shell command into target buffer. More...
const char * | doDefine (MacroBuf mb, const char *se, int level, int expandbody)
| Parse (and execute) new macro definition. More...
const char * | doUndefine (MacroContext mc, const char *se)
| Parse (and execute) macro undefinition. More...
void | pushMacro (MacroEntry *mep, const char *n, const char *o, const char *b, int level)
| Push new macro definition onto macro entry stack. More...
void | popMacro (MacroEntry *mep)
| Pop macro definition from macro entry stack. More...
void | freeArgs (MacroBuf mb)
| Free parsed arguments for parameterized macro. More...
const char * | grabArgs (MacroBuf mb, const MacroEntry me, const char *se, char lastc)
| Parse arguments (to next new line) for parameterized macro. More...
void | doOutput (MacroBuf mb, int waserror, const char *msg, size_t msglen)
| Perform macro message output. More...
void | doFoo (MacroBuf mb, int negate, const char *f, size_t fn, const char *g, size_t gn)
| Execute macro primitives. More...
int | expandMacros (void *spec, MacroContext mc, char *sbuf, size_t slen)
| Expand macro into buffer. More...
void | addMacro (MacroContext mc, const char *n, const char *o, const char *b, int level)
| Add macro to context. More...
void | delMacro (MacroContext mc, const char *n)
| Delete macro from context. More...
int | rpmDefineMacro (MacroContext mc, const char *macro, int level)
| Define macro in context. More...
void | rpmLoadMacros (MacroContext mc, int level)
| Load macros from specific context into global context. More...
void | rpmInitMacros (MacroContext mc, const char *macrofiles)
| Initialize global macro context from set of macrofile(s). More...
void | rpmFreeMacros (MacroContext mc)
| Destroy macro context. More...
int | isCompressed (const char *file, rpmCompressedMagic *compressed)
| Return type of compression used in file. More...
char * | rpmExpand (const char *arg,...)
| Return (malloc'ed) concatenated macro expansion(s). More...
int | rpmExpandNumeric (const char *arg)
| Return macro expansion as a numeric value. More...
char * | rpmCleanPath (char *path)
| Canonicalize file path. More...
const char * | rpmGetPath (const char *path,...)
| Return (malloc'ed) expanded, canonicalized, file path. More...
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. More...
## Variables
MacroContext_s | rpmGlobalMacroContext_s
MacroContext | rpmGlobalMacroContext = &rpmGlobalMacroContext_s
MacroContext_s | rpmCLIMacroContext_s
MacroContext | rpmCLIMacroContext = &rpmCLIMacroContext_s
int | max_macro_depth = 16
int | print_macro_trace = 0
int | print_expand_trace = 0

## Detailed Description

Definition in file macro.c.

## Define Documentation

#define COPYBODY | ( | _be,
|  | _s,
|  | _c |  | ) |

| Value:
    {               \
            while(((_c) = *(_s)) && !iseol(_c)) { \
                    if ((_c) == '\\') \
                            (_s)++; \
                    *(_be)++ = *(_s)++; \
            }                       \
            *(_be) = '\0';          \
                    \
        }
Definition at line 468 of file macro.c. Referenced by doDefine.

#define COPYNAME | ( | _ne,
|  | _s,
|  | _c |  | ) |

| Value:
    {       SKIPBLANK(_s,_c);       \
                    \
            while(((_c) = *(_s)) && (xisalnum(_c) || (_c) == '_')) \
                    *(_ne)++ = *(_s)++; \
            *(_ne) = '\0';          \
                    \
        }
Definition at line 451 of file macro.c. Referenced by doDefine, and doUndefine.

#define COPYOPTS | ( | _oe,
|  | _s,
|  | _c |  | ) |

| Value:
    {               \
            while(((_c) = *(_s)) && (_c) != ')') \
                    *(_oe)++ = *(_s)++; \
            *(_oe) = '\0';          \
                    \
        }
Definition at line 460 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

| Definition at line 106 of file macro.c. Referenced by expandMacroTable.

#define MAX_MACRO_DEPTH 16

| Definition at line 89 of file macro.c.

#define SAVECHAR | ( | _mb,
|  | _c |  | ) | { *(_mb)->t = (_c), (_mb)->t++, (_mb)->nb--; }

| Definition at line 85 of file macro.c. Referenced by doShellEscape, and expandMacro.

#define SKIPBLANK | ( | _s,
|  | _c |  | ) |

| Value:
    \
            while (((_c) = *(_s)) && isblank(_c)) \
                    (_s)++;         \
Definition at line 439 of file macro.c. Referenced by doDefine, and rpmInitMacros.

#define SKIPNONBLANK | ( | _s,
|  | _c |  | ) |

| Value:
    \
            while (((_c) = *(_s)) && !(isblank(_c) || iseol(_c))) \
                    (_s)++;         \
Definition at line 445 of file macro.c.

#define STREQ | ( | _t,
|  | _f,
|  | _fn |  | ) | ((_fn) == (sizeof(_t)-1) && !strncmp((_t), (_f), (_fn)))

| Definition at line 14 of file macro.c. Referenced by doFoo, and expandMacro.

## Typedef Documentation

typedef struct MacroBuf_s * MacroBuf

| Macro expansion state.

## Function Documentation

void* _free | ( | const void * | p | ) | `[inline, static]`

  | Wrapper to free(3), hides const compilation noise, permit NULL, return NULL. Parameters:
  p | memory to free
  Return values:
  NULL | always
Definition at line 121 of file macro.c.

void addMacro | ( | MacroContext | mc,
|  | const char * | n,
|  | const char * | o,
|  | const char * | b,
|  | int | level
| ) |

  | Add macro to context. Deprecated: Use rpmDefineMacro(). Parameters:
  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 1507 of file macro.c. References expandMacroTable, findEntry, MacroContext_s::firstFree, MacroContext_s::macrosAllocated, MacroContext_s::macroTable, pushMacro, rpmGlobalMacroContext, and sortMacroTable.

int compareMacroName | ( | const void * | ap,
|  | const void * | bp
| ) | `[static]`

  | Compare macro entries by name (qsort/bsearch). Parameters:
  ap | 1st macro entry
  bp | 2nd macro entry
Returns: result of comparison Definition at line 137 of file macro.c. References MacroEntry_s::name. Referenced by findEntry, and sortMacroTable.

void delMacro | ( | MacroContext | mc,
|  | const char * | n
| ) |

  | Delete macro from context. Parameters:
  mc | macro context (NULL uses global context).
  n | macro name
Definition at line 1533 of file macro.c. References findEntry, popMacro, rpmGlobalMacroContext, and sortMacroTable.

const char* doDefine | ( | MacroBuf | mb,
|  | const char * | se,
|  | int | level,
|  | int | expandbody
| ) | `[static]`

  | Parse (and execute) new macro definition. Parameters:
  mb | macro expansion state
  se | macro definition to parse
  level | macro recursion level
  expandbody | should body be expanded?
Returns: address to continue parsing Definition at line 619 of file macro.c. References _, addMacro, COPYBODY, COPYNAME, COPYOPTS, expandU, isblank, iseol, matchchar, SKIPBLANK, and xisalpha. Referenced by expandMacro, and rpmDefineMacro.

void doFoo | ( | MacroBuf | mb,
|  | int | negate,
|  | const char * | f,
|  | size_t | fn,
|  | const char * | g,
|  | size_t | gn
| ) | `[static]`

  | Execute macro primitives. Parameters:
  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 1047 of file macro.c. References COMPRESSED_OTHER, expandT, expandU, isblank, isCompressed, rpmCompressedMagic, STREQ, urlPath, and xisdigit. Referenced by expandMacro.

void doOutput | ( | MacroBuf | mb,
|  | int | waserror,
|  | const char * | msg,
|  | size_t | msglen
| ) | `[static]`

  | Perform macro message output. Parameters:
  mb | macro expansion state
  waserror | use rpmError()?
  msg | message to ouput
  msglen | no. of bytes in message
Definition at line 1022 of file macro.c. References expandU. Referenced by expandMacro.

int doShellEscape | ( | MacroBuf | mb,
|  | const char * | cmd,
|  | size_t | clen
| ) | `[static]`

  | Expand output of shell command into target buffer. Parameters:
  mb | macro expansion state
  cmd | shell command
  clen | no. bytes in shell command
Returns: result of expansion Definition at line 580 of file macro.c. References expandU, iseol, and SAVECHAR. Referenced by expandMacro.

const char* doUndefine | ( | MacroContext | mc,
|  | const char * | se
| ) | `[static]`

  | Parse (and execute) macro undefinition. Parameters:
  mc | macro context
  se | macro name to undefine
Returns: address to continue parsing Definition at line 715 of file macro.c. References _, COPYNAME, delMacro, iseol, and xisalpha. Referenced by expandMacro.

int expandMacro | ( | MacroBuf | mb | ) | `[static]`

  | The main macro recursion loop. Todo: Dynamically reallocate target buffer. Parameters:
  mb | macro expansion state
Returns: 0 on success, 1 on failure Definition at line 1149 of file macro.c. References _, addMacro, MacroEntry_s::body, doDefine, doFoo, doOutput, doShellEscape, doUndefine, expandT, findEntry, freeArgs, grabArgs, isblank, iseol, matchchar, max_macro_depth, MacroEntry_s::name, MacroEntry_s::opts, print_expand_trace, print_macro_trace, printExpansion, printMacro, RMIL_GLOBAL, rpmDumpMacroTable, SAVECHAR, STREQ, MacroEntry_s::used, and xisalnum. Referenced by expandMacros, expandT, and expandU.

int expandMacros | ( | void * | spec,
|  | MacroContext | mc,
|  | char * | sbuf,
|  | size_t | slen
| ) |

  | Expand macro into buffer. Deprecated: Use rpmExpand(). Todo: Eliminate from API. Parameters:
  spec | cookie (unused)
  mc | macro context (NULL uses global context).
  Return values:
  sbuf | input macro to expand, output expansion
  Parameters:
  slen | size of buffer
Returns: 0 on success Definition at line 1472 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, MacroBuf_s::s, MacroBuf_s::spec, and MacroBuf_s::t.

void expandMacroTable | ( | MacroContext | mc | ) | `[static]`

  | Enlarge macro table. Parameters:
  mc | macro context
Definition at line 158 of file macro.c. References MACRO_CHUNK_SIZE, xmalloc, and xrealloc. Referenced by addMacro.

int expandT | ( | MacroBuf | mb,
|  | const char * | f,
|  | size_t | flen
| ) | `[static]`

  | Save source and expand field into target. Parameters:
  mb | macro expansion state
  f | field
  flen | no. bytes in field
Returns: result of expansion Definition at line 487 of file macro.c. References alloca, and expandMacro. Referenced by doFoo, and expandMacro.

int expandU | ( | MacroBuf | mb,
|  | char * | u,
|  | size_t | ulen
| ) | `[static]`

  | Save source/target and expand macro in u. Parameters:
  mb | macro expansion state
  u | input macro, output expansion
  ulen | no. bytes in u buffer
Returns: result of expansion Definition at line 541 of file macro.c. References alloca, and expandMacro. Referenced by doDefine, doFoo, doOutput, doShellEscape, and grabArgs.

MacroEntry* findEntry | ( | MacroContext | mc,
|  | const char * | name,
|  | size_t | namelen
| ) | `[static]`

  | Find entry in macro table. Parameters:
  mc | macro context
  name | macro name
  namelen | no. of byes
Returns: address of slot in macro table with name (or NULL) Definition at line 244 of file macro.c. References compareMacroName, MacroEntry_s::name, and rpmGlobalMacroContext. Referenced by addMacro, delMacro, expandMacro, headerAddI18NString, headerAddOrAppendEntry, headerAppendEntry, headerFindI18NString, headerGetRawEntry, headerIsEntry, headerModifyEntry, headerRemoveEntry, htGetEntry, htHasEntry, and intGetEntry.

void freeArgs | ( | MacroBuf | mb | ) | `[static]`

  | Free parsed arguments for parameterized macro. Parameters:
  mb | macro expansion state
Definition at line 824 of file macro.c. References _, MacroEntry_s::body, MacroContext_s::firstFree, MacroEntry_s::level, MacroContext_s::macroTable, MacroEntry_s::name, popMacro, sortMacroTable, and MacroEntry_s::used. Referenced by expandMacro.

const char* grabArgs | ( | MacroBuf | mb,
|  | const MacroEntry | me,
|  | const char * | se,
|  | char | lastc
| ) | `[static]`

  | Parse arguments (to next new line) for parameterized macro. Todo: Use popt rather than getopt to parse args. Parameters:
  mb | macro expansion state
  me | macro entry slot
  se | arguments to parse
  lastc | stop parsing at lastc
Returns: address to continue parsing Definition at line 876 of file macro.c. References _, addMacro, alloca, expandU, isblank, and stpcpy. Referenced by expandMacro.

int isCompressed | ( | const char * | file,
|  | rpmCompressedMagic * | compressed
| ) |

  | Return type of compression used in file. Parameters:
  file | name of file
  Return values:
  compressed | address of compression type
Returns: 0 on success, 1 on I/O error Definition at line 1681 of file macro.c. References _, COMPRESSED_BZIP2, COMPRESSED_NOT, COMPRESSED_OTHER, COMPRESSED_ZIP, Fclose, Ferror, Fopen, Fread, Fstrerror, and rpmCompressedMagic.

const char* matchchar | ( | const char * | p,
|  | char | pl,
|  | char | pr
| ) | `[static]`

  | Return text between pl and matching pr characters. Parameters:
  p | start of text
  pl | left char, i.e. '[', '(', '{', etc.
  pr | right char, i.e. ']', ')', '}', etc.
Returns: address of last char before pr (or NULL) Definition at line 332 of file macro.c. Referenced by doDefine, and expandMacro.

void popMacro | ( | MacroEntry * | mep | ) | `[static]`

  | Pop macro definition from macro entry stack. Parameters:
  mep | address of macro entry slot
Definition at line 798 of file macro.c. References _free, MacroEntry_s::body, MacroEntry_s::name, MacroEntry_s::opts, and MacroEntry_s::prev. Referenced by delMacro, and freeArgs.

void printExpansion | ( | MacroBuf | mb,
|  | const char * | t,
|  | const char * | te
| ) | `[static]`

  | Post-print expanded macro expression. Parameters:
  mb | macro expansion state
  t | current expansion string result
  te | end of string
Definition at line 402 of file macro.c. References _, and iseol. Referenced by expandMacro.

void printMacro | ( | MacroBuf | mb,
|  | const char * | s,
|  | const char * | se
| ) | `[static]`

  | Pre-print macro expression to be expanded. Parameters:
  mb | macro expansion state
  s | current expansion string
  se | end of string
Definition at line 358 of file macro.c. References _, and iseol. Referenced by expandMacro.

void pushMacro | ( | MacroEntry * | mep,
|  | const char * | n,
|  | const char * | o,
|  | const char * | b,
|  | int | level
| ) | `[static]`

  | Push new macro definition onto macro entry stack. Parameters:
  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 767 of file macro.c. References _free, MacroEntry_s::body, MacroEntry_s::level, MacroEntry_s::name, MacroEntry_s::opts, MacroEntry_s::prev, MacroEntry_s::used, xmalloc, and xstrdup. Referenced by addMacro.

char* rdcl | ( | char * | buf,
|  | size_t | size,
|  | FD_t | fd,
|  | int | escapes
| ) | `[static]`

  | fgets(3) analogue that reads \ continuations. Last newline always trimmed. Parameters:
  buf | input buffer
  size | inbut buffer size (bytes)
  fd | file handle
  escapes | permit escaped newlines?
Returns: buffer, or NULL on end-of-file Definition at line 290 of file macro.c. References fdGetFILE, and iseol. Referenced by rpmInitMacros.

char* rpmCleanPath | ( | char * | path | ) |

  | Canonicalize file path. Parameters:
  path | path to canonicalize (in-place)
Returns: canonicalized path (malloc'ed) Definition at line 1783 of file macro.c. References begin.

int rpmDefineMacro | ( | MacroContext | mc,
|  | const char * | macro,
|  | int | level
| ) |

  | Define macro in context. Parameters:
  mc | macro context (NULL uses global context).
  macro | macro name, options, body
  level | macro recursion level (0 is entry API)
Returns: Todo: Document. Definition at line 1549 of file macro.c. References alloca, doDefine, MacroBuf_s::mc, and rpmGlobalMacroContext.

void rpmDumpMacroTable | ( | MacroContext | mc,
|  | FILE * | fp
| ) |

  | Print macros to file stream. Parameters:
  mc | macro context (NULL uses global context).
  fp | file stream (NULL uses stderr).
Definition at line 202 of file macro.c. References _, MacroEntry_s::body, MacroContext_s::firstFree, MacroEntry_s::level, MacroContext_s::macroTable, MacroEntry_s::name, MacroEntry_s::opts, rpmGlobalMacroContext, and MacroEntry_s::used.

char* rpmExpand | ( | const char * | arg,
|  | ... |
| ) |

  | Return (malloc'ed) concatenated macro expansion(s). Parameters:
  arg | macro(s) to expand (NULL terminates list)
Returns: macro expansion (malloc'ed) Definition at line 1733 of file macro.c. References expandMacros, stpcpy, and xstrdup.

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. Parameters:
  arg | macro to expand
Returns: numeric value Definition at line 1756 of file macro.c. References _free, and rpmExpand.

void rpmFreeMacros | ( | MacroContext | mc | ) |

  | Destroy macro context. Parameters:
  mc | macro context (NULL uses global context).
Definition at line 1654 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.

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. Parameters:
  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)
Returns: expanded, merged, canonicalized path (malloc'ed) Definition at line 1902 of file macro.c. References _free, alloca, rpmGetPath, URL_IS_DASH, and urlPath.

const char* rpmGetPath | ( | const char * | path,
|  | ... |
| ) |

  | Return (malloc'ed) expanded, canonicalized, file path. Parameters:
  path | macro(s) to expand (NULL terminates list)
Returns: canonicalized path (malloc'ed) Definition at line 1871 of file macro.c. References expandMacros, rpmCleanPath, stpcpy, and xstrdup.

void rpmInitMacros | ( | MacroContext | mc,
|  | const char * | macrofiles
| ) |

  | Initialize global macro context from set of macrofile(s). Parameters:
  mc | (unused)
  macrofiles | colon separated list of macro files (NULL does nothing)
Definition at line 1583 of file macro.c. References _free, Fclose, Ferror, Fopen, getenv, max_macro_depth, rdcl, RMIL_CMDLINE, RMIL_MACROFILES, rpmCLIMacroContext, rpmDefineMacro, rpmGlobalMacroContext, rpmLoadMacros, SKIPBLANK, and xstrdup.

void rpmLoadMacros | ( | MacroContext | mc,
|  | int | level
| ) |

  | Load macros from specific context into global context. Parameters:
  mc | macro context (NULL does nothing).
  level | macro recursion level (0 is entry API)
Definition at line 1562 of file macro.c. References addMacro, MacroEntry_s::body, MacroContext_s::firstFree, MacroContext_s::macroTable, MacroEntry_s::name, MacroEntry_s::opts, and rpmGlobalMacroContext.

void sortMacroTable | ( | MacroContext | mc | ) | `[static]`

  | Sort entries in macro table. Parameters:
  mc | macro context
Definition at line 181 of file macro.c. References compareMacroName. Referenced by addMacro, delMacro, and freeArgs.

## Variable Documentation

int max_macro_depth = 16

| Definition at line 91 of file macro.c. Referenced by expandMacro, and rpmInitMacros.

int print_expand_trace = 0

| Definition at line 102 of file macro.c. Referenced by expandMacro, and expandMacros.

int print_macro_trace = 0

| Definition at line 100 of file macro.c. Referenced by expandMacro, and expandMacros.

MacroContext rpmCLIMacroContext = &rpmCLIMacroContext_s

| Definition at line 64 of file macro.c. Referenced by rpmInitMacros.

struct MacroContext_s rpmCLIMacroContext_s`[static]`

| Definition at line 62 of file macro.c.

MacroContext rpmGlobalMacroContext = &rpmGlobalMacroContext_s

| Definition at line 59 of file macro.c. Referenced by addMacro, delMacro, expandMacros, findEntry, rpmDefineMacro, rpmDumpMacroTable, rpmFreeMacros, rpmInitMacros, and rpmLoadMacros.

struct MacroContext_s rpmGlobalMacroContext_s`[static]`

| Definition at line 57 of file macro.c.