mire.c File Reference
`#include "system.h"`
`#include <rpmiotypes.h>`
`#include <rpmio.h>`
`#include <rpmlog.h>`
`#include <mire.h>`
`#include "debug.h"`
Include dependency graph for mire.c:

Go to the source code of this file.

## Macros

#define | _MIRE_INTERNAL

## Functions

int | mireClean (miRE mire)
| Deallocate pattern match memory. More...
static void | mireFini (void *_mire)
miRE | mireGetPool (rpmioPool pool)
| Allocate a miRE container from the pool. More...
void * | mireFreeAll (miRE mire, int nmire)
| Destroy compiled patterns. More...
miRE | mireNew (rpmMireMode mode, int tag)
| Create pattern container. More...
int | mireSetCOptions (miRE mire, rpmMireMode mode, int tag, int options, const unsigned char *table)
| Initialize pattern compile options. More...
int | mireSetEOptions (miRE mire, int *offsets, int noffsets)
| Initialize pattern execute options (PCRE only). More...
int | mireSetGOptions (const char *newline, int caseless, int multiline, int utf8)
| Initialize pattern global options (PCRE only). More...
int | mireSetLocale (miRE mire, const char *locale)
| Compile locale-specific PCRE tables. More...
int | mireRegcomp (miRE mire, const char *pattern)
| Compile pattern match. More...
int | mireRegexec (miRE mire, const char *val, size_t vallen)
| Execute pattern match. More...
int | mireAppend (rpmMireMode mode, int tag, const char *pattern, const unsigned char *table, miRE *mirep, int *nmirep)
| Append pattern to array. More...
int | mireLoadPatterns (rpmMireMode mode, int tag, const char **patterns, const unsigned char *table, miRE *mirep, int *nmirep)
| Load patterns from string array. More...
int | mireApply (miRE mire, int nmire, const char *s, size_t slen, int rc)
| Apply array of patterns to a string. More...
int | mireStudy (miRE mire, int nmires)
| Study PCRE patterns (if any). More...

## Variables

int | _mire_debug = 0
const unsigned char * | _mirePCREtables = NULL
mireEL_t | _mireEL = EL_LF
int | _mireSTRINGoptions = 0
| STRING default: 0. More...
int | _mireGLOBoptions = FNM_EXTMATCH | FNM_PATHNAME | FNM_PERIOD
| GLOB default: FNM_PATHNAME | FNM_PERIOD. More...
int | _mireREGEXoptions = REG_EXTENDED | REG_NEWLINE
| REGEX default: REG_EXTENDED. More...
int | _mirePCREoptions = 0
| PCRE default: 0. More...
rpmioPool | _mirePool

## Macro Definition Documentation

#define _MIRE_INTERNAL

Definition at line 10 of file mire.c.

## Function Documentation

int mireAppend | ( | rpmMireMode | mode,
|  | int | tag,
|  | const char * | pattern,
|  | const unsigned char * | table,
|  | miRE * | mirep,
|  | int * | nmirep
| ) |  |

Append pattern to array.

Parameters

  mode | type of pattern match
  tag | identifier (like an rpmTag)
  pattern | pattern to compile
  table | (PCRE) locale table to use (NULL uses default table)

Return values

  *mirep | pattern array
  *nmirep | no. of patterns in array

Definition at line 479 of file mire.c.

References mireGetPool(), mireRegcomp(), mireSetCOptions(), and xrealloc().

Referenced by mireLoadPatterns(), rpmdbTriggerGlobs(), rpmfcExpandRegexps(), rpmPlatform(), and strsubFormat().

int mireApply | ( | miRE | mire,
|  | int | nmire,
|  | const char * | s,
|  | size_t | slen,
|  | int | rc
| ) |  |

Apply array of patterns to a string.

Parameters

  mire | compiled pattern array
  nmire | no. of patterns in array
  s | string to apply against
  slen | length of string (0 will use strlen(s))
  rc | -1 == excluding, +1 == including, 0 == single pattern

Returns
  termination condition

Definition at line 533 of file mire.c.

References mireRegexec().

Referenced by repoGetFileList().

int mireClean | ( | miRE | mire | ) |

Deallocate pattern match memory.

