fixed problems with --root
authorroot <devnull@localhost>
Mon, 8 Jan 1996 21:28:20 +0000 (21:28 +0000)
committerroot <devnull@localhost>
Mon, 8 Jan 1996 21:28:20 +0000 (21:28 +0000)
CVS patchset: 180
CVS date: 1996/01/08 21:28:20

lib/rpmdb.c
lib/uninstall.c

index d7da1d8..e6ed8ab 100644 (file)
@@ -42,8 +42,7 @@ int rpmdbOpen (char * prefix, rpmdb *rpmdbp, int mode, int perms) {
     
     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);
@@ -52,8 +51,7 @@ int rpmdbOpen (char * prefix, rpmdb *rpmdbp, int mode, int perms) {
     
     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);
@@ -63,8 +61,7 @@ int rpmdbOpen (char * prefix, rpmdb *rpmdbp, int mode, int perms) {
     
     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);
index 6bd471f..04dcba4 100644 (file)
@@ -223,14 +223,14 @@ int rpmRemovePackage(char * prefix, rpmdb db, unsigned int offset, int test) {
        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];
            }
@@ -288,6 +288,7 @@ int runScript(char * prefix, Header h, int tag) {
            if (strcmp(prefix, "/")) {
                message(MESS_DEBUG, "performing chroot(%s)\n", prefix);
                chroot(prefix);
+               chdir("/");
            }
 
            if (isdebug)