tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: [Patch] Switch nvi from bundled regex to tre



I've proposed to switch nvi from its bundled regex to tre for better
searching multibyte strings. For this purpose, I'm planning to make
tre usable from userland by installing headers etc.

This time, I've updated patch for tre (nvi parts are left untouched):

- change ABI and bump shlib_version

Currently, tre is compiled with TRE_USE_SYSTEM_REGEX_H, by which it
borrows definitions of flags etc from /usr/include/regex.h. This means
that ABI is somehow obscurely changed when libc's regex is modified.

To make things clear, I prefer not using TRE_USE_SYSTEM_REGEX_H and
defining everything necessary by its own. This brings about ABI changes
for libtre. This may not break everything, since it is used only by its
bundled utility, agrep(1), at this moment.

- Regen config.h and tm-config.h

In order to stop using TRE_USE_SYSTEM_REGEX_H, autotools stuffs are
regenerated. Also, according to external/bsd/tre/lib/Makefile, tre is
configured not to use alloca(3), but it is actually not. This change
also fixes it. (By this change some feature-test macros like
HAVE_INTTYPES_H are disabled. This seems strange, but these macros are
not actually referenced by sources.)

- Install documents and pkgconfig file

Any comments or suggestions are welcomed not only for this parts, but
also for changes for nvi.

Without any objections, I will commit them in the weekend.

rin

On 2017/11/13 13:24, Rin Okuyama wrote:
By default, nvi uses its bundled regex which handles wchar_t strings.
However, it is still buggy for wide chars. On the other hand, tre also
provides wchar_t version of regex routines, that are "much better" as
I can see. For example, bracket expressions work fine at least for
ja_JP.UTF-8 and ja_JP.eucJP locales, that do not with the nvi-bundled
regex. I therefore propose to switch nvi from the bundled regex to tre.
For this purpose,

- Install headers from tre into /usr/include/tre, that may also be
  useful for 3rd party softwares.
  (Alternatively: do not install them, and nvi uses them directly from
  external/bsd/tre/somewhere)

- Build /rescue/vi (and other crunched-binary versions of nvi in
  miniroot) with USE_WIDECHAR == "no" in order not to link the extra
  library into them. Actually, this is not a real problem; they cannot
  handle wide chars even if they are built with USE_WIDECHAR == "yes",
  because locale stuffs in libc do not work for statically-linked
  binaries.

Any comments or suggestions?

rin
diff -Naru external/bsd/tre/Makefile.orig external/bsd/tre/Makefile
--- external/bsd/tre/Makefile.orig	2011-11-06 07:39:12.000000000 +0900
+++ external/bsd/tre/Makefile	2017-11-15 01:32:08.469874617 +0900
@@ -1,3 +1,3 @@
 # $NetBSD: Makefile,v 1.1 2011/11/05 22:39:12 christos Exp $
-SUBDIR=	lib .WAIT bin
+SUBDIR=	lib .WAIT bin doc
 .include "bsd.subdir.mk"
diff -Naru external/bsd/tre/Makefile.inc.orig external/bsd/tre/Makefile.inc
--- external/bsd/tre/Makefile.inc.orig	2011-11-06 07:39:12.000000000 +0900
+++ external/bsd/tre/Makefile.inc	2017-11-14 21:49:18.685280836 +0900
@@ -6,8 +6,5 @@
 
 CPPFLAGS+=	-I${TREDIST}/lib -I${.CURDIR}/../include
 CPPFLAGS+=	-DHAVE_CONFIG_H=1
-CPPFLAGS+=	-DTRE_SYSTEM_REGEX_H_PATH=\"${NETBSDSRCDIR}/include/regex.h\"
-CPPFLAGS+=	-DTRE_USE_SYSTEM_REGEX_H=1
-
 
 WARNS=	4
diff -Naru external/bsd/tre/dist/lib/tre.h.orig external/bsd/tre/dist/lib/tre.h
--- external/bsd/tre/dist/lib/tre.h.orig	2011-11-06 07:39:13.000000000 +0900
+++ external/bsd/tre/dist/lib/tre.h	2017-11-14 21:51:51.487785598 +0900
@@ -98,7 +98,8 @@
   REG_BADBR,		/* Invalid content of {} */
   REG_ERANGE,		/* Invalid use of range operator */
   REG_ESPACE,		/* Out of memory.  */
