From ce86ddd4c05ed121d00644d6a250b04d4ad2c69a Mon Sep 17 00:00:00 2001 From: Alex 'AdUser' Z Date: Sun, 28 Aug 2016 15:18:39 +1000 Subject: [PATCH] + f2b_filter_stats() --- src/filter.c | 18 ++++++++++++++++++ src/filter.h | 1 + 2 files changed, 19 insertions(+) diff --git a/src/filter.c b/src/filter.c index 7594cde..8ecbc64 100644 --- a/src/filter.c +++ b/src/filter.c @@ -171,3 +171,21 @@ f2b_filter_error(f2b_filter_t *filter) { assert(filter != NULL); return filter->error(filter->cfg); } + +void +f2b_filter_stats(f2b_filter_t *filter, char *res, size_t ressize) { + assert(filter != NULL); + assert(res != NULL); + bool reset = true; + char *pattern; + int matches; + char buf[256]; + const char *fmt = + "- pattern: %s\n" + " matches: %d\n"; + while (filter->stats(filter->cfg, &matches, &pattern, reset)) { + snprintf(buf, sizeof(buf), fmt, pattern, matches); + strlcat(res, buf, ressize); + reset = false; + } +} diff --git a/src/filter.h b/src/filter.h index 01db0c5..5fa0671 100644 --- a/src/filter.h +++ b/src/filter.h @@ -29,5 +29,6 @@ void f2b_filter_destroy(f2b_filter_t *b); bool f2b_filter_append(f2b_filter_t *b, const char *pattern); bool f2b_filter_match(f2b_filter_t *b, const char *line, char *buf, size_t buf_size); const char * f2b_filter_error(f2b_filter_t *b); +void f2b_filter_stats (f2b_filter_t *b, char *res, size_t ressize); #endif /* F2B_FILTER_H_ */