Code

sysdb: Use the flex scanner generator for reading input.
[sysdb.git] / src / tools / sysdb / main.c
index 0639e5f74829042a4e3a8532b97f6ee74d853236..d895de7184cb9bdb7cea1bf8b98db2939151e272 100644 (file)
@@ -29,6 +29,8 @@
 #      include "config.h"
 #endif /* HAVE_CONFIG_H */
 
+#include "tools/sysdb/input.h"
+
 #include "client/sysdb.h"
 #include "client/sock.h"
 #include "utils/error.h"
@@ -76,6 +78,8 @@
 #      define DEFAULT_SOCKET "unix:"LOCALSTATEDIR"/run/sysdbd.sock"
 #endif
 
+extern int yylex(void);
+
 static void
 exit_usage(char *name, int status)
 {
@@ -171,7 +175,7 @@ main(int argc, char **argv)
        const char *homedir;
        char hist_file[1024] = "";
 
-       sdb_strbuf_t *buf;
+       sdb_input_t input = SDB_INPUT_INIT;
 
        while (42) {
                int opt = getopt(argc, argv, "H:U:hV");
@@ -238,31 +242,9 @@ main(int argc, char **argv)
                }
        }
 
-       buf = sdb_strbuf_create(1024);
-
-       while (42) {
-               const char *prompt = "sysdb=> ";
-               const char *query;
-               char *input;
-
-               if (sdb_strbuf_len(buf))
-                       prompt = "sysdb-> ";
-
-               input = readline(prompt);
-
-               if (! input)
-                       break;
-
-               sdb_strbuf_append(buf, input);
-               free(input);
-
-               query = sdb_strbuf_string(buf);
-               if (! strchr(query, (int)';'))
-                       continue;
-
-               /* XXX */
-               sdb_strbuf_clear(buf);
-       }
+       input.buf = sdb_strbuf_create(2048);
+       sdb_input_set(&input);
+       yylex();
 
        if (hist_file[0] != '\0') {
                errno = 0;