add logging function
authorEugene Crosser <crosser@average.org>
Wed, 13 Mar 2019 08:27:57 +0000 (09:27 +0100)
committerEugene Crosser <crosser@average.org>
Wed, 13 Mar 2019 08:27:57 +0000 (09:27 +0100)
Makefile [new file with mode: 0644]
include/psmb.h
src/Makefile [new file with mode: 0644]
src/psmb_priv.h
src/psmb_socket.c

diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..62786d6
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,2 @@
+all:
+       make -C src all
index 5092f6a3eaceb117869961e4ba6bf542a8dea5fb..cc320e093a557044848df900a1667d59c8d72d9a 100644 (file)
@@ -8,8 +8,11 @@ typedef struct _psmb_result psmb_result_t;
 
 psmb_ctx_t *psmb_new(void);
 psmb_ctx_t *psmb_new_mm(void *(*malloc)(size_t size),
-                       void (*free)(void *ptr),
-                       void *(*realloc)(void *ptr, size_t size));
+       void (*free)(void *ptr),
+       void *(*realloc)(void *ptr, size_t size));
+psmb_result_t psmb_set_logf(psmb_ctx_t *ctx,
+       void (*logf)(void *log_priv, int priority, const char *format, ...),
+       void *log_priv);
 psmb_result_t psmb_set_pmtu(psmb_ctx_t *ctx, unsigned int pmtu);
 psmb_result_t psmb_set_port(psmb_ctx_t *ctx, unsigned short pmtu);
 psmb_result_t psmb_set_mgrp(psmb_ctx_t *ctx, struct {unsigned char _uc[16];} pfx, unsigned char bits);
@@ -22,8 +25,8 @@ psmb_result_t psmb_ev_wr(psmb_ctx_t *ctx);
 psmb_result_t psmb_ev_ex(psmb_ctx_t *ctx);
 psmb_result_t psmb_subscribe(psmb_ctx_t *ctx, char *channel);
 psmb_result_t psmb_publish(psmb_ctx_t *ctx, char *channel,
-                               void *data, size_t size);
+       void *data, size_t size);
 bool psmb_message(psmb_ctx_t *ctx, char **channel,
-                               void **data, size_t *size);
+       void **data, size_t *size);
 
 #endif
diff --git a/src/Makefile b/src/Makefile
new file mode 100644 (file)
index 0000000..03469ce
--- /dev/null
@@ -0,0 +1,7 @@
+CFLAGS = -pthread -Wall -I../include
+
+all: libpsmb.a
+
+libpsmb.a: psmb_socket.o
+
+psmb_socket.o: psmb_socket.c psmb_priv.h
index 246ad3cff020cae213be96d8aedb40c2fb42f245..464665b2c010c53871325b3635cfd11a390d54ca 100644 (file)
@@ -27,6 +27,8 @@ struct _psmb_ctx {
        void *(*malloc)(size_t size);
        void (*free)(void *ptr);
        void *(*realloc)(void *ptr, size_t size);
+       void (*logf)(void *log_priv, int priority, const char *format, ...);
+       void *log_priv;
        unsigned short port;
        int pmtu;
        /* subscription set here */
index 660a563c375ac8ab5ffcc439ab2b631b09088b6d..4d263526362d5137f5c616d9a2658b8220d0b0dd 100644 (file)
@@ -8,6 +8,8 @@
 #include <psmb.h>
 #include "psmb_priv.h"
 
+static void dummy_log(void *log_priv, int priority, const char *format, ...) {}
+
 psmb_ctx_t *psmb_new(void)
 {
        return psmb_new_mm(malloc, free, realloc);
@@ -23,10 +25,26 @@ psmb_ctx_t *psmb_new_mm(void *(*malloc)(size_t size),
        *ctx = (psmb_ctx_t){
                .fd = -1,
                .malloc = malloc, .free = free, .realloc = realloc,
-               .pmtu = PSMB_DEFAULT_PMTU, .port = PSMB_DEFAULT_PORT};
+               .logf = dummy_log,
+               .pmtu = PSMB_DEFAULT_PMTU,
+               .port = PSMB_DEFAULT_PORT};
        return ctx;
 }
 
+psmb_result_t psmb_set_logf(psmb_ctx_t *ctx,
+       void (*logf)(void *log_priv, int priority, const char *format, ...),
+       void *log_priv)
+{
+       if (ctx->fd == -1) {
+               ctx->logf = logf;
+               ctx->log_priv = log_priv;
+               return (psmb_result_t){PSMB_OK};
+       } else {
+               errno = EBUSY;
+               return (psmb_result_t){PSMB_ERROR};
+       }
+}
+
 psmb_result_t psmb_set_pmtu(psmb_ctx_t *ctx, unsigned int pmtu)
 {
        if (ctx->fd == -1) {