Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=2e20840257520306e786ea197209ccfbc2583b3f

commit 2e20840257520306e786ea197209ccfbc2583b3f
Author: Michel Hermier <[email protected]>
Date:   Mon Sep 29 17:06:55 2014 +0200

libpacman: Make logging facilities more C++ with classes.

diff --git a/lib/libpacman/util/fdispatchlogger.cpp 
b/lib/libpacman/util/fdispatchlogger.cpp
index f67ab39..f1eec5e 100644
--- a/lib/libpacman/util/fdispatchlogger.cpp
+++ b/lib/libpacman/util/fdispatchlogger.cpp
@@ -26,36 +26,21 @@

#include "util/fptrlist.h"

-struct FDispatchLogger
-{
-       FLogger base;
-};
-
static
void f_dispatchlogger_log(unsigned char flag, const char *message, void *data)
{
FPtrList *list = (FPtrList *)data;

for (auto it = f_ptrlist_first(list), end = f_ptrlist_end(list); it != end; it 
= it->next()) {
-               f_logger_logs((FLogger *)f_ptrlistitem_data(it), flag, message);
+               ((FLogger *)f_ptrlistitem_data(it))->logs(flag, message);
}
}

-FDispatchLogger *f_dispatchlogger_new(unsigned char mask)
-{
-       FDispatchLogger *dispatchlogger;
-
-       if((dispatchlogger = new FDispatchLogger()) == NULL) {
-                       return NULL;
-       }
-       f_logger_init(&dispatchlogger->base, mask, f_dispatchlogger_log, 
f_ptrlist_new());
-       return dispatchlogger;
-}
+FDispatchLogger::FDispatchLogger(unsigned char mask)
+       : FLogger(mask, f_dispatchlogger_log, f_ptrlist_new())
+{ }

-void f_dispatchlogger_delete(FDispatchLogger *dispatchlogger)
-{
-       f_logger_fini(&dispatchlogger->base);
-       free(dispatchlogger);
-}
+FDispatchLogger::~FDispatchLogger()
+{ }

/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/util/fdispatchlogger.h 
b/lib/libpacman/util/fdispatchlogger.h
index a62a88f..3519ccc 100644
--- a/lib/libpacman/util/fdispatchlogger.h
+++ b/lib/libpacman/util/fdispatchlogger.h
@@ -25,17 +25,14 @@

#include "util/flogger.h"

-#ifdef __cplusplus
-extern "C" {
-#endif
-typedef struct FDispatchLogger FDispatchLogger;
+class FDispatchLogger
+       : public FLogger
+{
+public:
+       FDispatchLogger(unsigned char mask);
+       ~FDispatchLogger();
+};

-FDispatchLogger *f_dispatchlogger_new(unsigned char mask);
-void f_dispatchlogger_delete(FDispatchLogger *dispatchlogger);
-
-#ifdef __cplusplus
-}
-#endif
#endif /* F_DISPATCHLOGGER_H */

/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/util/ffilelogger.cpp 
b/lib/libpacman/util/ffilelogger.cpp
index e0f7c57..9487796 100644
--- a/lib/libpacman/util/ffilelogger.cpp
+++ b/lib/libpacman/util/ffilelogger.cpp
@@ -23,7 +23,6 @@

#include <stdio.h>
#include <stdarg.h>
-#include <syslog.h>

/* pacman-g2 */
#include "util/ffilelogger.h"
@@ -31,11 +30,6 @@

#include "fstdlib.h"

-struct FFileLogger
-{
-       FLogger base;
-};
-
static
void f_filelogger_log(unsigned char flag, const char *message, void *data)
{
@@ -50,23 +44,11 @@ void f_filelogger_log(unsigned char flag, const char 
*message, void *data)
fflush(file);
}

