summaryrefslogtreecommitdiff
path: root/lib/rpmdb.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rpmdb.c')
-rw-r--r--lib/rpmdb.c89
1 files changed, 49 insertions, 40 deletions
diff --git a/lib/rpmdb.c b/lib/rpmdb.c
index 7acc3a6c0..c5fb6edc5 100644
--- a/lib/rpmdb.c
+++ b/lib/rpmdb.c
@@ -630,8 +630,8 @@ static void blockSignals(rpmdb rpmdb, /*@out@*/ sigset_t * oldMask)
/* XXX HACK (disabled) permit ^C aborts for now ... */
if (!(rpmdb && rpmdb->db_api == 4)) {
- sigfillset(&newMask); /* block all signals */
- sigprocmask(SIG_BLOCK, &newMask, oldMask);
+ (void) sigfillset(&newMask); /* block all signals */
+ (void) sigprocmask(SIG_BLOCK, &newMask, oldMask);
}
}
@@ -642,7 +642,7 @@ static void unblockSignals(rpmdb rpmdb, sigset_t * oldMask)
{
/* XXX HACK (disabled) permit ^C aborts for now ... */
if (!(rpmdb && rpmdb->db_api == 4)) {
- sigprocmask(SIG_SETMASK, oldMask, NULL);
+ (void) sigprocmask(SIG_SETMASK, oldMask, NULL);
}
}
@@ -685,7 +685,7 @@ int rpmdbClose (rpmdb rpmdb)
if (rpmdb->_dbi[dbix] == NULL)
continue;
/*@-unqualifiedtrans@*/
- dbiClose(rpmdb->_dbi[dbix], 0);
+ (void) dbiClose(rpmdb->_dbi[dbix], 0);
rpmdb->_dbi[dbix] = NULL;
/*@=unqualifiedtrans@*/
}
@@ -735,7 +735,7 @@ static /*@only@*/ rpmdb newRpmdb(/*@kept@*/ const char * root,
rpmdb->db_home = rpmGetPath( (home && *home ? home : _DB_HOME), NULL);
if (!(rpmdb->db_home && rpmdb->db_home[0] != '%')) {
rpmError(RPMERR_DBOPEN, _("no dbpath has been set\n"));
- rpmdbClose(rpmdb);
+ (void) rpmdbClose(rpmdb);
/*@-globstate@*/ return NULL; /*@=globstate@*/
}
rpmdb->db_errpfx = rpmExpand( (epfx && *epfx ? epfx : _DB_ERRPFX), NULL);
@@ -844,7 +844,7 @@ static int openDatabase(const char * prefix, const char * dbpath, int _dbapi,
exit:
if (rc || justCheck || dbp == NULL)
- rpmdbClose(rpmdb);
+ (void) rpmdbClose(rpmdb);
else
*dbp = rpmdb;
@@ -867,8 +867,8 @@ int rpmdbInit (const char * prefix, int perms)
rc = openDatabase(prefix, NULL, _dbapi, &rpmdb, (O_CREAT | O_RDWR),
perms, RPMDB_FLAG_JUSTCHECK);
if (rpmdb) {
- rpmdbOpenAll(rpmdb);
- rpmdbClose(rpmdb);
+ (void) rpmdbOpenAll(rpmdb);
+ (void) rpmdbClose(rpmdb);
rpmdb = NULL;
}
return rc;
@@ -946,9 +946,9 @@ static int rpmdbFindByFile(rpmdb rpmdb, const char * filespec,
continue;
}
- hge(h, RPMTAG_BASENAMES, &bnt, (void **) &baseNames, NULL);
- hge(h, RPMTAG_DIRNAMES, &dnt, (void **) &dirNames, NULL);
- hge(h, RPMTAG_DIRINDEXES, NULL, (void **) &dirIndexes, NULL);
+ (void) hge(h, RPMTAG_BASENAMES, &bnt, (void **) &baseNames, NULL);
+ (void) hge(h, RPMTAG_DIRNAMES, &dnt, (void **) &dirNames, NULL);
+ (void) hge(h, RPMTAG_DIRINDEXES, NULL, (void **) &dirIndexes, NULL);
do {
fingerPrint fp2;
@@ -958,7 +958,7 @@ static int rpmdbFindByFile(rpmdb rpmdb, const char * filespec,
if (FP_EQUAL(fp1, fp2)) {
rec->hdrNum = dbiIndexRecordOffset(allMatches, i);
rec->tagNum = dbiIndexRecordFileNumber(allMatches, i);
- dbiAppendSet(*matches, rec, 1, sizeof(*rec), 0);
+ (void) dbiAppendSet(*matches, rec, 1, sizeof(*rec), 0);
}
prevoff = offset;
@@ -1071,7 +1071,7 @@ static int dbiFindMatches(dbiIndex dbi, DBC * dbcursor,
goto exit;
}
- headerNVR(h, NULL, &pkgVersion, &pkgRelease);
+ (void) headerNVR(h, NULL, &pkgVersion, &pkgRelease);
goodRelease = goodVersion = 1;
@@ -1200,8 +1200,8 @@ struct _rpmdbMatchIterator {
unsigned int mi_filenum;
unsigned int mi_fpnum;
unsigned int mi_dbnum;
-/*@only@*/ const char *mi_version;
-/*@only@*/ const char *mi_release;
+/*@only@*/ const char * mi_version;
+/*@only@*/ const char * mi_release;
};
rpmdbMatchIterator rpmdbFreeIterator(rpmdbMatchIterator mi)
@@ -1217,7 +1217,7 @@ rpmdbMatchIterator rpmdbFreeIterator(rpmdbMatchIterator mi)
if (mi->mi_modified && mi->mi_prevoffset) {
DBC * dbcursor = NULL;
xx = dbiCopen(dbi, &dbcursor, 0);
- dbiUpdateRecord(dbi, dbcursor, mi->mi_prevoffset, mi->mi_h);
+ (void) dbiUpdateRecord(dbi, dbcursor, mi->mi_prevoffset, mi->mi_h);
xx = dbiCclose(dbi, dbcursor, 0);
dbcursor = NULL;
}
@@ -1328,6 +1328,13 @@ top:
keylen = mi->mi_keylen;
rc = dbiGet(dbi, mi->mi_dbc, &keyp, &keylen, &uh, &uhlen, 0);
+if (dbi->dbi_api == 1 && dbi->dbi_rpmtag == RPMDBI_PACKAGES && rc == EFAULT) {
+ rpmError(RPMERR_INTERNAL,
+ _("record number %u in database is bad -- skipping.\n"), dbi->dbi_lastoffset);
+ if (keyp && dbi->dbi_lastoffset)
+ memcpy(&mi->mi_offset, keyp, sizeof(mi->mi_offset));
+ continue;
+}
/*
* If we got the next key, save the header instance number.
@@ -1359,23 +1366,25 @@ top:
/* Free current header */
if (mi->mi_h) {
if (mi->mi_modified && mi->mi_prevoffset)
- dbiUpdateRecord(dbi, mi->mi_dbc, mi->mi_prevoffset, mi->mi_h);
+ (void) dbiUpdateRecord(dbi, mi->mi_dbc, mi->mi_prevoffset, mi->mi_h);
headerFree(mi->mi_h);
mi->mi_h = NULL;
}
mi->mi_h = headerCopyLoad(uh);
+ /* XXX db1 with hybrid, simulated db interface on falloc.c needs free. */
+ if (dbi->dbi_api <= 1) free(uh);
if (mi->mi_release) {
const char *release;
- headerNVR(mi->mi_h, NULL, NULL, &release);
+ (void) headerNVR(mi->mi_h, NULL, NULL, &release);
if (strcmp(mi->mi_release, release))
goto top;
}
if (mi->mi_version) {
const char *version;
- headerNVR(mi->mi_h, NULL, &version, NULL);
+ (void) headerNVR(mi->mi_h, NULL, &version, NULL);
if (strcmp(mi->mi_version, version))
goto top;
}
@@ -1456,7 +1465,7 @@ int rpmdbPruneIterator(rpmdbMatchIterator mi, int * hdrNums,
return 1;
if (mi->mi_set)
- dbiPruneSet(mi->mi_set, hdrNums, nHdrNums, sizeof(*hdrNums), sorted);
+ (void) dbiPruneSet(mi->mi_set, hdrNums, nHdrNums, sizeof(*hdrNums), sorted);
return 0;
}
@@ -1467,7 +1476,7 @@ int rpmdbAppendIterator(rpmdbMatchIterator mi, const int * hdrNums, int nHdrNums
if (mi->mi_set == NULL)
mi->mi_set = xcalloc(1, sizeof(*mi->mi_set));
- dbiAppendSet(mi->mi_set, hdrNums, nHdrNums, sizeof(*hdrNums), 0);
+ (void) dbiAppendSet(mi->mi_set, hdrNums, nHdrNums, sizeof(*hdrNums), 0);
return 0;
}
@@ -1622,11 +1631,11 @@ int rpmdbRemove(rpmdb rpmdb, int rid, unsigned int hdrNum)
/* Add remove transaction id to header. */
if (rid > 0) {
int_32 tid = rid;
- headerAddEntry(h, RPMTAG_REMOVETID, RPM_INT32_TYPE, &tid, 1);
+ (void) headerAddEntry(h, RPMTAG_REMOVETID, RPM_INT32_TYPE, &tid, 1);
}
{ const char *n, *v, *r;
- headerNVR(h, &n, &v, &r);
+ (void) headerNVR(h, &n, &v, &r);
rpmMessage(RPMMESS_DEBUG, " --- %10u %s-%s-%s\n", hdrNum, n, v, r);
}
@@ -1783,7 +1792,7 @@ static INLINE int addIndexEntry(dbiIndex dbi, DBC * dbcursor,
rc = 0;
set = xcalloc(1, sizeof(*set));
}
- dbiAppendSet(set, rec, 1, sizeof(*rec), 0);
+ (void) dbiAppendSet(set, rec, 1, sizeof(*rec), 0);
if (dbiUpdateIndex(dbi, dbcursor, keyp, keylen, set))
rc = 1;
}
@@ -1813,8 +1822,8 @@ int rpmdbAdd(rpmdb rpmdb, int iid, Header h)
if (iid > 0) {
int_32 tid = iid;
- headerRemoveEntry(h, RPMTAG_REMOVETID);
- headerAddEntry(h, RPMTAG_INSTALLTID, RPM_INT32_TYPE, &tid, 1);
+ (void) headerRemoveEntry(h, RPMTAG_REMOVETID);
+ (void) headerAddEntry(h, RPMTAG_INSTALLTID, RPM_INT32_TYPE, &tid, 1);
}
/*
@@ -1823,7 +1832,7 @@ int rpmdbAdd(rpmdb rpmdb, int iid, Header h)
* being written to the package header database.
*/
- hge(h, RPMTAG_BASENAMES, &bnt, (void **) &baseNames, &count);
+ (void) hge(h, RPMTAG_BASENAMES, &bnt, (void **) &baseNames, &count);
if (_noDirTokens)
expandFilelist(h);
@@ -1912,7 +1921,7 @@ int rpmdbAdd(rpmdb rpmdb, int iid, Header h)
if (!dbi->dbi_no_dbsync)
xx = dbiSync(dbi, 0);
{ const char *n, *v, *r;
- headerNVR(h, &n, &v, &r);
+ (void) headerNVR(h, &n, &v, &r);
rpmMessage(RPMMESS_DEBUG, " +++ %10u %s-%s-%s\n", hdrNum, n, v, r);
}
continue;
@@ -1924,11 +1933,11 @@ int rpmdbAdd(rpmdb rpmdb, int iid, Header h)
rpmcnt = count;
break;
case RPMTAG_REQUIRENAME:
- hge(h, rpmtag, &rpmtype, (void **)&rpmvals, &rpmcnt);
- hge(h, RPMTAG_REQUIREFLAGS, NULL, (void **)&requireFlags, NULL);
+ (void) hge(h, rpmtag, &rpmtype, (void **)&rpmvals, &rpmcnt);
+ (void) hge(h, RPMTAG_REQUIREFLAGS, NULL, (void **)&requireFlags, NULL);
break;
default:
- hge(h, rpmtag, &rpmtype, (void **)&rpmvals, &rpmcnt);
+ (void) hge(h, rpmtag, &rpmtype, (void **)&rpmvals, &rpmcnt);
break;
}
@@ -2066,7 +2075,7 @@ int rpmdbFindFpList(rpmdb rpmdb, fingerPrint * fpList, dbiIndexSet * matchList,
/* Gather all matches from the database */
for (i = 0; i < numItems; i++) {
- rpmdbGrowIterator(mi, fpList[i].baseName, 0, i);
+ (void) rpmdbGrowIterator(mi, fpList[i].baseName, 0, i);
matchList[i] = xcalloc(1, sizeof(*(matchList[i])));
}
@@ -2104,9 +2113,9 @@ int rpmdbFindFpList(rpmdb rpmdb, fingerPrint * fpList, dbiIndexSet * matchList,
num = end - start;
/* Compute fingerprints for this header's matches */
- hge(h, RPMTAG_BASENAMES, &bnt, (void **) &fullBaseNames, NULL);
- hge(h, RPMTAG_DIRNAMES, &dnt, (void **) &dirNames, NULL);
- hge(h, RPMTAG_DIRINDEXES, NULL, (void **) &fullDirIndexes, NULL);
+ (void) hge(h, RPMTAG_BASENAMES, &bnt, (void **) &fullBaseNames, NULL);
+ (void) hge(h, RPMTAG_DIRNAMES, &dnt, (void **) &dirNames, NULL);
+ (void) hge(h, RPMTAG_DIRINDEXES, NULL, (void **) &fullDirIndexes, NULL);
baseNames = xcalloc(num, sizeof(*baseNames));
dirIndexes = xcalloc(num, sizeof(*dirIndexes));
@@ -2122,7 +2131,7 @@ int rpmdbFindFpList(rpmdb rpmdb, fingerPrint * fpList, dbiIndexSet * matchList,
for (i = 0; i < num; i++, im++) {
if (FP_EQUAL(fps[i], fpList[im->fpNum]))
/*@-usedef@*/
- dbiAppendSet(matchList[im->fpNum], im, 1, sizeof(*im), 0);
+ (void) dbiAppendSet(matchList[im->fpNum], im, 1, sizeof(*im), 0);
/*@=usedef@*/
}
@@ -2442,7 +2451,7 @@ int rpmdbRebuild(const char * rootdir)
const char * name, * version, * release;
int skip = 0;
- headerNVR(h, &name, &version, &release);
+ (void) headerNVR(h, &name, &version, &release);
/*@-shadow@*/
{ rpmdbMatchIterator mi;
@@ -2485,14 +2494,14 @@ int rpmdbRebuild(const char * rootdir)
olddb->db_remove_env = 1;
newdb->db_remove_env = 1;
}
- rpmdbClose(olddb);
- rpmdbClose(newdb);
+ (void) rpmdbClose(olddb);
+ (void) rpmdbClose(newdb);
if (failed) {
rpmMessage(RPMMESS_NORMAL, _("failed to rebuild database: original database "
"remains in place\n"));
- rpmdbRemoveDatabase(rootdir, newdbpath, _dbapi_rebuild);
+ (void) rpmdbRemoveDatabase(rootdir, newdbpath, _dbapi_rebuild);
rc = 1;
goto exit;
} else if (!nocleanup) {