Code

sysdb: Implemented input scanner and simple command handling.
[sysdb.git] / src / tools / sysdb / input.c
index 72e360cd5a87fcf61deaca181c8cc5a5ccd0a271..d5deb1dd61b9cf6f26a215ae0efba955a233a48d 100644 (file)
  */
 
 static size_t
-input_readline(sdb_strbuf_t *buf)
+input_readline(sdb_input_t *input)
 {
        const char *prompt = "sysdb=> ";
        char *line;
 
        size_t len;
 
-       if (sdb_strbuf_len(buf))
+       if (input->query_len)
                prompt = "sysdb-> ";
 
        line = readline(prompt);
@@ -77,8 +77,8 @@ input_readline(sdb_strbuf_t *buf)
 
        len = strlen(line) + 1;
 
-       sdb_strbuf_append(buf, line);
-       sdb_strbuf_append(buf, "\n");
+       sdb_strbuf_append(input->input, line);
+       sdb_strbuf_append(input->input, "\n");
        free(line);
        return len;
 } /* input_readline */
@@ -91,13 +91,12 @@ ssize_t
 sdb_input_readline(sdb_input_t *input, char *buf,
                int *n_chars, size_t max_chars)
 {
-       const char *query;
        size_t len;
 
-       len = sdb_strbuf_len(input->buf) - input->tokenizer_pos;
+       len = sdb_strbuf_len(input->input) - input->tokenizer_pos;
 
        if (! len) {
-               size_t n = input_readline(input->buf);
+               size_t n = input_readline(input);
                if (! n) {
                        *n_chars = 0; /* YY_NULL */
                        return 0;
@@ -105,18 +104,11 @@ sdb_input_readline(sdb_input_t *input, char *buf,
                len += n;
        }
 
-       query = sdb_strbuf_string(input->buf);
-
        len = (len < max_chars) ? len : max_chars;
-       strncpy(buf, sdb_strbuf_string(input->buf) + input->tokenizer_pos, len);
+       strncpy(buf, sdb_strbuf_string(input->input) + input->tokenizer_pos, len);
        input->tokenizer_pos += len;
        *n_chars = (int)len;
 
-       /* XXX */
-       if (! strchr(query, (int)';'))
-               return (ssize_t)len;
-       sdb_strbuf_clear(input->buf);
-       input->tokenizer_pos = 0;
        return (ssize_t)len;
 } /* sdb_input_readline */