diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-14 19:10:49 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-14 19:10:49 +0000 |
commit | cfe5e3905201349e9cf3f95d52ff4bd100bde37d (patch) | |
tree | d0baf160cbee3195249d095f85e52d20c21acf02 /misc-utils/lsfd-counter.c | |
parent | Initial commit. (diff) | |
download | util-linux-cfe5e3905201349e9cf3f95d52ff4bd100bde37d.tar.xz util-linux-cfe5e3905201349e9cf3f95d52ff4bd100bde37d.zip |
Adding upstream version 2.39.3.upstream/2.39.3
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'misc-utils/lsfd-counter.c')
-rw-r--r-- | misc-utils/lsfd-counter.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/misc-utils/lsfd-counter.c b/misc-utils/lsfd-counter.c new file mode 100644 index 0000000..55f0fde --- /dev/null +++ b/misc-utils/lsfd-counter.c @@ -0,0 +1,56 @@ +/* + * lsfd-counter.c - counter implementation used in --summary option + * + * Copyright (C) 2021 Red Hat, Inc. + * Copyright (C) 2021 Masatake YAMATO <yamato@redhat.com> + * + * This file may be redistributed under the terms of the + * GNU Lesser General Public License. + */ + +#include "lsfd-counter.h" + +#include "xalloc.h" + +struct lsfd_counter { + char *name; + size_t value; + struct lsfd_filter *filter; +}; + +struct lsfd_counter *lsfd_counter_new(const char *const name, struct lsfd_filter *filter) +{ + struct lsfd_counter *counter = xmalloc(sizeof(struct lsfd_counter)); + + counter->name = xstrdup(name); + counter->value = 0; + counter->filter = filter; + + return counter; +} + +void lsfd_counter_free(struct lsfd_counter *counter) +{ + lsfd_filter_free(counter->filter); + free(counter->name); + free(counter); +} + +bool lsfd_counter_accumulate(struct lsfd_counter *counter, struct libscols_line *ln) +{ + if (lsfd_filter_apply(counter->filter, ln)) { + counter->value++; + return true; + } + return false; +} + +const char *lsfd_counter_name(struct lsfd_counter *counter) +{ + return counter->name; +} + +size_t lsfd_counter_value(struct lsfd_counter *counter) +{ + return counter->value; +} |