summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
2a0210f)
Extend pkg_hash_add_from_file(), pkg_hash_load_feeds() and
pkg_hash_load_status_files() to accept a per-package callback
function andan associated userdata pointer.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
if (opkg_conf_load())
goto err0;
if (opkg_conf_load())
goto err0;
- if (pkg_hash_load_feeds(0))
+ if (pkg_hash_load_feeds(0, NULL, NULL))
- if (pkg_hash_load_status_files())
+ if (pkg_hash_load_status_files(NULL, NULL))
}
pkg_hash_load_package_details();
}
pkg_hash_load_package_details();
- pkg_hash_load_status_files();
+ pkg_hash_load_status_files(NULL, NULL);
if (conf->force_reinstall) {
int saved_force_depends = conf->force_depends;
if (conf->force_reinstall) {
int saved_force_depends = conf->force_depends;
sprintf_alloc(&list_file, "%s/%s", lists_dir, subname);
if (file_exists(list_file)) {
sprintf_alloc(&list_file, "%s/%s", lists_dir, subname);
if (file_exists(list_file)) {
- if (pkg_hash_add_from_file(list_file, dist, NULL, 0, 0)) {
+ if (pkg_hash_add_from_file(list_file, dist, NULL, 0, 0, NULL, NULL)) {
free(list_file);
return -1;
}
free(list_file);
return -1;
}
int
pkg_hash_add_from_file(const char *file_name,
int
pkg_hash_add_from_file(const char *file_name,
- pkg_src_t * src, pkg_dest_t * dest, int is_status_file, int state_flags)
+ pkg_src_t * src, pkg_dest_t * dest, int is_status_file, int state_flags,
+ void (*cb)(pkg_t *, void *), void *priv)
- hash_insert_pkg(pkg, is_status_file);
+ if (cb)
+ cb(pkg, priv);
+ else
+ hash_insert_pkg(pkg, is_status_file);
/*
* Load in feed files from the cached "src" and/or "src/gz" locations.
*/
/*
* Load in feed files from the cached "src" and/or "src/gz" locations.
*/
-int pkg_hash_load_feeds(int state_flags)
+int pkg_hash_load_feeds(int state_flags, void (*cb)(pkg_t *, void *), void *priv)
{
pkg_src_list_elt_t *iter;
pkg_src_t *src;
{
pkg_src_list_elt_t *iter;
pkg_src_t *src;
sprintf_alloc(&list_file, "%s/%s", lists_dir, src->name);
if (file_exists(list_file)) {
sprintf_alloc(&list_file, "%s/%s", lists_dir, src->name);
if (file_exists(list_file)) {
- if (pkg_hash_add_from_file(list_file, src, NULL, 0, state_flags)) {
+ if (pkg_hash_add_from_file(list_file, src, NULL, 0, state_flags, cb, priv)) {
free(list_file);
return -1;
}
free(list_file);
return -1;
}
/*
* Load in status files from the configured "dest"s.
*/
/*
* Load in status files from the configured "dest"s.
*/
-int pkg_hash_load_status_files(void)
+int pkg_hash_load_status_files(void (*cb)(pkg_t *, void *), void *priv)
{
pkg_dest_list_elt_t *iter;
pkg_dest_t *dest;
{
pkg_dest_list_elt_t *iter;
pkg_dest_t *dest;
if (file_exists(dest->status_file_name)) {
if (pkg_hash_add_from_file
if (file_exists(dest->status_file_name)) {
if (pkg_hash_add_from_file
- (dest->status_file_name, NULL, dest, 1, SF_NEED_DETAIL))
+ (dest->status_file_name, NULL, dest, 1, SF_NEED_DETAIL, cb, priv))
int n_need_detail;
while (1) {
int n_need_detail;
while (1) {
- pkg_hash_load_feeds(0);
+ pkg_hash_load_feeds(0, NULL, NULL);
n_need_detail = 0;
hash_table_foreach(&conf->pkg_hash, pkg_hash_load_package_details_helper, &n_need_detail);
n_need_detail = 0;
hash_table_foreach(&conf->pkg_hash, pkg_hash_load_package_details_helper, &n_need_detail);
int dist_hash_add_from_file(const char *file_name, pkg_src_t * dist);
int pkg_hash_add_from_file(const char *file_name, pkg_src_t * src,
int dist_hash_add_from_file(const char *file_name, pkg_src_t * dist);
int pkg_hash_add_from_file(const char *file_name, pkg_src_t * src,
- pkg_dest_t * dest, int is_status_file, int state_flags);
-int pkg_hash_load_feeds(int state_flags);
-int pkg_hash_load_status_files(void);
+ pkg_dest_t * dest, int is_status_file, int state_flags,
+ void (*cb)(pkg_t *, void *), void *priv);
+int pkg_hash_load_feeds(int state_flags, void (*cb)(pkg_t *, void *), void *priv);
+int pkg_hash_load_status_files(void (*cb)(pkg_t *, void *), void *priv);
int pkg_hash_load_package_details(void);
void hash_insert_pkg(pkg_t * pkg, int set_status);
int pkg_hash_load_package_details(void);
void hash_insert_pkg(pkg_t * pkg, int set_status);
if (!nocheckfordirorfile) {
if (!noreadfeedsfile) {
if (!nocheckfordirorfile) {
if (!noreadfeedsfile) {
- if (pkg_hash_load_feeds(SF_NEED_DETAIL))
+ if (pkg_hash_load_feeds(SF_NEED_DETAIL, NULL, NULL))
- if (pkg_hash_load_status_files())
+ if (pkg_hash_load_status_files(NULL, NULL))
}
pkg_hash_init("test", hash, 1024);
}
pkg_hash_init("test", hash, 1024);
- pkg_hash_add_from_file(&conf, argv[1], NULL, NULL, 0);
- pkg_hash_add_from_file(&conf, argv[2], NULL, NULL, 0);
+ pkg_hash_add_from_file(&conf, argv[1], NULL, NULL, 0, NULL, NULL);
+ pkg_hash_add_from_file(&conf, argv[2], NULL, NULL, 0, NULL, NULL);
if (argc < 4) {
pkg_print_info(pkg_hash_fetch_by_name_version
if (argc < 4) {
pkg_print_info(pkg_hash_fetch_by_name_version