diff --git a/libpkgconf/cache.c b/libpkgconf/cache.c index 4f3126c..03a3a32 100644 --- a/libpkgconf/cache.c +++ b/libpkgconf/cache.c @@ -15,8 +15,6 @@ #include -static pkgconf_list_t pkg_cache = PKGCONF_LIST_INITIALIZER; - /* * pkgconf_cache_lookup(id) * @@ -25,16 +23,16 @@ static pkgconf_list_t pkg_cache = PKGCONF_LIST_INITIALIZER; * if present. */ pkgconf_pkg_t * -pkgconf_cache_lookup(const char *id) +pkgconf_cache_lookup(const pkgconf_client_t *client, const char *id) { pkgconf_node_t *node; - PKGCONF_FOREACH_LIST_ENTRY(pkg_cache.head, node) + PKGCONF_FOREACH_LIST_ENTRY(client->pkg_cache.head, node) { pkgconf_pkg_t *pkg = node->data; if (!strcmp(pkg->id, id)) - return pkgconf_pkg_ref(pkg); + return pkgconf_pkg_ref(client, pkg); } return NULL; @@ -47,13 +45,13 @@ pkgconf_cache_lookup(const char *id) * the cache entry must be removed if the package is freed. */ void -pkgconf_cache_add(pkgconf_pkg_t *pkg) +pkgconf_cache_add(pkgconf_client_t *client, pkgconf_pkg_t *pkg) { if (pkg == NULL) return; - pkgconf_pkg_ref(pkg); - pkgconf_node_insert(&pkg->cache_iter, pkg, &pkg_cache); + pkgconf_pkg_ref(client, pkg); + pkgconf_node_insert(&pkg->cache_iter, pkg, &client->pkg_cache); } /* @@ -62,22 +60,24 @@ pkgconf_cache_add(pkgconf_pkg_t *pkg) * deletes a package from the cache entry. */ void -pkgconf_cache_remove(pkgconf_pkg_t *pkg) +pkgconf_cache_remove(pkgconf_client_t *client, pkgconf_pkg_t *pkg) { if (pkg == NULL) return; - pkgconf_node_delete(&pkg->cache_iter, &pkg_cache); + pkgconf_node_delete(&pkg->cache_iter, &client->pkg_cache); } void -pkgconf_cache_free(void) +pkgconf_cache_free(pkgconf_client_t *client) { pkgconf_node_t *iter, *iter2; - PKGCONF_FOREACH_LIST_ENTRY_SAFE(pkg_cache.head, iter2, iter) + PKGCONF_FOREACH_LIST_ENTRY_SAFE(client->pkg_cache.head, iter2, iter) { pkgconf_pkg_t *pkg = iter->data; - pkgconf_pkg_free(pkg); + pkgconf_pkg_free(client, pkg); } + + memset(&client->pkg_cache, 0, sizeof client->pkg_cache); } diff --git a/libpkgconf/libpkgconf.h b/libpkgconf/libpkgconf.h index 6b283d0..5021389 100644 --- a/libpkgconf/libpkgconf.h +++ b/libpkgconf/libpkgconf.h @@ -129,12 +129,13 @@ struct pkgconf_pkg_ { }; typedef bool (*pkgconf_pkg_iteration_func_t)(const pkgconf_pkg_t *pkg, void *data); -typedef void (*pkgconf_pkg_traverse_func_t)(const pkgconf_client_t *client, pkgconf_pkg_t *pkg, void *data, unsigned int flags); -typedef bool (*pkgconf_queue_apply_func_t)(const pkgconf_client_t *client, pkgconf_pkg_t *world, void *data, int maxdepth, unsigned int flags); +typedef void (*pkgconf_pkg_traverse_func_t)(pkgconf_client_t *client, pkgconf_pkg_t *pkg, void *data, unsigned int flags); +typedef bool (*pkgconf_queue_apply_func_t)(pkgconf_client_t *client, pkgconf_pkg_t *world, void *data, int maxdepth, unsigned int flags); typedef bool (*pkgconf_error_handler_func_t)(const char *msg); struct pkgconf_client_ { pkgconf_list_t dir_list; + pkgconf_list_t pkg_cache; #ifdef XXX_NOTYET pkgconf_list_t filter_libdirs; @@ -188,21 +189,21 @@ void pkgconf_client_free(pkgconf_client_t *client); bool pkgconf_error(const pkgconf_client_t *client, const char *format, ...) PRINTFLIKE(2, 3); bool pkgconf_default_error_handler(const char *msg); -pkgconf_pkg_t *pkgconf_pkg_ref(pkgconf_pkg_t *pkg); -void pkgconf_pkg_unref(pkgconf_pkg_t *pkg); -void pkgconf_pkg_free(pkgconf_pkg_t *pkg); +pkgconf_pkg_t *pkgconf_pkg_ref(const pkgconf_client_t *client, pkgconf_pkg_t *pkg); +void pkgconf_pkg_unref(pkgconf_client_t *client, pkgconf_pkg_t *pkg); +void pkgconf_pkg_free(pkgconf_client_t *client, pkgconf_pkg_t *pkg); pkgconf_pkg_t *pkgconf_pkg_find(pkgconf_client_t *client, const char *name, unsigned int flags); -unsigned int pkgconf_pkg_traverse(const pkgconf_client_t *client, pkgconf_pkg_t *root, pkgconf_pkg_traverse_func_t func, void *data, int maxdepth, unsigned int flags); -unsigned int pkgconf_pkg_verify_graph(const pkgconf_client_t *client, pkgconf_pkg_t *root, int depth, unsigned int flags); -pkgconf_pkg_t *pkgconf_pkg_verify_dependency(const pkgconf_client_t *client, pkgconf_dependency_t *pkgdep, unsigned int flags, unsigned int *eflags); +unsigned int pkgconf_pkg_traverse(pkgconf_client_t *client, pkgconf_pkg_t *root, pkgconf_pkg_traverse_func_t func, void *data, int maxdepth, unsigned int flags); +unsigned int pkgconf_pkg_verify_graph(pkgconf_client_t *client, pkgconf_pkg_t *root, int depth, unsigned int flags); +pkgconf_pkg_t *pkgconf_pkg_verify_dependency(pkgconf_client_t *client, pkgconf_dependency_t *pkgdep, unsigned int flags, unsigned int *eflags); const char *pkgconf_pkg_get_comparator(const pkgconf_dependency_t *pkgdep); -int pkgconf_pkg_cflags(const pkgconf_client_t *client, pkgconf_pkg_t *root, pkgconf_list_t *list, int maxdepth, unsigned int flags); -int pkgconf_pkg_libs(const pkgconf_client_t *client, pkgconf_pkg_t *root, pkgconf_list_t *list, int maxdepth, unsigned int flags); +int pkgconf_pkg_cflags(pkgconf_client_t *client, pkgconf_pkg_t *root, pkgconf_list_t *list, int maxdepth, unsigned int flags); +int pkgconf_pkg_libs(pkgconf_client_t *client, pkgconf_pkg_t *root, pkgconf_list_t *list, int maxdepth, unsigned int flags); pkgconf_pkg_comparator_t pkgconf_pkg_comparator_lookup_by_name(const char *name); pkgconf_pkg_t *pkgconf_builtin_pkg_get(const char *name); int pkgconf_compare_version(const char *a, const char *b); -pkgconf_pkg_t *pkgconf_scan_all(const pkgconf_client_t *client, void *ptr, pkgconf_pkg_iteration_func_t func); +pkgconf_pkg_t *pkgconf_scan_all(pkgconf_client_t *client, void *ptr, pkgconf_pkg_iteration_func_t func); void pkgconf_pkg_dir_list_build(pkgconf_client_t *client, unsigned int flags); /* parse.c */ @@ -239,16 +240,16 @@ void pkgconf_tuple_define_global(pkgconf_client_t *client, const char *kv); /* queue.c */ void pkgconf_queue_push(pkgconf_list_t *list, const char *package); -bool pkgconf_queue_compile(const pkgconf_client_t *client, pkgconf_pkg_t *world, pkgconf_list_t *list); +bool pkgconf_queue_compile(pkgconf_client_t *client, pkgconf_pkg_t *world, pkgconf_list_t *list); void pkgconf_queue_free(pkgconf_list_t *list); -bool pkgconf_queue_apply(const pkgconf_client_t *client, pkgconf_list_t *list, pkgconf_queue_apply_func_t func, int maxdepth, unsigned int flags, void *data); -bool pkgconf_queue_validate(const pkgconf_client_t *client, pkgconf_list_t *list, int maxdepth, unsigned int flags); +bool pkgconf_queue_apply(pkgconf_client_t *client, pkgconf_list_t *list, pkgconf_queue_apply_func_t func, int maxdepth, unsigned int flags, void *data); +bool pkgconf_queue_validate(pkgconf_client_t *client, pkgconf_list_t *list, int maxdepth, unsigned int flags); /* cache.c */ -pkgconf_pkg_t *pkgconf_cache_lookup(const char *id); -void pkgconf_cache_add(pkgconf_pkg_t *pkg); -void pkgconf_cache_remove(pkgconf_pkg_t *pkg); -void pkgconf_cache_free(void); +pkgconf_pkg_t *pkgconf_cache_lookup(const pkgconf_client_t *client, const char *id); +void pkgconf_cache_add(pkgconf_client_t *client, pkgconf_pkg_t *pkg); +void pkgconf_cache_remove(pkgconf_client_t *client, pkgconf_pkg_t *pkg); +void pkgconf_cache_free(pkgconf_client_t *client); /* audit.c */ void pkgconf_audit_open_log(FILE *auditf); diff --git a/libpkgconf/pkg.c b/libpkgconf/pkg.c index 71bebea..7c9606f 100644 --- a/libpkgconf/pkg.c +++ b/libpkgconf/pkg.c @@ -259,16 +259,16 @@ pkgconf_pkg_new_from_file(const pkgconf_client_t *client, const char *filename, pkgconf_dependency_add(&pkg->provides, pkg->id, pkg->version, PKGCONF_CMP_EQUAL); - return pkgconf_pkg_ref(pkg); + return pkgconf_pkg_ref(client, pkg); } void -pkgconf_pkg_free(pkgconf_pkg_t *pkg) +pkgconf_pkg_free(pkgconf_client_t *client, pkgconf_pkg_t *pkg) { if (pkg == NULL || pkg->flags & PKGCONF_PKG_PROPF_VIRTUAL) return; - pkgconf_cache_remove(pkg); + pkgconf_cache_remove(client, pkg); pkgconf_dependency_free(&pkg->requires); pkgconf_dependency_free(&pkg->requires_private); @@ -307,18 +307,20 @@ pkgconf_pkg_free(pkgconf_pkg_t *pkg) } pkgconf_pkg_t * -pkgconf_pkg_ref(pkgconf_pkg_t *pkg) +pkgconf_pkg_ref(const pkgconf_client_t *client, pkgconf_pkg_t *pkg) { + (void) client; + pkg->refcount++; return pkg; } void -pkgconf_pkg_unref(pkgconf_pkg_t *pkg) +pkgconf_pkg_unref(pkgconf_client_t *client, pkgconf_pkg_t *pkg) { pkg->refcount--; if (pkg->refcount <= 0) - pkgconf_pkg_free(pkg); + pkgconf_pkg_free(client, pkg); } static inline pkgconf_pkg_t * @@ -344,7 +346,7 @@ pkgconf_pkg_try_specific_path(const pkgconf_client_t *client, const char *path, } static pkgconf_pkg_t * -pkgconf_pkg_scan_dir(const pkgconf_client_t *client, const char *path, void *data, pkgconf_pkg_iteration_func_t func) +pkgconf_pkg_scan_dir(pkgconf_client_t *client, const char *path, void *data, pkgconf_pkg_iteration_func_t func) { DIR *dir; struct dirent *dirent; @@ -382,7 +384,7 @@ pkgconf_pkg_scan_dir(const pkgconf_client_t *client, const char *path, void *dat goto out; } - pkgconf_pkg_unref(pkg); + pkgconf_pkg_unref(client, pkg); } } @@ -392,7 +394,7 @@ out: } pkgconf_pkg_t * -pkgconf_scan_all(const pkgconf_client_t *client, void *data, pkgconf_pkg_iteration_func_t func) +pkgconf_scan_all(pkgconf_client_t *client, void *data, pkgconf_pkg_iteration_func_t func) { pkgconf_node_t *n; pkgconf_pkg_t *pkg; @@ -474,7 +476,7 @@ pkgconf_pkg_find(pkgconf_client_t *client, const char *name, unsigned int flags) /* check cache */ if (!(flags & PKGCONF_PKG_PKGF_NO_CACHE)) { - if ((pkg = pkgconf_cache_lookup(name)) != NULL) + if ((pkg = pkgconf_cache_lookup(client, name)) != NULL) { pkg->flags |= PKGCONF_PKG_PROPF_CACHED; return pkg; @@ -498,7 +500,7 @@ pkgconf_pkg_find(pkgconf_client_t *client, const char *name, unsigned int flags) #endif out: - pkgconf_cache_add(pkg); + pkgconf_cache_add(client, pkg); return pkg; } @@ -960,7 +962,7 @@ pkgconf_pkg_scan_provides_entry(const pkgconf_pkg_t *pkg, const pkgconf_pkg_scan * scan all available packages to see if a Provides rule matches the pkgdep. */ static pkgconf_pkg_t * -pkgconf_pkg_scan_providers(const pkgconf_client_t *client, pkgconf_dependency_t *pkgdep, unsigned int flags, unsigned int *eflags) +pkgconf_pkg_scan_providers(pkgconf_client_t *client, pkgconf_dependency_t *pkgdep, unsigned int flags, unsigned int *eflags) { pkgconf_pkg_t *pkg; pkgconf_pkg_scan_providers_ctx_t ctx = { @@ -985,7 +987,7 @@ pkgconf_pkg_scan_providers(const pkgconf_client_t *client, pkgconf_dependency_t * return the appropriate pkgconf_pkg_t object, else NULL. */ pkgconf_pkg_t * -pkgconf_pkg_verify_dependency(const pkgconf_client_t *client, pkgconf_dependency_t *pkgdep, unsigned int flags, unsigned int *eflags) +pkgconf_pkg_verify_dependency(pkgconf_client_t *client, pkgconf_dependency_t *pkgdep, unsigned int flags, unsigned int *eflags) { pkgconf_pkg_t *pkg = NULL; @@ -1025,13 +1027,13 @@ pkgconf_pkg_verify_dependency(const pkgconf_client_t *client, pkgconf_dependency * pkgconf_pkg_traverse(). */ unsigned int -pkgconf_pkg_verify_graph(const pkgconf_client_t *client, pkgconf_pkg_t *root, int depth, unsigned int flags) +pkgconf_pkg_verify_graph(pkgconf_client_t *client, pkgconf_pkg_t *root, int depth, unsigned int flags) { return pkgconf_pkg_traverse(client, root, NULL, NULL, depth, flags); } static unsigned int -pkgconf_pkg_report_graph_error(const pkgconf_client_t *client, pkgconf_pkg_t *parent, pkgconf_pkg_t *pkg, pkgconf_dependency_t *node, unsigned int eflags) +pkgconf_pkg_report_graph_error(pkgconf_client_t *client, pkgconf_pkg_t *parent, pkgconf_pkg_t *pkg, pkgconf_dependency_t *node, unsigned int eflags) { static bool already_sent_notice = false; @@ -1059,13 +1061,13 @@ pkgconf_pkg_report_graph_error(const pkgconf_client_t *client, pkgconf_pkg_t *pa } if (pkg != NULL) - pkgconf_pkg_unref(pkg); + pkgconf_pkg_unref(client, pkg); return eflags; } static inline unsigned int -pkgconf_pkg_walk_list(const pkgconf_client_t *client, +pkgconf_pkg_walk_list(pkgconf_client_t *client, pkgconf_pkg_t *parent, pkgconf_list_t *deplist, pkgconf_pkg_traverse_func_t func, @@ -1098,7 +1100,7 @@ pkgconf_pkg_walk_list(const pkgconf_client_t *client, if (pkgdep->flags & PKGCONF_PKG_PROPF_SEEN) { - pkgconf_pkg_unref(pkgdep); + pkgconf_pkg_unref(client, pkgdep); continue; } @@ -1107,14 +1109,14 @@ pkgconf_pkg_walk_list(const pkgconf_client_t *client, pkgdep->flags |= PKGCONF_PKG_PROPF_SEEN; eflags |= pkgconf_pkg_traverse(client, pkgdep, func, data, depth - 1, flags); pkgdep->flags &= ~PKGCONF_PKG_PROPF_SEEN; - pkgconf_pkg_unref(pkgdep); + pkgconf_pkg_unref(client, pkgdep); } return eflags; } static inline unsigned int -pkgconf_pkg_walk_conflicts_list(const pkgconf_client_t *client, +pkgconf_pkg_walk_conflicts_list(pkgconf_client_t *client, pkgconf_pkg_t *root, pkgconf_list_t *deplist, unsigned int flags) { unsigned int eflags; @@ -1144,12 +1146,12 @@ pkgconf_pkg_walk_conflicts_list(const pkgconf_client_t *client, pkgconf_error(client, "It may be possible to ignore this conflict and continue, try the\n"); pkgconf_error(client, "PKG_CONFIG_IGNORE_CONFLICTS environment variable.\n"); - pkgconf_pkg_unref(pkgdep); + pkgconf_pkg_unref(client, pkgdep); return PKGCONF_PKG_ERRF_PACKAGE_CONFLICT; } - pkgconf_pkg_unref(pkgdep); + pkgconf_pkg_unref(client, pkgdep); } } @@ -1162,7 +1164,7 @@ pkgconf_pkg_walk_conflicts_list(const pkgconf_client_t *client, * walk the dependency graph up to maxdepth levels. -1 means infinite recursion. */ unsigned int -pkgconf_pkg_traverse(const pkgconf_client_t *client, +pkgconf_pkg_traverse(pkgconf_client_t *client, pkgconf_pkg_t *root, pkgconf_pkg_traverse_func_t func, void *data, @@ -1203,7 +1205,7 @@ pkgconf_pkg_traverse(const pkgconf_client_t *client, } static void -pkgconf_pkg_cflags_collect(const pkgconf_client_t *client, pkgconf_pkg_t *pkg, void *data, unsigned int flags) +pkgconf_pkg_cflags_collect(pkgconf_client_t *client, pkgconf_pkg_t *pkg, void *data, unsigned int flags) { pkgconf_list_t *list = data; pkgconf_node_t *node; @@ -1218,7 +1220,7 @@ pkgconf_pkg_cflags_collect(const pkgconf_client_t *client, pkgconf_pkg_t *pkg, v } static void -pkgconf_pkg_cflags_private_collect(const pkgconf_client_t *client, pkgconf_pkg_t *pkg, void *data, unsigned int flags) +pkgconf_pkg_cflags_private_collect(pkgconf_client_t *client, pkgconf_pkg_t *pkg, void *data, unsigned int flags) { pkgconf_list_t *list = data; pkgconf_node_t *node; @@ -1234,7 +1236,7 @@ pkgconf_pkg_cflags_private_collect(const pkgconf_client_t *client, pkgconf_pkg_t } int -pkgconf_pkg_cflags(const pkgconf_client_t *client, pkgconf_pkg_t *root, pkgconf_list_t *list, int maxdepth, unsigned int flags) +pkgconf_pkg_cflags(pkgconf_client_t *client, pkgconf_pkg_t *root, pkgconf_list_t *list, int maxdepth, unsigned int flags) { int eflag; @@ -1253,7 +1255,7 @@ pkgconf_pkg_cflags(const pkgconf_client_t *client, pkgconf_pkg_t *root, pkgconf_ } static void -pkgconf_pkg_libs_collect(const pkgconf_client_t *client, pkgconf_pkg_t *pkg, void *data, unsigned int flags) +pkgconf_pkg_libs_collect(pkgconf_client_t *client, pkgconf_pkg_t *pkg, void *data, unsigned int flags) { pkgconf_list_t *list = data; pkgconf_node_t *node; @@ -1277,7 +1279,7 @@ pkgconf_pkg_libs_collect(const pkgconf_client_t *client, pkgconf_pkg_t *pkg, voi } int -pkgconf_pkg_libs(const pkgconf_client_t *client, pkgconf_pkg_t *root, pkgconf_list_t *list, int maxdepth, unsigned int flags) +pkgconf_pkg_libs(pkgconf_client_t *client, pkgconf_pkg_t *root, pkgconf_list_t *list, int maxdepth, unsigned int flags) { int eflag; diff --git a/libpkgconf/queue.c b/libpkgconf/queue.c index c1dbfc3..c6bef99 100644 --- a/libpkgconf/queue.c +++ b/libpkgconf/queue.c @@ -30,7 +30,7 @@ pkgconf_queue_push(pkgconf_list_t *list, const char *package) } bool -pkgconf_queue_compile(const pkgconf_client_t *client, pkgconf_pkg_t *world, pkgconf_list_t *list) +pkgconf_queue_compile(pkgconf_client_t *client, pkgconf_pkg_t *world, pkgconf_list_t *list) { pkgconf_node_t *iter; @@ -60,7 +60,7 @@ pkgconf_queue_free(pkgconf_list_t *list) } static inline unsigned int -pkgconf_queue_verify(const pkgconf_client_t *client, pkgconf_pkg_t *world, pkgconf_list_t *list, int maxdepth, unsigned int flags) +pkgconf_queue_verify(pkgconf_client_t *client, pkgconf_pkg_t *world, pkgconf_list_t *list, int maxdepth, unsigned int flags) { if (!pkgconf_queue_compile(client, world, list)) return PKGCONF_PKG_ERRF_DEPGRAPH_BREAK; @@ -69,7 +69,7 @@ pkgconf_queue_verify(const pkgconf_client_t *client, pkgconf_pkg_t *world, pkgco } bool -pkgconf_queue_apply(const pkgconf_client_t *client, pkgconf_list_t *list, pkgconf_queue_apply_func_t func, int maxdepth, unsigned int flags, void *data) +pkgconf_queue_apply(pkgconf_client_t *client, pkgconf_list_t *list, pkgconf_queue_apply_func_t func, int maxdepth, unsigned int flags, void *data) { pkgconf_pkg_t world = { .id = "virtual:world", @@ -86,17 +86,17 @@ pkgconf_queue_apply(const pkgconf_client_t *client, pkgconf_list_t *list, pkgcon if (!func(client, &world, data, maxdepth, flags)) { - pkgconf_pkg_free(&world); + pkgconf_pkg_free(client, &world); return false; } - pkgconf_pkg_free(&world); + pkgconf_pkg_free(client, &world); return true; } bool -pkgconf_queue_validate(const pkgconf_client_t *client, pkgconf_list_t *list, int maxdepth, unsigned int flags) +pkgconf_queue_validate(pkgconf_client_t *client, pkgconf_list_t *list, int maxdepth, unsigned int flags) { bool retval = true; pkgconf_pkg_t world = { @@ -112,7 +112,7 @@ pkgconf_queue_validate(const pkgconf_client_t *client, pkgconf_list_t *list, int if (pkgconf_queue_verify(client, &world, list, maxdepth, flags) != PKGCONF_PKG_ERRF_OK) retval = false; - pkgconf_pkg_free(&world); + pkgconf_pkg_free(client, &world); return retval; } diff --git a/main.c b/main.c index 17c6990..9effa8b 100644 --- a/main.c +++ b/main.c @@ -184,7 +184,7 @@ print_libs(pkgconf_list_t *list) } static void -print_modversion(const pkgconf_client_t *client, pkgconf_pkg_t *pkg, void *unused, unsigned int flags) +print_modversion(pkgconf_client_t *client, pkgconf_pkg_t *pkg, void *unused, unsigned int flags) { (void) client; (void) unused; @@ -195,7 +195,7 @@ print_modversion(const pkgconf_client_t *client, pkgconf_pkg_t *pkg, void *unuse } static void -print_variables(const pkgconf_client_t *client, pkgconf_pkg_t *pkg, void *unused, unsigned int flags) +print_variables(pkgconf_client_t *client, pkgconf_pkg_t *pkg, void *unused, unsigned int flags) { pkgconf_node_t *node; (void) client; @@ -265,7 +265,7 @@ print_provides(pkgconf_pkg_t *pkg) } static bool -apply_provides(const pkgconf_client_t *client, pkgconf_pkg_t *world, void *unused, int maxdepth, unsigned int flags) +apply_provides(pkgconf_client_t *client, pkgconf_pkg_t *world, void *unused, int maxdepth, unsigned int flags) { pkgconf_node_t *iter; (void) unused; @@ -279,14 +279,14 @@ apply_provides(const pkgconf_client_t *client, pkgconf_pkg_t *world, void *unuse pkg = pkgconf_pkg_verify_dependency(client, dep, flags, NULL); print_provides(pkg); - pkgconf_pkg_free(pkg); + pkgconf_pkg_free(&pkg_client, pkg); } return true; } static void -print_digraph_node(const pkgconf_client_t *client, pkgconf_pkg_t *pkg, void *unused, unsigned int flags) +print_digraph_node(pkgconf_client_t *client, pkgconf_pkg_t *pkg, void *unused, unsigned int flags) { pkgconf_node_t *node; (void) client; @@ -304,7 +304,7 @@ print_digraph_node(const pkgconf_client_t *client, pkgconf_pkg_t *pkg, void *unu } static bool -apply_digraph(const pkgconf_client_t *client, pkgconf_pkg_t *world, void *unused, int maxdepth, unsigned int flags) +apply_digraph(pkgconf_client_t *client, pkgconf_pkg_t *world, void *unused, int maxdepth, unsigned int flags) { int eflag; @@ -322,7 +322,7 @@ apply_digraph(const pkgconf_client_t *client, pkgconf_pkg_t *world, void *unused } static bool -apply_modversion(const pkgconf_client_t *client, pkgconf_pkg_t *world, void *unused, int maxdepth, unsigned int flags) +apply_modversion(pkgconf_client_t *client, pkgconf_pkg_t *world, void *unused, int maxdepth, unsigned int flags) { int eflag; @@ -335,7 +335,7 @@ apply_modversion(const pkgconf_client_t *client, pkgconf_pkg_t *world, void *unu } static bool -apply_variables(const pkgconf_client_t *client, pkgconf_pkg_t *world, void *unused, int maxdepth, unsigned int flags) +apply_variables(pkgconf_client_t *client, pkgconf_pkg_t *world, void *unused, int maxdepth, unsigned int flags) { int eflag; @@ -353,7 +353,7 @@ typedef struct { } var_request_t; static void -print_variable(const pkgconf_client_t *client, pkgconf_pkg_t *pkg, void *data, unsigned int flags) +print_variable(pkgconf_client_t *client, pkgconf_pkg_t *pkg, void *data, unsigned int flags) { var_request_t *req = data; const char *var; @@ -385,7 +385,7 @@ print_variable(const pkgconf_client_t *client, pkgconf_pkg_t *pkg, void *data, u } static bool -apply_variable(const pkgconf_client_t *client, pkgconf_pkg_t *world, void *variable, int maxdepth, unsigned int flags) +apply_variable(pkgconf_client_t *client, pkgconf_pkg_t *world, void *variable, int maxdepth, unsigned int flags) { int eflag; @@ -404,7 +404,7 @@ apply_variable(const pkgconf_client_t *client, pkgconf_pkg_t *world, void *varia } static bool -apply_cflags(const pkgconf_client_t *client, pkgconf_pkg_t *world, void *list_head, int maxdepth, unsigned int flags) +apply_cflags(pkgconf_client_t *client, pkgconf_pkg_t *world, void *list_head, int maxdepth, unsigned int flags) { pkgconf_list_t *list = list_head; int eflag; @@ -424,7 +424,7 @@ apply_cflags(const pkgconf_client_t *client, pkgconf_pkg_t *world, void *list_he } static bool -apply_libs(const pkgconf_client_t *client, pkgconf_pkg_t *world, void *list_head, int maxdepth, unsigned int flags) +apply_libs(pkgconf_client_t *client, pkgconf_pkg_t *world, void *list_head, int maxdepth, unsigned int flags) { pkgconf_list_t *list = list_head; int eflag; @@ -444,7 +444,7 @@ apply_libs(const pkgconf_client_t *client, pkgconf_pkg_t *world, void *list_head } static bool -apply_requires(const pkgconf_client_t *client, pkgconf_pkg_t *world, void *unused, int maxdepth, unsigned int flags) +apply_requires(pkgconf_client_t *client, pkgconf_pkg_t *world, void *unused, int maxdepth, unsigned int flags) { pkgconf_node_t *iter; (void) unused; @@ -458,14 +458,14 @@ apply_requires(const pkgconf_client_t *client, pkgconf_pkg_t *world, void *unuse pkg = pkgconf_pkg_verify_dependency(client, dep, flags, NULL); print_requires(pkg); - pkgconf_pkg_free(pkg); + pkgconf_pkg_free(&pkg_client, pkg); } return true; } static bool -apply_requires_private(const pkgconf_client_t *client, pkgconf_pkg_t *world, void *unused, int maxdepth, unsigned int flags) +apply_requires_private(pkgconf_client_t *client, pkgconf_pkg_t *world, void *unused, int maxdepth, unsigned int flags) { pkgconf_node_t *iter; (void) unused; @@ -479,13 +479,13 @@ apply_requires_private(const pkgconf_client_t *client, pkgconf_pkg_t *world, voi pkg = pkgconf_pkg_verify_dependency(client, dep, flags | PKGCONF_PKG_PKGF_SEARCH_PRIVATE, NULL); print_requires_private(pkg); - pkgconf_pkg_free(pkg); + pkgconf_pkg_free(&pkg_client, pkg); } return true; } static void -check_uninstalled(const pkgconf_client_t *client, pkgconf_pkg_t *pkg, void *data, unsigned int flags) +check_uninstalled(pkgconf_client_t *client, pkgconf_pkg_t *pkg, void *data, unsigned int flags) { int *retval = data; (void) client; @@ -496,7 +496,7 @@ check_uninstalled(const pkgconf_client_t *client, pkgconf_pkg_t *pkg, void *data } static bool -apply_uninstalled(const pkgconf_client_t *client, pkgconf_pkg_t *world, void *data, int maxdepth, unsigned int flags) +apply_uninstalled(pkgconf_client_t *client, pkgconf_pkg_t *world, void *data, int maxdepth, unsigned int flags) { int eflag; @@ -509,7 +509,7 @@ apply_uninstalled(const pkgconf_client_t *client, pkgconf_pkg_t *world, void *da } static void -print_graph_node(const pkgconf_client_t *client, pkgconf_pkg_t *pkg, void *data, unsigned int flags) +print_graph_node(pkgconf_client_t *client, pkgconf_pkg_t *pkg, void *data, unsigned int flags) { pkgconf_node_t *n; @@ -541,7 +541,7 @@ print_graph_node(const pkgconf_client_t *client, pkgconf_pkg_t *pkg, void *data, } static bool -apply_simulate(const pkgconf_client_t *client, pkgconf_pkg_t *world, void *data, int maxdepth, unsigned int flags) +apply_simulate(pkgconf_client_t *client, pkgconf_pkg_t *world, void *data, int maxdepth, unsigned int flags) { int eflag; @@ -1111,7 +1111,6 @@ out_println: out: pkgconf_client_deinit(&pkg_client); - pkgconf_cache_free(); if (logfile_out != NULL) fclose(logfile_out);