-  REG_BADRPT            /* Invalid use of repetition operators. */
+  REG_BADRPT,           /* Invalid use of repetition operators. */
+  REG_INVARG            /* Invalid arguments. */
 } reg_errcode_t;
 
 /* POSIX tre_regcomp() flags. */
@@ -121,6 +122,9 @@
 #define REG_APPROX_MATCHER	 (REG_NOTEOL << 1)
 #define REG_BACKTRACKING_MATCHER (REG_APPROX_MATCHER << 1)
 
+/* BSD extension tre_regexec() flag. */
+#define REG_STARTEND (REG_BACKTRACKING_MATCHER << 1)
+
 #endif /* !TRE_USE_SYSTEM_REGEX_H */
 
 /* REG_NOSPEC and REG_LITERAL mean the same thing. */
diff -Naru external/bsd/tre/doc/Makefile.orig external/bsd/tre/doc/Makefile
--- external/bsd/tre/doc/Makefile.orig	1970-01-01 09:00:00.000000000 +0900
+++ external/bsd/tre/doc/Makefile	2017-11-15 01:29:51.626326196 +0900
@@ -0,0 +1,12 @@
+# $NetBSD$
+
+.include <bsd.init.mk>
+
+.PATH:	${TREDIST}/doc
+
+.if ${MKDOC} != "no"
+FILESDIR=	/usr/share/doc/reference/ref3/tre
+FILES=		default.css tre-api.html tre-syntax.html
+.endif
+
+.include <bsd.files.mk>
diff -Naru external/bsd/tre/include/config.h.orig external/bsd/tre/include/config.h
--- external/bsd/tre/include/config.h.orig	2011-11-06 07:39:13.000000000 +0900
+++ external/bsd/tre/include/config.h	2017-11-14 22:08:29.299809132 +0900
@@ -14,7 +14,7 @@
 /* #undef ENABLE_NLS */
 
 /* Define to 1 if you have `alloca', as a function or macro. */
-#define HAVE_ALLOCA 1
+/* #undef HAVE_ALLOCA */
 
 /* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
    */
@@ -48,7 +48,7 @@
 #define HAVE_ICONV 1
 
 /* Define to 1 if you have the <inttypes.h> header file. */
-#define HAVE_INTTYPES_H 1
+/* #undef HAVE_INTTYPES_H */
 
 /* Define to 1 if you have the `isascii' function. */
 #define HAVE_ISASCII 1
@@ -81,34 +81,34 @@
 #define HAVE_MBSTATE_T 1
 
 /* Define to 1 if you have the `mbtowc' function or macro. */
-#define HAVE_MBTOWC 1
+/* #undef HAVE_MBTOWC */
 
 /* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
+/* #undef HAVE_MEMORY_H */
 
 /* Define to 1 if you have the <regex.h> header file. */
-#define HAVE_REGEX_H 1
+/* #undef HAVE_REGEX_H */
 
 /* Define to 1 if the system has the type `reg_errcode_t'. */
 /* #undef HAVE_REG_ERRCODE_T */
 
 /* Define to 1 if you have the <stdint.h> header file. */
-#define HAVE_STDINT_H 1
+/* #undef HAVE_STDINT_H */
 
 /* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
+/* #undef HAVE_STDLIB_H */
 
 /* Define to 1 if you have the <strings.h> header file. */
-#define HAVE_STRINGS_H 1
+/* #undef HAVE_STRINGS_H */
 
 /* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
+/* #undef HAVE_STRING_H */
 
 /* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
+/* #undef HAVE_SYS_STAT_H */
 
 /* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
+/* #undef HAVE_SYS_TYPES_H */
 
 /* Define to 1 if you have the `towlower' function or macro. */
 #define HAVE_TOWLOWER 1
@@ -117,7 +117,7 @@
 #define HAVE_TOWUPPER 1
 
 /* Define to 1 if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
+/* #undef HAVE_UNISTD_H */
 
 /* Define to 1 if you have the <wchar.h> header file. */
 #define HAVE_WCHAR_H 1
