Code

sysdb: Use non-callback readline mode when non-interactive.
[sysdb.git] / src / tools / sysdb / input.h
index 7fd8d587de8961f70a2107048ca782ed53a39659..ccdce039881ca27893c53e3d5e0cb6ee6ea4cca0 100644 (file)
@@ -37,9 +37,37 @@ typedef struct {
        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, 0, 0, 1, 0 }
+
+/*
+ * sysdb_input:
+ * Input object to be used by the 'sysdb' command line tool.
+ */
+extern sdb_input_t *sysdb_input;
+
+/*
+ * sdb_input_init:
+ * Initialize the input handler.
+ */
+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:
@@ -53,15 +81,15 @@ typedef struct {
  *  - A negative value in case of an error.
  */
 ssize_t
-sdb_input_readline(sdb_input_t *input, char *buf,
-               int *n_chars, size_t max_chars);
+sdb_input_readline(char *buf, size_t *n_chars, size_t max_chars);
 
 /*
- * scanner
+ * sdb_input_exec_query:
+ * Execute the query currently stored in the input buffer. Waits for the
+ * server's reply and prints errors or returned data to standard output.
  */
-
-void
-sdb_input_set(sdb_input_t *new_input);
+int
+sdb_input_exec_query(void);
 
 #endif /* SYSDB_INPUT_H */