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/evaluate.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'src/evaluate.c') diff --git a/src/evaluate.c b/src/evaluate.c index ca9180b7..193ea1c7 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -30,7 +30,6 @@ #include #include -static struct output_ctx octx_debug_dummy; static int expr_evaluate(struct eval_ctx *ctx, struct expr **expr); static const char *byteorder_names[] = { @@ -1777,9 +1776,10 @@ static int expr_evaluate(struct eval_ctx *ctx, struct expr **expr) struct error_record *erec; erec = erec_create(EREC_INFORMATIONAL, &(*expr)->location, "Evaluate %s", (*expr)->ops->name); - erec_print(stdout, erec, ctx->debug_mask); - expr_print(*expr, &octx_debug_dummy); - printf("\n\n"); + erec_print(ctx->octx, erec, ctx->debug_mask); + expr_print(*expr, ctx->octx); + nft_print(ctx->octx, "\n\n"); + erec_destroy(erec); } switch ((*expr)->ops->type) { @@ -2762,9 +2762,10 @@ int stmt_evaluate(struct eval_ctx *ctx, struct stmt *stmt) struct error_record *erec; erec = erec_create(EREC_INFORMATIONAL, &stmt->location, "Evaluate %s", stmt->ops->name); - erec_print(stdout, erec, ctx->debug_mask); - stmt_print(stmt, &octx_debug_dummy); - printf("\n\n"); + erec_print(ctx->octx, erec, ctx->debug_mask); + stmt_print(stmt, ctx->octx); + nft_print(ctx->octx, "\n\n"); + erec_destroy(erec); } switch (stmt->ops->type) { @@ -3452,8 +3453,9 @@ int cmd_evaluate(struct eval_ctx *ctx, struct cmd *cmd) erec = erec_create(EREC_INFORMATIONAL, &cmd->location, "Evaluate %s", cmd_op_to_name(cmd->op)); - erec_print(stdout, erec, ctx->debug_mask); - printf("\n\n"); + erec_print(ctx->octx, erec, ctx->debug_mask); + nft_print(ctx->octx, "\n\n"); + erec_destroy(erec); } ctx->cmd = cmd; -- cgit v1.2.3