From: Michael Tremer Date: Tue, 15 Jun 2021 11:30:35 +0000 (+0000) Subject: pakfire: Allow setting log function on creation X-Git-Tag: 0.9.28~1242 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b5082d9b7ce9a7eda18df689634632449c81fb6e;p=pakfire.git pakfire: Allow setting log function on creation Signed-off-by: Michael Tremer --- diff --git a/src/_pakfire/pakfire.c b/src/_pakfire/pakfire.c index 4ec0f8071..a01c65b9f 100644 --- a/src/_pakfire/pakfire.c +++ b/src/_pakfire/pakfire.c @@ -82,7 +82,7 @@ static int Pakfire_init(PakfireObject* self, PyObject* args, PyObject* kwds) { } // Create a new Pakfire instance - int r = pakfire_create(&self->pakfire, path, arch, conf, flags); + int r = pakfire_create(&self->pakfire, path, arch, conf, flags, NULL, NULL); if (r) { switch (errno) { // Invalid architecture or path diff --git a/src/libpakfire/include/pakfire/pakfire.h b/src/libpakfire/include/pakfire/pakfire.h index b39097bfc..26c79a740 100644 --- a/src/libpakfire/include/pakfire/pakfire.h +++ b/src/libpakfire/include/pakfire/pakfire.h @@ -40,7 +40,7 @@ enum pakfire_flags { }; int pakfire_create(Pakfire* pakfire, const char* path, const char* arch, - const char* conf, int flags); + const char* conf, int flags, pakfire_log_function_t log, void* data); Pakfire pakfire_ref(Pakfire pakfire); Pakfire pakfire_unref(Pakfire pakfire); @@ -76,7 +76,8 @@ void pakfire_log(Pakfire pakfire, int priority, const char *file, __attribute__((format(printf, 6, 7))); pakfire_log_function_t pakfire_log_get_function(Pakfire pakfire); -void pakfire_log_set_function(Pakfire pakfire, pakfire_log_function_t log_function); +void pakfire_log_set_function(Pakfire pakfire, + pakfire_log_function_t log_function, void* data); int pakfire_log_get_priority(Pakfire pakfire); void pakfire_log_set_priority(Pakfire pakfire, int priority); diff --git a/src/libpakfire/pakfire.c b/src/libpakfire/pakfire.c index 7e720d2e8..1a33ca82e 100644 --- a/src/libpakfire/pakfire.c +++ b/src/libpakfire/pakfire.c @@ -77,6 +77,7 @@ struct _Pakfire { // Logging pakfire_log_function_t log_function; + void* log_data; int log_priority; int nrefs; @@ -782,7 +783,7 @@ ERROR: } PAKFIRE_EXPORT int pakfire_create(Pakfire* pakfire, const char* path, const char* arch, - const char* conf, int flags) { + const char* conf, int flags, pakfire_log_function_t log, void* data) { char tempdir[PATH_MAX] = PAKFIRE_PRIVATE_DIR "/tmp/XXXXXX"; int r = 1; @@ -820,7 +821,10 @@ PAKFIRE_EXPORT int pakfire_create(Pakfire* pakfire, const char* path, const char pakfire_string_set(p->arch, arch); // Setup logging - p->log_function = pakfire_log_syslog; + if (log) + pakfire_log_set_function(p, log, data); + else + pakfire_log_set_function(p, pakfire_log_syslog, NULL); const char* env = secure_getenv("PAKFIRE_LOG"); if (env) @@ -1404,8 +1408,10 @@ PAKFIRE_EXPORT pakfire_log_function_t pakfire_log_get_function(Pakfire pakfire) return pakfire->log_function; } -PAKFIRE_EXPORT void pakfire_log_set_function(Pakfire pakfire, pakfire_log_function_t log_function) { +PAKFIRE_EXPORT void pakfire_log_set_function(Pakfire pakfire, + pakfire_log_function_t log_function, void* data) { pakfire->log_function = log_function; + pakfire->log_data = data; } PAKFIRE_EXPORT int pakfire_log_get_priority(Pakfire pakfire) {