xbps_get_path_from_pkg_dict_repo: new function that returns a malloc'ed
string with the full path to a binary package file. --HG-- extra : convert_revision : xtraeme%40gmail.com-20091125042953-x2nhwi8kxg75ukyq
This commit is contained in:
parent
787416a0cd
commit
04d9ab2322
@ -185,6 +185,8 @@ int SYMEXPORT xbps_register_repository(const char *);
|
|||||||
int SYMEXPORT xbps_unregister_repository(const char *);
|
int SYMEXPORT xbps_unregister_repository(const char *);
|
||||||
|
|
||||||
/* From lib/repository_plist.c */
|
/* From lib/repository_plist.c */
|
||||||
|
char SYMEXPORT
|
||||||
|
*xbps_get_path_from_pkg_dict_repo(prop_dictionary_t, const char *);
|
||||||
prop_dictionary_t SYMEXPORT
|
prop_dictionary_t SYMEXPORT
|
||||||
xbps_get_pkg_plist_dict_from_repo(const char *, const char *);
|
xbps_get_pkg_plist_dict_from_repo(const char *, const char *);
|
||||||
prop_dictionary_t SYMEXPORT
|
prop_dictionary_t SYMEXPORT
|
||||||
|
@ -136,6 +136,23 @@ open_archive(const char *url)
|
|||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char SYMEXPORT *
|
||||||
|
xbps_get_path_from_pkg_dict_repo(prop_dictionary_t d, const char *uri)
|
||||||
|
{
|
||||||
|
const char *arch, *filen;
|
||||||
|
|
||||||
|
if (!prop_dictionary_get_cstring_nocopy(d, "architecture", &arch))
|
||||||
|
return NULL;
|
||||||
|
if (!prop_dictionary_get_cstring_nocopy(d, "filename", &filen))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
if (xbps_check_is_repo_string_remote(uri))
|
||||||
|
return xbps_xasprintf("%s/%s/%s", uri, arch, filen);
|
||||||
|
|
||||||
|
return xbps_xasprintf("%s/%s/%s/%s", xbps_get_rootdir(),
|
||||||
|
uri, arch, filen);
|
||||||
|
}
|
||||||
|
|
||||||
prop_dictionary_t SYMEXPORT
|
prop_dictionary_t SYMEXPORT
|
||||||
xbps_get_pkg_plist_dict_from_url(const char *url, const char *plistf)
|
xbps_get_pkg_plist_dict_from_url(const char *url, const char *plistf)
|
||||||
{
|
{
|
||||||
@ -180,7 +197,6 @@ xbps_get_pkg_plist_dict_from_repo(const char *pkgname, const char *plistf)
|
|||||||
{
|
{
|
||||||
prop_dictionary_t plistd = NULL, pkgd;
|
prop_dictionary_t plistd = NULL, pkgd;
|
||||||
struct repository_data *rdata;
|
struct repository_data *rdata;
|
||||||
const char *arch, *filen;
|
|
||||||
char *url = NULL;
|
char *url = NULL;
|
||||||
int rv = 0;
|
int rv = 0;
|
||||||
|
|
||||||
@ -202,16 +218,9 @@ xbps_get_pkg_plist_dict_from_repo(const char *pkgname, const char *plistf)
|
|||||||
if ((pkgd = xbps_find_pkg_in_dict(rdata->rd_repod,
|
if ((pkgd = xbps_find_pkg_in_dict(rdata->rd_repod,
|
||||||
"packages", pkgname)) == NULL)
|
"packages", pkgname)) == NULL)
|
||||||
continue;
|
continue;
|
||||||
if (!prop_dictionary_get_cstring_nocopy(pkgd,
|
url = xbps_get_path_from_pkg_dict_repo(pkgd, rdata->rd_uri);
|
||||||
"architecture", &arch))
|
|
||||||
break;
|
|
||||||
if (!prop_dictionary_get_cstring_nocopy(pkgd,
|
|
||||||
"filename", &filen))
|
|
||||||
break;
|
|
||||||
url = xbps_xasprintf("%s/%s/%s", rdata->rd_uri, arch, filen);
|
|
||||||
if (url == NULL)
|
if (url == NULL)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
plistd = xbps_get_pkg_plist_dict_from_url(url, plistf);
|
plistd = xbps_get_pkg_plist_dict_from_url(url, plistf);
|
||||||
if (plistd != NULL) {
|
if (plistd != NULL) {
|
||||||
free(url);
|
free(url);
|
||||||
|
Loading…
Reference in New Issue
Block a user