index a88b2266147de67a659cd383e802a0a61701f7ce..2a2d1707101404169febb67d0ac643aaa98ec649 100644 (file)
--- a/src/tools/sysdb/input.c
+++ b/src/tools/sysdb/input.c
return;
}
- if (sdb_client_eof(sysdb_input->client))
- sdb_input_reconnect();
-
sdb_strbuf_append(sysdb_input->input, "%s\n", line);
free(line);
return (ssize_t)(sdb_strbuf_len(sysdb_input->input) - len);
}
- if (sysdb_input->query_len)
- prompt = "sysdb-> ";
+ if (sysdb_input->have_input)
+ prompt = " -> ";
if (sdb_client_eof(sysdb_input->client))
prompt = "!-> ";
/* some response / error message from the server pending */
/* XXX: clear current line */
printf("\n");
- sdb_command_print_reply(sysdb_input->client);
+ sdb_command_print_reply(sysdb_input);
if (sdb_client_eof(sysdb_input->client)) {
rl_callback_handler_remove();
/* XXX */
- printf("Remote side closed the connection.\n");
+ sdb_log(SDB_LOG_ERR, "Remote side closed the connection.");
/* return EOF -> restart scanner */
return 0;
}
return 0;
} /* sdb_input_init */
+void
+sdb_input_reset(sdb_input_t *input)
+{
+ sdb_input_t reset = SDB_INPUT_INIT;
+
+ if (! input)
+ return;
+
+ if (input->client)
+ sdb_client_destroy(input->client);
+ if (input->user)
+ free(input->user);
+ if (input->input)
+ sdb_strbuf_destroy(input->input);
+
+ *input = reset;
+} /* sdb_input_reset */
+
int
sdb_input_mainloop(void)
{
int
sdb_input_exec_query(void)
{
- char *query = sdb_command_exec(sysdb_input);
+ char *query = NULL;
HIST_ENTRY *hist;
const char *prev = NULL;
+ if (! sysdb_input->have_input) {
+ /* empty line */
+ if (sdb_client_eof(sysdb_input->client))
+ sdb_input_reconnect();
+ return 0;
+ }
+
+ query = sdb_command_exec(sysdb_input);
if (! query)
return -1;
{
sdb_client_close(sysdb_input->client);
if (sdb_client_connect(sysdb_input->client, sysdb_input->user)) {
- printf("Failed to reconnect to SysDBd.\n");
+ sdb_log(SDB_LOG_ERR, "Failed to reconnect to SysDBd");
return -1;
}
- printf("Successfully reconnected to SysDBd.\n");
+ sdb_log(SDB_LOG_INFO, "Successfully reconnected to SysDBd");
+ sdb_command_print_server_version(sysdb_input);
return 0;
} /* sdb_input_reconnect */