troglobit / editline

A small replacement for GNU readline() for UNIX
https://troglobit.com/projects/editline/
Other
283 stars 58 forks source link

README: slightly incorrect statement about netbsd libedit dependencies #8

Closed rofl0r closed 8 years ago

rofl0r commented 8 years ago

( refering to the sentence "The libraries have much in common, but the latter is heavily refactored and also relies on ncurses, whereas this library only uses termios from the standard C library." in README)

at least the libedit version used in sabotage linux, worked fine when linked against stallmann's original termcap library (before i changed the package to use netbsd's curses[0] instead): https://github.com/sabotage-linux/sabotage/commit/9b3107c93c85b7ae871032d732204da3051d997f

[0] https://github.com/sabotage-linux/netbsd-curses

troglobit commented 8 years ago

Actually it is true, the libraries have a common ancestry, but one was adopted into Minix from early NetBSD (this one) and the other evolved in NetBSD and was later allowed outside in the greater UNIX community.

Exactly what is your bug report, apart from editline not linking properly, out of the box, on your platform?

rofl0r commented 8 years ago

what i was trying to point out is that libedit (at least the 2012.something version used in sabotage), does not depend on ncurses, but on libtermcap, which is usually supplied by ncurses, but it also works with rms' original standalone version (which is tiny): https://github.com/sabotage-linux/sabotage/blob/master/pkg/termcap ( http://ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz )

troglobit commented 8 years ago

Sure, libncurses is not really required. I guess libtinfo (from ncurses) is all what's required, which I what I made troglobit/mg@ea0aaa3 depend on? The GNU termcap library was superseded by libtinfo several years ago, but sure, the configure script can be improved -- pull requests are most welcome ;-)

Anyway, in the embedded system we run at work¹ we only have the GLIBC terminfo stuff available, so you don't even really need ncurses/termpcap to run editline. It can be run on really bare-bones systems.

¹) http:/www.westermo.com

troglobit commented 8 years ago

Still, having thought about this some more, and checked the source, I'm a bit miffed about the subject of this issue, you're implying that I'm lying about something?

The standard C library, which by POSIX standards, supports terminfo, also supports editline. So you don't need Ncurses or "rms' original standalone" termcap. I know this for a fact having run an embedded Linux OS for almost 10 years now without ncurses/termcap with editline ...

rofl0r commented 8 years ago

I'm a bit miffed about the subject of this issue, you're implying that I'm lying about something?

sorry, i should have said "incorrect" instead of "untrue", since the actual dependency is not "ncurses", but "libtermcap, usually provided by ncurses"

i guess libtinfo (from ncurses) is all what's required

historically, it's libtermcap, and libtinfo is only available when ncurses was built with the "split libraries" option (not default). but yeah, since ncurses doesnt create a libtermcap symlink by default, for a library/app trying to use tgetent() and friends, a configure check is needed, like:

... whether tgetent() is provided by -ltermcap ... no
... whether tgetent() is provided by -lncurses ... no
... whether tgetent() is provided by -lterminfo ... no
... whether tgetent() is provided by -ltinfo ... yes
troglobit commented 8 years ago

Followup to earlier discussion in e02339c, check for tgetent() when --enable-termcap is given to the configure script.