summaryrefslogtreecommitdiff
path: root/app-editors/nvi
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2018-07-14 21:03:06 +0100
committerV3n3RiX <venerix@redcorelinux.org>2018-07-14 21:03:06 +0100
commit8376ef56580626e9c0f796d5b85b53a0a1c7d5f5 (patch)
tree7681bbd4e8b05407772df40a4bf04cbbc8afc3fa /app-editors/nvi
parent30a9caf154332f12ca60756e1b75d2f0e3e1822d (diff)
gentoo resync : 14.07.2018
Diffstat (limited to 'app-editors/nvi')
-rw-r--r--app-editors/nvi/Manifest11
-rw-r--r--app-editors/nvi/files/nvi-1.81.6-ac_config_header.patch12
-rw-r--r--app-editors/nvi/files/nvi-1.81.6-db.patch26
-rw-r--r--app-editors/nvi/files/nvi-1.81.6-db44.patch38
-rw-r--r--app-editors/nvi/files/nvi-1.81.6-perl-as-needed.patch94
-rw-r--r--app-editors/nvi/files/nvi-1.81.6-perl-shortnames.patch20
-rw-r--r--app-editors/nvi/files/nvi-1.81.6-printf-types.patch14
-rw-r--r--app-editors/nvi/files/nvi-1.81.6-strlen-macro-renaming.patch499
-rw-r--r--app-editors/nvi/files/nvi-1.81.6-use_pkgconfig_for_ncurses.patch30
-rw-r--r--app-editors/nvi/metadata.xml12
-rw-r--r--app-editors/nvi/nvi-1.81.6-r7.ebuild89
11 files changed, 845 insertions, 0 deletions
diff --git a/app-editors/nvi/Manifest b/app-editors/nvi/Manifest
new file mode 100644
index 000000000000..607808fd03c4
--- /dev/null
+++ b/app-editors/nvi/Manifest
@@ -0,0 +1,11 @@
+AUX nvi-1.81.6-ac_config_header.patch 410 BLAKE2B d47c639e45fae8521e6a70492b73e91728c6c790df7c90b414da69c3af9d1aca442ee61f6cd4b7863f4e167d84036bf7f7b3b472db48cdbb26ae33f62ac4e9d6 SHA512 ef4fb4869b8dbf0a1677aba99f00de5730dc64f48aab35de113f91d22aea769054d2ce875af7c084d1fa3c3a526f2695fbba9ad248c86a296e6c2580c682f8d4
+AUX nvi-1.81.6-db.patch 690 BLAKE2B 84f57da7f49f9d62ed8bfe2104dbc5d6713e378b88356d4dcda3da2a0d3ede782678c16f76871271b16c07b1c1c2703d48e4d41baa44af2a62f330c8621ec860 SHA512 83c8d875b57a73a012bb22935c99b814e7836a809fe1e4eba0021425892dcb66930cded4c2a2af38984db25d23285ce86aaf4cf2def8acb5f669ada368f30f28
+AUX nvi-1.81.6-db44.patch 1351 BLAKE2B c90ac2bdad322a63e2687a0cc6455757a75fab5d7db9597a5291b7b3df6dd3624c55b5346fdece22ca72538053ddac7aeae1837cbd5a2f7883d832226293322b SHA512 d59b3dd860562fe433379951405527825977d3e847a6575d30deb146e0fb8617e13c1962fca0341557093f34a725bb131d2979c15466d8fc6194ad1f928a7e7f
+AUX nvi-1.81.6-perl-as-needed.patch 2807 BLAKE2B fe2d17e99f6ce258388c001e1dd23b58e50e5d3608d1a295443acde146b22fc0494141ac68d42f80dac94e3b97e57fb57582780f355f9706a241a6aad47450c7 SHA512 9bff6bec4970240edcb43e66d17e26a3a035d003124f355f8688794fd3459da6d2d64435a19dd8b701cc4f75c24680299a7407c779fbc0a96647e31b3a1fa21f
+AUX nvi-1.81.6-perl-shortnames.patch 384 BLAKE2B 703ba7c2248b327151f280528689a3c478acc5ffa91f193aca323d6bfb38cfae1b6461424fc9326498c08e66dade54f6a486bde8f9126d4ea244b06c8ea4bd98 SHA512 f013a692ff5d62f41b6fa39c8ddea5907c2ed4dbcf4c84725edb71c61aa09dd54a470ee1228eadfdda745a6eeae653f490b30f7e77952b66515285ecbf2f82b7
+AUX nvi-1.81.6-printf-types.patch 437 BLAKE2B a7cf425c52882b693e928af13790df0959167a64f201d2a41059d3ae21470241020cd604be5418560652729858696ba4e40356c1753daa2906dcc94247675b34 SHA512 8da354d7278300fea44e9dae1f539c23211257aa9475e5a223f7d3aca7d5edaebf6245923f32174cece3386f5564a7794efd6ef2394bbdaaf35c14b99a2c731b
+AUX nvi-1.81.6-strlen-macro-renaming.patch 18467 BLAKE2B 2c764c05ba9e8745369441062452e6bcdf6c065d2c9a040d4ef0f3d2041ec31c574be18bca3432b3ac252c693e2feec4f7df9851055305bad9760fc33d7220ec SHA512 af3470a3f56ede588439153ca84db331a418eecc08787ce89680e5614020418bfa0cb806530525d08ce65af189cb338162a5d77444c14f36036df3bb0327b196
+AUX nvi-1.81.6-use_pkgconfig_for_ncurses.patch 945 BLAKE2B ffdef923f5355ab4839955865cce148c8713517d19c5c6cb8fc4dcff227c1c833bc120d505f36d81240d64d4a0472628c61a28456db1675ecc2d47c3323a1507 SHA512 15d524acfc98bfef4d490a5bb985be6d620487b82b997ffc6fae3e0ad90e7c3a392dd67ebe9fb247c758976485937102dd14422d6218ccbb0491018af5c21906
+DIST nvi-1.81.6.tar.bz2 1758309 BLAKE2B 7aa9b1a7f5337bb246a4a8779180830efd2fb1cfeda2c0d5fc153393cd683237cdfc2a69ac22b228629561ae2222d4eb36746fae4dfb6b9ff44945265988929a SHA512 7e203f7ea6723427d18ff55361254991f50d395f89aab2ea52d0902c474acb24c289da7c35d9e907d652145f13483d8a8270f5c8ee72bd723a3b1eaeecc4f9fd
+EBUILD nvi-1.81.6-r7.ebuild 2067 BLAKE2B 95bc40a128c37818c77af97583c8ce9e5071babdb04d93dcfb1ded14e41dbdd8da05e56f47f9ce40a55f47c7c080f1e9c5f390dd135600e9997a5d55e15a526d SHA512 f7e7d51f2ac4838f44ff481bed8259ff1c4b6fd98c71cffce26641db264c18793e0f0936aef333dab3e7d2963fb7c5e3561633ab5135a3395734bd6089e8d7d7
+MISC metadata.xml 365 BLAKE2B 9fe6afdbd6ccfb6b2bb5283a69ee95db93a6de6f487718be7b190a19204cb9e6426bbb8f2f1536fd6512c819955b5214c70c151344668ebf2c58827cbdcd24bb SHA512 f87d93b660215d0d7271ecb980798e1c5bef9ab24a4773ea2e60748cfa4dd57644567820d5862e33520b7a71f4ef07bac60265f0e656a26aad5360c74b7611fd
diff --git a/app-editors/nvi/files/nvi-1.81.6-ac_config_header.patch b/app-editors/nvi/files/nvi-1.81.6-ac_config_header.patch
new file mode 100644
index 000000000000..49f9453983bc
--- /dev/null
+++ b/app-editors/nvi/files/nvi-1.81.6-ac_config_header.patch
@@ -0,0 +1,12 @@
+diff -uNr nvi-1.81.6.orig/dist/configure.in nvi-1.81.6/dist/configure.in
+--- nvi-1.81.6.orig/dist/configure.in 2013-07-09 16:54:56.000000000 -0400
++++ nvi-1.81.6/dist/configure.in 2013-07-09 16:59:35.000000000 -0400
+@@ -4,7 +4,7 @@
+ AC_INIT(../common/main.c)
+ AC_CONFIG_AUX_DIR(.)
+ AM_INIT_AUTOMAKE(vi, 1.81.6)
+-AM_CONFIG_HEADER(config.h)
++AC_CONFIG_HEADER(config.h)
+
+ dnl Configure setup.
+ AC_PROG_INSTALL()
diff --git a/app-editors/nvi/files/nvi-1.81.6-db.patch b/app-editors/nvi/files/nvi-1.81.6-db.patch
new file mode 100644
index 000000000000..70015261aee4
--- /dev/null
+++ b/app-editors/nvi/files/nvi-1.81.6-db.patch
@@ -0,0 +1,26 @@
+--- a/common/exf.c
++++ b/common/exf.c
+@@ -228,13 +228,18 @@
+ /*
+ * XXX
+ * A seat of the pants calculation: try to keep the file in
+- * 15 pages or less. Don't use a page size larger than 10K
++ * 15 pages or less. Don't use a page size larger than 8K
+- * (vi should have good locality) or smaller than 1K.
++ * (vi should have good locality) or smaller than 1K. DB asks
++ * for a power of two, so give it one.
+ */
+ psize = ((sb.st_size / 15) + 1023) / 1024;
+- if (psize > 10)
++ if (psize >= 8)
+- psize = 10;
++ psize = 8;
++ else if (psize >= 4)
++ psize = 4;
++ else if (psize >= 2)
++ psize = 2;
+- if (psize == 0)
++ else
+ psize = 1;
+ psize *= 1024;
+
diff --git a/app-editors/nvi/files/nvi-1.81.6-db44.patch b/app-editors/nvi/files/nvi-1.81.6-db44.patch
new file mode 100644
index 000000000000..4d4c75d2cb35
--- /dev/null
+++ b/app-editors/nvi/files/nvi-1.81.6-db44.patch
@@ -0,0 +1,38 @@
+
+ First part is adapted from http://cvsweb.se.netbsd.org/cgi-bin/bsdweb.cgi/pkgsrc/editors/nvi/patches/patch-aa?rev=1.3;content-type=text/plain
+
+--- a/common/db.h
++++ b/common/db.h
+@@ -4,7 +4,7 @@
+ #define DB_BUFFER_SMALL ENOMEM
+ #endif
+
+-#if DB_VERSION_MAJOR >= 3 && DB_VERSION_MINOR >= 1
++#if (DB_VERSION_MAJOR >= 3 && DB_VERSION_MINOR >= 1) || DB_VERSION_MAJOR > 3
+ #define db_env_open(env,path,flags,mode) \
+ (env)->open(env, path, flags, mode)
+ #define db_env_remove(env,path,flags) \
+@@ -16,7 +16,10 @@
+ (env)->remove(env, path, NULL, flags)
+ #endif
+
+-#if DB_VERSION_MAJOR >= 4 && DB_VERSION_MINOR >= 1
++# if (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 4) || DB_VERSION_MAJOR > 4
++#define db_open(db,file,type,flags,mode) \
++ (db)->open(db, NULL, file, NULL, type, flags | DB_CREATE, mode)
++#elif DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1
+ #define db_open(db,file,type,flags,mode) \
+ (db)->open(db, NULL, file, NULL, type, flags, mode)
+ #else
+--- a/common/msg.c
++++ b/common/msg.c
+@@ -724,7 +724,8 @@
+ p = buf;
+ } else
+ p = file;
+- if ((sp->db_error = db_create(&db, 0, 0)) != 0 ||
++ if (access(p, R_OK) != 0 ||
++ (sp->db_error = db_create(&db, 0, 0)) != 0 ||
+ (sp->db_error = db->set_re_source(db, p)) != 0 ||
+ (sp->db_error = db_open(db, NULL, DB_RECNO, 0, 0)) != 0) {
+ if (first) {
diff --git a/app-editors/nvi/files/nvi-1.81.6-perl-as-needed.patch b/app-editors/nvi/files/nvi-1.81.6-perl-as-needed.patch
new file mode 100644
index 000000000000..adf75b69cb35
--- /dev/null
+++ b/app-editors/nvi/files/nvi-1.81.6-perl-as-needed.patch
@@ -0,0 +1,94 @@
+--- a/dist/configure.in
++++ b/dist/configure.in
+@@ -105,7 +105,7 @@
+
+ dnl A/UX has a broken getopt(3), strpbrk(3).
+ case "$host_os" in
+-aux*) LIBOBJS="getopt.o strpbrk.o $LIBOBJS";;
++aux*) LIBOBJS="libvi_la-getopt.o libvi_la-strpbrk.o $LIBOBJS";;
+ esac
+
+ dnl Ultrix has a broken POSIX.1 VDISABLE value.
+@@ -434,7 +434,7 @@
+ -e 'ldopts'`
+ perlldflags=`cd $srcdir;$vi_cv_path_perl -MExtUtils::Embed \
+ -e 'ccdlflags'`
+- LIBOBJS="perl.o perlxsi.o perlsfio.o $LIBOBJS"
++ LIBOBJS="libvi_la-perl.o libvi_la-perlxsi.o libvi_la-perlsfio.o $LIBOBJS"
+ AC_DEFINE(HAVE_PERL_INTERP)
+ AC_CACHE_CHECK([whether we need to use perl's setenv],
+ vi_cv_perl_setenv, [
+@@ -471,7 +471,7 @@
+ AC_MSG_ERROR([No Tcl library found;])
+ fi
+ . $vi_cv_tclconfig
+- LIBOBJS="tcl.o $LIBOBJS"
++ LIBOBJS="libvi_la-tcl.o $LIBOBJS"
+ LIBS="$TCL_LIB_SPEC $TCL_LIBS $LIBS"
+ AC_DEFINE(HAVE_TCL_INTERP)
+ fi
+@@ -607,12 +607,12 @@
+
+ dnl If we needed setenv or unsetenv, add in the clib/env.c replacement file.
+ if test "$need_env" = yes; then
+- LIBOBJS="env.o $LIBOBJS"
++ LIBOBJS="libvi_la-env.o $LIBOBJS"
+ fi
+
+ dnl If we need strsep, add it and define it so we get a prototype.
+ if test "$need_strsep" = yes; then
+- LIBOBJS="strsep.o $LIBOBJS"
++ LIBOBJS="libvi_la-strsep.o $LIBOBJS"
+ fi
+
+ dnl Check for fcntl/flock
+@@ -1003,7 +1003,7 @@
+ PATH="$OLDPATH"
+
+ AC_DEFINE(USE_DYNAMIC_LOADING)
+- LIBOBJS="dldb.o $LIBOBJS"
++ LIBOBJS="libvi_la-dldb.o $LIBOBJS"
+ dl_src=../common/dldb.c
+ LIBS="-ldl $LIBS"
+ else
+@@ -1046,9 +1046,9 @@
+ CPPFLAGS="-I$vi_cv_dbsrc/include_auto $CPPFLAGS"
+ CPPFLAGS="-I$with_db_build $CPPFLAGS"
+ AC_DEFINE(USE_DB4_LOGGING)
+- LIBOBJS="log4.o vi_auto.o vi_rec.o $LIBOBJS"
++ LIBOBJS="libvi_la-log4.o libvi_la-vi_auto.o libvi_la-vi_rec.o $LIBOBJS"
+ else
+- LIBOBJS="log.o $LIBOBJS"
++ LIBOBJS="libvi_la-log.o $LIBOBJS"
+ fi
+
+ dnl We compile in nvi's RE routines unless the user specifies otherwise.
+@@ -1064,7 +1064,7 @@
+ case "$vi_cv_re_lib" in
+ "bundled RE")
+ CPPFLAGS="-I\$(visrcdir)/regex $CPPFLAGS"
+- LIBOBJS="regcomp.o regerror.o regexec.o regfree.o $LIBOBJS";;
++ LIBOBJS="libvi_la-regcomp.o libvi_la-regerror.o libvi_la-regexec.o libvi_la-regfree.o $LIBOBJS";;
+ "other RE")
+ ;;
+ esac
+--- a/dist/Makefile.am
++++ b/dist/Makefile.am
+@@ -169,12 +169,15 @@
+ $(visrcdir)/common/pthread.c \
+ $(visrcdir)/common/vi_auto.c \
+ $(visrcdir)/common/vi_rec.c \
+- $(visrcdir)/perl_api/perl.xs \
++ perl.c \
+ $(visrcdir)/perl_api/perlsfio.c \
++ perlxsi.c \
+ $(visrcdir)/tcl_api/tcl.c
+ # Is this the way to do it ?
+ libvi_la_DEPENDENCIES = @LTLIBOBJS@
+-libvi_la_LIBADD = @LTLIBOBJS@
++libvi_la_LIBADD = @LTLIBOBJS@ @perllibs@
++libvi_la_CPPFLAGS = @perlldflags@ $(AM_CPPFLAGS)
++libvi_la_LDFLAGS = @perlldflags@
+
+ bin_PROGRAMS = @vi_programs@ @vi_ipc@
+ EXTRA_PROGRAMS = vi vi-ipc vi-motif vi-gtk
diff --git a/app-editors/nvi/files/nvi-1.81.6-perl-shortnames.patch b/app-editors/nvi/files/nvi-1.81.6-perl-shortnames.patch
new file mode 100644
index 000000000000..3567646688e7
--- /dev/null
+++ b/app-editors/nvi/files/nvi-1.81.6-perl-shortnames.patch
@@ -0,0 +1,20 @@
+--- a/perl_api/perlsfio.c
++++ b/perl_api/perlsfio.c
+@@ -32,6 +32,7 @@
+ /* perl redefines them
+ * avoid warnings
+ */
++#undef re_compile
+ #undef USE_DYNAMIC_LOADING
+ #undef DEBUG
+ #undef PACKAGE
+--- a/perl_api/perl.xs
++++ b/perl_api/perl.xs
+@@ -38,6 +38,7 @@
+ /* perl redefines them
+ * avoid warnings
+ */
++#undef re_compile
+ #undef USE_DYNAMIC_LOADING
+ #undef DEBUG
+ #undef PACKAGE
diff --git a/app-editors/nvi/files/nvi-1.81.6-printf-types.patch b/app-editors/nvi/files/nvi-1.81.6-printf-types.patch
new file mode 100644
index 000000000000..20fc47c18f25
--- /dev/null
+++ b/app-editors/nvi/files/nvi-1.81.6-printf-types.patch
@@ -0,0 +1,14 @@
+lno and last are uint32_t which might be different from unsigned long
+
+--- a/common/msg.c
++++ b/common/msg.c
+@@ -640,7 +640,8 @@ msgq_status(SCR *sp, db_recno_t lno, u_i
+ p += len;
+ } else {
+ t = msg_cat(sp, "027|line %lu of %lu [%ld%%]", &len);
+- (void)sprintf(p, t, lno, last, (lno * 100) / last);
++ (void)sprintf(p, t, (u_long)lno, (u_long)last,
++ ((long)lno * 100L) / (long)last);
+ p += strlen(p);
+ }
+ } else {
diff --git a/app-editors/nvi/files/nvi-1.81.6-strlen-macro-renaming.patch b/app-editors/nvi/files/nvi-1.81.6-strlen-macro-renaming.patch
new file mode 100644
index 000000000000..70a47fd93fd5
--- /dev/null
+++ b/app-editors/nvi/files/nvi-1.81.6-strlen-macro-renaming.patch
@@ -0,0 +1,499 @@
+Created by: Karl Hakimian
+Added by: Jesus Rivero <neurogeek@gentoo.org>
+Added on: Feb 18, 2015
+diff -rupN nvi-1.81.6.orig/common/api.c nvi-1.81.6/common/api.c
+--- nvi-1.81.6.orig/common/api.c 2007-11-18 08:41:42.000000000 -0800
++++ nvi-1.81.6/common/api.c 2015-02-17 11:04:50.199111784 -0800
+@@ -423,7 +423,7 @@ api_opts_get(SCR *sp, CHAR_T *name, char
+ switch (op->type) {
+ case OPT_0BOOL:
+ case OPT_1BOOL:
+- MALLOC_RET(sp, *value, char *, STRLEN(op->name) + 2 + 1);
++ MALLOC_RET(sp, *value, char *, NVI_STRLEN(op->name) + 2 + 1);
+ (void)sprintf(*value,
+ "%s"WS, O_ISSET(sp, offset) ? "" : "no", op->name);
+ if (boolvalue != NULL)
+diff -rupN nvi-1.81.6.orig/common/msg.c nvi-1.81.6/common/msg.c
+--- nvi-1.81.6.orig/common/msg.c 2007-11-18 08:41:42.000000000 -0800
++++ nvi-1.81.6/common/msg.c 2015-02-17 11:04:50.203891722 -0800
+@@ -378,7 +378,7 @@ msgq_wstr(SCR *sp, mtype_t mtype, CHAR_T
+ msgq(sp, mtype, fmt);
+ return;
+ }
+- INT2CHAR(sp, str, STRLEN(str) + 1, nstr, nlen);
++ INT2CHAR(sp, str, NVI_STRLEN(str) + 1, nstr, nlen);
+ msgq_str(sp, mtype, nstr, fmt);
+ }
+
+diff -rupN nvi-1.81.6.orig/common/multibyte.h nvi-1.81.6/common/multibyte.h
+--- nvi-1.81.6.orig/common/multibyte.h 2007-11-18 08:41:42.000000000 -0800
++++ nvi-1.81.6/common/multibyte.h 2015-02-17 11:04:50.204262910 -0800
+@@ -12,7 +12,7 @@ typedef wchar_t CHAR_T;
+ typedef u_int UCHAR_T;
+ #define RCHAR_BIT 24
+
+-#define STRLEN wcslen
++#define NVI_STRLEN wcslen
+ #define STRTOL wcstol
+ #define STRTOUL wcstoul
+ #define SPRINTF swprintf
+@@ -31,7 +31,7 @@ typedef u_char CHAR_T;
+ typedef u_char UCHAR_T;
+ #define RCHAR_BIT CHAR_BIT
+
+-#define STRLEN strlen
++#define NVI_STRLEN strlen
+ #define STRTOL strtol
+ #define STRTOUL strtoul
+ #define SPRINTF snprintf
+diff -rupN nvi-1.81.6.orig/common/options.c nvi-1.81.6/common/options.c
+--- nvi-1.81.6.orig/common/options.c 2007-11-18 08:41:42.000000000 -0800
++++ nvi-1.81.6/common/options.c 2015-02-17 11:04:50.195900457 -0800
+@@ -315,7 +315,7 @@ opts_init(SCR *sp, int *oargs)
+
+ /* Set numeric and string default values. */
+ #define OI(indx, str) { \
+- a.len = STRLEN(str); \
++ a.len = NVI_STRLEN(str); \
+ if ((CHAR_T*)str != b2) /* GCC puts strings in text-space. */ \
+ (void)MEMCPY(b2, str, a.len+1); \
+ if (opts_set(sp, argv, NULL)) { \
+@@ -620,10 +620,10 @@ opts_set(SCR *sp, ARGS **argv, char *usa
+ goto badnum;
+ if ((nret =
+ nget_uslong(sp, &value, sep, &endp, 10)) != NUM_OK) {
+- INT2CHAR(sp, name, STRLEN(name) + 1,
++ INT2CHAR(sp, name, NVI_STRLEN(name) + 1,
+ np, nlen);
+ p2 = msg_print(sp, np, &nf);
+- INT2CHAR(sp, sep, STRLEN(sep) + 1,
++ INT2CHAR(sp, sep, NVI_STRLEN(sep) + 1,
+ np, nlen);
+ t2 = msg_print(sp, np, &nf2);
+ switch (nret) {
+@@ -647,10 +647,10 @@ opts_set(SCR *sp, ARGS **argv, char *usa
+ break;
+ }
+ if (*endp && !ISBLANK(*endp)) {
+-badnum: INT2CHAR(sp, name, STRLEN(name) + 1,
++badnum: INT2CHAR(sp, name, NVI_STRLEN(name) + 1,
+ np, nlen);
+ p2 = msg_print(sp, np, &nf);
+- INT2CHAR(sp, sep, STRLEN(sep) + 1,
++ INT2CHAR(sp, sep, NVI_STRLEN(sep) + 1,
+ np, nlen);
+ t2 = msg_print(sp, np, &nf2);
+ msgq(sp, M_ERR,
+@@ -680,7 +680,7 @@ badnum: INT2CHAR(sp, name, STRLEN(nam
+ break;
+
+ /* Report to subsystems. */
+- INT2CHAR(sp, sep, STRLEN(sep) + 1, np, nlen);
++ INT2CHAR(sp, sep, NVI_STRLEN(sep) + 1, np, nlen);
+ if (op->func != NULL &&
+ op->func(sp, spo, np, &value) ||
+ ex_optchange(sp, offset, np, &value) ||
+@@ -712,7 +712,7 @@ badnum: INT2CHAR(sp, name, STRLEN(nam
+ * Do nothing if the value is unchanged, the underlying
+ * functions can be expensive.
+ */
+- INT2CHAR(sp, sep, STRLEN(sep) + 1, np, nlen);
++ INT2CHAR(sp, sep, NVI_STRLEN(sep) + 1, np, nlen);
+ if (!F_ISSET(op, OPT_ALWAYS) &&
+ O_STR(sp, offset) != NULL &&
+ !strcmp(O_STR(sp, offset), np))
+@@ -879,7 +879,7 @@ opts_dump(SCR *sp, enum optdisp type)
+ }
+ F_CLR(&sp->opts[cnt], OPT_SELECTED);
+
+- curlen = STRLEN(op->name);
++ curlen = NVI_STRLEN(op->name);
+ switch (op->type) {
+ case OPT_0BOOL:
+ case OPT_1BOOL:
+@@ -1049,7 +1049,7 @@ opts_search(CHAR_T *name)
+ * Check to see if the name is the prefix of one (and only one)
+ * option. If so, return the option.
+ */
+- len = STRLEN(name);
++ len = NVI_STRLEN(name);
+ for (found = NULL, op = optlist; op->name != NULL; ++op) {
+ if (op->name[0] < name[0])
+ continue;
+diff -rupN nvi-1.81.6.orig/dist/tags nvi-1.81.6/dist/tags
+--- nvi-1.81.6.orig/dist/tags 2007-11-18 08:43:55.000000000 -0800
++++ nvi-1.81.6/dist/tags 2015-02-17 11:04:50.225314084 -0800
+@@ -1068,8 +1068,8 @@ SPRINTF ../common/multibyte.h 37;" d
+ STANDARD_TAB ../common/key.h 213;" d
+ STRCMP ../common/multibyte.h 19;" d
+ STRCMP ../common/multibyte.h 38;" d
+-STRLEN ../common/multibyte.h 15;" d
+-STRLEN ../common/multibyte.h 34;" d
++NVI_STRLEN ../common/multibyte.h 15;" d
++NVI_STRLEN ../common/multibyte.h 34;" d
+ STRPBRK ../common/multibyte.h 20;" d
+ STRPBRK ../common/multibyte.h 39;" d
+ STRSET ../common/multibyte.h 22;" d
+diff -rupN nvi-1.81.6.orig/ex/ex_argv.c nvi-1.81.6/ex/ex_argv.c
+--- nvi-1.81.6.orig/ex/ex_argv.c 2007-11-18 08:41:42.000000000 -0800
++++ nvi-1.81.6/ex/ex_argv.c 2015-02-17 11:04:50.267171388 -0800
+@@ -217,7 +217,7 @@ argv_exp2(SCR *sp, EXCMD *excp, CHAR_T *
+
+ *p = '\0';
+ INT2CHAR(sp, bp + SHELLOFFSET,
+- STRLEN(bp + SHELLOFFSET) + 1, np, nlen);
++ NVI_STRLEN(bp + SHELLOFFSET) + 1, np, nlen);
+ d = strdup(np);
+ rval = argv_lexp(sp, excp, d);
+ free (d);
+@@ -332,7 +332,7 @@ argv_fexp(SCR *sp, EXCMD *excp, CHAR_T *
+ "115|No previous command to replace \"!\"");
+ return (1);
+ }
+- len += tlen = STRLEN(exp->lastbcomm);
++ len += tlen = NVI_STRLEN(exp->lastbcomm);
+ off = p - bp;
+ ADD_SPACE_RETW(sp, bp, blen, len);
+ p = bp + off;
+@@ -683,7 +683,7 @@ err: if (ifp != NULL)
+ * XXX
+ * Assume that all shells have -c.
+ */
+- INT2CHAR(sp, bp, STRLEN(bp)+1, np, nlen);
++ INT2CHAR(sp, bp, NVI_STRLEN(bp)+1, np, nlen);
+ execl(sh_path, sh, "-c", np, (char *)NULL);
+ msgq_str(sp, M_SYSERR, sh_path, "118|Error: execl: %s");
+ _exit(127);
+diff -rupN nvi-1.81.6.orig/ex/ex_cscope.c nvi-1.81.6/ex/ex_cscope.c
+--- nvi-1.81.6.orig/ex/ex_cscope.c 2007-11-18 08:41:42.000000000 -0800
++++ nvi-1.81.6/ex/ex_cscope.c 2015-02-17 11:04:50.261539058 -0800
+@@ -140,7 +140,7 @@ ex_cscope(SCR *sp, EXCMD *cmdp)
+ for (; *p && isspace(*p); ++p);
+ }
+
+- INT2CHAR(sp, cmd, STRLEN(cmd) + 1, np, nlen);
++ INT2CHAR(sp, cmd, NVI_STRLEN(cmd) + 1, np, nlen);
+ if ((ccp = lookup_ccmd(np)) == NULL) {
+ usage: msgq(sp, M_ERR, "309|Use \"cscope help\" for help");
+ return (1);
+@@ -214,7 +214,7 @@ cscope_add(SCR *sp, EXCMD *cmdp, CHAR_T
+ * >1 additional args: object, too many args.
+ */
+ cur_argc = cmdp->argc;
+- if (argv_exp2(sp, cmdp, dname, STRLEN(dname))) {
++ if (argv_exp2(sp, cmdp, dname, NVI_STRLEN(dname))) {
+ return (1);
+ }
+ if (cmdp->argc == cur_argc) {
+@@ -228,7 +228,7 @@ cscope_add(SCR *sp, EXCMD *cmdp, CHAR_T
+ return (1);
+ }
+
+- INT2CHAR(sp, dname, STRLEN(dname)+1, np, nlen);
++ INT2CHAR(sp, dname, NVI_STRLEN(dname)+1, np, nlen);
+
+ /*
+ * The user can specify a specific file (so they can have multiple
+@@ -471,7 +471,7 @@ cscope_find(SCR *sp, EXCMD *cmdp, CHAR_T
+ }
+
+ /* Create the cscope command. */
+- INT2CHAR(sp, pattern, STRLEN(pattern) + 1, np, nlen);
++ INT2CHAR(sp, pattern, NVI_STRLEN(pattern) + 1, np, nlen);
+ np = strdup(np);
+ if ((tqp = create_cs_cmd(sp, np, &search)) == NULL)
+ goto err;
+@@ -801,7 +801,7 @@ cscope_help(SCR *sp, EXCMD *cmdp, CHAR_T
+ char *np;
+ size_t nlen;
+
+- INT2CHAR(sp, subcmd, STRLEN(subcmd) + 1, np, nlen);
++ INT2CHAR(sp, subcmd, NVI_STRLEN(subcmd) + 1, np, nlen);
+ return (csc_help(sp, np));
+ }
+
+@@ -842,7 +842,7 @@ cscope_kill(SCR *sp, EXCMD *cmdp, CHAR_T
+ char *np;
+ size_t nlen;
+
+- INT2CHAR(sp, cn, STRLEN(cn) + 1, np, nlen);
++ INT2CHAR(sp, cn, NVI_STRLEN(cn) + 1, np, nlen);
+ return (terminate(sp, NULL, atoi(np)));
+ }
+
+diff -rupN nvi-1.81.6.orig/ex/ex_filter.c nvi-1.81.6/ex/ex_filter.c
+--- nvi-1.81.6.orig/ex/ex_filter.c 2007-11-18 08:41:42.000000000 -0800
++++ nvi-1.81.6/ex/ex_filter.c 2015-02-17 11:04:50.263257613 -0800
+@@ -138,7 +138,7 @@ err: if (input[0] != -1)
+ else
+ ++name;
+
+- INT2SYS(sp, cmd, STRLEN(cmd)+1, np, nlen);
++ INT2SYS(sp, cmd, NVI_STRLEN(cmd)+1, np, nlen);
+ execl(O_STR(sp, O_SHELL), name, "-c", np, (char *)NULL);
+ msgq_str(sp, M_SYSERR, O_STR(sp, O_SHELL), "execl: %s");
+ _exit (127);
+@@ -283,7 +283,7 @@ err: if (input[0] != -1)
+ * Ignore errors on vi file reads, to make reads prettier. It's
+ * completely inconsistent, and historic practice.
+ */
+-uwait: INT2CHAR(sp, cmd, STRLEN(cmd) + 1, np, nlen);
++uwait: INT2CHAR(sp, cmd, NVI_STRLEN(cmd) + 1, np, nlen);
+ return (proc_wait(sp, (long)utility_pid, np,
+ ftype == FILTER_READ && F_ISSET(sp, SC_VI) ? 1 : 0, 0) || rval);
+ }
+diff -rupN nvi-1.81.6.orig/ex/ex_init.c nvi-1.81.6/ex/ex_init.c
+--- nvi-1.81.6.orig/ex/ex_init.c 2007-11-18 08:41:42.000000000 -0800
++++ nvi-1.81.6/ex/ex_init.c 2015-02-17 11:04:50.279419412 -0800
+@@ -61,7 +61,7 @@ ex_screen_copy(SCR *orig, SCR *sp)
+
+ if (oexp->lastbcomm != NULL &&
+ (nexp->lastbcomm = v_wstrdup(sp, oexp->lastbcomm,
+- STRLEN(oexp->lastbcomm))) == NULL) {
++ NVI_STRLEN(oexp->lastbcomm))) == NULL) {
+ msgq(sp, M_SYSERR, NULL);
+ return(1);
+ }
+diff -rupN nvi-1.81.6.orig/ex/ex_tag.c nvi-1.81.6/ex/ex_tag.c
+--- nvi-1.81.6.orig/ex/ex_tag.c 2007-11-18 08:41:42.000000000 -0800
++++ nvi-1.81.6/ex/ex_tag.c 2015-02-17 11:04:50.275254557 -0800
+@@ -68,7 +68,7 @@ ex_tag_first(SCR *sp, CHAR_T *tagarg)
+
+ /* Build an argument for the ex :tag command. */
+ ex_cinit(sp, &cmd, C_TAG, 0, OOBLNO, OOBLNO, 0);
+- argv_exp0(sp, &cmd, tagarg, STRLEN(tagarg));
++ argv_exp0(sp, &cmd, tagarg, NVI_STRLEN(tagarg));
+
+ /*
+ * XXX
+@@ -115,7 +115,7 @@ ex_tag_push(SCR *sp, EXCMD *cmdp)
+
+ /* Taglength may limit the number of characters. */
+ if ((tl =
+- O_VAL(sp, O_TAGLENGTH)) != 0 && STRLEN(exp->tag_last) > tl)
++ O_VAL(sp, O_TAGLENGTH)) != 0 && NVI_STRLEN(exp->tag_last) > tl)
+ exp->tag_last[tl] = '\0';
+ break;
+ case 0:
+@@ -587,7 +587,7 @@ ex_tag_copy(SCR *orig, SCR *sp)
+ /* Copy the last tag. */
+ if (oexp->tag_last != NULL &&
+ (nexp->tag_last = v_wstrdup(sp, oexp->tag_last,
+- STRLEN(oexp->tag_last))) == NULL) {
++ NVI_STRLEN(oexp->tag_last))) == NULL) {
+ msgq(sp, M_SYSERR, NULL);
+ return (1);
+ }
+@@ -997,7 +997,7 @@ ctag_slist(SCR *sp, CHAR_T *tag)
+ exp = EXP(sp);
+
+ /* Allocate and initialize the tag queue structure. */
+- INT2CHAR(sp, tag, STRLEN(tag) + 1, np, nlen);
++ INT2CHAR(sp, tag, NVI_STRLEN(tag) + 1, np, nlen);
+ len = nlen - 1;
+ CALLOC_GOTO(sp, tqp, TAGQ *, 1, sizeof(TAGQ) + len + 1);
+ CIRCLEQ_INIT(&tqp->tagq);
+diff -rupN nvi-1.81.6.orig/ex/ex_util.c nvi-1.81.6/ex/ex_util.c
+--- nvi-1.81.6.orig/ex/ex_util.c 2007-11-18 08:41:42.000000000 -0800
++++ nvi-1.81.6/ex/ex_util.c 2015-02-17 11:04:50.268378054 -0800
+@@ -153,7 +153,7 @@ ex_wemsg(SCR* sp, CHAR_T *p, exm_t which
+ char *np;
+ size_t nlen;
+
+- if (p) INT2CHAR(sp, p, STRLEN(p), np, nlen);
++ if (p) INT2CHAR(sp, p, NVI_STRLEN(p), np, nlen);
+ else np = NULL;
+ ex_emsg(sp, np, which);
+ }
+diff -rupN nvi-1.81.6.orig/ex/ex_write.c nvi-1.81.6/ex/ex_write.c
+--- nvi-1.81.6.orig/ex/ex_write.c 2007-11-18 08:41:42.000000000 -0800
++++ nvi-1.81.6/ex/ex_write.c 2015-02-17 11:04:50.277249383 -0800
+@@ -158,7 +158,7 @@ exwr(SCR *sp, EXCMD *cmdp, enum which cm
+ ex_emsg(sp, cmdp->cmd->usage, EXM_USAGE);
+ return (1);
+ }
+- if (argv_exp1(sp, cmdp, p, STRLEN(p), 1))
++ if (argv_exp1(sp, cmdp, p, NVI_STRLEN(p), 1))
+ return (1);
+
+ /*
+@@ -203,7 +203,7 @@ exwr(SCR *sp, EXCMD *cmdp, enum which cm
+ &cmdp->addr1, &cmdp->addr2, NULL, flags));
+
+ /* Build an argv so we get an argument count and file expansion. */
+- if (argv_exp2(sp, cmdp, p, STRLEN(p)))
++ if (argv_exp2(sp, cmdp, p, NVI_STRLEN(p)))
+ return (1);
+
+ /*
+@@ -255,7 +255,7 @@ exwr(SCR *sp, EXCMD *cmdp, enum which cm
+ set_alt_name(sp, name);
+ break;
+ default:
+- INT2CHAR(sp, p, STRLEN(p) + 1, n, nlen);
++ INT2CHAR(sp, p, NVI_STRLEN(p) + 1, n, nlen);
+ ex_emsg(sp, n, EXM_FILECOUNT);
+ return (1);
+ }
+diff -rupN nvi-1.81.6.orig/ip/ip_term.c nvi-1.81.6/ip/ip_term.c
+--- nvi-1.81.6.orig/ip/ip_term.c 2007-11-18 08:41:42.000000000 -0800
++++ nvi-1.81.6/ip/ip_term.c 2015-02-17 11:04:50.280203225 -0800
+@@ -127,7 +127,7 @@ ip_optchange(SCR *sp, int offset, char *
+
+ ipb.code = SI_EDITOPT;
+ ipb.str1 = (char*)opt->name;
+- ipb.len1 = STRLEN(opt->name) * sizeof(CHAR_T);
++ ipb.len1 = NVI_STRLEN(opt->name) * sizeof(CHAR_T);
+
+ (void)vi_send(ipp->o_fd, "ab1", &ipb);
+ return (0);
+diff -rupN nvi-1.81.6.orig/perl_api/perl.xs nvi-1.81.6/perl_api/perl.xs
+--- nvi-1.81.6.orig/perl_api/perl.xs 2007-11-18 08:41:42.000000000 -0800
++++ nvi-1.81.6/perl_api/perl.xs 2015-02-17 11:04:50.189684363 -0800
+@@ -326,7 +326,7 @@ perl_ex_perl(scrp, cmdp, cmdlen, f_lno,
+ newVIrv(pp->svid, scrp);
+
+ istat = signal(SIGINT, my_sighandler);
+- INT2CHAR(scrp, cmdp, STRLEN(cmdp)+1, np, nlen);
++ INT2CHAR(scrp, cmdp, NVI_STRLEN(cmdp)+1, np, nlen);
+ perl_eval(np);
+ signal(SIGINT, istat);
+
+@@ -421,7 +421,7 @@ perl_ex_perldo(scrp, cmdp, cmdlen, f_lno
+ /* Backwards compatibility. */
+ newVIrv(pp->svid, scrp);
+
+- INT2CHAR(scrp, cmdp, STRLEN(cmdp)+1, np, nlen);
++ INT2CHAR(scrp, cmdp, NVI_STRLEN(cmdp)+1, np, nlen);
+ if (!(command = malloc(length = nlen - 1 + sizeof("sub {}"))))
+ return 1;
+ snprintf(command, length, "sub {%s}", np);
+diff -rupN nvi-1.81.6.orig/regex/engine.c nvi-1.81.6/regex/engine.c
+--- nvi-1.81.6.orig/regex/engine.c 2007-11-18 08:41:42.000000000 -0800
++++ nvi-1.81.6/regex/engine.c 2015-02-17 11:04:50.181456859 -0800
+@@ -161,7 +161,7 @@ int eflags;
+ stop = string + pmatch[0].rm_eo;
+ } else {
+ start = string;
+- stop = start + STRLEN(start);
++ stop = start + NVI_STRLEN(start);
+ }
+ if (stop < start)
+ return(REG_INVARG);
+diff -rupN nvi-1.81.6.orig/regex/regcomp.c nvi-1.81.6/regex/regcomp.c
+--- nvi-1.81.6.orig/regex/regcomp.c 2007-11-18 08:41:42.000000000 -0800
++++ nvi-1.81.6/regex/regcomp.c 2015-02-17 11:04:50.175705539 -0800
+@@ -198,7 +198,7 @@ regcomp(regex_t *preg, const RCHAR_T *pa
+ return(REG_INVARG);
+ len = preg->re_endp - pattern;
+ } else
+- len = STRLEN(pattern);
++ len = NVI_STRLEN(pattern);
+
+ /* do the mallocs early so failure handling is easy */
+ g = (struct re_guts *)malloc(sizeof(struct re_guts) +
+@@ -818,7 +818,7 @@ p_b_cclass(register struct parse *p, reg
+ NEXT();
+ len = p->next - sp;
+ for (cp = cclasses; cp->name != NULL; cp++)
+- if (STRLEN(cp->name) == len && MEMCMP(cp->name, sp, len))
++ if (NVI_STRLEN(cp->name) == len && MEMCMP(cp->name, sp, len))
+ break;
+ if (cp->name == NULL) {
+ /* oops, didn't find it */
+@@ -889,7 +889,7 @@ p_b_coll_elem(register struct parse *p,
+ }
+ len = p->next - sp;
+ for (cp = cnames; cp->name != NULL; cp++)
+- if (STRLEN(cp->name) == len && MEMCMP(cp->name, sp, len))
++ if (NVI_STRLEN(cp->name) == len && MEMCMP(cp->name, sp, len))
+ return(cp->code); /* known name */
+ if (len == 1)
+ return(*sp); /* single character */
+diff -rupN nvi-1.81.6.orig/vi/v_event.c nvi-1.81.6/vi/v_event.c
+--- nvi-1.81.6.orig/vi/v_event.c 2007-11-18 08:41:42.000000000 -0800
++++ nvi-1.81.6/vi/v_event.c 2015-02-17 11:04:50.242966563 -0800
+@@ -97,7 +97,7 @@ v_editopt(SCR *sp, VICMD *vp)
+ size_t nlen;
+ char *p2;
+
+- INT2CHAR(sp, vp->ev.e_str2, STRLEN(vp->ev.e_str2)+1, np, nlen);
++ INT2CHAR(sp, vp->ev.e_str2, NVI_STRLEN(vp->ev.e_str2)+1, np, nlen);
+ p2 = strdup(np);
+ rval = api_opts_set(sp, vp->ev.e_str1, p2,
+ vp->ev.e_val1, vp->ev.e_val1);
+@@ -135,7 +135,7 @@ v_tag(SCR *sp, VICMD *vp)
+ return (1);
+
+ ex_cinit(sp, &cmd, C_TAG, 0, OOBLNO, OOBLNO, 0);
+- argv_exp0(sp, &cmd, VIP(sp)->keyw, STRLEN(VIP(sp)->keyw));
++ argv_exp0(sp, &cmd, VIP(sp)->keyw, NVI_STRLEN(VIP(sp)->keyw));
+ return (v_exec_ex(sp, vp, &cmd));
+ }
+
+@@ -167,7 +167,7 @@ v_tagsplit(SCR *sp, VICMD *vp)
+
+ ex_cinit(sp, &cmd, C_TAG, 0, OOBLNO, OOBLNO, 0);
+ F_SET(&cmd, E_NEWSCREEN);
+- argv_exp0(sp, &cmd, VIP(sp)->keyw, STRLEN(VIP(sp)->keyw));
++ argv_exp0(sp, &cmd, VIP(sp)->keyw, NVI_STRLEN(VIP(sp)->keyw));
+ return (v_exec_ex(sp, vp, &cmd));
+ }
+
+diff -rupN nvi-1.81.6.orig/vi/v_ex.c nvi-1.81.6/vi/v_ex.c
+--- nvi-1.81.6.orig/vi/v_ex.c 2007-11-18 08:41:42.000000000 -0800
++++ nvi-1.81.6/vi/v_ex.c 2015-02-17 11:04:50.246380280 -0800
+@@ -210,7 +210,7 @@ v_tagpush(SCR *sp, VICMD *vp)
+ EXCMD cmd;
+
+ ex_cinit(sp, &cmd, C_TAG, 0, OOBLNO, 0, 0);
+- argv_exp0(sp, &cmd, VIP(sp)->keyw, STRLEN(VIP(sp)->keyw) + 1);
++ argv_exp0(sp, &cmd, VIP(sp)->keyw, NVI_STRLEN(VIP(sp)->keyw) + 1);
+ return (v_exec_ex(sp, vp, &cmd));
+ }
+
+diff -rupN nvi-1.81.6.orig/vi/vs_msg.c nvi-1.81.6/vi/vs_msg.c
+--- nvi-1.81.6.orig/vi/vs_msg.c 2007-11-18 08:41:42.000000000 -0800
++++ nvi-1.81.6/vi/vs_msg.c 2015-02-17 11:04:50.251093618 -0800
+@@ -175,7 +175,7 @@ vs_update(SCR *sp, const char *m1, const
+ */
+ if (F_ISSET(sp, SC_SCR_EXWROTE)) {
+ if (m2 != NULL)
+- INT2CHAR(sp, m2, STRLEN(m2) + 1, np, nlen);
++ INT2CHAR(sp, m2, NVI_STRLEN(m2) + 1, np, nlen);
+ (void)ex_printf(sp,
+ "%s\n", m1 == NULL? "" : m1, m2 == NULL ? "" : np);
+ (void)ex_fflush(sp);
+@@ -203,7 +203,7 @@ vs_update(SCR *sp, const char *m1, const
+ } else
+ len = 0;
+ if (m2 != NULL) {
+- mlen = STRLEN(m2);
++ mlen = NVI_STRLEN(m2);
+ if (len + mlen > sp->cols - 2)
+ mlen = (sp->cols - 2) - len;
+ (void)gp->scr_waddstr(sp, m2, mlen);
+diff -rupN nvi-1.81.6.orig/vi/vs_split.c nvi-1.81.6/vi/vs_split.c
+--- nvi-1.81.6.orig/vi/vs_split.c 2007-11-18 08:41:42.000000000 -0800
++++ nvi-1.81.6/vi/vs_split.c 2015-02-17 11:04:50.256136584 -0800
+@@ -628,7 +628,7 @@ vs_fg(SCR *sp, SCR **nspp, CHAR_T *name,
+ wp = sp->wp;
+
+ if (name)
+- INT2CHAR(sp, name, STRLEN(name) + 1, np, nlen);
++ INT2CHAR(sp, name, NVI_STRLEN(name) + 1, np, nlen);
+ else
+ np = NULL;
+ if (newscreen)
+diff -rupN nvi-1.81.6.orig/vi/v_txt.c nvi-1.81.6/vi/v_txt.c
+--- nvi-1.81.6.orig/vi/v_txt.c 2007-11-18 08:41:42.000000000 -0800
++++ nvi-1.81.6/vi/v_txt.c 2015-02-17 11:04:50.240596567 -0800
+@@ -2049,7 +2049,7 @@ retry: for (len = 0,
+ return (0);
+ case 1: /* One match. */
+ /* If something changed, do the exchange. */
+- nlen = STRLEN(cmd.argv[0]->bp);
++ nlen = NVI_STRLEN(cmd.argv[0]->bp);
+ if (len != nlen || MEMCMP(cmd.argv[0]->bp, p, len))
+ break;
+
diff --git a/app-editors/nvi/files/nvi-1.81.6-use_pkgconfig_for_ncurses.patch b/app-editors/nvi/files/nvi-1.81.6-use_pkgconfig_for_ncurses.patch
new file mode 100644
index 000000000000..a9bf7e0a06a4
--- /dev/null
+++ b/app-editors/nvi/files/nvi-1.81.6-use_pkgconfig_for_ncurses.patch
@@ -0,0 +1,30 @@
+diff -uNr nvi-1.81.6.orig/dist/configure.in nvi-1.81.6/dist/configure.in
+--- nvi-1.81.6.orig/dist/configure.in 2013-07-09 17:17:35.000000000 -0400
++++ nvi-1.81.6/dist/configure.in 2013-07-09 17:18:48.000000000 -0400
+@@ -263,11 +263,13 @@
+ [ --enable-gtk Build a Gtk front-end for vi.],
+ [vi_cv_gtk=$enableval], [vi_cv_gtk="no"])
+ AC_MSG_RESULT($vi_cv_gtk)
++
++#
++# Find pkg-config
++#
++AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
++
+ if test "$vi_cv_gtk" = "yes"; then
+- #
+- # Find pkg-config
+- #
+- AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+ if test x$PKG_CONFIG = xno ; then
+ if test "$vi_cv_widechar" = "yes"; then
+ AC_MSG_ERROR(
+@@ -531,7 +533,7 @@
+ [CURSHEADER=ncursesw/ncurses.h])
+ fi
+ vi_programs="vi $vi_programs"
+- CURSLIBS="-l$vi_cv_curses"
++ CURSLIBS=`$PKG_CONFIG --libs $vi_cv_curses`
+ else
+ AC_MSG_WARN([*** No suitable curses library found.])
+ if test "$vi_programs"X = X; then
diff --git a/app-editors/nvi/metadata.xml b/app-editors/nvi/metadata.xml
new file mode 100644
index 000000000000..f954e7f9956d
--- /dev/null
+++ b/app-editors/nvi/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>felix.janda@posteo.de</email>
+ <name>Felix Janda</name>
+ </maintainer>
+ <maintainer type="project">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+ </maintainer>
+</pkgmetadata>
diff --git a/app-editors/nvi/nvi-1.81.6-r7.ebuild b/app-editors/nvi/nvi-1.81.6-r7.ebuild
new file mode 100644
index 000000000000..cb13313dae92
--- /dev/null
+++ b/app-editors/nvi/nvi-1.81.6-r7.ebuild
@@ -0,0 +1,89 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit autotools db-use flag-o-matic
+
+DESCRIPTION="Vi clone"
+HOMEPAGE="https://sites.google.com/a/bostic.com/keithbostic/vi"
+SRC_URI="http://garage.linux.student.kuleuven.be/~skimo/nvi/devel/${P}.tar.bz2"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="alpha amd64 ~arm hppa ~mips ppc ppc64 sparc x86 ~x64-macos ~amd64-fbsd"
+IUSE="perl tcl unicode"
+
+CDEPEND=">=sys-libs/db-4.2.52_p5:=
+ >=sys-libs/ncurses-5.6-r2:=
+ perl? ( dev-lang/perl )
+ tcl? ( >=dev-lang/tcl-8.5:0= )"
+
+DEPEND="${CDEPEND}
+ virtual/pkgconfig"
+
+RDEPEND="${CDEPEND}
+ app-eselect/eselect-vi"
+
+REQUIRED_USE="tcl? ( !unicode )"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-strlen-macro-renaming.patch
+ "${FILESDIR}"/${P}-db44.patch
+ "${FILESDIR}"/${P}-db.patch
+ "${FILESDIR}"/${P}-perl-as-needed.patch
+ "${FILESDIR}"/${P}-perl-shortnames.patch
+ "${FILESDIR}"/${P}-ac_config_header.patch
+ "${FILESDIR}"/${P}-use_pkgconfig_for_ncurses.patch
+ "${FILESDIR}"/${P}-printf-types.patch
+ )
+
+src_prepare() {
+ default
+
+ cd dist || die
+ chmod +x findconfig || die
+
+ mv configure.{in,ac} || die
+ sed -i -e "s@-ldb@-l$(db_libname)@" configure.ac || die
+ sed -i -e "s@^install-\(.*\)-local:@install-\1-hook:@" Makefile.am || die
+ eautoreconf -Im4
+}
+
+src_configure() {
+ local myconf
+
+ use perl && myconf="${myconf} --enable-perlinterp"
+ use unicode && myconf="${myconf} --enable-widechar"
+ use tcl && myconf="${myconf} --enable-tclinterp"
+
+ append-cppflags "-D_PATH_MSGCAT=\"\\\"${EPREFIX%/}/usr/share/vi/catalog/\\\"\""
+ append-cppflags -I"$(db_includedir)"
+
+ # Darwin doesn't have stropts.h, bug #619416
+ [[ ${CHOST} == *-darwin* ]] && export vi_cv_sys5_pty=no
+
+ pushd dist 2>/dev/null || die
+ econf \
+ --program-prefix=n \
+ ${myconf}
+ popd 2>/dev/null || die
+}
+
+src_compile() {
+ emake -C dist
+}
+
+src_install() {
+ emake -C dist DESTDIR="${D}" install
+}
+
+pkg_postinst() {
+ einfo "Setting /usr/bin/vi symlink"
+ eselect vi update --if-unset
+}
+
+pkg_postrm() {
+ einfo "Updating /usr/bin/vi symlink"
+ eselect vi update --if-unset
+}