Move gengetopt input files to m4 directory. This separates the gengetopt input directory from its output directory. All gengetopt m4 file are moved to the new m4/gengetopt directory. As a consequence of this cleanup, we may get rid of the .gitignore file for the generated ggo files, which is a good thing as it was hard to keep it up to date.
Differentiate between ggo_dir and m4_ggo dir. The former is the output directory for the generated ggo files while the latter is the input directory containing the .m4 files. Separating the two allows to switch to different directories for input and output files.
server.ggo depends on config_file.m4. server.m4 includes config_file.m4 but this dependency was not listed in the ggo makefile.
gui: Add missing dependency on included m4 file to ggo makefile. gui.ggo depends on config_file.m4, but this dependency was not listed in the makefile.
Interactive mode for para_audioc. This is in the same spirit as the previous commit which added interactive session support for para_client. It implements command completion and command line history for para_audioc. Just as for para_client the new completion code in audioc.c is compiled in only if libreadline was found by configure. In this case para_audioc starts an interactive session if no command was given at the command line.
client: Implement interactive mode. This makes para_client enter an interactive session when started with no command. Command line history and command completion are available in interactive sessions. This populates the previously empty files interactive.h and interactive.c which contain the readline/interactive specific part. Everything in these files is independent of para_client. Conversely, client.c and client_common.c are independent of readline. The public API defined in interactive.h was designed to be reused from other applications. In fact, a subsequent commit changes para_audioc to offer interactive sessions as well.
configure: Check for gengetopt. Print an error message at configure time if gengetopt is not installed. This patch also modifies the commands that call gengetopt in ggo/makefile to use the executable which was found by configure.
gui: Don't exit without shutting down curses on config reload. Currently, if a config file containing errors is being reloaded, gui_cmdline_parser_ext() calls exit() which leaves the terminal in an unusable state because para_gui had no chance to call endwin() in order to reset the terminal. Fix this flaw by instructing gengetopt to generate code that does not exit on errors. We can still tell that the command line or the config file contained errors by looking at the return value of the various parsers.
write: Kill non-btr mode. Yes, this breaks the build on Macs. Sue me.
Add option for activating new buffer tree code to para_recv and para_write. ATM this option is ignored.
Implement --log-timing for server and audiod. This adds another option to include milliseconds in the output of each log message.
Makefile.in: Introduce quiet mode and use it by default. Verbose mode can be chosen via "make V=1".
Use separate directory for objects.
Store gengetopt commandline files in a separate dir. Quite a bit of churn but it's hopefully worth the trouble.
Rewrite grab-client code. This gets rid of the gengetopt grab client command line parser and all the special treatment it caused.
Simplify ggo/makefile. Use a define rather than shell code to compute the options to gengetopt.
Don't let make write the filename into the output The 'cd' output in the command echoed the directory into the output, which is not welcome in the output file (gengetopt did not like that).
Use symbolic names for loglevels and clean up the ggo mess. We now use m4 to generate the ggo files, which allows to get rid of a lot of duplicated command line options and improves the readability of the man pages.