Hi, I found another bug related to regex - there is inconsistent usage of regex.h and eregex.h in c files, and since they are very different in cygwin, we have all sort of weird problems. I just grepped all c files and replaced #include "regex.h" by #include "eregex.h", this fixed my problems.
Alex ----- Original Message ----- From: "Alexander Varakin" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Saturday, February 23, 2002 11:00 PM Subject: regex fix for cygwin > Hi, > > I fixed the problem with regex on cygwin. > The reason of the problem is that definition of regexec() in regex.c is > disabled using #if 0 (why?) , and It looks like the cygwin's implementation > is not > right (compatible?), so all this regex business fails. > I fixed the problem by replacing "#if 0" by #ifdef __CYGWIN__, this is the > safest approach, it shouldn't break any other platforms. > But the better fix would be to remove those "#if 0" completely, this will > make mc's regex code indpendent of system libary, but this may be risky. > Now mc's find-file works, and viewer doesn't use "nm" for opening all files. > > Alex > > > > Index: eregex.h > =================================================================== > RCS file: /cvs/gnome/mc/src/eregex.h,v > retrieving revision 1.2 > diff -c -r1.2 eregex.h > *** eregex.h 2000/08/22 22:50:14 1.2 > --- eregex.h 2002/02/24 03:52:49 > *************** > *** 347,353 **** > /* [[[end pattern_buffer]]] */ > }; > > ! #if 0 > typedef struct re_pattern_buffer regex_t; > #endif > > --- 347,353 ---- > /* [[[end pattern_buffer]]] */ > }; > > ! #ifdef __CYGWIN__ > typedef struct re_pattern_buffer regex_t; > #endif > > *************** > *** 373,379 **** > #define RE_NREGS 30 > #endif > > ! #if 0 > /* POSIX specification for registers. Aside from the different names than > `re_registers', POSIX uses an array of structures, instead of a > structure of arrays. */ > --- 373,379 ---- > #define RE_NREGS 30 > #endif > > ! #ifdef __CYGWIN__ > /* POSIX specification for registers. Aside from the different names than > `re_registers', POSIX uses an array of structures, instead of a > structure of arrays. */ > *************** > *** 475,481 **** > extern int re_exec _RE_ARGS ((const char *)); > #endif > > ! #if 0 > /* POSIX compatibility. */ > extern int regcomp _RE_ARGS ((regex_t *preg, const char *pattern, int > cflags)); > extern int regexec > --- 475,481 ---- > extern int re_exec _RE_ARGS ((const char *)); > #endif > > ! #ifdef __CYGWIN__ > /* POSIX compatibility. */ > extern int regcomp _RE_ARGS ((regex_t *preg, const char *pattern, int > cflags)); > extern int regexec > > > > > Index: regex.c > =================================================================== > RCS file: /cvs/gnome/mc/src/regex.c,v > retrieving revision 1.7 > diff -c -r1.7 regex.c > *** regex.c 2001/08/19 16:18:40 1.7 > --- regex.c 2002/02/24 03:53:12 > *************** > *** 5176,5182 **** > > /* POSIX.2 functions. Don't define these for Emacs. */ > > ! #if 0 > > /* regcomp takes a regular expression as a string and compiles it. > > --- 5176,5182 ---- > > /* POSIX.2 functions. Don't define these for Emacs. */ > > ! #ifdef __CYGWIN__ > > /* regcomp takes a regular expression as a string and compiles it. > > > > _______________________________________________ > Mc-devel mailing list > [EMAIL PROTECTED] > http://mail.gnome.org/mailman/listinfo/mc-devel > _______________________________________________ Mc-devel mailing list [EMAIL PROTECTED] http://mail.gnome.org/mailman/listinfo/mc-devel