Parameters

  mire | pattern container

Returns
  0 on success

Definition at line 38 of file mire.c.

References _free(), _mire_debug, RPMMIRE_PCRE, and RPMMIRE_REGEX.

Referenced by handleOneTrigger(), mireFini(), mireFreeAll(), and mireRegcomp().

static void mireFini | ( | void * | _mire | ) |

static

Definition at line 70 of file mire.c.

References mireClean().

Referenced by mireGetPool().

void* mireFreeAll | ( | miRE | mire,
|  | int | nmire
| ) |  |

Destroy compiled patterns.

Parameters

  mire | pattern array
  nre | no of patterns in array

Returns
  NULL always

Definition at line 93 of file mire.c.

References _free(), mireClean(), rpmioFreePoolItem(), and xrealloc().

Referenced by main(), rpmdsFini(), rpmfcFreeRegexps(), rpmfiFini(), rpmFreeRpmrc(), rpmmiFini(), rpmPlatform(), runTriggers(), and strsubFormat().

miRE mireGetPool | ( | rpmioPool | pool | ) |

Allocate a miRE container from the pool.

Parameters

  pool | mire pool

Returns
  miRE container

Definition at line 80 of file mire.c.

References _mire_debug, _mirePool, mireFini(), rpmioGetPool(), and rpmioNewPool().

Referenced by mireAppend(), mireNew(), and rpmmiAddPattern().

int mireLoadPatterns | ( | rpmMireMode | mode,
|  | int | tag,
|  | const char ** | patterns,
|  | const unsigned char * | table,
|  | miRE * | mirep,
|  | int * | nmirep
| ) |  |

Load patterns from string array.

Parameters

  mode | type of pattern match
  tag | identifier (like an rpmTag)
  patterns | patterns to compile
  table | (PCRE) locale table to use (NULL uses default table)

Return values

  *mirep | pattern array
  *nmirep | no. of patterns in array

Returns
  0 on success

Definition at line 511 of file mire.c.

References mireAppend().

Referenced by main().

miRE mireNew | ( | rpmMireMode | mode,
|  | int | tag
| ) |  |

Create pattern container.

Parameters

  mode | type of pattern match
  tag | identifier (e.g. an rpmTag)

Returns
  new pattern container (NULL on error)

Definition at line 111 of file mire.c.

References mireGetPool(), and mireLink().

Referenced by handleOneTrigger(), rpmcliInstallElementPath(), rpmdbMireApply(), rpmEVRmire(), rpmmiAddPattern(), and tagValidate().

int mireRegcomp | ( | miRE | mire,
|  | const char * | pattern
| ) |  |

Compile pattern match.

Parameters

  mire | pattern container
  val | pattern to compile

Returns
  0 on success

Definition at line 332 of file mire.c.

References _, _mire_debug, _mireGLOBoptions, _mireREGEXoptions, mireClean(), rpmlog(), RPMLOG_ERR, RPMMIRE_DEFAULT, RPMMIRE_GLOB, RPMMIRE_PCRE, RPMMIRE_REGEX, RPMMIRE_STRCMP, xcalloc(), and xstrdup().

Referenced by handleOneTrigger(), mireAppend(), rpmcliInstallElementPath(), rpmdbMireApply(), rpmEVRmire(), rpmmiAddPattern(), and tagValidate().

int mireRegexec | ( | miRE | mire,
|  | const char * | val,
|  | size_t | vallen
| ) |  |

Execute pattern match.

Parameters

  mire | pattern container
  val | value to match
  vallen | length of value string (0 will use strlen)

Returns
  >=0 if pattern matches, -1 on nomatch, else error

Definition at line 396 of file mire.c.

References _, _mire_debug, alloca(), FNM_NOMATCH, fnmatch(), rpmlog(), RPMLOG_ERR, RPMMIRE_DEFAULT, RPMMIRE_GLOB, RPMMIRE_PCRE, RPMMIRE_REGEX, and RPMMIRE_STRCMP.

Referenced by handleOneTrigger(), mireApply(), mireSkip(), rpmcliWalkFirst(), rpmdbMireApply(), rpmEVRparse(), rpmfcApply(), rpmfcMatchRegexps(), rpmGetMacroEntries(), rpmPlatformScore(), runTriggersLoop(), strsubFormat(), and tagValidate().

