ssize_t
cmdline_write(void *arg, void *buf, size_t count)
{
- const struct rdline *rdl = arg;
+ struct rdline *rdl = arg;
+#ifdef NO_PAGER
return rdline_write(rdl, buf, count);
+#else
+ return rdline_asyncpager_write(rdl, buf, count);
+#endif
}
void
for (i = 0; i < size; i++) {
ret = rdline_char_in(&cl->rdl, buf[i]);
+ if (ret == RDLINE_RES_VALIDATED &&
+ cl->rdl.status == RDLINE_STOPPED)
+ break;
+
if (ret == RDLINE_RES_VALIDATED)
rdline_newline(&cl->rdl, cl->prompt);
else if (ret == RDLINE_RES_EOF)
c = -1;
while (1) {
- if (read(cl->s_in, &c, 1) < 0)
+ if (read(cl->s_in, &c, 1) <= 0)
break;
if (cmdline_in(cl, &c, 1) < 0)
break;