From 37ad9a8586585503a9a904e99257e1dc6ca0736d Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 31 Aug 2022 20:32:27 +0200 Subject: [PATCH] Add function to capture printed content and store it. Signed-off-by: Michael Tremer Signed-off-by: Stefan Schantl --- IPSet.xs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/IPSet.xs b/IPSet.xs index 82a9810..507f94a 100644 --- a/IPSet.xs +++ b/IPSet.xs @@ -11,6 +11,38 @@ #include #include +static int print_outfm_to_string(struct ipset_session *session, + void *p, + const char *fmt, ...) +{ + char** output = (char**)p; + va_list args; + int r; + + char* buffer = NULL; + + va_start(args, fmt); + r = vasprintf(&buffer, fmt, args); + va_end(args); + + if (r < 0) + goto ERROR; + + // Append + r = asprintf(output, "%s%s", (output && *output) ? *output : "", buffer); + if (r < 0) + goto ERROR; + + // Success + r = 0; + +ERROR: + if (buffer) + free(buffer); + + return r; +} + MODULE = IPSet PACKAGE = IPSet struct ipset_session * -- 2.47.3