lib/util.c: xbps_remote_binpkg_exists to check if signature and binpkg are cached
This commit is contained in:
parent
d2bdd9574e
commit
62c1102cc4
@ -1913,6 +1913,17 @@ bool xbps_pkg_is_ignored(struct xbps_handle *xhp, const char *pkg);
|
||||
*/
|
||||
bool xbps_binpkg_exists(struct xbps_handle *xhp, xbps_dictionary_t pkgd);
|
||||
|
||||
/**
|
||||
* Returns true if binary package and signature exists in cachedir,
|
||||
* false otherwise.
|
||||
*
|
||||
* @param[in] xhp The pointer to an xbps_handle struct.
|
||||
* @param[in] pkgd Package dictionary returned by rpool.
|
||||
*
|
||||
* @return true if exists, false otherwise.
|
||||
*/
|
||||
bool xbps_remote_binpkg_exists(struct xbps_handle *xhp, xbps_dictionary_t pkgd);
|
||||
|
||||
/**
|
||||
* Checks if the URI specified by \a uri is remote or local.
|
||||
*
|
||||
|
29
lib/util.c
29
lib/util.c
@ -378,6 +378,35 @@ xbps_binpkg_exists(struct xbps_handle *xhp, xbps_dictionary_t pkgd)
|
||||
return access(path, R_OK) == 0;
|
||||
}
|
||||
|
||||
bool
|
||||
xbps_remote_binpkg_exists(struct xbps_handle *xhp, xbps_dictionary_t pkgd)
|
||||
{
|
||||
char path[PATH_MAX];
|
||||
const char *pkgver, *arch;
|
||||
|
||||
assert(xhp);
|
||||
assert(xbps_object_type(pkgd) == XBPS_TYPE_DICTIONARY);
|
||||
|
||||
if (!xbps_dictionary_get_cstring_nocopy(pkgd,
|
||||
"pkgver", &pkgver))
|
||||
return NULL;
|
||||
if (!xbps_dictionary_get_cstring_nocopy(pkgd,
|
||||
"architecture", &arch))
|
||||
return NULL;
|
||||
|
||||
snprintf(path, sizeof(path), "%s/%s.%s.xbps.sig", xhp->cachedir,
|
||||
pkgver, arch);
|
||||
|
||||
/* check if the signature file exists */
|
||||
if (access(path, R_OK) != 0)
|
||||
return false;
|
||||
|
||||
/* strip the .sig suffix and check if binpkg file exists */
|
||||
path[strlen(path)-sizeof (".sig")+1] = '\0';
|
||||
|
||||
return access(path, R_OK) == 0;
|
||||
}
|
||||
|
||||
bool
|
||||
xbps_pkg_has_rundeps(xbps_dictionary_t pkgd)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user