-FFileLogger *f_filelogger_new(unsigned char mask, FILE *file)
-{
-       FFileLogger *filelogger;
-
-       ASSERT(file != NULL, return NULL);
+FFileLogger::FFileLogger(unsigned char mask, FILE *file)
+       : FLogger(mask, f_filelogger_log, file)
+{ }

-       if ((filelogger = f_zalloc(sizeof(*filelogger))) == NULL) {
-                       return NULL;
-       }
-       f_logger_init(&filelogger->base, mask, f_filelogger_log, file);
-       return filelogger;
-}
-
-void f_filelogger_delete(FFileLogger *filelogger)
-{
-       f_logger_fini(&filelogger->base);
-       free(filelogger);
-}
+FFileLogger::~FFileLogger()
+{ }

/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/util/ffilelogger.h b/lib/libpacman/util/ffilelogger.h
index 4176da1..12be91d 100644
--- a/lib/libpacman/util/ffilelogger.h
+++ b/lib/libpacman/util/ffilelogger.h
@@ -25,10 +25,13 @@

#include "util/flogger.h"

-typedef struct FFileLogger FFileLogger;
-
-FFileLogger *f_filelogger_new(unsigned char mask, FILE *file);
-void f_filelogger_delete(FFileLogger *filelogger);
+class FFileLogger
+       : public FLogger
+{
+public:
+       FFileLogger(unsigned char mask, FILE *file);
+       ~FFileLogger();
+};

#endif /* F_FILELOGGER_H */

diff --git a/lib/libpacman/util/flog.cpp b/lib/libpacman/util/flog.cpp
index 76ad461..eadc40a 100644
--- a/lib/libpacman/util/flog.cpp
+++ b/lib/libpacman/util/flog.cpp
@@ -50,7 +50,7 @@ void f_logs(unsigned char flag, const char *message)
return;
}

-       f_logger_logs(_f_sys_logger, flag, message);
+       _f_sys_logger->logs(flag, message);
}

void f_vlog(unsigned char flag, const char *format, va_list ap)
@@ -59,7 +59,7 @@ void f_vlog(unsigned char flag, const char *format, va_list 
ap)
return;
}

-       f_logger_vlog(_f_sys_logger, flag, format, ap);
+       _f_sys_logger->vlog(flag, format, ap);
}

/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/util/flogger.cpp b/lib/libpacman/util/flogger.cpp
index 520d20d..f387026 100644
--- a/lib/libpacman/util/flogger.cpp
+++ b/lib/libpacman/util/flogger.cpp
@@ -31,72 +31,43 @@
#include "fstdlib.h"
#include "fstring.h"

-FLogger *f_logger_new(unsigned char mask, FLogFunc fn, void *data)
-{
-       FLogger *logger;
-
-       if ((logger = f_zalloc(sizeof(*logger))) == NULL) {
-                       return NULL;
-       }
-       f_logger_init(logger, mask, fn, data);
-       return logger;
-}
-
-void f_logger_delete(FLogger *logger)
-{
-       f_logger_fini(logger);
-       free(logger);
-}
+FLogger::FLogger(unsigned char mask, FLogFunc fn, void *data)
+       : m_mask(mask), m_fn(fn), m_data(data)
+{ }

-int f_logger_init(FLogger *logger, unsigned char mask, FLogFunc fn, void *data)
-{
-       if(logger == NULL) {
-               return -1;
-       }
-
-       logger->mask = mask;
-       logger->fn = fn;
-       logger->data = data;
-       return 0;
-}
-
-int f_logger_fini(FLogger *logger)
-{
-       return 0;
-}
+FLogger::~FLogger()
+{ }

-void f_logger_log(FLogger *logger, unsigned char flag, const char *format, ...)
+void FLogger::log(unsigned char flag, const char *format, ...)
{
va_list ap;

va_start(ap, format);
-       f_logger_vlog(logger, flag, format, ap);
+       vlog(flag, format, ap);
va_end(ap);
}

