+2016-03-22 Thomas Rosenau <thomasr@fantasymail.de>
+ * configure.ac, src/*.c: Check for the existence of the REG_ENHANCED
+ regex flag, and use it when it's available (on OS X systems). This
+ completes the fix for Savannah bug #47325.
+
2016-03-21 Benno Schulenberg <bensberg@justemail.net>
* src/browser.c (findnextfile): Trim a duplicate variable.
* src/browser.c (browser_refresh, findnextfile): Rename four vars.
fi
fi
+AC_CACHE_CHECK([for enhanced regular expression flag], nano_cv_flag_reg_extended,
+ [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <regex.h>]],
+ [[
+ #ifndef REG_ENHANCED
+ error: No REG_ENHANCED support!
+ #endif
+ ]])],
+ [nano_cv_flag_reg_extended="REG_EXTENDED | REG_ENHANCED"],
+ [nano_cv_flag_reg_extended="REG_EXTENDED"])])
+
+AC_DEFINE_UNQUOTED(NANO_REG_EXTENDED, $nano_cv_flag_reg_extended,
+ [Flag(s) to use to get the full range of extended regular expressions])
+
if test x$color_support = xyes; then
# Now check for the end-of-word boundary support (/< and />).
AC_MSG_CHECKING([for GNU-style word boundary regex support])
size_t nmatch;
regmatch_t pmatch;
- if (regcomp(&r, "\\\\>", REG_EXTENDED|REG_NOSUB))
+ if (regcomp(&r, "\\\\>", $nano_cv_flag_reg_extended|REG_NOSUB))
return 1;
if (regexec(&r, "word boundary", nmatch, &pmatch, 0))
return 1;
AC_MSG_WARN([*** Couldn't successfully compile basic color test with or without _XOPEN_SOURCE_EXTENDED])
AC_MSG_WARN([*** This build may not compile. Consider configuring with --disable-color or installing ncurses])),
AC_MSG_WARN([*** Can't check need for _XOPEN_SOURCE_EXTENDED when cross-compiling]))
- fi
-#fi
+# fi
+fi
AC_MSG_CHECKING([whether LINES and COLS can be redefined])
AC_TRY_RUN([
regex_t rgx;
for (item = head; item != NULL; item = item->next) {
- regcomp(&rgx, fixbounds(item->full_regex), REG_EXTENDED);
+ regcomp(&rgx, fixbounds(item->full_regex), NANO_REG_EXTENDED);
if (regexec(&rgx, shibboleth, 0, NULL, 0) == 0) {
regfree(&rgx);
#endif
);
#ifdef HAVE_REGEX_H
- quoterc = regcomp("ereg, quotestr, REG_EXTENDED);
+ quoterc = regcomp("ereg, quotestr, NANO_REG_EXTENDED);
if (quoterc == 0) {
/* We no longer need quotestr, just quotereg. */
return;
/* If the regex string is malformed, skip it. */
- if (!nregcomp(regexstring, REG_EXTENDED | REG_NOSUB))
+ if (!nregcomp(regexstring, NANO_REG_EXTENDED | REG_NOSUB))
continue;
/* Copy the regex into a struct, and hook this in at the end. */
;
#endif
else if (strcasecmp(keyword, "color") == 0)
- parse_colors(ptr, REG_EXTENDED);
+ parse_colors(ptr, NANO_REG_EXTENDED);
else if (strcasecmp(keyword, "icolor") == 0)
- parse_colors(ptr, REG_EXTENDED | REG_ICASE);
+ parse_colors(ptr, NANO_REG_EXTENDED | REG_ICASE);
else if (strcasecmp(keyword, "linter") == 0)
pick_up_name("linter", ptr, &live_syntax->linter);
else if (strcasecmp(keyword, "formatter") == 0)
assert(!regexp_compiled);
- rc = regcomp(&search_regexp, fixbounds(regexp), REG_EXTENDED
+ rc = regcomp(&search_regexp, fixbounds(regexp), NANO_REG_EXTENDED
#ifndef NANO_TINY
| (ISSET(CASE_SENSITIVE) ? 0 : REG_ICASE)
#endif