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

Go to the source code of this file.

## Data Structures

struct | EVRop_s

## Macros

#define | _MIRE_INTERNAL
#define | _RPMEVR_INTERNAL
#define | MAX(x, y) ( ((x)>(y))?(x):(y) )

## Functions

EVR_t | rpmEVRnew (rpmuint32_t Flags, int initialize)
| Create a new EVR container. More...
EVR_t | rpmEVRfree (EVR_t evr)
| Destroy an EVR container. More...
static int | xisrpmalpha (int c)
| Return rpm's analogue of xisalpha. More...
int | rpmEVRcmp (const char *a, const char *b)
| Segmented string compare. More...
static miRE | rpmEVRmire (void)
int | rpmEVRparse (const char *evrstr, EVR_t evr)
| Split EVR string into epoch, version, and release components. More...
static int | compare_values (const char *a, const char *b)
| Dressed rpmEVRcmp, handling missing values. More...
static const char * | rpmEVRorder (void)
| Return precedence permutation string. More...
int | rpmEVRcompare (const EVR_t a, const EVR_t b)
| Compare EVR containers for equality. More...
int | rpmEVRoverlap (EVR_t a, EVR_t b)
| Compare EVR containers for overlap. More...
rpmsenseFlags | rpmEVRflags (const char *op, const char **end)
| Return comparison operator sense flags. More...
int | rpmVersionCompare (Header A, Header B)
| Compare headers to determine which header is "newer". More...

## Variables

int | _rpmevr_debug = 0
static int | _invert_digits_alphas_comparison = 1
static const char * | _rpmnotalpha = ".:-"
static const char * | _evr_tuple_match
const char * | evr_tuple_match = NULL
miRE | evr_tuple_mire = NULL
static const char * | evr_tuple_order = NULL
int(* | rpmvercmp )(const char *a, const char *b) = rpmEVRcmp
| Segmented string compare vector. More...
static struct EVRop_s | cops []

## Macro Definition Documentation

#define _MIRE_INTERNAL

Definition at line 8 of file rpmevr.c.

#define _RPMEVR_INTERNAL

Definition at line 12 of file rpmevr.c.

#define MAX | ( |  | x,
|  |  | y
| ) |  | ( ((x)>(y))?(x):(y) )

Definition at line 21 of file rpmevr.c.

Referenced by rpmEVRcmp().

## Function Documentation

static int compare_values | ( | const char * | a,
|  | const char * | b
| ) |  |

static

Dressed rpmEVRcmp, handling missing values.

Parameters

  a | 1st string
  b | 2nd string

Returns
  +1 if a is "newer", 0 if equal, -1 if b is "newer"

Definition at line 234 of file rpmevr.c.

References rpmvercmp.

Referenced by rpmEVRcompare().

rpmsenseFlags rpmEVRflags | ( | const char * | op,
|  | const char ** | end
| ) |  |

Return comparison operator sense flags.

Parameters

  op | operator string (NULL or "" uses RPMSENSE_EQUAL)
  *end | pointer to 1st character after operator (or NULL)

Returns
  sense flags

Definition at line 357 of file rpmevr.c.

References cops, EVRop_s::operator, RPMSENSE_EQUAL, and EVRop_s::sense.

Referenced by parseRCPOT(), rpmdsPipe(), and rpmdsSysinfoFile().

EVR_t rpmEVRfree | ( | EVR_t | evr | ) |

Destroy an EVR container.

Parameters

  EVR | container

Returns
  NULL always

Definition at line 39 of file rpmevr.c.

References _free().

Referenced by labelCompare(), nwlookupTag(), and wnlookupTag().

static miRE rpmEVRmire | ( | void |  | ) |

static

Definition at line 149 of file rpmevr.c.

References _evr_tuple_match, evr_tuple_match, evr_tuple_mire, mireNew(), mireRegcomp(), mireSetCOptions(), rpmExpand(), RPMMIRE_REGEX, and xstrdup().

Referenced by rpmEVRparse().

static const char* rpmEVRorder | ( | void |  | ) |

static

Return precedence permutation string.

Returns
  precedence permutation

Definition at line 248 of file rpmevr.c.

References evr_tuple_order, rpmExpand(), and xstrdup().

Referenced by rpmEVRcompare(), and rpmVersionCompare().

int rpmVersionCompare | ( | Header | A,
|  | Header | B
| ) |  |

Compare headers to determine which header is "newer".

Deprecated:
  Use rpmdsCompare instead.

Todo:
  Eliminate in rpm-5.1.

Parameters

  A | 1st header
  B | 2nd header

Returns
  result of comparison

Definition at line 376 of file rpmevr.c.

References _free(), alloca(), headerGet(), _HE_s::p, rpmDataType_u::ptr, rpmEVRorder(), RPMTAG_DISTEPOCH, RPMTAG_EPOCH, RPMTAG_RELEASE, RPMTAG_VERSION, rpmvercmp, rpmDataType_u::str, _HE_s::tag, and rpmDataType_u::ui32p.

Referenced by hdr_compare(), and rpmcliInstall().

static int xisrpmalpha | ( | int | c | ) |

inlinestatic

Return rpm's analogue of xisalpha.

Parameters

  c | character to test

Returns
  is this an alpha character?

Definition at line 66 of file rpmevr.c.

References _rpmnotalpha, xisalpha(), and xispunct().

Referenced by rpmEVRcmp().

## Variable Documentation

const char* _evr_tuple_match

static

Initial value:
=
"^(?:([^:-]+):)?([^:-]+)(?:-([^:-]+))?(?::([^:-]+))?$"

Definition at line 142 of file rpmevr.c.

Referenced by rpmEVRmire().

int _invert_digits_alphas_comparison = 1

static

Definition at line 54 of file rpmevr.c.

Referenced by rpmEVRcmp().

int _rpmevr_debug = 0

Definition at line 18 of file rpmevr.c.

const char* _rpmnotalpha = ".:-"

static

Definition at line 59 of file rpmevr.c.

Referenced by xisrpmalpha().

struct EVRop_s cops[]

static

Initial value:
= {
{ "<=", RPMSENSE_LESS ^ RPMSENSE_EQUAL},
{ "=<", RPMSENSE_LESS ^ RPMSENSE_EQUAL},
{ "==", RPMSENSE_EQUAL},
{ "!=", (RPMSENSE_EQUAL ^ 0x0e ) },
{ ">=", RPMSENSE_GREATER ^ RPMSENSE_EQUAL},
{ "=>", RPMSENSE_GREATER ^ RPMSENSE_EQUAL},
{ "<", RPMSENSE_LESS},
{ "=", RPMSENSE_EQUAL},
{ ">", RPMSENSE_GREATER},
{ NULL, 0 },
}

Referenced by rpmEVRflags().

const char* evr_tuple_match = NULL

Definition at line 145 of file rpmevr.c.

Referenced by rpmcliFini(), and rpmEVRmire().

miRE evr_tuple_mire = NULL

Definition at line 147 of file rpmevr.c.

Referenced by rpmcliFini(), and rpmEVRmire().

const char* evr_tuple_order = NULL

static

Definition at line 241 of file rpmevr.c.