diff --git a/src/tools/sysdb/main.c b/src/tools/sysdb/main.c
index 0639e5f74829042a4e3a8532b97f6ee74d853236..b20e0ca4d65e3f0de245e358459402de54c77bb0 100644 (file)
--- a/src/tools/sysdb/main.c
+++ b/src/tools/sysdb/main.c
# include "config.h"
#endif /* HAVE_CONFIG_H */
+#include "tools/sysdb/input.h"
+
#include "client/sysdb.h"
#include "client/sock.h"
#include "utils/error.h"
# define DEFAULT_SOCKET "unix:"LOCALSTATEDIR"/run/sysdbd.sock"
#endif
-static void
-exit_usage(char *name, int status)
-{
- printf(
-"Usage: %s <options>\n"
-
-"\nOptions:\n"
-" -h display this help and exit\n"
-" -V display the version number and copyright\n"
-
-"\nSysDB client "SDB_CLIENT_VERSION_STRING SDB_CLIENT_VERSION_EXTRA", "
-PACKAGE_URL"\n", basename(name));
- exit(status);
-} /* exit_usage */
-
-static void
-exit_version(void)
-{
- printf("SysDB version "SDB_CLIENT_VERSION_STRING
- SDB_CLIENT_VERSION_EXTRA", built "BUILD_DATE"\n"
- "using libsysdbclient version %s%s\n"
- "Copyright (C) 2012-2013 "PACKAGE_MAINTAINER"\n"
-
- "\nThis is free software under the terms of the BSD license, see "
- "the source for\ncopying conditions. There is NO WARRANTY; not "
- "even for MERCHANTABILITY or\nFITNESS FOR A PARTICULAR "
- "PURPOSE.\n", sdb_client_version_string(),
- sdb_client_version_extra());
- exit(0);
-} /* exit_version */
-
static const char *
get_current_user(void)
{
return result->pw_dir;
} /* get_homedir */
+static void
+exit_usage(char *name, int status)
+{
+ printf(
+"Usage: %s <options>\n"
+
+"\nOptions:\n"
+" -H HOST the host to connect to\n"
+" default: "DEFAULT_SOCKET"\n"
+" -U USER the username to connect as\n"
+" default: %s\n"
+"\n"
+" -h display this help and exit\n"
+" -V display the version number and copyright\n"
+
+"\nSysDB client "SDB_CLIENT_VERSION_STRING SDB_CLIENT_VERSION_EXTRA", "
+PACKAGE_URL"\n", basename(name), get_current_user());
+ exit(status);
+} /* exit_usage */
+
+static void
+exit_version(void)
+{
+ printf("SysDB version "SDB_CLIENT_VERSION_STRING
+ SDB_CLIENT_VERSION_EXTRA", built "BUILD_DATE"\n"
+ "using libsysdbclient version %s%s\n"
+ "Copyright (C) 2012-2014 "PACKAGE_MAINTAINER"\n"
+
+ "\nThis is free software under the terms of the BSD license, see "
+ "the source for\ncopying conditions. There is NO WARRANTY; not "
+ "even for MERCHANTABILITY or\nFITNESS FOR A PARTICULAR "
+ "PURPOSE.\n", sdb_client_version_string(),
+ sdb_client_version_extra());
+ exit(0);
+} /* exit_version */
+
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");
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);
}
}
}
- 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;
}
}
- sdb_client_destroy(client);
+ sdb_client_destroy(input.client);
+ sdb_strbuf_destroy(input.input);
return 0;
} /* main */