# Macro API.

## Functions
void | rpmDumpMacroTable (rpmMacroContext mc, FILE *fp)
| Print macros to file stream.
int | expandMacros (void *spec, rpmMacroContext mc, char *sbuf, size_t slen)
| Expand macro into buffer.
void | addMacro (rpmMacroContext mc, const char *n, const char *o, const char *b, int level)
| Add macro to context.
void | delMacro (rpmMacroContext mc, const char *n)
| Delete macro from context.
int | rpmDefineMacro (rpmMacroContext mc, const char *macro, int level)
| Define macro in context.
void | rpmLoadMacros (rpmMacroContext mc, int level)
| Load macros from specific context into global context.
int | rpmLoadMacroFile (rpmMacroContext mc, const char *fn)
| Load macro context from a macro file.
void | rpmInitMacros (rpmMacroContext mc, const char *macrofiles)
| Initialize macro context from set of macrofile(s).
void | rpmFreeMacros (rpmMacroContext mc)
| Destroy macro context.
char * | rpmExpand (const char *arg,...) RPM_GNUC_NULL_TERMINATED
| Return (malloc'ed) concatenated macro expansion(s).
int | rpmExpandNumeric (const char *arg)
| Return macro expansion as a numeric value.
const char * | rpmConfigDir (void)
| Return rpm configuration base directory.

## Function Documentation

void addMacro | ( | rpmMacroContext | 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)

Referenced by buildForTarget().

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

Delete macro from context.

Parameters:

  | mc | macro context (NULL uses global context).
  | n | macro name

int expandMacros | ( | void * | spec,
|  | rpmMacroContext | 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

const char* rpmConfigDir | ( | void |  | ) |

Return rpm configuration base directory.

If RPM_CONFIGDIR environment variable is set, it's value will be used. Otherwise the configuration directory is the one set at build time, typically /usr/lib/rpm. The value of rpmConfigDir() is determined on first call to this function and is guaranteed to remain the same on subsequent calls.

Returns:
  rpm configuration directory name

Referenced by main().

int rpmDefineMacro | ( | rpmMacroContext | 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:
  0 on success (always)

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

Print macros to file stream.

Parameters:

  | mc | macro context (NULL uses global context).
  | fp | file stream (NULL uses stderr).

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)

Referenced by getTarSpec().

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

Referenced by build(), and main().

void rpmFreeMacros | ( | rpmMacroContext | mc | ) |

Destroy macro context.

Parameters:

  | mc | macro context (NULL uses global context).

Referenced by build(), and main().

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

Initialize macro context from set of macrofile(s).

Parameters:

  | mc | macro context
  | macrofiles | colon separated list of macro files (NULL does nothing)

int rpmLoadMacroFile | ( | rpmMacroContext | mc,
|  | const char * | fn |
| ) |  |  |

Load macro context from a macro file.

Parameters:

  | mc | (unused)
  | fn | macro file name

void rpmLoadMacros | ( | rpmMacroContext | 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)