diff options
author | peter <peter@FreeBSD.org> | 2013-08-11 20:03:12 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 2013-08-11 20:03:12 +0000 |
commit | 5f2a1d653696ec5457bfd044f0ebcd873bfc3c80 (patch) | |
tree | 7c1ae67d07b93aea05bfea51c590c1112b65042b /contrib/nvi/vi/v_replace.c | |
parent | 324febaf01918418f99998aa5537126ac98c9df0 (diff) | |
download | FreeBSD-src-5f2a1d653696ec5457bfd044f0ebcd873bfc3c80.zip FreeBSD-src-5f2a1d653696ec5457bfd044f0ebcd873bfc3c80.tar.gz |
Update nvi-1.79 to 2.1.1-4334a8297f
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>
Diffstat (limited to 'contrib/nvi/vi/v_replace.c')
-rw-r--r-- | contrib/nvi/vi/v_replace.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/contrib/nvi/vi/v_replace.c b/contrib/nvi/vi/v_replace.c index a4712b6..2a7ea97 100644 --- a/contrib/nvi/vi/v_replace.c +++ b/contrib/nvi/vi/v_replace.c @@ -10,7 +10,7 @@ #include "config.h" #ifndef lint -static const char sccsid[] = "@(#)v_replace.c 10.17 (Berkeley) 6/30/96"; +static const char sccsid[] = "$Id: v_replace.c,v 10.24 2001/06/25 15:19:34 skimo Exp $"; #endif /* not lint */ #include <sys/types.h> @@ -43,9 +43,7 @@ static const char sccsid[] = "@(#)v_replace.c 10.17 (Berkeley) 6/30/96"; * PUBLIC: int v_replace __P((SCR *, VICMD *)); */ int -v_replace(sp, vp) - SCR *sp; - VICMD *vp; +v_replace(SCR *sp, VICMD *vp) { EVENT ev; VI_PRIVATE *vip; @@ -53,7 +51,8 @@ v_replace(sp, vp) size_t blen, len; u_long cnt; int quote, rval; - char *bp, *p; + CHAR_T *bp; + CHAR_T *p; vip = VIP(sp); @@ -144,8 +143,8 @@ next: if (v_event_get(sp, &ev, 0, 0)) } /* Copy the line. */ - GET_SPACE_RET(sp, bp, blen, len); - memmove(bp, p, len); + GET_SPACE_RETW(sp, bp, blen, len); + MEMMOVE(bp, p, len); p = bp; /* @@ -154,7 +153,7 @@ next: if (v_event_get(sp, &ev, 0, 0)) * is different from the historic vi, which replaced N characters with * a single new line. Users complained, so we match historic practice. */ - if (!quote && vip->rvalue == K_CR || vip->rvalue == K_NL) { + if ((!quote && vip->rvalue == K_CR) || vip->rvalue == K_NL) { /* Set return line. */ vp->m_stop.lno = vp->m_start.lno + 1; vp->m_stop.cno = 0; @@ -193,10 +192,10 @@ err_ret: rval = 1; rval = 0; } } else { - memset(bp + vp->m_start.cno, vip->rlast, cnt); + STRSET(bp + vp->m_start.cno, vip->rlast, cnt); rval = db_set(sp, vp->m_start.lno, bp, len); } - FREE_SPACE(sp, bp, blen); + FREE_SPACEW(sp, bp, blen); vp->m_final = vp->m_stop; return (rval); |