From 881fad86fa4942571c74cdfa89831a2cd25dbe16 Mon Sep 17 00:00:00 2001 From: Phil Sutter Date: Wed, 4 Oct 2017 15:59:32 +0200 Subject: evaluate: Fix debug output When introducing output_fp, debug output in src/evaluate.c was not adjusted and therefore broke. This patch restores eval debug output by applying the following changes: - Change erec_print() and erec_print_list() to take a struct output_ctx pointer as first argument and use output_fp field as destination to print to. - Drop octx_debug_dummy variable and instead use octx pointer from struct eval_ctx for debug output. - Add missing calls to erec_destroy() in eval debug output which should eliminate another mem leak. Fixes: 2535ba7006f22 ("src: get rid of printf") Signed-off-by: Phil Sutter Signed-off-by: Pablo Neira Ayuso --- src/main.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/main.c') diff --git a/src/main.c b/src/main.c index fc79cfaa..b59c932a 100644 --- a/src/main.c +++ b/src/main.c @@ -332,6 +332,7 @@ static int nft_run_cmd_from_buffer(struct nft_ctx *nft, struct parser_state state; LIST_HEAD(msgs); void *scanner; + FILE *fp; parser_init(nft->nf_sock, &nft->cache, &state, &msgs, nft->debug_mask, &nft->output); @@ -341,7 +342,9 @@ static int nft_run_cmd_from_buffer(struct nft_ctx *nft, if (nft_run(nft, nft->nf_sock, scanner, &state, &msgs) != 0) rc = NFT_EXIT_FAILURE; - erec_print_list(stderr, &msgs, nft->debug_mask); + fp = nft_ctx_set_output(nft, stderr); + erec_print_list(&nft->output, &msgs, nft->debug_mask); + nft_ctx_set_output(nft, fp); scanner_destroy(scanner); return rc; @@ -353,6 +356,7 @@ static int nft_run_cmd_from_filename(struct nft_ctx *nft, const char *filename) LIST_HEAD(msgs); void *scanner; int rc; + FILE *fp; rc = cache_update(nft->nf_sock, &nft->cache, CMD_INVALID, &msgs, nft->debug_mask, &nft->output); @@ -370,7 +374,9 @@ static int nft_run_cmd_from_filename(struct nft_ctx *nft, const char *filename) if (nft_run(nft, nft->nf_sock, scanner, &state, &msgs) != 0) rc = NFT_EXIT_FAILURE; err: - erec_print_list(stderr, &msgs, nft->debug_mask); + fp = nft_ctx_set_output(nft, stderr); + erec_print_list(&nft->output, &msgs, nft->debug_mask); + nft_ctx_set_output(nft, fp); scanner_destroy(scanner); return rc; -- cgit v1.2.3