@@ -141,7 +141,7 @@
 #define HAVE_WCSRTOMBS 1
 
 /* Define to 1 if you have the `wcstombs' function or macro. */
-#define HAVE_WCSTOMBS 1
+/* #undef HAVE_WCSTOMBS */
 
 /* Define to 1 if you have the `wctype' function or macro. */
 #define HAVE_WCTYPE 1
@@ -198,14 +198,14 @@
 
 /* Define to a field in the regex_t struct where TRE should store a pointer to
    the internal tre_tnfa_t structure */
-#define TRE_REGEX_T_FIELD re_g
+#define TRE_REGEX_T_FIELD value
 
 /* Define to the absolute path to the system regex.h */
 /* #undef TRE_SYSTEM_REGEX_H_PATH */
 
 /* Define if you want TRE to use alloca() instead of malloc() when allocating
    memory needed for regexec operations. */
-#define TRE_USE_ALLOCA 1
+/* #undef TRE_USE_ALLOCA */
 
 /* Define to include the system regex.h from TRE regex.h */
 /* #undef TRE_USE_SYSTEM_REGEX_H */
@@ -232,7 +232,7 @@
 /* #undef WCHAR_MAX */
 
 /* Define if wchar_t is signed */
-#define WCHAR_T_SIGNED 1
+/* #undef WCHAR_T_SIGNED */
 
 /* Define if wchar_t is unsigned */
 /* #undef WCHAR_T_UNSIGNED */
diff -Naru external/bsd/tre/include/tre-config.h.orig external/bsd/tre/include/tre-config.h
--- external/bsd/tre/include/tre-config.h.orig	2011-11-06 07:39:13.000000000 +0900
+++ external/bsd/tre/include/tre-config.h	2017-11-14 22:08:36.129772619 +0900
@@ -11,7 +11,7 @@
 /* #undef HAVE_REG_ERRCODE_T */
 
 /* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
+/* #undef HAVE_SYS_TYPES_H */
 
 /* Define to 1 if you have the <wchar.h> header file. */
 #define HAVE_WCHAR_H 1
diff -Naru external/bsd/tre/lib/Makefile.orig external/bsd/tre/lib/Makefile
--- external/bsd/tre/lib/Makefile.orig	2011-11-06 19:55:27.000000000 +0900
+++ external/bsd/tre/lib/Makefile	2017-11-15 03:12:20.065538204 +0900
@@ -5,12 +5,14 @@
 #	./configure --prefix=/usr --without-alloca
 
 .include <bsd.own.mk>
-TREDIST=	${.CURDIR}/../dist
+TREDIR=	${.CURDIR}/..
 
 # external tre sources
-.PATH: ${TREDIST}/lib
+.PATH:	${TREDIR}/dist/lib
+.PATH:	${TREDIR}/include
 
 CPPFLAGS+=	-I${.CURDIR}
+CFLAGS+=	-Wno-stack-protector
 
 LIB=	tre
 
@@ -21,6 +23,23 @@
 
 WARNS=	4
 
-.include <bsd.lib.mk>
+INCS=	regex.h tre-config.h tre.h
+INCSDIR=/usr/include/tre
 
