Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/lib/libalpm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libalpm')
-rw-r--r--lib/libalpm/alpm.c8
-rw-r--r--lib/libalpm/alpm_list.c2
-rw-r--r--lib/libalpm/cache.c4
-rw-r--r--lib/libalpm/db.h10
-rw-r--r--lib/libalpm/package.c24
-rw-r--r--lib/libalpm/sync.c4
6 files changed, 35 insertions, 17 deletions
diff --git a/lib/libalpm/alpm.c b/lib/libalpm/alpm.c
index fe7a369f..f01e0da5 100644
--- a/lib/libalpm/alpm.c
+++ b/lib/libalpm/alpm.c
@@ -303,7 +303,7 @@ int SYMEXPORT alpm_db_update(int force, pmdb_t *db)
/* remove the old dir */
_alpm_log(PM_LOG_DEBUG, _("flushing database %s/%s"), handle->dbpath, db->treename);
- for(lp = _alpm_db_get_pkgcache(db, INFRQ_NONE); lp; lp = lp->next) {
+ for(lp = _alpm_db_get_pkgcache(db, INFRQ_BASE); lp; lp = lp->next) {
if(_alpm_db_remove(db, lp->data) == -1) {
if(lp->data) {
_alpm_log(PM_LOG_ERROR, _("could not remove database entry %s/%s"), db->treename,
@@ -354,7 +354,7 @@ alpm_list_t SYMEXPORT *alpm_db_getpkgcache(pmdb_t *db)
ASSERT(handle != NULL, return(NULL));
ASSERT(db != NULL, return(NULL));
- return(_alpm_db_get_pkgcache(db, INFRQ_NONE));
+ return(_alpm_db_get_pkgcache(db, INFRQ_BASE));
}
/** Get the list of packages that a package provides
@@ -1085,7 +1085,7 @@ alpm_list_t *alpm_get_upgrades()
pmpkg_t *spkg = j->data;
for(k = spkg->replaces; k; k = k->next) {
alpm_list_t *m;
- for(m = _alpm_db_get_pkgcache(handle->db_local, INFRQ_NONE); m; m = m->next) {
+ for(m = _alpm_db_get_pkgcache(handle->db_local, INFRQ_BASE); m; m = m->next) {
pmpkg_t *lpkg = m->data;
if(strcmp(k->data, lpkg->name) == 0) {
_alpm_log(PM_LOG_DEBUG, _("checking replacement '%s' for package '%s'"), k->data, spkg->name);
@@ -1135,7 +1135,7 @@ alpm_list_t *alpm_get_upgrades()
}
/* now do normal upgrades */
- for(i = _alpm_db_get_pkgcache(handle->db_local, INFRQ_NONE); i; i = i->next) {
+ for(i = _alpm_db_get_pkgcache(handle->db_local, INFRQ_BASE); i; i = i->next) {
int replace=0;
pmpkg_t *local = i->data;
pmpkg_t *spkg = NULL;
diff --git a/lib/libalpm/alpm_list.c b/lib/libalpm/alpm_list.c
index 8c387eed..36517fd2 100644
--- a/lib/libalpm/alpm_list.c
+++ b/lib/libalpm/alpm_list.c
@@ -462,7 +462,7 @@ int alpm_list_find_str(alpm_list_t *haystack, const char *needle)
* @note Entries are not duplicated
* @param lhs the first list
* @param rhs the second list
- * @param fn the comparisson function
+ * @param fn the comparison function
* @return a list containing all items in lhs not present in rhs
*/
alpm_list_t *alpm_list_diff(alpm_list_t *lhs, alpm_list_t *rhs, alpm_list_fn_cmp fn)
diff --git a/lib/libalpm/cache.c b/lib/libalpm/cache.c
index 8e043096..74299061 100644
--- a/lib/libalpm/cache.c
+++ b/lib/libalpm/cache.c
@@ -123,7 +123,7 @@ int _alpm_db_ensure_pkgcache(pmdb_t *db, pmdbinfrq_t infolevel)
alpm_list_t *p;
for(p = db->pkgcache; p; p = p->next) {
pmpkg_t *pkg = (pmpkg_t *)p->data;
- if(infolevel != INFRQ_NONE && !(pkg->infolevel & infolevel)) {
+ if(infolevel != INFRQ_BASE && !(pkg->infolevel & infolevel)) {
if(_alpm_db_read(db, pkg, infolevel) == -1) {
/* TODO should we actually remove from the filesystem here as well? */
_alpm_db_remove_pkgfromcache(db, pkg);
@@ -195,7 +195,7 @@ pmpkg_t *_alpm_db_get_pkgfromcache(pmdb_t *db, const char *target)
return(NULL);
}
- alpm_list_t *pkgcache = _alpm_db_get_pkgcache(db, INFRQ_NONE);
+ alpm_list_t *pkgcache = _alpm_db_get_pkgcache(db, INFRQ_BASE);
if(!pkgcache) {
_alpm_log(PM_LOG_DEBUG, _("error: failed to get '%s' from NULL pkgcache"), target);
return(NULL);
diff --git a/lib/libalpm/db.h b/lib/libalpm/db.h
index 4f3c1bf0..81c15f50 100644
--- a/lib/libalpm/db.h
+++ b/lib/libalpm/db.h
@@ -28,11 +28,11 @@
/* Database entries */
typedef enum _pmdbinfrq_t {
- INFRQ_NONE = 0x00,
- INFRQ_DESC = 0x01,
- INFRQ_DEPENDS = 0x02,
- INFRQ_FILES = 0x04,
- INFRQ_SCRIPTLET = 0x08,
+ INFRQ_BASE = 0x01,
+ INFRQ_DESC = 0x02,
+ INFRQ_DEPENDS = 0x04,
+ INFRQ_FILES = 0x08,
+ INFRQ_SCRIPTLET = 0x16,
INFRQ_ALL = 0xFF
} pmdbinfrq_t;
diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c
index e979af63..f7753d7c 100644
--- a/lib/libalpm/package.c
+++ b/lib/libalpm/package.c
@@ -567,7 +567,7 @@ void _alpm_pkg_update_requiredby(pmpkg_t *pkg)
}
}
-const char *alpm_pkg_get_filename(pmpkg_t *pkg)
+const char SYMEXPORT *alpm_pkg_get_filename(pmpkg_t *pkg)
{
ALPM_LOG_FUNC;
@@ -577,10 +577,15 @@ const char *alpm_pkg_get_filename(pmpkg_t *pkg)
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->data, pkg, INFRQ_DESC);
+ }
if(pkg->arch && strlen(pkg->arch) > 0) {
- snprintf(pkg->filename, PKG_FILENAME_LEN, "%s-%s-%s" PM_EXT_PKG, pkg->name, pkg->version, pkg->arch);
+ snprintf(pkg->filename, PKG_FILENAME_LEN, "%s-%s-%s" PM_EXT_PKG,
+ pkg->name, pkg->version, pkg->arch);
} else {
- snprintf(pkg->filename, PKG_FILENAME_LEN, "%s-%s" PM_EXT_PKG, pkg->name, pkg->version);
+ snprintf(pkg->filename, PKG_FILENAME_LEN, "%s-%s" PM_EXT_PKG,
+ pkg->name, pkg->version);
}
}
@@ -589,19 +594,29 @@ const char *alpm_pkg_get_filename(pmpkg_t *pkg)
const char SYMEXPORT *alpm_pkg_get_name(pmpkg_t *pkg)
{
+ ALPM_LOG_FUNC;
+
/* Sanity checks */
ASSERT(handle != NULL, return(NULL));
ASSERT(pkg != NULL, return(NULL));
+ if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_BASE)) {
+ _alpm_db_read(pkg->data, pkg, INFRQ_BASE);
+ }
return pkg->name;
}
const char SYMEXPORT *alpm_pkg_get_version(pmpkg_t *pkg)
{
+ ALPM_LOG_FUNC;
+
/* Sanity checks */
ASSERT(handle != NULL, return(NULL));
ASSERT(pkg != NULL, return(NULL));
+ if(pkg->origin == PKG_FROM_CACHE && !(pkg->infolevel & INFRQ_BASE)) {
+ _alpm_db_read(pkg->data, pkg, INFRQ_BASE);
+ }
return pkg->version;
}
@@ -649,6 +664,8 @@ const char SYMEXPORT *alpm_pkg_get_builddate(pmpkg_t *pkg)
const char SYMEXPORT *alpm_pkg_get_buildtype(pmpkg_t *pkg)
{
+ ALPM_LOG_FUNC;
+
/* Sanity checks */
ASSERT(handle != NULL, return(NULL));
ASSERT(pkg != NULL, return(NULL));
@@ -929,6 +946,7 @@ unsigned short SYMEXPORT alpm_pkg_has_scriptlet(pmpkg_t *pkg)
return pkg->scriptlet;
}
+/* TODO this should either be public, or done somewhere else */
int _alpm_pkg_istoonew(pmpkg_t *pkg)
{
time_t t;
diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c
index 0e4c6c04..81d2a738 100644
--- a/lib/libalpm/sync.c
+++ b/lib/libalpm/sync.c
@@ -137,7 +137,7 @@ static int find_replacements(pmtrans_t *trans, pmdb_t *db_local,
for(k = alpm_pkg_get_replaces(spkg); k; k = k->next) {
const char *replacement = k->data;
/* compare to local DB */
- for(m = _alpm_db_get_pkgcache(db_local, INFRQ_NONE); m; m = m->next) {
+ for(m = _alpm_db_get_pkgcache(db_local, INFRQ_BASE); m; m = m->next) {
pmpkg_t *lpkg = m->data;
if(strcmp(replacement, lpkg->name) == 0) {
@@ -203,7 +203,7 @@ int _alpm_sync_sysupgrade(pmtrans_t *trans, pmdb_t *db_local, alpm_list_t *dbs_s
if( find_replacements(trans, db_local, dbs_sync) == 0 ) {
/* match installed packages with the sync dbs and compare versions */
_alpm_log(PM_LOG_DEBUG, _("checking for package upgrades"));
- for(i = _alpm_db_get_pkgcache(db_local, INFRQ_NONE); i; i = i->next) {
+ for(i = _alpm_db_get_pkgcache(db_local, INFRQ_BASE); i; i = i->next) {
int replace=0;
pmpkg_t *local = i->data;
pmpkg_t *spkg = NULL;