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
