Commit: f7071ad7531e3bd2b08a8cbf70c30cd097d43332 Parent: d223a4d0b388c6a67618acd05f524c6fdd685d7e Author: 0x766F6964 Date: Fri, 21 Feb 2020 23:42:59 -0700 add app-editors/nvi this still works. I don't know why it is being removed from the main repo. in the future I'll look into porting the OpenBSD fork. Diffstat:
11 files changed, 880 insertions(+), 0 deletions(-)
diff --git a/app-editors/nvi/Manifest b/app-editors/nvi/Manifest @@ -0,0 +1 @@ +DIST nvi-1.81.6.tar.bz2 1758309 BLAKE2B 7aa9b1a7f5337bb246a4a8779180830efd2fb1cfeda2c0d5fc153393cd683237cdfc2a69ac22b228629561ae2222d4eb36746fae4dfb6b9ff44945265988929a SHA512 7e203f7ea6723427d18ff55361254991f50d395f89aab2ea52d0902c474acb24c289da7c35d9e907d652145f13483d8a8270f5c8ee72bd723a3b1eaeecc4f9fd 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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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/nvi-1.81.6-r7.ebuild b/app-editors/nvi/nvi-1.81.6-r7.ebuild @@ -0,0 +1,89 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +inherit autotools db-use flag-o-matic + +DESCRIPTION="Re-implementation of the classic 4BSD ex/vi" +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" +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 +} diff --git a/virtual/editor/editor-0-r3.ebuild b/virtual/editor/editor-0-r3.ebuild @@ -0,0 +1,57 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 + +DESCRIPTION="Virtual for editor" +SLOT="0" +KEYWORDS="~alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 ~riscv s390 sh sparc x86 ~ppc-aix ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris" + +# Add a package to RDEPEND only if the editor: +# - can edit ordinary text files, +# - works on the console, +# - is a "display" or "visual" editor (e.g., using ncurses). + +RDEPEND="|| ( + app-editors/nano + app-editors/dav + app-editors/e3 + app-editors/ee + app-editors/elvis + app-editors/emacs:* + app-editors/emact + app-editors/ersatz-emacs + app-editors/fe + app-editors/jasspa-microemacs + app-editors/jed + app-editors/joe + app-editors/jove + app-editors/kakoune + app-editors/le + app-editors/levee + app-editors/lpe + app-editors/mg + app-editors/moe + app-editors/ne + app-editors/neovim + app-editors/ng + app-editors/nvi + app-editors/qemacs + app-editors/teco + app-editors/uemacs-pk + app-editors/vile + app-editors/vim + app-editors/gvim + app-editors/vis + app-editors/xemacs + app-editors/zile + app-misc/mc[edit] + dev-lisp/cmucl + mail-client/alpine[-onlyalpine] +)" + +# Packages outside app-editors providing an editor: +# app-misc/mc: mcedit (#62643) +# dev-lisp/cmucl: hemlock +# mail-client/alpine: pico +# sys-apps/busybox: vi