From abb42944a48ffd9ed05155dce7ddf8010f1192d3 Mon Sep 17 00:00:00 2001 From: ewt Date: Wed, 10 Jul 1996 02:33:26 +0000 Subject: [PATCH] supports different database locations CVS patchset: 757 CVS date: 1996/07/10 02:33:26 --- lib/rpmdb.c | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/lib/rpmdb.c b/lib/rpmdb.c index cee1ef0..b8c6bc2 100644 --- a/lib/rpmdb.c +++ b/lib/rpmdb.c @@ -56,14 +56,34 @@ static int doopen (char * prefix, rpmdb *rpmdbp, int mode, int perms, int justcheck) { char * filename; struct rpmdb db; + char * dbpath; + int i; + + dbpath = getVar(RPMVAR_DBPATH); + if (!dbpath) + dbpath = "/var/lib/rpm/"; + else { + i = strlen(dbpath); + if (dbpath[i - 1] != '/') { + filename = alloca(i); + strcpy(filename, dbpath); + filename[i] = '/'; + filename[i + 1] = '\0'; + dbpath = filename; + } + } - filename = alloca(strlen(prefix) + 40); + filename = alloca(strlen(prefix) + strlen(dbpath) + 40); if (mode & O_WRONLY) return 1; strcpy(filename, prefix); - strcat(filename, "/var/lib/rpm/packages.rpm"); + strcat(filename, dbpath); + + message(MESS_DEBUG, "opening database in %s\n", filename); + + strcat(filename, "packages.rpm"); memset(&db, 0, sizeof(db)); @@ -91,7 +111,8 @@ static int doopen (char * prefix, rpmdb *rpmdbp, int mode, int perms, } strcpy(filename, prefix); - strcat(filename, "/var/lib/rpm/nameindex.rpm"); + strcat(filename, dbpath); + strcat(filename, "nameindex.rpm"); if (!justcheck || !exists(filename)) { db.nameIndex = openDBIndex(filename, mode, 0644); @@ -102,7 +123,8 @@ static int doopen (char * prefix, rpmdb *rpmdbp, int mode, int perms, } strcpy(filename, prefix); - strcat(filename, "/var/lib/rpm/fileindex.rpm"); + strcat(filename, dbpath); + strcat(filename, "fileindex.rpm"); if (!justcheck || !exists(filename)) { db.fileIndex = openDBIndex(filename, mode, 0644); @@ -114,7 +136,8 @@ static int doopen (char * prefix, rpmdb *rpmdbp, int mode, int perms, } strcpy(filename, prefix); - strcat(filename, "/var/lib/rpm/groupindex.rpm"); + strcat(filename, dbpath); + strcat(filename, "groupindex.rpm"); if (!justcheck || !exists(filename)) { db.groupIndex = openDBIndex(filename, mode, 0644); @@ -127,7 +150,8 @@ static int doopen (char * prefix, rpmdb *rpmdbp, int mode, int perms, } strcpy(filename, prefix); - strcat(filename, "/var/lib/rpm/providesindex.rpm"); + strcat(filename, dbpath); + strcat(filename, "providesindex.rpm"); if (!justcheck || !exists(filename)) { db.providesIndex = openDBIndex(filename, mode, 0644); @@ -141,7 +165,8 @@ static int doopen (char * prefix, rpmdb *rpmdbp, int mode, int perms, } strcpy(filename, prefix); - strcat(filename, "/var/lib/rpm/requiredby.rpm"); + strcat(filename, dbpath); + strcat(filename, "requiredby.rpm"); if (!justcheck || !exists(filename)) { db.requiredbyIndex = openDBIndex(filename, mode, 0644); -- 2.7.4