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

int | _debug = 0
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 448 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 435 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 442 of file macro.c.

Referenced by doDefine.

#define isblank | ( | _c |  | ) | ((_c) == ' ' || (_c) == '\t')

| Definition at line 12 of file macro.c. Referenced by doDefine, doFoo, expandMacro, and grabArgs.

#define iseol | ( | _c |  | ) | ((_c) == '\n' || (_c) == '\r')

| Definition at line 14 of file macro.c. Referenced by doDefine, doShellEscape, doUndefine, expandMacro, printExpansion, printMacro, and rdcl.

#define MACRO_CHUNK_SIZE 16

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

#define MAX_MACRO_DEPTH 16

| Definition at line 87 of file macro.c.

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

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

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

Value:

    while (((_c) = *(_s)) && isblank(_c)) \
                    (_s)++;

Definition at line 427 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 431 of file macro.c.

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

| Definition at line 16 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 1490 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 1516 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 600 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 1026 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 999 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 560 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 696 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 1126 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 1451 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 157 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 465 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 520 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 241 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 801 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 852 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 1668 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 320 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 779 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 390 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 346 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 750 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. Definition at line 277 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 1770 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 1532 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 200 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 1720 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 1743 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 1641 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 1889 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 1858 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 1568 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 1547 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 179 of file macro.c.

References compareMacroName.

Referenced by addMacro, delMacro, and freeArgs.

## Variable Documentation

int _debug = 0`[static]`

| Definition at line 6 of file macro.c.

int max_macro_depth = 16

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

int print_expand_trace = 0

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

int print_macro_trace = 0

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

MacroContext rpmCLIMacroContext = &rpmCLIMacroContext_s

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

struct MacroContext_s rpmCLIMacroContext_s`[static]`

| Definition at line 64 of file macro.c.

MacroContext rpmGlobalMacroContext = &rpmGlobalMacroContext_s

| Definition at line 61 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 59 of file macro.c.