]> git.ipfire.org Git - pakfire.git/commitdiff
pakfire: Allow setting log function on creation
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 15 Jun 2021 11:30:35 +0000 (11:30 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 15 Jun 2021 11:30:35 +0000 (11:30 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/_pakfire/pakfire.c
src/libpakfire/include/pakfire/pakfire.h
src/libpakfire/pakfire.c

index 4ec0f807177e8aabbbbf058765aec3a91fbbf481..a01c65b9f012839f701e1ec5980b50f0dd41a12f 100644 (file)
@@ -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
index b39097bfca8b95857c286c3cd4f0a45932e4571a..26c79a7404a297f0c930ddd00ab9987ffbbb4e43 100644 (file)
@@ -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);
 
index 7e720d2e8b17f12ed5af7c646f069806bf54d1d0..1a33ca82e09fe266405ce1af19e5aaa7b240971e 100644 (file)
@@ -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) {