X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=src%2Flib%2Fcmdline.c;h=b0fee321dab0ab4df30b1e405bc7b452cbcea1a0;hb=52e1d5772d1f465a013e65b8ae6e43a027438ed6;hp=6e8d7b88fbcbdb621b9c0ad48a7b93df34d8f5a9;hpb=f32d30f48ddfb55b86efd695e0dd144e9d15401e;p=libcmdline.git diff --git a/src/lib/cmdline.c b/src/lib/cmdline.c index 6e8d7b8..b0fee32 100644 --- a/src/lib/cmdline.c +++ b/src/lib/cmdline.c @@ -112,8 +112,12 @@ cmdline_default_help(struct rdline *rdl, const char *buf, 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 @@ -190,6 +194,10 @@ cmdline_in(struct cmdline *cl, const char *buf, int size) 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) @@ -217,7 +225,7 @@ cmdline_interact(struct cmdline *cl) 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;