filename = alloca(strlen(prefix) + 40);
if (mode & O_WRONLY)
- return 0;
+ return 1;
strcpy(filename, prefix);
strcat(filename, "/var/lib/rpm/packages.rpm");
db.pkgs = faOpen(filename, mode, 0644);
if (!db.pkgs) {
error(RPMERR_DBOPEN, "failed to open %s\n", filename);
- return 0;
+ return 1;
}
strcpy(filename, prefix);
db.nameIndex = openDBIndex(filename, mode, 0644);
if (!db.nameIndex) {
faClose(db.pkgs);
- return 0;
+ return 1;
}
strcpy(filename, prefix);
if (!db.fileIndex) {
faClose(db.pkgs);
closeDBIndex(db.nameIndex);
- return 0;
+ return 1;
}
strcpy(filename, prefix);
if (!db.groupIndex) {
faClose(db.pkgs);
closeDBIndex(db.nameIndex);
- return 0;
+ return 1;
}
*rpmdbp = malloc(sizeof(struct rpmdb));
**rpmdbp = db;
- return 1;
+ return 0;
}
int rpmdbCreate (rpmdb db, int mode, int perms);
message(MESS_DEBUG, "package has no files\n");
}
- if (!faFree(db->pkgs, offset)) {
- printf("faFree failed!\n");
- }
+ faFree(db->pkgs, offset);
return 0;
}
}
dboffset = faAlloc(db->pkgs, sizeofHeader(dbentry));
+ if (!dboffset) {
+ error(RPMERR_DBCORRUPT, "cannot allocate space for database");
+ return 1;
+ }
lseek(db->pkgs->fd, dboffset, SEEK_SET);
writeHeader(db->pkgs->fd, dbentry);