[postgis-devel] Problem compiling with MinGW from SVN
strk
strk at keybit.net
Mon Jul 6 08:52:38 PDT 2009
Nicklas,
Please try the attached patch, it uses the non-reentrant version
and manual scans for the inner loop. We shouldn't really need
reentrancy in postgis ...
--strk;
Free GIS & Flash consultant/developer () ASCII Ribbon Campaign
http://foo.keybit.net/~strk/services.html /\ Keep it simple!
On Sun, Jul 05, 2009 at 02:32:54PM +0200, strk wrote:
> On Sun, Jul 05, 2009 at 12:35:25PM +0200, nicklas.aven at jordogskog.no wrote:
> >
> > Hallo
> >
> > I tried to compile from SVN wich has worked great before. I think the problem is strtok_r() used in lwgeom_geos, that is supposed to be found in string.h as I understand it. In my version in MinGW there is no strtok_r() in string.h, but strtok(). Is it a problem of versions or?
>
> According to my manual page, strtok_r is compatible with POSIX.1-2001.
> The non _r version is not reentrant, if other developers are fine with
> that I could change to use it.
-------------- next part --------------
Index: postgis/lwgeom_geos.c
===================================================================
--- postgis/lwgeom_geos.c (revision 4261)
+++ postgis/lwgeom_geos.c (working copy)
@@ -862,7 +862,6 @@
int joinStyle = DEFAULT_JOIN_STYLE;
char *param;
char *params = NULL;
- char *saveptr = NULL;
PROFSTART(PROF_QRUN);
@@ -887,24 +886,21 @@
for (param=params; ; param=NULL)
{
- char *saveptr2, *key, *val;
- param = strtok_r(param, " ", &saveptr);
+ char *key, *val;
+ param = strtok(param, " ");
if ( param == NULL ) break;
- /* lwnotice("Param: %s", param); */
+ POSTGIS_DEBUGF(3, "Param: %s", param);
- key = strtok_r(param, "=", &saveptr2);
- if ( key == NULL ) {
- lwerror("Malformed buffer parameter");
- break;
- }
- val = strtok_r(NULL, "=", &saveptr2);
- if ( val == NULL ) {
+ key = param;
+ val = strchr(key, '=');
+ if ( val == NULL || *(val+1) == '\0' ) {
lwerror("Missing value for buffer "
"parameter %s", key);
break;
}
+ *val = '\0'; ++val;
- /* lwnotice("Param: %s : %s", key, val); */
+ POSTGIS_DEBUGF(3, "Param: %s : %s", key, val);
if ( !strcmp(key, "endcap") )
{
@@ -926,7 +922,7 @@
else
{
lwerror("Invalid buffer end cap "
- "style: %s (accept "
+ "style: %s (accept: "
"'round', 'flat' or 'square'"
")", val);
break;
@@ -950,7 +946,7 @@
else
{
lwerror("Invalid buffer end cap "
- "style: %s (accept "
+ "style: %s (accept: "
"'round', 'mitre' or 'bevel'"
")", val);
break;
@@ -968,7 +964,7 @@
}
else
{
- lwerror("Invalid buffer parameter: %s (accept"
+ lwerror("Invalid buffer parameter: %s (accept: "
"'endcap', 'join', 'mitre_limit' and "
"'quad_segs')", key);
break;
More information about the postgis-devel
mailing list