"Daniel P. Berrange" <berra...@redhat.com> writes: > On Wed, Oct 12, 2016 at 08:15:02PM +0100, Dr. David Alan Gilbert wrote: >> Hi, >> I had a look at a couple of readline like libraries; >> editline and linenoise. A difficulty with using them is that >> they both want fd's or FILE*'s; editline takes either but >> from a brief look I think it's expecting to extract the fd. >> That makes them tricky to integrate into qemu, where >> the chardev's hide a whole bunch of non-fd things; in particular >> tls, mux, ringbuffers etc. >> >> If we could get away with just a FILE* then we could use fopencookie, >> but that's GNU only. >> >> Is there any sane way of shepherding all chardev's into having an >> fd? > > The entire chardev abstraction model exists precisely because we cannot > make all chardevs look like a single fd. Even those which are fd based > may have separate FDs for input and output. > > IMHO the only viable approach would be to enhance linenoise/editline to > not assume use of fd* or FILE * abstractions.
The real thing (GNU readline) has hooks rl_getc_function, rl_input_available_hook, rl_redisplay_function and so forth, which might do the trick. Unfortunately, we're stuck with cheap copies due to our foolish acceptance of GPLv2-only contributions.