Arjen Laarhoven wrote: > The standard libc regex library on OSX does not support alternation > in POSIX Basic Regular Expression mode. This breaks the diff.funcname > functionality on OSX. > > To fix this, we use the GNU regex library which is already present in > the compat/ diretory for the MinGW port. However, simply adding compat/ > to the COMPAT_CFLAGS variable causes a conflict between the system > fnmatch.h and the one present in compat/. To remedy this, move the > regex and fnmatch functionality to their own subdirectories in compat/ > so they can be included seperately. I wonder if this is the right fix? Right now the GNU regex library is necessary for Darwin, FreeBSD and AIX. I can add IRIX6.5 and Solaris 7 to that list. Have newer Solaris's been tested yet? (Jeff?) I wonder if the new test which triggers this flaw has been tested on the other non-GNU platforms in the Makefile which have not been updated. Boyd Lynn Gerber and his 12 platforms comes to mind. It seems POSIX only mentions alternation under Extended Regular Expressions. Likewise for the vertical-line character '|'. http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap09.html#tag_09_04_07 A look at compat/regex/regex.c: line 4723 shows that the default mode is RE_SYNTAX_POSIX_BASIC. >From the description in regex.h this mode includes "...bits common to both basic and extended POSIX regex syntax". It seems this mode allows backslashed versions of the extended regular expression operators ?, +, and |. Other platforms which adhere more strictly to the POSIX spec do not interpret the backslashed Ext-RE operators in Basic Regular Expression mode. Similar to GNU RE_SYNTAX_POSIX_MINIMAL_BASIC. If I'm interpreting things correctly, then all non-GNU platforms may need the compat regex library. On a related note: Is there any reason why extended regular expressions were not used by default? Wouldn't they have looked prettier (fewer backslashes)? It's too late to change diff.*.funcname now, but an alternative fix which would probably not require every other platform to use GNU regex, is to introduce a new funcname option which would allow extended regular expression syntax and to convert the internal regular expressions to that format. -brandon -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html