X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Ftools%2Fsysdb%2Fmain.c;h=bc34a480f74ef7ebc9100a91a877aea97f6f2163;hb=78fe39914ac0b2faa559a42eff7e9662085c335d;hp=0639e5f74829042a4e3a8532b97f6ee74d853236;hpb=edba65afec8c547fb6c02346eda68595ce9a5839;p=sysdb.git diff --git a/src/tools/sysdb/main.c b/src/tools/sysdb/main.c index 0639e5f..bc34a48 100644 --- a/src/tools/sysdb/main.c +++ b/src/tools/sysdb/main.c @@ -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" @@ -163,15 +165,13 @@ get_homedir(const char *username) int main(int argc, char **argv) { - sdb_client_t *client; - const char *host = NULL; const char *user = NULL; 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"); @@ -209,14 +209,14 @@ main(int argc, char **argv) exit(1); } - client = sdb_client_create(host); - if (! client) { + input.client = sdb_client_create(host); + if (! input.client) { sdb_log(SDB_LOG_ERR, "Failed to create client object"); exit(1); } - if (sdb_client_connect(client, user)) { + if (sdb_client_connect(input.client, user)) { sdb_log(SDB_LOG_ERR, "Failed to connect to SysDBd"); - sdb_client_destroy(client); + sdb_client_destroy(input.client); exit(1); } @@ -238,31 +238,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.input = sdb_strbuf_create(2048); + sdb_input_init(&input); + sdb_input_mainloop(); if (hist_file[0] != '\0') { errno = 0; @@ -273,7 +251,8 @@ main(int argc, char **argv) } } - sdb_client_destroy(client); + sdb_client_destroy(input.client); + sdb_strbuf_destroy(input.input); return 0; } /* main */