]> granicus.if.org Git - postgis/commitdiff
Use a locale-independent braindead upper implementation
authorPaul Ramsey <pramsey@cleverelephant.ca>
Thu, 15 Nov 2012 00:08:53 +0000 (00:08 +0000)
committerPaul Ramsey <pramsey@cleverelephant.ca>
Thu, 15 Nov 2012 00:08:53 +0000 (00:08 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@10678 b70326c6-7e19-0410-871a-916f4a2858ee

liblwgeom/g_util.c

index 32c6240a29ed98e503f3300ba013f721739bab82..ac52d4baa816612bd6df3413be2006f76fd0f7da 100644 (file)
@@ -112,6 +112,14 @@ struct geomtype_struct geomtype_struct_array[] =
 };
 #define GEOMTYPE_STRUCT_ARRAY_LEN (sizeof geomtype_struct_array/sizeof(struct geomtype_struct))
 
+const char dumb_upper_map[128] = "................................................0123456789.......ABCDEFGHIJKLMNOPQRSTUVWXYZ......ABCDEFGHIJKLMNOPQRSTUVWXYZ.....";
+
+static char dump_toupper(int in)
+{
+       if ( in < 0 || in > 127 ) 
+               return '.';
+       return dumb_upper_map[in];
+}
 
 uint8_t gflags(int hasz, int hasm, int geodetic)
 {
@@ -171,7 +179,7 @@ int geometry_type_from_string(const char *str, uint8_t *type, int *z, int *m)
        /* Copy and convert to upper case for comparison */
        tmpstr = lwalloc(tmpendpos - tmpstartpos + 2);
        for (i = tmpstartpos; i <= tmpendpos; i++)
-               tmpstr[i - tmpstartpos] = toupper(str[i]);
+               tmpstr[i - tmpstartpos] = dump_toupper(str[i]);
 
        /* Add NULL to terminate */
        tmpstr[i - tmpstartpos] = '\0';