CVS patchset: 2553
CVS date: 1998/11/23 19:06:28
This commit is contained in:
jbj 1998-11-23 19:06:28 +00:00
parent eb0436b4b2
commit fa463ea4ab
1 changed files with 16 additions and 15 deletions

View File

@ -29,7 +29,8 @@ struct rpmdb_s {
static void removeIndexEntry(dbiIndex * dbi, char * name, dbiIndexRecord rec,
int tolerant, char * idxName);
static int addIndexEntry(dbiIndex * idx, char * index, dbiIndexRecord rec);
static int addIndexEntry(dbiIndex * idx, char * index, unsigned int offset,
unsigned int fileNumber);
static void blockSignals(void);
static void unblockSignals(void);
@ -402,17 +403,21 @@ int rpmdbRemove(rpmdb db, unsigned int offset, int tolerant) {
return 0;
}
static int addIndexEntry(dbiIndex * idx, char * index, dbiIndexRecord rec) {
static int addIndexEntry(dbiIndex * idx, char * index, unsigned int offset,
unsigned int fileNumber) {
dbiIndexSet set;
dbiIndexRecord irec;
int rc;
irec = dbiReturnIndexRecordInstance(offset, fileNumber);
rc = dbiSearchIndex(idx, index, &set);
if (rc == -1) /* error */
return 1;
if (rc == 1) /* new item */
set = dbiCreateIndexRecord();
dbiAppendIndexRecord(&set, rec);
dbiAppendIndexRecord(&set, irec);
if (dbiUpdateIndex(idx, index, &set))
exit(1);
dbiFreeIndexRecord(set);
@ -420,7 +425,6 @@ static int addIndexEntry(dbiIndex * idx, char * index, dbiIndexRecord rec) {
}
int rpmdbAdd(rpmdb db, Header dbentry) {
dbiIndexRecord rec;
unsigned int dboffset;
unsigned int i, j;
char ** fileList;
@ -469,13 +473,9 @@ int rpmdbAdd(rpmdb db, Header dbentry) {
headerWrite(faFileno(db->pkgs), dbentry, HEADER_MAGIC_NO);
/* Now update the appropriate indexes */
/* structure assignment */
rec = dbiReturnIndexRecordInstance(dboffset, 0);
if (addIndexEntry(db->nameIndex, name, rec))
if (addIndexEntry(db->nameIndex, name, dboffset, 0))
rc = 1;
if (addIndexEntry(db->groupIndex, group, rec))
if (addIndexEntry(db->groupIndex, group, dboffset, 0))
rc = 1;
for (i = 0; i < triggerCount; i++) {
@ -483,20 +483,21 @@ int rpmdbAdd(rpmdb db, Header dbentry) {
for (j = 0; j < i; j++)
if (!strcmp(triggerList[i], triggerList[j])) break;
if (j == i)
rc += addIndexEntry(db->triggerIndex, triggerList[i], rec);
rc += addIndexEntry(db->triggerIndex, triggerList[i], dboffset, 0);
}
for (i = 0; i < conflictCount; i++)
rc += addIndexEntry(db->conflictsIndex, conflictList[i], rec);
rc += addIndexEntry(db->conflictsIndex, conflictList[i], dboffset, 0);
for (i = 0; i < requiredbyCount; i++)
rc += addIndexEntry(db->requiredbyIndex, requiredbyList[i], rec);
rc += addIndexEntry(db->requiredbyIndex, requiredbyList[i],
dboffset, 0);
for (i = 0; i < providesCount; i++)
rc += addIndexEntry(db->providesIndex, providesList[i], rec);
rc += addIndexEntry(db->providesIndex, providesList[i], dboffset, 0);
for (i = 0; i < count; i++)
rc += addIndexEntry(db->fileIndex, fileList[i], rec);
rc += addIndexEntry(db->fileIndex, fileList[i], dboffset, i);
dbiSyncIndex(db->nameIndex);
dbiSyncIndex(db->groupIndex);