This is the gsoc-2011 project to clean up and backport multibyte support
from other nvi forks in a form we can use.
USE_WIDECHAR is on unless building for the rescue crunchgen. This should
allow editing in the native locale encoding.
USE_ICONV depends on make.conf having 'WITH_ICONV=YES' for now. This
adds the ability to do things like edit a KOI8-R file while having $LANG
set to (say) en_US.UTF-8. iconv is used to transcode the characters for
display.
Other points:
* It uses gencat and catopen/etc instead of homegrown msg catalog stuff.
* A lot of stuff has been trimmed out, eg: the perl and tcl bindings which
we could never use in base anyway.
* It uses ncursesw when in widechar mode. This could be interesting.
GSoC info: http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/zy/1
Repo at: https://github.com/lichray/nvi2
Obtained from: Zhihao Yuan <lichray@gmail.com>
header <term.h>, which is required by both tputs() and tgoto().
Without this header, nvi crashes with the call to tputs() at line 114.
This is because the first argument of tputs() is a pointer, and the
returned pointer from tgoto() is casted to an integer by compiler.
For some reasons, this only crashes on amd64+CURRENT. On 6.x system,
this does not happen.
PR: 101248
Reported by: yar, infofarmer, Roland Smith
Tested by: infofarmer, delphij, rafan
Approved by: delphij (mentor)
instead of recovering, which happens in particular during a rapid series
of SIGWINCH's. This change forces nvi to loop on the call in the event
that the call is interrupted.
Interestingly, I submitted this bug report in 1998, and a solution was
posted shortly thereafter by Matthias Buelow; it's been sitting in the
PR database ever since.
Note: this takes this file off the vendor branch. If and when we find
a vendor for this code, the fix should be given back to them.
PR: bin/8438
Submitted by: Matthias Buelow <mkb@altair.mayn.de>
MFC after: 1 month