]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
cli: save history on ctrl-d with editline
authorPablo Neira Ayuso <pablo@netfilter.org>
Wed, 24 Nov 2021 22:15:19 +0000 (23:15 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Tue, 30 Nov 2021 19:48:40 +0000 (20:48 +0100)
Missing call to cli_exit() to save the history when ctrl-d is pressed in
nft -i.

Moreover, remove call to rl_callback_handler_remove() in cli_exit() for
editline cli since it does not call rl_callback_handler_install().

Fixes: bc2d5f79c2ea ("cli: use plain readline() interface with libedit")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/cli.c

index 8729176680cfbb27f72afb0d315e494f660a5c0d..11fc85abeaa2bd1b9df3fb61ce7f9079c6fb228d 100644 (file)
--- a/src/cli.c
+++ b/src/cli.c
@@ -152,13 +152,6 @@ static void cli_complete(char *line)
        nft_run_cmd_from_buffer(cli_nft, line);
        free(line);
 }
-
-void cli_exit(void)
-{
-       rl_callback_handler_remove();
-       rl_deprep_terminal();
-       write_history(histfile);
-}
 #endif
 
 #if defined(HAVE_LIBREADLINE)
@@ -188,6 +181,13 @@ int cli_init(struct nft_ctx *nft)
        return 0;
 }
 
+void cli_exit(void)
+{
+       rl_callback_handler_remove();
+       rl_deprep_terminal();
+       write_history(histfile);
+}
+
 #elif defined(HAVE_LIBEDIT)
 
 int cli_init(struct nft_ctx *nft)
@@ -212,10 +212,17 @@ int cli_init(struct nft_ctx *nft)
 
                cli_complete(line);
        }
+       cli_exit();
 
        return 0;
 }
 
+void cli_exit(void)
+{
+       rl_deprep_terminal();
+       write_history(histfile);
+}
+
 #else /* HAVE_LINENOISE */
 
 int cli_init(struct nft_ctx *nft)