Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 14 Jan 2025 21:01:53 GMT
From:      Craig Leres <leres@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: ab0fed1b910a - main - editors/nvi2: Update to 26-Apr-2024 (52c07e8)
Message-ID:  <202501142101.50EL1rq1027499@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by leres:

URL: https://cgit.FreeBSD.org/ports/commit/?id=ab0fed1b910aa3192a3702f1361a98b706f2bacb

commit ab0fed1b910aa3192a3702f1361a98b706f2bacb
Author:     Craig Leres <leres@FreeBSD.org>
AuthorDate: 2025-01-14 21:01:28 +0000
Commit:     Craig Leres <leres@FreeBSD.org>
CommitDate: 2025-01-14 21:01:28 +0000

    editors/nvi2: Update to 26-Apr-2024 (52c07e8)
    
     - In ruler show the current line number as a percentage of the
       total lines
    
     - Link macro for hyperlink
    
     - Add showfilename set option
    
     - Fix undefined string comparison
    
     - Replace Clang-only __builtin_is_aligned with C code
    
     - Use memmove to realign buffers
---
 editors/nvi2/Makefile                     |   2 +-
 editors/nvi2/files/patch-CMakeLists.txt   |  10 ++
 editors/nvi2/files/patch-common_common.h  |  10 ++
 editors/nvi2/files/patch-common_log.c     |  46 +++++++++
 editors/nvi2/files/patch-common_mem.h     |  21 ++++
 editors/nvi2/files/patch-common_options.c |  20 ++++
 editors/nvi2/files/patch-man_vi.1         | 154 ++++++++++++++++++++++++++++++
 editors/nvi2/files/patch-vi_vs__refresh.c |  38 ++++++++
 8 files changed, 300 insertions(+), 1 deletion(-)

diff --git a/editors/nvi2/Makefile b/editors/nvi2/Makefile
index d049021e91de..52a484c9a8c9 100644
--- a/editors/nvi2/Makefile
+++ b/editors/nvi2/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	nvi2
 PORTVERSION=	2.2.1
-PORTREVISION=	2
+PORTREVISION=	3
 DISTVERSIONPREFIX=	v
 CATEGORIES=	editors
 