-CFLAGS+=	-Wno-stack-protector
+FILES+=			tre.pc
+FILESOWN_tre.pc=	${BINOWN}
+FILESGRP_tre.pc=	${BINGRP}
+FILESMODE_tre.pc=	${NONBINMODE}
+FILESDIR_tre.pc=	/usr/lib/pkgconfig
+CLEANFILES+=		tre.pc
+
+tre.pc:	config.h tre.pc.in
+	@(V=$$( (echo '#include "config.h"'; echo TRE_VERSION) | \
+	    ${HOST_CC} -E -I${TREDIR}/include - | tail -1 | tr -d '"') && \
+	    ${TOOL_SED} -e s/@VERSION@/$$V/ < ${.CURDIR}/tre.pc.in \
+	    > ${.TARGET})
+
+all: tre.pc
+dependall: all
+
+.include <bsd.lib.mk>
diff -Naru external/bsd/tre/lib/shlib_version.orig external/bsd/tre/lib/shlib_version
--- external/bsd/tre/lib/shlib_version.orig	2011-11-06 07:39:13.000000000 +0900
+++ external/bsd/tre/lib/shlib_version	2017-11-14 21:49:07.353647508 +0900
@@ -1,2 +1,2 @@
-major=0
-minor=8
+major=1
+minor=0
diff -Naru external/bsd/tre/lib/tre.pc.in.orig external/bsd/tre/lib/tre.pc.in
--- external/bsd/tre/lib/tre.pc.in.orig	1970-01-01 09:00:00.000000000 +0900
+++ external/bsd/tre/lib/tre.pc.in	2017-11-15 03:06:04.320924817 +0900
@@ -0,0 +1,10 @@
+prefix=/usr
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: TRE
+Description: TRE regexp matching library
+Version: @VERSION@
+Libs: -L${libdir} -ltre   
+Cflags: -I${includedir} 
Index: distrib/sets/lists/base/mi
===================================================================
RCS file: /home/netbsd/src/distrib/sets/lists/base/mi,v
retrieving revision 1.1164
diff -u -r1.1164 mi
--- distrib/sets/lists/base/mi	24 Oct 2017 02:22:09 -0000	1.1164
+++ distrib/sets/lists/base/mi	14 Nov 2017 16:55:06 -0000
@@ -1219,6 +1219,7 @@
 ./usr/include/ss				base-obsolete		obsolete
 ./usr/include/ssp				base-c-usr
 ./usr/include/sys				base-c-usr
+./usr/include/tre				base-c-usr
 ./usr/include/trousers				base-c-usr
 ./usr/include/tss				base-c-usr
 ./usr/include/ufs				base-c-usr
@@ -2100,6 +2101,7 @@
 ./usr/share/doc/reference/ref3/sockets		base-psd-share
 ./usr/share/doc/reference/ref3/sockets-advanced	base-psd-share
 ./usr/share/doc/reference/ref3/sysman		base-psd-share
+./usr/share/doc/reference/ref3/tre		base-htmldoc-share
 ./usr/share/doc/reference/ref4			base-sys-share
 ./usr/share/doc/reference/ref5			base-sys-share
 ./usr/share/doc/reference/ref5/timed		base-smm-share
Index: distrib/sets/lists/base/shl.mi
===================================================================
RCS file: /home/netbsd/src/distrib/sets/lists/base/shl.mi,v
retrieving revision 1.824
diff -u -r1.824 shl.mi
--- distrib/sets/lists/base/shl.mi	25 Oct 2017 06:32:59 -0000	1.824
+++ distrib/sets/lists/base/shl.mi	14 Nov 2017 13:49:46 -0000
@@ -816,8 +816,8 @@
 ./usr/lib/libtpm_unseal.so.1			base-sys-shlib		compatfile,tpm
 ./usr/lib/libtpm_unseal.so.1.0			base-sys-shlib		compatfile,tpm
 ./usr/lib/libtre.so				base-sys-shlib		compatfile
-./usr/lib/libtre.so.0				base-sys-shlib		compatfile
-./usr/lib/libtre.so.0.8				base-sys-shlib		compatfile
+./usr/lib/libtre.so.1				base-sys-shlib		compatfile
+./usr/lib/libtre.so.1.0				base-sys-shlib		compatfile
 ./usr/lib/libtspi.so				base-sys-shlib		compatfile,tpm
 ./usr/lib/libtspi.so.3				base-sys-shlib		compatfile,tpm
 ./usr/lib/libtspi.so.3.0			base-sys-shlib		compatfile,tpm
Index: distrib/sets/lists/comp/mi
===================================================================
RCS file: /home/netbsd/src/distrib/sets/lists/comp/mi,v
retrieving revision 1.2159
diff -u -r1.2159 mi
--- distrib/sets/lists/comp/mi	7 Nov 2017 22:20:05 -0000	1.2159
+++ distrib/sets/lists/comp/mi	14 Nov 2017 16:34:32 -0000
@@ -3024,6 +3024,9 @@
 ./usr/include/termios.h				comp-c-include
 ./usr/include/threadlib.h			comp-obsolete		obsolete
 ./usr/include/time.h				comp-c-include
+./usr/include/tre/regex.h			comp-c-include
+./usr/include/tre/tre-config.h			comp-c-include
+./usr/include/tre/tre.h				comp-c-include
 ./usr/include/trousers/trousers.h		comp-c-include		tpm
 ./usr/include/trousers/tss.h			comp-c-include		tpm
 ./usr/include/tss/compat11b.h			comp-c-include		tpm
