index ef60bf4d22fa47c0f800c60d4c7da9e192daf02a..6002c1f3d5464f992c01bae48aa38b55819a0eae 100644 (file)
--- a/src/tools/sysdb/input.h
+++ b/src/tools/sysdb/input.h
typedef struct {
sdb_client_t *client;
+ char *user;
sdb_strbuf_t *input;
size_t tokenizer_pos;
size_t query_len;
+
+ /* indicates that we've had non-empty input */
+ bool have_input;
+
+ bool interactive;
+ bool eof;
} sdb_input_t;
-#define SDB_INPUT_INIT { NULL, NULL, 0, 0 }
+#define SDB_INPUT_INIT { NULL, NULL, NULL, 0, 0, 0, 1, 0 }
/*
* sysdb_input:
int
sdb_input_init(sdb_input_t *input);
+/*
+ * sdb_input_reset:
+ * Reset the input handler and free all dynamically allocated memory. The
+ * input handler object itself will not be freed.
+ */
+void
+sdb_input_reset(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
* - 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:
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 : */