-void f_logger_logs(FLogger *logger, unsigned char flag, const char *s)
+void FLogger::logs(unsigned char flag, const char *s)
{
-       if(logger == NULL ||
-                       logger->fn == NULL ||
-                       (flag & logger->mask) == 0) {
+       if(m_fn == NULL ||
+                       (flag & m_mask) == 0) {
return;
}

-       logger->fn(flag, s, logger->data);
+       m_fn(flag, s, m_data);
}

-void f_logger_vlog(FLogger *logger, unsigned char flag, const char *format, 
va_list ap)
+void FLogger::vlog(unsigned char flag, const char *format, va_list ap)
{
char str[LOG_STR_LEN];

-       if(logger == NULL ||
-                       logger->fn == NULL ||
-                       (flag & logger->mask) == 0) {
+       if(m_fn == NULL ||
+                       (flag & m_mask) == 0) {
return;
}

vsnprintf(str, LOG_STR_LEN, format, ap);
-       f_logger_logs(logger, flag, f_strtrim(str));
+       logs(flag, f_strtrim(str));
}

/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/util/flogger.h b/lib/libpacman/util/flogger.h
index e3feeb2..8deaaca 100644
--- a/lib/libpacman/util/flogger.h
+++ b/lib/libpacman/util/flogger.h
@@ -28,22 +28,21 @@
typedef struct FLogger FLogger;
typedef void (*FLogFunc)(unsigned char flag, const char *message, void *data);

-struct FLogger {
-       unsigned char mask;
-       FLogFunc fn;
-       void *data;
+class FLogger {
+public:
+       FLogger(unsigned char mask, FLogFunc fn, void *data);
+       virtual ~FLogger();
+
+       void log(unsigned char flag, const char *format, ...);
+       void logs(unsigned char flag, const char *s);
+       void vlog(unsigned char flag, const char *format, va_list ap);
+
+protected:
+       unsigned char m_mask;
+       FLogFunc m_fn;
+       void *m_data;
};

-FLogger *f_logger_new(unsigned char mask, FLogFunc fn, void *data);
-void f_logger_delete(FLogger *logger);
-
-int f_logger_init(FLogger *logger, unsigned char mask, FLogFunc fn, void 
*data);
-int f_logger_fini(FLogger *logger);
-
-void f_logger_log(FLogger *logger, unsigned char flag, const char *format, 
...);
-void f_logger_logs(FLogger *logger, unsigned char flag, const char *s);
-void f_logger_vlog(FLogger *logger, unsigned char flag, const char *format, 
va_list ap);
-
#endif /* F_LOGGER_H */

/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/util/fsyslogger.cpp 
b/lib/libpacman/util/fsyslogger.cpp
index f4ebff3..5186523 100644
--- a/lib/libpacman/util/fsyslogger.cpp
+++ b/lib/libpacman/util/fsyslogger.cpp
@@ -30,32 +30,17 @@

#include "fstdlib.h"

-struct FSysLogger
-{
-       FLogger base;
-};
-
static
void f_syslogger_log(unsigned char flag, const char *message, void *data)
{
syslog(LOG_WARNING, "%s", message);
}

-FSysLogger *f_syslogger_new(unsigned char mask)
-{
-       FSysLogger *syslogger;
+FSysLogger::FSysLogger(unsigned char mask)
+       : FLogger(mask, f_syslogger_log, NULL)
+{ }

-       if ((syslogger = f_zalloc(sizeof(*syslogger))) == NULL) {
-                       return NULL;
-       }
-       f_logger_init(&syslogger->base, mask, f_syslogger_log, NULL);
-       return syslogger;
-}
-
-void f_syslogger_delete(FSysLogger *syslogger)
-{
-       f_logger_fini(&syslogger->base);
-       free(syslogger);
-}
+FSysLogger::~FSysLogger()
+{ }

/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/util/fsyslogger.h b/lib/libpacman/util/fsyslogger.h
index 6c44c1b..78bbbb7 100644
--- a/lib/libpacman/util/fsyslogger.h
+++ b/lib/libpacman/util/fsyslogger.h
@@ -23,10 +23,13 @@

#include "util/flogger.h"

-typedef struct FSysLogger FSysLogger;
-
-FSysLogger *f_syslogger_new(unsigned char mask);
-void f_syslogger_delete(FSysLogger *syslogger);
+class FSysLogger
+       : public FLogger
+{
+public:
+       FSysLogger(unsigned char mask);
+       ~FSysLogger();
+};

#endif /* F_SYSLOGGER_H */
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to