strcpy(filename, prefix);
strcat(filename, "/var/lib/rpm/nameindex.rpm");
- db.nameIndex = openDBIndex("/var/lib/rpm/nameindex.rpm",
- mode, 0644);
+ db.nameIndex = openDBIndex(filename, mode, 0644);
if (!db.nameIndex) {
faClose(db.pkgs);
error(RPMERR_DBOPEN, "failed to open %s\n", filename);
strcpy(filename, prefix);
strcat(filename, "/var/lib/rpm/fileindex.rpm");
- db.fileIndex = openDBIndex("/var/lib/rpm/fileindex.rpm",
- mode, 0644);
+ db.fileIndex = openDBIndex(filename, mode, 0644);
if (!db.fileIndex) {
faClose(db.pkgs);
closeDBIndex(db.nameIndex);
strcpy(filename, prefix);
strcat(filename, "/var/lib/rpm/groupindex.rpm");
- db.groupIndex = openDBIndex("/var/lib/rpm/groupindex.rpm",
- mode, 0644);
+ db.groupIndex = openDBIndex(filename, mode, 0644);
if (!db.groupIndex) {
faClose(db.pkgs);
closeDBIndex(db.nameIndex);
handleSharedFiles(db, offset, fileList, fileMd5List, fileCount, fileActions);
for (i = 0; i < fileCount; i++) {
- if (prefix[0]) {
+ if (strcmp(prefix, "/")) {
if ((strlen(fileList[i]) + prefixLength + 1) > fnbuffersize) {
fnbuffersize = (strlen(fileList[i]) + prefixLength) * 2;
fnbuffer = alloca(fnbuffersize);
}
- strcpy(fnbuffer, "");
+ strcpy(fnbuffer, prefix);
strcat(fnbuffer, "/");
- strcpy(fnbuffer, fileList[i]);
+ strcat(fnbuffer, fileList[i]);
} else {
fnbuffer = fileList[i];
}
if (strcmp(prefix, "/")) {
message(MESS_DEBUG, "performing chroot(%s)\n", prefix);
chroot(prefix);
+ chdir("/");
}
if (isdebug)