Re: regex fix for cygwin



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" <avarakin00 hotmail com>
To: <mc-devel gnome org>
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
> Mc-devel gnome org
> http://mail.gnome.org/mailman/listinfo/mc-devel
>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]