# rpmio/rpmmacro.h File Reference

Go to the source code of this file.

## Data Structures

struct | MacroEntry_s
struct | MacroContext_s

## Defines

#define | RMIL_DEFAULT -15
| Markers for sources of macros added throughout rpm.
#define | RMIL_MACROFILES -13
#define | RMIL_RPMRC -11
#define | RMIL_CMDLINE -7
#define | RMIL_TARBALL -5
#define | RMIL_SPEC -3
#define | RMIL_OLDSPEC -1
#define | RMIL_GLOBAL 0

## Typedefs

typedef struct MacroEntry_s * | MacroEntry
typedef struct MacroContext_s * | MacroContext
typedef enum rpmCompressedMagic_e | rpmCompressedMagic

## Enumerations

enum | rpmCompressedMagic_e { COMPRESSED_NOT = 0, COMPRESSED_OTHER = 1, COMPRESSED_BZIP2 = 2, COMPRESSED_ZIP = 3 }

## Functions

void | rpmDumpMacroTable (MacroContext mc, FILE *fp)
| Print macros to file stream.
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.
void | rpmInitMacros (MacroContext mc, const char *macrofiles)
| Initialize global 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 * | 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.
int | rpmExpandNumeric (const char *arg)
| Return macro expansion as a numeric value.

## Variables

MacroContext | rpmGlobalMacroContext
MacroContext | rpmCLIMacroContext
const char * | macrofiles
| List of macro files to read when configuring rpm.

## Detailed Description

Definition in file rpmmacro.h.

## Define Documentation

#define RMIL_CMDLINE -7

Definition at line 50 of file rpmmacro.h.

#define RMIL_DEFAULT -15

Markers for sources of macros added throughout rpm.

Definition at line 46 of file rpmmacro.h.

#define RMIL_GLOBAL 0

Definition at line 54 of file rpmmacro.h.

#define RMIL_MACROFILES -13

Definition at line 47 of file rpmmacro.h.

#define RMIL_OLDSPEC -1

Definition at line 53 of file rpmmacro.h.

#define RMIL_RPMRC -11

Definition at line 48 of file rpmmacro.h.

#define RMIL_SPEC -3

Definition at line 52 of file rpmmacro.h.

#define RMIL_TARBALL -5

Definition at line 51 of file rpmmacro.h.

## Typedef Documentation

typedef struct MacroContext_s * MacroContext

The structure used to store the set of macros in a context.

typedef struct MacroEntry_s * MacroEntry

The structure used to store a macro.

typedef enum rpmCompressedMagic_e rpmCompressedMagic

## Enumeration Type Documentation

enum rpmCompressedMagic_e

Enumerator:

  COMPRESSED_NOT | not compressed
  COMPRESSED_OTHER | gzip can handle
  COMPRESSED_BZIP2 | bzip2 can handle
  COMPRESSED_ZIP | unzip can handle

Definition at line 151 of file rpmmacro.h.

## Function Documentation

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.

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.

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.

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.

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.

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

Define macro in context.

Parameters:

  | mc | macro context (NULL uses global context).
  | n | macro name, options, body
  | level | macro recursion level (0 is entry API)

Returns:

Todo:
  Document.

Definition at line 1532 of file macro.c.

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.

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.

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.

void rpmFreeMacros | ( | MacroContext | mc | ) |

Destroy macro context.

Parameters:

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

Definition at line 1641 of file macro.c.

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.

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.

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.

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.

## Variable Documentation

MacroContext rpmCLIMacroContext

Definition at line 66 of file macro.c.

MacroContext rpmGlobalMacroContext

Definition at line 61 of file macro.c.