[sword-devel] Mingw and SWORD's internal regex (was: Re: 1.6.1 outstanding items?
Matthew Talbert
ransom1982 at gmail.com
Mon Dec 7 23:33:01 MST 2009
> I updated GNU's regex code because it was quite old, as you pointed out.
Maybe I did at one time, but I haven't really cared lately as I've
been using another regex library. Others have mentioned it recently.
> The additional files do not need to be added to any makefiles or project
> files. I suppose you could, but it would be counter-productive given their
> use. (Read regex.c if you don't understand this.)
OK, I see this now. I was having lots of compile errors which I
thought were due to the extra files not being included, but it turns
out that defining __USE_GNU took care of those problems.
There are still a couple of things that need changed for this to
compile. The header alloca.h is not available with Mingw, so it needs
to be skipped. A function from malloc.h was used without including the
header file. And bool, and true/false were used, all of which are C++,
rather than C. Anyway, here's a patch that will need to be applied for
this to compile. It should be safe for Visual Studio as well. It still
needs __USE_GNU defined, but I'll take care of that with my patch for
configure.ac that I'm working on.
Matthew
Index: regex_internal.h
===================================================================
--- regex_internal.h (revision 2486)
+++ regex_internal.h (working copy)
@@ -418,7 +418,9 @@
#define re_string_skip_bytes(pstr,idx) ((pstr)->cur_idx += (idx))
#define re_string_set_index(pstr,idx) ((pstr)->cur_idx = (idx))
+#ifndef __MINGW32__
#include <alloca.h>
+#endif
#ifndef _LIBC
# if HAVE_ALLOCA
Index: regexec.c
===================================================================
--- regexec.c (revision 2486)
+++ regexec.c (working copy)
@@ -18,6 +18,11 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
+#include <malloc.h>
+typedef enum {FALSE, TRUE} bool;
+#define false FALSE;
+#define true TRUE;
+
static reg_errcode_t match_ctx_init (re_match_context_t *cache, int eflags,
int n) internal_function;
static void match_ctx_clean (re_match_context_t *mctx) internal_function;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: regex.patch
Type: text/x-diff
Size: 959 bytes
Desc: not available
URL: <http://www.crosswire.org/pipermail/sword-devel/attachments/20091208/f25df4b6/attachment.bin>
More information about the sword-devel
mailing list