Merge commit 'fml/master'
[adu.git] / interactive.c
index 8b27c0c..494a4f8 100644 (file)
@@ -4,19 +4,20 @@
 #include "cmdline.h"
 #include "select.cmdline.h"
 
-struct select_args_info select_conf;
-
 struct interactive_command {
        const char *name;
        int (*handler)(char *);
        const char *desc;
 };
 
+static struct uid_range *admissible_uids;
+
 #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 +46,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);
+}
+
 static int icom_help(__a_unused char *line)
 {
        struct interactive_command *c;
@@ -60,8 +66,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 = {
@@ -111,6 +115,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)