X-Git-Url: http://git.tuebingen.mpg.de/?p=adu.git;a=blobdiff_plain;f=interactive.c;h=036f7a84d1a861eb0a48b21583854cb6fe0a068a;hp=8b27c0c79837c733b9f2c056e27ed7d5e5c7097a;hb=de525e7c5b6592b41f8681f919d5d53406801861;hpb=15c765b696accdce0b20c339876e21e6e5967a52 diff --git a/interactive.c b/interactive.c index 8b27c0c..036f7a8 100644 --- a/interactive.c +++ b/interactive.c @@ -1,10 +1,9 @@ #include "adu.h" +#include "format.h" +#include "select.h" #include "string.h" #include "error.h" #include "cmdline.h" -#include "select.cmdline.h" - -struct select_args_info select_conf; struct interactive_command { const char *name; @@ -12,11 +11,15 @@ struct interactive_command { const char *desc; }; +static struct uid_range *admissible_uids; +static struct format_info *fi; + #define INTERACTIVE_COMMANDS \ INTERACTIVE_COMMAND(dump, "dump the current configuration") \ INTERACTIVE_COMMAND(set, "change the current configuration") \ INTERACTIVE_COMMAND(reset, "reset configuration to defaults") \ INTERACTIVE_COMMAND(help, "show list of commands and one-line descriptions") \ + INTERACTIVE_COMMAND(run, "start the query according to the current options") #define INTERACTIVE_COMMAND(name, desc) \ @@ -45,6 +48,11 @@ static int read_input_line(char *line, size_t size) return fgets(line, size, stdin)? 1 : -1; } +static int icom_run(__a_unused char *line) +{ + return run_select_query(admissible_uids, fi); +} + static int icom_help(__a_unused char *line) { struct interactive_command *c; @@ -60,8 +68,6 @@ static int icom_reset(__a_unused char *line) return 1; } -static struct uid_range *admissible_uids; - static int icom_set(char *line) { struct select_cmdline_parser_params params = { @@ -71,15 +77,11 @@ static int icom_set(char *line) .check_ambiguity = 0, .print_errors = 1 }; - if (select_cmdline_parser_string_ext(line, &select_conf, "select", - ¶ms)) - return -E_SYNTAX; - return parse_uid_arg(select_conf.uid_arg, &admissible_uids); + return parse_select_options(line, ¶ms, &admissible_uids, &fi); } static int icom_dump(__a_unused char *line) { - ERROR_LOG("dump: %s\n", select_conf.format_arg); select_cmdline_parser_dump(stdout, &select_conf); return 1; } @@ -111,6 +113,7 @@ int com_interactive(void) char line[255]; int ret = 1; + select_cmdline_parser_init(&select_conf); while (read_input_line(line, sizeof(line)) >= 0) { size_t len = strlen(line); if (!len)