int mireSetCOptions | ( | miRE | mire,
|  | rpmMireMode | mode,
|  | int | tag,
|  | int | options,
|  | const unsigned char * | table
| ) |  |

Initialize pattern compile options.

Parameters

  mire | pattern container
  mode | type of pattern match
  tag | identifier (e.g. an rpmTag)
  options | pattern options (0 uses default options)
  table | (PCRE only) locale tables

Returns
  0 on success

Definition at line 119 of file mire.c.

References _mireGLOBoptions, _mirePCREoptions, _mireREGEXoptions, RPMMIRE_DEFAULT, RPMMIRE_GLOB, RPMMIRE_PCRE, RPMMIRE_REGEX, and RPMMIRE_STRCMP.

Referenced by mireAppend(), rpmEVRmire(), and tagValidate().

int mireSetEOptions | ( | miRE | mire,
|  | int * | offsets,
|  | int | noffsets
| ) |  |

Initialize pattern execute options (PCRE only).

Parameters

  mire | pattern container
  *offsets | (PCRE only) string offset(s)
  noffsets | (PCRE only) no. of string offsets

Returns
  0 on success

Definition at line 154 of file mire.c.

References RPMMIRE_PCRE, and RPMMIRE_REGEX.

Referenced by rpmEVRparse(), and strsubFormat().

int mireSetGOptions | ( | const char * | newline,
|  | int | caseless,
|  | int | multiline,
|  | int | utf8
| ) |  |

Initialize pattern global options (PCRE only).

Parameters

  newline | newline ending identifier
  caseless | should case be ignored?
  multline | are multiline matches permitted?
  utf8 | assume utf8 matching?

Returns
  0 on success

Definition at line 178 of file mire.c.

References _mireEL, _mireGLOBoptions, _mirePCREoptions, _mireREGEXoptions, EL_ANY, EL_ANYCRLF, EL_CR, EL_CRLF, EL_LF, and FNM_CASEFOLD.

int mireSetLocale | ( | miRE | mire,
|  | const char * | locale
| ) |  |

Compile locale-specific PCRE tables.

Parameters

  mire | pattern container
  locale | locale string (NULL uses usual envvar's)

Returns
  0 on success

Definition at line 276 of file mire.c.

References _, __progname, _mirePCREtables, getenv(), setlocale, and xstrdup().

int mireStudy | ( | miRE | mire,
|  | int | nmires
| ) |  |

Study PCRE patterns (if any).

Parameters

  mire | pattern container
  nmires | no. of patterns in container

Returns
  0 on success

Definition at line 556 of file mire.c.

References _, __progname, rpmlog(), RPMLOG_ERR, and RPMMIRE_PCRE.

## Variable Documentation

int _mire_debug = 0

Definition at line 18 of file mire.c.

Referenced by mireClean(), mireGetPool(), mireRegcomp(), and mireRegexec().

mireEL_t _mireEL = EL_LF

Definition at line 24 of file mire.c.

Referenced by mireSetGOptions().

int _mireGLOBoptions = FNM_EXTMATCH | FNM_PATHNAME | FNM_PERIOD

GLOB default: FNM_PATHNAME | FNM_PERIOD.

Definition at line 30 of file mire.c.

Referenced by mireRegcomp(), mireSetCOptions(), and mireSetGOptions().

int _mirePCREoptions = 0

PCRE default: 0.

Definition at line 36 of file mire.c.

Referenced by mireSetCOptions(), and mireSetGOptions().

const unsigned char* _mirePCREtables = NULL

Definition at line 21 of file mire.c.

Referenced by mireSetLocale().

rpmioPool _mirePool

Definition at line 78 of file mire.c.

Referenced by mireGetPool(), rpmioClean(), and rpmmiAddPattern().

int _mireREGEXoptions = REG_EXTENDED | REG_NEWLINE

REGEX default: REG_EXTENDED.

Definition at line 33 of file mire.c.

Referenced by mireRegcomp(), mireSetCOptions(), and mireSetGOptions().

int _mireSTRINGoptions = 0

STRING default: 0.

Definition at line 27 of file mire.c.