From b206aaee881abd6e256428f2146212cfc1c69be2 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Wed, 13 Feb 2008 22:42:34 -0600 Subject: Ensure DESC infolevel is loaded before checking pkg->filename This is the first step of fixing FS#9547. This should not break any existing code that may rely on this function behaving the way it did, and should be good for inclusion in a maint release. In addition, update pactest so it fills the FILENAME field in the DB entries it creates so we can move forward with a real fix to this issue. Signed-off-by: Dan McGee --- lib/libalpm/be_files.c | 4 ---- lib/libalpm/package.c | 7 ++++--- pactest/pmdb.py | 1 + 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/lib/libalpm/be_files.c b/lib/libalpm/be_files.c index 724e3c8f..4cd0985e 100644 --- a/lib/libalpm/be_files.c +++ b/lib/libalpm/be_files.c @@ -297,10 +297,6 @@ int _alpm_db_read(pmdb_t *db, pmpkg_t *info, pmdbinfrq_t inforeq) } _alpm_strtrim(line); if(!strcmp(line, "%FILENAME%")) { - /* filename is _new_ - it provides the real name of the package, on the - * server, to allow for us to not tie the name of the actual file to the - * data of the package - */ if(fgets(info->filename, sizeof(info->filename), fp) == NULL) { goto error; } diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c index 937ee3e0..363cf313 100644 --- a/lib/libalpm/package.c +++ b/lib/libalpm/package.c @@ -162,11 +162,12 @@ const char SYMEXPORT *alpm_pkg_get_filename(pmpkg_t *pkg) ASSERT(handle != NULL, return(NULL)); ASSERT(pkg != NULL, return(NULL)); + if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_DESC)) { + _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DESC); + } + if(!strlen(pkg->filename)) { /* construct the file name, it's not in the desc file */ - if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_DESC)) { - _alpm_db_read(pkg->origin_data.db, pkg, INFRQ_DESC); - } if(pkg->arch && strlen(pkg->arch) > 0) { snprintf(pkg->filename, PKG_FILENAME_LEN, "%s-%s-%s" PKGEXT, pkg->name, pkg->version, pkg->arch); diff --git a/pactest/pmdb.py b/pactest/pmdb.py index af392000..e0f328ef 100755 --- a/pactest/pmdb.py +++ b/pactest/pmdb.py @@ -261,6 +261,7 @@ class pmdb: if pkg.reason: data.append(_mksection("REASON", pkg.reason)) else: + data.append(_mksection("FILENAME", pkg.filename())) if pkg.replaces: data.append(_mksection("REPLACES", pkg.replaces)) if pkg.force: -- cgit v1.2.3-24-g4f1b