cmdline (merge-intel): add cmdline_quit()
[libcmdline.git] / src / lib / cmdline_rdline.c
index 15f096d..d5eac3b 100644 (file)
@@ -135,6 +135,12 @@ rdline_stop(struct rdline *rdl)
        rdl->status = RDLINE_INIT;
 }
 
+void
+rdline_quit(struct rdline *rdl)
+{
+       rdl->status = RDLINE_EXITED;
+}
+
 void
 rdline_restart(struct rdline *rdl)
 {
@@ -198,6 +204,8 @@ rdline_char_in(struct rdline *rdl, char c)
        char *buf;
 #endif
 
+       if (rdl->status == RDLINE_EXITED)
+               return RDLINE_RES_EXITED;
        if (rdl->status != RDLINE_RUNNING)
                return RDLINE_RES_NOT_RUNNING;
 
@@ -413,6 +421,9 @@ rdline_char_in(struct rdline *rdl, char c)
 
                        if (rdl->validate)
                                rdl->validate(rdl, rdl->left_buf, CIRBUF_GET_LEN(&rdl->left)+2);
+                       /* user may have stopped rdline */
+                       if (rdl->status == RDLINE_EXITED)
+                               return RDLINE_RES_EXITED;
                        return RDLINE_RES_VALIDATED;
 
 #ifndef NO_RDLINE_HISTORY