Auto-complete keywords (for, where, filter, ...) and symbol names (names
of protocols, tables, ...). Client can request daemon for list of all
symbols using new cli command `refresh symbols`.
Next changes:
- Behavior is configured by *.Y files using flags CLI_SF_*
- The file doc/reply_codes was moved to header file
client/reply_codes.h.
- Share birdcl input_read() function code for birdc non-interactive
mode.
- BIRD daemon notifies the client about new symbol set.
- BIRD pushes notification to the client about new symbol set and then
the client should request a package with all symbols (`refresh
symbols`).
- File-based history of previous commands(). In interactive mode in
birdc is stored history of all commands in ~/.birdc_history file.
- BIRD daemon sends notification to clients about interface updates
- Maintains a list of all connected cli clients to daemon. Daemon
sends to all cli clients notification about interfaces states up and
down.
The BIRD client code is restructured that most of the code (including
main function) is shared in client.c, while birdc.c and birdcl.c contain
just I/O-specific callbacks. This removes all duplicated code from
variant-specific files.
Restructure client/ subdir. Add two different flavors of client.
The full featured birdc client code is in client/birdc/.
The new light client birtcl is in client/birdcl/.
Common sources of both clients are directly in client/.
Rework on-line auto-completion in client/command.c to conditionally turn off
ncurses-specific code.
Add lightweight client without libreadline and ncurses dependencies - birdcl.
The birdcl lacks support of history, on-line auto-completion and there
are different implementations of "more" functionality and help on '?' press.
New client operates in canonical terminal mode (apart from "more" display)
and therefore all commands have to be executed by a return key including help
commands (called by '?' character in the end of the line).
Apart from these limitations the interaction style should be the same as
for the full client - birdc.
Build of birdcl is always on (independent on --enable-client parameter).
Pull out routines for interacting with the server and interpreting
internal commands which are not dependent on libreadline and
ncurses libraries.
This is a preparation step for a new lightweight birdc client.
(the current version UNIX-specific) anyway, so it's useless to try splitting it
to sysdep and generic part. Instead of this, configure script decides (based on
system type and user's wish) what (if any) client should be built and what
autoconfiguration it requires. Also, the client provides its own die/bug/...
functions.