From: Michael Tremer Date: Wed, 31 Aug 2022 18:32:27 +0000 (+0200) Subject: Add function to capture printed content and store it. X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=37ad9a8586585503a9a904e99257e1dc6ca0736d;p=people%2Fstevee%2Fperl-ipset.git Add function to capture printed content and store it. Signed-off-by: Michael Tremer Signed-off-by: Stefan Schantl --- 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 *