Hi! A pal of mine noticed that `echo <cmd> ? | birdc` executes the command <cmd> after showing it's help text is shown. I later confirmed that `birdcl` in comparison to `birdc` does not show this behaviour.
Since this is a non intuitive side effect on birdc's side, here a proposed patch to align birdc and birdcl's behaviour. Please advise if fixing it on another part might be preferred. I chose birdc.c, to minimize the changes needed. Below a full report: -------------------------------------------- # Scenario ## Setup ./bird -l ## birdcl no side effect bird (v2.14)> echo 'restrict ?' | ./birdcl -l BIRD v2.14 ready. bird> restrict ? restrict Restrict current CLI session to safe commands bird> bird (v2.14)> ## birdc side effect bird (v2.14)> echo 'restrict ?' | ./birdc -l BIRD v2.14 ready. bird> restrict ? restrict Restrict current CLI session to safe commands bird> restrict Access restricted bird (v2.14)> # Expected behaviour Like birdcl, just show help and exit # Actual behaviour Executes the <cmd> after showing the help # Tested version BIRD v2.14 (birdc.c last edited on 2017, so I guess this is on all versions the same) --------------------------------------------
diff --git a/client/birdc.c b/client/birdc.c index f1aea2fe..a415d20c 100644 --- a/client/birdc.c +++ b/client/birdc.c @@ -136,6 +136,9 @@ input_help(int arg, int key UNUSED) input_start_list(); cmd_help(rl_line_buffer, rl_point); rl_undo_command(1, 0); + /* <cmd> ? is "internal". Do not submit in non interactive sessiosn */ + if (!interactive) + rl_replace_line("", 0); input_stop_list(); return 0; }