diff options
Diffstat (limited to 'lib/libalpm/package.c')
-rw-r--r-- | lib/libalpm/package.c | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/lib/libalpm/package.c b/lib/libalpm/package.c index e25ecbe4..16166691 100644 --- a/lib/libalpm/package.c +++ b/lib/libalpm/package.c @@ -103,7 +103,9 @@ int SYMEXPORT alpm_pkg_free(pmpkg_t *pkg) int alpm_pkg_checksha1sum(pmpkg_t *pkg) { char path[PATH_MAX]; + struct stat buf; char *sha1sum = NULL; + alpm_list_t *i; int retval = 0; ALPM_LOG_FUNC; @@ -113,8 +115,14 @@ int alpm_pkg_checksha1sum(pmpkg_t *pkg) ASSERT(pkg->origin == PKG_FROM_CACHE, RET_ERR(PM_ERR_PKG_INVALID, -1)); ASSERT(pkg->data != handle->db_local, RET_ERR(PM_ERR_PKG_INVALID, -1)); - snprintf(path, PATH_MAX, "%s/%s-%s" PKGEXT, handle->cachedir, - alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg)); + /* Loop through the cache dirs until we find a matching file */ + for(i = alpm_option_get_cachedirs(); i; i = alpm_list_next(i)) { + snprintf(path, PATH_MAX, "%s%s-%s" PKGEXT, (char*)alpm_list_getdata(i), + alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg)); + if(stat(path, &buf) == 0) { + break; + } + } sha1sum = alpm_get_sha1sum(path); if(sha1sum == NULL) { @@ -146,7 +154,9 @@ int alpm_pkg_checksha1sum(pmpkg_t *pkg) int alpm_pkg_checkmd5sum(pmpkg_t *pkg) { char path[PATH_MAX]; + struct stat buf; char *md5sum = NULL; + alpm_list_t *i; int retval = 0; ALPM_LOG_FUNC; @@ -156,8 +166,14 @@ int alpm_pkg_checkmd5sum(pmpkg_t *pkg) ASSERT(pkg->origin == PKG_FROM_CACHE, RET_ERR(PM_ERR_PKG_INVALID, -1)); ASSERT(pkg->data != handle->db_local, RET_ERR(PM_ERR_PKG_INVALID, -1)); - snprintf(path, PATH_MAX, "%s/%s-%s" PKGEXT, handle->cachedir, - alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg)); + /* Loop through the cache dirs until we find a matching file */ + for(i = alpm_option_get_cachedirs(); i; i = alpm_list_next(i)) { + snprintf(path, PATH_MAX, "%s%s-%s" PKGEXT, (char*)alpm_list_getdata(i), + alpm_pkg_get_name(pkg), alpm_pkg_get_version(pkg)); + if(stat(path, &buf) == 0) { + break; + } + } md5sum = alpm_get_md5sum(path); if(md5sum == NULL) { @@ -182,6 +198,9 @@ int alpm_pkg_checkmd5sum(pmpkg_t *pkg) return(retval); } + + + /** Compare versions. * @param ver1 first version * @param ver2 secont version |