diff --git a/editors/nvi2/files/patch-CMakeLists.txt b/editors/nvi2/files/patch-CMakeLists.txt
new file mode 100644
index 000000000000..c84550ec0002
--- /dev/null
+++ b/editors/nvi2/files/patch-CMakeLists.txt
@@ -0,0 +1,10 @@
+--- CMakeLists.txt.orig	2023-09-25 08:47:42 UTC
++++ CMakeLists.txt
+@@ -37,7 +37,6 @@ add_compile_options($<$<CONFIG:Release>:-Wno-dangling-
+ endif()
+ add_compile_options($<$<CONFIG:Release>:-Wuninitialized>)
+ add_compile_options($<$<CONFIG:Release>:-Wno-dangling-else>)
+-add_compile_options(-Wno-string-compare)
+ add_compile_options(-Wstack-protector -fstack-protector)
+ add_compile_options(-Wstrict-aliasing -fstrict-aliasing)
+ 
diff --git a/editors/nvi2/files/patch-common_common.h b/editors/nvi2/files/patch-common_common.h
new file mode 100644
index 000000000000..86572d78dc07
--- /dev/null
+++ b/editors/nvi2/files/patch-common_common.h
@@ -0,0 +1,10 @@
+--- common/common.h.orig	2023-09-25 08:47:42 UTC
++++ common/common.h
+@@ -17,6 +17,7 @@
+ #include <db.h>
+ #endif
+ #include <regex.h>		/* May refer to the bundled regex. */
++#include <stdint.h>
+ 
+ /*
+  * Forward structure declarations.  Not pretty, but the include files
diff --git a/editors/nvi2/files/patch-common_log.c b/editors/nvi2/files/patch-common_log.c
new file mode 100644
index 000000000000..f46178eb34eb
--- /dev/null
+++ b/editors/nvi2/files/patch-common_log.c
@@ -0,0 +1,46 @@
+--- common/log.c.orig	2023-09-25 08:47:42 UTC
++++ common/log.c
+@@ -18,7 +18,6 @@
+ #include <fcntl.h>
+ #include <libgen.h>
+ #include <limits.h>
+-#include <stdint.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+@@ -706,30 +705,18 @@ apply_with(int (*db_func)(SCR *, recno_t, CHAR_T *, si
+     recno_t lno, u_char *p, size_t len)
+ {
+ #ifdef USE_WIDECHAR
+-	typedef unsigned long nword;
+-
+ 	static size_t blen;
+-	static nword *bp;
+-	nword *lp = (nword *)((uintptr_t)p / sizeof(nword) * sizeof(nword));
++	static u_char *bp;
+ 
+-	if (lp != (nword *)p) {
+-		int offl = ((uintptr_t)p - (uintptr_t)lp) << 3;
+-		int offr = (sizeof(nword) << 3) - offl;
+-		size_t i, cnt = (len + sizeof(nword) / 2) / sizeof(nword);
+-
++	if (!is_aligned(p, sizeof(unsigned long))) {
+ 		if (len > blen) {
+ 			blen = p2roundup(MAX(len, 512));
+-			REALLOC(sp, bp, nword *, blen);
++			REALLOC(sp, bp, u_char *, blen);
+ 			if (bp == NULL)
+ 				return (1);
+ 		}
+-		for (i = 0; i < cnt; ++i)
+-#if BYTE_ORDER == BIG_ENDIAN
+-			bp[i] = (lp[i] << offl) ^ (lp[i+1] >> offr);
+-#else
+-			bp[i] = (lp[i] >> offl) ^ (lp[i+1] << offr);
+-#endif
+-		p = (u_char *)bp;
++		memmove(bp, p, len);
++		p = bp;
+ 	}
+ #endif
+ 	return db_func(sp, lno, (CHAR_T *)p, len / sizeof(CHAR_T));
diff --git a/editors/nvi2/files/patch-common_mem.h b/editors/nvi2/files/patch-common_mem.h
new file mode 100644
index 000000000000..9b18726f8696
--- /dev/null
+++ b/editors/nvi2/files/patch-common_mem.h
@@ -0,0 +1,21 @@
+--- common/mem.h.orig	2023-09-25 08:47:42 UTC
++++ common/mem.h
+@@ -212,6 +212,18 @@ p2roundup(size_t n)
+ 	return (n);
+ }
+ 
++/*
++ * is_aligned --
++ *      Determine whether the program can safely read an object with an
++ *      alignment requirement from ptr.
++ *
++ * See also: https://clang.llvm.org/docs/LanguageExtensions.html#alignment-builtins
++ */
++static __inline int
++is_aligned(void *ptr, size_t alignment) {
++	return ((uintptr_t)ptr % alignment) == 0;
++}
++
+ /* Additional TAILQ helper. */
+ #define TAILQ_ENTRY_ISVALID(elm, field)					\
+ 	((elm)->field.tqe_prev != NULL)
diff --git a/editors/nvi2/files/patch-common_options.c b/editors/nvi2/files/patch-common_options.c
new file mode 100644
index 000000000000..9a9bb8ce3ad6
--- /dev/null
+++ b/editors/nvi2/files/patch-common_options.c
@@ -0,0 +1,20 @@
+--- common/options.c.orig	2023-09-25 08:47:42 UTC
++++ common/options.c
+@@ -181,6 +181,8 @@ OPTLIST const optlist[] = {
+ 	{L("shellmeta"),	NULL,		OPT_STR,	0},
+ /* O_SHIFTWIDTH	    4BSD */
+ 	{L("shiftwidth"),	NULL,		OPT_NUM,	OPT_NOZERO},
++/* O_SHOWFILENAME */
++	{L("showfilename"),	NULL,		OPT_0BOOL,	0},
+ /* O_SHOWMATCH	    4BSD */
+ 	{L("showmatch"),	NULL,		OPT_0BOOL,	0},
+ /* O_SHOWMODE	  4.4BSD */
+@@ -317,7 +319,7 @@ opts_init(SCR *sp, int *oargs)
+ 	/* Set numeric and string default values. */
+ #define	OI(indx, str) do {						\
+ 	a.len = STRLEN(str);						\
+-	if ((CHAR_T*)str != b2)	  /* GCC puts strings in text-space. */	\
++	if (STRCMP((CHAR_T*)str, b2) != 0)					\
+ 		(void)MEMCPY(b2, str, a.len+1);				\
+ 	if (opts_set(sp, argv, NULL)) {					\
+ 		 optindx = indx;					\
diff --git a/editors/nvi2/files/patch-man_vi.1 b/editors/nvi2/files/patch-man_vi.1
new file mode 100644
index 000000000000..7c62d402de6c
--- /dev/null
+++ b/editors/nvi2/files/patch-man_vi.1
@@ -0,0 +1,154 @@
+--- man/vi.1.orig	2023-09-25 08:47:42 UTC
++++ man/vi.1
+@@ -12,11 +12,13 @@
+ .\" that you would have purchased it, or if any company wishes to
+ .\" redistribute it, contributions to the authors would be appreciated.
+ .\"
+-.Dd November 2, 2013
++.Dd April 18, 2024
+ .Dt VI 1
+ .Os
+ .Sh NAME
+-.Nm ex , vi , view
++.Nm ex ,
++.Nm vi ,
++.Nm view
+ .Nd text editors
+ .Sh SYNOPSIS
+ .Nm ex
+@@ -302,7 +304,7 @@ will refuse to quit).
+ (if you've modified the file, but not saved your changes,
+ .Nm vi
+ will refuse to quit).
+-.It Cm :q!
++.It Cm :q\&!
+ Quit, discarding any modifications that you may have made.
+ .El
+ .Pp
+@@ -706,7 +708,7 @@ command being entered, or cancel it if it is only part
+ .Nm ex
+ command being entered, or cancel it if it is only partial.
+ .Pp
+-.It Aq Cm control-]
++.It Aq Cm control-\(rB
+ Push a tag reference onto the tag stack.
+ .Pp
+ .It Aq Cm control-\(ha
+@@ -830,7 +832,7 @@ to the position of the cursor before the last of the f
+ to the position of the cursor before the last of the following commands:
+ .Aq Cm control-A ,
+ .Aq Cm control-T ,
+-.Aq Cm control-] ,
++.Aq Cm control-\(rB ,
+ .Cm % ,
+ .Cm \(aq ,
+ .Cm \` ,
+@@ -1809,8 +1811,8 @@ Display buffers, Cscope connections, screens or tags.
+ .Op Ar +cmd
+ .Op Ar file
+ .Xc
+-Edit a different file. The capitalized command opens a new screen below the
+-current screen.
++Edit a different file.
++The capitalized command opens a new screen below the current screen.
+ .Pp
+ .It Xo
+ .Cm exu Ns Op Cm sage
+@@ -1833,8 +1835,8 @@ mode only.
+ .Xc
+ .Nm vi
+ mode only.
+-Foreground the specified screen. The capitalized command opens a new screen
+-below the current screen.
++Foreground the specified screen.
++The capitalized command opens a new screen below the current screen.
+ .Pp
+ .It Xo
+ .Op Ar range
+@@ -1921,8 +1923,8 @@ Write the abbreviations, editor options and maps to th
+ .Op Cm !\&
+ .Op Ar
+ .Xc
+-Edit the next file from the argument list. The capitalized command opens a
+-new screen below the current screen.
++Edit the next file from the argument list.
++The capitalized command opens a new screen below the current screen.
+ .\" .Pp
+ .\" .It Xo
+ .\" .Op Ar line
+@@ -1943,8 +1945,8 @@ option.
+ .Cm rev Ns Op Cm ious Ns
+ .Op Cm !\&
+ .Xc
+-Edit the previous file from the argument list. The capitalized command opens
+-a new screen below the current screen.
++Edit the previous file from the argument list.
++The capitalized command opens a new screen below the current screen.
+ .Pp
+ .It Xo
+ .Op Ar range
+@@ -2107,8 +2109,8 @@ character is usually
+ .Op Cm !\&
+ .Ar tagstring
+ .Xc
+-Edit the file containing the specified tag. The capitalized command opens a
+-new screen below the current screen.
++Edit the file containing the specified tag.
++The capitalized command opens a new screen below the current screen.
+ .Pp
+ .It Xo
+ .Cm tagn Ns Op Cm ext Ns
+@@ -2178,8 +2180,8 @@ Enter
+ .Op Ar file
+ .Xc
+ .Nm vi
+-mode only. Edit a different file by opening a new screen below the current
+-screen.
++mode only.
++Edit a different file by opening a new screen below the current screen.
+ .Pp
+ .It Xo
+ .Cm viu Ns Op Cm sage
+@@ -2226,7 +2228,8 @@ overwrites a different, preexisting file.
+ .Sq !\&
+ overwrites a different, preexisting file.
+ .Sq >>
+-appends to a file that may preexist. Whitespace followed by
++appends to a file that may preexist.
++Whitespace followed by
+ .Sq !\&
+ pipes the file to
+ .Ar shell-command .
+@@ -2479,7 +2482,7 @@ only.
+ .It Cm ruler Bq off
+ .Nm vi
+ only.
+-Display a row/column ruler on the colon command line.
++Display a row/column/percentage ruler on the colon command line.
+ .It Cm scroll , scr Bq "window size / 2"
+ Set the number of lines scrolled.
+ .It Cm searchincr Bq off
+@@ -2505,6 +2508,10 @@ Set the autoindent and shift command indentation width
+ is necessary.
+ .It Cm shiftwidth , sw Bq 8
+ Set the autoindent and shift command indentation width.
++.It Cm showfilename Bq off
++.Nm vi
++only.
++Display the file name on the colon command line.
+ .It Cm showmatch , sm Bq off
+ .Nm vi
+ only.
+@@ -2773,10 +2780,8 @@ and \*(Gt0 if an error occurs.
+ .Xr ctags 1 ,
+ .Xr iconv 1 ,
+ .Xr re_format 7
+-.Rs
+-.%T vi/ex reference manual
+-.%U https://docs.freebsd.org/44doc/usd/13.viref/paper.pdf
+-.Re
++.Pp
++.Lk https://docs.freebsd.org/44doc/usd/13.viref/paper.pdf "Vi/Ex Reference Manual"
+ .Sh STANDARDS
+ .Nm nex Ns / Ns Nm nvi
+ is close to
diff --git a/editors/nvi2/files/patch-vi_vs__refresh.c b/editors/nvi2/files/patch-vi_vs__refresh.c
new file mode 100644
index 000000000000..83f18b0333c5
--- /dev/null
+++ b/editors/nvi2/files/patch-vi_vs__refresh.c
@@ -0,0 +1,38 @@
+--- vi/vs_refresh.c.orig	2023-09-25 08:47:42 UTC
++++ vi/vs_refresh.c
+@@ -774,7 +774,8 @@ vs_modeline(SCR *sp)
+ 	size_t cols, curcol, curlen, endpoint, len, midpoint;
+ 	const char *t = NULL;
+ 	int ellipsis;
+-	char buf[20];
++	char buf[30];
++	recno_t last;
+ 
+ 	gp = sp->gp;
+ 
+@@ -795,7 +796,7 @@ vs_modeline(SCR *sp)
+ 
+ 	/* If more than one screen in the display, show the file name. */
+ 	curlen = 0;
+-	if (IS_SPLIT(sp)) {
++	if (IS_SPLIT(sp) || O_ISSET(sp, O_SHOWFILENAME)) {
+ 		CHAR_T *wp, *p;
+ 		size_t l;
+ 
+@@ -846,8 +847,14 @@ vs_modeline(SCR *sp)
+ 	cols = sp->cols - 1;
+ 	if (O_ISSET(sp, O_RULER)) {
+ 		vs_column(sp, &curcol);
+-		len = snprintf(buf, sizeof(buf), "%lu,%lu",
+-		    (u_long)sp->lno, (u_long)(curcol + 1));
++
++		if (db_last(sp, &last) || last == 0)
++			len = snprintf(buf, sizeof(buf), "%lu,%zu",
++			    (u_long)sp->lno, curcol + 1);
++		else
++			len = snprintf(buf, sizeof(buf), "%lu,%zu %lu%%",
++			    (u_long)sp->lno, curcol + 1,
++			    (u_long)(sp->lno * 100) / last);
+ 
+ 		midpoint = (cols - ((len + 1) / 2)) / 2;
+ 		if (curlen < midpoint) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202501142101.50EL1rq1027499>