@@ -3689,6 +3692,7 @@
 ./usr/lib/pkgconfig/lutok.pc			comp-crypto-lib		kyua,share
 ./usr/lib/pkgconfig/openssl.pc			comp-crypto-lib		share
 ./usr/lib/pkgconfig/sqlite3.pc			comp-c-lib
+./usr/lib/pkgconfig/tre.pc			comp-c-lib
 ./usr/lib/pkgconfig/zlib.pc			comp-c-lib
 ./usr/libdata/ldscripts/kmodule			comp-util-share		binutils,kmod
 ./usr/libdata/lint/llib-larchive.ln		comp-c-lintlib		lint
Index: distrib/sets/lists/debug/shl.mi
===================================================================
RCS file: /home/netbsd/src/distrib/sets/lists/debug/shl.mi,v
retrieving revision 1.187
diff -u -r1.187 shl.mi
--- distrib/sets/lists/debug/shl.mi	4 Nov 2017 16:21:49 -0000	1.187
+++ distrib/sets/lists/debug/shl.mi	14 Nov 2017 13:52:22 -0000
@@ -275,7 +275,7 @@
 ./usr/libdata/debug/usr/lib/libstdc++.so.8.0.debug		comp-sys-debug	debug,compatfile,gcc=53,cxx,libstdcxx
 ./usr/libdata/debug/usr/lib/libterminfo.so.1.0.debug		comp-sys-debug	debug,compatfile
 ./usr/libdata/debug/usr/lib/libtpm_unseal.so.1.0.debug		comp-tpm-debug	debug,compatfile,tpm
-./usr/libdata/debug/usr/lib/libtre.so.0.8.debug			comp-sys-debug	debug,compatfile
+./usr/libdata/debug/usr/lib/libtre.so.1.0.debug			comp-sys-debug	debug,compatfile
 ./usr/libdata/debug/usr/lib/libtspi.so.3.0.debug		comp-tpm-debug	debug,compatfile,tpm
 ./usr/libdata/debug/usr/lib/libubsan.so.1.0.debug		comp-sys-debug	debug,compatfile,gcc=53
 ./usr/libdata/debug/usr/lib/libukfs.so.1.0.debug		comp-sys-debug	debug,compatfile,rump
Index: distrib/sets/lists/misc/mi
===================================================================
RCS file: /home/netbsd/src/distrib/sets/lists/misc/mi,v
retrieving revision 1.205
diff -u -r1.205 mi
--- distrib/sets/lists/misc/mi	21 May 2017 15:28:38 -0000	1.205
+++ distrib/sets/lists/misc/mi	14 Nov 2017 16:52:22 -0000
@@ -749,6 +749,9 @@
 ./usr/share/doc/reference/ref3/sysman/sysman7.png		misc-psd-doc		doc,html,groffhtmldoc
 ./usr/share/doc/reference/ref3/sysman/sysman8.png		misc-psd-doc		doc,html,groffhtmldoc
 ./usr/share/doc/reference/ref3/sysman/sysman9.png		misc-psd-doc		doc,html,groffhtmldoc
+./usr/share/doc/reference/ref3/tre/default.css			misc-reference-share	doc
+./usr/share/doc/reference/ref3/tre/tre-api.html			misc-reference-share	doc
+./usr/share/doc/reference/ref3/tre/tre-syntax.html		misc-reference-share	doc
 ./usr/share/doc/reference/ref5/timed/timed.html			misc-smm-doc		doc,html,groffhtmldoc
 ./usr/share/doc/reference/ref5/timed/timed.ps.gz		misc-smm-doc		doc
 ./usr/share/doc/reference/ref5/timed/timed.txt			misc-smm-doc		doc
Index: etc/mtree/NetBSD.dist.base
===================================================================
RCS file: /home/netbsd/src/etc/mtree/NetBSD.dist.base,v
retrieving revision 1.163
diff -u -r1.163 NetBSD.dist.base
--- etc/mtree/NetBSD.dist.base	21 Oct 2017 05:30:48 -0000	1.163
+++ etc/mtree/NetBSD.dist.base	14 Nov 2017 16:53:40 -0000
@@ -235,6 +235,7 @@
 ./usr/include/security
 ./usr/include/ssp
 ./usr/include/sys
