Code

sysdb: Do an attempt to reconnect on all user input.
[sysdb.git] / src / tools / sysdb / input.h
index ef60bf4d22fa47c0f800c60d4c7da9e192daf02a..0aeabf8b7b653197f98ffa0678d13b769e0c21e2 100644 (file)
 
 typedef struct {
        sdb_client_t *client;
+       const char *user;
 
        sdb_strbuf_t *input;
        size_t tokenizer_pos;
        size_t query_len;
+
+       bool interactive;
+       bool eof;
 } sdb_input_t;
 
-#define SDB_INPUT_INIT { NULL, NULL, 0, 0 }
+#define SDB_INPUT_INIT { NULL, NULL, NULL, 0, 0, 1, 0 }
 
 /*
  * sysdb_input:
@@ -54,6 +58,18 @@ extern sdb_input_t *sysdb_input;
 int
 sdb_input_init(sdb_input_t *input);
 
+/*
+ * sdb_input_mainloop:
+ * Wait for and handle all user and server input until end-of-file is read
+ * from the user (on the standard input channel).
+ *
+ * Returns:
+ *  - 0 on success
+ *  - a negative value else
+ */
+int
+sdb_input_mainloop(void);
+
 /*
  * sdb_input_readline:
  * This function is supposed to be used with a flex scanner's YY_INPUT. It
@@ -66,7 +82,7 @@ sdb_input_init(sdb_input_t *input);
  *  - A negative value in case of an error.
  */
 ssize_t
-sdb_input_readline(char *buf, int *n_chars, size_t max_chars);
+sdb_input_readline(char *buf, size_t *n_chars, size_t max_chars);
 
 /*
  * sdb_input_exec_query:
@@ -76,6 +92,14 @@ sdb_input_readline(char *buf, int *n_chars, size_t max_chars);
 int
 sdb_input_exec_query(void);
 
+/*
+ * sdb_input_reconnect:
+ * Let the client reconnect to the server using the settings stored in
+ * sysdb_input.
+ */
+int
+sdb_input_reconnect(void);
+
 #endif /* SYSDB_INPUT_H */
 
 /* vim: set tw=78 sw=4 ts=4 noexpandtab : */