path: root/src/rule.c
diff options
authorPhil Sutter <>2017-11-20 16:54:04 +0100
committerPablo Neira Ayuso <>2017-11-22 13:18:34 +0100
commit1be5e6f808e3908ecd13ab68b3fea0739794f02d (patch)
tree1ea3cc4470d41229a04662536746fd6b95773753 /src/rule.c
parentf7828416525122914ccb2fa3b5bf2230fbce9c7d (diff)
libnftables: Ensure output_fp is never NULL
Initialize output_fp to 'stdout' upon context creation and check output stream validity in nft_ctx_set_output(). This allows to drop checks in nft_{gmp_,}print() and do_command_export(). While doing so for the latter, simplify it a bit by using nft_print() which takes care of flushing the output stream. If applications desire to drop all output, they are supposed to open /dev/null and assign that. Signed-off-by: Phil Sutter <> Signed-off-by: Pablo Neira Ayuso <>
Diffstat (limited to 'src/rule.c')
1 files changed, 1 insertions, 5 deletions
diff --git a/src/rule.c b/src/rule.c
index eb91be46..37d99c22 100644
--- a/src/rule.c
+++ b/src/rule.c
@@ -1153,9 +1153,6 @@ static int do_command_export(struct netlink_ctx *ctx, struct cmd *cmd)
struct nftnl_ruleset *rs;
FILE *fp = ctx->octx->output_fp;
- if (!fp)
- return 0;
do {
rs = netlink_dump_ruleset(ctx, &cmd->handle, &cmd->location);
if (rs == NULL && errno != EINTR)
@@ -1163,8 +1160,7 @@ static int do_command_export(struct netlink_ctx *ctx, struct cmd *cmd)
} while (rs == NULL);
nftnl_ruleset_fprintf(fp, rs, cmd->export->format, 0);
- fprintf(fp, "\n");
- fflush(fp);
+ nft_print(ctx->octx, "\n");
return 0;