+./usr/include/tre
 ./usr/include/trousers
 ./usr/include/tss
 ./usr/include/ufs
@@ -323,6 +324,7 @@
 ./usr/share/doc/reference/ref3/sockets
 ./usr/share/doc/reference/ref3/sockets-advanced
 ./usr/share/doc/reference/ref3/sysman
+./usr/share/doc/reference/ref3/tre
 ./usr/share/doc/reference/ref4
 ./usr/share/doc/reference/ref5
 ./usr/share/doc/reference/ref5/timed
Index: external/bsd/nvi/dist/common/multibyte.h
===================================================================
RCS file: /cvsroot/src/external/bsd/nvi/dist/common/multibyte.h,v
retrieving revision 1.4
diff -u -r1.4 multibyte.h
--- external/bsd/nvi/dist/common/multibyte.h	13 Nov 2017 01:34:59 -0000	1.4
+++ external/bsd/nvi/dist/common/multibyte.h	13 Nov 2017 08:42:01 -0000
@@ -113,4 +113,12 @@
 	((void *)((char *)MEMCPY(p, t, len) + (len) * sizeof(*(p))))
 #define SIZE(w)		(sizeof(w)/sizeof(*w))
 
+#if defined(USE_WIDECHAR) && defined(HAVE_TRE)
+#define	REGCOMP	regwcomp
+#define	REGEXEC	regwexec
+#else
+#define	REGCOMP	regcomp
+#define	REGEXEC	regexec
+#endif
+
 #endif
Index: external/bsd/nvi/dist/common/search.c
===================================================================
RCS file: /cvsroot/src/external/bsd/nvi/dist/common/search.c,v
retrieving revision 1.3
diff -u -r1.3 search.c
--- external/bsd/nvi/dist/common/search.c	26 Jan 2014 21:43:45 -0000	1.3
+++ external/bsd/nvi/dist/common/search.c	13 Nov 2017 08:42:02 -0000
@@ -237,7 +237,7 @@
 		    lno, coff, len != 0 ? len - 1 : len);
 #endif
 		/* Search the line. */
-		eval = regexec(&sp->re_c, l, 1, match,
+		eval = REGEXEC(&sp->re_c, l, 1, match,
 		    (match[0].rm_so == 0 ? 0 : REG_NOTBOL) | REG_STARTEND);
 		if (eval == REG_NOMATCH)
 			continue;
@@ -374,7 +374,7 @@
 		    "B search: %lu from 0 to %qu\n", lno, match[0].rm_eo);
 #endif
 		/* Search the line. */
-		eval = regexec(&sp->re_c, l, 1, match,
+		eval = REGEXEC(&sp->re_c, l, 1, match,
 		    ((size_t)match[0].rm_eo == len ? 0 : REG_NOTEOL) | REG_STARTEND);
 		if (eval == REG_NOMATCH)
 			continue;
@@ -409,7 +409,7 @@
 			if ((size_t)match[0].rm_so >= len)
 				break;
 			match[0].rm_eo = len;
-			eval = regexec(&sp->re_c, l, 1, match,
+			eval = REGEXEC(&sp->re_c, l, 1, match,
 			    (match[0].rm_so == 0 ? 0 : REG_NOTBOL) |
 			    REG_STARTEND);
 			if (eval == REG_NOMATCH)
Index: external/bsd/nvi/dist/ex/ex_global.c
===================================================================
RCS file: /cvsroot/src/external/bsd/nvi/dist/ex/ex_global.c,v
retrieving revision 1.5
diff -u -r1.5 ex_global.c
--- external/bsd/nvi/dist/ex/ex_global.c	26 Jan 2014 21:43:45 -0000	1.5
+++ external/bsd/nvi/dist/ex/ex_global.c	13 Nov 2017 08:42:02 -0000
@@ -216,7 +216,7 @@
 		match[0].rm_so = 0;
 		match[0].rm_eo = len;
 		switch (eval =
-		    regexec(&sp->re_c, dbp, 0, match, REG_STARTEND)) {
+		    REGEXEC(&sp->re_c, dbp, 0, match, REG_STARTEND)) {
 		case 0:
 			if (cmd == V)
 				continue;
Index: external/bsd/nvi/dist/ex/ex_subst.c
===================================================================
RCS file: /cvsroot/src/external/bsd/nvi/dist/ex/ex_subst.c,v
retrieving revision 1.4
diff -u -r1.4 ex_subst.c
--- external/bsd/nvi/dist/ex/ex_subst.c	26 Jan 2014 21:43:45 -0000	1.4
+++ external/bsd/nvi/dist/ex/ex_subst.c	13 Nov 2017 08:42:02 -0000
@@ -557,7 +557,7 @@
 		match[0].rm_eo = len;
 
 		/* Get the next match. */
-		eval = regexec(re, st + offset, 10, match, eflags);
+		eval = REGEXEC(re, st + offset, 10, match, eflags);
 
 		/*
 		 * There wasn't a match or if there was an error, deal with
@@ -992,7 +992,7 @@
 	 * Regcomp isn't 8-bit clean, so we just lost if the pattern
 	 * contained a nul.  Bummer!
 	 */
-	if ((rval = regcomp(rep, ptrn, /* plen, */ reflags)) != 0) {
+	if ((rval = REGCOMP(rep, ptrn, /* plen, */ reflags)) != 0) {
 		if (LF_ISSET(SEARCH_MSG))
 			re_error(sp, rval, rep); 
 		return (1);
Index: external/bsd/nvi/usr.bin/nvi/Makefile
===================================================================
RCS file: /cvsroot/src/external/bsd/nvi/usr.bin/nvi/Makefile,v
retrieving revision 1.12
diff -u -r1.12 Makefile
--- external/bsd/nvi/usr.bin/nvi/Makefile	13 Nov 2017 04:09:41 -0000	1.12
+++ external/bsd/nvi/usr.bin/nvi/Makefile	13 Nov 2017 08:42:02 -0000
@@ -2,7 +2,11 @@
 
 .include <bsd.own.mk>
 
+.ifndef SMALLPROG
 USE_WIDECHAR?=yes
+.else
+USE_WIDECHAR=no
+.endif
 
 CWARNFLAGS.clang+=	-Wno-uninitialized -Wno-format-security
 .if ${USE_WIDECHAR} != "yes"
@@ -57,8 +61,12 @@
 
 # For wide char support
 .if ${USE_WIDECHAR} == "yes"
-SRCS+=	regcomp.c regerror.c regexec.c regfree.c
-CPPFLAGS+=-I${DIST}/regex -D__REGEX_PRIVATE -DUSE_WIDECHAR
+CPPFLAGS+=-DUSE_WIDECHAR
+CPPFLAGS+=-I${DESTDIR}/usr/include/tre -DHAVE_TRE
+LDADD+=	-ltre
+DPADD+=	${LIBTRE}
+#SRCS+=	regcomp.c regerror.c regexec.c regfree.c
+#CPPFLAGS+=-I${DIST}/regex -D__REGEX_PRIVATE
 .endif
 
 # For db3 db1 emulation
Index: rescue/Makefile
===================================================================
RCS file: /home/netbsd/src/rescue/Makefile,v
retrieving revision 1.33
diff -u -r1.33 Makefile
--- rescue/Makefile	8 Oct 2017 15:02:33 -0000	1.33
+++ rescue/Makefile	12 Nov 2017 15:06:26 -0000
@@ -20,10 +20,12 @@
 CRUNCHBIN=	rescue
 CRUNCHENV=	RESCUEDIR=${RESCUEDIR}
 SMALLPROG=	0
-LISTS=		${.CURDIR}/list
 TARGETDIR=	${DESTDIR}/rescue
 PARSELISTENV+=  TARGETDIR=${TARGETDIR:Q}
 
+LISTS=		${.CURDIR}/list
+CRUNCHENV+=	USE_WIDECHAR=no		# for nvi
+
 .for f in ldconfig
 PROG_${f}!=	cd ${NETBSDSRCDIR}/sbin/${f} && ${MAKE} -V PROG
 .if (${PROG_${f}} != "")


Home | Main Index | Thread Index | Old Index