--- old/usr/src/head/regex.h	Tue Feb 13 07:11:45 2018
+++ new/usr/src/head/regex.h	Tue Feb 13 07:11:45 2018
@@ -21,8 +21,6 @@
  */
 
 /*
- * Copyright 2014 Garrett D'Amore <garrett@damore.org>
- *
  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
@@ -33,7 +31,8 @@
  */
 
 /*
- * Copyright 2017 Nexenta Systems, Inc.
+ * Copyright 2014 Garrett D'Amore <garrett@damore.org>
+ * Copyright 2018 Nexenta Systems, Inc.
  */
 
 #ifndef	_REGEX_H
@@ -46,7 +45,8 @@
 extern "C" {
 #endif
 
-
+/* XXX is this still needed?!?! */
+#if 0
 /*
  * wchar_t is a built-in type in standard C++ and as such is not
  * defined here when using standard C++. However, the GNU compiler
@@ -70,79 +70,83 @@
 #endif
 #endif	/* !_WCHAR_T */
 #endif	/* !defined(__cplusplus) ... */
+#endif
 
 typedef ssize_t regoff_t;
 
 /* regcomp flags */
 #define	REG_BASIC	0x00000
-#define	REG_EXTENDED	0x00001		/* Use Extended Regular Expressions */
-#define	REG_NOSUB	0x00002		/* Don't set subexpression */
-#define	REG_ICASE	0x00004		/* Ignore case in match */
-#define	REG_NEWLINE	0x00008		/* Treat \n as regular character */
-#define	REG_DELIM	0x00010		/* legacy, no effect */
-#define	REG_DEBUG	0x00020		/* legacy, no effect */
-#define	REG_ANCHOR	0x00040		/* legacy, no effect */
-#define	REG_WORDS	0x00080		/* legacy, no effect */
-#define	REG_EGREP	0x01000		/* legacy, no effect */
-#define	REG_DUMP	0x02000		/* internal */
+#define	REG_EXTENDED	0x00001		/* use EREs (POSIX) */
+#define	REG_NOSUB	0x00002		/* don't set subexpression (POSIX) */
+#define	REG_ICASE	0x00004		/* ignore case in match (POSIX) */
+#define	REG_NEWLINE	0x00008		/* treat \n as regular char (POSIX) */
+/* was	REG_DELIM	0x00010 */
+/* was	REG_DEBUG	0x00020 */
+/* was	REG_ANCHOR	0x00040 */
+/* was	REG_WORDS	0x00080 */
+/* was	REG_EGREP	0x01000 */
+/* was	REG_DUMP	0x02000 */
 #define	REG_PEND	0x04000		/* NULs are ordinary characters */
 #define	REG_NOSPEC	0x08000		/* no special characters */
+#define	REG_LITERAL	0x08000		/* no special characters */
 
-/* internal flags */
-#define	REG_MUST	0x00100		/* legacy, no effect */
-
 /* regexec flags */
-#define	REG_NOTBOL	0x00200		/* string is not BOL */
-#define	REG_NOTEOL	0x00400		/* string has no EOL */
-#define	REG_NOOPT	0x00800		/* legacy, no effect */
-#define	REG_STARTEND	0x10000		/* match whole pattern */
-#define	REG_TRACE	0x20000		/* tracing of execution */
-#define	REG_LARGE	0x40000		/* force large representation */
-#define	REG_BACKR	0x80000		/* force use of backref code */
+/* was	REG_MUST	0x00100 */
+#define	REG_NOTBOL	0x00200		/* string is not BOL (POSIX) */
+#define	REG_NOTEOL	0x00400		/* string has no EOL (POSIX) */
+/* was	REG_NOOPT	0x00800 */
+#define	REG_STARTEND	0x10000		/* match whole pattern (BSD) */
 
 /* regcomp and regexec return codes */
 #define	REG_OK		0		/* success (non-standard) */
-#define	REG_NOMATCH	1		/* regexec failed to match */
-#define	REG_ECOLLATE	2		/* invalid collation element ref. */
-#define	REG_EESCAPE	3		/* trailing \ in pattern */
-#define	REG_ENEWLINE	4		/* \n found before end of pattern */
-#define	REG_ENSUB	5		/* more than 9 \( \) pairs (OBS) */
-#define	REG_ESUBREG	6		/* number in \[0-9] invalid */
-#define	REG_EBRACK	7		/* [ ] imbalance */
-#define	REG_EPAREN	8		/* ( ) imbalance */
-#define	REG_EBRACE	9		/* \{ \} imbalance */
-#define	REG_ERANGE	10		/* invalid endpoint in range */
-#define	REG_ESPACE	11		/* no memory for compiled pattern */
-#define	REG_BADRPT	12		/* invalid repetition */
-#define	REG_ECTYPE	13		/* invalid char-class type */
-#define	REG_BADPAT	14		/* syntax error */
-#define	REG_BADBR	15		/* \{ \} contents bad */
-#define	REG_EFATAL	16		/* internal error, not POSIX.2 */
+#define	REG_NOMATCH	1		/* regexec failed to match (POSIX) */
+#define	REG_ECOLLATE	2		/* invalid coll. element ref. (POSIX) */
+#define	REG_EESCAPE	3		/* trailing \ in pattern (POSIX) */
+/* was	REG_ENEWLINE	4 */
+/* was	REG_ENSUB	5 */
+#define	REG_ESUBREG	6		/* number in \[0-9] invalid (POSIX) */
+#define	REG_EBRACK	7		/* [ ] imbalance (POSIX) */
+#define	REG_EPAREN	8		/* ( ) imbalance (POSIX) */
+#define	REG_EBRACE	9		/* \{ \} imbalance (POSIX) */
+#define	REG_ERANGE	10		/* invalid endpoint in range (POSIX) */
+#define	REG_ESPACE	11		/* out of memory (POSIX) */
+#define	REG_BADRPT	12		/* invalid repetition (POSIX) */
+#define	REG_ECTYPE	13		/* invalid char-class type (POSIX) */
+#define	REG_BADPAT	14		/* syntax error (POSIX) */
+#define	REG_BADBR	15		/* \{ \} contents bad (POSIX) */
+/* was	REG_EFATAL	16 */
 #define	REG_ECHAR	17		/* invalid multibyte character */
-#define	REG_STACK	18		/* backtrack stack overflow */
+#define	REG_ILLSEQ	17		/* invalid multibyte character (BSD) */
+/* was	REG_STACK	18 */
+/* REG_ENOSYS was removed in XPG7 */
+#if defined(_STRICT_SYMBOLS) && !defined(_XPG7)
 #define	REG_ENOSYS	19		/* function not supported (XPG4) */
-#define	REG__LAST	20		/* first unused code */
-#define	REG_EBOL	21		/* ^ anchor and not BOL */
-#define	REG_EEOL	22		/* $ anchor and not EOL */
-#define	REG_ATOI	255		/* convert name to number (!) */
-#define	REG_ITOA	256		/* convert number to name (!) */
+#endif
+/* was	REG__LAST	20 */
+/* was	REG_EBOL	21 */
+/* was	REG_EEOL	22 */
+#define	REG_EMPTY	23		/* empty (sub)expression */
+#define	REG_INVARG	24		/* invalid argument */
 
 #define	_REG_BACKREF_MAX 9		/* Max # of subexp. backreference */
 
+/*
+ * Note that any changes to this structure have to preserve sizing,
+ * as it is baked into applications.  Size needs to stay 24/48 bytes
+ * for 32/64 bit libc, respectively.
+ */
 typedef struct {		/* regcomp() data saved for regexec() */
 	size_t  re_nsub;	/* # of subexpressions in RE pattern */
+	void *value;		/* internal use only */
+	int re_magic;
+	const void *re_endp;
 
 	/*
-	 * Internal use only.  Note that any changes to this structure
-	 * have to preserve sizing, as it is baked into applications.
+	 * These are here for binary compatibility (see the note about
+	 * sizing above).
 	 */
-	struct re_guts *re_g;
-	int re_magic;
-	const char *re_endp;
-
-	/* here for compat */
-	size_t	re_len;		/* # wchar_t chars in compiled pattern */
-	struct _regex_ext_t *re_sc;	/* for binary compatibility */
+	size_t	__pad1;
+	void	*__pad2;
 } regex_t;
 
 /* subexpression positions */
@@ -152,7 +156,6 @@
 	int		rm_ss, rm_es;	/* Used internally */
 } regmatch_t;
 
-
 /*
  * IEEE Std 1003.2 ("POSIX.2") regular expressions API.
  */
