rpm  5.2.1
Data Structures | Macros | Functions | Variables
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,
 
)    ( ((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
a1st string
b2nd 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
opoperator string (NULL or "" uses RPMSENSE_EQUAL)
*endpointer 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
EVRcontainer
Returns
NULL always

Definition at line 39 of file rpmevr.c.

References _free().

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

static miRE rpmEVRmire ( void  )
static
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
A1st header
B2nd 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
ccharacter 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_EQUAL},
{ "!=", (RPMSENSE_EQUAL ^ 0x0e ) },
{ "<", RPMSENSE_LESS},
{ "=", RPMSENSE_EQUAL},
{ 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.