forked from ariadne/pkgconf
pass client and user data to error handler (#100)
parent
e6c49153ff
commit
fa87608978
|
@ -38,11 +38,13 @@
|
||||||
*
|
*
|
||||||
* :param pkgconf_client_t* client: The client to initialise.
|
* :param pkgconf_client_t* client: The client to initialise.
|
||||||
* :param pkgconf_error_handler_func_t error_handler: An optional error handler to use for logging errors.
|
* :param pkgconf_error_handler_func_t error_handler: An optional error handler to use for logging errors.
|
||||||
|
* :param void * error_handler_data: user data passed to optional error handler
|
||||||
* :return: nothing
|
* :return: nothing
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
pkgconf_client_init(pkgconf_client_t *client, pkgconf_error_handler_func_t error_handler)
|
pkgconf_client_init(pkgconf_client_t *client, pkgconf_error_handler_func_t error_handler, void *error_handler_data)
|
||||||
{
|
{
|
||||||
|
client->error_handler_data = error_handler_data;
|
||||||
client->error_handler = error_handler;
|
client->error_handler = error_handler;
|
||||||
client->auditf = NULL;
|
client->auditf = NULL;
|
||||||
|
|
||||||
|
@ -58,14 +60,15 @@ pkgconf_client_init(pkgconf_client_t *client, pkgconf_error_handler_func_t error
|
||||||
* Allocate and initialise a pkgconf client object.
|
* Allocate and initialise a pkgconf client object.
|
||||||
*
|
*
|
||||||
* :param pkgconf_error_handler_func_t error_handler: An optional error handler to use for logging errors.
|
* :param pkgconf_error_handler_func_t error_handler: An optional error handler to use for logging errors.
|
||||||
|
* :param void * error_handler_data: user data passed to optional error handler
|
||||||
* :return: A pkgconf client object.
|
* :return: A pkgconf client object.
|
||||||
* :rtype: pkgconf_client_t*
|
* :rtype: pkgconf_client_t*
|
||||||
*/
|
*/
|
||||||
pkgconf_client_t *
|
pkgconf_client_t *
|
||||||
pkgconf_client_new(pkgconf_error_handler_func_t error_handler)
|
pkgconf_client_new(pkgconf_error_handler_func_t error_handler, void *error_handler_data)
|
||||||
{
|
{
|
||||||
pkgconf_client_t *out = calloc(sizeof(pkgconf_client_t), 1);
|
pkgconf_client_t *out = calloc(sizeof(pkgconf_client_t), 1);
|
||||||
pkgconf_client_init(out, error_handler);
|
pkgconf_client_init(out, error_handler, error_handler_data);
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -131,7 +131,7 @@ struct pkgconf_pkg_ {
|
||||||
typedef bool (*pkgconf_pkg_iteration_func_t)(const pkgconf_pkg_t *pkg, void *data);
|
typedef bool (*pkgconf_pkg_iteration_func_t)(const pkgconf_pkg_t *pkg, void *data);
|
||||||
typedef void (*pkgconf_pkg_traverse_func_t)(pkgconf_client_t *client, pkgconf_pkg_t *pkg, void *data, 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_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);
|
typedef bool (*pkgconf_error_handler_func_t)(const char *msg, const pkgconf_client_t *client, const void *data);
|
||||||
|
|
||||||
struct pkgconf_client_ {
|
struct pkgconf_client_ {
|
||||||
pkgconf_list_t dir_list;
|
pkgconf_list_t dir_list;
|
||||||
|
@ -144,6 +144,7 @@ struct pkgconf_client_ {
|
||||||
|
|
||||||
pkgconf_list_t global_vars;
|
pkgconf_list_t global_vars;
|
||||||
|
|
||||||
|
void *error_handler_data;
|
||||||
pkgconf_error_handler_func_t error_handler;
|
pkgconf_error_handler_func_t error_handler;
|
||||||
|
|
||||||
FILE *auditf;
|
FILE *auditf;
|
||||||
|
@ -153,8 +154,8 @@ struct pkgconf_client_ {
|
||||||
};
|
};
|
||||||
|
|
||||||
/* client.c */
|
/* client.c */
|
||||||
void pkgconf_client_init(pkgconf_client_t *client, pkgconf_error_handler_func_t error_handler);
|
void pkgconf_client_init(pkgconf_client_t *client, pkgconf_error_handler_func_t error_handler, void *error_handler_data);
|
||||||
pkgconf_client_t *pkgconf_client_new(pkgconf_error_handler_func_t error_handler);
|
pkgconf_client_t *pkgconf_client_new(pkgconf_error_handler_func_t error_handler, void *error_handler_data);
|
||||||
void pkgconf_client_deinit(pkgconf_client_t *client);
|
void pkgconf_client_deinit(pkgconf_client_t *client);
|
||||||
void pkgconf_client_free(pkgconf_client_t *client);
|
void pkgconf_client_free(pkgconf_client_t *client);
|
||||||
const char *pkgconf_client_get_sysroot_dir(const pkgconf_client_t *client);
|
const char *pkgconf_client_get_sysroot_dir(const pkgconf_client_t *client);
|
||||||
|
@ -195,7 +196,7 @@ void pkgconf_client_set_buildroot_dir(pkgconf_client_t *client, const char *buil
|
||||||
#endif /* defined(__INTEL_COMPILER) || defined(__GNUC__) */
|
#endif /* defined(__INTEL_COMPILER) || defined(__GNUC__) */
|
||||||
|
|
||||||
bool pkgconf_error(const pkgconf_client_t *client, const char *format, ...) PRINTFLIKE(2, 3);
|
bool pkgconf_error(const pkgconf_client_t *client, const char *format, ...) PRINTFLIKE(2, 3);
|
||||||
bool pkgconf_default_error_handler(const char *msg);
|
bool pkgconf_default_error_handler(const char *msg, const pkgconf_client_t *client, const void *data);
|
||||||
|
|
||||||
pkgconf_pkg_t *pkgconf_pkg_ref(const pkgconf_client_t *client, 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_unref(pkgconf_client_t *client, pkgconf_pkg_t *pkg);
|
||||||
|
|
|
@ -25,13 +25,15 @@ pkgconf_error(const pkgconf_client_t *client, const char *format, ...)
|
||||||
vsnprintf(errbuf, sizeof errbuf, format, va);
|
vsnprintf(errbuf, sizeof errbuf, format, va);
|
||||||
va_end(va);
|
va_end(va);
|
||||||
|
|
||||||
return client->error_handler(errbuf);
|
return client->error_handler(errbuf, client, client->error_handler_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
pkgconf_default_error_handler(const char *msg)
|
pkgconf_default_error_handler(const char *msg, const pkgconf_client_t *client, const void *data)
|
||||||
{
|
{
|
||||||
(void) msg;
|
(void) msg;
|
||||||
|
(void) client;
|
||||||
|
(void) data;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
6
main.c
6
main.c
|
@ -66,8 +66,10 @@ FILE *error_msgout = NULL;
|
||||||
FILE *logfile_out = NULL;
|
FILE *logfile_out = NULL;
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
error_handler(const char *msg)
|
error_handler(const char *msg, const pkgconf_client_t *client, const void *data)
|
||||||
{
|
{
|
||||||
|
(void) client;
|
||||||
|
(void) data;
|
||||||
fprintf(error_msgout, "%s", msg);
|
fprintf(error_msgout, "%s", msg);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -682,7 +684,7 @@ main(int argc, char *argv[])
|
||||||
{ NULL, 0, NULL, 0 }
|
{ NULL, 0, NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
pkgconf_client_init(&pkg_client, error_handler);
|
pkgconf_client_init(&pkg_client, error_handler, NULL);
|
||||||
pkgconf_path_build_from_environ("PKG_CONFIG_SYSTEM_LIBRARY_PATH", SYSTEM_LIBDIR, &filter_libdirs);
|
pkgconf_path_build_from_environ("PKG_CONFIG_SYSTEM_LIBRARY_PATH", SYSTEM_LIBDIR, &filter_libdirs);
|
||||||
pkgconf_path_build_from_environ("PKG_CONFIG_SYSTEM_INCLUDE_PATH", SYSTEM_INCLUDEDIR, &filter_includedirs);
|
pkgconf_path_build_from_environ("PKG_CONFIG_SYSTEM_INCLUDE_PATH", SYSTEM_INCLUDEDIR, &filter_includedirs);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue