add versions to provides.

CVS patchset: 3196
CVS date: 1999/07/22 17:48:31
This commit is contained in:
jbj 1999-07-22 17:48:31 +00:00
parent 1cbea413b4
commit 0f7a33ebf8
10 changed files with 273 additions and 159 deletions

View File

@ -11,6 +11,7 @@
- permit multiline macro expansions with comments and %if.
- add pl translation and man pages (PLD team - from Tomasz Kloczko).
- fix: incomplete cleanup if --rebuilddb fails (#4115).
- add versions to provides.
3.0.1 -> 3.0.2
- eliminate armv4 entries from rpmrc (Andrew E. Mileski).

View File

@ -476,7 +476,7 @@ static int handlePreambleTag(Spec spec, Package pkg, int tag, char *macro,
}
break;
case RPMTAG_OBSOLETES:
case RPMTAG_PROVIDES:
case RPMTAG_PROVIDEFLAGS:
case RPMTAG_BUILDREQUIRES:
case RPMTAG_BUILDCONFLICTS:
case RPMTAG_BUILDPREREQ:
@ -554,7 +554,7 @@ static struct PreambleRec {
/* {RPMTAG_EXCLUDE, 0, 0, "exclude"}, */
/* {RPMTAG_EXCLUSIVE, 0, 0, "exclusive"}, */
{RPMTAG_ICON, 0, 0, "icon"},
{RPMTAG_PROVIDES, 0, 0, "provides"},
{RPMTAG_PROVIDEFLAGS, 0, 0, "provides"},
{RPMTAG_REQUIREFLAGS, 0, 0, "requires"},
{RPMTAG_PREREQ, 0, 0, "prereq"},
{RPMTAG_CONFLICTFLAGS, 0, 0, "conflicts"},

View File

@ -42,7 +42,7 @@ int parseRCPOT(Spec spec, Package pkg, const char *field, int tag, int index)
int tagflags, flags;
switch (tag) {
case RPMTAG_PROVIDES:
case RPMTAG_PROVIDEFLAGS:
tagflags = RPMSENSE_PROVIDES;
h = pkg->header;
break;
@ -148,7 +148,6 @@ int parseRCPOT(Spec spec, Package pkg, const char *field, int tag, int index)
}
switch(tag) {
case RPMTAG_PROVIDES:
case RPMTAG_OBSOLETES:
case RPMTAG_BUILDPREREQ:
case RPMTAG_PREREQ:

View File

@ -19,7 +19,9 @@ int addReqProv(Spec spec, Header h,
int extra = 0;
if (flag & RPMSENSE_PROVIDES) {
nametag = RPMTAG_PROVIDES;
nametag = RPMTAG_PROVIDENAME;
versiontag = RPMTAG_PROVIDEVERSION;
flagtag = RPMTAG_PROVIDEFLAGS;
} else if (flag & RPMSENSE_OBSOLETES) {
nametag = RPMTAG_OBSOLETES;
} else if (flag & RPMSENSE_CONFLICTS) {

View File

@ -5,6 +5,15 @@
#include "depends.h"
#include "misc.h"
static int headerNVR(Header h, const char **np, const char **vp, const char **rp)
{
int type, count;
headerGetEntry(h, RPMTAG_NAME, &type, (void **) np, &count);
headerGetEntry(h, RPMTAG_VERSION, &type, (void **) vp, &count);
headerGetEntry(h, RPMTAG_RELEASE, &type, (void **) rp, &count);
return 0;
}
struct orderListIndex {
int alIndex;
int orIndex;
@ -74,13 +83,12 @@ static struct availablePackage * alAddPackage(struct availableList * al,
p = al->list + al->size++;
p->h = headerLink(h);
headerGetEntry(p->h, RPMTAG_NAME, NULL, (void **) &p->name, NULL);
headerGetEntry(p->h, RPMTAG_VERSION, NULL, (void **) &p->version, NULL);
headerGetEntry(p->h, RPMTAG_RELEASE, NULL, (void **) &p->release, NULL);
headerNVR(p->h, &p->name, &p->version, &p->release);
p->hasEpoch = headerGetEntry(h, RPMTAG_EPOCH, NULL, (void **) &p->epoch,
NULL);
if (!headerGetEntry(h, RPMTAG_PROVIDES, NULL, (void **) &p->provides,
if (!headerGetEntry(h, RPMTAG_PROVIDENAME, NULL, (void **) &p->provides,
&p->providesCount)) {
p->providesCount = 0;
p->provides = NULL;
@ -173,27 +181,6 @@ static void alMakeIndex(struct availableList * al)
}
}
static struct availablePackage * alSatisfiesDepend(struct availableList * al,
char * reqName, char * reqVersion,
int reqFlags)
{
struct availableIndexEntry needle, * match;
if (!al->index.size) return NULL;
needle.entry = reqName;
match = bsearch(&needle, al->index.index, al->index.size,
sizeof(*al->index.index), indexcmp);
if (!match) return NULL;
if (match->type != IET_NAME) return match->package;
if (headerMatchesDepFlags(match->package->h, reqVersion, reqFlags))
return match->package;
return NULL;
}
static int intcmp(const void * a, const void *b)
{
const int * aptr = a;
@ -381,8 +368,186 @@ void rpmdepFreeConflicts(struct rpmDependencyConflict * conflicts, int
free(conflicts);
}
static int dbrecMatchesDepFlags(rpmTransactionSet rpmdep, int recOffset,
char * reqVersion, int reqFlags)
static void parseEVR(char *evr, const char **ep, const char **vp, const char **rp)
{
const char *epoch = NULL;
const char *version = evr; /* assume only version is present */
const char *release = NULL;
char *s, *se;
s = evr;
while (*s && isdigit(*s)) s++; /* s points to epoch terminator */
se = strrchr(s, '-'); /* se points to version terminator */
if (*s == ':' || se) {
if (*s == ':') {
epoch = evr;
*s++ = '\0';
version = s;
if (*epoch == '\0') epoch = "0";
} else {
epoch = NULL;
version = evr;
}
if (se) {
*se++ = '\0';
release = se;
}
}
if (ep) *ep = epoch;
if (vp) *vp = version;
if (rp) *rp = release;
}
typedef int (*dbrecMatch_t) (Header h, const char *reqName, const char * reqInfo, int reqFlags);
static int rangeMatchesDepFlags (Header h, const char *reqName, const char * reqInfo, int reqFlags)
{
char ** provides;
char ** providesVersion;
int * providesFlags;
int providesCount;
const char * proEpoch = NULL;
const char * proVersion = NULL;
const char * proRelease = NULL;
char *Pevr;
const char * reqEpoch = NULL;
const char * reqVersion = NULL;
const char * reqRelease = NULL;
char *Revr;
int result;
int sense;
int type;
int i;
if (!(reqFlags & RPMSENSE_SENSEMASK) || !reqInfo || !strlen(reqInfo))
return 1;
/* Get provides information from header */
/*
* Rpm prior to 3.0.3 does not have versioned provides.
* If no provides version info is available, match any requires.
*/
if (!headerGetEntry(h, RPMTAG_PROVIDEVERSION, &type,
(void **) &providesVersion, &providesCount))
return 1;
headerGetEntry(h, RPMTAG_PROVIDEFLAGS, &type,
(void **) &providesFlags, &providesCount);
if (!headerGetEntry(h, RPMTAG_PROVIDENAME, &type,
(void **) &provides, &providesCount)) {
if (providesVersion) xfree(providesVersion);
return 0; /* XXX should never happen */
}
/* Parse requires version into components */
Revr = strdup(reqInfo);
parseEVR(Revr, &reqEpoch, &reqVersion, &reqRelease);
result = 0;
for (i = 0; i < providesCount; i++) {
if (strcmp(reqName, provides[i]))
continue;
/* Parse provides version into components */
Pevr = strdup(providesVersion[i]);
parseEVR(Pevr, &proEpoch, &proVersion, &proRelease);
/* Compare {provides,requires} [epoch:]version[-release] range */
sense = ((proEpoch != NULL && reqEpoch != NULL)
? rpmvercmp(proEpoch, reqEpoch) : 0);
if (sense == 0) {
sense = rpmvercmp(proVersion, reqVersion);
if (sense == 0 && proRelease && *proRelease &&
reqRelease && *reqRelease) {
sense = rpmvercmp(proRelease, reqRelease);
}
}
free(Pevr); Pevr = NULL;
if ((reqFlags & RPMSENSE_LESS) && sense < 0) {
result = 1;
} else if ((reqFlags & RPMSENSE_EQUAL) && sense == 0) {
result = (providesFlags[i] & RPMSENSE_EQUAL) ? 1 : 0;
} else if ((reqFlags & RPMSENSE_GREATER) && sense > 0) {
result = 1;
}
/* If this provide matches the require, we're done */
if (result)
break;
}
if (provides) xfree(provides);
if (providesVersion) xfree(providesVersion);
if (Revr) free(Revr);
return result;
}
int headerMatchesDepFlags(Header h, const char *reqName, const char * reqInfo, int reqFlags)
{
const char * epoch, * version, * release;
const char * reqEpoch = NULL;
const char * reqVersion = NULL;
const char * reqRelease = NULL;
char *Revr;
int type, count;
int_32 * epochval;
char buf[20];
int result;
int sense;
if (!(reqFlags & RPMSENSE_SENSEMASK) || !reqInfo || !strlen(reqInfo))
return 1;
/* Get package information from header */
headerGetEntry(h, RPMTAG_EPOCH, &type, (void **) &epochval, &count);
if (epochval == NULL) {
#if defined(RPMSENSE_SERIAL)
/* XXX old behavior looks fishy */
if (reqFlags & RPMSENSE_SERIAL)
return 0;
#endif /* RPMSENSE_SERIAL */
epoch = "0"; /* assume package is epoch 0 */
} else {
sprintf(buf, "%d", *epochval);
epoch = buf;
}
headerGetEntry(h, RPMTAG_VERSION, &type, (void **)&version, &count);
headerGetEntry(h, RPMTAG_RELEASE, &type, (void **)&release, &count);
/* Parse requires version into components */
Revr = strdup(reqInfo);
parseEVR(Revr, &reqEpoch, &reqVersion, &reqRelease);
/* Compare {package,requires} [epoch:]version[-release] */
sense = ((reqEpoch != NULL) ? rpmvercmp(epoch, reqEpoch) : 0);
if (sense == 0) {
sense = rpmvercmp(version, reqVersion);
if (sense == 0 && reqRelease && *reqRelease) {
sense = rpmvercmp(release, reqRelease);
}
}
if (Revr) free(Revr);
result = 0;
if ((reqFlags & RPMSENSE_LESS) && sense < 0) {
result = 1;
} else if ((reqFlags & RPMSENSE_EQUAL) && sense == 0) {
result = 1;
} else if ((reqFlags & RPMSENSE_GREATER) && sense > 0) {
result = 1;
}
return result;
}
static inline int dbrecMatchesDepFlags(rpmTransactionSet rpmdep, int recOffset,
const char * reqName, const char * reqVersion,
int reqFlags, dbrecMatch_t matchDepFlags)
{
Header h;
int rc;
@ -393,17 +558,37 @@ static int dbrecMatchesDepFlags(rpmTransactionSet rpmdep, int recOffset,
return 0;
}
rc = headerMatchesDepFlags(h, reqVersion, reqFlags);
rc = matchDepFlags(h, reqName, reqVersion, reqFlags);
headerFree(h);
return rc;
}
static struct availablePackage * alSatisfiesDepend(struct availableList * al,
const char * reqName, const char * reqVersion, int reqFlags)
{
struct availableIndexEntry needle, * match;
if (!al->index.size) return NULL;
needle.entry = reqName;
match = bsearch(&needle, al->index.index, al->index.size,
sizeof(*al->index.index), indexcmp);
if (!match) return NULL;
if (match->type != IET_NAME) return match->package;
if (headerMatchesDepFlags(match->package->h, reqName, reqVersion, reqFlags))
return match->package;
return NULL;
}
/* 2 == error */
/* 1 == dependency not satisfied */
static int unsatisfiedDepend(rpmTransactionSet rpmdep, char * reqName,
char * reqVersion, int reqFlags,
static int unsatisfiedDepend(rpmTransactionSet rpmdep, const char * reqName,
const char * reqVersion, int reqFlags,
struct availablePackage ** suggestion)
{
dbiIndexSet matches;
@ -448,8 +633,7 @@ static int unsatisfiedDepend(rpmTransactionSet rpmdep, char * reqName,
}
}
if (!reqFlags && !rpmdbFindByProvides(rpmdep->db, reqName,
&matches)) {
if (!rpmdbFindByProvides(rpmdep->db, reqName, &matches)) {
for (i = 0; i < dbiIndexSetCount(matches); i++) {
unsigned int recOffset = dbiIndexRecordOffset(matches, i);
if (bsearch(&recOffset,
@ -457,7 +641,10 @@ static int unsatisfiedDepend(rpmTransactionSet rpmdep, char * reqName,
rpmdep->numRemovedPackages,
sizeof(int), intcmp))
continue;
break;
if (dbrecMatchesDepFlags(rpmdep, recOffset,
reqName, reqVersion, reqFlags, rangeMatchesDepFlags)) {
break;
}
}
dbiFreeIndexRecord(matches);
@ -473,8 +660,8 @@ static int unsatisfiedDepend(rpmTransactionSet rpmdep, char * reqName,
sizeof(int), intcmp))
continue;
if (dbrecMatchesDepFlags(rpmdep, recOffset,
reqVersion, reqFlags)) {
if (dbrecMatchesDepFlags(rpmdep, recOffset,
reqName, reqVersion, reqFlags, headerMatchesDepFlags)) {
break;
}
}
@ -494,11 +681,11 @@ static int unsatisfiedDepend(rpmTransactionSet rpmdep, char * reqName,
static int checkPackageDeps(rpmTransactionSet rpmdep, struct problemsSet * psp,
Header h, const char * requirement)
{
char ** requires, ** requiresVersion;
char * name, * version, * release;
char ** conflicts, ** conflictsVersion;
const char * name, * version, * release;
const char ** requires, ** requiresVersion;
const char ** conflicts, ** conflictsVersion;
int requiresCount = 0, conflictsCount;
int type, count;
int type;
int i, rc;
int ourrc = 0;
int * requireFlags, * conflictsFlags;
@ -532,11 +719,7 @@ static int checkPackageDeps(rpmTransactionSet rpmdep, struct problemsSet * psp,
rc = unsatisfiedDepend(rpmdep, requires[i], requiresVersion[i],
requireFlags[i], &suggestion);
if (rc == 1) {
headerGetEntry(h, RPMTAG_NAME, &type, (void **) &name, &count);
headerGetEntry(h, RPMTAG_VERSION, &type, (void **) &version,
&count);
headerGetEntry(h, RPMTAG_RELEASE, &type, (void **) &release,
&count);
headerNVR(h, &name, &version, &release);
rpmMessage(RPMMESS_DEBUG, _("package %s require not satisfied: %s\n"),
name, requires[i]);
@ -575,11 +758,7 @@ static int checkPackageDeps(rpmTransactionSet rpmdep, struct problemsSet * psp,
/* 1 == unsatisfied, 0 == satsisfied */
if (rc == 0) {
headerGetEntry(h, RPMTAG_NAME, &type, (void **) &name, &count);
headerGetEntry(h, RPMTAG_VERSION, &type, (void **) &version,
&count);
headerGetEntry(h, RPMTAG_RELEASE, &type, (void **) &release,
&count);
headerNVR(h, &name, &version, &release);
rpmMessage(RPMMESS_DEBUG, _("package %s conflicts: %s\n"),
name, conflicts[i]);
@ -620,7 +799,7 @@ static int checkPackageDeps(rpmTransactionSet rpmdep, struct problemsSet * psp,
}
static int checkPackageSet(rpmTransactionSet rpmdep, struct problemsSet * psp,
char * package, dbiIndexSet * matches)
const char * package, dbiIndexSet * matches)
{
int i;
Header h;
@ -651,7 +830,7 @@ static int checkPackageSet(rpmTransactionSet rpmdep, struct problemsSet * psp,
}
static int checkDependentPackages(rpmTransactionSet rpmdep,
struct problemsSet * psp, char * key)
struct problemsSet * psp, const char * key)
{
dbiIndexSet matches;
int rc;
@ -667,7 +846,7 @@ static int checkDependentPackages(rpmTransactionSet rpmdep,
}
static int checkDependentConflicts(rpmTransactionSet rpmdep,
struct problemsSet * psp, char * package)
struct problemsSet * psp, const char * package)
{
dbiIndexSet matches;
int rc;
@ -684,81 +863,6 @@ static int checkDependentConflicts(rpmTransactionSet rpmdep,
return rc;
}
int headerMatchesDepFlags(Header h, const char * reqInfo, int reqFlags)
{
const char * epoch, * version, * release;
const char * reqEpoch = NULL;
const char * reqVersion = reqInfo;
const char * reqRelease = NULL;
const char *s, *se;
int type, count;
int_32 * epochval;
char buf[20];
int result = 0;
int sense;
if (!(reqFlags & RPMSENSE_SENSEMASK) || !reqInfo || !strlen(reqInfo))
return 1;
/* Get package information from header */
headerGetEntry(h, RPMTAG_EPOCH, &type, (void **) &epochval, &count);
if (epochval == NULL) {
#if defined(RPMSENSE_SERIAL)
/* XXX old behavior looks fishy */
if (reqFlags & RPMSENSE_SERIAL)
return 0;
#endif /* RPMSENSE_SERIAL */
epoch = "0"; /* assume package is epoch 0 */
} else {
sprintf(buf, "%d", *epochval);
epoch = buf;
}
headerGetEntry(h, RPMTAG_VERSION, &type, (void **)&version, &count);
headerGetEntry(h, RPMTAG_RELEASE, &type, (void **)&release, &count);
/* Parse requires version into components */
s = reqInfo;
while (*s && isdigit(*s)) s++; /* s points to epoch terminator */
se = strrchr(s, '-'); /* se points to version terminator */
if (*s == ':' || se) {
char *rv = alloca(strlen(reqInfo) + 1);
strcpy(rv, reqInfo);
if (*s == ':') {
reqEpoch = rv;
rv[s - reqInfo] = '\0';
reqVersion = rv + (s - reqInfo) + 1;
if (*reqEpoch == '\0') reqEpoch = "0";
} else {
reqEpoch = epoch; /* XXX assume same epoch as package */
reqVersion = rv;
}
if (se) {
rv[se - reqInfo] = '\0';
reqRelease = rv + (se - reqInfo) + 1;
}
}
/* Compare {package,requires} [epoch:]version[-release] */
sense = ((reqEpoch != NULL) ? rpmvercmp(epoch, reqEpoch) : 0);
if (sense == 0) {
sense = rpmvercmp(version, reqVersion);
if (sense == 0 && reqRelease && *reqRelease) {
sense = rpmvercmp(release, reqRelease);
}
}
if ((reqFlags & RPMSENSE_LESS) && sense < 0) {
result = 1;
} else if ((reqFlags & RPMSENSE_EQUAL) && sense == 0) {
result = 1;
} else if ((reqFlags & RPMSENSE_GREATER) && sense > 0) {
result = 1;
}
return result;
}
/* selection status is one of:
-1: selected
@ -772,9 +876,9 @@ static int addOrderedPack(rpmTransactionSet rpmdep,
struct availablePackage * package,
int * ordering, int * orderNumPtr,
int * selected, int selectionClass,
int satisfyDepends, char ** errorStack)
int satisfyDepends, const char ** errorStack)
{
char ** requires, ** requiresVersion;
const char ** requires, ** requiresVersion;
int_32 * requireFlags;
int requiresCount;
int matchNum;
@ -782,7 +886,7 @@ static int addOrderedPack(rpmTransactionSet rpmdep,
int i, rc;
struct availablePackage * match;
char * errorString;
char ** stack;
const char ** stack;
*errorStack++ = package->name;
@ -877,7 +981,7 @@ int rpmdepOrder(rpmTransactionSet rpmdep)
int * selected;
int * ordering;
int orderingCount;
char ** errorStack;
const char ** errorStack;
struct transactionElement * newOrder;
int newOrderCount = 0;
struct orderListIndex * orderList, * needle, key;
@ -961,7 +1065,7 @@ int rpmdepCheck(rpmTransactionSet rpmdep,
{
struct availablePackage * p;
int i, j;
char ** provides, ** files;
const char ** provides, ** files;
int providesCount, fileCount;
int type;
char * name;
@ -994,7 +1098,8 @@ int rpmdepCheck(rpmTransactionSet rpmdep,
return 1;
}
if (headerGetEntry(p->h, RPMTAG_PROVIDES, &type, (void **) &provides,
/* XXX FIXME: provide with versions??? */
if (headerGetEntry(p->h, RPMTAG_PROVIDENAME, &type, (void **) &provides,
&providesCount)) {
for (j = 0; j < providesCount; j++) {
if (checkDependentConflicts(rpmdep, &ps, provides[j])) {
@ -1025,7 +1130,8 @@ int rpmdepCheck(rpmTransactionSet rpmdep,
return 1;
}
if (headerGetEntry(h, RPMTAG_PROVIDES, NULL, (void **) &provides,
/* XXX FIXME: provide with versions??? */
if (headerGetEntry(h, RPMTAG_PROVIDENAME, NULL, (void **) &provides,
&providesCount)) {
for (j = 0; j < providesCount; j++) {
if (checkDependentPackages(rpmdep, &ps, provides[j])) {

View File

@ -7,7 +7,7 @@ struct availablePackage {
Header h;
char ** provides;
char ** files;
char * name, * version, * release;
const char * name, * version, * release;
int epoch, hasEpoch, providesCount, filesCount;
const void * key;
rpmRelocation * relocs;
@ -18,7 +18,7 @@ enum indexEntryType { IET_NAME, IET_PROVIDES, IET_FILE };
struct availableIndexEntry {
struct availablePackage * package;
char * entry;
const char * entry;
enum indexEntryType type;
} ;
@ -65,7 +65,7 @@ struct problemsSet {
extern "C" {
#endif
int headerMatchesDepFlags(Header h, const char * reqInfo, int reqFlags);
int headerMatchesDepFlags(Header h, const char *reqName, const char * reqInfo, int reqFlags);
#ifdef __cplusplus
}

View File

@ -446,7 +446,7 @@ int rpmdbRemove(rpmdb db, unsigned int offset, int tolerant) {
removeIndexEntry(db->groupIndex, group, rec, tolerant, "group index");
}
if (headerGetEntry(h, RPMTAG_PROVIDES, &type, (void **) &providesList,
if (headerGetEntry(h, RPMTAG_PROVIDENAME, &type, (void **) &providesList,
&count)) {
for (i = 0; i < count; i++) {
rpmMessage(RPMMESS_DEBUG, _("removing provides index for %s\n"),
@ -573,7 +573,7 @@ int rpmdbAdd(rpmdb db, Header dbentry) {
count = 0;
headerGetEntry(dbentry, RPMTAG_FILENAMES, &type, (void **) &fileList,
&count);
headerGetEntry(dbentry, RPMTAG_PROVIDES, &type, (void **) &providesList,
headerGetEntry(dbentry, RPMTAG_PROVIDENAME, &type, (void **) &providesList,
&providesCount);
headerGetEntry(dbentry, RPMTAG_REQUIRENAME, &type,
(void **) &requiredbyList, &requiredbyCount);

View File

@ -79,7 +79,8 @@ extern const struct headerSprintfExtension rpmHeaderFormats[];
#define RPMTAG_SOURCERPM 1044
#define RPMTAG_FILEVERIFYFLAGS 1045
#define RPMTAG_ARCHIVESIZE 1046
#define RPMTAG_PROVIDES 1047
#define RPMTAG_PROVIDENAME 1047
#define RPMTAG_PROVIDES RPMTAG_PROVIDENAME /* backward comaptibility */
#define RPMTAG_REQUIREFLAGS 1048
#define RPMTAG_REQUIRENAME 1049
#define RPMTAG_REQUIREVERSION 1050
@ -135,6 +136,10 @@ extern const struct headerSprintfExtension rpmHeaderFormats[];
#define RPMTAG_BUILDREQUIRES 1109 /* internal */
#define RPMTAG_BUILDCONFLICTS 1110 /* internal */
#define RPMTAG_BUILDMACROS 1111
#define RPMTAG_PROVIDEFLAGS 1112
#define RPMTAG_PROVIDEVERSION 1113
#define RPMTAG_OBSOLETEFLAGS 1114
#define RPMTAG_OBSOLETEVERSION 1115
#define RPMTAG_EXTERNAL_TAG 1000000
@ -178,8 +183,8 @@ extern const struct headerSprintfExtension rpmHeaderFormats[];
#define RPMSENSE_CONFLICTS (1 << 5) /* only used internally by builds */
#define RPMSENSE_PREREQ (1 << 6)
#define RPMSENSE_OBSOLETES (1 << 7) /* only used internally by builds */
#define RPMSENSE_SENSEMASK 15 /* Mask to get senses, ie serial, */
/* less, greater, equal. */
#define RPMSENSE_SENSEMASK 15 /* Mask to get senses, ie serial, */
/* less, greater, equal. */
#define RPMSENSE_TRIGGERIN (1 << 16)
#define RPMSENSE_TRIGGERUN (1 << 17)
@ -244,7 +249,7 @@ extern const struct headerSprintfExtension rpmHeaderFormats[];
/* #define RPMVAR_HTTPPROXY 53 -- No longer used */
/* #define RPMVAR_HTTPPORT 54 -- No longer used */
#define RPMVAR_NUM 55 /* number of RPMVAR entries */
#define RPMVAR_NUM 55 /* number of RPMVAR entries */
#define xfree(_p) free((void *)_p)

View File

@ -418,8 +418,9 @@ static int handleOneTrigger(const char * root, rpmdb db, int sense, Header sourc
else
skip = 0;
if (!headerMatchesDepFlags(sourceH, triggerVersions[i] + skip,
triggerFlags[i])) continue;
if (!headerMatchesDepFlags(sourceH, triggerNames[i],
triggerVersions[i] + skip, triggerFlags[i]))
continue;
headerGetEntry(triggeredH, RPMTAG_TRIGGERINDEX, NULL,
(void **) &triggerIndices, NULL);

View File

@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 1999-07-20 16:49-0400\n"
"POT-Creation-Date: 1999-07-22 13:35-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -1831,12 +1831,12 @@ msgstr ""
msgid "line %d: Versioned file name not permitted: %s"
msgstr ""
#: ../build/parseReqs.c:156
#: ../build/parseReqs.c:155
#, c-format
msgid "line %d: Version not permitted: %s"
msgstr ""
#: ../build/parseReqs.c:176
#: ../build/parseReqs.c:175
#, c-format
msgid "line %d: Version required: %s"
msgstr ""
@ -1995,31 +1995,31 @@ msgstr ""
msgid "error removing record %s into %s"
msgstr ""
#: ../lib/depends.c:392
#: ../lib/depends.c:557
msgid "dbrecMatchesDepFlags() failed to read header"
msgstr ""
#: ../lib/depends.c:414
#: ../lib/depends.c:599
#, c-format
msgid "dependencies: looking for %s\n"
msgstr ""
#: ../lib/depends.c:541
#: ../lib/depends.c:724
#, c-format
msgid "package %s require not satisfied: %s\n"
msgstr ""
#: ../lib/depends.c:584
#: ../lib/depends.c:763
#, c-format
msgid "package %s conflicts: %s\n"
msgstr ""
#: ../lib/depends.c:637 ../lib/depends.c:1014
#: ../lib/depends.c:816 ../lib/depends.c:1119
#, c-format
msgid "cannot read header at %d for dependency check"
msgstr ""
#: ../lib/depends.c:804
#: ../lib/depends.c:908
#, c-format
msgid "loop in prerequisite chain: %s"
msgstr ""