[SCM] tinyows branch, upstream, updated. upstream/0.9.0-2-g74b2e61

Bas Couwenberg sebastic at xs4all.nl
Thu Sep 19 00:07:09 UTC 2013


The following commit has been merged in the upstream branch:
commit 74b2e613580386d1a4ed91f53bf33f8765c8c92b
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Wed Sep 18 14:45:08 2013 +0200

    Imported Upstream version 1.1.0

diff --git a/Makefile.in b/Makefile.in
index ef454f5..1d17052 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,6 +1,6 @@
 # compiler flags 
 CC=@CC@
-CFLAGS=@CFLAGS@ -ansi -pedantic -Wall
+CFLAGS=@CFLAGS@ -std=c99 -pedantic -Wall
 
 # postgresql ... required
 POSTGIS_INC=@POSTGIS_INC@
@@ -20,12 +20,12 @@ FCGIFLAGS=$(FCGI_INC) $(FCGI_LIB)
 PREFIX=@prefix@
 
 # Revision number if subversion there
-SVN_FLAGS=@SVN_FLAGS@
+GIT_FLAGS=@GIT_FLAGS@
 
 SRC=src/fe/fe_comparison_ops.c src/fe/fe_error.c src/fe/fe_filter.c src/fe/fe_filter_capabilities.c src/fe/fe_function.c src/fe/fe_logical_ops.c src/fe/fe_spatial_ops.c src/mapfile/mapfile.c src/ows/ows_bbox.c src/ows/ows.c src/ows/ows_config.c src/ows/ows_error.c src/ows/ows_geobbox.c src/ows/ows_get_capabilities.c src/ows/ows_layer.c src/ows/ows_metadata.c src/ows/ows_psql.c src/ows/ows_request.c src/ows/ows_srs.c src/ows/ows_storage.c src/ows/ows_version.c src/struct/alist.c src/struct/array.c src/struct/buffer.c src/struct/cgi_request.c src/struct/list.c src/struct/mlist.c src/struct/regexp.c src/wfs/wfs_describe.c src/wfs/wfs_error.c src/wfs/wfs_get_capabilities.c src/wfs/wfs_get_feature.c src/wfs/wfs_request.c src/wfs/wfs_transaction.c src/ows/ows_libxml.c
 
 all:
-	$(CC) $(CFLAGS) $(PGFLAGS) $(XMLFLAGS) $(FCGIFLAGS) $(SVN_FLAGS) $(SRC) -o tinyows -lfl
+	$(CC) -o tinyows $(SRC) $(XMLFLAGS) $(CFLAGS) $(PGFLAGS)  $(FCGIFLAGS) $(GIT_FLAGS) -lfl
 	@rm -rf tinyows.dSYM
 
 flex:
@@ -68,17 +68,9 @@ install-test110:
 	@test/wfs_110/install_wfs_110.sh
 	cp -i test/wfs_110/config_wfs_110.xml /etc/tinyows.xml
 
-install-regress:
-	@chmod +x test/regress/install.sh
-	@test/regress/install.sh
-	cp -i test/regress/config.xml /etc/tinyows.xml
-
 doc-clean:
 	@rm -rf doc/doxygen
 
-astyle:
-	astyle --style=kr --unpad=paren --indent=spaces=2 $(SRC)
-
 doxygen: doc-clean
 	@(which doxygen 2> /dev/null > /dev/null	\
 	&& mkdir -p doc/doxygen				\
@@ -90,3 +82,7 @@ test-valgrind110:
 
 test-valgrind100:
 	@test/unit_test test/wfs_100/cite 1
+
+astyle:
+	astyle --style=k/r --indent=spaces=2 -c --lineend=linux -S $(SRC) src/*.h*
+	rm -f src/*.orig src/*/*.orig
diff --git a/NEWS b/NEWS
index e62c7cf..e4374ff 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,15 @@
-1.0.0
+1.1.0
+ - Add include_items and exclude_items config handling. To choose exactly which columns to retrieve (Serge Dikiy)
+ - XSD max length and enumeration constraint handling (Serge Dikiy & Alan Boudreault)
+ - First real support of typename namespace provided in request (Olivier Courtin)
+ - Generate PK value using PostgresSQL DEFAULT value if present (Serge Dikiy) 
+ - Add pkey configuration in layer config. Usefull for instance when retrieving data from a VIEW. (Serge Dikiy)
+ - Buffer copy performance improve (Serge Dikiy)
+ - Rewrite/fix max features handling (Olivier Courtin)
+ - Extent layer's properties allowed to inherit (Olivier Courtin)
+ - Several bugfixes as usual (special thanks to Andreas Peri, Serge Dikiy and Jukka Rahkonen for detailled reports)
+
+1.0.0   (08/02/2012)
  - Configuration change with broken backward compatibility:
     * default config file is now /etc/tinyows.xml
     * default schema dir is now $PREFIX/share/tinyows/schema 
diff --git a/README b/README
index 91d3bd9..03b9780 100644
--- a/README
+++ b/README
@@ -11,11 +11,11 @@ TinyOWS was written with the following things in mind:
 
 Code quality policy:
 All code must meet the following rules :
-- gcc -ansi -pedantic -Wall compile without any warning (make)
+- gcc -c99 -pedantic -Wall compile without any warning (make)
 - Unit test with Valgrind error and leak free (make valgrind)
 - Pass trought OGC CITE WFS-T tests (1.0.0 and 1.1.0 SF-0)
 
-Code dynamically linked with the following other libriaries:
-- postgresql 8.x
-- libxml2.x
+Code dynamically linked with the following other librairies:
+- PostgreSQL 8.x and 9.x
+- libxml 2.8.x
 - flex
diff --git a/VERSION b/VERSION
index 3eefcb9..9084fa2 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.0.0
+1.1.0
diff --git a/configure b/autom4te.cache/output.0
old mode 100755
new mode 100644
similarity index 51%
copy from configure
copy to autom4te.cache/output.0
index 6fffae3..a4e2051
--- a/configure
+++ b/autom4te.cache/output.0
@@ -1,60 +1,83 @@
-#! /bin/sh
-# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61.
-#
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-## --------------------- ##
-## M4sh Initialization.  ##
-## --------------------- ##
+@%:@! /bin/sh
+@%:@ Guess values for system-dependent variables and create Makefiles.
+@%:@ Generated by GNU Autoconf 2.67.
+@%:@ 
+@%:@ 
+@%:@ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+@%:@ 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+@%:@ Foundation, Inc.
+@%:@ 
+@%:@ 
+@%:@ This configure script is free software; the Free Software Foundation
+@%:@ gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
 
 # Be more Bourne compatible
 DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   emulate sh
   NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
   # is contrary to our usage.  Disable this feature.
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
+  case `(set -o) 2>/dev/null` in @%:@(
+  *posix*) :
+    set -o posix ;; @%:@(
+  *) :
+     ;;
 esac
-
 fi
 
 
-
-
-# PATH needs CR
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  echo "#! /bin/sh" >conf$$.sh
-  echo  "exit 0"   >>conf$$.sh
-  chmod +x conf$$.sh
-  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-    PATH_SEPARATOR=';'
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
   else
-    PATH_SEPARATOR=:
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in @%:@(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
   fi
-  rm -f conf$$.sh
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
 fi
 
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  as_unset=unset
-else
-  as_unset=false
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
 fi
 
 
@@ -63,20 +86,18 @@ fi
 # there to prevent editors from complaining about space-tab.
 # (If _AS_PATH_WALK were called with IFS unset, it would disable word
 # splitting by setting IFS to empty value.)
-as_nl='
-'
 IFS=" ""	$as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
-case $0 in
+case $0 in @%:@((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
 IFS=$as_save_IFS
 
      ;;
@@ -87,354 +108,321 @@ if test "x$as_myself" = x; then
   as_myself=$0
 fi
 if test ! -f "$as_myself"; then
-  echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  { (exit 1); exit 1; }
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
 fi
 
-# Work around bugs in pre-3.0 UWIN ksh.
-for as_var in ENV MAIL MAILPATH
-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
 done
 PS1='$ '
 PS2='> '
 PS4='+ '
 
 # NLS nuisances.
-for as_var in \
-  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
-  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
-  LC_TELEPHONE LC_TIME
-do
-  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
-    eval $as_var=C; export $as_var
-  else
-    ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-  fi
-done
-
-# Required to use basename.
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-
-# Name of the executable.
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
 
 # CDPATH.
-$as_unset CDPATH
-
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
 if test "x$CONFIG_SHELL" = x; then
-  if (eval ":") 2>/dev/null; then
-  as_have_required=yes
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
 else
-  as_have_required=no
+  case \`(set -o) 2>/dev/null\` in @%:@(
+  *posix*) :
+    set -o posix ;; @%:@(
+  *) :
+     ;;
+esac
 fi
-
-  if test $as_have_required = yes && 	 (eval ":
-(as_func_return () {
-  (exit \$1)
-}
-as_func_success () {
-  as_func_return 0
-}
-as_func_failure () {
-  as_func_return 1
-}
-as_func_ret_success () {
-  return 0
-}
-as_func_ret_failure () {
-  return 1
-}
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
 
 exitcode=0
-if as_func_success; then
-  :
-else
-  exitcode=1
-  echo as_func_success failed.
-fi
-
-if as_func_failure; then
-  exitcode=1
-  echo as_func_failure succeeded.
-fi
-
-if as_func_ret_success; then
-  :
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+  
 else
-  exitcode=1
-  echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
-  exitcode=1
-  echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
-  :
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
 else
-  exitcode=1
-  echo positional parameters were not saved.
+  as_have_required=no
 fi
-
-test \$exitcode = 0) || { (exit 1); exit 1; }
-
-(
-  as_lineno_1=\$LINENO
-  as_lineno_2=\$LINENO
-  test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
-  test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
-") 2> /dev/null; then
-  :
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+  
 else
-  as_candidate_shells=
-    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
 for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  case $as_dir in
+  as_found=:
+  case $as_dir in @%:@(
 	 /*)
 	   for as_base in sh bash ksh sh5; do
-	     as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
+	     # Try only shells that exist, to save several forks.
+	     as_shell=$as_dir/$as_base
+	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
 	   done;;
        esac
+  as_found=false
 done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
 IFS=$as_save_IFS
 
 
-      for as_shell in $as_candidate_shells $SHELL; do
-	 # Try only shells that exist, to save several forks.
-	 if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-		{ ("$as_shell") 2> /dev/null <<\_ASEOF
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
-esac
-
+      if test "x$CONFIG_SHELL" != x; then :
+  # We cannot yet assume a decent shell, so we have to provide a
+	# neutralization value for shells without unset; and this also
+	# works around shells that cannot unset nonexistent variables.
+	BASH_ENV=/dev/null
+	ENV=/dev/null
+	(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+	export CONFIG_SHELL
+	exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
 fi
 
-
-:
-_ASEOF
-}; then
-  CONFIG_SHELL=$as_shell
-	       as_have_required=yes
-	       if { "$as_shell" 2> /dev/null <<\_ASEOF
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
-esac
-
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf at gnu.org about your system,
+$0: including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
+  fi
+  exit 1
 fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
 
-
-:
-(as_func_return () {
-  (exit $1)
-}
-as_func_success () {
-  as_func_return 0
-}
-as_func_failure () {
-  as_func_return 1
-}
-as_func_ret_success () {
-  return 0
-}
-as_func_ret_failure () {
-  return 1
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+@%:@ as_fn_unset VAR
+@%:@ ---------------
+@%:@ Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
 }
+as_unset=as_fn_unset
 
-exitcode=0
-if as_func_success; then
-  :
-else
-  exitcode=1
-  echo as_func_success failed.
-fi
+@%:@ as_fn_set_status STATUS
+@%:@ -----------------------
+@%:@ Set @S|@? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} @%:@ as_fn_set_status
 
-if as_func_failure; then
-  exitcode=1
-  echo as_func_failure succeeded.
-fi
+@%:@ as_fn_exit STATUS
+@%:@ -----------------
+@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} @%:@ as_fn_exit
+
+@%:@ as_fn_mkdir_p
+@%:@ -------------
+@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
 
-if as_func_ret_success; then
-  :
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} @%:@ as_fn_mkdir_p
+@%:@ as_fn_append VAR VALUE
+@%:@ ----------------------
+@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
+@%:@ advantage of any shell optimizations that allow amortized linear growth over
+@%:@ repeated appends, instead of the typical quadratic growth present in naive
+@%:@ implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
 else
-  exitcode=1
-  echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
-  exitcode=1
-  echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = "$1" ); then
-  :
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+@%:@ as_fn_arith ARG...
+@%:@ ------------------
+@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
+@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
+@%:@ must be portable across @S|@(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
 else
-  exitcode=1
-  echo positional parameters were not saved.
-fi
-
-test $exitcode = 0) || { (exit 1); exit 1; }
-
-(
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
-
-_ASEOF
-}; then
-  break
-fi
-
-fi
-
-      done
-
-      if test "x$CONFIG_SHELL" != x; then
-  for as_var in BASH_ENV ENV
-        do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-        done
-        export CONFIG_SHELL
-        exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
-fi
-
-
-    if test $as_have_required = no; then
-  echo This script requires a shell more modern than all the
-      echo shells that I found on your system.  Please install a
-      echo modern shell, or manually run the script under such a
-      echo shell if you do have one.
-      { (exit 1); exit 1; }
-fi
-
-
-fi
-
-fi
-
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
 
 
-(eval "as_func_return () {
-  (exit \$1)
-}
-as_func_success () {
-  as_func_return 0
-}
-as_func_failure () {
-  as_func_return 1
-}
-as_func_ret_success () {
-  return 0
-}
-as_func_ret_failure () {
-  return 1
-}
+@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
+@%:@ ----------------------------------------
+@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+@%:@ script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} @%:@ as_fn_error
 
-exitcode=0
-if as_func_success; then
-  :
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
 else
-  exitcode=1
-  echo as_func_success failed.
-fi
-
-if as_func_failure; then
-  exitcode=1
-  echo as_func_failure succeeded.
+  as_expr=false
 fi
 
-if as_func_ret_success; then
-  :
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
 else
-  exitcode=1
-  echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
-  exitcode=1
-  echo as_func_ret_failure succeeded.
+  as_basename=false
 fi
 
-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
-  :
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
 else
-  exitcode=1
-  echo positional parameters were not saved.
+  as_dirname=false
 fi
 
-test \$exitcode = 0") || {
-  echo No shell found that supports shell functions.
-  echo Please tell autoconf at gnu.org about your system,
-  echo including any error possibly output before this
-  echo message
-}
-
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
 
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
 
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
 
-  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-  # uniformly replaced by the line number.  The first 'sed' inserts a
-  # line-number line after each line using $LINENO; the second 'sed'
-  # does the real work.  The second script uses 'N' to pair each
-  # line-number line with the line containing $LINENO, and appends
-  # trailing '-' during substitution so that $LINENO is not a special
-  # case at line end.
-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-  # scripts with optimization help from Paolo Bonzini.  Blame Lee
-  # E. McMahon (1931-1989) for sed's syntax.  :-)
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
   sed -n '
     p
     /[$]LINENO/=
@@ -451,8 +439,7 @@ test \$exitcode = 0") || {
       s/-\n.*//
     ' >$as_me.lineno &&
   chmod +x "$as_me.lineno" ||
-    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
-   { (exit 1); exit 1; }; }
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
 
   # Don't try to exec as it changes $[0], causing all sort of problems
   # (the dirname of $[0] is not the place where we might find the
@@ -462,49 +449,40 @@ test \$exitcode = 0") || {
   exit
 }
 
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
 ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in
+case `echo -n x` in @%:@(((((
 -n*)
-  case `echo 'x\c'` in
+  case `echo 'xy\c'` in
   *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  *)   ECHO_C='\c';;
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
   esac;;
 *)
   ECHO_N='-n';;
 esac
 
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
 rm -f conf$$ conf$$.exe conf$$.file
 if test -d conf$$.dir; then
   rm -f conf$$.dir/conf$$.file
 else
   rm -f conf$$.dir
-  mkdir conf$$.dir
-fi
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s='ln -s'
-  # ... but there are two gotchas:
-  # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-  # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-  # In both cases, we have to default to `cp -p'.
-  ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
     as_ln_s='cp -p'
-elif ln conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s=ln
+  fi
 else
   as_ln_s='cp -p'
 fi
@@ -512,7 +490,7 @@ rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
 
 if mkdir -p . 2>/dev/null; then
-  as_mkdir_p=:
+  as_mkdir_p='mkdir -p "$as_dir"'
 else
   test -d ./-p && rmdir ./-p
   as_mkdir_p=false
@@ -529,12 +507,12 @@ else
   as_test_x='
     eval sh -c '\''
       if test -d "$1"; then
-        test -d "$1/.";
+	test -d "$1/.";
       else
-	case $1 in
-        -*)set "./$1";;
+	case $1 in @%:@(
+	-*)set "./$1";;
 	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in @%:@((
 	???[sx]*):;;*)false;;esac;fi
     '\'' sh
   '
@@ -548,11 +526,11 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
 as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
 
 
-
-exec 7<&0 </dev/null 6>&1
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
 
 # Name of the host.
-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
 # so uname gets run too.
 ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
 
@@ -562,12 +540,11 @@ ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
 ac_default_prefix=/usr/local
 ac_clean_files=
 ac_config_libobj_dir=.
-LIBOBJS=
+LIB@&t at OBJS=
 cross_compiling=no
 subdirs=
 MFLAGS=
 MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
 
 # Identity of this package.
 PACKAGE_NAME=
@@ -575,6 +552,7 @@ PACKAGE_TARNAME=
 PACKAGE_VERSION=
 PACKAGE_STRING=
 PACKAGE_BUGREPORT=
+PACKAGE_URL=
 
 # Factoring default headers for most tests.
 ac_includes_default="\
@@ -612,74 +590,83 @@ ac_includes_default="\
 # include <unistd.h>
 #endif"
 
-ac_subst_vars='SHELL
-PATH_SEPARATOR
-PACKAGE_NAME
-PACKAGE_TARNAME
-PACKAGE_VERSION
-PACKAGE_STRING
-PACKAGE_BUGREPORT
-exec_prefix
-prefix
-program_transform_name
-bindir
-sbindir
-libexecdir
-datarootdir
-datadir
-sysconfdir
-sharedstatedir
-localstatedir
-includedir
-oldincludedir
-docdir
-infodir
-htmldir
-dvidir
-pdfdir
-psdir
-libdir
-localedir
-mandir
-DEFS
-ECHO_C
-ECHO_N
-ECHO_T
-LIBS
-build_alias
-host_alias
-target_alias
-CC
-CFLAGS
-LDFLAGS
-CPPFLAGS
-ac_ct_CC
-EXEEXT
-OBJEXT
-LIBXML2_CONFIG
-XML2_INC
-XML2_LIB
-TINYOWS_DEBUG
-svnversion
-SVN_FLAGS
-PG_CONFIG
-POSTGIS_INC
-POSTGIS_LIB
-POSTGIS_SHARE
-POSTGIS_BIN
-SHP2PGSQL
-LEX
-LEX_OUTPUT_ROOT
-LEXLIB
-CPP
-GREP
-EGREP
-FCGI_INC
-FCGI_LIB
+ac_subst_vars='LTLIBOBJS
+LIB@&t at OBJS
 USE_FCGI
-LIBOBJS
-LTLIBOBJS'
+FCGI_LIB
+FCGI_INC
+EGREP
+GREP
+CPP
+LEXLIB
+LEX_OUTPUT_ROOT
+LEX
+SHP2PGSQL
+POSTGIS_BIN
+POSTGIS_SHARE
+POSTGIS_LIB
+POSTGIS_INC
+PG_CONFIG
+GIT_FLAGS
+git
+TINYOWS_DEBUG
+XML2_LIB
+XML2_INC
+LIBXML2_CONFIG
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
 ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+with_xml2_config
+enable_debug
+with_pg_config
+with_shp2pgsql
+with_fastcgi
+'
       ac_precious_vars='build_alias
 host_alias
 target_alias
@@ -694,6 +681,8 @@ CPP'
 # Initialize some variables set by options.
 ac_init_help=
 ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
 # The variables have the same names as the options, with
 # dashes changed to underlines.
 cache_file=/dev/null
@@ -749,8 +738,9 @@ do
   fi
 
   case $ac_option in
-  *=*)	ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-  *)	ac_optarg=yes ;;
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
   esac
 
   # Accept the important Cygnus configure options, so we can diagnose typos.
@@ -792,13 +782,20 @@ do
     datarootdir=$ac_optarg ;;
 
   -disable-* | --disable-*)
-    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
-   { (exit 1); exit 1; }; }
-    ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
-    eval enable_$ac_feature=no ;;
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
 
   -docdir | --docdir | --docdi | --doc | --do)
     ac_prev=docdir ;;
@@ -811,13 +808,20 @@ do
     dvidir=$ac_optarg ;;
 
   -enable-* | --enable-*)
-    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
-   { (exit 1); exit 1; }; }
-    ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
-    eval enable_$ac_feature=\$ac_optarg ;;
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
 
   -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
   | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
@@ -1008,22 +1012,36 @@ do
     ac_init_version=: ;;
 
   -with-* | --with-*)
-    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid package name: $ac_package" >&2
-   { (exit 1); exit 1; }; }
-    ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
-    eval with_$ac_package=\$ac_optarg ;;
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
 
   -without-* | --without-*)
-    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid package name: $ac_package" >&2
-   { (exit 1); exit 1; }; }
-    ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
-    eval with_$ac_package=no ;;
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
 
   --x)
     # Obsolete; use --with-x.
@@ -1043,25 +1061,25 @@ do
   | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
     x_libraries=$ac_optarg ;;
 
-  -*) { echo "$as_me: error: unrecognized option: $ac_option
-Try \`$0 --help' for more information." >&2
-   { (exit 1); exit 1; }; }
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
     ;;
 
   *=*)
     ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
-   { (exit 1); exit 1; }; }
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
     eval $ac_envvar=\$ac_optarg
     export $ac_envvar ;;
 
   *)
     # FIXME: should be removed in autoconf 3.0.
-    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
     expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
     : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
     ;;
 
@@ -1070,23 +1088,36 @@ done
 
 if test -n "$ac_prev"; then
   ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  { echo "$as_me: error: missing argument to $ac_option" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
 fi
 
-# Be sure to have absolute directory names.
+# Check all directory arguments for consistency.
 for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
 		datadir sysconfdir sharedstatedir localstatedir includedir \
 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
 		libdir localedir mandir
 do
   eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
   case $ac_val in
     [\\/$]* | ?:[\\/]* )  continue;;
     NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
   esac
-  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
 done
 
 # There might be people who depend on the old broken behavior: `$host'
@@ -1100,8 +1131,8 @@ target=$target_alias
 if test "x$host_alias" != x; then
   if test "x$build_alias" = x; then
     cross_compiling=maybe
-    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
-    If a cross compiler is detected then cross compile mode will be used." >&2
+    $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used" >&2
   elif test "x$build_alias" != "x$host_alias"; then
     cross_compiling=yes
   fi
@@ -1116,23 +1147,21 @@ test "$silent" = yes && exec 6>/dev/null
 ac_pwd=`pwd` && test -n "$ac_pwd" &&
 ac_ls_di=`ls -di .` &&
 ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-  { echo "$as_me: error: Working directory cannot be determined" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "working directory cannot be determined"
 test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  { echo "$as_me: error: pwd does not report name of working directory" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "pwd does not report name of working directory"
 
 
 # Find the source files, if location was not specified.
 if test -z "$srcdir"; then
   ac_srcdir_defaulted=yes
   # Try the directory containing this script, then the parent directory.
-  ac_confdir=`$as_dirname -- "$0" ||
-$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$0" : 'X\(//\)[^/]' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$0" |
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_myself" : 'X\(//\)[^/]' \| \
+	 X"$as_myself" : 'X\(//\)$' \| \
+	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 	    s//\1/
 	    q
@@ -1159,13 +1188,11 @@ else
 fi
 if test ! -r "$srcdir/$ac_unique_file"; then
   test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-  { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
 fi
 ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
 ac_abs_confdir=`(
-	cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2
-   { (exit 1); exit 1; }; }
+	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
 	pwd)`
 # When building in place, set srcdir=.
 if test "$ac_abs_confdir" = "$ac_pwd"; then
@@ -1205,7 +1232,7 @@ Configuration:
       --help=short        display options specific to this package
       --help=recursive    display the short help of all the included packages
   -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking...' messages
+  -q, --quiet, --silent   do not print \`checking ...' messages
       --cache-file=FILE   cache test results in FILE [disabled]
   -C, --config-cache      alias for \`--cache-file=config.cache'
   -n, --no-create         do not create output files
@@ -1213,9 +1240,9 @@ Configuration:
 
 Installation directories:
   --prefix=PREFIX         install architecture-independent files in PREFIX
-			  [$ac_default_prefix]
+                          @<:@@S|@ac_default_prefix@:>@
   --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-			  [PREFIX]
+                          @<:@PREFIX@:>@
 
 By default, \`make install' will install all the files in
 \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
@@ -1225,25 +1252,25 @@ for instance \`--prefix=\$HOME'.
 For better control, use the options below.
 
 Fine tuning of the installation directories:
-  --bindir=DIR           user executables [EPREFIX/bin]
-  --sbindir=DIR          system admin executables [EPREFIX/sbin]
-  --libexecdir=DIR       program executables [EPREFIX/libexec]
-  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
-  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
-  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
-  --libdir=DIR           object code libraries [EPREFIX/lib]
-  --includedir=DIR       C header files [PREFIX/include]
-  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
-  --datarootdir=DIR      read-only arch.-independent data root [PREFIX/share]
-  --datadir=DIR          read-only architecture-independent data [DATAROOTDIR]
-  --infodir=DIR          info documentation [DATAROOTDIR/info]
-  --localedir=DIR        locale-dependent data [DATAROOTDIR/locale]
-  --mandir=DIR           man documentation [DATAROOTDIR/man]
-  --docdir=DIR           documentation root [DATAROOTDIR/doc/PACKAGE]
-  --htmldir=DIR          html documentation [DOCDIR]
-  --dvidir=DIR           dvi documentation [DOCDIR]
-  --pdfdir=DIR           pdf documentation [DOCDIR]
-  --psdir=DIR            ps documentation [DOCDIR]
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root @<:@DATAROOTDIR/doc/PACKAGE@:>@
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
 _ACEOF
 
   cat <<\_ACEOF
@@ -1255,6 +1282,7 @@ if test -n "$ac_init_help"; then
   cat <<\_ACEOF
 
 Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
   --enable-debug          enable debug mode
@@ -1273,13 +1301,14 @@ Some influential environment variables:
   LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
               nonstandard directory <lib dir>
   LIBS        libraries to pass to the linker, e.g. -l<library>
-  CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
               you have headers in a nonstandard directory <include dir>
   CPP         C preprocessor
 
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
 
+Report bugs to the package provider.
 _ACEOF
 ac_status=$?
 fi
@@ -1287,15 +1316,17 @@ fi
 if test "$ac_init_help" = "recursive"; then
   # If there are subdirs, report their specific --help.
   for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-    test -d "$ac_dir" || continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
     ac_builddir=.
 
 case "$ac_dir" in
 .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
 *)
-  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
   # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
   case $ac_top_builddir_sub in
   "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
   *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -1331,7 +1362,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
       echo &&
       $SHELL "$ac_srcdir/configure" --help=recursive
     else
-      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
     fi || ac_status=$?
     cd "$ac_pwd" || { ac_status=$?; break; }
   done
@@ -1341,21 +1372,372 @@ test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
 configure
-generated by GNU Autoconf 2.61
+generated by GNU Autoconf 2.67
 
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+Copyright (C) 2010 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
   exit
 fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+@%:@ ac_fn_c_try_compile LINENO
+@%:@ --------------------------
+@%:@ Try to compile conftest. at S|@ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
+
+} @%:@ ac_fn_c_try_compile
+
+@%:@ ac_fn_c_try_link LINENO
+@%:@ -----------------------
+@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
+
+} @%:@ ac_fn_c_try_link
+
+@%:@ ac_fn_c_check_func LINENO FUNC VAR
+@%:@ ----------------------------------
+@%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval "test \"\${$3+set}\"" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} @%:@ ac_fn_c_check_func
+
+@%:@ ac_fn_c_try_cpp LINENO
+@%:@ ----------------------
+@%:@ Try to preprocess conftest. at S|@ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
+
+} @%:@ ac_fn_c_try_cpp
+
+@%:@ ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+@%:@ -------------------------------------------------------
+@%:@ Tests whether HEADER exists, giving a warning if it cannot be compiled using
+@%:@ the include files in INCLUDES and setting the cache variable VAR
+@%:@ accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval "test \"\${$3+set}\"" = set; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval "test \"\${$3+set}\"" = set; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+@%:@include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+@%:@include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval "test \"\${$3+set}\"" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} @%:@ ac_fn_c_check_header_mongrel
+
+@%:@ ac_fn_c_try_run LINENO
+@%:@ ----------------------
+@%:@ Try to link conftest. at S|@ac_ext, and return whether this succeeded. Assumes
+@%:@ that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
+
+} @%:@ ac_fn_c_try_run
+
+@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+@%:@ -------------------------------------------------------
+@%:@ Tests whether HEADER exists and can be compiled using the include files in
+@%:@ INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval "test \"\${$3+set}\"" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+@%:@include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} @%:@ ac_fn_c_check_header_compile
 cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
 It was created by $as_me, which was
-generated by GNU Autoconf 2.61.  Invocation command line was
+generated by GNU Autoconf 2.67.  Invocation command line was
 
   $ $0 $@
 
@@ -1391,8 +1773,8 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  echo "PATH: $as_dir"
-done
+    $as_echo "PATH: $as_dir"
+  done
 IFS=$as_save_IFS
 
 } >&5
@@ -1426,12 +1808,12 @@ do
     | -silent | --silent | --silen | --sile | --sil)
       continue ;;
     *\'*)
-      ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
     esac
     case $ac_pass in
-    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
     2)
-      ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+      as_fn_append ac_configure_args1 " '$ac_arg'"
       if test $ac_must_keep_next = true; then
 	ac_must_keep_next=false # Got value, back to normal.
       else
@@ -1447,13 +1829,13 @@ do
 	  -* ) ac_must_keep_next=true ;;
 	esac
       fi
-      ac_configure_args="$ac_configure_args '$ac_arg'"
+      as_fn_append ac_configure_args " '$ac_arg'"
       ;;
     esac
   done
 done
-$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
-$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
 
 # When interrupted or exit'd, cleanup temporary files, and complete
 # config.log.  We remove comments because anyway the quotes in there
@@ -1465,11 +1847,9 @@ trap 'exit_status=$?
   {
     echo
 
-    cat <<\_ASBOX
-## ---------------- ##
+    $as_echo "## ---------------- ##
 ## Cache variables. ##
-## ---------------- ##
-_ASBOX
+## ---------------- ##"
     echo
     # The following way of writing the cache mishandles newlines in values,
 (
@@ -1478,12 +1858,13 @@ _ASBOX
     case $ac_val in #(
     *${as_nl}*)
       case $ac_var in #(
-      *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
-echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
       esac
       case $ac_var in #(
       _ | IFS | as_nl) ;; #(
-      *) $as_unset $ac_var ;;
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
       esac ;;
     esac
   done
@@ -1502,128 +1883,136 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
 )
     echo
 
-    cat <<\_ASBOX
-## ----------------- ##
+    $as_echo "## ----------------- ##
 ## Output variables. ##
-## ----------------- ##
-_ASBOX
+## ----------------- ##"
     echo
     for ac_var in $ac_subst_vars
     do
       eval ac_val=\$$ac_var
       case $ac_val in
-      *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
       esac
-      echo "$ac_var='\''$ac_val'\''"
+      $as_echo "$ac_var='\''$ac_val'\''"
     done | sort
     echo
 
     if test -n "$ac_subst_files"; then
-      cat <<\_ASBOX
-## ------------------- ##
+      $as_echo "## ------------------- ##
 ## File substitutions. ##
-## ------------------- ##
-_ASBOX
+## ------------------- ##"
       echo
       for ac_var in $ac_subst_files
       do
 	eval ac_val=\$$ac_var
 	case $ac_val in
-	*\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
 	esac
-	echo "$ac_var='\''$ac_val'\''"
+	$as_echo "$ac_var='\''$ac_val'\''"
       done | sort
       echo
     fi
 
     if test -s confdefs.h; then
-      cat <<\_ASBOX
-## ----------- ##
+      $as_echo "## ----------- ##
 ## confdefs.h. ##
-## ----------- ##
-_ASBOX
+## ----------- ##"
       echo
       cat confdefs.h
       echo
     fi
     test "$ac_signal" != 0 &&
-      echo "$as_me: caught signal $ac_signal"
-    echo "$as_me: exit $exit_status"
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
   } >&5
   rm -f core *.core core.conftest.* &&
     rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
     exit $exit_status
 ' 0
 for ac_signal in 1 2 13 15; do
-  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
 done
 ac_signal=0
 
 # confdefs.h avoids OS command line length limits that DEFS can exceed.
 rm -f -r conftest* confdefs.h
 
+$as_echo "/* confdefs.h */" > confdefs.h
+
 # Predefined preprocessor variables.
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
+@%:@define PACKAGE_NAME "$PACKAGE_NAME"
 _ACEOF
 
-
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME"
 _ACEOF
 
-
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
+@%:@define PACKAGE_VERSION "$PACKAGE_VERSION"
 _ACEOF
 
-
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
+@%:@define PACKAGE_STRING "$PACKAGE_STRING"
 _ACEOF
 
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
 
 cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+@%:@define PACKAGE_URL "$PACKAGE_URL"
 _ACEOF
 
 
 # Let the site file select an alternate cache file if it wants to.
-# Prefer explicitly selected file to automatically selected ones.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
 if test -n "$CONFIG_SITE"; then
-  set x "$CONFIG_SITE"
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in @%:@((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
 elif test "x$prefix" != xNONE; then
-  set x "$prefix/share/config.site" "$prefix/etc/config.site"
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
 else
-  set x "$ac_default_prefix/share/config.site" \
-	"$ac_default_prefix/etc/config.site"
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
 fi
-shift
-for ac_site_file
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
 do
-  if test -r "$ac_site_file"; then
-    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
-echo "$as_me: loading site script $ac_site_file" >&6;}
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
     sed 's/^/| /' "$ac_site_file" >&5
-    . "$ac_site_file"
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5 ; }
   fi
 done
 
 if test -r "$cache_file"; then
-  # Some versions of bash will fail to source /dev/null (special
-  # files actually), so we avoid doing that.
-  if test -f "$cache_file"; then
-    { echo "$as_me:$LINENO: loading cache $cache_file" >&5
-echo "$as_me: loading cache $cache_file" >&6;}
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
     case $cache_file in
       [\\/]* | ?:[\\/]* ) . "$cache_file";;
       *)                      . "./$cache_file";;
     esac
   fi
 else
-  { echo "$as_me:$LINENO: creating cache $cache_file" >&5
-echo "$as_me: creating cache $cache_file" >&6;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
   >$cache_file
 fi
 
@@ -1637,60 +2026,56 @@ for ac_var in $ac_precious_vars; do
   eval ac_new_val=\$ac_env_${ac_var}_value
   case $ac_old_set,$ac_new_set in
     set,)
-      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,set)
-      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,);;
     *)
       if test "x$ac_old_val" != "x$ac_new_val"; then
-	{ echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
-echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-	{ echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5
-echo "$as_me:   former value:  $ac_old_val" >&2;}
-	{ echo "$as_me:$LINENO:   current value: $ac_new_val" >&5
-echo "$as_me:   current value: $ac_new_val" >&2;}
-	ac_cache_corrupted=:
+	# differences in whitespace do not lead to failure.
+	ac_old_val_w=`echo x $ac_old_val`
+	ac_new_val_w=`echo x $ac_new_val`
+	if test "$ac_old_val_w" != "$ac_new_val_w"; then
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  ac_cache_corrupted=:
+	else
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  eval $ac_var=\$ac_old_val
+	fi
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
       fi;;
   esac
   # Pass precious variables to config.status.
   if test "$ac_new_set" = set; then
     case $ac_new_val in
-    *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
     *) ac_arg=$ac_var=$ac_new_val ;;
     esac
     case " $ac_configure_args " in
       *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
-      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
     esac
   fi
 done
 if $ac_cache_corrupted; then
-  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
-echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
-   { (exit 1); exit 1; }; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 
 fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
 
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -1707,10 +2092,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
 set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1720,25 +2105,25 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -1747,10 +2132,10 @@ if test -z "$ac_cv_prog_CC"; then
   ac_ct_CC=$CC
   # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
   ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
@@ -1760,25 +2145,25 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_CC="gcc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
   if test "x$ac_ct_CC" = x; then
@@ -1786,12 +2171,8 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     CC=$ac_ct_CC
@@ -1804,10 +2185,10 @@ if test -z "$CC"; then
           if test -n "$ac_tool_prefix"; then
     # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
 set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1817,25 +2198,25 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_CC="${ac_tool_prefix}cc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -1844,10 +2225,10 @@ fi
 if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1858,25 +2239,25 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
        ac_prog_rejected=yes
        continue
      fi
     ac_cv_prog_CC="cc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 if test $ac_prog_rejected = yes; then
   # We found a bogon in the path, so make sure we never use it.
   set dummy $ac_cv_prog_CC
   shift
-  if test $# != 0; then
+  if test $@%:@ != 0; then
     # We chose a different compiler from the bogus one.
     # However, it has the same basename, so the bogon will be chosen
     # first if we set CC to just the basename; use the full file name.
@@ -1888,11 +2269,11 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -1903,10 +2284,10 @@ if test -z "$CC"; then
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1916,25 +2297,25 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -1947,10 +2328,10 @@ if test -z "$CC"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
   ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
@@ -1960,25 +2341,25 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_CC="$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -1990,12 +2371,8 @@ done
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     CC=$ac_ct_CC
@@ -2005,51 +2382,37 @@ fi
 fi
 
 
-test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&5
-echo "$as_me: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5 ; }
 
 # Provide some information about the compiler.
-echo "$as_me:$LINENO: checking for C compiler version" >&5
-ac_compiler=`set X $ac_compile; echo $2`
-{ (ac_try="$ac_compiler --version >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compiler --version >&5") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compiler -v >&5") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compiler -V >&5") 2>&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
 
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -2061,42 +2424,38 @@ main ()
 }
 _ACEOF
 ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.exe b.out"
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
 # Try to create an executable without -o first, disregard a.out.
 # It will help us diagnose broken compilers, and finding out an intuition
 # of exeext.
-{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; }
-ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-#
-# List of possible output files, starting from the most likely.
-# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)
-# only as a last resort.  b.out is created by i960 compilers.
-ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'
-#
-# The IRIX 6 linker writes into existing files which may not be
-# executable, retaining their permissions.  Remove them first so a
-# subsequent execution test works.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
 ac_rmfiles=
 for ac_file in $ac_files
 do
   case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
     * ) ac_rmfiles="$ac_rmfiles $ac_file";;
   esac
 done
 rm -f $ac_rmfiles
 
-if { (ac_try="$ac_link_default"
+if { { ac_try="$ac_link_default"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
   (eval "$ac_link_default") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
   # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
 # So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
 # in a Makefile.  We should not override ac_cv_exeext if it was cached,
@@ -2106,14 +2465,14 @@ for ac_file in $ac_files ''
 do
   test -f "$ac_file" || continue
   case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj )
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
 	;;
     [ab].out )
 	# We found the default executable, but exeext='' is most
 	# certainly right.
 	break;;
     *.* )
-        if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
 	then :; else
 	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
 	fi
@@ -2132,78 +2491,41 @@ test "$ac_cv_exeext" = no && ac_cv_exeext=
 else
   ac_file=''
 fi
-
-{ echo "$as_me:$LINENO: result: $ac_file" >&5
-echo "${ECHO_T}$ac_file" >&6; }
-if test -z "$ac_file"; then
-  echo "$as_me: failed program was:" >&5
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
-See \`config.log' for more details." >&5
-echo "$as_me: error: C compiler cannot create executables
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5 ; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 fi
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
 ac_exeext=$ac_cv_exeext
 
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5
-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; }
-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
-# If not cross compiling, check that we can run a simple program.
-if test "$cross_compiling" != yes; then
-  if { ac_try='./$ac_file'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-	cross_compiling=yes
-    else
-	{ { echo "$as_me:$LINENO: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-    fi
-  fi
-fi
-{ echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
-
-rm -f a.out a.exe conftest$ac_cv_exeext b.out
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
 ac_clean_files=$ac_clean_files_save
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $cross_compiling" >&5
-echo "${ECHO_T}$cross_compiling" >&6; }
-
-{ echo "$as_me:$LINENO: checking for suffix of executables" >&5
-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; }
-if { (ac_try="$ac_link"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
   (eval "$ac_link") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
   # If both `conftest.exe' and `conftest' are `present' (well, observable)
 # catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
 # work properly (i.e., refer to `conftest.exe'), while it won't with
@@ -2211,37 +2533,90 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
 for ac_file in conftest.exe conftest conftest.*; do
   test -f "$ac_file" || continue
   case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
     *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
 	  break;;
     * ) break;;
   esac
 done
 else
-  { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5 ; }
 fi
-
-rm -f conftest$ac_cv_exeext
-{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
-echo "${ECHO_T}$ac_cv_exeext" >&6; }
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
 
 rm -f conftest.$ac_ext
 EXEEXT=$ac_cv_exeext
 ac_exeext=$EXEEXT
-{ echo "$as_me:$LINENO: checking for suffix of object files" >&5
-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; }
-if test "${ac_cv_objext+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+@%:@include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5 ; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if test "${ac_cv_objext+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -2253,51 +2628,46 @@ main ()
 }
 _ACEOF
 rm -f conftest.o conftest.obj
-if { (ac_try="$ac_compile"
+if { { ac_try="$ac_compile"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
   (eval "$ac_compile") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
   for ac_file in conftest.o conftest.obj conftest.*; do
   test -f "$ac_file" || continue;
   case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;;
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
     *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
        break;;
   esac
 done
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5 ; }
 fi
-
 rm -f conftest.$ac_cv_objext conftest.$ac_ext
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
-echo "${ECHO_T}$ac_cv_objext" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
 OBJEXT=$ac_cv_objext
 ac_objext=$OBJEXT
-{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
-if test "${ac_cv_c_compiler_gnu+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -2311,54 +2681,34 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_compiler_gnu=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_compiler_gnu=no
+  ac_compiler_gnu=no
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 ac_cv_c_compiler_gnu=$ac_compiler_gnu
 
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
-GCC=`test $ac_compiler_gnu = yes && echo yes`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
 ac_test_CFLAGS=${CFLAGS+set}
 ac_save_CFLAGS=$CFLAGS
-{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_save_c_werror_flag=$ac_c_werror_flag
    ac_c_werror_flag=yes
    ac_cv_prog_cc_g=no
    CFLAGS="-g"
-   cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -2369,34 +2719,11 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_prog_cc_g=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	CFLAGS=""
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -2407,35 +2734,12 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
+if ac_fn_c_try_compile "$LINENO"; then :
+  
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_c_werror_flag=$ac_save_c_werror_flag
+  ac_c_werror_flag=$ac_save_c_werror_flag
 	 CFLAGS="-g"
-	 cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -2446,42 +2750,18 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_prog_cc_g=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
    ac_c_werror_flag=$ac_save_c_werror_flag
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
 if test "$ac_test_CFLAGS" = set; then
   CFLAGS=$ac_save_CFLAGS
 elif test $ac_cv_prog_cc_g = yes; then
@@ -2497,18 +2777,14 @@ else
     CFLAGS=
   fi
 fi
-{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
-echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_cv_prog_cc_c89=no
 ac_save_CC=$CC
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdarg.h>
 #include <stdio.h>
@@ -2565,31 +2841,9 @@ for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
 	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
 do
   CC="$ac_save_CC $ac_arg"
-  rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+  if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_prog_cc_c89=$ac_arg
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
 rm -f core conftest.err conftest.$ac_objext
   test "x$ac_cv_prog_cc_c89" != "xno" && break
 done
@@ -2600,17 +2854,19 @@ fi
 # AC_CACHE_VAL
 case "x$ac_cv_prog_cc_c89" in
   x)
-    { echo "$as_me:$LINENO: result: none needed" >&5
-echo "${ECHO_T}none needed" >&6; } ;;
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
   xno)
-    { echo "$as_me:$LINENO: result: unsupported" >&5
-echo "${ECHO_T}unsupported" >&6; } ;;
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
   *)
     CC="$CC $ac_cv_prog_cc_c89"
-    { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
 esac
-
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+  
+fi
 
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -2619,128 +2875,43 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-for ac_func in
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-int
-main ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_var=no"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval echo '${'$as_ac_var'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_var'}'` = yes; then
+for ac_func
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+@%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
-
+ 
 fi
 done
 
 
 
 
-# Check whether --with-xml2-config was given.
-if test "${with_xml2_config+set}" = set; then
-  withval=$with_xml2_config;
+@%:@ Check whether --with-xml2-config was given.
+if test "${with_xml2_config+set}" = set; then :
+  withval=$with_xml2_config; 
 fi
 
 
 if test "$with_xml2_config" = "no" ; then
-  { { echo "$as_me:$LINENO: error: LibXML2 support is a need to TinyOWS !" >&5
-echo "$as_me: error: LibXML2 support is a need to TinyOWS !" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "LibXML2 support is a need to TinyOWS !" "$LINENO" 5 
 fi
 
 if test "`basename xx/$with_xml2_config`" = "xml2-config" ; then
   LIBXML2_CONFIG="$with_xml2_config"
   if ! test -f "$LIBXML2_CONFIG" -a -x "$LIBXML2_CONFIG" ; then
-    { { echo "$as_me:$LINENO: error: '$LIBXML2_CONFIG' is not an executable.  Make sure you use --with-xml2-config=/path/to/xml2-config" >&5
-echo "$as_me: error: '$LIBXML2_CONFIG' is not an executable.  Make sure you use --with-xml2-config=/path/to/xml2-config" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? "'$LIBXML2_CONFIG' is not an executable.  Make sure you use --with-xml2-config=/path/to/xml2-config" "$LINENO" 5 
   fi
 else
   # Extract the first word of "xml2-config", so it can be a program name with args.
 set dummy xml2-config; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_path_LIBXML2_CONFIG+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_LIBXML2_CONFIG+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   case $LIBXML2_CONFIG in
   [\\/]* | ?:[\\/]*)
@@ -2752,14 +2923,14 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_path_LIBXML2_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
   test -z "$ac_cv_path_LIBXML2_CONFIG" && ac_cv_path_LIBXML2_CONFIG="no"
@@ -2768,31 +2939,27 @@ esac
 fi
 LIBXML2_CONFIG=$ac_cv_path_LIBXML2_CONFIG
 if test -n "$LIBXML2_CONFIG"; then
-  { echo "$as_me:$LINENO: result: $LIBXML2_CONFIG" >&5
-echo "${ECHO_T}$LIBXML2_CONFIG" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBXML2_CONFIG" >&5
+$as_echo "$LIBXML2_CONFIG" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
 fi
 
 if test "$LIBXML2_CONFIG" = "no" ; then
- { { echo "$as_me:$LINENO: error: couldn't find xml2-config, try using --with-xml2-config=PATH" >&5
-echo "$as_me: error: couldn't find xml2-config, try using --with-xml2-config=PATH" >&2;}
-   { (exit 1); exit 1; }; }
+ as_fn_error $? "couldn't find xml2-config, try using --with-xml2-config=PATH" "$LINENO" 5 
 fi
 
 XML2_VER=`$LIBXML2_CONFIG --version`
-{ echo "$as_me:$LINENO: result: checking for libxml2 version... $XML2_VER" >&5
-echo "${ECHO_T}checking for libxml2 version... $XML2_VER" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: checking for libxml2 version... $XML2_VER" >&5
+$as_echo "checking for libxml2 version... $XML2_VER" >&6; }
 
 xml2_vers=`$LIBXML2_CONFIG --version | awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
-if test "$xml2_vers" -lt 2006020 ; then
-	{ { echo "$as_me:$LINENO: error: You need at least libxml 2.6.20" >&5
-echo "$as_me: error: You need at least libxml 2.6.20" >&2;}
-   { (exit 1); exit 1; }; }
+if test "$xml2_vers" -lt 2008000 ; then
+	as_fn_error $? "You need at least libxml 2.8.0" "$LINENO" 5 
 fi
 
 
@@ -2805,8 +2972,8 @@ XML2_LIB=`$LIBXML2_CONFIG --libs`
 
 
 
-# Check whether --enable-debug was given.
-if test "${enable_debug+set}" = set; then
+@%:@ Check whether --enable-debug was given.
+if test "${enable_debug+set}" = set; then :
   enableval=$enable_debug; TINYOWS_DEBUG=1
 else
   TINYOWS_DEBUG=0
@@ -2815,68 +2982,66 @@ fi
 
 
 
-# Extract the first word of "svnversion", so it can be a program name with args.
-set dummy svnversion; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_svnversion+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+# Extract the first word of "git", so it can be a program name with args.
+set dummy git; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_git+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  if test -n "$svnversion"; then
-  ac_cv_prog_svnversion="$svnversion" # Let the user override the test.
+  if test -n "$git"; then
+  ac_cv_prog_git="$git" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_svnversion="yes"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    ac_cv_prog_git="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
-svnversion=$ac_cv_prog_svnversion
-if test -n "$svnversion"; then
-  { echo "$as_me:$LINENO: result: $svnversion" >&5
-echo "${ECHO_T}$svnversion" >&6; }
+git=$ac_cv_prog_git
+if test -n "$git"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $git" >&5
+$as_echo "$git" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
-if test "$svnversion" = "yes"; then
-	SVN_FLAGS='"-D TINYOWS_SVN_REV=\"$(shell svnversion -n .)\""'
-
+if test "$git" = "yes" -a -d ".git"; then
+	GIT_FLAGS='"-D TINYOWS_GIT_COMMIT=\"$(shell git log --abbrev-commit -n 1 HEAD | grep commit)\""'
+	
 fi
 
 
 
 
-# Check whether --with-pg_config was given.
-if test "${with_pg_config+set}" = set; then
-  withval=$with_pg_config;
+@%:@ Check whether --with-pg_config was given.
+if test "${with_pg_config+set}" = set; then :
+  withval=$with_pg_config; 
 fi
 
 
 if test "$with_pg_config" = "no" ; then
-  { { echo "$as_me:$LINENO: error: PostGIS support is a need to TinyOWS !" >&5
-echo "$as_me: error: PostGIS support is a need to TinyOWS !" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "PostGIS support is a need to TinyOWS !" "$LINENO" 5 
 elif test "$with_pg_config" = "yes" -o "$with_pg_config" = "" ; then
   # Extract the first word of "pg_config", so it can be a program name with args.
 set dummy pg_config; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_path_PG_CONFIG+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_PG_CONFIG+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   case $PG_CONFIG in
   [\\/]* | ?:[\\/]*)
@@ -2888,14 +3053,14 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_path_PG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
   test -z "$ac_cv_path_PG_CONFIG" && ac_cv_path_PG_CONFIG="no"
@@ -2904,35 +3069,31 @@ esac
 fi
 PG_CONFIG=$ac_cv_path_PG_CONFIG
 if test -n "$PG_CONFIG"; then
-  { echo "$as_me:$LINENO: result: $PG_CONFIG" >&5
-echo "${ECHO_T}$PG_CONFIG" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PG_CONFIG" >&5
+$as_echo "$PG_CONFIG" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
 else
-  { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
   PG_CONFIG=$with_pg_config
 fi
 
 if ! test -f "$PG_CONFIG" -a -x "$PG_CONFIG" ; then
-  { { echo "$as_me:$LINENO: error: '$PG_CONFIG' is not an executable.  Make sure you use --with-pg_config=/path/to/pg_config" >&5
-echo "$as_me: error: '$PG_CONFIG' is not an executable.  Make sure you use --with-pg_config=/path/to/pg_config" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "'$PG_CONFIG' is not an executable.  Make sure you use --with-pg_config=/path/to/pg_config" "$LINENO" 5 
 fi
 
 PG_VER=`$PG_CONFIG --version`
-{ echo "$as_me:$LINENO: result: checking for PostgreSQL version... $PG_VER" >&5
-echo "${ECHO_T}checking for PostgreSQL version... $PG_VER" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: checking for PostgreSQL version... $PG_VER" >&5
+$as_echo "checking for PostgreSQL version... $PG_VER" >&6; }
 
 pg_vers=`$PG_CONFIG --version | sed 's/PostgreSQL //' | awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
 if test "$pg_vers" -lt 8001000 ; then
-	{ { echo "$as_me:$LINENO: error: You need at least PostgreSQL 8.1.0" >&5
-echo "$as_me: error: You need at least PostgreSQL 8.1.0" >&2;}
-   { (exit 1); exit 1; }; }
+	as_fn_error $? "You need at least PostgreSQL 8.1.0" "$LINENO" 5 
 fi
 
 
@@ -2948,23 +3109,21 @@ POSTGIS_BIN=`$PG_CONFIG --bindir`
 
 
 
-# Check whether --with-shp2pgsql was given.
-if test "${with_shp2pgsql+set}" = set; then
-  withval=$with_shp2pgsql;
+@%:@ Check whether --with-shp2pgsql was given.
+if test "${with_shp2pgsql+set}" = set; then :
+  withval=$with_shp2pgsql; 
 fi
 
 
 if test "$with_shp2gpsql" = "no" ; then
-  { { echo "$as_me:$LINENO: error: shp2pgsql is a need to TinyOWS !" >&5
-echo "$as_me: error: shp2pgsql is a need to TinyOWS !" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "shp2pgsql is a need to TinyOWS !" "$LINENO" 5 
 elif test "$with_shp2pgsql" = "yes" -o "$with_shp2pgsql" = "" ; then
   # Extract the first word of "shp2pgsql", so it can be a program name with args.
 set dummy shp2pgsql; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_path_SHP2PGSQL+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_SHP2PGSQL+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   case $SHP2PGSQL in
   [\\/]* | ?:[\\/]*)
@@ -2976,14 +3135,14 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_path_SHP2PGSQL="$as_dir/$ac_word$ac_exec_ext"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
   test -z "$ac_cv_path_SHP2PGSQL" && ac_cv_path_SHP2PGSQL="no"
@@ -2992,24 +3151,22 @@ esac
 fi
 SHP2PGSQL=$ac_cv_path_SHP2PGSQL
 if test -n "$SHP2PGSQL"; then
-  { echo "$as_me:$LINENO: result: $SHP2PGSQL" >&5
-echo "${ECHO_T}$SHP2PGSQL" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SHP2PGSQL" >&5
+$as_echo "$SHP2PGSQL" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
 else
-  { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
   SHP2PGSQL=$with_shp2pgsql
 fi
 
 if ! test -f "$SHP2PGSQL" -a -x "$SHP2PGSQL" ; then
-  { { echo "$as_me:$LINENO: error: '$SHP2PGSQL' is not an executable.  Make sure you use --with-shp2pgsql=/path/to/shp2pgsql" >&5
-echo "$as_me: error: '$SHP2PGSQL' is not an executable.  Make sure you use --with-shp2pgsql=/path/to/shp2pgsql" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "'$SHP2PGSQL' is not an executable.  Make sure you use --with-shp2pgsql=/path/to/shp2pgsql" "$LINENO" 5 
 fi
 
 
@@ -3019,10 +3176,10 @@ for ac_prog in flex lex
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_LEX+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_LEX+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$LEX"; then
   ac_cv_prog_LEX="$LEX" # Let the user override the test.
@@ -3032,25 +3189,25 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_LEX="$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 LEX=$ac_cv_prog_LEX
 if test -n "$LEX"; then
-  { echo "$as_me:$LINENO: result: $LEX" >&5
-echo "${ECHO_T}$LEX" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5
+$as_echo "$LEX" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -3078,93 +3235,70 @@ main (void)
   return ! yylex () + ! yywrap ();
 }
 _ACEOF
-{ (ac_try="$LEX conftest.l"
+{ { ac_try="$LEX conftest.l"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
   (eval "$LEX conftest.l") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ echo "$as_me:$LINENO: checking lex output file root" >&5
-echo $ECHO_N "checking lex output file root... $ECHO_C" >&6; }
-if test "${ac_cv_prog_lex_root+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking lex output file root" >&5
+$as_echo_n "checking lex output file root... " >&6; }
+if test "${ac_cv_prog_lex_root+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-
+  
 if test -f lex.yy.c; then
   ac_cv_prog_lex_root=lex.yy
 elif test -f lexyy.c; then
   ac_cv_prog_lex_root=lexyy
 else
-  { { echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5
-echo "$as_me: error: cannot find output from $LEX; giving up" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "cannot find output from $LEX; giving up" "$LINENO" 5 
 fi
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5
-echo "${ECHO_T}$ac_cv_prog_lex_root" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5
+$as_echo "$ac_cv_prog_lex_root" >&6; }
 LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root
 
 if test -z "${LEXLIB+set}"; then
-  { echo "$as_me:$LINENO: checking lex library" >&5
-echo $ECHO_N "checking lex library... $ECHO_C" >&6; }
-if test "${ac_cv_lib_lex+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex library" >&5
+$as_echo_n "checking lex library... " >&6; }
+if test "${ac_cv_lib_lex+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-
+  
     ac_save_LIBS=$LIBS
     ac_cv_lib_lex='none needed'
     for ac_lib in '' -lfl -ll; do
       LIBS="$ac_lib $ac_save_LIBS"
-      cat >conftest.$ac_ext <<_ACEOF
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 `cat $LEX_OUTPUT_ROOT.c`
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_lex=$ac_lib
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
       test "$ac_cv_lib_lex" != 'none needed' && break
     done
     LIBS=$ac_save_LIBS
-
+  
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_lex" >&5
-echo "${ECHO_T}$ac_cv_lib_lex" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5
+$as_echo "$ac_cv_lib_lex" >&6; }
   test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5
-echo $ECHO_N "checking whether yytext is a pointer... $ECHO_C" >&6; }
-if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5
+$as_echo_n "checking whether yytext is a pointer... " >&6; }
+if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   # POSIX says lex can declare yytext either as a pointer or an array; the
 # default is implementation-dependent.  Figure out which it is, since
@@ -3172,74 +3306,48 @@ else
 ac_cv_prog_lex_yytext_pointer=no
 ac_save_LIBS=$LIBS
 LIBS="$LEXLIB $ac_save_LIBS"
-cat >conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 #define YYTEXT_POINTER 1
 `cat $LEX_OUTPUT_ROOT.c`
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_prog_lex_yytext_pointer=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_save_LIBS
 
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_prog_lex_yytext_pointer" >&5
-echo "${ECHO_T}$ac_cv_prog_lex_yytext_pointer" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5
+$as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; }
 if test $ac_cv_prog_lex_yytext_pointer = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define YYTEXT_POINTER 1
-_ACEOF
+  
+$as_echo "@%:@define YYTEXT_POINTER 1" >>confdefs.h
 
 fi
 rm -f conftest.l $LEX_OUTPUT_ROOT.c
 
 fi
 if test "$LEX" != flex; then
-  { { echo "$as_me:$LINENO: error: \"TinyOWS: Need flex to compile\"" >&5
-echo "$as_me: error: \"TinyOWS: Need flex to compile\"" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "\"TinyOWS: Need flex to compile\"" "$LINENO" 5 
 fi
 
 
 USE_FCGI=0
 
-# Check whether --with-fastcgi was given.
-if test "${with_fastcgi+set}" = set; then
+@%:@ Check whether --with-fastcgi was given.
+if test "${with_fastcgi+set}" = set; then :
   withval=$with_fastcgi; FCGI_PATH="$withval"
 else
   FCGI_PATH=""
 fi
-
+ 
 
 
 if test "x$FCGI_PATH" != "x"; then
-        { echo "$as_me:$LINENO: result: checking user-specified fast-cgi location: $FCGI_PATH" >&5
-echo "${ECHO_T}checking user-specified fast-cgi location: $FCGI_PATH" >&6; }
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: checking user-specified fast-cgi location: $FCGI_PATH" >&5
+$as_echo "checking user-specified fast-cgi location: $FCGI_PATH" >&6; }
         FCGI_INC="-I$FCGI_PATH/include"
         FCGI_LIB="-L$FCGI_PATH/lib"
 fi
@@ -3251,15 +3359,15 @@ ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
 fi
 if test -z "$CPP"; then
-  if test "${ac_cv_prog_CPP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  if test "${ac_cv_prog_CPP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
       # Double quotes because CPP needs to be expanded
     for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
@@ -3273,102 +3381,56 @@ do
   # <limits.h> exists even on freestanding compilers.
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+@%:@ifdef __STDC__
+@%:@ include <limits.h>
+@%:@else
+@%:@ include <assert.h>
+@%:@endif
 		     Syntax error
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  :
+if ac_fn_c_try_cpp "$LINENO"; then :
+  
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
   # Broken: fails on valid input.
 continue
 fi
-
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
   # OK, works on sane cases.  Now check whether nonexistent headers
   # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
+if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
 continue
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
   # Passes both tests.
 ac_preproc_ok=:
 break
 fi
-
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
 done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
   break
 fi
 
     done
     ac_cv_prog_CPP=$CPP
-
+  
 fi
   CPP=$ac_cv_prog_CPP
 else
   ac_cv_prog_CPP=$CPP
 fi
-{ echo "$as_me:$LINENO: result: $CPP" >&5
-echo "${ECHO_T}$CPP" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
 ac_preproc_ok=false
 for ac_c_preproc_warn_flag in '' yes
 do
@@ -3378,96 +3440,49 @@ do
   # <limits.h> exists even on freestanding compilers.
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+@%:@ifdef __STDC__
+@%:@ include <limits.h>
+@%:@else
+@%:@ include <assert.h>
+@%:@endif
 		     Syntax error
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  :
+if ac_fn_c_try_cpp "$LINENO"; then :
+  
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
   # Broken: fails on valid input.
 continue
 fi
-
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
   # OK, works on sane cases.  Now check whether nonexistent headers
   # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <ac_nonexistent.h>
+@%:@include <ac_nonexistent.h>
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
+if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
 continue
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
   # Passes both tests.
 ac_preproc_ok=:
 break
 fi
-
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
 done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
-  :
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  
 else
-  { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&5
-echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5 ; }
 fi
 
 ac_ext=c
@@ -3477,45 +3492,40 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
-echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; }
-if test "${ac_cv_path_GREP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  # Extract the first word of "grep ggrep" to use in msg output
-if test -z "$GREP"; then
-set dummy grep ggrep; ac_prog_name=$2
-if test "${ac_cv_path_GREP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if test "${ac_cv_path_GREP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
+  if test -z "$GREP"; then
   ac_path_GREP_found=false
-# Loop through the user's path and test for each of PROGNAME-LIST
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_prog in grep ggrep; do
-  for ac_exec_ext in '' $ac_executable_extensions; do
-    ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-    { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
-    # Check for GNU ac_path_GREP and select it if it is found.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
   # Check for GNU $ac_path_GREP
 case `"$ac_path_GREP" --version 2>&1` in
 *GNU*)
   ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
 *)
   ac_count=0
-  echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+  $as_echo_n 0123456789 >"conftest.in"
   while :
   do
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    echo 'GREP' >> "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
     "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    ac_count=`expr $ac_count + 1`
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
     if test $ac_count -gt ${ac_path_GREP_max-0}; then
       # Best one so far, save it but keep looking for a better one
       ac_cv_path_GREP="$ac_path_GREP"
@@ -3527,77 +3537,61 @@ case `"$ac_path_GREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-
-    $ac_path_GREP_found && break 3
+      $ac_path_GREP_found && break 3
+    done
+  done
   done
-done
-
-done
 IFS=$as_save_IFS
-
-
-fi
-
-GREP="$ac_cv_path_GREP"
-if test -z "$GREP"; then
-  { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 
+  fi
 else
   ac_cv_path_GREP=$GREP
 fi
 
-
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
-echo "${ECHO_T}$ac_cv_path_GREP" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
  GREP="$ac_cv_path_GREP"
+ 
 
-
-{ echo "$as_me:$LINENO: checking for egrep" >&5
-echo $ECHO_N "checking for egrep... $ECHO_C" >&6; }
-if test "${ac_cv_path_EGREP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if test "${ac_cv_path_EGREP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
    then ac_cv_path_EGREP="$GREP -E"
    else
-     # Extract the first word of "egrep" to use in msg output
-if test -z "$EGREP"; then
-set dummy egrep; ac_prog_name=$2
-if test "${ac_cv_path_EGREP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
+     if test -z "$EGREP"; then
   ac_path_EGREP_found=false
-# Loop through the user's path and test for each of PROGNAME-LIST
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_prog in egrep; do
-  for ac_exec_ext in '' $ac_executable_extensions; do
-    ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-    { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
-    # Check for GNU ac_path_EGREP and select it if it is found.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
   # Check for GNU $ac_path_EGREP
 case `"$ac_path_EGREP" --version 2>&1` in
 *GNU*)
   ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
 *)
   ac_count=0
-  echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+  $as_echo_n 0123456789 >"conftest.in"
   while :
   do
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    echo 'EGREP' >> "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
     "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    ac_count=`expr $ac_count + 1`
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
     if test $ac_count -gt ${ac_path_EGREP_max-0}; then
       # Best one so far, save it but keep looking for a better one
       ac_cv_path_EGREP="$ac_path_EGREP"
@@ -3609,46 +3603,31 @@ case `"$ac_path_EGREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-
-    $ac_path_EGREP_found && break 3
+      $ac_path_EGREP_found && break 3
+    done
+  done
   done
-done
-
-done
 IFS=$as_save_IFS
-
-
-fi
-
-EGREP="$ac_cv_path_EGREP"
-if test -z "$EGREP"; then
-  { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 
+  fi
 else
   ac_cv_path_EGREP=$EGREP
 fi
 
-
    fi
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
-echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
  EGREP="$ac_cv_path_EGREP"
+ 
 
-
-{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }
-if test "${ac_cv_header_stdc+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
 #include <stdarg.h>
@@ -3663,85 +3642,53 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_header_stdc=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_header_stdc=no
+  ac_cv_header_stdc=no
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <string.h>
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then
-  :
+  $EGREP "memchr" >/dev/null 2>&1; then :
+  
 else
   ac_cv_header_stdc=no
 fi
-rm -f -r conftest*
+rm -f conftest*
 
 fi
 
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then
-  :
+  $EGREP "free" >/dev/null 2>&1; then :
+  
 else
   ac_cv_header_stdc=no
 fi
-rm -f -r conftest*
+rm -f conftest*
 
 fi
 
 if test $ac_cv_header_stdc = yes; then
   # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then
+  if test "$cross_compiling" = yes; then :
   :
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <ctype.h>
 #include <stdlib.h>
@@ -3768,132 +3715,50 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  :
+if ac_fn_c_try_run "$LINENO"; then :
+  
 else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-ac_cv_header_stdc=no
+  ac_cv_header_stdc=no
 fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
-
 fi
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-echo "${ECHO_T}$ac_cv_header_stdc" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
 if test $ac_cv_header_stdc = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define STDC_HEADERS 1
-_ACEOF
+  
+$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h
 
 fi
 
 # On IRIX 5.3, sys/types and inttypes.h are conflicting.
-
-
-
-
-
-
-
-
-
 for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
 		  inttypes.h stdint.h unistd.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  eval "$as_ac_Header=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_Header=no"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
-
+ 
 fi
 
 done
 
 
-{ echo "$as_me:$LINENO: checking for FCGI_Accept in -lfcgi" >&5
-echo $ECHO_N "checking for FCGI_Accept in -lfcgi... $ECHO_C" >&6; }
-if test "${ac_cv_lib_fcgi_FCGI_Accept+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FCGI_Accept in -lfcgi" >&5
+$as_echo_n "checking for FCGI_Accept in -lfcgi... " >&6; }
+if test "${ac_cv_lib_fcgi_FCGI_Accept+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lfcgi  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -3911,396 +3776,94 @@ return FCGI_Accept ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_fcgi_FCGI_Accept=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_fcgi_FCGI_Accept=no
+  ac_cv_lib_fcgi_FCGI_Accept=no
 fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_fcgi_FCGI_Accept" >&5
-echo "${ECHO_T}$ac_cv_lib_fcgi_FCGI_Accept" >&6; }
-if test $ac_cv_lib_fcgi_FCGI_Accept = yes; then
-
-
-
-for ac_header in fcgi_config.h fcgi_stdio.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_fcgi_FCGI_Accept" >&5
+$as_echo "$ac_cv_lib_fcgi_FCGI_Accept" >&6; }
+if test "x$ac_cv_lib_fcgi_FCGI_Accept" = x""yes; then :
+  
+ 		for ac_header in fcgi_config.h fcgi_stdio.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
-
+ 
    		USE_FCGI=1
-
+ 		
 fi
 
 done
 
+	
+fi
 
-fi
-
-
-		if test "$USE_FCGI" = "0" ; then
-		echo "checking now FCGI in alternate fastcgi include dir"
-		{ echo "$as_me:$LINENO: checking for FCGI_Accept in -lfcgi" >&5
-echo $ECHO_N "checking for FCGI_Accept in -lfcgi... $ECHO_C" >&6; }
-if test "${ac_cv_lib_fcgi_FCGI_Accept+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lfcgi  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char FCGI_Accept ();
-int
-main ()
-{
-return FCGI_Accept ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_fcgi_FCGI_Accept=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_fcgi_FCGI_Accept=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_fcgi_FCGI_Accept" >&5
-echo "${ECHO_T}$ac_cv_lib_fcgi_FCGI_Accept" >&6; }
-if test $ac_cv_lib_fcgi_FCGI_Accept = yes; then
-
-
-
-for ac_header in fastcgi/fcgi_config.h fastcgi/fcgi_stdio.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+
+		if test "$USE_FCGI" = "0" ; then
+		echo "checking now FCGI in alternate fastcgi include dir"
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FCGI_Accept in -lfcgi" >&5
+$as_echo_n "checking for FCGI_Accept in -lfcgi... " >&6; }
+if test "${ac_cv_lib_fcgi_FCGI_Accept+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lfcgi  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char FCGI_Accept ();
+int
+main ()
+{
+return FCGI_Accept ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_fcgi_FCGI_Accept=yes
+else
+  ac_cv_lib_fcgi_FCGI_Accept=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
 fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_fcgi_FCGI_Accept" >&5
+$as_echo "$ac_cv_lib_fcgi_FCGI_Accept" >&6; }
+if test "x$ac_cv_lib_fcgi_FCGI_Accept" = x""yes; then :
+  
+ 			for ac_header in fastcgi/fcgi_config.h fastcgi/fcgi_stdio.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
-
+ 
    			USE_FCGI=1
-
+ 			
 fi
 
 done
 
-
+		
 fi
 
 		if test "x$FCGI_PATH" != "x"; then
@@ -4314,8 +3877,8 @@ fi
 
 
 if test "$USE_FCGI" = "0" ; then
-  { echo "$as_me:$LINENO: WARNING: No FastCGI support. Performances will be strongly reduced !" >&5
-echo "$as_me: WARNING: No FastCGI support. Performances will be strongly reduced !" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \n\nNo FastCGI support. Performances will be strongly reduced !\n" >&5
+$as_echo "$as_me: WARNING: \n\nNo FastCGI support. Performances will be strongly reduced !\n" >&2;}
 else
   FCGI_LIB="$FCGI_LIB -lfcgi"
 fi
@@ -4326,7 +3889,7 @@ fi
 
 
 
-ac_config_files="$ac_config_files Makefile src/ows_define.h demo/tinyows.xml demo/install.sh test/wfs_100/config_wfs_100.xml test/wfs_110/config_wfs_110.xml test/wfs_100/install_wfs_100.sh test/wfs_110/install_wfs_110.sh test/regress/install.sh test/regress/config.xml"
+ac_config_files="$ac_config_files Makefile src/ows_define.h demo/tinyows.xml demo/install.sh test/wfs_100/config_wfs_100.xml test/wfs_110/config_wfs_110.xml test/wfs_100/install_wfs_100.sh test/wfs_110/install_wfs_110.sh"
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -4355,12 +3918,13 @@ _ACEOF
     case $ac_val in #(
     *${as_nl}*)
       case $ac_var in #(
-      *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
-echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
       esac
       case $ac_var in #(
       _ | IFS | as_nl) ;; #(
-      *) $as_unset $ac_var ;;
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
       esac ;;
     esac
   done
@@ -4368,8 +3932,8 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
   (set) 2>&1 |
     case $as_nl`(ac_space=' '; set) 2>&1` in #(
     *${as_nl}ac_space=\ *)
-      # `set' does not quote correctly, so add quotes (double-quote
-      # substitution turns \\\\ into \\, and sed turns \\ into \).
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
       sed -n \
 	"s/'/'\\\\''/g;
 	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
@@ -4392,12 +3956,12 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
 if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
   if test -w "$cache_file"; then
     test "x$cache_file" != "x/dev/null" &&
-      { echo "$as_me:$LINENO: updating cache $cache_file" >&5
-echo "$as_me: updating cache $cache_file" >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
     cat confcache >$cache_file
   else
-    { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
-echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
   fi
 fi
 rm -f confcache
@@ -4414,6 +3978,12 @@ test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
 # take arguments), then branch to the quote section.  Otherwise,
 # look for a macro that doesn't take arguments.
 ac_script='
+:mline
+/\\$/{
+ N
+ s,\\\n,,
+ b mline
+}
 t clear
 :clear
 s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 (][^	 (]*([^)]*)\)[	 ]*\(.*\)/-D\1=\2/g
@@ -4440,27 +4010,30 @@ DEFS=`sed -n "$ac_script" confdefs.h`
 
 ac_libobjs=
 ac_ltlibobjs=
-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+U=
+for ac_i in : $LIB@&t at OBJS; do test "x$ac_i" = x: && continue
   # 1. Remove the extension, and $U if already installed.
   ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-  ac_i=`echo "$ac_i" | sed "$ac_script"`
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
   # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
   #    will be set to the directory where LIBOBJS objects are built.
-  ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-  ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
 done
-LIBOBJS=$ac_libobjs
+LIB@&t at OBJS=$ac_libobjs
 
 LTLIBOBJS=$ac_ltlibobjs
 
 
 
 : ${CONFIG_STATUS=./config.status}
+ac_write_fail=0
 ac_clean_files_save=$ac_clean_files
 ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
-echo "$as_me: creating $CONFIG_STATUS" >&6;}
-cat >$CONFIG_STATUS <<_ACEOF
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
 #! $SHELL
 # Generated by $as_me.
 # Run this file to recreate the current configuration.
@@ -4470,59 +4043,79 @@ cat >$CONFIG_STATUS <<_ACEOF
 debug=false
 ac_cs_recheck=false
 ac_cs_silent=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-_ACEOF
 
-cat >>$CONFIG_STATUS <<\_ACEOF
-## --------------------- ##
-## M4sh Initialization.  ##
-## --------------------- ##
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
 
 # Be more Bourne compatible
 DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   emulate sh
   NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
   # is contrary to our usage.  Disable this feature.
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
+  case `(set -o) 2>/dev/null` in @%:@(
+  *posix*) :
+    set -o posix ;; @%:@(
+  *) :
+     ;;
 esac
-
 fi
 
 
-
-
-# PATH needs CR
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  echo "#! /bin/sh" >conf$$.sh
-  echo  "exit 0"   >>conf$$.sh
-  chmod +x conf$$.sh
-  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-    PATH_SEPARATOR=';'
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
   else
-    PATH_SEPARATOR=:
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in @%:@(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
   fi
-  rm -f conf$$.sh
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
 fi
 
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  as_unset=unset
-else
-  as_unset=false
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
 fi
 
 
@@ -4531,20 +4124,18 @@ fi
 # there to prevent editors from complaining about space-tab.
 # (If _AS_PATH_WALK were called with IFS unset, it would disable word
 # splitting by setting IFS to empty value.)
-as_nl='
-'
 IFS=" ""	$as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
-case $0 in
+case $0 in @%:@((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
 IFS=$as_save_IFS
 
      ;;
@@ -4555,32 +4146,111 @@ if test "x$as_myself" = x; then
   as_myself=$0
 fi
 if test ! -f "$as_myself"; then
-  echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  { (exit 1); exit 1; }
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
 fi
 
-# Work around bugs in pre-3.0 UWIN ksh.
-for as_var in ENV MAIL MAILPATH
-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
 done
 PS1='$ '
 PS2='> '
 PS4='+ '
 
 # NLS nuisances.
-for as_var in \
-  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
-  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
-  LC_TELEPHONE LC_TIME
-do
-  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
-    eval $as_var=C; export $as_var
-  else
-    ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
+@%:@ ----------------------------------------
+@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+@%:@ script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
   fi
-done
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} @%:@ as_fn_error
+
+
+@%:@ as_fn_set_status STATUS
+@%:@ -----------------------
+@%:@ Set @S|@? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} @%:@ as_fn_set_status
+
+@%:@ as_fn_exit STATUS
+@%:@ -----------------
+@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} @%:@ as_fn_exit
+
+@%:@ as_fn_unset VAR
+@%:@ ---------------
+@%:@ Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+@%:@ as_fn_append VAR VALUE
+@%:@ ----------------------
+@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
+@%:@ advantage of any shell optimizations that allow amortized linear growth over
+@%:@ repeated appends, instead of the typical quadratic growth present in naive
+@%:@ implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+@%:@ as_fn_arith ARG...
+@%:@ ------------------
+@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
+@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
+@%:@ must be portable across @S|@(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
 
-# Required to use basename.
 if expr a : '\(a\)' >/dev/null 2>&1 &&
    test "X`expr 00001 : '.*\(...\)'`" = X001; then
   as_expr=expr
@@ -4594,13 +4264,17 @@ else
   as_basename=false
 fi
 
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
 
-# Name of the executable.
 as_me=`$as_basename -- "$0" ||
 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
 	 X"$0" : 'X\(//\)$' \| \
 	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-echo X/"$0" |
+$as_echo X/"$0" |
     sed '/^.*\/\([^/][^/]*\)\/*$/{
 	    s//\1/
 	    q
@@ -4615,104 +4289,103 @@ echo X/"$0" |
 	  }
 	  s/.*/./; q'`
 
-# CDPATH.
-$as_unset CDPATH
-
-
-
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
-
-  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-  # uniformly replaced by the line number.  The first 'sed' inserts a
-  # line-number line after each line using $LINENO; the second 'sed'
-  # does the real work.  The second script uses 'N' to pair each
-  # line-number line with the line containing $LINENO, and appends
-  # trailing '-' during substitution so that $LINENO is not a special
-  # case at line end.
-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-  # scripts with optimization help from Paolo Bonzini.  Blame Lee
-  # E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
-   { (exit 1); exit 1; }; }
-
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
 
 ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in
+case `echo -n x` in @%:@(((((
 -n*)
-  case `echo 'x\c'` in
+  case `echo 'xy\c'` in
   *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  *)   ECHO_C='\c';;
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
   esac;;
 *)
   ECHO_N='-n';;
 esac
 
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
 rm -f conf$$ conf$$.exe conf$$.file
 if test -d conf$$.dir; then
   rm -f conf$$.dir/conf$$.file
 else
   rm -f conf$$.dir
-  mkdir conf$$.dir
-fi
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s='ln -s'
-  # ... but there are two gotchas:
-  # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-  # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-  # In both cases, we have to default to `cp -p'.
-  ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
     as_ln_s='cp -p'
-elif ln conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s=ln
+  fi
 else
   as_ln_s='cp -p'
 fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
 
+
+@%:@ as_fn_mkdir_p
+@%:@ -------------
+@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} @%:@ as_fn_mkdir_p
 if mkdir -p . 2>/dev/null; then
-  as_mkdir_p=:
+  as_mkdir_p='mkdir -p "$as_dir"'
 else
   test -d ./-p && rmdir ./-p
   as_mkdir_p=false
@@ -4729,12 +4402,12 @@ else
   as_test_x='
     eval sh -c '\''
       if test -d "$1"; then
-        test -d "$1/.";
+	test -d "$1/.";
       else
-	case $1 in
-        -*)set "./$1";;
+	case $1 in @%:@(
+	-*)set "./$1";;
 	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in @%:@((
 	???[sx]*):;;*)false;;esac;fi
     '\'' sh
   '
@@ -4749,13 +4422,19 @@ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
 
 
 exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
 
-# Save the log message, to keep $[0] and so on meaningful, and to
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
 This file was extended by $as_me, which was
-generated by GNU Autoconf 2.61.  Invocation command line was
+generated by GNU Autoconf 2.67.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -4768,59 +4447,74 @@ on `(hostname || uname -n) 2>/dev/null | sed 1q`
 
 _ACEOF
 
-cat >>$CONFIG_STATUS <<_ACEOF
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 # Files that config.status was made for.
 config_files="$ac_config_files"
 
 _ACEOF
 
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 ac_cs_usage="\
-\`$as_me' instantiates files from templates according to the
-current configuration.
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
 
-Usage: $0 [OPTIONS] [FILE]...
+Usage: $0 [OPTION]... [TAG]...
 
   -h, --help       print this help, then exit
   -V, --version    print version number and configuration settings, then exit
-  -q, --quiet      do not print progress messages
+      --config     print configuration, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
   -d, --debug      don't remove temporary files
       --recheck    update $as_me by reconfiguring in the same conditions
-  --file=FILE[:TEMPLATE]
-		   instantiate the configuration file FILE
+      --file=FILE[:TEMPLATE] 
+                   instantiate the configuration file FILE
 
 Configuration files:
 $config_files
 
-Report bugs to <bug-autoconf at gnu.org>."
+Report bugs to the package provider."
 
 _ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
 config.status
-configured by $0, generated by GNU Autoconf 2.61,
-  with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+configured by $0, generated by GNU Autoconf 2.67,
+  with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2006 Free Software Foundation, Inc.
+Copyright (C) 2010 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
 ac_pwd='$ac_pwd'
 srcdir='$srcdir'
+test -n "\$AWK" || AWK=awk
 _ACEOF
 
-cat >>$CONFIG_STATUS <<\_ACEOF
-# If no file are specified by the user, then we need to provide default
-# value.  By we need to know if files were specified by the user.
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
 ac_need_defaults=:
 while test $# != 0
 do
   case $1 in
-  --*=*)
+  --*=?*)
     ac_option=`expr "X$1" : 'X\([^=]*\)='`
     ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
     ac_shift=:
     ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
   *)
     ac_option=$1
     ac_optarg=$2
@@ -4833,25 +4527,30 @@ do
   -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
     ac_cs_recheck=: ;;
   --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-    echo "$ac_cs_version"; exit ;;
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
   --debug | --debu | --deb | --de | --d | -d )
     debug=: ;;
   --file | --fil | --fi | --f )
     $ac_shift
-    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
     ac_need_defaults=false;;
   --he | --h |  --help | --hel | -h )
-    echo "$ac_cs_usage"; exit ;;
+    $as_echo "$ac_cs_usage"; exit ;;
   -q | -quiet | --quiet | --quie | --qui | --qu | --q \
   | -silent | --silent | --silen | --sile | --sil | --si | --s)
     ac_cs_silent=: ;;
 
   # This is an error.
-  -*) { echo "$as_me: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&2
-   { (exit 1); exit 1; }; } ;;
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
 
-  *) ac_config_targets="$ac_config_targets $1"
+  *) as_fn_append ac_config_targets " $1"
      ac_need_defaults=false ;;
 
   esac
@@ -4866,30 +4565,32 @@ if $ac_cs_silent; then
 fi
 
 _ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 if \$ac_cs_recheck; then
-  echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
-  CONFIG_SHELL=$SHELL
+  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
   export CONFIG_SHELL
-  exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  exec "\$@"
 fi
 
 _ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 exec 5>>config.log
 {
   echo
-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
+  sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX
+@%:@@%:@ Running $as_me. @%:@@%:@
 _ASBOX
-  echo "$ac_log"
+  $as_echo "$ac_log"
 } >&5
 
 _ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 _ACEOF
 
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 
 # Handling of arguments.
 for ac_config_target in $ac_config_targets
@@ -4903,12 +4604,8 @@ do
     "test/wfs_110/config_wfs_110.xml") CONFIG_FILES="$CONFIG_FILES test/wfs_110/config_wfs_110.xml" ;;
     "test/wfs_100/install_wfs_100.sh") CONFIG_FILES="$CONFIG_FILES test/wfs_100/install_wfs_100.sh" ;;
     "test/wfs_110/install_wfs_110.sh") CONFIG_FILES="$CONFIG_FILES test/wfs_110/install_wfs_110.sh" ;;
-    "test/regress/install.sh") CONFIG_FILES="$CONFIG_FILES test/regress/install.sh" ;;
-    "test/regress/config.xml") CONFIG_FILES="$CONFIG_FILES test/regress/config.xml" ;;
 
-  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
-echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
-   { (exit 1); exit 1; }; };;
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;;
   esac
 done
 
@@ -4933,7 +4630,7 @@ $debug ||
   trap 'exit_status=$?
   { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
 ' 0
-  trap '{ (exit 1); exit 1; }' 1 2 13 15
+  trap 'as_fn_exit 1' 1 2 13 15
 }
 # Create a (secure) tmp directory for tmp files.
 
@@ -4944,163 +4641,177 @@ $debug ||
 {
   tmp=./conf$$-$RANDOM
   (umask 077 && mkdir "$tmp")
-} ||
-{
-   echo "$me: cannot create a temporary directory in ." >&2
-   { (exit 1); exit 1; }
-}
-
-#
-# Set up the sed scripts for CONFIG_FILES section.
-#
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 
 
-# No need to generate the scripts if there are no CONFIG_FILES.
-# This happens for instance when ./config.status config.h
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
 if test -n "$CONFIG_FILES"; then
 
-_ACEOF
 
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$tmp/subs1.awk" &&
+_ACEOF
 
 
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
 ac_delim='%!_!# '
 for ac_last_try in false false false false false :; do
-  cat >conf$$subs.sed <<_ACEOF
-SHELL!$SHELL$ac_delim
-PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim
-PACKAGE_NAME!$PACKAGE_NAME$ac_delim
-PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim
-PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
-PACKAGE_STRING!$PACKAGE_STRING$ac_delim
-PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
-exec_prefix!$exec_prefix$ac_delim
-prefix!$prefix$ac_delim
-program_transform_name!$program_transform_name$ac_delim
-bindir!$bindir$ac_delim
-sbindir!$sbindir$ac_delim
-libexecdir!$libexecdir$ac_delim
-datarootdir!$datarootdir$ac_delim
-datadir!$datadir$ac_delim
-sysconfdir!$sysconfdir$ac_delim
-sharedstatedir!$sharedstatedir$ac_delim
-localstatedir!$localstatedir$ac_delim
-includedir!$includedir$ac_delim
-oldincludedir!$oldincludedir$ac_delim
-docdir!$docdir$ac_delim
-infodir!$infodir$ac_delim
-htmldir!$htmldir$ac_delim
-dvidir!$dvidir$ac_delim
-pdfdir!$pdfdir$ac_delim
-psdir!$psdir$ac_delim
-libdir!$libdir$ac_delim
-localedir!$localedir$ac_delim
-mandir!$mandir$ac_delim
-DEFS!$DEFS$ac_delim
-ECHO_C!$ECHO_C$ac_delim
-ECHO_N!$ECHO_N$ac_delim
-ECHO_T!$ECHO_T$ac_delim
-LIBS!$LIBS$ac_delim
-build_alias!$build_alias$ac_delim
-host_alias!$host_alias$ac_delim
-target_alias!$target_alias$ac_delim
-CC!$CC$ac_delim
-CFLAGS!$CFLAGS$ac_delim
-LDFLAGS!$LDFLAGS$ac_delim
-CPPFLAGS!$CPPFLAGS$ac_delim
-ac_ct_CC!$ac_ct_CC$ac_delim
-EXEEXT!$EXEEXT$ac_delim
-OBJEXT!$OBJEXT$ac_delim
-LIBXML2_CONFIG!$LIBXML2_CONFIG$ac_delim
-XML2_INC!$XML2_INC$ac_delim
-XML2_LIB!$XML2_LIB$ac_delim
-TINYOWS_DEBUG!$TINYOWS_DEBUG$ac_delim
-svnversion!$svnversion$ac_delim
-SVN_FLAGS!$SVN_FLAGS$ac_delim
-PG_CONFIG!$PG_CONFIG$ac_delim
-POSTGIS_INC!$POSTGIS_INC$ac_delim
-POSTGIS_LIB!$POSTGIS_LIB$ac_delim
-POSTGIS_SHARE!$POSTGIS_SHARE$ac_delim
-POSTGIS_BIN!$POSTGIS_BIN$ac_delim
-SHP2PGSQL!$SHP2PGSQL$ac_delim
-LEX!$LEX$ac_delim
-LEX_OUTPUT_ROOT!$LEX_OUTPUT_ROOT$ac_delim
-LEXLIB!$LEXLIB$ac_delim
-CPP!$CPP$ac_delim
-GREP!$GREP$ac_delim
-EGREP!$EGREP$ac_delim
-FCGI_INC!$FCGI_INC$ac_delim
-FCGI_LIB!$FCGI_LIB$ac_delim
-USE_FCGI!$USE_FCGI$ac_delim
-LIBOBJS!$LIBOBJS$ac_delim
-LTLIBOBJS!$LTLIBOBJS$ac_delim
-_ACEOF
+  . ./conf$$subs.sh ||
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 
 
-  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 67; then
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
     break
   elif $ac_last_try; then
-    { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 
   else
     ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
   fi
 done
+rm -f conf$$subs.sh
 
-ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
-if test -n "$ac_eof"; then
-  ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
-  ac_eof=`expr $ac_eof + 1`
-fi
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = ""
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
 
-cat >>$CONFIG_STATUS <<_ACEOF
-cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
+_ACAWK
 _ACEOF
-sed '
-s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
-s/^/s,@/; s/!/@,|#_!!_#|/
-:n
-t n
-s/'"$ac_delim"'$/,g/; t
-s/$/\\/; p
-N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
-' >>$CONFIG_STATUS <conf$$subs.sed
-rm -f conf$$subs.sed
-cat >>$CONFIG_STATUS <<_ACEOF
-:end
-s/|#_!!_#|//g
-CEOF$ac_eof
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 
 _ACEOF
 
-
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
 # trailing colons and then remove the whole line if VPATH becomes empty
 # (actually we leave an empty line to preserve line numbers).
 if test "x$srcdir" = x.; then
-  ac_vpsub='/^[	 ]*VPATH[	 ]*=/{
-s/:*\$(srcdir):*/:/
-s/:*\${srcdir}:*/:/
-s/:*@srcdir@:*/:/
-s/^\([^=]*=[	 ]*\):*/\1/
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
+h
+s///
+s/^/:/
+s/[	 ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
 s/:*$//
+x
+s/\(=[	 ]*\).*/\1/
+G
+s/\n//
 s/^[^=]*=[	 ]*$//
 }'
 fi
 
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 fi # test -n "$CONFIG_FILES"
 
 
-for ac_tag in  :F $CONFIG_FILES
+eval set X "  :F $CONFIG_FILES      "
+shift
+for ac_tag
 do
   case $ac_tag in
   :[FHLC]) ac_mode=$ac_tag; continue;;
   esac
   case $ac_mode$ac_tag in
   :[FHL]*:*);;
-  :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
-echo "$as_me: error: Invalid tag $ac_tag." >&2;}
-   { (exit 1); exit 1; }; };;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5 ;;
   :[FH]-) ac_tag=-:-;;
   :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
   esac
@@ -5128,26 +4839,34 @@ echo "$as_me: error: Invalid tag $ac_tag." >&2;}
 	   [\\/$]*) false;;
 	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
 	   esac ||
-	   { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
-echo "$as_me: error: cannot find input file: $ac_f" >&2;}
-   { (exit 1); exit 1; }; };;
+	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5 ;;
       esac
-      ac_file_inputs="$ac_file_inputs $ac_f"
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
     done
 
     # Let's still pretend it is `configure' which instantiates (i.e., don't
     # use $as_me), people would be surprised to read:
     #    /* config.h.  Generated by config.status.  */
-    configure_input="Generated from "`IFS=:
-	  echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
+    configure_input='Generated from '`
+	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+	`' by configure.'
     if test x"$ac_file" != x-; then
       configure_input="$ac_file.  $configure_input"
-      { echo "$as_me:$LINENO: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
     fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
 
     case $ac_tag in
-    *:-:* | *:-) cat >"$tmp/stdin";;
+    *:-:* | *:-) cat >"$tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5  ;;
     esac
     ;;
   esac
@@ -5157,42 +4876,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
 	 X"$ac_file" : 'X\(//\)[^/]' \| \
 	 X"$ac_file" : 'X\(//\)$' \| \
 	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  { as_dir="$ac_dir"
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$as_dir" |
+$as_echo X"$ac_file" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 	    s//\1/
 	    q
@@ -5210,20 +4894,15 @@ echo X"$as_dir" |
 	    q
 	  }
 	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-echo "$as_me: error: cannot create directory $as_dir" >&2;}
-   { (exit 1); exit 1; }; }; }
+  as_dir="$ac_dir"; as_fn_mkdir_p
   ac_builddir=.
 
 case "$ac_dir" in
 .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
 *)
-  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
   # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
   case $ac_top_builddir_sub in
   "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
   *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -5259,12 +4938,12 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
 
 _ACEOF
 
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # If the template does not know about datarootdir, expand it.
 # FIXME: This hack should be removed a few years after 2.60.
 ac_datarootdir_hack=; ac_datarootdir_seen=
-
-case `sed -n '/datarootdir/ {
+ac_sed_dataroot='
+/datarootdir/ {
   p
   q
 }
@@ -5272,36 +4951,37 @@ case `sed -n '/datarootdir/ {
 /@docdir@/p
 /@infodir@/p
 /@localedir@/p
-/@mandir@/p
-' $ac_file_inputs` in
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
 *datarootdir*) ac_datarootdir_seen=yes;;
 *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
 _ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
   ac_datarootdir_hack='
   s&@datadir@&$datadir&g
   s&@docdir@&$docdir&g
   s&@infodir@&$infodir&g
   s&@localedir@&$localedir&g
   s&@mandir@&$mandir&g
-    s&\\\${datarootdir}&$datarootdir&g' ;;
+  s&\\\${datarootdir}&$datarootdir&g' ;;
 esac
 _ACEOF
 
 # Neutralize VPATH when `$srcdir' = `.'.
 # Shell code in configure.ac might set extrasub.
 # FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF
-  sed "$ac_vpsub
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
 $extrasub
 _ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 :t
 /@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s&@configure_input@&$configure_input&;t t
+s|@configure_input@|$ac_sed_conf_input|;t t
 s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
 s&@srcdir@&$ac_srcdir&;t t
 s&@abs_srcdir@&$ac_abs_srcdir&;t t
 s&@top_srcdir@&$ac_top_srcdir&;t t
@@ -5310,35 +4990,40 @@ s&@builddir@&$ac_builddir&;t t
 s&@abs_builddir@&$ac_abs_builddir&;t t
 s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
 $ac_datarootdir_hack
-" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5 
 
 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
   { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
   { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
-  { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined." >&5
-echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined." >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&2;}
 
   rm -f "$tmp/stdin"
   case $ac_file in
-  -) cat "$tmp/out"; rm -f "$tmp/out";;
-  *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
-  esac
+  -) cat "$tmp/out" && rm -f "$tmp/out";;
+  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5 
  ;;
-
-
-
+  
+  
+  
   esac
 
 done # for ac_tag
 
 
-{ (exit 0); exit 0; }
+as_fn_exit 0
 _ACEOF
-chmod +x $CONFIG_STATUS
 ac_clean_files=$ac_clean_files_save
 
+test $ac_write_fail = 0 ||
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 
+
 
 # configure is writing to config.log, and then calls config.status.
 # config.status does its own redirection, appending to config.log.
@@ -5358,7 +5043,11 @@ if test "$no_create" != yes; then
   exec 5>>config.log
   # Use ||, not &&, to avoid exiting from the if with $? = 1, which
   # would make configure fail if this is the last instruction.
-  $ac_cs_success || { (exit 1); exit 1; }
+  $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
 fi
 
 
@@ -5368,6 +5057,3 @@ rm -f config.log config.status
 echo "------------------------"
 echo "NOTA: This TinyOWS version will need at least PostGIS 1.5.x"
 echo "------------------------"
-echo "IMPORTANT: Make sure that you read:"
-echo "<http://tinyows.org/trac/wiki/LibxmlSchemaGmlBug>"
-echo "------------------------"
diff --git a/autom4te.cache/requests b/autom4te.cache/requests
new file mode 100644
index 0000000..ae20895
--- /dev/null
+++ b/autom4te.cache/requests
@@ -0,0 +1,67 @@
+# This file was generated by Autom4te Tue Aug  3 21:06:07 PDT 2010.
+# It contains the lists of macros which have been traced.
+# It can be safely removed.
+
+ at request = (
+             bless( [
+                      '0',
+                      1,
+                      [
+                        '/usr/share/autoconf'
+                      ],
+                      [
+                        '/usr/share/autoconf/autoconf/autoconf.m4f',
+                        'configure.in'
+                      ],
+                      {
+                        '_LT_AC_TAGCONFIG' => 1,
+                        'AM_PROG_F77_C_O' => 1,
+                        'AC_INIT' => 1,
+                        'm4_pattern_forbid' => 1,
+                        '_AM_COND_IF' => 1,
+                        'AC_CANONICAL_TARGET' => 1,
+                        'AC_SUBST' => 1,
+                        'AC_CONFIG_LIBOBJ_DIR' => 1,
+                        'AC_FC_SRCEXT' => 1,
+                        'AC_CANONICAL_HOST' => 1,
+                        'AC_PROG_LIBTOOL' => 1,
+                        'AM_INIT_AUTOMAKE' => 1,
+                        'AC_CONFIG_SUBDIRS' => 1,
+                        'AM_AUTOMAKE_VERSION' => 1,
+                        'LT_CONFIG_LTDL_DIR' => 1,
+                        'AC_REQUIRE_AUX_FILE' => 1,
+                        'AC_CONFIG_LINKS' => 1,
+                        'm4_sinclude' => 1,
+                        'LT_SUPPORTED_TAG' => 1,
+                        'AM_MAINTAINER_MODE' => 1,
+                        'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
+                        '_m4_warn' => 1,
+                        'AM_PROG_CXX_C_O' => 1,
+                        '_AM_COND_ENDIF' => 1,
+                        'AM_ENABLE_MULTILIB' => 1,
+                        'AM_SILENT_RULES' => 1,
+                        'AC_CONFIG_FILES' => 1,
+                        'include' => 1,
+                        'LT_INIT' => 1,
+                        'AM_GNU_GETTEXT' => 1,
+                        'AC_LIBSOURCE' => 1,
+                        'AM_PROG_FC_C_O' => 1,
+                        'AC_CANONICAL_BUILD' => 1,
+                        'AC_FC_FREEFORM' => 1,
+                        'AH_OUTPUT' => 1,
+                        '_AM_SUBST_NOTMAKE' => 1,
+                        'AC_CONFIG_AUX_DIR' => 1,
+                        'sinclude' => 1,
+                        'm4_pattern_allow' => 1,
+                        'AM_PROG_CC_C_O' => 1,
+                        'AC_CANONICAL_SYSTEM' => 1,
+                        'AM_CONDITIONAL' => 1,
+                        'AC_CONFIG_HEADERS' => 1,
+                        'AC_DEFINE_TRACE_LITERAL' => 1,
+                        'm4_include' => 1,
+                        '_AM_COND_ELSE' => 1,
+                        'AC_SUBST_TRACE' => 1
+                      }
+                    ], 'Autom4te::Request' )
+           );
+
diff --git a/autom4te.cache/traces.0 b/autom4te.cache/traces.0
new file mode 100644
index 0000000..ec9631e
--- /dev/null
+++ b/autom4te.cache/traces.0
@@ -0,0 +1,309 @@
+m4trace:configure.in:1: -1- AC_INIT([])
+m4trace:configure.in:1: -1- m4_pattern_forbid([^_?A[CHUM]_])
+m4trace:configure.in:1: -1- m4_pattern_forbid([_AC_])
+m4trace:configure.in:1: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
+m4trace:configure.in:1: -1- m4_pattern_allow([^AS_FLAGS$])
+m4trace:configure.in:1: -1- m4_pattern_forbid([^_?m4_])
+m4trace:configure.in:1: -1- m4_pattern_forbid([^dnl$])
+m4trace:configure.in:1: -1- m4_pattern_forbid([^_?AS_])
+m4trace:configure.in:1: -1- AC_SUBST([SHELL])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([SHELL])
+m4trace:configure.in:1: -1- m4_pattern_allow([^SHELL$])
+m4trace:configure.in:1: -1- AC_SUBST([PATH_SEPARATOR])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([PATH_SEPARATOR])
+m4trace:configure.in:1: -1- m4_pattern_allow([^PATH_SEPARATOR$])
+m4trace:configure.in:1: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME],      ['AC_PACKAGE_NAME'])])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([PACKAGE_NAME])
+m4trace:configure.in:1: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.in:1: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME],   ['AC_PACKAGE_TARNAME'])])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([PACKAGE_TARNAME])
+m4trace:configure.in:1: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.in:1: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION],   ['AC_PACKAGE_VERSION'])])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
+m4trace:configure.in:1: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.in:1: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING],    ['AC_PACKAGE_STRING'])])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([PACKAGE_STRING])
+m4trace:configure.in:1: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.in:1: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT])
+m4trace:configure.in:1: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.in:1: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL],       ['AC_PACKAGE_URL'])])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([PACKAGE_URL])
+m4trace:configure.in:1: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.in:1: -1- AC_SUBST([exec_prefix], [NONE])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([exec_prefix])
+m4trace:configure.in:1: -1- m4_pattern_allow([^exec_prefix$])
+m4trace:configure.in:1: -1- AC_SUBST([prefix], [NONE])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([prefix])
+m4trace:configure.in:1: -1- m4_pattern_allow([^prefix$])
+m4trace:configure.in:1: -1- AC_SUBST([program_transform_name], [s,x,x,])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([program_transform_name])
+m4trace:configure.in:1: -1- m4_pattern_allow([^program_transform_name$])
+m4trace:configure.in:1: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([bindir])
+m4trace:configure.in:1: -1- m4_pattern_allow([^bindir$])
+m4trace:configure.in:1: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([sbindir])
+m4trace:configure.in:1: -1- m4_pattern_allow([^sbindir$])
+m4trace:configure.in:1: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([libexecdir])
+m4trace:configure.in:1: -1- m4_pattern_allow([^libexecdir$])
+m4trace:configure.in:1: -1- AC_SUBST([datarootdir], ['${prefix}/share'])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([datarootdir])
+m4trace:configure.in:1: -1- m4_pattern_allow([^datarootdir$])
+m4trace:configure.in:1: -1- AC_SUBST([datadir], ['${datarootdir}'])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([datadir])
+m4trace:configure.in:1: -1- m4_pattern_allow([^datadir$])
+m4trace:configure.in:1: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([sysconfdir])
+m4trace:configure.in:1: -1- m4_pattern_allow([^sysconfdir$])
+m4trace:configure.in:1: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([sharedstatedir])
+m4trace:configure.in:1: -1- m4_pattern_allow([^sharedstatedir$])
+m4trace:configure.in:1: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([localstatedir])
+m4trace:configure.in:1: -1- m4_pattern_allow([^localstatedir$])
+m4trace:configure.in:1: -1- AC_SUBST([includedir], ['${prefix}/include'])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([includedir])
+m4trace:configure.in:1: -1- m4_pattern_allow([^includedir$])
+m4trace:configure.in:1: -1- AC_SUBST([oldincludedir], ['/usr/include'])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([oldincludedir])
+m4trace:configure.in:1: -1- m4_pattern_allow([^oldincludedir$])
+m4trace:configure.in:1: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
+				     ['${datarootdir}/doc/${PACKAGE_TARNAME}'],
+				     ['${datarootdir}/doc/${PACKAGE}'])])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([docdir])
+m4trace:configure.in:1: -1- m4_pattern_allow([^docdir$])
+m4trace:configure.in:1: -1- AC_SUBST([infodir], ['${datarootdir}/info'])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([infodir])
+m4trace:configure.in:1: -1- m4_pattern_allow([^infodir$])
+m4trace:configure.in:1: -1- AC_SUBST([htmldir], ['${docdir}'])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([htmldir])
+m4trace:configure.in:1: -1- m4_pattern_allow([^htmldir$])
+m4trace:configure.in:1: -1- AC_SUBST([dvidir], ['${docdir}'])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([dvidir])
+m4trace:configure.in:1: -1- m4_pattern_allow([^dvidir$])
+m4trace:configure.in:1: -1- AC_SUBST([pdfdir], ['${docdir}'])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([pdfdir])
+m4trace:configure.in:1: -1- m4_pattern_allow([^pdfdir$])
+m4trace:configure.in:1: -1- AC_SUBST([psdir], ['${docdir}'])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([psdir])
+m4trace:configure.in:1: -1- m4_pattern_allow([^psdir$])
+m4trace:configure.in:1: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([libdir])
+m4trace:configure.in:1: -1- m4_pattern_allow([^libdir$])
+m4trace:configure.in:1: -1- AC_SUBST([localedir], ['${datarootdir}/locale'])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([localedir])
+m4trace:configure.in:1: -1- m4_pattern_allow([^localedir$])
+m4trace:configure.in:1: -1- AC_SUBST([mandir], ['${datarootdir}/man'])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([mandir])
+m4trace:configure.in:1: -1- m4_pattern_allow([^mandir$])
+m4trace:configure.in:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
+m4trace:configure.in:1: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.in:1: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
+@%:@undef PACKAGE_NAME])
+m4trace:configure.in:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
+m4trace:configure.in:1: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.in:1: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
+@%:@undef PACKAGE_TARNAME])
+m4trace:configure.in:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
+m4trace:configure.in:1: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.in:1: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
+@%:@undef PACKAGE_VERSION])
+m4trace:configure.in:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
+m4trace:configure.in:1: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.in:1: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
+@%:@undef PACKAGE_STRING])
+m4trace:configure.in:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
+m4trace:configure.in:1: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.in:1: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
+@%:@undef PACKAGE_BUGREPORT])
+m4trace:configure.in:1: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL])
+m4trace:configure.in:1: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.in:1: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */
+@%:@undef PACKAGE_URL])
+m4trace:configure.in:1: -1- AC_SUBST([DEFS])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([DEFS])
+m4trace:configure.in:1: -1- m4_pattern_allow([^DEFS$])
+m4trace:configure.in:1: -1- AC_SUBST([ECHO_C])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([ECHO_C])
+m4trace:configure.in:1: -1- m4_pattern_allow([^ECHO_C$])
+m4trace:configure.in:1: -1- AC_SUBST([ECHO_N])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([ECHO_N])
+m4trace:configure.in:1: -1- m4_pattern_allow([^ECHO_N$])
+m4trace:configure.in:1: -1- AC_SUBST([ECHO_T])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([ECHO_T])
+m4trace:configure.in:1: -1- m4_pattern_allow([^ECHO_T$])
+m4trace:configure.in:1: -1- AC_SUBST([LIBS])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.in:1: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.in:1: -1- AC_SUBST([build_alias])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([build_alias])
+m4trace:configure.in:1: -1- m4_pattern_allow([^build_alias$])
+m4trace:configure.in:1: -1- AC_SUBST([host_alias])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([host_alias])
+m4trace:configure.in:1: -1- m4_pattern_allow([^host_alias$])
+m4trace:configure.in:1: -1- AC_SUBST([target_alias])
+m4trace:configure.in:1: -1- AC_SUBST_TRACE([target_alias])
+m4trace:configure.in:1: -1- m4_pattern_allow([^target_alias$])
+m4trace:configure.in:2: -1- AC_SUBST([CC])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.in:2: -1- m4_pattern_allow([^CC$])
+m4trace:configure.in:2: -1- AC_SUBST([CFLAGS])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([CFLAGS])
+m4trace:configure.in:2: -1- m4_pattern_allow([^CFLAGS$])
+m4trace:configure.in:2: -1- AC_SUBST([LDFLAGS])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([LDFLAGS])
+m4trace:configure.in:2: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.in:2: -1- AC_SUBST([LIBS])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.in:2: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.in:2: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.in:2: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.in:2: -1- AC_SUBST([CC])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.in:2: -1- m4_pattern_allow([^CC$])
+m4trace:configure.in:2: -1- AC_SUBST([CC])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.in:2: -1- m4_pattern_allow([^CC$])
+m4trace:configure.in:2: -1- AC_SUBST([CC])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.in:2: -1- m4_pattern_allow([^CC$])
+m4trace:configure.in:2: -1- AC_SUBST([CC])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.in:2: -1- m4_pattern_allow([^CC$])
+m4trace:configure.in:2: -1- AC_SUBST([ac_ct_CC])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([ac_ct_CC])
+m4trace:configure.in:2: -1- m4_pattern_allow([^ac_ct_CC$])
+m4trace:configure.in:2: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([EXEEXT])
+m4trace:configure.in:2: -1- m4_pattern_allow([^EXEEXT$])
+m4trace:configure.in:2: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
+m4trace:configure.in:2: -1- AC_SUBST_TRACE([OBJEXT])
+m4trace:configure.in:2: -1- m4_pattern_allow([^OBJEXT$])
+m4trace:configure.in:21: -1- AC_SUBST([LIBXML2_CONFIG])
+m4trace:configure.in:21: -1- AC_SUBST_TRACE([LIBXML2_CONFIG])
+m4trace:configure.in:21: -1- m4_pattern_allow([^LIBXML2_CONFIG$])
+m4trace:configure.in:41: -1- AC_SUBST([XML2_INC])
+m4trace:configure.in:41: -1- AC_SUBST_TRACE([XML2_INC])
+m4trace:configure.in:41: -1- m4_pattern_allow([^XML2_INC$])
+m4trace:configure.in:42: -1- AC_SUBST([XML2_LIB])
+m4trace:configure.in:42: -1- AC_SUBST_TRACE([XML2_LIB])
+m4trace:configure.in:42: -1- m4_pattern_allow([^XML2_LIB$])
+m4trace:configure.in:51: -1- AC_SUBST([TINYOWS_DEBUG])
+m4trace:configure.in:51: -1- AC_SUBST_TRACE([TINYOWS_DEBUG])
+m4trace:configure.in:51: -1- m4_pattern_allow([^TINYOWS_DEBUG$])
+m4trace:configure.in:57: -1- AC_SUBST([git])
+m4trace:configure.in:57: -1- AC_SUBST_TRACE([git])
+m4trace:configure.in:57: -1- m4_pattern_allow([^git$])
+m4trace:configure.in:60: -1- AC_SUBST([GIT_FLAGS])
+m4trace:configure.in:60: -1- AC_SUBST_TRACE([GIT_FLAGS])
+m4trace:configure.in:60: -1- m4_pattern_allow([^GIT_FLAGS$])
+m4trace:configure.in:73: -1- AC_SUBST([PG_CONFIG])
+m4trace:configure.in:73: -1- AC_SUBST_TRACE([PG_CONFIG])
+m4trace:configure.in:73: -1- m4_pattern_allow([^PG_CONFIG$])
+m4trace:configure.in:97: -1- AC_SUBST([POSTGIS_INC])
+m4trace:configure.in:97: -1- AC_SUBST_TRACE([POSTGIS_INC])
+m4trace:configure.in:97: -1- m4_pattern_allow([^POSTGIS_INC$])
+m4trace:configure.in:98: -1- AC_SUBST([POSTGIS_LIB])
+m4trace:configure.in:98: -1- AC_SUBST_TRACE([POSTGIS_LIB])
+m4trace:configure.in:98: -1- m4_pattern_allow([^POSTGIS_LIB$])
+m4trace:configure.in:99: -1- AC_SUBST([POSTGIS_SHARE])
+m4trace:configure.in:99: -1- AC_SUBST_TRACE([POSTGIS_SHARE])
+m4trace:configure.in:99: -1- m4_pattern_allow([^POSTGIS_SHARE$])
+m4trace:configure.in:100: -1- AC_SUBST([POSTGIS_BIN])
+m4trace:configure.in:100: -1- AC_SUBST_TRACE([POSTGIS_BIN])
+m4trace:configure.in:100: -1- m4_pattern_allow([^POSTGIS_BIN$])
+m4trace:configure.in:111: -1- AC_SUBST([SHP2PGSQL])
+m4trace:configure.in:111: -1- AC_SUBST_TRACE([SHP2PGSQL])
+m4trace:configure.in:111: -1- m4_pattern_allow([^SHP2PGSQL$])
+m4trace:configure.in:121: -1- AC_SUBST([SHP2PGSQL])
+m4trace:configure.in:121: -1- AC_SUBST_TRACE([SHP2PGSQL])
+m4trace:configure.in:121: -1- m4_pattern_allow([^SHP2PGSQL$])
+m4trace:configure.in:127: -1- AC_SUBST([LEX])
+m4trace:configure.in:127: -1- AC_SUBST_TRACE([LEX])
+m4trace:configure.in:127: -1- m4_pattern_allow([^LEX$])
+m4trace:configure.in:127: -1- AC_SUBST([LEX_OUTPUT_ROOT], [$ac_cv_prog_lex_root])
+m4trace:configure.in:127: -1- AC_SUBST_TRACE([LEX_OUTPUT_ROOT])
+m4trace:configure.in:127: -1- m4_pattern_allow([^LEX_OUTPUT_ROOT$])
+m4trace:configure.in:127: -1- AC_SUBST([LEXLIB])
+m4trace:configure.in:127: -1- AC_SUBST_TRACE([LEXLIB])
+m4trace:configure.in:127: -1- m4_pattern_allow([^LEXLIB$])
+m4trace:configure.in:127: -1- AC_DEFINE_TRACE_LITERAL([YYTEXT_POINTER])
+m4trace:configure.in:127: -1- m4_pattern_allow([^YYTEXT_POINTER$])
+m4trace:configure.in:127: -1- AH_OUTPUT([YYTEXT_POINTER], [/* Define to 1 if `lex\' declares `yytext\' as a `char *\' by default, not a
+   `char@<:@@:>@\'. */
+@%:@undef YYTEXT_POINTER])
+m4trace:configure.in:150: -1- AH_OUTPUT([HAVE_FCGI_CONFIG_H], [/* Define to 1 if you have the <fcgi_config.h> header file. */
+@%:@undef HAVE_FCGI_CONFIG_H])
+m4trace:configure.in:150: -1- AH_OUTPUT([HAVE_FCGI_STDIO_H], [/* Define to 1 if you have the <fcgi_stdio.h> header file. */
+@%:@undef HAVE_FCGI_STDIO_H])
+m4trace:configure.in:150: -1- AC_SUBST([CPP])
+m4trace:configure.in:150: -1- AC_SUBST_TRACE([CPP])
+m4trace:configure.in:150: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.in:150: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.in:150: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.in:150: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.in:150: -1- AC_SUBST([CPP])
+m4trace:configure.in:150: -1- AC_SUBST_TRACE([CPP])
+m4trace:configure.in:150: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.in:150: -1- AC_SUBST([GREP])
+m4trace:configure.in:150: -1- AC_SUBST_TRACE([GREP])
+m4trace:configure.in:150: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.in:150: -1- AC_SUBST([EGREP])
+m4trace:configure.in:150: -1- AC_SUBST_TRACE([EGREP])
+m4trace:configure.in:150: -1- m4_pattern_allow([^EGREP$])
+m4trace:configure.in:150: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
+m4trace:configure.in:150: -1- m4_pattern_allow([^STDC_HEADERS$])
+m4trace:configure.in:150: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
+@%:@undef STDC_HEADERS])
+m4trace:configure.in:150: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
+@%:@undef HAVE_SYS_TYPES_H])
+m4trace:configure.in:150: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
+@%:@undef HAVE_SYS_STAT_H])
+m4trace:configure.in:150: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+@%:@undef HAVE_STDLIB_H])
+m4trace:configure.in:150: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
+@%:@undef HAVE_STRING_H])
+m4trace:configure.in:150: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
+@%:@undef HAVE_MEMORY_H])
+m4trace:configure.in:150: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
+@%:@undef HAVE_STRINGS_H])
+m4trace:configure.in:150: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
+@%:@undef HAVE_INTTYPES_H])
+m4trace:configure.in:150: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
+@%:@undef HAVE_STDINT_H])
+m4trace:configure.in:150: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
+@%:@undef HAVE_UNISTD_H])
+m4trace:configure.in:159: -1- AH_OUTPUT([HAVE_FASTCGI_FCGI_CONFIG_H], [/* Define to 1 if you have the <fastcgi/fcgi_config.h> header file. */
+@%:@undef HAVE_FASTCGI_FCGI_CONFIG_H])
+m4trace:configure.in:159: -1- AH_OUTPUT([HAVE_FASTCGI_FCGI_STDIO_H], [/* Define to 1 if you have the <fastcgi/fcgi_stdio.h> header file. */
+@%:@undef HAVE_FASTCGI_FCGI_STDIO_H])
+m4trace:configure.in:180: -1- AC_SUBST([FCGI_INC])
+m4trace:configure.in:180: -1- AC_SUBST_TRACE([FCGI_INC])
+m4trace:configure.in:180: -1- m4_pattern_allow([^FCGI_INC$])
+m4trace:configure.in:181: -1- AC_SUBST([FCGI_LIB])
+m4trace:configure.in:181: -1- AC_SUBST_TRACE([FCGI_LIB])
+m4trace:configure.in:181: -1- m4_pattern_allow([^FCGI_LIB$])
+m4trace:configure.in:182: -1- AC_SUBST([USE_FCGI])
+m4trace:configure.in:182: -1- AC_SUBST_TRACE([USE_FCGI])
+m4trace:configure.in:182: -1- m4_pattern_allow([^USE_FCGI$])
+m4trace:configure.in:186: -1- AC_CONFIG_FILES([Makefile src/ows_define.h demo/tinyows.xml demo/install.sh test/wfs_100/config_wfs_100.xml test/wfs_110/config_wfs_110.xml test/wfs_100/install_wfs_100.sh test/wfs_110/install_wfs_110.sh])
+m4trace:configure.in:186: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments.
+You should run autoupdate.], [])
+m4trace:configure.in:186: -1- AC_SUBST([LIB@&t at OBJS], [$ac_libobjs])
+m4trace:configure.in:186: -1- AC_SUBST_TRACE([LIB@&t at OBJS])
+m4trace:configure.in:186: -1- m4_pattern_allow([^LIB@&t at OBJS$])
+m4trace:configure.in:186: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
+m4trace:configure.in:186: -1- AC_SUBST_TRACE([LTLIBOBJS])
+m4trace:configure.in:186: -1- m4_pattern_allow([^LTLIBOBJS$])
+m4trace:configure.in:186: -1- AC_SUBST_TRACE([top_builddir])
+m4trace:configure.in:186: -1- AC_SUBST_TRACE([top_build_prefix])
+m4trace:configure.in:186: -1- AC_SUBST_TRACE([srcdir])
+m4trace:configure.in:186: -1- AC_SUBST_TRACE([abs_srcdir])
+m4trace:configure.in:186: -1- AC_SUBST_TRACE([top_srcdir])
+m4trace:configure.in:186: -1- AC_SUBST_TRACE([abs_top_srcdir])
+m4trace:configure.in:186: -1- AC_SUBST_TRACE([builddir])
+m4trace:configure.in:186: -1- AC_SUBST_TRACE([abs_builddir])
+m4trace:configure.in:186: -1- AC_SUBST_TRACE([abs_top_builddir])
diff --git a/config.log b/config.log
new file mode 100644
index 0000000..5fa6015
--- /dev/null
+++ b/config.log
@@ -0,0 +1,609 @@
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by configure, which was
+generated by GNU Autoconf 2.67.  Invocation command line was
+
+  $ ./configure 
+
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = ks35059.kimsufi.com
+uname -m = x86_64
+uname -r = 2.6.38.2-grsec-xxxx-grs-ipv6-64
+uname -s = Linux
+uname -v = #2 SMP Thu Aug 25 16:40:22 UTC 2011
+
+/usr/bin/uname -p = unknown
+/bin/uname -X     = unknown
+
+/bin/arch              = unknown
+/usr/bin/arch -k       = unknown
+/usr/convex/getsysinfo = unknown
+/usr/bin/hostinfo      = unknown
+/bin/machine           = unknown
+/usr/bin/oslevel       = unknown
+/bin/universe          = unknown
+
+PATH: /usr/local/sbin
+PATH: /usr/local/bin
+PATH: /usr/sbin
+PATH: /usr/bin
+PATH: /sbin
+PATH: /bin
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+configure:2135: checking for gcc
+configure:2151: found /usr/bin/gcc
+configure:2162: result: gcc
+configure:2391: checking for C compiler version
+configure:2400: gcc --version >&5
+gcc (Debian 4.4.5-8) 4.4.5
+Copyright (C) 2010 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+configure:2411: $? = 0
+configure:2400: gcc -v >&5
+Using built-in specs.
+Target: x86_64-linux-gnu
+Configured with: ../src/configure -v --with-pkgversion='Debian 4.4.5-8' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.4 --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --with-arch-32=i586 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
+Thread model: posix
+gcc version 4.4.5 (Debian 4.4.5-8) 
+configure:2411: $? = 0
+configure:2400: gcc -V >&5
+gcc: '-V' option must have argument
+configure:2411: $? = 1
+configure:2400: gcc -qversion >&5
+gcc: unrecognized option '-qversion'
+gcc: no input files
+configure:2411: $? = 1
+configure:2431: checking whether the C compiler works
+configure:2453: gcc    conftest.c  >&5
+configure:2457: $? = 0
+configure:2505: result: yes
+configure:2508: checking for C compiler default output file name
+configure:2510: result: a.out
+configure:2516: checking for suffix of executables
+configure:2523: gcc -o conftest    conftest.c  >&5
+configure:2527: $? = 0
+configure:2549: result: 
+configure:2571: checking whether we are cross compiling
+configure:2579: gcc -o conftest    conftest.c  >&5
+configure:2583: $? = 0
+configure:2590: ./conftest
+configure:2594: $? = 0
+configure:2609: result: no
+configure:2614: checking for suffix of object files
+configure:2636: gcc -c   conftest.c >&5
+configure:2640: $? = 0
+configure:2661: result: o
+configure:2665: checking whether we are using the GNU C compiler
+configure:2684: gcc -c   conftest.c >&5
+configure:2684: $? = 0
+configure:2693: result: yes
+configure:2702: checking whether gcc accepts -g
+configure:2722: gcc -c -g  conftest.c >&5
+configure:2722: $? = 0
+configure:2763: result: yes
+configure:2780: checking for gcc option to accept ISO C89
+configure:2844: gcc  -c -g -O2  conftest.c >&5
+configure:2844: $? = 0
+configure:2857: result: none needed
+configure:2881: checking for X
+configure:2881: gcc -o conftest -g -O2   conftest.c  >&5
+/tmp/cck4drVJ.o: In function `main':
+/var/www/tinyows.org/release/tinyows-1.1.0/conftest.c:43: undefined reference to `X'
+collect2: ld returned 1 exit status
+configure:2881: $? = 1
+configure: failed program was:
+| /* confdefs.h */
+| #define PACKAGE_NAME ""
+| #define PACKAGE_TARNAME ""
+| #define PACKAGE_VERSION ""
+| #define PACKAGE_STRING ""
+| #define PACKAGE_BUGREPORT ""
+| #define PACKAGE_URL ""
+| /* end confdefs.h.  */
+| /* Define X to an innocuous variant, in case <limits.h> declares X.
+|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+| #define X innocuous_X
+| 
+| /* System header to define __stub macros and hopefully few prototypes,
+|     which can conflict with char X (); below.
+|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+|     <limits.h> exists even on freestanding compilers.  */
+| 
+| #ifdef __STDC__
+| # include <limits.h>
+| #else
+| # include <assert.h>
+| #endif
+| 
+| #undef X
+| 
+| /* Override any GCC internal prototype to avoid an error.
+|    Use char because int might match the return type of a GCC
+|    builtin and then its argument prototype would still apply.  */
+| #ifdef __cplusplus
+| extern "C"
+| #endif
+| char X ();
+| /* The GNU C library defines this for functions which it implements
+|     to always fail with ENOSYS.  Some functions are actually named
+|     something starting with __ and the normal name is an alias.  */
+| #if defined __stub_X || defined __stub___X
+| choke me
+| #endif
+| 
+| int
+| main ()
+| {
+| return X ();
+|   ;
+|   return 0;
+| }
+configure:2881: result: no
+configure:2881: checking for $CC
+configure:2881: gcc -o conftest -g -O2   conftest.c  >&5
+/tmp/ccOoZQCR.s: Assembler messages:
+/tmp/ccOoZQCR.s:23: Error: suffix or operands invalid for `call'
+configure:2881: $? = 1
+configure: failed program was:
+| /* confdefs.h */
+| #define PACKAGE_NAME ""
+| #define PACKAGE_TARNAME ""
+| #define PACKAGE_VERSION ""
+| #define PACKAGE_STRING ""
+| #define PACKAGE_BUGREPORT ""
+| #define PACKAGE_URL ""
+| /* end confdefs.h.  */
+| /* Define $CC to an innocuous variant, in case <limits.h> declares $CC.
+|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+| #define $CC innocuous_$CC
+| 
+| /* System header to define __stub macros and hopefully few prototypes,
+|     which can conflict with char $CC (); below.
+|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+|     <limits.h> exists even on freestanding compilers.  */
+| 
+| #ifdef __STDC__
+| # include <limits.h>
+| #else
+| # include <assert.h>
+| #endif
+| 
+| #undef $CC
+| 
+| /* Override any GCC internal prototype to avoid an error.
+|    Use char because int might match the return type of a GCC
+|    builtin and then its argument prototype would still apply.  */
+| #ifdef __cplusplus
+| extern "C"
+| #endif
+| char $CC ();
+| /* The GNU C library defines this for functions which it implements
+|     to always fail with ENOSYS.  Some functions are actually named
+|     something starting with __ and the normal name is an alias.  */
+| #if defined __stub_$CC || defined __stub___$CC
+| choke me
+| #endif
+| 
+| int
+| main ()
+| {
+| return $CC ();
+|   ;
+|   return 0;
+| }
+configure:2881: result: no
+configure:2881: checking for -c
+configure:2881: gcc -o conftest -g -O2   conftest.c  >&5
+conftest.c:11:9: error: macro names must be identifiers
+conftest.c:24:8: error: macro names must be identifiers
+conftest.c:24:9: warning: extra tokens at end of #undef directive
+conftest.c:32: error: expected identifier or '(' before '-' token
+configure:2881: $? = 1
+configure: failed program was:
+| /* confdefs.h */
+| #define PACKAGE_NAME ""
+| #define PACKAGE_TARNAME ""
+| #define PACKAGE_VERSION ""
+| #define PACKAGE_STRING ""
+| #define PACKAGE_BUGREPORT ""
+| #define PACKAGE_URL ""
+| /* end confdefs.h.  */
+| /* Define -c to an innocuous variant, in case <limits.h> declares -c.
+|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+| #define -c innocuous_-c
+| 
+| /* System header to define __stub macros and hopefully few prototypes,
+|     which can conflict with char -c (); below.
+|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+|     <limits.h> exists even on freestanding compilers.  */
+| 
+| #ifdef __STDC__
+| # include <limits.h>
+| #else
+| # include <assert.h>
+| #endif
+| 
+| #undef -c
+| 
+| /* Override any GCC internal prototype to avoid an error.
+|    Use char because int might match the return type of a GCC
+|    builtin and then its argument prototype would still apply.  */
+| #ifdef __cplusplus
+| extern "C"
+| #endif
+| char -c ();
+| /* The GNU C library defines this for functions which it implements
+|     to always fail with ENOSYS.  Some functions are actually named
+|     something starting with __ and the normal name is an alias.  */
+| #if defined __stub_-c || defined __stub___-c
+| choke me
+| #endif
+| 
+| int
+| main ()
+| {
+| return -c ();
+|   ;
+|   return 0;
+| }
+configure:2881: result: no
+configure:2881: checking for $CFLAGS
+configure:2881: gcc -o conftest -g -O2   conftest.c  >&5
+/tmp/ccDpcFM3.s: Assembler messages:
+/tmp/ccDpcFM3.s:23: Error: suffix or operands invalid for `call'
+configure:2881: $? = 1
+configure: failed program was:
+| /* confdefs.h */
+| #define PACKAGE_NAME ""
+| #define PACKAGE_TARNAME ""
+| #define PACKAGE_VERSION ""
+| #define PACKAGE_STRING ""
+| #define PACKAGE_BUGREPORT ""
+| #define PACKAGE_URL ""
+| /* end confdefs.h.  */
+| /* Define $CFLAGS to an innocuous variant, in case <limits.h> declares $CFLAGS.
+|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+| #define $CFLAGS innocuous_$CFLAGS
+| 
+| /* System header to define __stub macros and hopefully few prototypes,
+|     which can conflict with char $CFLAGS (); below.
+|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+|     <limits.h> exists even on freestanding compilers.  */
+| 
+| #ifdef __STDC__
+| # include <limits.h>
+| #else
+| # include <assert.h>
+| #endif
+| 
+| #undef $CFLAGS
+| 
+| /* Override any GCC internal prototype to avoid an error.
+|    Use char because int might match the return type of a GCC
+|    builtin and then its argument prototype would still apply.  */
+| #ifdef __cplusplus
+| extern "C"
+| #endif
+| char $CFLAGS ();
+| /* The GNU C library defines this for functions which it implements
+|     to always fail with ENOSYS.  Some functions are actually named
+|     something starting with __ and the normal name is an alias.  */
+| #if defined __stub_$CFLAGS || defined __stub___$CFLAGS
+| choke me
+| #endif
+| 
+| int
+| main ()
+| {
+| return $CFLAGS ();
+|   ;
+|   return 0;
+| }
+configure:2881: result: no
+configure:2881: checking for $CPPFLAGS
+configure:2881: gcc -o conftest -g -O2   conftest.c  >&5
+/tmp/cc3QZ76d.s: Assembler messages:
+/tmp/cc3QZ76d.s:23: Error: suffix or operands invalid for `call'
+configure:2881: $? = 1
+configure: failed program was:
+| /* confdefs.h */
+| #define PACKAGE_NAME ""
+| #define PACKAGE_TARNAME ""
+| #define PACKAGE_VERSION ""
+| #define PACKAGE_STRING ""
+| #define PACKAGE_BUGREPORT ""
+| #define PACKAGE_URL ""
+| /* end confdefs.h.  */
+| /* Define $CPPFLAGS to an innocuous variant, in case <limits.h> declares $CPPFLAGS.
+|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+| #define $CPPFLAGS innocuous_$CPPFLAGS
+| 
+| /* System header to define __stub macros and hopefully few prototypes,
+|     which can conflict with char $CPPFLAGS (); below.
+|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+|     <limits.h> exists even on freestanding compilers.  */
+| 
+| #ifdef __STDC__
+| # include <limits.h>
+| #else
+| # include <assert.h>
+| #endif
+| 
+| #undef $CPPFLAGS
+| 
+| /* Override any GCC internal prototype to avoid an error.
+|    Use char because int might match the return type of a GCC
+|    builtin and then its argument prototype would still apply.  */
+| #ifdef __cplusplus
+| extern "C"
+| #endif
+| char $CPPFLAGS ();
+| /* The GNU C library defines this for functions which it implements
+|     to always fail with ENOSYS.  Some functions are actually named
+|     something starting with __ and the normal name is an alias.  */
+| #if defined __stub_$CPPFLAGS || defined __stub___$CPPFLAGS
+| choke me
+| #endif
+| 
+| int
+| main ()
+| {
+| return $CPPFLAGS ();
+|   ;
+|   return 0;
+| }
+configure:2881: result: no
+configure:2881: checking for conftest.$ac_ext
+configure:2881: gcc -o conftest -g -O2   conftest.c  >&5
+conftest.c:11:17: warning: missing whitespace after the macro name
+conftest.c:24:16: warning: extra tokens at end of #undef directive
+conftest.c:32: error: expected '=', ',', ';', 'asm' or '__attribute__' before '.' token
+conftest.c:36:28: error: token "." is not valid in preprocessor expressions
+conftest.c: In function 'main':
+conftest.c:43: error: 'conftest' undeclared (first use in this function)
+conftest.c:43: error: (Each undeclared identifier is reported only once
+conftest.c:43: error: for each function it appears in.)
+configure:2881: $? = 1
+configure: failed program was:
+| /* confdefs.h */
+| #define PACKAGE_NAME ""
+| #define PACKAGE_TARNAME ""
+| #define PACKAGE_VERSION ""
+| #define PACKAGE_STRING ""
+| #define PACKAGE_BUGREPORT ""
+| #define PACKAGE_URL ""
+| /* end confdefs.h.  */
+| /* Define conftest.$ac_ext to an innocuous variant, in case <limits.h> declares conftest.$ac_ext.
+|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+| #define conftest.$ac_ext innocuous_conftest.$ac_ext
+| 
+| /* System header to define __stub macros and hopefully few prototypes,
+|     which can conflict with char conftest.$ac_ext (); below.
+|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+|     <limits.h> exists even on freestanding compilers.  */
+| 
+| #ifdef __STDC__
+| # include <limits.h>
+| #else
+| # include <assert.h>
+| #endif
+| 
+| #undef conftest.$ac_ext
+| 
+| /* Override any GCC internal prototype to avoid an error.
+|    Use char because int might match the return type of a GCC
+|    builtin and then its argument prototype would still apply.  */
+| #ifdef __cplusplus
+| extern "C"
+| #endif
+| char conftest.$ac_ext ();
+| /* The GNU C library defines this for functions which it implements
+|     to always fail with ENOSYS.  Some functions are actually named
+|     something starting with __ and the normal name is an alias.  */
+| #if defined __stub_conftest.$ac_ext || defined __stub___conftest.$ac_ext
+| choke me
+| #endif
+| 
+| int
+| main ()
+| {
+| return conftest.$ac_ext ();
+|   ;
+|   return 0;
+| }
+configure:2881: result: no
+configure:2881: checking for >&5
+configure:2881: gcc -o conftest -g -O2   conftest.c  >&5
+conftest.c:11:9: error: macro names must be identifiers
+conftest.c:24:8: error: macro names must be identifiers
+conftest.c:24:9: warning: extra tokens at end of #undef directive
+conftest.c:32: error: expected identifier or '(' before '>' token
+conftest.c:36:21: error: operator '>' has no right operand
+conftest.c: In function 'main':
+conftest.c:43: error: expected expression before '>' token
+configure:2881: $? = 1
+configure: failed program was:
+| /* confdefs.h */
+| #define PACKAGE_NAME ""
+| #define PACKAGE_TARNAME ""
+| #define PACKAGE_VERSION ""
+| #define PACKAGE_STRING ""
+| #define PACKAGE_BUGREPORT ""
+| #define PACKAGE_URL ""
+| /* end confdefs.h.  */
+| /* Define >&5 to an innocuous variant, in case <limits.h> declares >&5.
+|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+| #define >&5 innocuous_>&5
+| 
+| /* System header to define __stub macros and hopefully few prototypes,
+|     which can conflict with char >&5 (); below.
+|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+|     <limits.h> exists even on freestanding compilers.  */
+| 
+| #ifdef __STDC__
+| # include <limits.h>
+| #else
+| # include <assert.h>
+| #endif
+| 
+| #undef >&5
+| 
+| /* Override any GCC internal prototype to avoid an error.
+|    Use char because int might match the return type of a GCC
+|    builtin and then its argument prototype would still apply.  */
+| #ifdef __cplusplus
+| extern "C"
+| #endif
+| char >&5 ();
+| /* The GNU C library defines this for functions which it implements
+|     to always fail with ENOSYS.  Some functions are actually named
+|     something starting with __ and the normal name is an alias.  */
+| #if defined __stub_>&5 || defined __stub___>&5
+| choke me
+| #endif
+| 
+| int
+| main ()
+| {
+| return >&5 ();
+|   ;
+|   return 0;
+| }
+configure:2881: result: no
+configure:2911: checking for xml2-config
+configure:2942: result: no
+configure:2953: error: couldn't find xml2-config, try using --with-xml2-config=PATH
+
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+
+ac_cv_c_compiler_gnu=yes
+ac_cv_env_CC_set=
+ac_cv_env_CC_value=
+ac_cv_env_CFLAGS_set=
+ac_cv_env_CFLAGS_value=
+ac_cv_env_CPPFLAGS_set=
+ac_cv_env_CPPFLAGS_value=
+ac_cv_env_CPP_set=
+ac_cv_env_CPP_value=
+ac_cv_env_LDFLAGS_set=
+ac_cv_env_LDFLAGS_value=
+ac_cv_env_LIBS_set=
+ac_cv_env_LIBS_value=
+ac_cv_env_build_alias_set=
+ac_cv_env_build_alias_value=
+ac_cv_env_host_alias_set=
+ac_cv_env_host_alias_value=
+ac_cv_env_target_alias_set=
+ac_cv_env_target_alias_value=
+ac_cv_func_X=no
+ac_cv_func__CC=no
+ac_cv_func__CFLAGS=no
+ac_cv_func__CPPFLAGS=no
+ac_cv_func___5=no
+ac_cv_func__c=no
+ac_cv_func_conftest__ac_ext=no
+ac_cv_objext=o
+ac_cv_path_LIBXML2_CONFIG=no
+ac_cv_prog_ac_ct_CC=gcc
+ac_cv_prog_cc_c89=
+ac_cv_prog_cc_g=yes
+
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+
+CC='gcc'
+CFLAGS='-g -O2'
+CPP=''
+CPPFLAGS=''
+DEFS=''
+ECHO_C=''
+ECHO_N='-n'
+ECHO_T=''
+EGREP=''
+EXEEXT=''
+FCGI_INC=''
+FCGI_LIB=''
+GIT_FLAGS=''
+GREP=''
+LDFLAGS=''
+LEX=''
+LEXLIB=''
+LEX_OUTPUT_ROOT=''
+LIBOBJS=''
+LIBS=''
+LIBXML2_CONFIG='no'
+LTLIBOBJS=''
+OBJEXT='o'
+PACKAGE_BUGREPORT=''
+PACKAGE_NAME=''
+PACKAGE_STRING=''
+PACKAGE_TARNAME=''
+PACKAGE_URL=''
+PACKAGE_VERSION=''
+PATH_SEPARATOR=':'
+PG_CONFIG=''
+POSTGIS_BIN=''
+POSTGIS_INC=''
+POSTGIS_LIB=''
+POSTGIS_SHARE=''
+SHELL='/bin/sh'
+SHP2PGSQL=''
+TINYOWS_DEBUG=''
+USE_FCGI=''
+XML2_INC=''
+XML2_LIB=''
+ac_ct_CC='gcc'
+bindir='${exec_prefix}/bin'
+build_alias=''
+datadir='${datarootdir}'
+datarootdir='${prefix}/share'
+docdir='${datarootdir}/doc/${PACKAGE}'
+dvidir='${docdir}'
+exec_prefix='NONE'
+git=''
+host_alias=''
+htmldir='${docdir}'
+includedir='${prefix}/include'
+infodir='${datarootdir}/info'
+libdir='${exec_prefix}/lib'
+libexecdir='${exec_prefix}/libexec'
+localedir='${datarootdir}/locale'
+localstatedir='${prefix}/var'
+mandir='${datarootdir}/man'
+oldincludedir='/usr/include'
+pdfdir='${docdir}'
+prefix='NONE'
+program_transform_name='s,x,x,'
+psdir='${docdir}'
+sbindir='${exec_prefix}/sbin'
+sharedstatedir='${prefix}/com'
+sysconfdir='${prefix}/etc'
+target_alias=''
+
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+
+/* confdefs.h */
+#define PACKAGE_NAME ""
+#define PACKAGE_TARNAME ""
+#define PACKAGE_VERSION ""
+#define PACKAGE_STRING ""
+#define PACKAGE_BUGREPORT ""
+#define PACKAGE_URL ""
+
+configure: exit 1
diff --git a/configure b/configure
index 6fffae3..1baa6a1 100755
--- a/configure
+++ b/configure
@@ -1,60 +1,83 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61.
+# Generated by GNU Autoconf 2.67.
+#
 #
 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+# Foundation, Inc.
+#
+#
 # This configure script is free software; the Free Software Foundation
 # gives unlimited permission to copy, distribute and modify it.
-## --------------------- ##
-## M4sh Initialization.  ##
-## --------------------- ##
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
 
 # Be more Bourne compatible
 DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   emulate sh
   NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
   # is contrary to our usage.  Disable this feature.
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
 esac
-
 fi
 
 
-
-
-# PATH needs CR
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  echo "#! /bin/sh" >conf$$.sh
-  echo  "exit 0"   >>conf$$.sh
-  chmod +x conf$$.sh
-  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-    PATH_SEPARATOR=';'
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
   else
-    PATH_SEPARATOR=:
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
   fi
-  rm -f conf$$.sh
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
 fi
 
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  as_unset=unset
-else
-  as_unset=false
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
 fi
 
 
@@ -63,20 +86,18 @@ fi
 # there to prevent editors from complaining about space-tab.
 # (If _AS_PATH_WALK were called with IFS unset, it would disable word
 # splitting by setting IFS to empty value.)
-as_nl='
-'
 IFS=" ""	$as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
-case $0 in
+case $0 in #((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
 IFS=$as_save_IFS
 
      ;;
@@ -87,354 +108,321 @@ if test "x$as_myself" = x; then
   as_myself=$0
 fi
 if test ! -f "$as_myself"; then
-  echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  { (exit 1); exit 1; }
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
 fi
 
-# Work around bugs in pre-3.0 UWIN ksh.
-for as_var in ENV MAIL MAILPATH
-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
 done
 PS1='$ '
 PS2='> '
 PS4='+ '
 
 # NLS nuisances.
-for as_var in \
-  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
-  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
-  LC_TELEPHONE LC_TIME
-do
-  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
-    eval $as_var=C; export $as_var
-  else
-    ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-  fi
-done
-
-# Required to use basename.
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-
-# Name of the executable.
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
 
 # CDPATH.
-$as_unset CDPATH
-
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
 if test "x$CONFIG_SHELL" = x; then
-  if (eval ":") 2>/dev/null; then
-  as_have_required=yes
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
 else
-  as_have_required=no
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
 fi
-
-  if test $as_have_required = yes && 	 (eval ":
-(as_func_return () {
-  (exit \$1)
-}
-as_func_success () {
-  as_func_return 0
-}
-as_func_failure () {
-  as_func_return 1
-}
-as_func_ret_success () {
-  return 0
-}
-as_func_ret_failure () {
-  return 1
-}
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
 
 exitcode=0
-if as_func_success; then
-  :
-else
-  exitcode=1
-  echo as_func_success failed.
-fi
-
-if as_func_failure; then
-  exitcode=1
-  echo as_func_failure succeeded.
-fi
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
 
-if as_func_ret_success; then
-  :
 else
-  exitcode=1
-  echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
-  exitcode=1
-  echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
-  :
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
 else
-  exitcode=1
-  echo positional parameters were not saved.
+  as_have_required=no
 fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
 
-test \$exitcode = 0) || { (exit 1); exit 1; }
-
-(
-  as_lineno_1=\$LINENO
-  as_lineno_2=\$LINENO
-  test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
-  test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
-") 2> /dev/null; then
-  :
 else
-  as_candidate_shells=
-    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
 for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  case $as_dir in
+  as_found=:
+  case $as_dir in #(
 	 /*)
 	   for as_base in sh bash ksh sh5; do
-	     as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
+	     # Try only shells that exist, to save several forks.
+	     as_shell=$as_dir/$as_base
+	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
 	   done;;
        esac
+  as_found=false
 done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
 IFS=$as_save_IFS
 
 
-      for as_shell in $as_candidate_shells $SHELL; do
-	 # Try only shells that exist, to save several forks.
-	 if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-		{ ("$as_shell") 2> /dev/null <<\_ASEOF
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
-esac
-
+      if test "x$CONFIG_SHELL" != x; then :
+  # We cannot yet assume a decent shell, so we have to provide a
+	# neutralization value for shells without unset; and this also
+	# works around shells that cannot unset nonexistent variables.
+	BASH_ENV=/dev/null
+	ENV=/dev/null
+	(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+	export CONFIG_SHELL
+	exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
 fi
 
-
-:
-_ASEOF
-}; then
-  CONFIG_SHELL=$as_shell
-	       as_have_required=yes
-	       if { "$as_shell" 2> /dev/null <<\_ASEOF
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
-esac
-
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf at gnu.org about your system,
+$0: including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
+  fi
+  exit 1
 fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
 
-
-:
-(as_func_return () {
-  (exit $1)
-}
-as_func_success () {
-  as_func_return 0
-}
-as_func_failure () {
-  as_func_return 1
-}
-as_func_ret_success () {
-  return 0
-}
-as_func_ret_failure () {
-  return 1
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
 }
+as_unset=as_fn_unset
 
-exitcode=0
-if as_func_success; then
-  :
-else
-  exitcode=1
-  echo as_func_success failed.
-fi
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
 
-if as_func_failure; then
-  exitcode=1
-  echo as_func_failure succeeded.
-fi
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
 
-if as_func_ret_success; then
-  :
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
 else
-  exitcode=1
-  echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
-  exitcode=1
-  echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = "$1" ); then
-  :
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
 else
-  exitcode=1
-  echo positional parameters were not saved.
-fi
-
-test $exitcode = 0) || { (exit 1); exit 1; }
-
-(
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
-
-_ASEOF
-}; then
-  break
-fi
-
-fi
-
-      done
-
-      if test "x$CONFIG_SHELL" != x; then
-  for as_var in BASH_ENV ENV
-        do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-        done
-        export CONFIG_SHELL
-        exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
-fi
-
-
-    if test $as_have_required = no; then
-  echo This script requires a shell more modern than all the
-      echo shells that I found on your system.  Please install a
-      echo modern shell, or manually run the script under such a
-      echo shell if you do have one.
-      { (exit 1); exit 1; }
-fi
-
-
-fi
-
-fi
-
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
 
 
-(eval "as_func_return () {
-  (exit \$1)
-}
-as_func_success () {
-  as_func_return 0
-}
-as_func_failure () {
-  as_func_return 1
-}
-as_func_ret_success () {
-  return 0
-}
-as_func_ret_failure () {
-  return 1
-}
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
 
-exitcode=0
-if as_func_success; then
-  :
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
 else
-  exitcode=1
-  echo as_func_success failed.
-fi
-
-if as_func_failure; then
-  exitcode=1
-  echo as_func_failure succeeded.
+  as_expr=false
 fi
 
-if as_func_ret_success; then
-  :
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
 else
-  exitcode=1
-  echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
-  exitcode=1
-  echo as_func_ret_failure succeeded.
+  as_basename=false
 fi
 
-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
-  :
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
 else
-  exitcode=1
-  echo positional parameters were not saved.
+  as_dirname=false
 fi
 
-test \$exitcode = 0") || {
-  echo No shell found that supports shell functions.
-  echo Please tell autoconf at gnu.org about your system,
-  echo including any error possibly output before this
-  echo message
-}
-
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
 
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
 
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
 
-  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-  # uniformly replaced by the line number.  The first 'sed' inserts a
-  # line-number line after each line using $LINENO; the second 'sed'
-  # does the real work.  The second script uses 'N' to pair each
-  # line-number line with the line containing $LINENO, and appends
-  # trailing '-' during substitution so that $LINENO is not a special
-  # case at line end.
-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-  # scripts with optimization help from Paolo Bonzini.  Blame Lee
-  # E. McMahon (1931-1989) for sed's syntax.  :-)
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
   sed -n '
     p
     /[$]LINENO/=
@@ -451,8 +439,7 @@ test \$exitcode = 0") || {
       s/-\n.*//
     ' >$as_me.lineno &&
   chmod +x "$as_me.lineno" ||
-    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
-   { (exit 1); exit 1; }; }
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
 
   # Don't try to exec as it changes $[0], causing all sort of problems
   # (the dirname of $[0] is not the place where we might find the
@@ -462,49 +449,40 @@ test \$exitcode = 0") || {
   exit
 }
 
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
 ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in
+case `echo -n x` in #(((((
 -n*)
-  case `echo 'x\c'` in
+  case `echo 'xy\c'` in
   *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  *)   ECHO_C='\c';;
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
   esac;;
 *)
   ECHO_N='-n';;
 esac
 
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
 rm -f conf$$ conf$$.exe conf$$.file
 if test -d conf$$.dir; then
   rm -f conf$$.dir/conf$$.file
 else
   rm -f conf$$.dir
-  mkdir conf$$.dir
-fi
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s='ln -s'
-  # ... but there are two gotchas:
-  # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-  # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-  # In both cases, we have to default to `cp -p'.
-  ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
     as_ln_s='cp -p'
-elif ln conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s=ln
+  fi
 else
   as_ln_s='cp -p'
 fi
@@ -512,7 +490,7 @@ rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
 
 if mkdir -p . 2>/dev/null; then
-  as_mkdir_p=:
+  as_mkdir_p='mkdir -p "$as_dir"'
 else
   test -d ./-p && rmdir ./-p
   as_mkdir_p=false
@@ -529,12 +507,12 @@ else
   as_test_x='
     eval sh -c '\''
       if test -d "$1"; then
-        test -d "$1/.";
+	test -d "$1/.";
       else
-	case $1 in
-        -*)set "./$1";;
+	case $1 in #(
+	-*)set "./$1";;
 	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
 	???[sx]*):;;*)false;;esac;fi
     '\'' sh
   '
@@ -548,11 +526,11 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
 as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
 
 
-
-exec 7<&0 </dev/null 6>&1
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
 
 # Name of the host.
-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
 # so uname gets run too.
 ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
 
@@ -567,7 +545,6 @@ cross_compiling=no
 subdirs=
 MFLAGS=
 MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
 
 # Identity of this package.
 PACKAGE_NAME=
@@ -575,6 +552,7 @@ PACKAGE_TARNAME=
 PACKAGE_VERSION=
 PACKAGE_STRING=
 PACKAGE_BUGREPORT=
+PACKAGE_URL=
 
 # Factoring default headers for most tests.
 ac_includes_default="\
@@ -612,74 +590,83 @@ ac_includes_default="\
 # include <unistd.h>
 #endif"
 
-ac_subst_vars='SHELL
-PATH_SEPARATOR
-PACKAGE_NAME
-PACKAGE_TARNAME
-PACKAGE_VERSION
-PACKAGE_STRING
-PACKAGE_BUGREPORT
-exec_prefix
-prefix
-program_transform_name
-bindir
-sbindir
-libexecdir
-datarootdir
-datadir
-sysconfdir
-sharedstatedir
-localstatedir
-includedir
-oldincludedir
-docdir
-infodir
-htmldir
-dvidir
-pdfdir
-psdir
-libdir
-localedir
-mandir
-DEFS
-ECHO_C
-ECHO_N
-ECHO_T
-LIBS
-build_alias
-host_alias
-target_alias
-CC
-CFLAGS
-LDFLAGS
-CPPFLAGS
-ac_ct_CC
-EXEEXT
-OBJEXT
-LIBXML2_CONFIG
-XML2_INC
-XML2_LIB
-TINYOWS_DEBUG
-svnversion
-SVN_FLAGS
-PG_CONFIG
-POSTGIS_INC
-POSTGIS_LIB
-POSTGIS_SHARE
-POSTGIS_BIN
-SHP2PGSQL
-LEX
-LEX_OUTPUT_ROOT
-LEXLIB
-CPP
-GREP
-EGREP
-FCGI_INC
-FCGI_LIB
-USE_FCGI
+ac_subst_vars='LTLIBOBJS
 LIBOBJS
-LTLIBOBJS'
+USE_FCGI
+FCGI_LIB
+FCGI_INC
+EGREP
+GREP
+CPP
+LEXLIB
+LEX_OUTPUT_ROOT
+LEX
+SHP2PGSQL
+POSTGIS_BIN
+POSTGIS_SHARE
+POSTGIS_LIB
+POSTGIS_INC
+PG_CONFIG
+GIT_FLAGS
+git
+TINYOWS_DEBUG
+XML2_LIB
+XML2_INC
+LIBXML2_CONFIG
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
 ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+with_xml2_config
+enable_debug
+with_pg_config
+with_shp2pgsql
+with_fastcgi
+'
       ac_precious_vars='build_alias
 host_alias
 target_alias
@@ -694,6 +681,8 @@ CPP'
 # Initialize some variables set by options.
 ac_init_help=
 ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
 # The variables have the same names as the options, with
 # dashes changed to underlines.
 cache_file=/dev/null
@@ -749,8 +738,9 @@ do
   fi
 
   case $ac_option in
-  *=*)	ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-  *)	ac_optarg=yes ;;
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
   esac
 
   # Accept the important Cygnus configure options, so we can diagnose typos.
@@ -792,13 +782,20 @@ do
     datarootdir=$ac_optarg ;;
 
   -disable-* | --disable-*)
-    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
-   { (exit 1); exit 1; }; }
-    ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
-    eval enable_$ac_feature=no ;;
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
 
   -docdir | --docdir | --docdi | --doc | --do)
     ac_prev=docdir ;;
@@ -811,13 +808,20 @@ do
     dvidir=$ac_optarg ;;
 
   -enable-* | --enable-*)
-    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
-   { (exit 1); exit 1; }; }
-    ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
-    eval enable_$ac_feature=\$ac_optarg ;;
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
 
   -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
   | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
@@ -1008,22 +1012,36 @@ do
     ac_init_version=: ;;
 
   -with-* | --with-*)
-    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid package name: $ac_package" >&2
-   { (exit 1); exit 1; }; }
-    ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
-    eval with_$ac_package=\$ac_optarg ;;
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
 
   -without-* | --without-*)
-    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid package name: $ac_package" >&2
-   { (exit 1); exit 1; }; }
-    ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
-    eval with_$ac_package=no ;;
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+	 ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
 
   --x)
     # Obsolete; use --with-x.
@@ -1043,25 +1061,25 @@ do
   | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
     x_libraries=$ac_optarg ;;
 
-  -*) { echo "$as_me: error: unrecognized option: $ac_option
-Try \`$0 --help' for more information." >&2
-   { (exit 1); exit 1; }; }
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
     ;;
 
   *=*)
     ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
-   { (exit 1); exit 1; }; }
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
     eval $ac_envvar=\$ac_optarg
     export $ac_envvar ;;
 
   *)
     # FIXME: should be removed in autoconf 3.0.
-    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
     expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
     : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
     ;;
 
@@ -1070,23 +1088,36 @@ done
 
 if test -n "$ac_prev"; then
   ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  { echo "$as_me: error: missing argument to $ac_option" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
 fi
 
-# Be sure to have absolute directory names.
+# Check all directory arguments for consistency.
 for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
 		datadir sysconfdir sharedstatedir localstatedir includedir \
 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
 		libdir localedir mandir
 do
   eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
   case $ac_val in
     [\\/$]* | ?:[\\/]* )  continue;;
     NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
   esac
-  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
 done
 
 # There might be people who depend on the old broken behavior: `$host'
@@ -1100,8 +1131,8 @@ target=$target_alias
 if test "x$host_alias" != x; then
   if test "x$build_alias" = x; then
     cross_compiling=maybe
-    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
-    If a cross compiler is detected then cross compile mode will be used." >&2
+    $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used" >&2
   elif test "x$build_alias" != "x$host_alias"; then
     cross_compiling=yes
   fi
@@ -1116,23 +1147,21 @@ test "$silent" = yes && exec 6>/dev/null
 ac_pwd=`pwd` && test -n "$ac_pwd" &&
 ac_ls_di=`ls -di .` &&
 ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-  { echo "$as_me: error: Working directory cannot be determined" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "working directory cannot be determined"
 test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  { echo "$as_me: error: pwd does not report name of working directory" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "pwd does not report name of working directory"
 
 
 # Find the source files, if location was not specified.
 if test -z "$srcdir"; then
   ac_srcdir_defaulted=yes
   # Try the directory containing this script, then the parent directory.
-  ac_confdir=`$as_dirname -- "$0" ||
-$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$0" : 'X\(//\)[^/]' \| \
-	 X"$0" : 'X\(//\)$' \| \
-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$0" |
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_myself" : 'X\(//\)[^/]' \| \
+	 X"$as_myself" : 'X\(//\)$' \| \
+	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 	    s//\1/
 	    q
@@ -1159,13 +1188,11 @@ else
 fi
 if test ! -r "$srcdir/$ac_unique_file"; then
   test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-  { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
 fi
 ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
 ac_abs_confdir=`(
-	cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2
-   { (exit 1); exit 1; }; }
+	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
 	pwd)`
 # When building in place, set srcdir=.
 if test "$ac_abs_confdir" = "$ac_pwd"; then
@@ -1205,7 +1232,7 @@ Configuration:
       --help=short        display options specific to this package
       --help=recursive    display the short help of all the included packages
   -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking...' messages
+  -q, --quiet, --silent   do not print \`checking ...' messages
       --cache-file=FILE   cache test results in FILE [disabled]
   -C, --config-cache      alias for \`--cache-file=config.cache'
   -n, --no-create         do not create output files
@@ -1213,9 +1240,9 @@ Configuration:
 
 Installation directories:
   --prefix=PREFIX         install architecture-independent files in PREFIX
-			  [$ac_default_prefix]
+                          [$ac_default_prefix]
   --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-			  [PREFIX]
+                          [PREFIX]
 
 By default, \`make install' will install all the files in
 \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
@@ -1225,25 +1252,25 @@ for instance \`--prefix=\$HOME'.
 For better control, use the options below.
 
 Fine tuning of the installation directories:
-  --bindir=DIR           user executables [EPREFIX/bin]
-  --sbindir=DIR          system admin executables [EPREFIX/sbin]
-  --libexecdir=DIR       program executables [EPREFIX/libexec]
-  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
-  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
-  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
-  --libdir=DIR           object code libraries [EPREFIX/lib]
-  --includedir=DIR       C header files [PREFIX/include]
-  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
-  --datarootdir=DIR      read-only arch.-independent data root [PREFIX/share]
-  --datadir=DIR          read-only architecture-independent data [DATAROOTDIR]
-  --infodir=DIR          info documentation [DATAROOTDIR/info]
-  --localedir=DIR        locale-dependent data [DATAROOTDIR/locale]
-  --mandir=DIR           man documentation [DATAROOTDIR/man]
-  --docdir=DIR           documentation root [DATAROOTDIR/doc/PACKAGE]
-  --htmldir=DIR          html documentation [DOCDIR]
-  --dvidir=DIR           dvi documentation [DOCDIR]
-  --pdfdir=DIR           pdf documentation [DOCDIR]
-  --psdir=DIR            ps documentation [DOCDIR]
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/PACKAGE]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
 _ACEOF
 
   cat <<\_ACEOF
@@ -1255,6 +1282,7 @@ if test -n "$ac_init_help"; then
   cat <<\_ACEOF
 
 Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
   --enable-debug          enable debug mode
@@ -1273,13 +1301,14 @@ Some influential environment variables:
   LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
               nonstandard directory <lib dir>
   LIBS        libraries to pass to the linker, e.g. -l<library>
-  CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
               you have headers in a nonstandard directory <include dir>
   CPP         C preprocessor
 
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
 
+Report bugs to the package provider.
 _ACEOF
 ac_status=$?
 fi
@@ -1287,15 +1316,17 @@ fi
 if test "$ac_init_help" = "recursive"; then
   # If there are subdirs, report their specific --help.
   for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-    test -d "$ac_dir" || continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
     ac_builddir=.
 
 case "$ac_dir" in
 .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
 *)
-  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
   # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
   case $ac_top_builddir_sub in
   "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
   *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -1331,7 +1362,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
       echo &&
       $SHELL "$ac_srcdir/configure" --help=recursive
     else
-      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
     fi || ac_status=$?
     cd "$ac_pwd" || { ac_status=$?; break; }
   done
@@ -1341,21 +1372,372 @@ test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
 configure
-generated by GNU Autoconf 2.61
+generated by GNU Autoconf 2.67
 
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+Copyright (C) 2010 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
   exit
 fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+	 test "$cross_compiling" = yes ||
+	 $as_test_x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval "test \"\${$3+set}\"" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_func
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval "test \"\${$3+set}\"" = set; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval "test \"\${$3+set}\"" = set; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval "test \"\${$3+set}\"" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval "test \"\${$3+set}\"" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+
+} # ac_fn_c_check_header_compile
 cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
 It was created by $as_me, which was
-generated by GNU Autoconf 2.61.  Invocation command line was
+generated by GNU Autoconf 2.67.  Invocation command line was
 
   $ $0 $@
 
@@ -1391,8 +1773,8 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  echo "PATH: $as_dir"
-done
+    $as_echo "PATH: $as_dir"
+  done
 IFS=$as_save_IFS
 
 } >&5
@@ -1426,12 +1808,12 @@ do
     | -silent | --silent | --silen | --sile | --sil)
       continue ;;
     *\'*)
-      ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
     esac
     case $ac_pass in
-    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
     2)
-      ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+      as_fn_append ac_configure_args1 " '$ac_arg'"
       if test $ac_must_keep_next = true; then
 	ac_must_keep_next=false # Got value, back to normal.
       else
@@ -1447,13 +1829,13 @@ do
 	  -* ) ac_must_keep_next=true ;;
 	esac
       fi
-      ac_configure_args="$ac_configure_args '$ac_arg'"
+      as_fn_append ac_configure_args " '$ac_arg'"
       ;;
     esac
   done
 done
-$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
-$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
 
 # When interrupted or exit'd, cleanup temporary files, and complete
 # config.log.  We remove comments because anyway the quotes in there
@@ -1465,11 +1847,9 @@ trap 'exit_status=$?
   {
     echo
 
-    cat <<\_ASBOX
-## ---------------- ##
+    $as_echo "## ---------------- ##
 ## Cache variables. ##
-## ---------------- ##
-_ASBOX
+## ---------------- ##"
     echo
     # The following way of writing the cache mishandles newlines in values,
 (
@@ -1478,12 +1858,13 @@ _ASBOX
     case $ac_val in #(
     *${as_nl}*)
       case $ac_var in #(
-      *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
-echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
       esac
       case $ac_var in #(
       _ | IFS | as_nl) ;; #(
-      *) $as_unset $ac_var ;;
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
       esac ;;
     esac
   done
@@ -1502,128 +1883,136 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
 )
     echo
 
-    cat <<\_ASBOX
-## ----------------- ##
+    $as_echo "## ----------------- ##
 ## Output variables. ##
-## ----------------- ##
-_ASBOX
+## ----------------- ##"
     echo
     for ac_var in $ac_subst_vars
     do
       eval ac_val=\$$ac_var
       case $ac_val in
-      *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
       esac
-      echo "$ac_var='\''$ac_val'\''"
+      $as_echo "$ac_var='\''$ac_val'\''"
     done | sort
     echo
 
     if test -n "$ac_subst_files"; then
-      cat <<\_ASBOX
-## ------------------- ##
+      $as_echo "## ------------------- ##
 ## File substitutions. ##
-## ------------------- ##
-_ASBOX
+## ------------------- ##"
       echo
       for ac_var in $ac_subst_files
       do
 	eval ac_val=\$$ac_var
 	case $ac_val in
-	*\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
 	esac
-	echo "$ac_var='\''$ac_val'\''"
+	$as_echo "$ac_var='\''$ac_val'\''"
       done | sort
       echo
     fi
 
     if test -s confdefs.h; then
-      cat <<\_ASBOX
-## ----------- ##
+      $as_echo "## ----------- ##
 ## confdefs.h. ##
-## ----------- ##
-_ASBOX
+## ----------- ##"
       echo
       cat confdefs.h
       echo
     fi
     test "$ac_signal" != 0 &&
-      echo "$as_me: caught signal $ac_signal"
-    echo "$as_me: exit $exit_status"
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
   } >&5
   rm -f core *.core core.conftest.* &&
     rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
     exit $exit_status
 ' 0
 for ac_signal in 1 2 13 15; do
-  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
 done
 ac_signal=0
 
 # confdefs.h avoids OS command line length limits that DEFS can exceed.
 rm -f -r conftest* confdefs.h
 
+$as_echo "/* confdefs.h */" > confdefs.h
+
 # Predefined preprocessor variables.
 
 cat >>confdefs.h <<_ACEOF
 #define PACKAGE_NAME "$PACKAGE_NAME"
 _ACEOF
 
-
 cat >>confdefs.h <<_ACEOF
 #define PACKAGE_TARNAME "$PACKAGE_TARNAME"
 _ACEOF
 
-
 cat >>confdefs.h <<_ACEOF
 #define PACKAGE_VERSION "$PACKAGE_VERSION"
 _ACEOF
 
-
 cat >>confdefs.h <<_ACEOF
 #define PACKAGE_STRING "$PACKAGE_STRING"
 _ACEOF
 
-
 cat >>confdefs.h <<_ACEOF
 #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
 _ACEOF
 
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
 
 # Let the site file select an alternate cache file if it wants to.
-# Prefer explicitly selected file to automatically selected ones.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
 if test -n "$CONFIG_SITE"; then
-  set x "$CONFIG_SITE"
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
 elif test "x$prefix" != xNONE; then
-  set x "$prefix/share/config.site" "$prefix/etc/config.site"
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
 else
-  set x "$ac_default_prefix/share/config.site" \
-	"$ac_default_prefix/etc/config.site"
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
 fi
-shift
-for ac_site_file
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
 do
-  if test -r "$ac_site_file"; then
-    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
-echo "$as_me: loading site script $ac_site_file" >&6;}
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
     sed 's/^/| /' "$ac_site_file" >&5
-    . "$ac_site_file"
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5 ; }
   fi
 done
 
 if test -r "$cache_file"; then
-  # Some versions of bash will fail to source /dev/null (special
-  # files actually), so we avoid doing that.
-  if test -f "$cache_file"; then
-    { echo "$as_me:$LINENO: loading cache $cache_file" >&5
-echo "$as_me: loading cache $cache_file" >&6;}
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
     case $cache_file in
       [\\/]* | ?:[\\/]* ) . "$cache_file";;
       *)                      . "./$cache_file";;
     esac
   fi
 else
-  { echo "$as_me:$LINENO: creating cache $cache_file" >&5
-echo "$as_me: creating cache $cache_file" >&6;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
   >$cache_file
 fi
 
@@ -1637,60 +2026,56 @@ for ac_var in $ac_precious_vars; do
   eval ac_new_val=\$ac_env_${ac_var}_value
   case $ac_old_set,$ac_new_set in
     set,)
-      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,set)
-      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
       ac_cache_corrupted=: ;;
     ,);;
     *)
       if test "x$ac_old_val" != "x$ac_new_val"; then
-	{ echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
-echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-	{ echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5
-echo "$as_me:   former value:  $ac_old_val" >&2;}
-	{ echo "$as_me:$LINENO:   current value: $ac_new_val" >&5
-echo "$as_me:   current value: $ac_new_val" >&2;}
-	ac_cache_corrupted=:
+	# differences in whitespace do not lead to failure.
+	ac_old_val_w=`echo x $ac_old_val`
+	ac_new_val_w=`echo x $ac_new_val`
+	if test "$ac_old_val_w" != "$ac_new_val_w"; then
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	  ac_cache_corrupted=:
+	else
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+	  eval $ac_var=\$ac_old_val
+	fi
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
       fi;;
   esac
   # Pass precious variables to config.status.
   if test "$ac_new_set" = set; then
     case $ac_new_val in
-    *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
     *) ac_arg=$ac_var=$ac_new_val ;;
     esac
     case " $ac_configure_args " in
       *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
-      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
     esac
   fi
 done
 if $ac_cache_corrupted; then
-  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
-echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
-   { (exit 1); exit 1; }; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
 fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
 
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -1707,10 +2092,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
 set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1720,25 +2105,25 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -1747,10 +2132,10 @@ if test -z "$ac_cv_prog_CC"; then
   ac_ct_CC=$CC
   # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
   ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
@@ -1760,25 +2145,25 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_CC="gcc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
   if test "x$ac_ct_CC" = x; then
@@ -1786,12 +2171,8 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     CC=$ac_ct_CC
@@ -1804,10 +2185,10 @@ if test -z "$CC"; then
           if test -n "$ac_tool_prefix"; then
     # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
 set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1817,25 +2198,25 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_CC="${ac_tool_prefix}cc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -1844,10 +2225,10 @@ fi
 if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1858,18 +2239,18 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
        ac_prog_rejected=yes
        continue
      fi
     ac_cv_prog_CC="cc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 if test $ac_prog_rejected = yes; then
@@ -1888,11 +2269,11 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -1903,10 +2284,10 @@ if test -z "$CC"; then
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1916,25 +2297,25 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -1947,10 +2328,10 @@ if test -z "$CC"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
   ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
@@ -1960,25 +2341,25 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_ac_ct_CC="$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_CC=$ac_cv_prog_ac_ct_CC
 if test -n "$ac_ct_CC"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -1990,12 +2371,8 @@ done
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     CC=$ac_ct_CC
@@ -2005,51 +2382,37 @@ fi
 fi
 
 
-test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&5
-echo "$as_me: error: no acceptable C compiler found in \$PATH
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5 ; }
 
 # Provide some information about the compiler.
-echo "$as_me:$LINENO: checking for C compiler version" >&5
-ac_compiler=`set X $ac_compile; echo $2`
-{ (ac_try="$ac_compiler --version >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compiler --version >&5") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compiler -v >&5") 2>&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compiler -V >&5") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
 
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -2061,42 +2424,38 @@ main ()
 }
 _ACEOF
 ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.exe b.out"
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
 # Try to create an executable without -o first, disregard a.out.
 # It will help us diagnose broken compilers, and finding out an intuition
 # of exeext.
-{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; }
-ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-#
-# List of possible output files, starting from the most likely.
-# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)
-# only as a last resort.  b.out is created by i960 compilers.
-ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'
-#
-# The IRIX 6 linker writes into existing files which may not be
-# executable, retaining their permissions.  Remove them first so a
-# subsequent execution test works.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
 ac_rmfiles=
 for ac_file in $ac_files
 do
   case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
     * ) ac_rmfiles="$ac_rmfiles $ac_file";;
   esac
 done
 rm -f $ac_rmfiles
 
-if { (ac_try="$ac_link_default"
+if { { ac_try="$ac_link_default"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
   (eval "$ac_link_default") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
   # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
 # So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
 # in a Makefile.  We should not override ac_cv_exeext if it was cached,
@@ -2106,104 +2465,67 @@ for ac_file in $ac_files ''
 do
   test -f "$ac_file" || continue
   case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj )
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
 	;;
     [ab].out )
 	# We found the default executable, but exeext='' is most
 	# certainly right.
 	break;;
     *.* )
-        if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
 	then :; else
 	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
 	fi
 	# We set ac_cv_exeext here because the later test for it is not
 	# safe: cross compilers may not add the suffix if given an `-o'
 	# argument, so we may need to know it at that point already.
-	# Even if this section looks crufty: it has the advantage of
-	# actually working.
-	break;;
-    * )
-	break;;
-  esac
-done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
-
-else
-  ac_file=''
-fi
-
-{ echo "$as_me:$LINENO: result: $ac_file" >&5
-echo "${ECHO_T}$ac_file" >&6; }
-if test -z "$ac_file"; then
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
-See \`config.log' for more details." >&5
-echo "$as_me: error: C compiler cannot create executables
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }
-fi
-
-ac_exeext=$ac_cv_exeext
-
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5
-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; }
-# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
-# If not cross compiling, check that we can run a simple program.
-if test "$cross_compiling" != yes; then
-  if { ac_try='./$ac_file'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-	cross_compiling=yes
-    else
-	{ { echo "$as_me:$LINENO: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
-    fi
-  fi
+	# Even if this section looks crufty: it has the advantage of
+	# actually working.
+	break;;
+    * )
+	break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5 ; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 fi
-{ echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
 
-rm -f a.out a.exe conftest$ac_cv_exeext b.out
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
 ac_clean_files=$ac_clean_files_save
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; }
-{ echo "$as_me:$LINENO: result: $cross_compiling" >&5
-echo "${ECHO_T}$cross_compiling" >&6; }
-
-{ echo "$as_me:$LINENO: checking for suffix of executables" >&5
-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; }
-if { (ac_try="$ac_link"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
   (eval "$ac_link") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
   # If both `conftest.exe' and `conftest' are `present' (well, observable)
 # catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
 # work properly (i.e., refer to `conftest.exe'), while it won't with
@@ -2211,37 +2533,90 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
 for ac_file in conftest.exe conftest conftest.*; do
   test -f "$ac_file" || continue
   case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
     *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
 	  break;;
     * ) break;;
   esac
 done
 else
-  { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5 ; }
 fi
-
-rm -f conftest$ac_cv_exeext
-{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
-echo "${ECHO_T}$ac_cv_exeext" >&6; }
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
 
 rm -f conftest.$ac_ext
 EXEEXT=$ac_cv_exeext
 ac_exeext=$EXEEXT
-{ echo "$as_me:$LINENO: checking for suffix of object files" >&5
-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; }
-if test "${ac_cv_objext+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5 ; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if test "${ac_cv_objext+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -2253,51 +2628,46 @@ main ()
 }
 _ACEOF
 rm -f conftest.o conftest.obj
-if { (ac_try="$ac_compile"
+if { { ac_try="$ac_compile"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
   (eval "$ac_compile") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
   for ac_file in conftest.o conftest.obj conftest.*; do
   test -f "$ac_file" || continue;
   case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;;
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
     *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
        break;;
   esac
 done
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute suffix of object files: cannot compile
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5 ; }
 fi
-
 rm -f conftest.$ac_cv_objext conftest.$ac_ext
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
-echo "${ECHO_T}$ac_cv_objext" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
 OBJEXT=$ac_cv_objext
 ac_objext=$OBJEXT
-{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
-if test "${ac_cv_c_compiler_gnu+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -2311,54 +2681,34 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_compiler_gnu=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_compiler_gnu=no
+  ac_compiler_gnu=no
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 ac_cv_c_compiler_gnu=$ac_compiler_gnu
 
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
-GCC=`test $ac_compiler_gnu = yes && echo yes`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
 ac_test_CFLAGS=${CFLAGS+set}
 ac_save_CFLAGS=$CFLAGS
-{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_save_c_werror_flag=$ac_c_werror_flag
    ac_c_werror_flag=yes
    ac_cv_prog_cc_g=no
    CFLAGS="-g"
-   cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -2369,34 +2719,11 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_prog_cc_g=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	CFLAGS=""
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -2407,35 +2734,12 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_compile "$LINENO"; then :
 
-	ac_c_werror_flag=$ac_save_c_werror_flag
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
 	 CFLAGS="-g"
-	 cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -2446,42 +2750,18 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_prog_cc_g=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
    ac_c_werror_flag=$ac_save_c_werror_flag
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
 if test "$ac_test_CFLAGS" = set; then
   CFLAGS=$ac_save_CFLAGS
 elif test $ac_cv_prog_cc_g = yes; then
@@ -2497,18 +2777,14 @@ else
     CFLAGS=
   fi
 fi
-{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
-echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_cv_prog_cc_c89=no
 ac_save_CC=$CC
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdarg.h>
 #include <stdio.h>
@@ -2565,31 +2841,9 @@ for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
 	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
 do
   CC="$ac_save_CC $ac_arg"
-  rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+  if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_prog_cc_c89=$ac_arg
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
 rm -f core conftest.err conftest.$ac_objext
   test "x$ac_cv_prog_cc_c89" != "xno" && break
 done
@@ -2600,17 +2854,19 @@ fi
 # AC_CACHE_VAL
 case "x$ac_cv_prog_cc_c89" in
   x)
-    { echo "$as_me:$LINENO: result: none needed" >&5
-echo "${ECHO_T}none needed" >&6; } ;;
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
   xno)
-    { echo "$as_me:$LINENO: result: unsupported" >&5
-echo "${ECHO_T}unsupported" >&6; } ;;
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
   *)
     CC="$CC $ac_cv_prog_cc_c89"
-    { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
 esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
 
+fi
 
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -2619,94 +2875,13 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-for ac_func in
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
-if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $ac_func ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_$ac_func || defined __stub___$ac_func
-choke me
-#endif
-
-int
-main ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_var=no"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval echo '${'$as_ac_var'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_var'}'` = yes; then
+for ac_func
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
 
 fi
@@ -2716,31 +2891,27 @@ done
 
 
 # Check whether --with-xml2-config was given.
-if test "${with_xml2_config+set}" = set; then
+if test "${with_xml2_config+set}" = set; then :
   withval=$with_xml2_config;
 fi
 
 
 if test "$with_xml2_config" = "no" ; then
-  { { echo "$as_me:$LINENO: error: LibXML2 support is a need to TinyOWS !" >&5
-echo "$as_me: error: LibXML2 support is a need to TinyOWS !" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "LibXML2 support is a need to TinyOWS !" "$LINENO" 5
 fi
 
 if test "`basename xx/$with_xml2_config`" = "xml2-config" ; then
   LIBXML2_CONFIG="$with_xml2_config"
   if ! test -f "$LIBXML2_CONFIG" -a -x "$LIBXML2_CONFIG" ; then
-    { { echo "$as_me:$LINENO: error: '$LIBXML2_CONFIG' is not an executable.  Make sure you use --with-xml2-config=/path/to/xml2-config" >&5
-echo "$as_me: error: '$LIBXML2_CONFIG' is not an executable.  Make sure you use --with-xml2-config=/path/to/xml2-config" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? "'$LIBXML2_CONFIG' is not an executable.  Make sure you use --with-xml2-config=/path/to/xml2-config" "$LINENO" 5
   fi
 else
   # Extract the first word of "xml2-config", so it can be a program name with args.
 set dummy xml2-config; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_path_LIBXML2_CONFIG+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_LIBXML2_CONFIG+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   case $LIBXML2_CONFIG in
   [\\/]* | ?:[\\/]*)
@@ -2752,14 +2923,14 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_path_LIBXML2_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
   test -z "$ac_cv_path_LIBXML2_CONFIG" && ac_cv_path_LIBXML2_CONFIG="no"
@@ -2768,31 +2939,27 @@ esac
 fi
 LIBXML2_CONFIG=$ac_cv_path_LIBXML2_CONFIG
 if test -n "$LIBXML2_CONFIG"; then
-  { echo "$as_me:$LINENO: result: $LIBXML2_CONFIG" >&5
-echo "${ECHO_T}$LIBXML2_CONFIG" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBXML2_CONFIG" >&5
+$as_echo "$LIBXML2_CONFIG" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
 fi
 
 if test "$LIBXML2_CONFIG" = "no" ; then
- { { echo "$as_me:$LINENO: error: couldn't find xml2-config, try using --with-xml2-config=PATH" >&5
-echo "$as_me: error: couldn't find xml2-config, try using --with-xml2-config=PATH" >&2;}
-   { (exit 1); exit 1; }; }
+ as_fn_error $? "couldn't find xml2-config, try using --with-xml2-config=PATH" "$LINENO" 5
 fi
 
 XML2_VER=`$LIBXML2_CONFIG --version`
-{ echo "$as_me:$LINENO: result: checking for libxml2 version... $XML2_VER" >&5
-echo "${ECHO_T}checking for libxml2 version... $XML2_VER" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: checking for libxml2 version... $XML2_VER" >&5
+$as_echo "checking for libxml2 version... $XML2_VER" >&6; }
 
 xml2_vers=`$LIBXML2_CONFIG --version | awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
-if test "$xml2_vers" -lt 2006020 ; then
-	{ { echo "$as_me:$LINENO: error: You need at least libxml 2.6.20" >&5
-echo "$as_me: error: You need at least libxml 2.6.20" >&2;}
-   { (exit 1); exit 1; }; }
+if test "$xml2_vers" -lt 2008000 ; then
+	as_fn_error $? "You need at least libxml 2.8.0" "$LINENO" 5
 fi
 
 
@@ -2806,7 +2973,7 @@ XML2_LIB=`$LIBXML2_CONFIG --libs`
 
 
 # Check whether --enable-debug was given.
-if test "${enable_debug+set}" = set; then
+if test "${enable_debug+set}" = set; then :
   enableval=$enable_debug; TINYOWS_DEBUG=1
 else
   TINYOWS_DEBUG=0
@@ -2815,45 +2982,45 @@ fi
 
 
 
-# Extract the first word of "svnversion", so it can be a program name with args.
-set dummy svnversion; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_svnversion+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+# Extract the first word of "git", so it can be a program name with args.
+set dummy git; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_git+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  if test -n "$svnversion"; then
-  ac_cv_prog_svnversion="$svnversion" # Let the user override the test.
+  if test -n "$git"; then
+  ac_cv_prog_git="$git" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_svnversion="yes"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    ac_cv_prog_git="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
-svnversion=$ac_cv_prog_svnversion
-if test -n "$svnversion"; then
-  { echo "$as_me:$LINENO: result: $svnversion" >&5
-echo "${ECHO_T}$svnversion" >&6; }
+git=$ac_cv_prog_git
+if test -n "$git"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $git" >&5
+$as_echo "$git" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
-if test "$svnversion" = "yes"; then
-	SVN_FLAGS='"-D TINYOWS_SVN_REV=\"$(shell svnversion -n .)\""'
+if test "$git" = "yes" -a -d ".git"; then
+	GIT_FLAGS='"-D TINYOWS_GIT_COMMIT=\"$(shell git log --abbrev-commit -n 1 HEAD | grep commit)\""'
 
 fi
 
@@ -2861,22 +3028,20 @@ fi
 
 
 # Check whether --with-pg_config was given.
-if test "${with_pg_config+set}" = set; then
+if test "${with_pg_config+set}" = set; then :
   withval=$with_pg_config;
 fi
 
 
 if test "$with_pg_config" = "no" ; then
-  { { echo "$as_me:$LINENO: error: PostGIS support is a need to TinyOWS !" >&5
-echo "$as_me: error: PostGIS support is a need to TinyOWS !" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "PostGIS support is a need to TinyOWS !" "$LINENO" 5
 elif test "$with_pg_config" = "yes" -o "$with_pg_config" = "" ; then
   # Extract the first word of "pg_config", so it can be a program name with args.
 set dummy pg_config; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_path_PG_CONFIG+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_PG_CONFIG+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   case $PG_CONFIG in
   [\\/]* | ?:[\\/]*)
@@ -2888,14 +3053,14 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_path_PG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
   test -z "$ac_cv_path_PG_CONFIG" && ac_cv_path_PG_CONFIG="no"
@@ -2904,35 +3069,31 @@ esac
 fi
 PG_CONFIG=$ac_cv_path_PG_CONFIG
 if test -n "$PG_CONFIG"; then
-  { echo "$as_me:$LINENO: result: $PG_CONFIG" >&5
-echo "${ECHO_T}$PG_CONFIG" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PG_CONFIG" >&5
+$as_echo "$PG_CONFIG" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
 else
-  { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
   PG_CONFIG=$with_pg_config
 fi
 
 if ! test -f "$PG_CONFIG" -a -x "$PG_CONFIG" ; then
-  { { echo "$as_me:$LINENO: error: '$PG_CONFIG' is not an executable.  Make sure you use --with-pg_config=/path/to/pg_config" >&5
-echo "$as_me: error: '$PG_CONFIG' is not an executable.  Make sure you use --with-pg_config=/path/to/pg_config" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "'$PG_CONFIG' is not an executable.  Make sure you use --with-pg_config=/path/to/pg_config" "$LINENO" 5
 fi
 
 PG_VER=`$PG_CONFIG --version`
-{ echo "$as_me:$LINENO: result: checking for PostgreSQL version... $PG_VER" >&5
-echo "${ECHO_T}checking for PostgreSQL version... $PG_VER" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: checking for PostgreSQL version... $PG_VER" >&5
+$as_echo "checking for PostgreSQL version... $PG_VER" >&6; }
 
 pg_vers=`$PG_CONFIG --version | sed 's/PostgreSQL //' | awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
 if test "$pg_vers" -lt 8001000 ; then
-	{ { echo "$as_me:$LINENO: error: You need at least PostgreSQL 8.1.0" >&5
-echo "$as_me: error: You need at least PostgreSQL 8.1.0" >&2;}
-   { (exit 1); exit 1; }; }
+	as_fn_error $? "You need at least PostgreSQL 8.1.0" "$LINENO" 5
 fi
 
 
@@ -2949,22 +3110,20 @@ POSTGIS_BIN=`$PG_CONFIG --bindir`
 
 
 # Check whether --with-shp2pgsql was given.
-if test "${with_shp2pgsql+set}" = set; then
+if test "${with_shp2pgsql+set}" = set; then :
   withval=$with_shp2pgsql;
 fi
 
 
 if test "$with_shp2gpsql" = "no" ; then
-  { { echo "$as_me:$LINENO: error: shp2pgsql is a need to TinyOWS !" >&5
-echo "$as_me: error: shp2pgsql is a need to TinyOWS !" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "shp2pgsql is a need to TinyOWS !" "$LINENO" 5
 elif test "$with_shp2pgsql" = "yes" -o "$with_shp2pgsql" = "" ; then
   # Extract the first word of "shp2pgsql", so it can be a program name with args.
 set dummy shp2pgsql; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_path_SHP2PGSQL+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_path_SHP2PGSQL+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   case $SHP2PGSQL in
   [\\/]* | ?:[\\/]*)
@@ -2976,14 +3135,14 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_path_SHP2PGSQL="$as_dir/$ac_word$ac_exec_ext"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
   test -z "$ac_cv_path_SHP2PGSQL" && ac_cv_path_SHP2PGSQL="no"
@@ -2992,24 +3151,22 @@ esac
 fi
 SHP2PGSQL=$ac_cv_path_SHP2PGSQL
 if test -n "$SHP2PGSQL"; then
-  { echo "$as_me:$LINENO: result: $SHP2PGSQL" >&5
-echo "${ECHO_T}$SHP2PGSQL" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SHP2PGSQL" >&5
+$as_echo "$SHP2PGSQL" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
 else
-  { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
   SHP2PGSQL=$with_shp2pgsql
 fi
 
 if ! test -f "$SHP2PGSQL" -a -x "$SHP2PGSQL" ; then
-  { { echo "$as_me:$LINENO: error: '$SHP2PGSQL' is not an executable.  Make sure you use --with-shp2pgsql=/path/to/shp2pgsql" >&5
-echo "$as_me: error: '$SHP2PGSQL' is not an executable.  Make sure you use --with-shp2pgsql=/path/to/shp2pgsql" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "'$SHP2PGSQL' is not an executable.  Make sure you use --with-shp2pgsql=/path/to/shp2pgsql" "$LINENO" 5
 fi
 
 
@@ -3019,10 +3176,10 @@ for ac_prog in flex lex
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_LEX+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if test "${ac_cv_prog_LEX+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$LEX"; then
   ac_cv_prog_LEX="$LEX" # Let the user override the test.
@@ -3032,25 +3189,25 @@ for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
   if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
     ac_cv_prog_LEX="$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 LEX=$ac_cv_prog_LEX
 if test -n "$LEX"; then
-  { echo "$as_me:$LINENO: result: $LEX" >&5
-echo "${ECHO_T}$LEX" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LEX" >&5
+$as_echo "$LEX" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -3078,20 +3235,21 @@ main (void)
   return ! yylex () + ! yywrap ();
 }
 _ACEOF
-{ (ac_try="$LEX conftest.l"
+{ { ac_try="$LEX conftest.l"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
   (eval "$LEX conftest.l") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ echo "$as_me:$LINENO: checking lex output file root" >&5
-echo $ECHO_N "checking lex output file root... $ECHO_C" >&6; }
-if test "${ac_cv_prog_lex_root+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking lex output file root" >&5
+$as_echo_n "checking lex output file root... " >&6; }
+if test "${ac_cv_prog_lex_root+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
 
 if test -f lex.yy.c; then
@@ -3099,72 +3257,48 @@ if test -f lex.yy.c; then
 elif test -f lexyy.c; then
   ac_cv_prog_lex_root=lexyy
 else
-  { { echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5
-echo "$as_me: error: cannot find output from $LEX; giving up" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "cannot find output from $LEX; giving up" "$LINENO" 5
 fi
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5
-echo "${ECHO_T}$ac_cv_prog_lex_root" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_root" >&5
+$as_echo "$ac_cv_prog_lex_root" >&6; }
 LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root
 
 if test -z "${LEXLIB+set}"; then
-  { echo "$as_me:$LINENO: checking lex library" >&5
-echo $ECHO_N "checking lex library... $ECHO_C" >&6; }
-if test "${ac_cv_lib_lex+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking lex library" >&5
+$as_echo_n "checking lex library... " >&6; }
+if test "${ac_cv_lib_lex+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
 
     ac_save_LIBS=$LIBS
     ac_cv_lib_lex='none needed'
     for ac_lib in '' -lfl -ll; do
       LIBS="$ac_lib $ac_save_LIBS"
-      cat >conftest.$ac_ext <<_ACEOF
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 `cat $LEX_OUTPUT_ROOT.c`
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_lex=$ac_lib
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
       test "$ac_cv_lib_lex" != 'none needed' && break
     done
     LIBS=$ac_save_LIBS
 
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_lex" >&5
-echo "${ECHO_T}$ac_cv_lib_lex" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lex" >&5
+$as_echo "$ac_cv_lib_lex" >&6; }
   test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex
 fi
 
 
-{ echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5
-echo $ECHO_N "checking whether yytext is a pointer... $ECHO_C" >&6; }
-if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yytext is a pointer" >&5
+$as_echo_n "checking whether yytext is a pointer... " >&6; }
+if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   # POSIX says lex can declare yytext either as a pointer or an array; the
 # default is implementation-dependent.  Figure out which it is, since
@@ -3172,64 +3306,38 @@ else
 ac_cv_prog_lex_yytext_pointer=no
 ac_save_LIBS=$LIBS
 LIBS="$LEXLIB $ac_save_LIBS"
-cat >conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 #define YYTEXT_POINTER 1
 `cat $LEX_OUTPUT_ROOT.c`
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_prog_lex_yytext_pointer=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_save_LIBS
 
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_prog_lex_yytext_pointer" >&5
-echo "${ECHO_T}$ac_cv_prog_lex_yytext_pointer" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_lex_yytext_pointer" >&5
+$as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; }
 if test $ac_cv_prog_lex_yytext_pointer = yes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define YYTEXT_POINTER 1
-_ACEOF
+$as_echo "#define YYTEXT_POINTER 1" >>confdefs.h
 
 fi
 rm -f conftest.l $LEX_OUTPUT_ROOT.c
 
 fi
 if test "$LEX" != flex; then
-  { { echo "$as_me:$LINENO: error: \"TinyOWS: Need flex to compile\"" >&5
-echo "$as_me: error: \"TinyOWS: Need flex to compile\"" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "\"TinyOWS: Need flex to compile\"" "$LINENO" 5
 fi
 
 
 USE_FCGI=0
 
 # Check whether --with-fastcgi was given.
-if test "${with_fastcgi+set}" = set; then
+if test "${with_fastcgi+set}" = set; then :
   withval=$with_fastcgi; FCGI_PATH="$withval"
 else
   FCGI_PATH=""
@@ -3238,8 +3346,8 @@ fi
 
 
 if test "x$FCGI_PATH" != "x"; then
-        { echo "$as_me:$LINENO: result: checking user-specified fast-cgi location: $FCGI_PATH" >&5
-echo "${ECHO_T}checking user-specified fast-cgi location: $FCGI_PATH" >&6; }
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: checking user-specified fast-cgi location: $FCGI_PATH" >&5
+$as_echo "checking user-specified fast-cgi location: $FCGI_PATH" >&6; }
         FCGI_INC="-I$FCGI_PATH/include"
         FCGI_LIB="-L$FCGI_PATH/lib"
 fi
@@ -3251,15 +3359,15 @@ ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
 fi
 if test -z "$CPP"; then
-  if test "${ac_cv_prog_CPP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  if test "${ac_cv_prog_CPP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
       # Double quotes because CPP needs to be expanded
     for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
@@ -3273,11 +3381,7 @@ do
   # <limits.h> exists even on freestanding compilers.
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #ifdef __STDC__
 # include <limits.h>
@@ -3286,76 +3390,34 @@ cat >>conftest.$ac_ext <<_ACEOF
 #endif
 		     Syntax error
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_cpp "$LINENO"; then :
 
+else
   # Broken: fails on valid input.
 continue
 fi
-
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
   # OK, works on sane cases.  Now check whether nonexistent headers
   # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <ac_nonexistent.h>
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
+if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
 continue
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
   # Passes both tests.
 ac_preproc_ok=:
 break
 fi
-
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
 done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
   break
 fi
 
@@ -3367,8 +3429,8 @@ fi
 else
   ac_cv_prog_CPP=$CPP
 fi
-{ echo "$as_me:$LINENO: result: $CPP" >&5
-echo "${ECHO_T}$CPP" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
 ac_preproc_ok=false
 for ac_c_preproc_warn_flag in '' yes
 do
@@ -3378,11 +3440,7 @@ do
   # <limits.h> exists even on freestanding compilers.
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #ifdef __STDC__
 # include <limits.h>
@@ -3391,83 +3449,40 @@ cat >>conftest.$ac_ext <<_ACEOF
 #endif
 		     Syntax error
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_cpp "$LINENO"; then :
 
+else
   # Broken: fails on valid input.
 continue
 fi
-
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
   # OK, works on sane cases.  Now check whether nonexistent headers
   # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
   # Broken: success on invalid input.
 continue
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
   # Passes both tests.
 ac_preproc_ok=:
 break
 fi
-
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
 done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
-  :
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
 else
-  { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&5
-echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details." >&2;}
-   { (exit 1); exit 1; }; }
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5 ; }
 fi
 
 ac_ext=c
@@ -3477,45 +3492,40 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
-echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; }
-if test "${ac_cv_path_GREP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  # Extract the first word of "grep ggrep" to use in msg output
-if test -z "$GREP"; then
-set dummy grep ggrep; ac_prog_name=$2
-if test "${ac_cv_path_GREP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if test "${ac_cv_path_GREP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
+  if test -z "$GREP"; then
   ac_path_GREP_found=false
-# Loop through the user's path and test for each of PROGNAME-LIST
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_prog in grep ggrep; do
-  for ac_exec_ext in '' $ac_executable_extensions; do
-    ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-    { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
-    # Check for GNU ac_path_GREP and select it if it is found.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
   # Check for GNU $ac_path_GREP
 case `"$ac_path_GREP" --version 2>&1` in
 *GNU*)
   ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
 *)
   ac_count=0
-  echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+  $as_echo_n 0123456789 >"conftest.in"
   while :
   do
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    echo 'GREP' >> "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
     "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    ac_count=`expr $ac_count + 1`
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
     if test $ac_count -gt ${ac_path_GREP_max-0}; then
       # Best one so far, save it but keep looking for a better one
       ac_cv_path_GREP="$ac_path_GREP"
@@ -3527,77 +3537,61 @@ case `"$ac_path_GREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-
-    $ac_path_GREP_found && break 3
+      $ac_path_GREP_found && break 3
+    done
+  done
   done
-done
-
-done
 IFS=$as_save_IFS
-
-
-fi
-
-GREP="$ac_cv_path_GREP"
-if test -z "$GREP"; then
-  { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
 else
   ac_cv_path_GREP=$GREP
 fi
 
-
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
-echo "${ECHO_T}$ac_cv_path_GREP" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
  GREP="$ac_cv_path_GREP"
 
 
-{ echo "$as_me:$LINENO: checking for egrep" >&5
-echo $ECHO_N "checking for egrep... $ECHO_C" >&6; }
-if test "${ac_cv_path_EGREP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if test "${ac_cv_path_EGREP+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
    then ac_cv_path_EGREP="$GREP -E"
    else
-     # Extract the first word of "egrep" to use in msg output
-if test -z "$EGREP"; then
-set dummy egrep; ac_prog_name=$2
-if test "${ac_cv_path_EGREP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
+     if test -z "$EGREP"; then
   ac_path_EGREP_found=false
-# Loop through the user's path and test for each of PROGNAME-LIST
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_prog in egrep; do
-  for ac_exec_ext in '' $ac_executable_extensions; do
-    ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-    { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
-    # Check for GNU ac_path_EGREP and select it if it is found.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
   # Check for GNU $ac_path_EGREP
 case `"$ac_path_EGREP" --version 2>&1` in
 *GNU*)
   ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
 *)
   ac_count=0
-  echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+  $as_echo_n 0123456789 >"conftest.in"
   while :
   do
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    echo 'EGREP' >> "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
     "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    ac_count=`expr $ac_count + 1`
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
     if test $ac_count -gt ${ac_path_EGREP_max-0}; then
       # Best one so far, save it but keep looking for a better one
       ac_cv_path_EGREP="$ac_path_EGREP"
@@ -3609,46 +3603,31 @@ case `"$ac_path_EGREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-
-    $ac_path_EGREP_found && break 3
+      $ac_path_EGREP_found && break 3
+    done
+  done
   done
-done
-
-done
 IFS=$as_save_IFS
-
-
-fi
-
-EGREP="$ac_cv_path_EGREP"
-if test -z "$EGREP"; then
-  { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
 else
   ac_cv_path_EGREP=$EGREP
 fi
 
-
    fi
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
-echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
  EGREP="$ac_cv_path_EGREP"
 
 
-{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }
-if test "${ac_cv_header_stdc+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
 #include <stdarg.h>
@@ -3663,85 +3642,53 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_header_stdc=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_header_stdc=no
+  ac_cv_header_stdc=no
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <string.h>
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then
-  :
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
 else
   ac_cv_header_stdc=no
 fi
-rm -f -r conftest*
+rm -f conftest*
 
 fi
 
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then
-  :
+  $EGREP "free" >/dev/null 2>&1; then :
+
 else
   ac_cv_header_stdc=no
 fi
-rm -f -r conftest*
+rm -f conftest*
 
 fi
 
 if test $ac_cv_header_stdc = yes; then
   # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then
+  if test "$cross_compiling" = yes; then :
   :
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <ctype.h>
 #include <stdlib.h>
@@ -3768,113 +3715,35 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  :
-else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_run "$LINENO"; then :
 
-( exit $ac_status )
-ac_cv_header_stdc=no
+else
+  ac_cv_header_stdc=no
 fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
-
 fi
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
-echo "${ECHO_T}$ac_cv_header_stdc" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
 if test $ac_cv_header_stdc = yes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define STDC_HEADERS 1
-_ACEOF
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
 
 fi
 
 # On IRIX 5.3, sys/types and inttypes.h are conflicting.
-
-
-
-
-
-
-
-
-
 for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
 		  inttypes.h stdint.h unistd.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  eval "$as_ac_Header=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	eval "$as_ac_Header=no"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
 
 fi
@@ -3882,18 +3751,14 @@ fi
 done
 
 
-{ echo "$as_me:$LINENO: checking for FCGI_Accept in -lfcgi" >&5
-echo $ECHO_N "checking for FCGI_Accept in -lfcgi... $ECHO_C" >&6; }
-if test "${ac_cv_lib_fcgi_FCGI_Accept+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FCGI_Accept in -lfcgi" >&5
+$as_echo_n "checking for FCGI_Accept in -lfcgi... " >&6; }
+if test "${ac_cv_lib_fcgi_FCGI_Accept+set}" = set; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
 LIBS="-lfcgi  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -3911,387 +3776,85 @@ return FCGI_Accept ();
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+if ac_fn_c_try_link "$LINENO"; then :
   ac_cv_lib_fcgi_FCGI_Accept=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_fcgi_FCGI_Accept=no
+  ac_cv_lib_fcgi_FCGI_Accept=no
 fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_fcgi_FCGI_Accept" >&5
-echo "${ECHO_T}$ac_cv_lib_fcgi_FCGI_Accept" >&6; }
-if test $ac_cv_lib_fcgi_FCGI_Accept = yes; then
-
-
-
-for ac_header in fcgi_config.h fcgi_stdio.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
-fi
-
-rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
-
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
-
-    ;;
-esac
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_fcgi_FCGI_Accept" >&5
+$as_echo "$ac_cv_lib_fcgi_FCGI_Accept" >&6; }
+if test "x$ac_cv_lib_fcgi_FCGI_Accept" = x""yes; then :
 
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ 		for ac_header in fcgi_config.h fcgi_stdio.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
 
    		USE_FCGI=1
 
 fi
 
-done
-
-
-fi
-
-
-		if test "$USE_FCGI" = "0" ; then
-		echo "checking now FCGI in alternate fastcgi include dir"
-		{ echo "$as_me:$LINENO: checking for FCGI_Accept in -lfcgi" >&5
-echo $ECHO_N "checking for FCGI_Accept in -lfcgi... $ECHO_C" >&6; }
-if test "${ac_cv_lib_fcgi_FCGI_Accept+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lfcgi  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char FCGI_Accept ();
-int
-main ()
-{
-return FCGI_Accept ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_fcgi_FCGI_Accept=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_cv_lib_fcgi_FCGI_Accept=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_fcgi_FCGI_Accept" >&5
-echo "${ECHO_T}$ac_cv_lib_fcgi_FCGI_Accept" >&6; }
-if test $ac_cv_lib_fcgi_FCGI_Accept = yes; then
-
-
-
-for ac_header in fastcgi/fcgi_config.h fastcgi/fcgi_stdio.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-else
-  # Is the header compilable?
-{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-	 test -z "$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_header_compiler=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <$ac_header>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-	 test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  ac_header_preproc=no
+done
+
+
 fi
 
-rm -f conftest.err conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6; }
 
-# So?  What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
-  yes:no: )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+		if test "$USE_FCGI" = "0" ; then
+		echo "checking now FCGI in alternate fastcgi include dir"
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FCGI_Accept in -lfcgi" >&5
+$as_echo_n "checking for FCGI_Accept in -lfcgi... " >&6; }
+if test "${ac_cv_lib_fcgi_FCGI_Accept+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lfcgi  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-    ;;
-esac
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char FCGI_Accept ();
+int
+main ()
+{
+return FCGI_Accept ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_fcgi_FCGI_Accept=yes
 else
-  eval "$as_ac_Header=\$ac_header_preproc"
+  ac_cv_lib_fcgi_FCGI_Accept=no
 fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-	       { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
 fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_fcgi_FCGI_Accept" >&5
+$as_echo "$ac_cv_lib_fcgi_FCGI_Accept" >&6; }
+if test "x$ac_cv_lib_fcgi_FCGI_Accept" = x""yes; then :
+
+ 			for ac_header in fastcgi/fcgi_config.h fastcgi/fcgi_stdio.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
   cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
 
    			USE_FCGI=1
@@ -4314,8 +3877,8 @@ fi
 
 
 if test "$USE_FCGI" = "0" ; then
-  { echo "$as_me:$LINENO: WARNING: No FastCGI support. Performances will be strongly reduced !" >&5
-echo "$as_me: WARNING: No FastCGI support. Performances will be strongly reduced !" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \n\nNo FastCGI support. Performances will be strongly reduced !\n" >&5
+$as_echo "$as_me: WARNING: \n\nNo FastCGI support. Performances will be strongly reduced !\n" >&2;}
 else
   FCGI_LIB="$FCGI_LIB -lfcgi"
 fi
@@ -4326,7 +3889,7 @@ fi
 
 
 
-ac_config_files="$ac_config_files Makefile src/ows_define.h demo/tinyows.xml demo/install.sh test/wfs_100/config_wfs_100.xml test/wfs_110/config_wfs_110.xml test/wfs_100/install_wfs_100.sh test/wfs_110/install_wfs_110.sh test/regress/install.sh test/regress/config.xml"
+ac_config_files="$ac_config_files Makefile src/ows_define.h demo/tinyows.xml demo/install.sh test/wfs_100/config_wfs_100.xml test/wfs_110/config_wfs_110.xml test/wfs_100/install_wfs_100.sh test/wfs_110/install_wfs_110.sh"
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -4355,12 +3918,13 @@ _ACEOF
     case $ac_val in #(
     *${as_nl}*)
       case $ac_var in #(
-      *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
-echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
       esac
       case $ac_var in #(
       _ | IFS | as_nl) ;; #(
-      *) $as_unset $ac_var ;;
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
       esac ;;
     esac
   done
@@ -4368,8 +3932,8 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
   (set) 2>&1 |
     case $as_nl`(ac_space=' '; set) 2>&1` in #(
     *${as_nl}ac_space=\ *)
-      # `set' does not quote correctly, so add quotes (double-quote
-      # substitution turns \\\\ into \\, and sed turns \\ into \).
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
       sed -n \
 	"s/'/'\\\\''/g;
 	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
@@ -4392,12 +3956,12 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
 if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
   if test -w "$cache_file"; then
     test "x$cache_file" != "x/dev/null" &&
-      { echo "$as_me:$LINENO: updating cache $cache_file" >&5
-echo "$as_me: updating cache $cache_file" >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
     cat confcache >$cache_file
   else
-    { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
-echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
   fi
 fi
 rm -f confcache
@@ -4414,6 +3978,12 @@ test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
 # take arguments), then branch to the quote section.  Otherwise,
 # look for a macro that doesn't take arguments.
 ac_script='
+:mline
+/\\$/{
+ N
+ s,\\\n,,
+ b mline
+}
 t clear
 :clear
 s/^[	 ]*#[	 ]*define[	 ][	 ]*\([^	 (][^	 (]*([^)]*)\)[	 ]*\(.*\)/-D\1=\2/g
@@ -4440,14 +4010,15 @@ DEFS=`sed -n "$ac_script" confdefs.h`
 
 ac_libobjs=
 ac_ltlibobjs=
+U=
 for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
   # 1. Remove the extension, and $U if already installed.
   ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-  ac_i=`echo "$ac_i" | sed "$ac_script"`
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
   # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
   #    will be set to the directory where LIBOBJS objects are built.
-  ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-  ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
 done
 LIBOBJS=$ac_libobjs
 
@@ -4456,11 +4027,13 @@ LTLIBOBJS=$ac_ltlibobjs
 
 
 : ${CONFIG_STATUS=./config.status}
+ac_write_fail=0
 ac_clean_files_save=$ac_clean_files
 ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
-echo "$as_me: creating $CONFIG_STATUS" >&6;}
-cat >$CONFIG_STATUS <<_ACEOF
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
 #! $SHELL
 # Generated by $as_me.
 # Run this file to recreate the current configuration.
@@ -4470,59 +4043,79 @@ cat >$CONFIG_STATUS <<_ACEOF
 debug=false
 ac_cs_recheck=false
 ac_cs_silent=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-_ACEOF
 
-cat >>$CONFIG_STATUS <<\_ACEOF
-## --------------------- ##
-## M4sh Initialization.  ##
-## --------------------- ##
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
 
 # Be more Bourne compatible
 DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
   emulate sh
   NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
   # is contrary to our usage.  Disable this feature.
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
 esac
-
 fi
 
 
-
-
-# PATH needs CR
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  echo "#! /bin/sh" >conf$$.sh
-  echo  "exit 0"   >>conf$$.sh
-  chmod +x conf$$.sh
-  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
-    PATH_SEPARATOR=';'
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
   else
-    PATH_SEPARATOR=:
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+	expr "X$arg" : "X\\(.*\\)$as_nl";
+	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
   fi
-  rm -f conf$$.sh
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
 fi
 
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  as_unset=unset
-else
-  as_unset=false
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
 fi
 
 
@@ -4531,20 +4124,18 @@ fi
 # there to prevent editors from complaining about space-tab.
 # (If _AS_PATH_WALK were called with IFS unset, it would disable word
 # splitting by setting IFS to empty value.)
-as_nl='
-'
 IFS=" ""	$as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
-case $0 in
+case $0 in #((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
 IFS=$as_save_IFS
 
      ;;
@@ -4555,32 +4146,111 @@ if test "x$as_myself" = x; then
   as_myself=$0
 fi
 if test ! -f "$as_myself"; then
-  echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  { (exit 1); exit 1; }
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
 fi
 
-# Work around bugs in pre-3.0 UWIN ksh.
-for as_var in ENV MAIL MAILPATH
-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
 done
 PS1='$ '
 PS2='> '
 PS4='+ '
 
 # NLS nuisances.
-for as_var in \
-  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
-  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
-  LC_TELEPHONE LC_TIME
-do
-  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
-    eval $as_var=C; export $as_var
-  else
-    ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
   fi
-done
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
 
-# Required to use basename.
 if expr a : '\(a\)' >/dev/null 2>&1 &&
    test "X`expr 00001 : '.*\(...\)'`" = X001; then
   as_expr=expr
@@ -4594,13 +4264,17 @@ else
   as_basename=false
 fi
 
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
 
-# Name of the executable.
 as_me=`$as_basename -- "$0" ||
 $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
 	 X"$0" : 'X\(//\)$' \| \
 	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-echo X/"$0" |
+$as_echo X/"$0" |
     sed '/^.*\/\([^/][^/]*\)\/*$/{
 	    s//\1/
 	    q
@@ -4615,104 +4289,103 @@ echo X/"$0" |
 	  }
 	  s/.*/./; q'`
 
-# CDPATH.
-$as_unset CDPATH
-
-
-
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
-
-  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-  # uniformly replaced by the line number.  The first 'sed' inserts a
-  # line-number line after each line using $LINENO; the second 'sed'
-  # does the real work.  The second script uses 'N' to pair each
-  # line-number line with the line containing $LINENO, and appends
-  # trailing '-' during substitution so that $LINENO is not a special
-  # case at line end.
-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-  # scripts with optimization help from Paolo Bonzini.  Blame Lee
-  # E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
-   { (exit 1); exit 1; }; }
-
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
 
 ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in
+case `echo -n x` in #(((((
 -n*)
-  case `echo 'x\c'` in
+  case `echo 'xy\c'` in
   *c*) ECHO_T='	';;	# ECHO_T is single tab character.
-  *)   ECHO_C='\c';;
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='	';;
   esac;;
 *)
   ECHO_N='-n';;
 esac
 
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
 rm -f conf$$ conf$$.exe conf$$.file
 if test -d conf$$.dir; then
   rm -f conf$$.dir/conf$$.file
 else
   rm -f conf$$.dir
-  mkdir conf$$.dir
-fi
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s='ln -s'
-  # ... but there are two gotchas:
-  # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-  # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-  # In both cases, we have to default to `cp -p'.
-  ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
     as_ln_s='cp -p'
-elif ln conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s=ln
+  fi
 else
   as_ln_s='cp -p'
 fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
 
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
 if mkdir -p . 2>/dev/null; then
-  as_mkdir_p=:
+  as_mkdir_p='mkdir -p "$as_dir"'
 else
   test -d ./-p && rmdir ./-p
   as_mkdir_p=false
@@ -4729,12 +4402,12 @@ else
   as_test_x='
     eval sh -c '\''
       if test -d "$1"; then
-        test -d "$1/.";
+	test -d "$1/.";
       else
-	case $1 in
-        -*)set "./$1";;
+	case $1 in #(
+	-*)set "./$1";;
 	esac;
-	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
 	???[sx]*):;;*)false;;esac;fi
     '\'' sh
   '
@@ -4749,13 +4422,19 @@ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
 
 
 exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
 
-# Save the log message, to keep $[0] and so on meaningful, and to
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
 This file was extended by $as_me, which was
-generated by GNU Autoconf 2.61.  Invocation command line was
+generated by GNU Autoconf 2.67.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -4768,59 +4447,74 @@ on `(hostname || uname -n) 2>/dev/null | sed 1q`
 
 _ACEOF
 
-cat >>$CONFIG_STATUS <<_ACEOF
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 # Files that config.status was made for.
 config_files="$ac_config_files"
 
 _ACEOF
 
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 ac_cs_usage="\
-\`$as_me' instantiates files from templates according to the
-current configuration.
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
 
-Usage: $0 [OPTIONS] [FILE]...
+Usage: $0 [OPTION]... [TAG]...
 
   -h, --help       print this help, then exit
   -V, --version    print version number and configuration settings, then exit
-  -q, --quiet      do not print progress messages
+      --config     print configuration, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
   -d, --debug      don't remove temporary files
       --recheck    update $as_me by reconfiguring in the same conditions
-  --file=FILE[:TEMPLATE]
-		   instantiate the configuration file FILE
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
 
 Configuration files:
 $config_files
 
-Report bugs to <bug-autoconf at gnu.org>."
+Report bugs to the package provider."
 
 _ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
 config.status
-configured by $0, generated by GNU Autoconf 2.61,
-  with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+configured by $0, generated by GNU Autoconf 2.67,
+  with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2006 Free Software Foundation, Inc.
+Copyright (C) 2010 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
 ac_pwd='$ac_pwd'
 srcdir='$srcdir'
+test -n "\$AWK" || AWK=awk
 _ACEOF
 
-cat >>$CONFIG_STATUS <<\_ACEOF
-# If no file are specified by the user, then we need to provide default
-# value.  By we need to know if files were specified by the user.
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
 ac_need_defaults=:
 while test $# != 0
 do
   case $1 in
-  --*=*)
+  --*=?*)
     ac_option=`expr "X$1" : 'X\([^=]*\)='`
     ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
     ac_shift=:
     ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
   *)
     ac_option=$1
     ac_optarg=$2
@@ -4833,25 +4527,30 @@ do
   -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
     ac_cs_recheck=: ;;
   --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-    echo "$ac_cs_version"; exit ;;
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
   --debug | --debu | --deb | --de | --d | -d )
     debug=: ;;
   --file | --fil | --fi | --f )
     $ac_shift
-    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
     ac_need_defaults=false;;
   --he | --h |  --help | --hel | -h )
-    echo "$ac_cs_usage"; exit ;;
+    $as_echo "$ac_cs_usage"; exit ;;
   -q | -quiet | --quiet | --quie | --qui | --qu | --q \
   | -silent | --silent | --silen | --sile | --sil | --si | --s)
     ac_cs_silent=: ;;
 
   # This is an error.
-  -*) { echo "$as_me: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&2
-   { (exit 1); exit 1; }; } ;;
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
 
-  *) ac_config_targets="$ac_config_targets $1"
+  *) as_fn_append ac_config_targets " $1"
      ac_need_defaults=false ;;
 
   esac
@@ -4866,30 +4565,32 @@ if $ac_cs_silent; then
 fi
 
 _ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 if \$ac_cs_recheck; then
-  echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
-  CONFIG_SHELL=$SHELL
+  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
   export CONFIG_SHELL
-  exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  exec "\$@"
 fi
 
 _ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 exec 5>>config.log
 {
   echo
   sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
 ## Running $as_me. ##
 _ASBOX
-  echo "$ac_log"
+  $as_echo "$ac_log"
 } >&5
 
 _ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 _ACEOF
 
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 
 # Handling of arguments.
 for ac_config_target in $ac_config_targets
@@ -4903,12 +4604,8 @@ do
     "test/wfs_110/config_wfs_110.xml") CONFIG_FILES="$CONFIG_FILES test/wfs_110/config_wfs_110.xml" ;;
     "test/wfs_100/install_wfs_100.sh") CONFIG_FILES="$CONFIG_FILES test/wfs_100/install_wfs_100.sh" ;;
     "test/wfs_110/install_wfs_110.sh") CONFIG_FILES="$CONFIG_FILES test/wfs_110/install_wfs_110.sh" ;;
-    "test/regress/install.sh") CONFIG_FILES="$CONFIG_FILES test/regress/install.sh" ;;
-    "test/regress/config.xml") CONFIG_FILES="$CONFIG_FILES test/regress/config.xml" ;;
 
-  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
-echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
-   { (exit 1); exit 1; }; };;
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;;
   esac
 done
 
@@ -4933,7 +4630,7 @@ $debug ||
   trap 'exit_status=$?
   { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
 ' 0
-  trap '{ (exit 1); exit 1; }' 1 2 13 15
+  trap 'as_fn_exit 1' 1 2 13 15
 }
 # Create a (secure) tmp directory for tmp files.
 
@@ -4944,163 +4641,177 @@ $debug ||
 {
   tmp=./conf$$-$RANDOM
   (umask 077 && mkdir "$tmp")
-} ||
-{
-   echo "$me: cannot create a temporary directory in ." >&2
-   { (exit 1); exit 1; }
-}
-
-#
-# Set up the sed scripts for CONFIG_FILES section.
-#
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
 
-# No need to generate the scripts if there are no CONFIG_FILES.
-# This happens for instance when ./config.status config.h
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
 if test -n "$CONFIG_FILES"; then
 
-_ACEOF
 
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$tmp/subs1.awk" &&
+_ACEOF
 
 
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
 ac_delim='%!_!# '
 for ac_last_try in false false false false false :; do
-  cat >conf$$subs.sed <<_ACEOF
-SHELL!$SHELL$ac_delim
-PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim
-PACKAGE_NAME!$PACKAGE_NAME$ac_delim
-PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim
-PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
-PACKAGE_STRING!$PACKAGE_STRING$ac_delim
-PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
-exec_prefix!$exec_prefix$ac_delim
-prefix!$prefix$ac_delim
-program_transform_name!$program_transform_name$ac_delim
-bindir!$bindir$ac_delim
-sbindir!$sbindir$ac_delim
-libexecdir!$libexecdir$ac_delim
-datarootdir!$datarootdir$ac_delim
-datadir!$datadir$ac_delim
-sysconfdir!$sysconfdir$ac_delim
-sharedstatedir!$sharedstatedir$ac_delim
-localstatedir!$localstatedir$ac_delim
-includedir!$includedir$ac_delim
-oldincludedir!$oldincludedir$ac_delim
-docdir!$docdir$ac_delim
-infodir!$infodir$ac_delim
-htmldir!$htmldir$ac_delim
-dvidir!$dvidir$ac_delim
-pdfdir!$pdfdir$ac_delim
-psdir!$psdir$ac_delim
-libdir!$libdir$ac_delim
-localedir!$localedir$ac_delim
-mandir!$mandir$ac_delim
-DEFS!$DEFS$ac_delim
-ECHO_C!$ECHO_C$ac_delim
-ECHO_N!$ECHO_N$ac_delim
-ECHO_T!$ECHO_T$ac_delim
-LIBS!$LIBS$ac_delim
-build_alias!$build_alias$ac_delim
-host_alias!$host_alias$ac_delim
-target_alias!$target_alias$ac_delim
-CC!$CC$ac_delim
-CFLAGS!$CFLAGS$ac_delim
-LDFLAGS!$LDFLAGS$ac_delim
-CPPFLAGS!$CPPFLAGS$ac_delim
-ac_ct_CC!$ac_ct_CC$ac_delim
-EXEEXT!$EXEEXT$ac_delim
-OBJEXT!$OBJEXT$ac_delim
-LIBXML2_CONFIG!$LIBXML2_CONFIG$ac_delim
-XML2_INC!$XML2_INC$ac_delim
-XML2_LIB!$XML2_LIB$ac_delim
-TINYOWS_DEBUG!$TINYOWS_DEBUG$ac_delim
-svnversion!$svnversion$ac_delim
-SVN_FLAGS!$SVN_FLAGS$ac_delim
-PG_CONFIG!$PG_CONFIG$ac_delim
-POSTGIS_INC!$POSTGIS_INC$ac_delim
-POSTGIS_LIB!$POSTGIS_LIB$ac_delim
-POSTGIS_SHARE!$POSTGIS_SHARE$ac_delim
-POSTGIS_BIN!$POSTGIS_BIN$ac_delim
-SHP2PGSQL!$SHP2PGSQL$ac_delim
-LEX!$LEX$ac_delim
-LEX_OUTPUT_ROOT!$LEX_OUTPUT_ROOT$ac_delim
-LEXLIB!$LEXLIB$ac_delim
-CPP!$CPP$ac_delim
-GREP!$GREP$ac_delim
-EGREP!$EGREP$ac_delim
-FCGI_INC!$FCGI_INC$ac_delim
-FCGI_LIB!$FCGI_LIB$ac_delim
-USE_FCGI!$USE_FCGI$ac_delim
-LIBOBJS!$LIBOBJS$ac_delim
-LTLIBOBJS!$LTLIBOBJS$ac_delim
-_ACEOF
+  . ./conf$$subs.sh ||
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
 
-  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 67; then
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
     break
   elif $ac_last_try; then
-    { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
   else
     ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
   fi
 done
+rm -f conf$$subs.sh
 
-ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
-if test -n "$ac_eof"; then
-  ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
-  ac_eof=`expr $ac_eof + 1`
-fi
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = ""
 
-cat >>$CONFIG_STATUS <<_ACEOF
-cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
 _ACEOF
-sed '
-s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
-s/^/s,@/; s/!/@,|#_!!_#|/
-:n
-t n
-s/'"$ac_delim"'$/,g/; t
-s/$/\\/; p
-N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
-' >>$CONFIG_STATUS <conf$$subs.sed
-rm -f conf$$subs.sed
-cat >>$CONFIG_STATUS <<_ACEOF
-:end
-s/|#_!!_#|//g
-CEOF$ac_eof
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
 _ACEOF
 
-
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
 # trailing colons and then remove the whole line if VPATH becomes empty
 # (actually we leave an empty line to preserve line numbers).
 if test "x$srcdir" = x.; then
-  ac_vpsub='/^[	 ]*VPATH[	 ]*=/{
-s/:*\$(srcdir):*/:/
-s/:*\${srcdir}:*/:/
-s/:*@srcdir@:*/:/
-s/^\([^=]*=[	 ]*\):*/\1/
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=[	 ]*/{
+h
+s///
+s/^/:/
+s/[	 ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
 s/:*$//
+x
+s/\(=[	 ]*\).*/\1/
+G
+s/\n//
 s/^[^=]*=[	 ]*$//
 }'
 fi
 
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 fi # test -n "$CONFIG_FILES"
 
 
-for ac_tag in  :F $CONFIG_FILES
+eval set X "  :F $CONFIG_FILES      "
+shift
+for ac_tag
 do
   case $ac_tag in
   :[FHLC]) ac_mode=$ac_tag; continue;;
   esac
   case $ac_mode$ac_tag in
   :[FHL]*:*);;
-  :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
-echo "$as_me: error: Invalid tag $ac_tag." >&2;}
-   { (exit 1); exit 1; }; };;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5 ;;
   :[FH]-) ac_tag=-:-;;
   :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
   esac
@@ -5128,26 +4839,34 @@ echo "$as_me: error: Invalid tag $ac_tag." >&2;}
 	   [\\/$]*) false;;
 	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
 	   esac ||
-	   { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
-echo "$as_me: error: cannot find input file: $ac_f" >&2;}
-   { (exit 1); exit 1; }; };;
+	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5 ;;
       esac
-      ac_file_inputs="$ac_file_inputs $ac_f"
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
     done
 
     # Let's still pretend it is `configure' which instantiates (i.e., don't
     # use $as_me), people would be surprised to read:
     #    /* config.h.  Generated by config.status.  */
-    configure_input="Generated from "`IFS=:
-	  echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
+    configure_input='Generated from '`
+	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+	`' by configure.'
     if test x"$ac_file" != x-; then
       configure_input="$ac_file.  $configure_input"
-      { echo "$as_me:$LINENO: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
     fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
 
     case $ac_tag in
-    *:-:* | *:-) cat >"$tmp/stdin";;
+    *:-:* | *:-) cat >"$tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5  ;;
     esac
     ;;
   esac
@@ -5157,42 +4876,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
 	 X"$ac_file" : 'X\(//\)[^/]' \| \
 	 X"$ac_file" : 'X\(//\)$' \| \
 	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)[^/].*/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'`
-  { as_dir="$ac_dir"
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-	 X"$as_dir" : 'X\(//\)[^/]' \| \
-	 X"$as_dir" : 'X\(//\)$' \| \
-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$as_dir" |
+$as_echo X"$ac_file" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
 	    s//\1/
 	    q
@@ -5210,20 +4894,15 @@ echo X"$as_dir" |
 	    q
 	  }
 	  s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-echo "$as_me: error: cannot create directory $as_dir" >&2;}
-   { (exit 1); exit 1; }; }; }
+  as_dir="$ac_dir"; as_fn_mkdir_p
   ac_builddir=.
 
 case "$ac_dir" in
 .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
 *)
-  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
   # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
   case $ac_top_builddir_sub in
   "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
   *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -5259,12 +4938,12 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
 
 _ACEOF
 
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # If the template does not know about datarootdir, expand it.
 # FIXME: This hack should be removed a few years after 2.60.
 ac_datarootdir_hack=; ac_datarootdir_seen=
-
-case `sed -n '/datarootdir/ {
+ac_sed_dataroot='
+/datarootdir/ {
   p
   q
 }
@@ -5272,36 +4951,37 @@ case `sed -n '/datarootdir/ {
 /@docdir@/p
 /@infodir@/p
 /@localedir@/p
-/@mandir@/p
-' $ac_file_inputs` in
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
 *datarootdir*) ac_datarootdir_seen=yes;;
 *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
 _ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
   ac_datarootdir_hack='
   s&@datadir@&$datadir&g
   s&@docdir@&$docdir&g
   s&@infodir@&$infodir&g
   s&@localedir@&$localedir&g
   s&@mandir@&$mandir&g
-    s&\\\${datarootdir}&$datarootdir&g' ;;
+  s&\\\${datarootdir}&$datarootdir&g' ;;
 esac
 _ACEOF
 
 # Neutralize VPATH when `$srcdir' = `.'.
 # Shell code in configure.ac might set extrasub.
 # FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF
-  sed "$ac_vpsub
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
 $extrasub
 _ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 :t
 /@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s&@configure_input@&$configure_input&;t t
+s|@configure_input@|$ac_sed_conf_input|;t t
 s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
 s&@srcdir@&$ac_srcdir&;t t
 s&@abs_srcdir@&$ac_abs_srcdir&;t t
 s&@top_srcdir@&$ac_top_srcdir&;t t
@@ -5310,21 +4990,24 @@ s&@builddir@&$ac_builddir&;t t
 s&@abs_builddir@&$ac_abs_builddir&;t t
 s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
 $ac_datarootdir_hack
-" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
 
 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
   { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
   { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
-  { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined." >&5
-echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined." >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&2;}
 
   rm -f "$tmp/stdin"
   case $ac_file in
-  -) cat "$tmp/out"; rm -f "$tmp/out";;
-  *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
-  esac
+  -) cat "$tmp/out" && rm -f "$tmp/out";;
+  *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
  ;;
 
 
@@ -5334,11 +5017,13 @@ which seems to be undefined.  Please make sure it is defined." >&2;}
 done # for ac_tag
 
 
-{ (exit 0); exit 0; }
+as_fn_exit 0
 _ACEOF
-chmod +x $CONFIG_STATUS
 ac_clean_files=$ac_clean_files_save
 
+test $ac_write_fail = 0 ||
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
 
 # configure is writing to config.log, and then calls config.status.
 # config.status does its own redirection, appending to config.log.
@@ -5358,7 +5043,11 @@ if test "$no_create" != yes; then
   exec 5>>config.log
   # Use ||, not &&, to avoid exiting from the if with $? = 1, which
   # would make configure fail if this is the last instruction.
-  $ac_cs_success || { (exit 1); exit 1; }
+  $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
 fi
 
 
@@ -5368,6 +5057,3 @@ rm -f config.log config.status
 echo "------------------------"
 echo "NOTA: This TinyOWS version will need at least PostGIS 1.5.x"
 echo "------------------------"
-echo "IMPORTANT: Make sure that you read:"
-echo "<http://tinyows.org/trac/wiki/LibxmlSchemaGmlBug>"
-echo "------------------------"
diff --git a/configure.in b/configure.in
index ac92650..b1a12ff 100644
--- a/configure.in
+++ b/configure.in
@@ -29,8 +29,8 @@ XML2_VER=`$LIBXML2_CONFIG --version`
 AC_MSG_RESULT([checking for libxml2 version... $XML2_VER])
 
 xml2_vers=`$LIBXML2_CONFIG --version | awk 'BEGIN { FS = "."; } { printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
-if test "$xml2_vers" -lt 2006020 ; then
-	AC_MSG_ERROR([You need at least libxml 2.6.20])
+if test "$xml2_vers" -lt 2008000 ; then
+	AC_MSG_ERROR([You need at least libxml 2.8.0])
 fi
 
 
@@ -52,12 +52,12 @@ AC_SUBST(TINYOWS_DEBUG)
 
 
 dnl ---------------------------------------------------------------------------
-dnl svnversion
+dnl Git
 dnl ---------------------------------------------------------------------------
-AC_CHECK_PROG(svnversion, svnversion, yes)
-if test "$svnversion" = "yes"; then
-	SVN_FLAGS='"-D TINYOWS_SVN_REV=\"$(shell svnversion -n .)\""'
-	AC_SUBST(SVN_FLAGS)
+AC_CHECK_PROG(git, git, yes)
+if test "$git" = "yes" -a -d ".git"; then
+	GIT_FLAGS='"-D TINYOWS_GIT_COMMIT=\"$(shell git log --abbrev-commit -n 1 HEAD | grep commit)\""'
+	AC_SUBST(GIT_FLAGS)
 fi
 
 
@@ -172,7 +172,7 @@ fi
 
 
 if test "$USE_FCGI" = "0" ; then
-  AC_MSG_WARN([No FastCGI support. Performances will be strongly reduced !])
+  AC_MSG_WARN([\n\nNo FastCGI support. Performances will be strongly reduced !\n])
 else
   FCGI_LIB="$FCGI_LIB -lfcgi"
 fi
@@ -183,7 +183,7 @@ AC_SUBST(USE_FCGI)
 
 
 
-AC_OUTPUT(Makefile src/ows_define.h demo/tinyows.xml demo/install.sh test/wfs_100/config_wfs_100.xml test/wfs_110/config_wfs_110.xml test/wfs_100/install_wfs_100.sh test/wfs_110/install_wfs_110.sh test/regress/install.sh test/regress/config.xml)
+AC_OUTPUT(Makefile src/ows_define.h demo/tinyows.xml demo/install.sh test/wfs_100/config_wfs_100.xml test/wfs_110/config_wfs_110.xml test/wfs_100/install_wfs_100.sh test/wfs_110/install_wfs_110.sh)
 
 rm -rf autom4te.cache
 rm -f config.log config.status
@@ -191,6 +191,3 @@ rm -f config.log config.status
 echo "------------------------"
 echo "NOTA: This TinyOWS version will need at least PostGIS 1.5.x"
 echo "------------------------"
-echo "IMPORTANT: Make sure that you read:"
-echo "<http://tinyows.org/trac/wiki/LibxmlSchemaGmlBug>"
-echo "------------------------"
diff --git a/demo/config.xml.in b/demo/config.xml.in
deleted file mode 100644
index beb13a1..0000000
--- a/demo/config.xml.in
+++ /dev/null
@@ -1,27 +0,0 @@
-<tinyows online_resource="http://127.0.0.1/cgi-bin/tinyows"
-	 schema_dir="@prefix@/tinyows/schema/">
-
-  <pg host="127.0.0.1" user="postgres" password="postgres" dbname="tinyows_demo" port="5432"/>
-
-  <metadata name="TinyOWS Server"
-	    title="TinyOWS Server - Demo Service" />
-
-  <contact name="TinyOWS Server"
-    	   site="http://www.tinyows.org/"
-   	   email="tinyows-users at lists.maptools.org" />
-
-  <layer retrievable="1"
-	 writable="1"
-	 prefix="tows"
-	 server="http://www.tinyows.org/"
-         name="world"
-         title="World Administrative Boundaries" />
-
-  <layer retrievable="1"
-	 writable="1"
-	 prefix="tows"
-	 server="http://www.tinyows.org/"
-         name="france"
-         title="French Administrative Sub Boundaries (IGN - GeoFLA Departements)" />
-
-</tinyows>
diff --git a/demo/install.sh.in b/demo/install.sh.in
index 055881d..3f232fe 100755
--- a/demo/install.sh.in
+++ b/demo/install.sh.in
@@ -9,6 +9,14 @@ PGUSER=postgres
 SHP2PGSQL=@SHP2PGSQL@
 DB=tinyows_demo
 
+if [ -d @POSTGIS_SHARE@/contrib/postgis-2.0 ]; then
+	PGSHARE=@POSTGIS_SHARE@/contrib/postgis-2.0
+elif [ -d @POSTGIS_SHARE@/contrib/postgis-1.5 ]; then
+	PGSHARE=@POSTGIS_SHARE@/contrib/postgis-1.5
+else
+	echo "Unable to find PostGIS dir in @POSTGIS_SHARE@/contrib/" && exit 1
+fi
+
 echo "Create Spatial Database: $DB"
 su $PGUSER -c "$PGBIN/dropdb $DB > /dev/null 2> /dev/null"
 su $PGUSER -c "$PGBIN/createdb $DB"
diff --git a/doc/Doxyfile b/doc/Doxyfile
index 30def15..a44e8b9 100644
--- a/doc/Doxyfile
+++ b/doc/Doxyfile
@@ -23,7 +23,7 @@ PROJECT_NAME           = tinyows
 # This could be handy for archiving the generated documentation or 
 # if some version control system is used.
 
-PROJECT_NUMBER         = 1.0.0
+PROJECT_NUMBER         = 1.1.0
 
 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
 # base path where the generated documentation will be put. 
diff --git a/schema/tows/config.xsd b/schema/tows/config.xsd
new file mode 100644
index 0000000..9ffbada
--- /dev/null
+++ b/schema/tows/config.xsd
@@ -0,0 +1,127 @@
+<?xml version="1.0"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+<!-- Types -->
+<xs:simpleType name="csvType">
+  <xs:restriction base="xs:string">
+    <xs:pattern value="\w+(,\w+)*"/>
+  </xs:restriction>
+</xs:simpleType>
+
+<xs:simpleType name="bboxType">
+  <xs:restriction base="xs:string">
+    <xs:pattern value="-?\d+(,-?\d+)*"/>
+  </xs:restriction>
+</xs:simpleType>
+
+<xs:simpleType name="sridType">
+  <xs:restriction base="xs:string">
+    <xs:pattern value="\d+(,\d+)*"/>
+  </xs:restriction>
+</xs:simpleType>
+
+<!-- Element tinyows -->
+<xs:element name="tinyows">
+  <xs:complexType>
+    <xs:sequence>
+      <xs:element name="pg" minOccurs="1" maxOccurs="1" />
+      <xs:element name="metadata" minOccurs="1" maxOccurs="1" />
+      <xs:element name="contact" minOccurs="0" maxOccurs="1" />
+      <xs:element name="layer" minOccurs="0" maxOccurs="unbounded" />
+      <xs:element name="limits" minOccurs="0" maxOccurs="1" />
+    </xs:sequence>
+    <xs:attribute name="schema_dir" type="xs:string" use="required" />
+    <xs:attribute name="online_resource" type="xs:string" use="required" />
+    <xs:attribute name="log" type="xs:string" />
+    <xs:attribute name="log_level" type="xs:positiveInteger" />
+    <xs:attribute name="degree_precision" type="xs:positiveInteger" />
+    <xs:attribute name="meter_precision" type="xs:positiveInteger" />
+    <xs:attribute name="display_bbox" type="xs:boolean" />
+    <xs:attribute name="estimated_extent" type="xs:boolean" />
+    <xs:attribute name="check_schema" type="xs:boolean" />
+    <xs:attribute name="check_valid_geom" type="xs:boolean" />
+    <xs:attribute name="expose_pk" type="xs:boolean" />
+    <xs:attribute name="encoding" type="xs:string" />
+    <xs:attribute name="wfs_default_version" type="xs:string" />
+  </xs:complexType>
+</xs:element>
+
+
+<!-- Element pg -->
+<xs:element name="pg">
+  <xs:complexType>
+    <xs:attribute name="host" type="xs:string" />
+    <xs:attribute name="user" type="xs:string" />
+    <xs:attribute name="password" type="xs:string" />
+    <xs:attribute name="dbname" type="xs:string" />
+    <xs:attribute name="port" type="xs:string" />
+    <xs:attribute name="encoding" type="xs:string" />
+  </xs:complexType>
+</xs:element>
+
+<!-- Element metadata -->
+<xs:element name="metadata">
+  <xs:complexType>
+    <xs:sequence minOccurs="0" maxOccurs="1" >
+      <xs:element name="abstract" type="xs:string" />
+    </xs:sequence>
+    <xs:attribute name="name" type="xs:string" use="required" />
+    <xs:attribute name="title" type="xs:string" use="required" />
+    <xs:attribute name="keywords" type="csvType" />
+    <xs:attribute name="fees" type="xs:string" />
+    <xs:attribute name="access_constraints" type="xs:string" />
+  </xs:complexType>
+</xs:element>
+
+<!-- Element contact -->
+<xs:element name="contact">
+  <xs:complexType>
+    <xs:attribute name="name" type="xs:string" use="required" />
+    <xs:attribute name="site" type="xs:string" use="required" />
+    <xs:attribute name="email" type="xs:string" use="required" />
+    <xs:attribute name="individual_name" type="xs:string" />
+    <xs:attribute name="position" type="xs:string" />
+    <xs:attribute name="phone" type="xs:string" />
+    <xs:attribute name="fax" type="xs:string" />
+    <xs:attribute name="online_resource" type="xs:string" />
+    <xs:attribute name="address" type="xs:string" />
+    <xs:attribute name="postcode" type="xs:string" />
+    <xs:attribute name="city" type="xs:string" />
+    <xs:attribute name="administrative_area" type="xs:string" />
+    <xs:attribute name="country" type="xs:string" />
+    <xs:attribute name="hours_of_service" type="xs:string" />
+    <xs:attribute name="contact_instructions" type="xs:string" />
+  </xs:complexType>
+</xs:element>
+
+<!-- Element layer -->
+<xs:element name="layer">
+  <xs:complexType>
+    <xs:sequence minOccurs="0" maxOccurs="unbounded" >
+      <xs:element name="layer" /> <!-- layers could be nested -->
+    </xs:sequence>
+    <xs:attribute name="name" type="xs:string" use="required" />
+    <xs:attribute name="title" type="xs:string" use="required" />
+    <xs:attribute name="ns_prefix" type="xs:string" />
+    <xs:attribute name="ns_uri" type="xs:string" />
+    <xs:attribute name="table" type="xs:string" />
+    <xs:attribute name="schema" type="xs:string" />
+    <xs:attribute name="abstract" type="xs:string" />
+    <xs:attribute name="gml_ns" type="csvType" />
+    <xs:attribute name="keywords" type="csvType" />
+    <xs:attribute name="srid" type="sridType" />
+    <xs:attribute name="geobbox" type="bboxType" />
+    <xs:attribute name="retrievable" type="xs:boolean" />
+    <xs:attribute name="writable" type="xs:boolean" />
+  </xs:complexType>
+</xs:element>
+
+<!-- Element limits -->
+<xs:element name="limits">
+  <xs:complexType>
+    <xs:attribute name="features" type="xs:positiveInteger" />
+    <xs:attribute name="geobbox" type="bboxType" />
+  </xs:complexType>
+</xs:element>
+
+</xs:schema>
diff --git a/src/fe/fe_comparison_ops.c b/src/fe/fe_comparison_ops.c
index 0c237a5..e96e23c 100644
--- a/src/fe/fe_comparison_ops.c
+++ b/src/fe/fe_comparison_ops.c
@@ -36,112 +36,113 @@
  */
 static buffer *fe_binary_comparison_op(ows * o, buffer * typename, filter_encoding * fe, xmlNodePtr n)
 {
-    buffer *tmp, *type, *name;
-    xmlChar *matchcase;
-    bool bool_type = false;
-    bool sensitive_case = true;
+  buffer *tmp, *type, *name;
+  xmlChar *matchcase;
+  bool bool_type = false;
+  bool sensitive_case = true;
 
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
+  assert(o && typename && fe && n);
 
-    tmp = buffer_init();
-    name = buffer_init();
+  tmp = buffer_init();
+  name = buffer_init();
 
-    buffer_add_str(name, (char *) n->name);
+  buffer_add_str(name, (char *) n->name);
 
-    /* by default, comparison is case sensitive */
-    matchcase = xmlGetProp(n, (xmlChar *) "matchCase");
-    if (matchcase && !strcmp((char *) matchcase, "false")) sensitive_case = false;
-    xmlFree(matchcase);
+  /* By default, comparison is case sensitive */
+  matchcase = xmlGetProp(n, (xmlChar *) "matchCase");
+  if (matchcase && !strcmp((char *) matchcase, "false")) sensitive_case = false;
+  xmlFree(matchcase);
 
-    n = n->children;
+  n = n->children;
 
-    /* jump to the next element if there are spaces */
-    while (n->type != XML_ELEMENT_NODE) n = n->next;
+  while (n->type != XML_ELEMENT_NODE) n = n->next; /* eat spaces */
 
-    /* if comparison isn't case sensitive, strings are passed in lower case */
-    if (!sensitive_case) buffer_add_str(fe->sql, "lower(");
+  /* If comparison are explicitly not case sensitive */
+  if (!sensitive_case) buffer_add_str(fe->sql, "lower(");
 
-    tmp = fe_expression(o, typename, fe, tmp, n);
-    if (fe->error_code) {
+  tmp = fe_expression(o, typename, fe, tmp, n);
+  if (fe->error_code) {
+    buffer_free(tmp);
+    buffer_free(name);
+    return fe->sql;
+  }
+
+  buffer_copy(fe->sql, tmp);
+
+  if (buffer_cmp(name, "PropertyIsEqualTo") || buffer_cmp(name, "PropertyIsNotEqualTo")) {
+    /* remove brackets (if any) and quotation marks */
+    if (tmp->buf[0] == '(') {
+      if (tmp->use < 3) {
         buffer_free(tmp);
         buffer_free(name);
+        fe->error_code = FE_ERROR_FILTER;
         return fe->sql;
+      }
+      buffer_pop(tmp, 2);
+      buffer_shift(tmp, 2);
+    } else {
+      if (tmp->use < 1) {
+        buffer_free(tmp);
+        buffer_free(name);
+        fe->error_code = FE_ERROR_FILTER;
+        return fe->sql;
+      }
+      buffer_pop(tmp, 1);
+      buffer_shift(tmp, 1);
     }
 
-    buffer_copy(fe->sql, tmp);
-
-    /* if property is a boolean, xml content( 1 or 0) must be transformed
-       into FE->SQL syntax (true or false) */
-    if (buffer_cmp(name, "PropertyIsEqualTo") || buffer_cmp(name, "PropertyIsNotEqualTo")) {
-        /* remove brackets (if any) and quotation marks */
-        if (tmp->buf[0] == '(') {
-/* FIXME assert in User input ! */
-            assert(tmp->use > 3);
-            buffer_pop(tmp, 2);
-            buffer_shift(tmp, 2);
-        } else {
-/* FIXME assert in User input ! */
-            assert(tmp->use > 1);
-            buffer_pop(tmp, 1);
-            buffer_shift(tmp, 1);
-        }
-
-        type = ows_psql_type(o, typename, tmp);
-
-        if (buffer_cmp(type, "bool")) bool_type = true;
-    }
-
-    if (!sensitive_case) buffer_add_str(fe->sql, ")");
-
-    if (buffer_cmp(name, "PropertyIsEqualTo"))
-        buffer_add_str(fe->sql, " = ");
+    type = ows_psql_type(o, ows_layer_prefix_to_uri(o->layers, typename), tmp);
 
-    if (buffer_cmp(name, "PropertyIsNotEqualTo"))
-        buffer_add_str(fe->sql, " != ");
+    if (buffer_cmp(type, "bool")) bool_type = true;
+  }
 
-    if (buffer_cmp(name, "PropertyIsLessThan"))
-        buffer_add_str(fe->sql, " < ");
+  if (!sensitive_case) buffer_add_str(fe->sql, ")");
 
-    if (buffer_cmp(name, "PropertyIsGreaterThan"))
-        buffer_add_str(fe->sql, " > ");
+  if (buffer_cmp(name, "PropertyIsEqualTo"))
+    buffer_add_str(fe->sql, " = ");
 
-    if (buffer_cmp(name, "PropertyIsLessThanOrEqualTo"))
-        buffer_add_str(fe->sql, " <= ");
+  if (buffer_cmp(name, "PropertyIsNotEqualTo"))
+    buffer_add_str(fe->sql, " != ");
 
-    if (buffer_cmp(name, "PropertyIsGreaterThanOrEqualTo"))
-        buffer_add_str(fe->sql, " >= ");
+  if (buffer_cmp(name, "PropertyIsLessThan"))
+    buffer_add_str(fe->sql, " < ");
 
-    buffer_empty(tmp);
+  if (buffer_cmp(name, "PropertyIsGreaterThan"))
+    buffer_add_str(fe->sql, " > ");
 
-    n = n->next;
+  if (buffer_cmp(name, "PropertyIsLessThanOrEqualTo"))
+    buffer_add_str(fe->sql, " <= ");
 
-    while (n->type != XML_ELEMENT_NODE) n = n->next;
+  if (buffer_cmp(name, "PropertyIsGreaterThanOrEqualTo"))
+    buffer_add_str(fe->sql, " >= ");
 
-    if (!sensitive_case) buffer_add_str(fe->sql, "lower(");
+  buffer_empty(tmp);
 
-    tmp = fe_expression(o, typename, fe, tmp, n);
-    if (fe->error_code) {
-        buffer_free(tmp);
-        buffer_free(name);
-        return fe->sql;
-    }
+  n = n->next;
 
-    /* if property is a boolean, xml content( 1 or 0) must be transformed
-       into fe->sql (true or false) */
-    if (bool_type) {
-        if (buffer_cmp(tmp, "1")) buffer_add_str(fe->sql, "'t'");
-        if (buffer_cmp(tmp, "0")) buffer_add_str(fe->sql, "'f'");
-    } else buffer_copy(fe->sql, tmp);
+  while (n->type != XML_ELEMENT_NODE) n = n->next;
 
-    if (!sensitive_case) buffer_add_str(fe->sql, ")");
+  if (!sensitive_case) buffer_add_str(fe->sql, "lower(");
 
+  tmp = fe_expression(o, typename, fe, tmp, n);
+  if (fe->error_code) {
     buffer_free(tmp);
     buffer_free(name);
-
     return fe->sql;
+  }
+
+  /* If property is a boolean, XML content transformation */
+  if (bool_type) {
+    if (buffer_cmp(tmp, "'1'")) buffer_add_str(fe->sql, "'t'");
+    if (buffer_cmp(tmp, "'0'")) buffer_add_str(fe->sql, "'f'");
+  } else buffer_copy(fe->sql, tmp);
+
+  if (!sensitive_case) buffer_add_str(fe->sql, ")");
+
+  buffer_free(tmp);
+  buffer_free(name);
+
+  return fe->sql;
 }
 
 
@@ -151,67 +152,61 @@ static buffer *fe_binary_comparison_op(ows * o, buffer * typename, filter_encodi
  */
 static buffer *fe_property_is_like(ows * o, buffer * typename, filter_encoding * fe, xmlNodePtr n)
 {
-    xmlChar *content, *wildcard, *singlechar, *escape;
-    buffer *pg_string;
-    char *escaped;
+  xmlChar *content, *wildcard, *singlechar, *escape;
+  buffer *pg_string;
+  char *escaped;
 
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
+  assert(o && typename && fe && n);
 
-    wildcard = xmlGetProp(n, (xmlChar *) "wildCard");
-    singlechar = xmlGetProp(n, (xmlChar *) "singleChar");
+  wildcard = xmlGetProp(n, (xmlChar *) "wildCard");
+  singlechar = xmlGetProp(n, (xmlChar *) "singleChar");
 
-    if (ows_version_get(o->request->version) == 100)
-        escape = xmlGetProp(n, (xmlChar *) "escape");
-    else
-        escape = xmlGetProp(n, (xmlChar *) "escapeChar");
+  if (ows_version_get(o->request->version) == 100)
+    escape = xmlGetProp(n, (xmlChar *) "escape");
+  else
+    escape = xmlGetProp(n, (xmlChar *) "escapeChar");
 
 
-    n = n->children;
+  n = n->children;
 
-    /* jump to the next element if there are spaces */
-    while (n->type != XML_ELEMENT_NODE) n = n->next;
+  while (n->type != XML_ELEMENT_NODE) n = n->next; /* eat spaces */
 
-    /* We need to cast as varchar at least for timestamp
-           PostgreSQL data type - cf (Ticket #10) */
-    buffer_add_str(fe->sql, " CAST(\"");
-    fe->sql = fe_property_name(o, typename, fe, fe->sql, n, false, true);
-    buffer_add_str(fe->sql, "\" AS varchar) LIKE E");
+  /* We need to cast as varchar at least for timestamp PostgreSQL data type */
+  buffer_add_str(fe->sql, " CAST(\"");
+  fe->sql = fe_property_name(o, typename, fe, fe->sql, n, false, true);
+  buffer_add_str(fe->sql, "\" AS varchar) LIKE E");
 
-    n = n->next;
+  n = n->next;
 
-    /* jump to the next element if there are spaces */
-    while (n->type != XML_ELEMENT_NODE) n = n->next;
+  while (n->type != XML_ELEMENT_NODE) n = n->next; /* eat spaces */
 
-    content = xmlNodeGetContent(n->children);
+  content = xmlNodeGetContent(n->children);
 
-    pg_string = buffer_init();
-    buffer_add_str(pg_string, (char *) content);
+  pg_string = buffer_init();
+  buffer_add_str(pg_string, (char *) content);
 
-    /* Replace the wildcard,singlechar and escapechar by Postgrefe->sql's */
-    if ((char *) wildcard && (char *) singlechar && (char *) escape) {
-        if (strlen((char *) escape))     pg_string = buffer_replace(pg_string, (char *) escape, "\\\\");
-        if (strlen((char *) wildcard))   pg_string = buffer_replace(pg_string, (char *) wildcard, "%");
-        if (strlen((char *) singlechar)) pg_string = buffer_replace(pg_string, (char *) singlechar, "_");
-    } else fe->error_code = FE_ERROR_FILTER;
+  /* Replace the wildcard,singlechar and escapechar */
+  if ((char *) wildcard && (char *) singlechar && (char *) escape) {
+    if (strlen((char *) escape))     pg_string = buffer_replace(pg_string, (char *) escape,     "\\\\");
+    if (strlen((char *) wildcard))   pg_string = buffer_replace(pg_string, (char *) wildcard,   "%");
+    if (strlen((char *) singlechar)) pg_string = buffer_replace(pg_string, (char *) singlechar, "_");
+  } else fe->error_code = FE_ERROR_FILTER;
 
-    buffer_add_str(fe->sql, "'");
-    escaped = ows_psql_escape_string(o, pg_string->buf);
-    if (escaped) {
-          buffer_add_str(fe->sql, escaped);
-          free(escaped);
-    }
-    buffer_add_str(fe->sql, "'");
+  buffer_add_str(fe->sql, "'");
+  escaped = ows_psql_escape_string(o, pg_string->buf);
+  if (escaped) {
+    buffer_add_str(fe->sql, escaped);
+    free(escaped);
+  }
+  buffer_add_str(fe->sql, "'");
 
-    xmlFree(content);
-    xmlFree(wildcard);
-    xmlFree(singlechar);
-    xmlFree(escape);
-    buffer_free(pg_string);
+  xmlFree(content);
+  xmlFree(wildcard);
+  xmlFree(singlechar);
+  xmlFree(escape);
+  buffer_free(pg_string);
 
-    return fe->sql;
+  return fe->sql;
 }
 
 
@@ -220,18 +215,15 @@ static buffer *fe_property_is_like(ows * o, buffer * typename, filter_encoding *
  */
 static buffer *fe_property_is_null(ows * o, buffer * typename, filter_encoding * fe, xmlNodePtr n)
 {
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
+  assert(o && typename && fe && n);
 
-    n = n->children;
-    while (n->type != XML_ELEMENT_NODE) n = n->next; /* Jump to next element if spaces */
-    buffer_add(fe->sql, '"');
-    fe->sql = fe_property_name(o, typename, fe, fe->sql, n, false, true);
-    buffer_add_str(fe->sql, "\" isnull");
+  n = n->children;
+  while (n->type != XML_ELEMENT_NODE) n = n->next; /* eat spaces */
+  buffer_add(fe->sql, '"');
+  fe->sql = fe_property_name(o, typename, fe, fe->sql, n, false, true);
+  buffer_add_str(fe->sql, "\" isnull");
 
-    return fe->sql;
+  return fe->sql;
 }
 
 
@@ -240,50 +232,44 @@ static buffer *fe_property_is_null(ows * o, buffer * typename, filter_encoding *
  */
 static buffer *fe_property_is_between(ows * o, buffer * typename, filter_encoding * fe, xmlNodePtr n)
 {
-    buffer *tmp;
+  buffer *tmp;
 
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
+  assert(o && typename && fe && n);
 
-    tmp = buffer_init();
+  tmp = buffer_init();
 
-    n = n->children;
+  n = n->children;
 
-    /* jump to the next element if there are spaces */
-    while (n->type != XML_ELEMENT_NODE) n = n->next;
+  while (n->type != XML_ELEMENT_NODE) n = n->next;  /* eat spaces */
 
-    tmp = fe_expression(o, typename, fe, tmp, n);
+  tmp = fe_expression(o, typename, fe, tmp, n);
 
-    buffer_copy(fe->sql, tmp);
-    buffer_empty(tmp);
+  buffer_copy(fe->sql, tmp);
+  buffer_empty(tmp);
 
-    buffer_add_str(fe->sql, " Between ");
+  buffer_add_str(fe->sql, " Between ");
 
-    n = n->next;
+  n = n->next;
 
-    /* jump to the next element if there are spaces */
-    while (n->type != XML_ELEMENT_NODE) n = n->next;
+  while (n->type != XML_ELEMENT_NODE) n = n->next; /* eat spaces */
 
-    tmp = fe_expression(o, typename, fe, tmp, n->children);
+  tmp = fe_expression(o, typename, fe, tmp, n->children);
 
-    buffer_copy(fe->sql, tmp);
-    buffer_empty(tmp);
+  buffer_copy(fe->sql, tmp);
+  buffer_empty(tmp);
 
-    buffer_add_str(fe->sql, " And ");
+  buffer_add_str(fe->sql, " And ");
 
-    n = n->next;
+  n = n->next;
 
-    /* jump to the next element if there are spaces */
-    while (n->type != XML_ELEMENT_NODE) n = n->next;
+  while (n->type != XML_ELEMENT_NODE) n = n->next; /* eat spaces */
 
-    tmp = fe_expression(o, typename, fe, tmp, n->children);
+  tmp = fe_expression(o, typename, fe, tmp, n->children);
 
-    buffer_copy(fe->sql, tmp);
-    buffer_free(tmp);
+  buffer_copy(fe->sql, tmp);
+  buffer_free(tmp);
 
-    return fe->sql;
+  return fe->sql;
 }
 
 
@@ -292,59 +278,48 @@ static buffer *fe_property_is_between(ows * o, buffer * typename, filter_encodin
  */
 bool fe_is_comparison_op(char *name)
 {
-    assert(name);
-
-    /* case sensitive comparison because the gml standard specifies
-       strictly the name of the operator */
-    if (       !strcmp(name, "PropertyIsEqualTo")
-            || !strcmp(name, "PropertyIsNotEqualTo")
-            || !strcmp(name, "PropertyIsLessThan")
-            || !strcmp(name, "PropertyIsGreaterThan")
-            || !strcmp(name, "PropertyIsLessThanOrEqualTo")
-            || !strcmp(name, "PropertyIsGreaterThanOrEqualTo")
-            || !strcmp(name, "PropertyIsLike")
-            || !strcmp(name, "PropertyIsNull")
-            || !strcmp(name, "PropertyIsBetween"))
-        return true;
-
-    return false;
+  assert(name);
+
+  /* Case sensitive comparison as specified in GML standard */
+  if (    !strcmp(name, "PropertyIsEqualTo")
+       || !strcmp(name, "PropertyIsNotEqualTo")
+       || !strcmp(name, "PropertyIsLessThan")
+       || !strcmp(name, "PropertyIsGreaterThan")
+       || !strcmp(name, "PropertyIsLessThanOrEqualTo")
+       || !strcmp(name, "PropertyIsGreaterThanOrEqualTo")
+       || !strcmp(name, "PropertyIsLike")
+       || !strcmp(name, "PropertyIsNull")
+       || !strcmp(name, "PropertyIsBetween"))
+    return true;
+
+  return false;
 }
 
 
 /*
- * Execute the matching function
- * Warning : before calling this function,
- * Check if n->name is a comparison operator with fe_is_comparison_op()
+ * Execute the matching comparison function
+ * CAUTION : call fe_is_comparison_op before calling this function,
  */
 buffer *fe_comparison_op(ows * o, buffer * typename, filter_encoding * fe, xmlNodePtr n)
 {
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-
-    /* case sensitive comparison because the gml standard specifies
-       strictly the name of the operator */
-    if (    !strcmp((char *) n->name, "PropertyIsEqualTo")
-         || !strcmp((char *) n->name, "PropertyIsNotEqualTo")
-         || !strcmp((char *) n->name, "PropertyIsLessThan")
-         || !strcmp((char *) n->name, "PropertyIsGreaterThan")
-         || !strcmp((char *) n->name, "PropertyIsLessThanOrEqualTo")
-         || !strcmp((char *) n->name, "PropertyIsGreaterThanOrEqualTo"))
-        fe->sql = fe_binary_comparison_op(o, typename, fe, n);
-    else if (!strcmp((char *) n->name, "PropertyIsLike"))
-        fe->sql = fe_property_is_like(o, typename, fe, n);
-    else if (!strcmp((char *) n->name, "PropertyIsNull"))
-        fe->sql = fe_property_is_null(o, typename, fe, n);
-    else if (!strcmp((char *) n->name, "PropertyIsBetween"))
-        fe->sql = fe_property_is_between(o, typename, fe, n);
-    else
-        fe->error_code = FE_ERROR_FILTER;
-
-    return fe->sql;
+  assert(o && typename && fe && n);
+
+  /* Case sensitive comparison as specified in GML standard */
+  if (    !strcmp((char *) n->name, "PropertyIsEqualTo")
+       || !strcmp((char *) n->name, "PropertyIsNotEqualTo")
+       || !strcmp((char *) n->name, "PropertyIsLessThan")
+       || !strcmp((char *) n->name, "PropertyIsGreaterThan")
+       || !strcmp((char *) n->name, "PropertyIsLessThanOrEqualTo")
+       || !strcmp((char *) n->name, "PropertyIsGreaterThanOrEqualTo"))
+    fe->sql = fe_binary_comparison_op(o, typename, fe, n);
+  else if (!strcmp((char *) n->name, "PropertyIsLike"))
+    fe->sql = fe_property_is_like(o, typename, fe, n);
+  else if (!strcmp((char *) n->name, "PropertyIsNull"))
+    fe->sql = fe_property_is_null(o, typename, fe, n);
+  else if (!strcmp((char *) n->name, "PropertyIsBetween"))
+    fe->sql = fe_property_is_between(o, typename, fe, n);
+  else
+    fe->error_code = FE_ERROR_FILTER;
+
+  return fe->sql;
 }
-
-
-/*
- * vim: expandtab sw=4 ts=4
- */
diff --git a/src/fe/fe_error.c b/src/fe/fe_error.c
index 7d39a9f..c7ddabb 100644
--- a/src/fe/fe_error.c
+++ b/src/fe/fe_error.c
@@ -33,43 +33,43 @@
  */
 void fe_error(ows * o, filter_encoding * fe)
 {
-    assert(o);
-    assert(fe);
-
-    if (fe->error_code == FE_ERROR_FEATUREID) {
-        filter_encoding_free(fe);
-        ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "Featureid must match layer.id", "FILTER");
-    } else if (fe->error_code == FE_ERROR_FILTER) {
-        filter_encoding_free(fe);
-        ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "Filter parameter doesn't validate WFS Schema", "FILTER");
-    } else if (fe->error_code == FE_ERROR_BBOX) {
-        filter_encoding_free(fe);
-        ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "Bbox must match xmin,ymin,xmax,ymax", "FILTER");
-    } else if (fe->error_code == FE_ERROR_PROPERTYNAME) {
-        filter_encoding_free(fe);
-        ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "PropertyName not available", "FILTER");
-    } else if (fe->error_code == FE_ERROR_GEOM_PROPERTYNAME) {
-        filter_encoding_free(fe);
-        ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "Geometry PropertyName not available", "FILTER");
-    } else if (fe->error_code == FE_ERROR_UNITS) {
-        filter_encoding_free(fe);
-        ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "Units not supported, use 'meters' or 'kilometers'", "FILTER");
-    } else if (fe->error_code == FE_ERROR_GEOMETRY) {
-        filter_encoding_free(fe);
-        ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "Bad geometry", "FILTER");
-    } else if (fe->error_code == FE_ERROR_FID) {
-        filter_encoding_free(fe);
-        ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "Only one allowed at once among FeatureId and GmlObjectId)", "FILTER");
-    } else if (fe->error_code == FE_ERROR_SRS) {
-        filter_encoding_free(fe);
-        ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "SrsName isn't valid", "FILTER");
-    } else if (fe->error_code == FE_ERROR_FUNCTION) {
-        filter_encoding_free(fe);
-        ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "Unknown Function Name used in Filter", "FILTER");
-    } else if (fe->error_code == FE_ERROR_NAMESPACE) {
-        filter_encoding_free(fe);
-        ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "Filter Element contains incoherent XML Namespaces", "FILTER");
-    }
+  assert(o);
+  assert(fe);
+
+  if (fe->error_code == FE_ERROR_FEATUREID) {
+    filter_encoding_free(fe);
+    ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "Featureid must match layer.id", "FILTER");
+  } else if (fe->error_code == FE_ERROR_FILTER) {
+    filter_encoding_free(fe);
+    ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "Filter parameter doesn't validate WFS Schema", "FILTER");
+  } else if (fe->error_code == FE_ERROR_BBOX) {
+    filter_encoding_free(fe);
+    ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "Bbox must match xmin,ymin,xmax,ymax", "FILTER");
+  } else if (fe->error_code == FE_ERROR_PROPERTYNAME) {
+    filter_encoding_free(fe);
+    ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "PropertyName not available", "FILTER");
+  } else if (fe->error_code == FE_ERROR_GEOM_PROPERTYNAME) {
+    filter_encoding_free(fe);
+    ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "Geometry PropertyName not available", "FILTER");
+  } else if (fe->error_code == FE_ERROR_UNITS) {
+    filter_encoding_free(fe);
+    ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "Units not supported, use 'meters' or 'kilometers'", "FILTER");
+  } else if (fe->error_code == FE_ERROR_GEOMETRY) {
+    filter_encoding_free(fe);
+    ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "Bad geometry", "FILTER");
+  } else if (fe->error_code == FE_ERROR_FID) {
+    filter_encoding_free(fe);
+    ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "Only one allowed at once among FeatureId and GmlObjectId)", "FILTER");
+  } else if (fe->error_code == FE_ERROR_SRS) {
+    filter_encoding_free(fe);
+    ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "SrsName isn't valid", "FILTER");
+  } else if (fe->error_code == FE_ERROR_FUNCTION) {
+    filter_encoding_free(fe);
+    ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "Unknown Function Name used in Filter", "FILTER");
+  } else if (fe->error_code == FE_ERROR_NAMESPACE) {
+    filter_encoding_free(fe);
+    ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "Filter Element contains incoherent XML Namespaces", "FILTER");
+  }
 }
 
 
@@ -78,33 +78,33 @@ void fe_error(ows * o, filter_encoding * fe)
  */
 buffer *fill_fe_error(ows * o, filter_encoding * fe)
 {
-    buffer *result;
-
-    assert(o);
-    assert(fe);
-
-    result = buffer_init();
-
-    if (fe->error_code == FE_ERROR_FEATUREID)
-        buffer_add_str(result, "Featureid must match layer.id");
-    else if (fe->error_code == FE_ERROR_FILTER)
-        buffer_add_str(result, "Filter parameter doesn't validate the filter.xsd schema. Check your xml");
-    else if (fe->error_code == FE_ERROR_BBOX)
-        buffer_add_str(result, "Bbox must match xmin,ymin,xmax,ymax");
-    else if (fe->error_code == FE_ERROR_PROPERTYNAME)
-        buffer_add_str(result, "PropertyName not available");
-    else if (fe->error_code == FE_ERROR_GEOM_PROPERTYNAME)
-        buffer_add_str(result, "Geometry PropertyName not available");
-    else if (fe->error_code == FE_ERROR_UNITS)
-        buffer_add_str(result, "Units not supported, use 'meters' or 'kilometers'");
-    else if (fe->error_code == FE_ERROR_GEOMETRY)
-        buffer_add_str(result, "Bad geometry");
-    else if (fe->error_code == FE_ERROR_FID)
-        buffer_add_str(result, "Only one type of identifier allowed (FeatureId or GmlObjectId)");
-    else if (fe->error_code == FE_ERROR_SRS)
-        buffer_add_str(result, "SrsName isn't valid");
-
-    return result;
+  buffer *result;
+
+  assert(o);
+  assert(fe);
+
+  result = buffer_init();
+
+  if (fe->error_code == FE_ERROR_FEATUREID)
+    buffer_add_str(result, "Featureid must match layer.id");
+  else if (fe->error_code == FE_ERROR_FILTER)
+    buffer_add_str(result, "Filter parameter doesn't validate the filter.xsd schema. Check your xml");
+  else if (fe->error_code == FE_ERROR_BBOX)
+    buffer_add_str(result, "Bbox must match xmin,ymin,xmax,ymax");
+  else if (fe->error_code == FE_ERROR_PROPERTYNAME)
+    buffer_add_str(result, "PropertyName not available");
+  else if (fe->error_code == FE_ERROR_GEOM_PROPERTYNAME)
+    buffer_add_str(result, "Geometry PropertyName not available");
+  else if (fe->error_code == FE_ERROR_UNITS)
+    buffer_add_str(result, "Units not supported, use 'meters' or 'kilometers'");
+  else if (fe->error_code == FE_ERROR_GEOMETRY)
+    buffer_add_str(result, "Bad geometry");
+  else if (fe->error_code == FE_ERROR_FID)
+    buffer_add_str(result, "Only one type of identifier allowed (FeatureId or GmlObjectId)");
+  else if (fe->error_code == FE_ERROR_SRS)
+    buffer_add_str(result, "SrsName isn't valid");
+
+  return result;
 }
 
 
diff --git a/src/fe/fe_filter.c b/src/fe/fe_filter.c
index 5ffd9b0..e11394c 100644
--- a/src/fe/fe_filter.c
+++ b/src/fe/fe_filter.c
@@ -34,16 +34,17 @@
  */
 filter_encoding *filter_encoding_init()
 {
-    filter_encoding *fe;
+  filter_encoding *fe;
 
-    fe = malloc(sizeof(filter_encoding));
-    assert(fe);
+  fe = malloc(sizeof(filter_encoding));
+  assert(fe);
 
-    fe->sql = buffer_init();
-    fe->error_code = FE_NO_ERROR;
-    fe->in_not = 0;
+  fe->sql = buffer_init();
+  fe->error_code = FE_NO_ERROR;
+  fe->in_not = false;
+  fe->is_numeric = false;
 
-    return fe;
+  return fe;
 }
 
 
@@ -52,11 +53,11 @@ filter_encoding *filter_encoding_init()
  */
 void filter_encoding_free(filter_encoding * fe)
 {
-    assert(fe);
+  assert(fe);
 
-    buffer_free(fe->sql);
-    free(fe);
-    fe = NULL;
+  buffer_free(fe->sql);
+  free(fe);
+  fe = NULL;
 }
 
 
@@ -66,18 +67,18 @@ void filter_encoding_free(filter_encoding * fe)
  */
 void filter_encoding_flush(filter_encoding * fe, FILE * output)
 {
-    assert(fe);
-    assert(output);
+  assert(fe);
+  assert(output);
 
-    fprintf(output, "[\n");
+  fprintf(output, "[\n");
 
-    if (fe->sql) {
-        fprintf(output, "sql -> ");
-        buffer_flush(fe->sql, output);
-        fprintf(output, "\n");
-    }
+  if (fe->sql) {
+    fprintf(output, "sql -> ");
+    buffer_flush(fe->sql, output);
+    fprintf(output, "\n");
+  }
 
-    fprintf(output, " error code -> %d\n]\n", fe->error_code);
+  fprintf(output, " error code -> %d\n]\n", fe->error_code);
 }
 
 
@@ -86,27 +87,27 @@ void filter_encoding_flush(filter_encoding * fe, FILE * output)
  */
 void fe_node_flush(xmlNodePtr node, FILE * output)
 {
-    xmlNodePtr n;
-    xmlAttr *att;
-    xmlChar *content = NULL;
+  xmlNodePtr n;
+  xmlAttr *att;
+  xmlChar *content = NULL;
 
-    assert(node);
-    assert(output);
+  assert(node);
+  assert(output);
 
-    if (node->type == XML_ELEMENT_NODE) {
-        for (n = node; n; n = n->next) {
-            fprintf(output, "name:%s\n", n->name);
+  if (node->type == XML_ELEMENT_NODE) {
+    for (n = node; n; n = n->next) {
+      fprintf(output, "name:%s\n", n->name);
 
-            for (att = n->properties; att ; att = att->next)
-                fprintf(output, "%s=%s\n", att->name, (char *) xmlNodeGetContent(att->children));
+      for (att = n->properties; att ; att = att->next)
+        fprintf(output, "%s=%s\n", att->name, (char *) xmlNodeGetContent(att->children));
 
-            if (n->children) fe_node_flush(n->children, output);
-        }
-    } else if ((node->type == XML_CDATA_SECTION_NODE) || (node->type == XML_TEXT_NODE)) {
-        content = xmlNodeGetContent(node);
-        fprintf(output, "%s\n", content);
-        xmlFree(content);
+      if (n->children) fe_node_flush(n->children, output);
     }
+  } else if ((node->type == XML_CDATA_SECTION_NODE) || (node->type == XML_TEXT_NODE)) {
+    content = xmlNodeGetContent(node);
+    fprintf(output, "%s\n", content);
+    xmlFree(content);
+  }
 }
 #endif
 
@@ -117,80 +118,65 @@ void fe_node_flush(xmlNodePtr node, FILE * output)
  */
 buffer * fe_expression(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n)
 {
-    char *escaped;
-    xmlChar *content;
-    bool isstring = false;
-
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(sql);
-
-    if (!n) return sql;
-    if (!strcmp((char *) n->name, "Function")) return fe_function(o, typename, fe, sql, n);
-
-    /* Open a bracket when there is a 'grandchildren' elements */
-    if (n->children) {
-             if (n->children->type == XML_ELEMENT_NODE && n->children->children) buffer_add_str(sql, "(");
-        else if (n->children->next && (n->children->next->children)) buffer_add_str(sql, "(");
+  char *escaped;
+  xmlChar *content;
+
+  assert(o && typename && fe && sql);
+
+  if (!n) return sql;
+  if (!strcmp((char *) n->name, "Function")) return fe_function(o, typename, fe, sql, n);
+
+  /* Open a bracket when there is a 'grandchildren' elements */
+  if (n->children) {
+    if (n->children->type == XML_ELEMENT_NODE && n->children->children) buffer_add_str(sql, "(");
+    else if (n->children->next && (n->children->next->children)) buffer_add_str(sql, "(");
+  }
+
+  /* Eval the left part of the expression */
+  sql = fe_expression(o, typename, fe, sql, n->children);
+
+  content = xmlNodeGetContent(n);
+
+  /* Order here is meaningfull (i.e Arithmetic then PropertyName then Literal) */
+       if (!strcmp((char *) n->name, "Add")) buffer_add_str(sql, " + ");
+  else if (!strcmp((char *) n->name, "Sub")) buffer_add_str(sql, " - ");
+  else if (!strcmp((char *) n->name, "Mul")) buffer_add_str(sql, " * ");
+  else if (!strcmp((char *) n->name, "Div")) buffer_add_str(sql, " / ");
+  else if (!strcmp((char *) n->name, "PropertyName")) {
+    buffer_add(sql, '"');
+    sql = fe_property_name(o, typename, fe, sql, n, false, true);
+    buffer_add(sql, '"');
+  } else if (!strcmp((char *) n->name, "Literal")) {
+    if (!fe->is_numeric) buffer_add_str(sql, "'");
+    escaped = ows_psql_escape_string(o, (char *) content);
+    if (escaped) {
+      buffer_add_str(sql, escaped);
+      free(escaped);
     }
+    if (!fe->is_numeric) buffer_add_str(sql, "'");
+  } else if (n->type != XML_ELEMENT_NODE) {
+    sql = fe_expression(o, typename, fe, sql, n->next);
+  }
 
-    /* Eval the left part of the expression */
-    sql = fe_expression(o, typename, fe, sql, n->children);
-
-    content = xmlNodeGetContent(n);
-
-         if (!strcmp((char *) n->name, "Add")) buffer_add_str(sql, " + ");
-    else if (!strcmp((char *) n->name, "Sub")) buffer_add_str(sql, " - ");
-    else if (!strcmp((char *) n->name, "Mul")) buffer_add_str(sql, " * ");
-    else if (!strcmp((char *) n->name, "Div")) buffer_add_str(sql, " / ");
-    else if (!strcmp((char *) n->name, "Literal")) {
-
-        /* Strings must be written in quotation marks */
-        if (check_regexp((char *) content, "^[[:space:]]+$") == 1) {
-            buffer_add_str(sql, "''");      /* empty string */
-
-        } else {
-          if (!check_regexp((char *)content, "^[-+]?[0-9]*\\.?[0-9]+$")){
-              isstring = true;
-              buffer_add_str(sql, "'");
-          }
-
-          escaped = ows_psql_escape_string(o, (char *) content);
-          if (escaped) {
-              buffer_add_str(sql, escaped);
-              free(escaped);
-          }
-          if (isstring) buffer_add_str(sql, "'");
-        }
+  xmlFree(content);
 
-    } else if (!strcmp((char *) n->name, "PropertyName")) {
-        buffer_add(sql, '"');
-        sql = fe_property_name(o, typename, fe, sql, n, false, true);
-        buffer_add(sql, '"');
-    } else if (n->type != XML_ELEMENT_NODE) {
-        sql = fe_expression(o, typename, fe, sql, n->next);
-    }
+  /* Eval the right part of the expression */
+  if (n->children && n->children->next) {
+    if (n->children->type == XML_ELEMENT_NODE && n->children->next->type == XML_ELEMENT_NODE)
+      sql = fe_expression(o, typename, fe, sql, n->children->next);
+    else sql = fe_expression(o, typename, fe, sql, n->children->next->next);
 
-    xmlFree(content);
+    content = xmlNodeGetContent(n->children->next);
 
-    /* Eval the right part of the expression */
-    if (n->children && n->children->next) {
-        if (n->children->type == XML_ELEMENT_NODE && n->children->next->type == XML_ELEMENT_NODE)
-             sql = fe_expression(o, typename, fe, sql, n->children->next);
-        else sql = fe_expression(o, typename, fe, sql, n->children->next->next);
+    /* If children element is empty */
+         if (check_regexp((char *) content, "^$") == 1) buffer_add_str(sql, "''");
+    /* Close a bracket when there are not empty children elements */
+    else if (check_regexp((char *) content, " +") != 1) buffer_add_str(sql, ")");
 
-        content = xmlNodeGetContent(n->children->next);
-
-        /* If children element is empty */
-        if (check_regexp((char *) content, "^$") == 1) buffer_add_str(sql, "''");
-        /* Close a bracket when there are not empty children elements */
-        else if (check_regexp((char *) content, " +") != 1) buffer_add_str(sql, ")");
-
-        xmlFree(content);
-    }
+    xmlFree(content);
+  }
 
-    return sql;
+  return sql;
 }
 
 
@@ -199,80 +185,76 @@ buffer * fe_expression(ows * o, buffer * typename, filter_encoding * fe, buffer
  */
 buffer *fe_xpath_property_name(ows * o, buffer * typename, buffer * property)
 {
-    buffer *prop_name;
+  buffer *prop_name;
 
-    assert(o);
-    assert(typename);
-    assert(property);
+  assert(o && typename && property);
 
-    if (check_regexp(property->buf, "\\*\\[position")) buffer_shift(property, 13); /* Remove '*[position()=' */
-    else buffer_shift(property, 2); /* Remove '*[' */
-    buffer_pop(property, 1);        /* Remove ']' */
+  if (check_regexp(property->buf, "\\*\\[position")) buffer_shift(property, 13); /* Remove '*[position()=' */
+  else buffer_shift(property, 2); /* Remove '*[' */
+  buffer_pop(property, 1);        /* Remove ']' */
 
-    /* Retrieve the matching column name from the number of the column */
-    prop_name = ows_psql_column_name(o, typename, atoi(property->buf));
-    buffer_empty(property);
-    buffer_copy(property, prop_name);
+  /* Retrieve the matching column name from the number of the column */
+  prop_name = ows_psql_column_name(o, typename, atoi(property->buf));
+  buffer_empty(property);
+  buffer_copy(property, prop_name);
 
-    buffer_free(prop_name);
+  buffer_free(prop_name);
 
-    return property;
+  return property;
 }
 
 
 /*
  * Check if propertyName is valid and return the appropriate string
  */
-buffer *fe_property_name(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n, 
-                         bool check_geom_column, bool mandatory)
+buffer *fe_property_name(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n, bool check_geom_column, bool mandatory)
 {
-    xmlChar *content;
-    array *prop_table;
-    buffer *tmp;
-    list *l;
-
-    assert(o);
-    assert(typename);
-    assert(n);
-    assert(fe);
-    assert(sql);
-
-    while (n->type != XML_ELEMENT_NODE) n = n->next;       /* Jump to the next element if there are spaces */
-
-    prop_table = ows_psql_describe_table(o, typename);
-    assert(prop_table); /* FIXME to remove */
-
-    content = xmlNodeGetContent(n);
-    tmp = buffer_from_str((char *) content);
-
-    /* Check if propertyname is an Xpath expression */
-    if (check_regexp(tmp->buf, "\\*\\[")) tmp = fe_xpath_property_name(o, typename, tmp);
-   
-    /* If propertyname have an Xpath suffix */
-    /* FIXME i just can't understand meaning of this use case */
-    if (check_regexp(tmp->buf, ".*\\[[0-9]+\\]")) 
-    {
-	l = list_explode('[', tmp);
-	buffer_empty(tmp);
-	buffer_copy(tmp, l->first->value);
-	list_free(l);
-    }
-
-    /* Remove namespaces */
-    tmp = wfs_request_remove_namespaces(o, tmp);
-
-    /* Check if propertyname is available */
-    if (array_is_key(prop_table, tmp->buf)) {
-        buffer_copy(sql, tmp);
-    } else if (mandatory) fe->error_code = FE_ERROR_PROPERTYNAME;
-
-    if (mandatory && check_geom_column && !ows_psql_is_geometry_column(o, typename, tmp))
-        fe->error_code = FE_ERROR_GEOM_PROPERTYNAME;
-
-    buffer_free(tmp);
-    xmlFree(content);
-
-    return sql;
+  xmlChar *content;
+  array *prop_table;
+  buffer *tmp, *layer_name;
+  list *l, *ll;
+
+  assert(o && typename && n && fe && sql);
+
+  while (n->type != XML_ELEMENT_NODE) n = n->next; /* eat spaces */
+
+  layer_name = ows_layer_prefix_to_uri(o->layers, typename);
+  prop_table = ows_psql_describe_table(o, layer_name);
+  assert(prop_table); /* should never happens as Typename checked previsously */
+
+  content = xmlNodeGetContent(n);
+  tmp = buffer_from_str((char *) content);
+  /* Check if propertyname is an Xpath expression */
+  if (check_regexp(tmp->buf, "\\*\\[")) tmp = fe_xpath_property_name(o, typename, tmp);
+
+  /* If propertyname have an Xpath suffix */
+  /* FIXME i just can't understand meaning of this use case */
+  if (check_regexp(tmp->buf, ".*\\[[0-9]+\\]")) {
+    l = list_explode('[', tmp);
+    buffer_empty(tmp);
+    buffer_copy(tmp, l->first->value);
+    list_free(l);
+  }
+
+  /* Check if propertyname is available */
+  ll = list_init();
+  list_add_by_copy(ll, layer_name);
+  tmp = wfs_request_remove_prop_ns_prefix(o, tmp, ll);
+  list_free(ll);
+
+  if (array_is_key(prop_table, tmp->buf)) {
+    buffer_copy(sql, tmp);
+    fe->is_numeric = ows_psql_is_numeric(array_get(prop_table, tmp->buf));
+    if (buffer_cmp(tmp, "intProperty")) fe->is_numeric = true;
+  } else if (mandatory) fe->error_code = FE_ERROR_PROPERTYNAME;
+
+  if (mandatory && check_geom_column && !ows_psql_is_geometry_column(o, layer_name, tmp))
+    fe->error_code = FE_ERROR_GEOM_PROPERTYNAME;
+
+  buffer_free(tmp);
+  xmlFree(content);
+
+  return sql;
 }
 
 
@@ -281,86 +263,85 @@ buffer *fe_property_name(ows * o, buffer * typename, filter_encoding * fe, buffe
  */
 buffer *fe_feature_id(ows * o, buffer * typename, filter_encoding * fe, xmlNodePtr n)
 {
-    char *escaped;
-    list *fe_list;
-    bool feature_id, gid;
-    xmlChar *fid = NULL;
-    buffer *buf_fid, *id_name = NULL;
-
-    assert(o);
-    assert(typename);
-    assert(n);
-    assert(fe);
-
-    for (feature_id = gid = false ; n ; n = n->next) {
-        if (n->type == XML_ELEMENT_NODE) {
-            buf_fid = buffer_init();
-
-            /* retrieve the property fid */
-            if (!strcmp((char *) n->name, "FeatureId")) {
-                feature_id = true;
-
-                /* only one type of identifier element must be included */
-                if (!gid) fid = xmlGetProp(n, (xmlChar *) "fid");
-                else {
-                    fe->error_code = FE_ERROR_FID;
-                    buffer_free(buf_fid);
-                    return fe->sql;
-                }
-            }
-
-            /* retrieve the property gml:id */
-            if (!strcmp((char *) n->name, "GmlObjectId")) {
-                gid = true;
-
-                /* only one type of identifier element must be included */
-                if (feature_id == false) fid = xmlGetProp(n, (xmlChar *) "id");
-                else {
-                    fe->error_code = FE_ERROR_FID;
-                    buffer_free(buf_fid);
-                    return fe->sql;
-                }
-            }
-            buffer_add_str(buf_fid, (char *) fid);
-            fe_list = list_explode('.', buf_fid);
-            xmlFree(fid);
-
-            /* Check if the layer_name match the typename queried */
-            if (fe_list->first && !buffer_cmp(fe_list->first->value, typename->buf)) {
-                buffer_add_str(fe->sql, " FALSE"); /* We still execute the query */
-                list_free(fe_list);
-                buffer_free(buf_fid);
-                continue;
-            }
-
-            /* If there is no id column, raise an error */
-            id_name = ows_psql_id_column(o, typename);
-            if (!id_name || !id_name->use) {
-                fe->error_code = FE_ERROR_FEATUREID;
-                list_free(fe_list);
-                buffer_free(buf_fid);
-                return fe->sql;
-            }
-
-            buffer_copy(fe->sql, id_name);
-            buffer_add_str(fe->sql, " = \'");
-	    if (fe_list->last) escaped = ows_psql_escape_string(o, fe_list->last->value->buf);
-            else               escaped = ows_psql_escape_string(o, buf_fid->buf);
-            
-            if (escaped) {
-                buffer_add_str(fe->sql, escaped);
-                free(escaped);
-            }
-
-            buffer_add_str(fe->sql, "\'");
-            list_free(fe_list);
-            buffer_free(buf_fid);
+  char *escaped;
+  list *fe_list;
+  bool feature_id, gid;
+  xmlChar *fid = NULL;
+  buffer *buf_fid, *id_name = NULL;
+
+  assert(o && typename && n && fe);
+
+  for (feature_id = gid = false ; n ; n = n->next) {
+    if (n->type == XML_ELEMENT_NODE) {
+      buf_fid = buffer_init();
+
+      /* retrieve the property fid */
+      if (!strcmp((char *) n->name, "FeatureId")) {
+        feature_id = true;
+
+        /* only one type of identifier element must be included */
+        if (!gid) fid = xmlGetProp(n, (xmlChar *) "fid");
+        else {
+          fe->error_code = FE_ERROR_FID;
+          buffer_free(buf_fid);
+          return fe->sql;
         }
-
-        if (n->next && n->next->type == XML_ELEMENT_NODE) buffer_add_str(fe->sql, " OR ");
+      }
+
+      /* retrieve the property gml:id */
+      if (!strcmp((char *) n->name, "GmlObjectId")) {
+        gid = true;
+
+        /* only one type of identifier element must be included */
+        if (feature_id == false) fid = xmlGetProp(n, (xmlChar *) "id");
+        else {
+          fe->error_code = FE_ERROR_FID;
+          buffer_free(buf_fid);
+          return fe->sql;
+        }
+      }
+      buffer_add_str(buf_fid, (char *) fid);
+      fe_list = list_explode('.', buf_fid);
+      xmlFree(fid);
+
+      /* Check if the layer_name match the typename queried */
+      if (fe_list->first && !buffer_cmp(fe_list->first->value, 
+          (ows_layer_no_uri(o->layers, 
+           ows_layer_prefix_to_uri(o->layers, typename)))->buf)) {
+        buffer_add_str(fe->sql, " FALSE"); /* We still execute the query */
+        list_free(fe_list);
+        buffer_free(buf_fid);
+        continue;
+      }
+
+      /* If there is no id column, raise an error */
+      id_name = ows_psql_id_column(o, ows_layer_prefix_to_uri(o->layers, typename));
+      if (!id_name || !id_name->use) {
+        fe->error_code = FE_ERROR_FEATUREID;
+        list_free(fe_list);
+        buffer_free(buf_fid);
+        return fe->sql;
+      }
+
+      buffer_copy(fe->sql, id_name);
+      buffer_add_str(fe->sql, " = \'");
+      if (fe_list->last) escaped = ows_psql_escape_string(o, fe_list->last->value->buf);
+      else               escaped = ows_psql_escape_string(o, buf_fid->buf);
+
+      if (escaped) {
+        buffer_add_str(fe->sql, escaped);
+        free(escaped);
+      }
+
+      buffer_add_str(fe->sql, "\'");
+      list_free(fe_list);
+      buffer_free(buf_fid);
     }
 
-    return fe->sql;
+    if (n->next && n->next->type == XML_ELEMENT_NODE) buffer_add_str(fe->sql, " OR ");
+  }
+
+  return fe->sql;
 }
 
 
@@ -371,68 +352,65 @@ buffer *fe_feature_id(ows * o, buffer * typename, filter_encoding * fe, xmlNodeP
  */
 filter_encoding *fe_filter(ows * o, filter_encoding * fe, buffer * typename, buffer * xmlchar)
 {
-    buffer * schema_path;
-    xmlDocPtr xmldoc;
-    xmlNodePtr n;
-    int ret = -1;
-
-    assert(o);
-    assert(fe);
-    assert(typename);
-    assert(xmlchar);
-
-    /* No validation if Filter came from KVP method 
-       FIXME: really, but why ?                     */
-    if (o->check_schema && o->request->method == OWS_METHOD_XML) {
-        schema_path = buffer_init();
-        buffer_copy(schema_path, o->schema_dir);
-
-        if (ows_version_get(o->request->version) == 100) {
-            buffer_add_str(schema_path, WFS_SCHEMA_100);
-	    ret = ows_schema_validation(o, schema_path, xmlchar, true, WFS_SCHEMA_TYPE_100);
-	} else { 
-	    buffer_add_str(schema_path, WFS_SCHEMA_110);
-	    ret = ows_schema_validation(o, schema_path, xmlchar, true, WFS_SCHEMA_TYPE_110);
-	}
-
-        if (ret != 0) {
-            buffer_free(schema_path);
-            fe->error_code = FE_ERROR_FILTER;
-            return fe;
-        }
+  buffer * schema_path;
+  xmlDocPtr xmldoc;
+  xmlNodePtr n;
+  int ret = -1;
+
+  assert(o && fe && typename && xmlchar);
+
+  /* No validation if Filter came from KVP method
+     FIXME: really, but why ?                     */
+  if (o->check_schema && o->request->method == OWS_METHOD_XML) {
+    schema_path = buffer_init();
+    buffer_copy(schema_path, o->schema_dir);
+
+    if (ows_version_get(o->request->version) == 100) {
+      buffer_add_str(schema_path, WFS_SCHEMA_100);
+      ret = ows_schema_validation(o, schema_path, xmlchar, true, WFS_SCHEMA_TYPE_100);
+    } else {
+      buffer_add_str(schema_path, WFS_SCHEMA_110);
+      ret = ows_schema_validation(o, schema_path, xmlchar, true, WFS_SCHEMA_TYPE_110);
+    }
 
-        buffer_free(schema_path);
+    if (ret != 0) {
+      buffer_free(schema_path);
+      fe->error_code = FE_ERROR_FILTER;
+      return fe;
     }
 
-    xmldoc = xmlParseMemory(xmlchar->buf, xmlchar->use);
+    buffer_free(schema_path);
+  }
 
-    if (!xmldoc) {
-        fe->error_code = FE_ERROR_FILTER;
-        xmlFreeDoc(xmldoc);
-        return fe;
-    }
+  xmldoc = xmlParseMemory(xmlchar->buf, xmlchar->use);
 
-    if (!ows_libxml_check_namespace(o, xmldoc->children)) {
-        fe->error_code = FE_ERROR_NAMESPACE;
-        xmlFreeDoc(xmldoc);
-        return fe;
-    }
+  if (!xmldoc) {
+    fe->error_code = FE_ERROR_FILTER;
+    xmlFreeDoc(xmldoc);
+    return fe;
+  }
 
-    n = xmldoc->children->children;
+  if (!ows_libxml_check_namespace(o, xmldoc->children)) {
+    fe->error_code = FE_ERROR_NAMESPACE;
+    xmlFreeDoc(xmldoc);
+    return fe;
+  }
 
-    /* jump to the next element if there are spaces */
-    while (n->type != XML_ELEMENT_NODE) n = n->next;
+  n = xmldoc->children->children;
 
-         if (fe_is_comparison_op((char *) n->name))  fe->sql = fe_comparison_op(o, typename, fe, n);
-         if (fe_is_spatial_op((char *) n->name))     fe->sql = fe_spatial_op(o, typename, fe, n);
-         if (fe_is_logical_op((char *) n->name))     fe->sql = fe_logical_op(o, typename, fe, n);
-         if (!strcmp((char *) n->name, "FeatureId")) fe->sql = fe_feature_id(o, typename, fe, n);
-    else if (!strcmp((char *) n->name, "GmlObjectId") && ows_version_get(o->request->version) == 110)
-        fe->sql = fe_feature_id(o, typename, fe, n); /* FIXME Is FeatureId should really have priority ? */
+  /* jump to the next element if there are spaces */
+  while (n->type != XML_ELEMENT_NODE) n = n->next;
 
-    xmlFreeDoc(xmldoc);
+  if (fe_is_comparison_op((char *) n->name))  fe->sql = fe_comparison_op(o, typename, fe, n);
+  if (fe_is_spatial_op((char *) n->name))     fe->sql = fe_spatial_op(o, typename, fe, n);
+  if (fe_is_logical_op((char *) n->name))     fe->sql = fe_logical_op(o, typename, fe, n);
+  if (!strcmp((char *) n->name, "FeatureId")) fe->sql = fe_feature_id(o, typename, fe, n);
+  else if (!strcmp((char *) n->name, "GmlObjectId") && ows_version_get(o->request->version) == 110)
+    fe->sql = fe_feature_id(o, typename, fe, n); /* FIXME Is FeatureId should really have priority ? */
 
-    return fe;
+  xmlFreeDoc(xmldoc);
+
+  return fe;
 }
 
 
@@ -441,75 +419,72 @@ filter_encoding *fe_filter(ows * o, filter_encoding * fe, buffer * typename, buf
  */
 buffer *fe_kvp_bbox(ows * o, wfs_request * wr, buffer * layer_name, ows_bbox * bbox)
 {
-    buffer *where;
-    list *geom;
-    list_node *ln;
-    int srid = -1;
-    bool transform = false;
-
-    assert(o);
-    assert(wr);
-    assert(layer_name);
-    assert(bbox);
-
-    where = buffer_init();
-    geom = ows_psql_geometry_column(o, layer_name);
-    buffer_add_str(where, " WHERE");
-
-    if (wr->srs) { 
-       srid = ows_srs_get_srid_from_layer(o, layer_name);
-       transform = true; 
-    }
-    /* BBOX optional crsuri parameter since WFS 1.1 */
-    if (wr->bbox->srs && (wr->bbox->srs->srid != wr->srs->srid)) {
-       srid = wr->srs->srid;
-       transform = true; 
+  buffer *where;
+  list *geom;
+  list_node *ln;
+  int srid = -1;
+  bool transform = false;
+
+  assert(o && wr && layer_name && bbox);
+
+  where = buffer_init();
+  geom = ows_psql_geometry_column(o, layer_name);
+  buffer_add_str(where, " WHERE");
+
+  if (wr->srs) {
+    srid = ows_srs_get_srid_from_layer(o, layer_name);
+    transform = true;
+  }
+  /* BBOX optional crsuri parameter since WFS 1.1 */
+  if (wr->bbox->srs && (wr->bbox->srs->srid != wr->srs->srid)) {
+    srid = wr->srs->srid;
+    transform = true;
+  }
+
+  for (ln = geom->first ; ln ; ln = ln->next) {
+
+    /* We use _ST_Intersects and && operator rather than ST_Intersects for performances issues */
+    buffer_add_str(where, " (_ST_Intersects(");
+    if (transform) buffer_add_str(where, "ST_Transform(");
+    buffer_add_str(where, "\"");
+    buffer_copy(where, ln->value);
+    buffer_add_str(where, "\",");
+    if (transform) {
+      buffer_add_int(where, srid);
+      buffer_add_str(where, "),");
     }
 
-    for (ln = geom->first ; ln ; ln = ln->next) {
-
-	/* We use _ST_Intersects and && operator rather than ST_Intersects for performances issues */
-        buffer_add_str(where, " (_ST_Intersects(");
-        if (transform) buffer_add_str(where, "ST_Transform(");
-        buffer_add_str(where, "\"");
-        buffer_copy(where, ln->value);
-        buffer_add_str(where, "\",");
-        if (transform) { 
-            buffer_add_int(where, srid);
-            buffer_add_str(where, "),");
-        }
-
-        if (transform) buffer_add_str(where, "ST_Transform(");
-        ows_bbox_to_query(o, wr->bbox, where);
-        if (transform) {
-            buffer_add_str(where, ",");
-            buffer_add_int(where, srid);
-            buffer_add_str(where, ")");
-        }
-        buffer_add_str(where, ") AND ");
-        if (transform) buffer_add_str(where, "ST_Transform(");
-        buffer_add_str(where, "\"");
-        buffer_copy(where, ln->value);
-        buffer_add_str(where, "\"");
-        if (transform) { 
-            buffer_add_str(where, ",");
-            buffer_add_int(where, srid);
-            buffer_add_str(where, ")");
-        }
-        buffer_add_str(where, " && ");
-        if (transform) buffer_add_str(where, "ST_Transform(");
-        ows_bbox_to_query(o, wr->bbox, where);
-        if (transform) {
-            buffer_add_str(where, ",");
-            buffer_add_int(where, srid);
-            buffer_add_str(where, ")");
-        }
-
-        if (ln->next) buffer_add_str(where, ") OR ");
-        else          buffer_add_str(where, ")");
+    if (transform) buffer_add_str(where, "ST_Transform(");
+    ows_bbox_to_query(o, wr->bbox, where);
+    if (transform) {
+      buffer_add_str(where, ",");
+      buffer_add_int(where, srid);
+      buffer_add_str(where, ")");
+    }
+    buffer_add_str(where, ") AND ");
+    if (transform) buffer_add_str(where, "ST_Transform(");
+    buffer_add_str(where, "\"");
+    buffer_copy(where, ln->value);
+    buffer_add_str(where, "\"");
+    if (transform) {
+      buffer_add_str(where, ",");
+      buffer_add_int(where, srid);
+      buffer_add_str(where, ")");
+    }
+    buffer_add_str(where, " && ");
+    if (transform) buffer_add_str(where, "ST_Transform(");
+    ows_bbox_to_query(o, wr->bbox, where);
+    if (transform) {
+      buffer_add_str(where, ",");
+      buffer_add_int(where, srid);
+      buffer_add_str(where, ")");
     }
 
-    return where;
+    if (ln->next) buffer_add_str(where, ") OR ");
+    else          buffer_add_str(where, ")");
+  }
+
+  return where;
 }
 
 
@@ -518,42 +493,34 @@ buffer *fe_kvp_bbox(ows * o, wfs_request * wr, buffer * layer_name, ows_bbox * b
  */
 buffer *fe_kvp_featureid(ows * o, wfs_request * wr, buffer * layer_name, list * fid)
 {
-    buffer *id_name, *where;
-    char *escaped;
-    list *fe;
-    list_node *ln;
-
-    assert(o);
-    assert(wr);
-    assert(layer_name);
-    assert(fid);
-
-    where = buffer_init();
-
-    id_name = ows_psql_id_column(o, layer_name);
-    if (!id_name || id_name->use == 0) return where;
-
-    buffer_add_str(where, " WHERE ");
-
-    for (ln = fid->first ; ln ; ln = ln->next) {
-        fe = list_explode('.', ln->value);
-        buffer_copy(where, id_name);
-        buffer_add_str(where, " = '");
-        escaped = ows_psql_escape_string(o, fe->last->value->buf);
-        if (escaped) {
-            buffer_add_str(where, escaped);
-            free(escaped);
-        }
-        buffer_add_str(where, "'");
-        list_free(fe);
+  buffer *id_name, *where;
+  char *escaped;
+  list *fe;
+  list_node *ln;
 
-        if (ln->next) buffer_add_str(where, " OR ");
-    }
+  assert(o && wr && layer_name && fid);
 
-    return where;
-}
+  where = buffer_init();
 
+  id_name = ows_psql_id_column(o, layer_name);
+  if (!id_name || id_name->use == 0) return where;
 
-/*
- * vim: expandtab sw=4 ts=4
- */
+  buffer_add_str(where, " WHERE ");
+
+  for (ln = fid->first ; ln ; ln = ln->next) {
+    fe = list_explode('.', ln->value);
+    buffer_copy(where, id_name);
+    buffer_add_str(where, " = '");
+    escaped = ows_psql_escape_string(o, fe->last->value->buf);
+    if (escaped) {
+      buffer_add_str(where, escaped);
+      free(escaped);
+    }
+    buffer_add_str(where, "'");
+    list_free(fe);
+
+    if (ln->next) buffer_add_str(where, " OR ");
+  }
+
+  return where;
+}
diff --git a/src/fe/fe_filter_capabilities.c b/src/fe/fe_filter_capabilities.c
index c0436c8..1da5a06 100644
--- a/src/fe/fe_filter_capabilities.c
+++ b/src/fe/fe_filter_capabilities.c
@@ -33,48 +33,48 @@
  */
 static void fe_functions_capabilities(const ows * o)
 {
-    int version;
-    buffer *fct_name;
-
-    assert(o);
-
-    version = ows_version_get(o->request->version);
-    fct_name = buffer_init();
-
-    if (version == 100) buffer_add_str(fct_name, "Function_Name");
-    else                buffer_add_str(fct_name, "FunctionName");
-
-    fprintf(o->output, "   <ogc:Functions>\n");
-    fprintf(o->output, "    <ogc:%ss>\n", fct_name->buf);
-    fprintf(o->output, "     <ogc:%s nArgs='1'>abs</ogc:%s>\n",     fct_name->buf, fct_name->buf);
-    fprintf(o->output, "     <ogc:%s nArgs='1'>acos</ogc:%s>\n",    fct_name->buf, fct_name->buf);
-    fprintf(o->output, "     <ogc:%s nArgs='1'>asin</ogc:%s>\n",    fct_name->buf, fct_name->buf);
-    fprintf(o->output, "     <ogc:%s nArgs='1'>atan</ogc:%s>\n",    fct_name->buf, fct_name->buf);
-    fprintf(o->output, "     <ogc:%s nArgs='1'>avg</ogc:%s>\n",     fct_name->buf, fct_name->buf);
-    fprintf(o->output, "     <ogc:%s nArgs='1'>cbrt</ogc:%s>\n",    fct_name->buf, fct_name->buf);
-    fprintf(o->output, "     <ogc:%s nArgs='1'>ceil</ogc:%s>\n",    fct_name->buf, fct_name->buf);
-    fprintf(o->output, "     <ogc:%s nArgs='1'>ceiling</ogc:%s>\n", fct_name->buf, fct_name->buf);
-    fprintf(o->output, "     <ogc:%s nArgs='1'>cos</ogc:%s>\n",     fct_name->buf, fct_name->buf);
-    fprintf(o->output, "     <ogc:%s nArgs='1'>cot</ogc:%s>\n",     fct_name->buf, fct_name->buf);
-    fprintf(o->output, "     <ogc:%s nArgs='1'>count</ogc:%s>\n",   fct_name->buf, fct_name->buf);
-    fprintf(o->output, "     <ogc:%s nArgs='1'>degrees</ogc:%s>\n", fct_name->buf, fct_name->buf);
-    fprintf(o->output, "     <ogc:%s nArgs='1'>exp</ogc:%s>\n",     fct_name->buf, fct_name->buf);
-    fprintf(o->output, "     <ogc:%s nArgs='1'>floor</ogc:%s>\n",   fct_name->buf, fct_name->buf);
-    fprintf(o->output, "     <ogc:%s nArgs='1'>length</ogc:%s>\n",  fct_name->buf, fct_name->buf);
-    fprintf(o->output, "     <ogc:%s nArgs='1'>ln</ogc:%s>\n",      fct_name->buf, fct_name->buf);
-    fprintf(o->output, "     <ogc:%s nArgs='1'>log</ogc:%s>\n",     fct_name->buf, fct_name->buf);
-    fprintf(o->output, "     <ogc:%s nArgs='1'>min</ogc:%s>\n",     fct_name->buf, fct_name->buf);
-    fprintf(o->output, "     <ogc:%s nArgs='1'>max</ogc:%s>\n",     fct_name->buf, fct_name->buf);
-    fprintf(o->output, "     <ogc:%s nArgs='1'>radians</ogc:%s>\n", fct_name->buf, fct_name->buf);
-    fprintf(o->output, "     <ogc:%s nArgs='1'>round</ogc:%s>\n",   fct_name->buf, fct_name->buf);
-    fprintf(o->output, "     <ogc:%s nArgs='1'>sin</ogc:%s>\n",     fct_name->buf, fct_name->buf);
-    fprintf(o->output, "     <ogc:%s nArgs='1'>sqrt</ogc:%s>\n",    fct_name->buf, fct_name->buf);
-    fprintf(o->output, "     <ogc:%s nArgs='1'>tan</ogc:%s>\n",     fct_name->buf, fct_name->buf);
-    fprintf(o->output, "     <ogc:%s nArgs='1'>trunc</ogc:%s>\n",   fct_name->buf, fct_name->buf);
-    fprintf(o->output, "    </ogc:%ss>\n", fct_name->buf);
-    fprintf(o->output, "   </ogc:Functions>\n");
-
-    buffer_free(fct_name);
+  int version;
+  buffer *fct_name;
+
+  assert(o);
+
+  version = ows_version_get(o->request->version);
+  fct_name = buffer_init();
+
+  if (version == 100) buffer_add_str(fct_name, "Function_Name");
+  else                buffer_add_str(fct_name, "FunctionName");
+
+  fprintf(o->output, "   <ogc:Functions>\n");
+  fprintf(o->output, "    <ogc:%ss>\n", fct_name->buf);
+  fprintf(o->output, "     <ogc:%s nArgs='1'>abs</ogc:%s>\n",     fct_name->buf, fct_name->buf);
+  fprintf(o->output, "     <ogc:%s nArgs='1'>acos</ogc:%s>\n",    fct_name->buf, fct_name->buf);
+  fprintf(o->output, "     <ogc:%s nArgs='1'>asin</ogc:%s>\n",    fct_name->buf, fct_name->buf);
+  fprintf(o->output, "     <ogc:%s nArgs='1'>atan</ogc:%s>\n",    fct_name->buf, fct_name->buf);
+  fprintf(o->output, "     <ogc:%s nArgs='1'>avg</ogc:%s>\n",     fct_name->buf, fct_name->buf);
+  fprintf(o->output, "     <ogc:%s nArgs='1'>cbrt</ogc:%s>\n",    fct_name->buf, fct_name->buf);
+  fprintf(o->output, "     <ogc:%s nArgs='1'>ceil</ogc:%s>\n",    fct_name->buf, fct_name->buf);
+  fprintf(o->output, "     <ogc:%s nArgs='1'>ceiling</ogc:%s>\n", fct_name->buf, fct_name->buf);
+  fprintf(o->output, "     <ogc:%s nArgs='1'>cos</ogc:%s>\n",     fct_name->buf, fct_name->buf);
+  fprintf(o->output, "     <ogc:%s nArgs='1'>cot</ogc:%s>\n",     fct_name->buf, fct_name->buf);
+  fprintf(o->output, "     <ogc:%s nArgs='1'>count</ogc:%s>\n",   fct_name->buf, fct_name->buf);
+  fprintf(o->output, "     <ogc:%s nArgs='1'>degrees</ogc:%s>\n", fct_name->buf, fct_name->buf);
+  fprintf(o->output, "     <ogc:%s nArgs='1'>exp</ogc:%s>\n",     fct_name->buf, fct_name->buf);
+  fprintf(o->output, "     <ogc:%s nArgs='1'>floor</ogc:%s>\n",   fct_name->buf, fct_name->buf);
+  fprintf(o->output, "     <ogc:%s nArgs='1'>length</ogc:%s>\n",  fct_name->buf, fct_name->buf);
+  fprintf(o->output, "     <ogc:%s nArgs='1'>ln</ogc:%s>\n",      fct_name->buf, fct_name->buf);
+  fprintf(o->output, "     <ogc:%s nArgs='1'>log</ogc:%s>\n",     fct_name->buf, fct_name->buf);
+  fprintf(o->output, "     <ogc:%s nArgs='1'>min</ogc:%s>\n",     fct_name->buf, fct_name->buf);
+  fprintf(o->output, "     <ogc:%s nArgs='1'>max</ogc:%s>\n",     fct_name->buf, fct_name->buf);
+  fprintf(o->output, "     <ogc:%s nArgs='1'>radians</ogc:%s>\n", fct_name->buf, fct_name->buf);
+  fprintf(o->output, "     <ogc:%s nArgs='1'>round</ogc:%s>\n",   fct_name->buf, fct_name->buf);
+  fprintf(o->output, "     <ogc:%s nArgs='1'>sin</ogc:%s>\n",     fct_name->buf, fct_name->buf);
+  fprintf(o->output, "     <ogc:%s nArgs='1'>sqrt</ogc:%s>\n",    fct_name->buf, fct_name->buf);
+  fprintf(o->output, "     <ogc:%s nArgs='1'>tan</ogc:%s>\n",     fct_name->buf, fct_name->buf);
+  fprintf(o->output, "     <ogc:%s nArgs='1'>trunc</ogc:%s>\n",   fct_name->buf, fct_name->buf);
+  fprintf(o->output, "    </ogc:%ss>\n", fct_name->buf);
+  fprintf(o->output, "   </ogc:Functions>\n");
+
+  buffer_free(fct_name);
 }
 
 
@@ -84,43 +84,43 @@ static void fe_functions_capabilities(const ows * o)
  */
 void fe_filter_capabilities_100(const ows * o)
 {
-    assert(o);
-
-    fprintf(o->output, "<ogc:Filter_Capabilities>\n");
-
-    /* Spatial Capabilities */
-    fprintf(o->output, " <ogc:Spatial_Capabilities>\n");
-    fprintf(o->output, "  <ogc:Spatial_Operators>\n");
-    fprintf(o->output, "   <ogc:Disjoint/>\n");
-    fprintf(o->output, "   <ogc:Equals/>\n");
-    fprintf(o->output, "   <ogc:DWithin/>\n");
-    fprintf(o->output, "   <ogc:Beyond/>\n");
-    fprintf(o->output, "   <ogc:Intersect/>\n");
-    fprintf(o->output, "   <ogc:Touches/>\n");
-    fprintf(o->output, "   <ogc:Crosses/>\n");
-    fprintf(o->output, "   <ogc:Within/>\n");
-    fprintf(o->output, "   <ogc:Contains/>\n");
-    fprintf(o->output, "   <ogc:Overlaps/>\n");
-    fprintf(o->output, "   <ogc:BBOX/>\n");
-    fprintf(o->output, "  </ogc:Spatial_Operators>\n");
-    fprintf(o->output, " </ogc:Spatial_Capabilities>\n");
-
-    /* Scalar Capabilities */
-    fprintf(o->output, " <ogc:Scalar_Capabilities>\n");
-    fprintf(o->output, "  <ogc:Logical_Operators/>\n");
-    fprintf(o->output, "  <ogc:Comparison_Operators>\n");
-    fprintf(o->output, "   <ogc:Simple_Comparisons/>\n");
-    fprintf(o->output, "   <ogc:Between/>\n");
-    fprintf(o->output, "   <ogc:Like/>\n");
-    fprintf(o->output, "   <ogc:NullCheck/>\n");
-    fprintf(o->output, "  </ogc:Comparison_Operators>\n");
-    fprintf(o->output, "  <ogc:Arithmetic_Operators>\n");
-    fprintf(o->output, "   <ogc:Simple_Arithmetic/>\n");
-    fe_functions_capabilities(o);
-    fprintf(o->output, "  </ogc:Arithmetic_Operators>\n");
-    fprintf(o->output, " </ogc:Scalar_Capabilities>\n");
-
-    fprintf(o->output, "</ogc:Filter_Capabilities>\n");
+  assert(o);
+
+  fprintf(o->output, "<ogc:Filter_Capabilities>\n");
+
+  /* Spatial Capabilities */
+  fprintf(o->output, " <ogc:Spatial_Capabilities>\n");
+  fprintf(o->output, "  <ogc:Spatial_Operators>\n");
+  fprintf(o->output, "   <ogc:Disjoint/>\n");
+  fprintf(o->output, "   <ogc:Equals/>\n");
+  fprintf(o->output, "   <ogc:DWithin/>\n");
+  fprintf(o->output, "   <ogc:Beyond/>\n");
+  fprintf(o->output, "   <ogc:Intersect/>\n");
+  fprintf(o->output, "   <ogc:Touches/>\n");
+  fprintf(o->output, "   <ogc:Crosses/>\n");
+  fprintf(o->output, "   <ogc:Within/>\n");
+  fprintf(o->output, "   <ogc:Contains/>\n");
+  fprintf(o->output, "   <ogc:Overlaps/>\n");
+  fprintf(o->output, "   <ogc:BBOX/>\n");
+  fprintf(o->output, "  </ogc:Spatial_Operators>\n");
+  fprintf(o->output, " </ogc:Spatial_Capabilities>\n");
+
+  /* Scalar Capabilities */
+  fprintf(o->output, " <ogc:Scalar_Capabilities>\n");
+  fprintf(o->output, "  <ogc:Logical_Operators/>\n");
+  fprintf(o->output, "  <ogc:Comparison_Operators>\n");
+  fprintf(o->output, "   <ogc:Simple_Comparisons/>\n");
+  fprintf(o->output, "   <ogc:Between/>\n");
+  fprintf(o->output, "   <ogc:Like/>\n");
+  fprintf(o->output, "   <ogc:NullCheck/>\n");
+  fprintf(o->output, "  </ogc:Comparison_Operators>\n");
+  fprintf(o->output, "  <ogc:Arithmetic_Operators>\n");
+  fprintf(o->output, "   <ogc:Simple_Arithmetic/>\n");
+  fe_functions_capabilities(o);
+  fprintf(o->output, "  </ogc:Arithmetic_Operators>\n");
+  fprintf(o->output, " </ogc:Scalar_Capabilities>\n");
+
+  fprintf(o->output, "</ogc:Filter_Capabilities>\n");
 }
 
 
@@ -130,65 +130,70 @@ void fe_filter_capabilities_100(const ows * o)
  */
 void fe_filter_capabilities_110(const ows * o)
 {
-    assert(o);
-
-    fprintf(o->output, "<ogc:Filter_Capabilities>\n");
-
-    /* Spatial Capabililties */
-    fprintf(o->output, " <ogc:Spatial_Capabilities>\n");
-
-    fprintf(o->output, "  <ogc:GeometryOperands>\n");
-    fprintf(o->output, "   <ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>\n");
-    fprintf(o->output, "   <ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>\n");
-    fprintf(o->output, "   <ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>\n");
-    fprintf(o->output, "   <ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>\n");
-    fprintf(o->output, "  </ogc:GeometryOperands>\n");
-
-    fprintf(o->output, "  <ogc:SpatialOperators>\n");
-    fprintf(o->output, "  <ogc:SpatialOperator name='Disjoint'/>\n");
-    fprintf(o->output, "  <ogc:SpatialOperator name='Equals'/>\n");
-    fprintf(o->output, "  <ogc:SpatialOperator name='DWithin'/>\n");
-    fprintf(o->output, "  <ogc:SpatialOperator name='Beyond'/>\n");
-    fprintf(o->output, "  <ogc:SpatialOperator name='Intersects'/>\n");
-    fprintf(o->output, "  <ogc:SpatialOperator name='Touches'/>\n");
-    fprintf(o->output, "  <ogc:SpatialOperator name='Crosses'/>\n");
-    fprintf(o->output, "  <ogc:SpatialOperator name='Within'/>\n");
-    fprintf(o->output, "  <ogc:SpatialOperator name='Contains'/>\n");
-    fprintf(o->output, "  <ogc:SpatialOperator name='Overlaps'/>\n");
-    fprintf(o->output, "  <ogc:SpatialOperator name='BBOX'/>\n");
-    fprintf(o->output, " </ogc:SpatialOperators>\n");
-    fprintf(o->output, " </ogc:Spatial_Capabilities>\n");
-
-    /* Scalar Capabililties */
-    fprintf(o->output, " <ogc:Scalar_Capabilities>\n");
-    fprintf(o->output, "  <ogc:LogicalOperators/>\n");
-
-    fprintf(o->output, "  <ogc:ComparisonOperators>\n");
-    fprintf(o->output, "   <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>\n");
-    fprintf(o->output, "   <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>\n");
-    fprintf(o->output, "   <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>\n");
-    fprintf(o->output, "   <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>\n");
-    fprintf(o->output, "   <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>\n");
-    fprintf(o->output, "   <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>\n");
-    fprintf(o->output, "   <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>\n");
-    fprintf(o->output, "   <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>\n");
-    fprintf(o->output, "   <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>\n");
-    fprintf(o->output, "  </ogc:ComparisonOperators>\n");
-
-    fprintf(o->output, "  <ogc:ArithmeticOperators>\n");
-    fprintf(o->output, "   <ogc:SimpleArithmetic/>\n");
-    fe_functions_capabilities(o);
-    fprintf(o->output, "  </ogc:ArithmeticOperators>\n");
-
-    fprintf(o->output, " </ogc:Scalar_Capabilities>\n");
-
-    /* Id Capabilities */
-    fprintf(o->output, " <ogc:Id_Capabilities>\n");
-    fprintf(o->output, "  <ogc:EID/>\n");
-    fprintf(o->output, "  <ogc:FID/>\n");
-    fprintf(o->output, " </ogc:Id_Capabilities>\n");
-
-    fprintf(o->output, "</ogc:Filter_Capabilities>\n");
+  assert(o);
+
+  fprintf(o->output, "<ogc:Filter_Capabilities>\n");
+
+  /* Spatial Capabililties */
+  fprintf(o->output, " <ogc:Spatial_Capabilities>\n");
+
+  fprintf(o->output, "  <ogc:GeometryOperands>\n");
+  fprintf(o->output, "   <ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>\n");
+  fprintf(o->output, "   <ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>\n");
+  fprintf(o->output, "   <ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>\n");
+  fprintf(o->output, "   <ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>\n");
+  if (ows_version_get(o->postgis_version) >= 200) {
+    fprintf(o->output, "   <ogc:GeometryOperand>gml:Triangle</ogc:GeometryOperand>\n");
+    fprintf(o->output, "   <ogc:GeometryOperand>gml:PolyhedralSurface</ogc:GeometryOperand>\n");
+    fprintf(o->output, "   <ogc:GeometryOperand>gml:Tin</ogc:GeometryOperand>\n");
+  }
+  fprintf(o->output, "  </ogc:GeometryOperands>\n");
+
+  fprintf(o->output, "  <ogc:SpatialOperators>\n");
+  fprintf(o->output, "  <ogc:SpatialOperator name='Disjoint'/>\n");
+  fprintf(o->output, "  <ogc:SpatialOperator name='Equals'/>\n");
+  fprintf(o->output, "  <ogc:SpatialOperator name='DWithin'/>\n");
+  fprintf(o->output, "  <ogc:SpatialOperator name='Beyond'/>\n");
+  fprintf(o->output, "  <ogc:SpatialOperator name='Intersects'/>\n");
+  fprintf(o->output, "  <ogc:SpatialOperator name='Touches'/>\n");
+  fprintf(o->output, "  <ogc:SpatialOperator name='Crosses'/>\n");
+  fprintf(o->output, "  <ogc:SpatialOperator name='Within'/>\n");
+  fprintf(o->output, "  <ogc:SpatialOperator name='Contains'/>\n");
+  fprintf(o->output, "  <ogc:SpatialOperator name='Overlaps'/>\n");
+  fprintf(o->output, "  <ogc:SpatialOperator name='BBOX'/>\n");
+  fprintf(o->output, " </ogc:SpatialOperators>\n");
+  fprintf(o->output, " </ogc:Spatial_Capabilities>\n");
+
+  /* Scalar Capabililties */
+  fprintf(o->output, " <ogc:Scalar_Capabilities>\n");
+  fprintf(o->output, "  <ogc:LogicalOperators/>\n");
+
+  fprintf(o->output, "  <ogc:ComparisonOperators>\n");
+  fprintf(o->output, "   <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>\n");
+  fprintf(o->output, "   <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>\n");
+  fprintf(o->output, "   <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>\n");
+  fprintf(o->output, "   <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>\n");
+  fprintf(o->output, "   <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>\n");
+  fprintf(o->output, "   <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>\n");
+  fprintf(o->output, "   <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>\n");
+  fprintf(o->output, "   <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>\n");
+  fprintf(o->output, "   <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>\n");
+  fprintf(o->output, "  </ogc:ComparisonOperators>\n");
+
+  fprintf(o->output, "  <ogc:ArithmeticOperators>\n");
+  fprintf(o->output, "   <ogc:SimpleArithmetic/>\n");
+  fe_functions_capabilities(o);
+  fprintf(o->output, "  </ogc:ArithmeticOperators>\n");
+
+  fprintf(o->output, " </ogc:Scalar_Capabilities>\n");
+
+  /* Id Capabilities */
+  fprintf(o->output, " <ogc:Id_Capabilities>\n");
+  fprintf(o->output, "  <ogc:EID/>\n");
+  fprintf(o->output, "  <ogc:FID/>\n");
+  fprintf(o->output, " </ogc:Id_Capabilities>\n");
+
+  fprintf(o->output, "</ogc:Filter_Capabilities>\n");
 }
 
 
diff --git a/src/fe/fe_function.c b/src/fe/fe_function.c
index dcd1e0f..f0807be 100644
--- a/src/fe/fe_function.c
+++ b/src/fe/fe_function.c
@@ -34,20 +34,20 @@
  */
 static buffer *fe_functions(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n)
 {
-    assert(o);
-    assert(typename);
-    assert(n);
-    assert(sql);
+  assert(o);
+  assert(typename);
+  assert(n);
+  assert(sql);
 
-    n = n->children;
+  n = n->children;
 
-    /* jump to the next element if there are spaces */
-    while (n->type != XML_ELEMENT_NODE) n = n->next;
+  /* jump to the next element if there are spaces */
+  while (n->type != XML_ELEMENT_NODE) n = n->next;
 
-    sql = fe_expression(o, typename, fe, sql, n);
-    buffer_add_str(sql, ")");
+  sql = fe_expression(o, typename, fe, sql, n);
+  buffer_add_str(sql, ")");
 
-    return sql;
+  return sql;
 }
 
 
@@ -56,24 +56,24 @@ static buffer *fe_functions(ows * o, buffer * typename, filter_encoding * fe, bu
  */
 static buffer *fe_aggregate_functions(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n)
 {
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-    assert(sql);
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
+  assert(sql);
 
-    n = n->children;
+  n = n->children;
 
-    /* jump to the next element if there are spaces */
-    while (n->type != XML_ELEMENT_NODE) n = n->next;
+  /* jump to the next element if there are spaces */
+  while (n->type != XML_ELEMENT_NODE) n = n->next;
 
-    sql = fe_expression(o, typename, fe, sql, n);
+  sql = fe_expression(o, typename, fe, sql, n);
 
-    buffer_add_str(sql, ") from ");
-    buffer_copy(sql, typename);
-    buffer_add_str(sql, ")");
+  buffer_add_str(sql, ") from ");
+  buffer_copy(sql, typename);
+  buffer_add_str(sql, ")");
 
-    return sql;
+  return sql;
 }
 
 
@@ -82,16 +82,16 @@ static buffer *fe_aggregate_functions(ows * o, buffer * typename, filter_encodin
  */
 static buffer *fe_fct_abs(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n)
 {
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-    assert(sql);
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
+  assert(sql);
 
-    buffer_add_str(sql, "abs(");
-    sql = fe_functions(o, typename, fe, sql, n);
+  buffer_add_str(sql, "abs(");
+  sql = fe_functions(o, typename, fe, sql, n);
 
-    return sql;
+  return sql;
 }
 
 
@@ -100,16 +100,16 @@ static buffer *fe_fct_abs(ows * o, buffer * typename, filter_encoding * fe, buff
  */
 static buffer *fe_fct_acos(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n)
 {
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-    assert(sql);
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
+  assert(sql);
 
-    buffer_add_str(sql, "acos(");
-    sql = fe_functions(o, typename, fe, sql, n);
+  buffer_add_str(sql, "acos(");
+  sql = fe_functions(o, typename, fe, sql, n);
 
-    return sql;
+  return sql;
 }
 
 
@@ -118,16 +118,16 @@ static buffer *fe_fct_acos(ows * o, buffer * typename, filter_encoding * fe, buf
  */
 static buffer *fe_fct_asin(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n)
 {
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-    assert(sql);
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
+  assert(sql);
 
-    buffer_add_str(sql, "asin(");
-    sql = fe_functions(o, typename, fe, sql, n);
+  buffer_add_str(sql, "asin(");
+  sql = fe_functions(o, typename, fe, sql, n);
 
-    return sql;
+  return sql;
 }
 
 
@@ -136,16 +136,16 @@ static buffer *fe_fct_asin(ows * o, buffer * typename, filter_encoding * fe, buf
  */
 static buffer *fe_fct_atan(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n)
 {
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-    assert(sql);
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
+  assert(sql);
 
-    buffer_add_str(sql, "atan(");
-    sql = fe_functions(o, typename, fe, sql, n);
+  buffer_add_str(sql, "atan(");
+  sql = fe_functions(o, typename, fe, sql, n);
 
-    return sql;
+  return sql;
 }
 
 
@@ -154,16 +154,16 @@ static buffer *fe_fct_atan(ows * o, buffer * typename, filter_encoding * fe, buf
  */
 static buffer *fe_fct_avg(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n)
 {
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-    assert(sql);
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
+  assert(sql);
 
-    buffer_add_str(sql, "(SELECT avg(");
-    sql = fe_aggregate_functions(o, typename, fe, sql, n);
+  buffer_add_str(sql, "(SELECT avg(");
+  sql = fe_aggregate_functions(o, typename, fe, sql, n);
 
-    return sql;
+  return sql;
 }
 
 
@@ -172,16 +172,16 @@ static buffer *fe_fct_avg(ows * o, buffer * typename, filter_encoding * fe, buff
  */
 static buffer *fe_fct_cbrt(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n)
 {
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-    assert(sql);
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
+  assert(sql);
 
-    buffer_add_str(sql, "cbrt(");
-    sql = fe_functions(o, typename, fe, sql, n);
+  buffer_add_str(sql, "cbrt(");
+  sql = fe_functions(o, typename, fe, sql, n);
 
-    return sql;
+  return sql;
 }
 
 
@@ -190,15 +190,15 @@ static buffer *fe_fct_cbrt(ows * o, buffer * typename, filter_encoding * fe, buf
  */
 static buffer *fe_fct_ceil(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n)
 {
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
 
-    buffer_add_str(sql, "ceil(");
-    sql = fe_functions(o, typename, fe, sql, n);
+  buffer_add_str(sql, "ceil(");
+  sql = fe_functions(o, typename, fe, sql, n);
 
-    return sql;
+  return sql;
 }
 
 
@@ -207,16 +207,16 @@ static buffer *fe_fct_ceil(ows * o, buffer * typename, filter_encoding * fe, buf
  */
 static buffer *fe_fct_cos(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n)
 {
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-    assert(sql);
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
+  assert(sql);
 
-    buffer_add_str(sql, "cos(");
-    sql = fe_functions(o, typename, fe, sql, n);
+  buffer_add_str(sql, "cos(");
+  sql = fe_functions(o, typename, fe, sql, n);
 
-    return sql;
+  return sql;
 }
 
 
@@ -225,16 +225,16 @@ static buffer *fe_fct_cos(ows * o, buffer * typename, filter_encoding * fe, buff
  */
 static buffer *fe_fct_cot(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n)
 {
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-    assert(sql);
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
+  assert(sql);
 
-    buffer_add_str(sql, "cot(");
-    sql = fe_functions(o, typename, fe, sql, n);
+  buffer_add_str(sql, "cot(");
+  sql = fe_functions(o, typename, fe, sql, n);
 
-    return sql;
+  return sql;
 }
 
 
@@ -243,16 +243,16 @@ static buffer *fe_fct_cot(ows * o, buffer * typename, filter_encoding * fe, buff
  */
 static buffer *fe_fct_count(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n)
 {
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-    assert(sql);
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
+  assert(sql);
 
-    buffer_add_str(sql, "(SELECT count(");
-    sql = fe_aggregate_functions(o, typename, fe, sql, n);
+  buffer_add_str(sql, "(SELECT count(");
+  sql = fe_aggregate_functions(o, typename, fe, sql, n);
 
-    return sql;
+  return sql;
 }
 
 
@@ -261,16 +261,16 @@ static buffer *fe_fct_count(ows * o, buffer * typename, filter_encoding * fe, bu
  */
 static buffer *fe_fct_degrees(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n)
 {
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-    assert(sql);
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
+  assert(sql);
 
-    buffer_add_str(sql, "degrees(");
-    sql = fe_functions(o, typename, fe, sql, n);
+  buffer_add_str(sql, "degrees(");
+  sql = fe_functions(o, typename, fe, sql, n);
 
-    return sql;
+  return sql;
 }
 
 
@@ -279,16 +279,16 @@ static buffer *fe_fct_degrees(ows * o, buffer * typename, filter_encoding * fe,
  */
 static buffer *fe_fct_exp(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n)
 {
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-    assert(sql);
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
+  assert(sql);
 
-    buffer_add_str(sql, "exp(");
-    sql = fe_functions(o, typename, fe, sql, n);
+  buffer_add_str(sql, "exp(");
+  sql = fe_functions(o, typename, fe, sql, n);
 
-    return sql;
+  return sql;
 }
 
 
@@ -297,16 +297,16 @@ static buffer *fe_fct_exp(ows * o, buffer * typename, filter_encoding * fe, buff
  */
 static buffer *fe_fct_floor(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n)
 {
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-    assert(sql);
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
+  assert(sql);
 
-    buffer_add_str(sql, "floor(");
-    sql = fe_functions(o, typename, fe, sql, n);
+  buffer_add_str(sql, "floor(");
+  sql = fe_functions(o, typename, fe, sql, n);
 
-    return sql;
+  return sql;
 }
 
 
@@ -315,16 +315,16 @@ static buffer *fe_fct_floor(ows * o, buffer * typename, filter_encoding * fe, bu
  */
 static buffer *fe_fct_length(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n)
 {
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-    assert(sql);
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
+  assert(sql);
 
-    buffer_add_str(sql, "length(");
-    sql = fe_functions(o, typename, fe, sql, n);
+  buffer_add_str(sql, "length(");
+  sql = fe_functions(o, typename, fe, sql, n);
 
-    return sql;
+  return sql;
 }
 
 
@@ -333,16 +333,16 @@ static buffer *fe_fct_length(ows * o, buffer * typename, filter_encoding * fe, b
  */
 static buffer *fe_fct_ln(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n)
 {
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-    assert(sql);
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
+  assert(sql);
 
-    buffer_add_str(sql, "ln(");
-    sql = fe_functions(o, typename, fe, sql, n);
+  buffer_add_str(sql, "ln(");
+  sql = fe_functions(o, typename, fe, sql, n);
 
-    return sql;
+  return sql;
 }
 
 
@@ -351,16 +351,16 @@ static buffer *fe_fct_ln(ows * o, buffer * typename, filter_encoding * fe, buffe
  */
 static buffer *fe_fct_log(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n)
 {
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-    assert(sql);
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
+  assert(sql);
 
-    buffer_add_str(sql, "log(");
-    sql = fe_functions(o, typename, fe, sql, n);
+  buffer_add_str(sql, "log(");
+  sql = fe_functions(o, typename, fe, sql, n);
 
-    return sql;
+  return sql;
 }
 
 
@@ -369,16 +369,16 @@ static buffer *fe_fct_log(ows * o, buffer * typename, filter_encoding * fe, buff
  */
 static buffer *fe_fct_min(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n)
 {
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-    assert(sql);
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
+  assert(sql);
 
-    buffer_add_str(sql, "(SELECT Min(");
-    sql = fe_aggregate_functions(o, typename, fe, sql, n);
+  buffer_add_str(sql, "(SELECT Min(");
+  sql = fe_aggregate_functions(o, typename, fe, sql, n);
 
-    return sql;
+  return sql;
 }
 
 
@@ -387,16 +387,16 @@ static buffer *fe_fct_min(ows * o, buffer * typename, filter_encoding * fe, buff
  */
 static buffer *fe_fct_max(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n)
 {
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-    assert(sql);
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
+  assert(sql);
 
-    buffer_add_str(sql, "(SELECT Max(");
-    sql = fe_aggregate_functions(o, typename, fe, sql, n);
+  buffer_add_str(sql, "(SELECT Max(");
+  sql = fe_aggregate_functions(o, typename, fe, sql, n);
 
-    return sql;
+  return sql;
 }
 
 
@@ -405,16 +405,16 @@ static buffer *fe_fct_max(ows * o, buffer * typename, filter_encoding * fe, buff
  */
 static buffer *fe_fct_radians(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n)
 {
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-    assert(sql);
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
+  assert(sql);
 
-    buffer_add_str(sql, "radians(");
-    sql = fe_functions(o, typename, fe, sql, n);
+  buffer_add_str(sql, "radians(");
+  sql = fe_functions(o, typename, fe, sql, n);
 
-    return sql;
+  return sql;
 }
 
 /*
@@ -422,16 +422,16 @@ static buffer *fe_fct_radians(ows * o, buffer * typename, filter_encoding * fe,
  */
 static buffer *fe_fct_round(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n)
 {
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-    assert(sql);
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
+  assert(sql);
 
-    buffer_add_str(sql, "round(");
-    sql = fe_functions(o, typename, fe, sql, n);
+  buffer_add_str(sql, "round(");
+  sql = fe_functions(o, typename, fe, sql, n);
 
-    return sql;
+  return sql;
 }
 
 
@@ -440,16 +440,16 @@ static buffer *fe_fct_round(ows * o, buffer * typename, filter_encoding * fe, bu
  */
 static buffer *fe_fct_sin(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n)
 {
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-    assert(sql);
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
+  assert(sql);
 
-    buffer_add_str(sql, "sin(");
-    sql = fe_functions(o, typename, fe, sql, n);
+  buffer_add_str(sql, "sin(");
+  sql = fe_functions(o, typename, fe, sql, n);
 
-    return sql;
+  return sql;
 }
 
 
@@ -458,16 +458,16 @@ static buffer *fe_fct_sin(ows * o, buffer * typename, filter_encoding * fe, buff
  */
 static buffer *fe_fct_sqrt(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n)
 {
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-    assert(sql);
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
+  assert(sql);
 
-    buffer_add_str(sql, "sqrt(");
-    sql = fe_functions(o, typename, fe, sql, n);
+  buffer_add_str(sql, "sqrt(");
+  sql = fe_functions(o, typename, fe, sql, n);
 
-    return sql;
+  return sql;
 }
 
 
@@ -476,16 +476,16 @@ static buffer *fe_fct_sqrt(ows * o, buffer * typename, filter_encoding * fe, buf
  */
 static buffer *fe_fct_tan(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n)
 {
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-    assert(sql);
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
+  assert(sql);
 
-    buffer_add_str(sql, "tan(");
-    sql = fe_functions(o, typename, fe, sql, n);
+  buffer_add_str(sql, "tan(");
+  sql = fe_functions(o, typename, fe, sql, n);
 
-    return sql;
+  return sql;
 }
 
 
@@ -494,16 +494,16 @@ static buffer *fe_fct_tan(ows * o, buffer * typename, filter_encoding * fe, buff
  */
 static buffer *fe_fct_trunc(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n)
 {
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-    assert(sql);
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
+  assert(sql);
 
-    buffer_add_str(sql, "trunc(");
-    sql = fe_functions(o, typename, fe, sql, n);
+  buffer_add_str(sql, "trunc(");
+  sql = fe_functions(o, typename, fe, sql, n);
 
-    return sql;
+  return sql;
 }
 
 
@@ -512,73 +512,73 @@ static buffer *fe_fct_trunc(ows * o, buffer * typename, filter_encoding * fe, bu
  */
 buffer *fe_function(ows * o, buffer * typename, filter_encoding * fe, buffer * sql, xmlNodePtr n)
 {
-    xmlChar *fct_name;
-
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-    assert(sql);
-
-    fct_name = xmlGetProp(n, (xmlChar *) "name");
-
-    assert(fct_name);
-
-    if      (!strcmp((char *) fct_name, "abs"))
-        sql = fe_fct_abs(o, typename, fe, sql, n);
-    else if (!strcmp((char *) fct_name, "acos"))
-        sql = fe_fct_acos(o, typename, fe, sql, n);
-    else if (!strcmp((char *) fct_name, "asin"))
-        sql = fe_fct_asin(o, typename, fe, sql, n);
-    else if (!strcmp((char *) fct_name, "atan"))
-        sql = fe_fct_atan(o, typename, fe, sql, n);
-    else if (!strcmp((char *) fct_name, "avg"))
-        sql = fe_fct_avg(o, typename, fe, sql, n);
-    else if (!strcmp((char *) fct_name, "cbrt"))
-        sql = fe_fct_cbrt(o, typename, fe, sql, n);
-    else if (!strcmp((char *) fct_name, "ceil"))
-        sql = fe_fct_ceil(o, typename, fe, sql, n);
-    else if (!strcmp((char *) fct_name, "ceiling"))
-        sql = fe_fct_ceil(o, typename, fe, sql, n);
-    else if (!strcmp((char *) fct_name, "cos"))
-        sql = fe_fct_cos(o, typename, fe, sql, n);
-    else if (!strcmp((char *) fct_name, "cot"))
-        sql = fe_fct_cot(o, typename, fe, sql, n);
-    else if (!strcmp((char *) fct_name, "count"))
-        sql = fe_fct_count(o, typename, fe, sql, n);
-    else if (!strcmp((char *) fct_name, "degrees"))
-        sql = fe_fct_degrees(o, typename, fe, sql, n);
-    else if (!strcmp((char *) fct_name, "exp"))
-        sql = fe_fct_exp(o, typename, fe, sql, n);
-    else if (!strcmp((char *) fct_name, "floor"))
-        sql = fe_fct_floor(o, typename, fe, sql, n);
-    else if (!strcmp((char *) fct_name, "length"))
-        sql = fe_fct_length(o, typename, fe, sql, n);
-    else if (!strcmp((char *) fct_name, "ln"))
-        sql = fe_fct_ln(o, typename, fe, sql, n);
-    else if (!strcmp((char *) fct_name, "log"))
-        sql = fe_fct_log(o, typename, fe, sql, n);
-    else if (!strcmp((char *) fct_name, "min"))
-        sql = fe_fct_min(o, typename, fe, sql, n);
-    else if (!strcmp((char *) fct_name, "max"))
-        sql = fe_fct_max(o, typename, fe, sql, n);
-    else if (!strcmp((char *) fct_name, "radians"))
-        sql = fe_fct_radians(o, typename, fe, sql, n);
-    else if (!strcmp((char *) fct_name, "round"))
-        sql = fe_fct_round(o, typename, fe, sql, n);
-    else if (!strcmp((char *) fct_name, "sin"))
-        sql = fe_fct_sin(o, typename, fe, sql, n);
-    else if (!strcmp((char *) fct_name, "sqrt"))
-        sql = fe_fct_sqrt(o, typename, fe, sql, n);
-    else if (!strcmp((char *) fct_name, "tan"))
-        sql = fe_fct_tan(o, typename, fe, sql, n);
-    else if (!strcmp((char *) fct_name, "trunc"))
-        sql = fe_fct_trunc(o, typename, fe, sql, n);
-    else fe->error_code = FE_ERROR_FUNCTION;
-
-    xmlFree(fct_name);
-
-    return sql;
+  xmlChar *fct_name;
+
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
+  assert(sql);
+
+  fct_name = xmlGetProp(n, (xmlChar *) "name");
+
+  assert(fct_name);
+
+  if      (!strcmp((char *) fct_name, "abs"))
+    sql = fe_fct_abs(o, typename, fe, sql, n);
+  else if (!strcmp((char *) fct_name, "acos"))
+    sql = fe_fct_acos(o, typename, fe, sql, n);
+  else if (!strcmp((char *) fct_name, "asin"))
+    sql = fe_fct_asin(o, typename, fe, sql, n);
+  else if (!strcmp((char *) fct_name, "atan"))
+    sql = fe_fct_atan(o, typename, fe, sql, n);
+  else if (!strcmp((char *) fct_name, "avg"))
+    sql = fe_fct_avg(o, typename, fe, sql, n);
+  else if (!strcmp((char *) fct_name, "cbrt"))
+    sql = fe_fct_cbrt(o, typename, fe, sql, n);
+  else if (!strcmp((char *) fct_name, "ceil"))
+    sql = fe_fct_ceil(o, typename, fe, sql, n);
+  else if (!strcmp((char *) fct_name, "ceiling"))
+    sql = fe_fct_ceil(o, typename, fe, sql, n);
+  else if (!strcmp((char *) fct_name, "cos"))
+    sql = fe_fct_cos(o, typename, fe, sql, n);
+  else if (!strcmp((char *) fct_name, "cot"))
+    sql = fe_fct_cot(o, typename, fe, sql, n);
+  else if (!strcmp((char *) fct_name, "count"))
+    sql = fe_fct_count(o, typename, fe, sql, n);
+  else if (!strcmp((char *) fct_name, "degrees"))
+    sql = fe_fct_degrees(o, typename, fe, sql, n);
+  else if (!strcmp((char *) fct_name, "exp"))
+    sql = fe_fct_exp(o, typename, fe, sql, n);
+  else if (!strcmp((char *) fct_name, "floor"))
+    sql = fe_fct_floor(o, typename, fe, sql, n);
+  else if (!strcmp((char *) fct_name, "length"))
+    sql = fe_fct_length(o, typename, fe, sql, n);
+  else if (!strcmp((char *) fct_name, "ln"))
+    sql = fe_fct_ln(o, typename, fe, sql, n);
+  else if (!strcmp((char *) fct_name, "log"))
+    sql = fe_fct_log(o, typename, fe, sql, n);
+  else if (!strcmp((char *) fct_name, "min"))
+    sql = fe_fct_min(o, typename, fe, sql, n);
+  else if (!strcmp((char *) fct_name, "max"))
+    sql = fe_fct_max(o, typename, fe, sql, n);
+  else if (!strcmp((char *) fct_name, "radians"))
+    sql = fe_fct_radians(o, typename, fe, sql, n);
+  else if (!strcmp((char *) fct_name, "round"))
+    sql = fe_fct_round(o, typename, fe, sql, n);
+  else if (!strcmp((char *) fct_name, "sin"))
+    sql = fe_fct_sin(o, typename, fe, sql, n);
+  else if (!strcmp((char *) fct_name, "sqrt"))
+    sql = fe_fct_sqrt(o, typename, fe, sql, n);
+  else if (!strcmp((char *) fct_name, "tan"))
+    sql = fe_fct_tan(o, typename, fe, sql, n);
+  else if (!strcmp((char *) fct_name, "trunc"))
+    sql = fe_fct_trunc(o, typename, fe, sql, n);
+  else fe->error_code = FE_ERROR_FUNCTION;
+
+  xmlFree(fct_name);
+
+  return sql;
 }
 
 
diff --git a/src/fe/fe_logical_ops.c b/src/fe/fe_logical_ops.c
index 750bae5..67c7a46 100644
--- a/src/fe/fe_logical_ops.c
+++ b/src/fe/fe_logical_ops.c
@@ -34,12 +34,12 @@
  */
 bool fe_is_logical_op(char *name)
 {
-    assert(name);
+  assert(name);
 
-    /* NOTA: GML is case sensitive */
-    if (!strcmp(name, "And") || !strcmp(name, "Or") || !strcmp(name, "Not")) return true;
+  /* NOTA: GML is case sensitive */
+  if (!strcmp(name, "And") || !strcmp(name, "Or") || !strcmp(name, "Not")) return true;
 
-    return false;
+  return false;
 }
 
 
@@ -49,43 +49,43 @@ bool fe_is_logical_op(char *name)
  */
 static buffer *fe_binary_logical_op(ows * o, buffer * typename, filter_encoding * fe, xmlNodePtr n)
 {
-    xmlNodePtr node;
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-
-    buffer_add_str(fe->sql, "(");
-
-    node = n->children;
-    while (node->type != XML_ELEMENT_NODE) node = node->next; /* Jump to next element if spaces */
+  xmlNodePtr node;
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
+
+  buffer_add_str(fe->sql, "(");
+
+  node = n->children;
+  while (node->type != XML_ELEMENT_NODE) node = node->next; /* Jump to next element if spaces */
+
+  /* Execute the matching function's type */
+  if (fe_is_logical_op((char *) node->name))    fe->sql = fe_logical_op(o, typename, fe, node);
+  else if (fe_is_spatial_op((char *) node->name))    fe->sql = fe_spatial_op(o, typename, fe, node);
+  else if (fe_is_comparison_op((char *) node->name)) fe->sql = fe_comparison_op(o, typename, fe, node);
+
+  /* We could have severals terms in a logical */
+  for ( node = node->next ; node ; node = node->next ) {
+    if (node->type != XML_ELEMENT_NODE) continue;
+
+    /* Revert boolean logical if inside a Not */
+    if (!fe->in_not) {
+      if (!strcmp((char *) n->name, "And")) buffer_add_str(fe->sql, " AND ");
+      else if (!strcmp((char *) n->name, "Or")) buffer_add_str(fe->sql, " OR ");
+    } else {
+      if (!strcmp((char *) n->name, "And")) buffer_add_str(fe->sql, " OR ");
+      else if (!strcmp((char *) n->name, "Or")) buffer_add_str(fe->sql, " AND ");
+    }
 
     /* Execute the matching function's type */
-         if (fe_is_logical_op((char *) node->name))    fe->sql = fe_logical_op(o, typename, fe, node);
+    if (fe_is_logical_op((char *) node->name))    fe->sql = fe_logical_op(o, typename, fe, node);
     else if (fe_is_spatial_op((char *) node->name))    fe->sql = fe_spatial_op(o, typename, fe, node);
     else if (fe_is_comparison_op((char *) node->name)) fe->sql = fe_comparison_op(o, typename, fe, node);
+  }
+  buffer_add_str(fe->sql, ")");
 
-    /* We could have severals terms in a logical */
-    for ( node = node->next ; node ; node = node->next ) {
-        if (node->type != XML_ELEMENT_NODE) continue;
-
-        /* Revert boolean logical if inside a Not */
-        if (!fe->in_not) {
-                 if (!strcmp((char *) n->name, "And")) buffer_add_str(fe->sql, " AND ");
-            else if (!strcmp((char *) n->name, "Or")) buffer_add_str(fe->sql, " OR ");
-        } else {
-                 if (!strcmp((char *) n->name, "And")) buffer_add_str(fe->sql, " OR ");
-            else if (!strcmp((char *) n->name, "Or")) buffer_add_str(fe->sql, " AND ");
-        }
-
-        /* Execute the matching function's type */
-             if (fe_is_logical_op((char *) node->name))    fe->sql = fe_logical_op(o, typename, fe, node);
-        else if (fe_is_spatial_op((char *) node->name))    fe->sql = fe_spatial_op(o, typename, fe, node);
-        else if (fe_is_comparison_op((char *) node->name)) fe->sql = fe_comparison_op(o, typename, fe, node);
-    }
-    buffer_add_str(fe->sql, ")");
-
-    return fe->sql;
+  return fe->sql;
 }
 
 
@@ -95,26 +95,26 @@ static buffer *fe_binary_logical_op(ows * o, buffer * typename, filter_encoding
  */
 static buffer *fe_unary_logical_op(ows * o, buffer * typename, filter_encoding * fe, xmlNodePtr n)
 {
-    assert(typename);
-    assert(o);
-    assert(fe);
-    assert(n);
+  assert(typename);
+  assert(o);
+  assert(fe);
+  assert(n);
 
-    buffer_add_str(fe->sql, "not(");
-    fe->in_not++;
+  buffer_add_str(fe->sql, "not(");
+  fe->in_not++;
 
-    n = n->children;
-    while (n->type != XML_ELEMENT_NODE) n = n->next;
+  n = n->children;
+  while (n->type != XML_ELEMENT_NODE) n = n->next;
 
-    /* Execute the matching function's type */
-         if (fe_is_logical_op((char *) n->name))    fe->sql = fe_logical_op(o, typename, fe, n);
-    else if (fe_is_spatial_op((char *) n->name))    fe->sql = fe_spatial_op(o, typename, fe, n);
-    else if (fe_is_comparison_op((char *) n->name)) fe->sql = fe_comparison_op(o, typename, fe, n);
+  /* Execute the matching function's type */
+  if (fe_is_logical_op((char *) n->name))    fe->sql = fe_logical_op(o, typename, fe, n);
+  else if (fe_is_spatial_op((char *) n->name))    fe->sql = fe_spatial_op(o, typename, fe, n);
+  else if (fe_is_comparison_op((char *) n->name)) fe->sql = fe_comparison_op(o, typename, fe, n);
 
-    buffer_add_str(fe->sql, ")");
-    fe->in_not--;
+  buffer_add_str(fe->sql, ")");
+  fe->in_not--;
 
-    return fe->sql;
+  return fe->sql;
 }
 
 
@@ -125,21 +125,21 @@ static buffer *fe_unary_logical_op(ows * o, buffer * typename, filter_encoding *
  */
 buffer *fe_logical_op(ows * o, buffer * typename, filter_encoding * fe, xmlNodePtr n)
 {
-    assert(typename);
-    assert(o);
-    assert(fe);
-    assert(n);
-
-    /* case sensitive comparison because the gml standard specifies
-       strictly the name of the operator */
-    if (!strcmp((char *) n->name, "And") || !strcmp((char *) n->name, "Or"))
-        fe->sql = fe_binary_logical_op(o, typename, fe, n);
-    else if (!strcmp((char *) n->name, "Not"))
-        fe->sql = fe_unary_logical_op(o, typename, fe, n);
-    else
-        fe->error_code = FE_ERROR_FILTER;
-
-    return fe->sql;
+  assert(typename);
+  assert(o);
+  assert(fe);
+  assert(n);
+
+  /* case sensitive comparison because the gml standard specifies
+     strictly the name of the operator */
+  if (!strcmp((char *) n->name, "And") || !strcmp((char *) n->name, "Or"))
+    fe->sql = fe_binary_logical_op(o, typename, fe, n);
+  else if (!strcmp((char *) n->name, "Not"))
+    fe->sql = fe_unary_logical_op(o, typename, fe, n);
+  else
+    fe->error_code = FE_ERROR_FILTER;
+
+  return fe->sql;
 }
 
 
diff --git a/src/fe/fe_spatial_ops.c b/src/fe/fe_spatial_ops.c
index 00a37cd..5351a2a 100644
--- a/src/fe/fe_spatial_ops.c
+++ b/src/fe/fe_spatial_ops.c
@@ -34,24 +34,24 @@
  */
 bool fe_is_spatial_op(char *name)
 {
-    assert(name);
-
-    /* case sensitive comparison because the gml standard specifies
-       strictly the name of the operator */
-    if (    !strcmp(name, "Equals")
-         || !strcmp(name, "Disjoint")
-         || !strcmp(name, "Touches")
-         || !strcmp(name, "Within")
-         || !strcmp(name, "Overlaps")
-         || !strcmp(name, "Crosses")
-         || !strcmp(name, "Intersects")
-         || !strcmp(name, "Contains")
-         || !strcmp(name, "DWithin")
-         || !strcmp(name, "Beyond")
-	 || !strcmp(name, "BBOX"))
-        return true;
-
-    return false;
+  assert(name);
+
+  /* case sensitive comparison because the gml standard specifies
+     strictly the name of the operator */
+  if (    !strcmp(name, "Equals")
+       || !strcmp(name, "Disjoint")
+       || !strcmp(name, "Touches")
+       || !strcmp(name, "Within")
+       || !strcmp(name, "Overlaps")
+       || !strcmp(name, "Crosses")
+       || !strcmp(name, "Intersects")
+       || !strcmp(name, "Contains")
+       || !strcmp(name, "DWithin")
+       || !strcmp(name, "Beyond")
+       || !strcmp(name, "BBOX"))
+    return true;
+
+  return false;
 }
 
 
@@ -60,18 +60,18 @@ bool fe_is_spatial_op(char *name)
  */
 static  buffer *fe_transform_coord_gml2_to_psql(buffer * coord)
 {
-    size_t i;
-    assert(coord);
-
-    /*check if the first separator is a comma else do nothing */
-    if (check_regexp(coord->buf, "^[0-9.-]+,")) {
-        for (i = 0; i < coord->use; i++) {
-            if (coord->buf[i] == ' ')       coord->buf[i] = ',';
-            else if (coord->buf[i] == ',')  coord->buf[i] = ' ';
-        }
+  size_t i;
+  assert(coord);
+
+  /*check if the first separator is a comma else do nothing */
+  if (check_regexp(coord->buf, "^[0-9.-]+,")) {
+    for (i = 0; i < coord->use; i++) {
+      if (coord->buf[i] == ' ')       coord->buf[i] = ',';
+      else if (coord->buf[i] == ',')  coord->buf[i] = ' ';
     }
+  }
 
-    return coord;
+  return coord;
 }
 
 
@@ -80,145 +80,147 @@ static  buffer *fe_transform_coord_gml2_to_psql(buffer * coord)
  */
 buffer *fe_envelope(ows * o, buffer * typename, filter_encoding * fe, buffer *envelope, xmlNodePtr n)
 {
-    list *coord_min, *coord_max, *coord_pair;
-    xmlChar *content, *srsname;
-    buffer *name, *tmp;
-    ows_bbox *bbox;
-    int srid_int;
-    bool ret;
-    ows_srs *s = NULL;
-
-    assert(o);
-    assert(n);
-    assert(fe);
-    assert(typename);
-    assert(envelope);
-
-    name = buffer_init();
-    buffer_add_str(name, (char *) n->name);
-
-    srsname = xmlGetProp(n, (xmlChar *) "srsName");
-    if (srsname) {
-	s = ows_srs_init();
-
-	if (!ows_srs_set_from_srsname(o, s, (char *) srsname)) {
-            fe->error_code = FE_ERROR_SRS;
-            xmlFree(srsname);
-            buffer_free(name);
-            ows_srs_free(s);
-            return envelope;
-        }
-
-        xmlFree(srsname);
-        srid_int = s->srid;
-    } else {
-        if (o->request->request.wfs->srs)
-            srid_int = o->request->request.wfs->srs->srid;
-        else
-            srid_int = ows_srs_get_srid_from_layer(o, typename);
+  list *coord_min, *coord_max, *coord_pair;
+  xmlChar *content, *srsname;
+  buffer *name, *tmp;
+  ows_bbox *bbox;
+  int srid_int;
+  bool ret;
+  ows_srs *s = NULL;
+
+  assert(o);
+  assert(n);
+  assert(fe);
+  assert(typename);
+  assert(envelope);
+
+  name = buffer_init();
+  buffer_add_str(name, (char *) n->name);
+
+  srsname = xmlGetProp(n, (xmlChar *) "srsName");
+  if (srsname) {
+    s = ows_srs_init();
+
+    if (!ows_srs_set_from_srsname(o, s, (char *) srsname)) {
+      fe->error_code = FE_ERROR_SRS;
+      xmlFree(srsname);
+      buffer_free(name);
+      ows_srs_free(s);
+      return envelope;
     }
 
-    n = n->children;
-    while (n->type != XML_ELEMENT_NODE) n = n->next; /* Jump to next element if spaces */
-
-    content = xmlNodeGetContent(n->children);
-
-    /* GML3 */
-    if (!strcmp((char *) n->name, "lowerCorner")) {
-        if (!content || !check_regexp((char *) content, "[-]?[0-9]+([.][0-9]+)?([eE][-]?[0-9]+)? [-]?[0-9]+([.][0-9]+)?([eE][-]?[0-9]+)?")) {
-            xmlFree(content);
-            buffer_free(name);
-            if (s) ows_srs_free(s);
-            fe->error_code = FE_ERROR_BBOX;
-
-	    return envelope;
-        }
-        coord_min = list_explode_str(' ', (char *) content);
-
-
-        n = n->next;
-        while (n->next && n->type != XML_ELEMENT_NODE) n = n->next; /* Jump to next element if spaces */
-        xmlFree(content);
-        content = xmlNodeGetContent(n->children);
+    xmlFree(srsname);
+    srid_int = s->srid;
+  } else {
+    if (o->request->request.wfs->srs)
+      srid_int = o->request->request.wfs->srs->srid;
+    else
+      srid_int = ows_srs_get_srid_from_layer(o, ows_layer_prefix_to_uri(o->layers, typename));
+  }
 
-        if (!content || !check_regexp((char *) content, "[-]?[0-9]+([.][0-9]+)?([eE][-]?[0-9]+)? [-]?[0-9]+([.][0-9]+)?([eE][-]?[0-9]+)?")) {
-            xmlFree(content);
-            buffer_free(name);
-            list_free(coord_min);
-            if (s) ows_srs_free(s);
-            fe->error_code = FE_ERROR_BBOX;
+  n = n->children;
+  while (n->type != XML_ELEMENT_NODE) n = n->next; /* Jump to next element if spaces */
 
-	    return envelope;
-        }
-        coord_max = list_explode_str(' ', (char *) content);
+  content = xmlNodeGetContent(n->children);
 
-    /* GML2 */
-    } else if (!strcmp((char *) n->name, "coordinates")) {
-        tmp = buffer_init();
-        buffer_add_str(tmp, (char *) content);
-        if (!check_regexp((char *) content, "^[-]?[0-9]+([.][0-9]+)?([eE][-]?[0-9]+)?,[-]?[0-9]+([.][0-9]+)?([eE][-]?[0-9]+)?[ ][-]?[0-9]+([.][0-9]+)?([eE][-]?[0-9]+)?,[-]?[0-9]+([.][0-9]+)?([eE][-]?[0-9]+)?$")) {
-            xmlFree(content);
-            buffer_free(name);
-            if (s) ows_srs_free(s);
-            fe->error_code = FE_ERROR_BBOX;
-
-	    return envelope;
-        }
-        tmp = fe_transform_coord_gml2_to_psql(tmp);
-        coord_pair = list_explode(',', tmp);
-        coord_min = list_explode(' ', coord_pair->first->value);
-        coord_max = list_explode(' ', coord_pair->first->next->value);
-        buffer_free(tmp);
-        list_free(coord_pair);
-    } else {
-    /* FIXME handle coord and pos */
-        xmlFree(content);
-        buffer_free(name);
-        if (s) ows_srs_free(s);
-        fe->error_code = FE_ERROR_BBOX;
+  /* GML3 */
+  if (!strcmp((char *) n->name, "lowerCorner")) {
+    if (!content || !check_regexp((char *) content, 
+         "[-]?[0-9]+([.][0-9]+)?([eE][-]?[0-9]+)? [-]?[0-9]+([.][0-9]+)?([eE][-]?[0-9]+)?")) {
+      xmlFree(content);
+      buffer_free(name);
+      if (s) ows_srs_free(s);
+      fe->error_code = FE_ERROR_BBOX;
 
-        return envelope;
+      return envelope;
     }
+    coord_min = list_explode_str(' ', (char *) content);
 
-    buffer_free(name);
+
+    n = n->next;
+    while (n->next && n->type != XML_ELEMENT_NODE) n = n->next; /* Jump to next element if spaces */
     xmlFree(content);
+    content = xmlNodeGetContent(n->children);
 
-    /* return the polygon's coordinates matching the bbox */
-    bbox = ows_bbox_init();
-    if (s && s->is_reverse_axis) {
-    	ret = ows_bbox_set(o, bbox,
-                          atof(coord_min->first->next->value->buf),
-			  atof(coord_min->first->value->buf),
-                          atof(coord_max->first->next->value->buf),
-                          atof(coord_max->first->value->buf),
-			  srid_int);
-    } else {
-    	ret = ows_bbox_set(o, bbox,
-			  atof(coord_min->first->value->buf),
-                          atof(coord_min->first->next->value->buf),
-                          atof(coord_max->first->value->buf),
-                          atof(coord_max->first->next->value->buf),
-			  srid_int);
-    }
+    if (!content || !check_regexp((char *) content,
+          "[-]?[0-9]+([.][0-9]+)?([eE][-]?[0-9]+)? [-]?[0-9]+([.][0-9]+)?([eE][-]?[0-9]+)?")) {
+      xmlFree(content);
+      buffer_free(name);
+      list_free(coord_min);
+      if (s) ows_srs_free(s);
+      fe->error_code = FE_ERROR_BBOX;
 
-    if (!ret) {
-        fe->error_code = FE_ERROR_BBOX;
-	list_free(coord_min);
-        list_free(coord_max);
-        ows_bbox_free(bbox);
-        if (s) ows_srs_free(s);
+      return envelope;
+    }
+    coord_max = list_explode_str(' ', (char *) content);
 
-	return envelope;
+    /* GML2 */
+  } else if (!strcmp((char *) n->name, "coordinates")) {
+    tmp = buffer_init();
+    buffer_add_str(tmp, (char *) content);
+    if (!check_regexp((char *) content, "^[-]?[0-9]+([.][0-9]+)?([eE][-]?[0-9]+)?,[-]?[0-9]+([.][0-9]+)?([eE][-]?[0-9]+)?[ ][-]?[0-9]+([.][0-9]+)?([eE][-]?[0-9]+)?,[-]?[0-9]+([.][0-9]+)?([eE][-]?[0-9]+)?$")) {
+      xmlFree(content);
+      buffer_free(name);
+      if (s) ows_srs_free(s);
+      fe->error_code = FE_ERROR_BBOX;
+
+      return envelope;
     }
+    tmp = fe_transform_coord_gml2_to_psql(tmp);
+    coord_pair = list_explode(',', tmp);
+    coord_min = list_explode(' ', coord_pair->first->value);
+    coord_max = list_explode(' ', coord_pair->first->next->value);
+    buffer_free(tmp);
+    list_free(coord_pair);
+  } else {
+    /* FIXME handle coord and pos */
+    xmlFree(content);
+    buffer_free(name);
+    if (s) ows_srs_free(s);
+    fe->error_code = FE_ERROR_BBOX;
 
+    return envelope;
+  }
+
+  buffer_free(name);
+  xmlFree(content);
+
+  /* return the polygon's coordinates matching the bbox */
+  bbox = ows_bbox_init();
+  if (s && s->is_reverse_axis) {
+    ret = ows_bbox_set(o, bbox,
+                       atof(coord_min->first->next->value->buf),
+                       atof(coord_min->first->value->buf),
+                       atof(coord_max->first->next->value->buf),
+                       atof(coord_max->first->value->buf),
+                       srid_int);
+  } else {
+    ret = ows_bbox_set(o, bbox,
+                       atof(coord_min->first->value->buf),
+                       atof(coord_min->first->next->value->buf),
+                       atof(coord_max->first->value->buf),
+                       atof(coord_max->first->next->value->buf),
+                       srid_int);
+  }
+
+  if (!ret) {
+    fe->error_code = FE_ERROR_BBOX;
     list_free(coord_min);
     list_free(coord_max);
-
-    ows_bbox_to_query(o, bbox, envelope);
     ows_bbox_free(bbox);
     if (s) ows_srs_free(s);
 
     return envelope;
+  }
+
+  list_free(coord_min);
+  list_free(coord_max);
+
+  ows_bbox_to_query(o, bbox, envelope);
+  ows_bbox_free(bbox);
+  if (s) ows_srs_free(s);
+
+  return envelope;
 }
 
 
@@ -227,95 +229,97 @@ buffer *fe_envelope(ows * o, buffer * typename, filter_encoding * fe, buffer *en
  */
 static buffer *fe_spatial_functions(ows * o, buffer * typename, filter_encoding * fe, xmlNodePtr n)
 {
-    ows_srs *s;
-    buffer *geom;
-    xmlNodePtr p;
-    xmlChar *srsname;
-    int srid = -1;
-
-    assert(typename);
-    assert(fe);
-    assert(n);
-    assert(o);
-
-    if (!strcmp((char *) n->name, "Equals"))     buffer_add_str(fe->sql, " ST_Equals(");
-    if (!strcmp((char *) n->name, "Disjoint"))   buffer_add_str(fe->sql, " ST_Disjoint(");
-    if (!strcmp((char *) n->name, "Touches"))    buffer_add_str(fe->sql, " ST_Touches(");
-    if (!strcmp((char *) n->name, "Within"))     buffer_add_str(fe->sql, " ST_Within(");
-    if (!strcmp((char *) n->name, "Overlaps"))   buffer_add_str(fe->sql, " ST_Overlaps(");
-    if (!strcmp((char *) n->name, "Crosses"))    buffer_add_str(fe->sql, " ST_Crosses(");
-    if (!strcmp((char *) n->name, "Intersects")) buffer_add_str(fe->sql, " ST_Intersects(");
-    if (!strcmp((char *) n->name, "Contains"))   buffer_add_str(fe->sql, " ST_Contains(");
-
-    n = n->children;
-    while (n->type != XML_ELEMENT_NODE) n = n->next; /* Jump to next element if spaces */
-
-    p = n;
-    n = n->next;
-
-    /* jump to the next element if there are spaces */
-    while (n->type != XML_ELEMENT_NODE) n = n->next;
+  ows_srs *s;
+  buffer *geom, *layer_name;
+  xmlNodePtr p;
+  xmlChar *srsname;
+  int srid = -1;
+
+  assert(typename);
+  assert(fe);
+  assert(n);
+  assert(o);
+
+  if (!strcmp((char *) n->name, "Equals"))     buffer_add_str(fe->sql, " ST_Equals(");
+  if (!strcmp((char *) n->name, "Disjoint"))   buffer_add_str(fe->sql, " ST_Disjoint(");
+  if (!strcmp((char *) n->name, "Touches"))    buffer_add_str(fe->sql, " ST_Touches(");
+  if (!strcmp((char *) n->name, "Within"))     buffer_add_str(fe->sql, " ST_Within(");
+  if (!strcmp((char *) n->name, "Overlaps"))   buffer_add_str(fe->sql, " ST_Overlaps(");
+  if (!strcmp((char *) n->name, "Crosses"))    buffer_add_str(fe->sql, " ST_Crosses(");
+  if (!strcmp((char *) n->name, "Intersects")) buffer_add_str(fe->sql, " ST_Intersects(");
+  if (!strcmp((char *) n->name, "Contains"))   buffer_add_str(fe->sql, " ST_Contains(");
+
+  n = n->children;
+  while (n->type != XML_ELEMENT_NODE) n = n->next; /* Jump to next element if spaces */
+
+  p = n;
+  n = n->next;
+  
+  layer_name = ows_layer_prefix_to_uri(o->layers, typename);
+
+  /* jump to the next element if there are spaces */
+  while (n->type != XML_ELEMENT_NODE) n = n->next;
+
+  if (o->request->request.wfs->srs) srid = o->request->request.wfs->srs->srid;
+  else srid = ows_srs_get_srid_from_layer(o, layer_name);
+
+  if (!strcmp((char *) n->name, "Box") || !strcmp((char *) n->name, "Envelope")) {
 
-    if (o->request->request.wfs->srs) srid = o->request->request.wfs->srs->srid;
-    else srid = ows_srs_get_srid_from_layer(o, typename);
+    srsname = xmlGetProp(n, (xmlChar *) "srsName");
+    if (srsname) {
+      s = ows_srs_init();
+      if (ows_srs_set_from_srsname(o, s, (char *) srsname)) srid = s->srid;
+      ows_srs_free(s);
+      xmlFree(srsname);
+    }
 
-    if (!strcmp((char *) n->name, "Box") || !strcmp((char *) n->name, "Envelope")) {
-        
-        srsname = xmlGetProp(n, (xmlChar *) "srsName");
-        if (srsname) {
-	    s = ows_srs_init();
-	    if (ows_srs_set_from_srsname(o, s, (char *) srsname)) srid = s->srid;
-            ows_srs_free(s);
-            xmlFree(srsname);
-        }
-
-        buffer_add(fe->sql, '"');
-        fe->sql = fe_property_name(o, typename, fe, fe->sql, p, true, true);
-        buffer_add(fe->sql, '"');
-        buffer_add(fe->sql, ',');
-
-        if (srid != ows_srs_get_srid_from_layer(o, typename)) {
-            buffer_add_str(fe->sql, "ST_Transform(");
-            fe->sql = fe_envelope(o, typename, fe, fe->sql, n);
-            buffer_add(fe->sql, ',');
-            buffer_add_int(fe->sql, ows_srs_get_srid_from_layer(o, typename));
-            buffer_add(fe->sql, ')');
-        } else fe->sql = fe_envelope(o, typename, fe, fe->sql, n);
-
-   } else  {
-        geom = ows_psql_gml_to_sql(o, n, srid);
-        if (!geom) {
-            fe->error_code = FE_ERROR_GEOMETRY;
-            return fe->sql;
-        }
-
-        srid = ows_psql_geometry_srid(o, geom->buf);
-
-        buffer_add(fe->sql, '"');
-        fe->sql = fe_property_name(o, typename, fe, fe->sql, p, true, true);
-        buffer_add(fe->sql, '"');
-        buffer_add(fe->sql, ',');
-
-        if (srid != ows_srs_get_srid_from_layer(o, typename))
-            buffer_add_str(fe->sql, "ST_Transform(");
-
-        buffer_add_str(fe->sql, "ST_SetSRID('");
-        buffer_copy(fe->sql, geom);
-        buffer_add_str(fe->sql, "'::geometry,");
-        buffer_add_int(fe->sql, srid);
-        buffer_add(fe->sql, ')');
-        buffer_free(geom);
-
-        if (srid != ows_srs_get_srid_from_layer(o, typename)) {
-            buffer_add(fe->sql, ',');
-            buffer_add_int(fe->sql, ows_srs_get_srid_from_layer(o, typename));
-            buffer_add(fe->sql, ')');
-        }
+    buffer_add(fe->sql, '"');
+    fe->sql = fe_property_name(o, typename, fe, fe->sql, p, true, true);
+    buffer_add(fe->sql, '"');
+    buffer_add(fe->sql, ',');
+
+    if (srid != ows_srs_get_srid_from_layer(o, layer_name)) {
+      buffer_add_str(fe->sql, "ST_Transform(");
+      fe->sql = fe_envelope(o, typename, fe, fe->sql, n);
+      buffer_add(fe->sql, ',');
+      buffer_add_int(fe->sql, ows_srs_get_srid_from_layer(o, layer_name));
+      buffer_add(fe->sql, ')');
+    } else fe->sql = fe_envelope(o, typename, fe, fe->sql, n);
+
+  } else  {
+    geom = ows_psql_gml_to_sql(o, n, srid);
+    if (!geom) {
+      fe->error_code = FE_ERROR_GEOMETRY;
+      return fe->sql;
     }
 
+    srid = ows_psql_geometry_srid(o, geom->buf);
+
+    buffer_add(fe->sql, '"');
+    fe->sql = fe_property_name(o, typename, fe, fe->sql, p, true, true);
+    buffer_add(fe->sql, '"');
+    buffer_add(fe->sql, ',');
+
+    if (srid != ows_srs_get_srid_from_layer(o, layer_name))
+      buffer_add_str(fe->sql, "ST_Transform(");
+
+    buffer_add_str(fe->sql, "ST_SetSRID('");
+    buffer_copy(fe->sql, geom);
+    buffer_add_str(fe->sql, "'::geometry,");
+    buffer_add_int(fe->sql, srid);
     buffer_add(fe->sql, ')');
+    buffer_free(geom);
 
-    return fe->sql;
+    if (srid != ows_srs_get_srid_from_layer(o, layer_name)) {
+      buffer_add(fe->sql, ',');
+      buffer_add_int(fe->sql, ows_srs_get_srid_from_layer(o, layer_name));
+      buffer_add(fe->sql, ')');
+    }
+  }
+
+  buffer_add(fe->sql, ')');
+
+  return fe->sql;
 }
 
 
@@ -325,133 +329,133 @@ static buffer *fe_spatial_functions(ows * o, buffer * typename, filter_encoding
  */
 static buffer *fe_distance_functions(ows * o, buffer * typename, filter_encoding * fe, xmlNodePtr n)
 {
-    xmlChar *content, *units;
-    buffer *tmp, *op, *sql;
-    float km;
-
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-
-    tmp = NULL;
-    op = buffer_init();
-
-    if (!strcmp((char *) n->name, "Beyond"))  buffer_add_str(op, " > ");
-    if (!strcmp((char *) n->name, "DWithin")) buffer_add_str(op, " < ");
-
-/* FIXME: as geography support available no need to keep this hack ! */
-
-    /* parameters are passed with centroid function because
-       Distance_sphere parameters must be points
-       So to be able to calculate distance between lines or polygons
-       whose coordinates are degree, centroid function must be used
-       To be coherent, centroid is also used with Distance function */
-    if (ows_srs_meter_units(o, typename))
-        buffer_add_str(fe->sql, "ST_Distance(ST_centroid(");
-    else
-        buffer_add_str(fe->sql, "ST_Distance_sphere(ST_centroid(");
+  xmlChar *content, *units;
+  buffer *tmp, *op, *sql;
+  float km;
 
-    n = n->children;
-    while (n->type != XML_ELEMENT_NODE) n = n->next; /* Jump to next element if spaces */
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
 
-    buffer_add(fe->sql, '"');
-    fe->sql = fe_property_name(o, typename, fe, fe->sql, n, true, true);
-    buffer_add(fe->sql, '"');
+  tmp = NULL;
+  op = buffer_init();
 
-    buffer_add_str(fe->sql, "),ST_centroid('");
+  if (!strcmp((char *) n->name, "Beyond"))  buffer_add_str(op, " > ");
+  if (!strcmp((char *) n->name, "DWithin")) buffer_add_str(op, " < ");
 
-    n = n->next;
+  buffer_add_str(fe->sql, "ST_Distance(");
+  if (!ows_srs_meter_units(o, typename))
+    buffer_add_str(fe->sql, "ST_Transform(");
 
-    while (n->type != XML_ELEMENT_NODE) n = n->next;
+  n = n->children;
+  while (n->type != XML_ELEMENT_NODE) n = n->next; /* Jump to next element if spaces */
 
-    /* display the geometry */
-    sql = ows_psql_gml_to_sql(o, n, 0);
-    if (sql) {
-        buffer_copy(fe->sql, sql);
-        buffer_free(sql);
-    } else fe->error_code = FE_ERROR_GEOMETRY;
+  buffer_add(fe->sql, '"');
+  fe->sql = fe_property_name(o, typename, fe, fe->sql, n, true, true);
+  buffer_add(fe->sql, '"');
 
-    buffer_add_str(fe->sql, "'))");
+  if (!ows_srs_meter_units(o, typename))
+    buffer_add_str(fe->sql, ", 4326)::geography");
 
-    n = n->next;
+  buffer_add_str(fe->sql, "),('");
 
-    while (n->type != XML_ELEMENT_NODE) n = n->next;
+  n = n->next;
 
-    units = xmlGetProp(n, (xmlChar *) "units");
-    buffer_copy(fe->sql, op);
-    content = xmlNodeGetContent(n->children);
-/*FIXME add a regex check */
-
-    /* units not strictly defined in Filter Encoding specification */
-    if (!strcmp((char *) units, "meters") || !strcmp((char *) units, "#metre"))
-        buffer_add_str(fe->sql, (char *) content);
-    else if (!strcmp((char *) units, "kilometers") || !strcmp((char *) units, "#kilometre")) {
-        km = atof((char *) content) * 1000.0;
-        tmp = buffer_ftoa((double) km);
-        buffer_copy(fe->sql, tmp);
-        buffer_free(tmp);
-    } else {
-        fe->error_code = FE_ERROR_UNITS;
-    }
+  while (n->type != XML_ELEMENT_NODE) n = n->next;
 
-    buffer_free(op);
-    xmlFree(content);
-    xmlFree(units);
+  if (!ows_srs_meter_units(o, typename))
+    buffer_add_str(fe->sql, "ST_Transform(");
 
-    return fe->sql;
+  /* display the geometry */
+  sql = ows_psql_gml_to_sql(o, n, 0);
+  if (sql) {
+    buffer_copy(fe->sql, sql);
+    buffer_free(sql);
+  } else fe->error_code = FE_ERROR_GEOMETRY;
+
+  if (!ows_srs_meter_units(o, typename))
+    buffer_add_str(fe->sql, ", 4326)::geography");
+
+  buffer_add_str(fe->sql, "'))");
+
+  n = n->next;
+
+  while (n->type != XML_ELEMENT_NODE) n = n->next;
+
+  units = xmlGetProp(n, (xmlChar *) "units");
+  buffer_copy(fe->sql, op);
+  content = xmlNodeGetContent(n->children);
+
+  /* units not strictly defined in Filter Encoding specification */
+  if (!strcmp((char *) units, "meters") || !strcmp((char *) units, "#metre"))
+    buffer_add_str(fe->sql, (char *) content);
+  else if (!strcmp((char *) units, "kilometers") || !strcmp((char *) units, "#kilometre")) {
+    km = atof((char *) content) * 1000.0;
+    tmp = buffer_ftoa((double) km);
+    buffer_copy(fe->sql, tmp);
+    buffer_free(tmp);
+  } else {
+    fe->error_code = FE_ERROR_UNITS;
+  }
+
+  buffer_free(op);
+  xmlFree(content);
+  xmlFree(units);
+
+  return fe->sql;
 }
 
 
 static buffer *fe_bbox_layer(ows *o, buffer *typename, buffer *sql, buffer *propertyname, buffer *envelope)
 {
-    int srid = -1;
-    bool transform = false;
+  int srid = -1;
+  bool transform = false;
 
-    assert(propertyname);
-    assert(envelope);
-    assert(sql);
-    assert(o);
+  assert(propertyname);
+  assert(envelope);
+  assert(sql);
+  assert(o);
 
-    buffer_add_str(sql, "(_ST_Intersects(");
+  buffer_add_str(sql, "(_ST_Intersects(");
 
-    if (o->request->request.wfs->srs) {
-        srid = o->request->request.wfs->srs->srid;
-        transform = true;
-    }
+  if (o->request->request.wfs->srs) {
+    srid = o->request->request.wfs->srs->srid;
+    transform = true;
+  }
 
-    if (transform) buffer_add_str(sql, "ST_Transform(");
+  if (transform) buffer_add_str(sql, "ST_Transform(");
 
-    buffer_add(sql, '"');
-    buffer_copy(sql, propertyname);
-    buffer_add(sql, '"');
+  buffer_add(sql, '"');
+  buffer_copy(sql, propertyname);
+  buffer_add(sql, '"');
 
-    if (transform) {
-        buffer_add(sql, ',');
-        buffer_add_int(sql, srid);
-    }
-    buffer_add(sql, ')');
+  if (transform) {
+    buffer_add(sql, ',');
+    buffer_add_int(sql, srid);
+  }
+  buffer_add(sql, ')');
 
-    buffer_add_str(sql, ",");
-    buffer_copy(sql, envelope);
-    buffer_add_str(sql, ") AND ");
-    if (transform) buffer_add_str(sql, "ST_Transform(");
+  buffer_add_str(sql, ",");
+  buffer_copy(sql, envelope);
+  buffer_add_str(sql, ") AND ");
+  if (transform) buffer_add_str(sql, "ST_Transform(");
 
-    buffer_add(sql, '"');
-    buffer_copy(sql, propertyname);
-    buffer_add(sql, '"');
+  buffer_add(sql, '"');
+  buffer_copy(sql, propertyname);
+  buffer_add(sql, '"');
 
-    if (transform) {
-        buffer_add(sql, ',');
-        buffer_add_int(sql, srid);
-    }
-    buffer_add(sql, ')');
+  if (transform) {
+    buffer_add(sql, ',');
+    buffer_add_int(sql, srid);
+  }
+  buffer_add(sql, ')');
 
-    buffer_add_str(sql, " && ");
-    buffer_copy(sql, envelope);
-    buffer_add_str(sql, ")");
-      
-    return sql;
+  buffer_add_str(sql, " && ");
+  buffer_copy(sql, envelope);
+  buffer_add_str(sql, ")");
+
+  return sql;
 }
 
 
@@ -460,66 +464,71 @@ static buffer *fe_bbox_layer(ows *o, buffer *typename, buffer *sql, buffer *prop
  */
 static buffer *fe_bbox(ows * o, buffer * typename, filter_encoding * fe, xmlNodePtr n)
 {
-    buffer *property;
-    list *columns;
-    list_node *ln;
-    buffer *envelope = NULL;
-
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-
-    n = n->children;
-    while (n->type != XML_ELEMENT_NODE) n = n->next;
+  buffer *property, *layer_name;
+  list *columns;
+  list_node *ln;
+  buffer *envelope = NULL;
+
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
+
+  n = n->children;
+  while (n->type != XML_ELEMENT_NODE) n = n->next;
+
+  layer_name = ows_layer_prefix_to_uri(o->layers, typename);
+  columns = ows_psql_geometry_column(o, layer_name);
+
+  /* Retrieve the property name */
+  property = buffer_init();
+  property = fe_property_name(o, typename, fe, property, n, true, false);
+  if (fe->error_code != FE_NO_ERROR) {
+    buffer_free(property);
+    return fe->sql;
+  }
 
-    columns = ows_psql_geometry_column(o, typename);
+  /* If no property name, so we have to check with each Geometry_columns */
+  if (property->use == 0) {
 
-    /* Retrieve the property name */
-    property = buffer_init();
-    property = fe_property_name(o, typename, fe, property, n, true, false);
-    if (fe->error_code != FE_NO_ERROR) {
-        buffer_free(property);
-        return fe->sql;
+    /* retrieve the geometry matching the bbox */
+    if (!strcmp((char *) n->name, "Box") || !strcmp((char *) n->name, "Envelope")) {
+      envelope = buffer_init();
+      envelope = fe_envelope(o, layer_name, fe, envelope, n);
+    } else {
+      fe->error_code = FE_ERROR_FILTER;
     }
 
-    /* If no property name, so we have to check with each Geometry_columns */
-    if (property->use == 0) {
-
-        /* retrieve the geometry matching the bbox */
-        if (!strcmp((char *) n->name, "Box") || !strcmp((char *) n->name, "Envelope")) {
-            envelope = buffer_init();
-            envelope = fe_envelope(o, typename, fe, envelope, n);
-        } else { fe->error_code = FE_ERROR_FILTER; }
+    buffer_add(fe->sql, '(');
+    for (ln = columns->first ; ln ; ln = ln->next) {
+      if (envelope) fe->sql = fe_bbox_layer(o, typename, fe->sql, ln->value, envelope);
+      if      (ln->next && (fe->in_not == 0 || !fe->in_not%2)) buffer_add_str(fe->sql, " OR ");
+      else if (ln->next && fe->in_not%2)                       buffer_add_str(fe->sql, " AND ");
+      else                                                     buffer_add_str(fe->sql, ")");
+    }
 
-        buffer_add(fe->sql, '(');
-        for (ln = columns->first ; ln ; ln = ln->next) {
-            if (envelope) fe->sql = fe_bbox_layer(o, typename, fe->sql, ln->value, envelope);
-            if      (ln->next && (fe->in_not == 0 || !fe->in_not%2)) buffer_add_str(fe->sql, " OR ");
-            else if (ln->next && fe->in_not%2)                       buffer_add_str(fe->sql, " AND ");
-            else                                                     buffer_add_str(fe->sql, ")");
-        }
+  } else {
+    n = n->next;
+    while (n->type != XML_ELEMENT_NODE) n = n->next;
 
+    if (!strcmp((char *) n->name, "Box") || !strcmp((char *) n->name, "Envelope")) {
+      if (!in_list(columns, property)) {
+        buffer_free(property);
+        fe->error_code = FE_ERROR_GEOM_PROPERTYNAME;
+        return fe->sql;
+      }
+      envelope = buffer_init();
+      envelope = fe_envelope(o, layer_name, fe, envelope, n);
     } else {
-        n = n->next;
-        while (n->type != XML_ELEMENT_NODE) n = n->next;
-
-        if (!strcmp((char *) n->name, "Box") || !strcmp((char *) n->name, "Envelope")) {
-            if (!in_list(columns, property)) {
-                  buffer_free(property);
-                  fe->error_code = FE_ERROR_GEOM_PROPERTYNAME;
-                  return fe->sql;
-            }
-            envelope = buffer_init();
-            envelope = fe_envelope(o, typename, fe, envelope, n);
-        } else { fe->error_code = FE_ERROR_FILTER; }
-
-        if (envelope) fe->sql = fe_bbox_layer(o, typename, fe->sql, property, envelope);
+      fe->error_code = FE_ERROR_FILTER;
     }
 
-    if (envelope) buffer_free(envelope);
-    buffer_free(property);
-    return fe->sql;
+    if (envelope) fe->sql = fe_bbox_layer(o, typename, fe->sql, property, envelope);
+  }
+
+  if (envelope) buffer_free(envelope);
+  buffer_free(property);
+  return fe->sql;
 }
 
 
@@ -530,30 +539,30 @@ static buffer *fe_bbox(ows * o, buffer * typename, filter_encoding * fe, xmlNode
  */
 buffer *fe_spatial_op(ows * o, buffer * typename, filter_encoding * fe, xmlNodePtr n)
 {
-    assert(o);
-    assert(typename);
-    assert(fe);
-    assert(n);
-
-    /* case sensitive comparison because the gml standard specifies
-       strictly the name of the operator */
-    if (    !strcmp((char *) n->name, "Equals") 
-         || !strcmp((char *) n->name, "Disjoint")
-         || !strcmp((char *) n->name, "Touches")
-         || !strcmp((char *) n->name, "Within")
-         || !strcmp((char *) n->name, "Overlaps")
-         || !strcmp((char *) n->name, "Crosses")
-         || !strcmp((char *) n->name, "Intersects")
-         || !strcmp((char *) n->name, "Contains"))
-        fe->sql = fe_spatial_functions(o, typename, fe, n);
-    else if (!strcmp((char *) n->name, "DWithin") || !strcmp((char *) n->name, "Beyond"))
-        fe->sql = fe_distance_functions(o, typename, fe, n);
-    else if (!strcmp((char *) n->name, "BBOX"))
-        fe->sql = fe_bbox(o, typename, fe, n);
-    else
-        fe->error_code = FE_ERROR_FILTER;
-
-    return fe->sql;
+  assert(o);
+  assert(typename);
+  assert(fe);
+  assert(n);
+
+  /* case sensitive comparison because the gml standard specifies
+     strictly the name of the operator */
+  if (    !strcmp((char *) n->name, "Equals")
+          || !strcmp((char *) n->name, "Disjoint")
+          || !strcmp((char *) n->name, "Touches")
+          || !strcmp((char *) n->name, "Within")
+          || !strcmp((char *) n->name, "Overlaps")
+          || !strcmp((char *) n->name, "Crosses")
+          || !strcmp((char *) n->name, "Intersects")
+          || !strcmp((char *) n->name, "Contains"))
+    fe->sql = fe_spatial_functions(o, typename, fe, n);
+  else if (!strcmp((char *) n->name, "DWithin") || !strcmp((char *) n->name, "Beyond"))
+    fe->sql = fe_distance_functions(o, typename, fe, n);
+  else if (!strcmp((char *) n->name, "BBOX"))
+    fe->sql = fe_bbox(o, typename, fe, n);
+  else
+    fe->error_code = FE_ERROR_FILTER;
+
+  return fe->sql;
 }
 
 
diff --git a/src/mapfile/mapfile.c b/src/mapfile/mapfile.c
index 878ee7e..e4e109a 100644
--- a/src/mapfile/mapfile.c
+++ b/src/mapfile/mapfile.c
@@ -9,7 +9,7 @@
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
 #define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 33
+#define YY_FLEX_SUBMINOR_VERSION 35
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
@@ -31,7 +31,7 @@
 
 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
 
-#if __STDC_VERSION__ >= 199901L
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
 
 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
  * if you want the limit (max/min) macros for int types. 
@@ -94,11 +94,12 @@ typedef unsigned int flex_uint32_t;
 
 #else	/* ! __cplusplus */
 
-#if __STDC__
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
 
 #define YY_USE_CONST
 
-#endif	/* __STDC__ */
+#endif	/* defined (__STDC__) */
 #endif	/* ! __cplusplus */
 
 #ifdef YY_USE_CONST
@@ -152,7 +153,12 @@ typedef unsigned int flex_uint32_t;
 typedef struct yy_buffer_state *YY_BUFFER_STATE;
 #endif
 
-extern int yyleng;
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+extern yy_size_t yyleng;
 
 extern FILE *yyin, *yyout;
 
@@ -178,16 +184,6 @@ extern FILE *yyin, *yyout;
 
 #define unput(c) yyunput( c, (yytext_ptr)  )
 
-/* The following is because we cannot portably get our hands on size_t
- * (without autoconf's help, which isn't available because we want
- * flex-generated scanners to compile on their own).
- */
-
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef unsigned int yy_size_t;
-#endif
-
 #ifndef YY_STRUCT_YY_BUFFER_STATE
 #define YY_STRUCT_YY_BUFFER_STATE
 struct yy_buffer_state
@@ -205,7 +201,7 @@ struct yy_buffer_state
 	/* Number of characters read into yy_ch_buf, not including EOB
 	 * characters.
 	 */
-	int yy_n_chars;
+	yy_size_t yy_n_chars;
 
 	/* Whether we "own" the buffer - i.e., we know we created it,
 	 * and can realloc() it to grow it, and should free() it to
@@ -275,8 +271,8 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
 
 /* yy_hold_char holds the character lost when yytext is formed. */
 static char yy_hold_char;
-static int yy_n_chars;		/* number of characters read into yy_ch_buf */
-int yyleng;
+static yy_size_t yy_n_chars;		/* number of characters read into yy_ch_buf */
+yy_size_t yyleng;
 
 /* Points to current character in buffer. */
 static char *yy_c_buf_p = (char *) 0;
@@ -304,7 +300,7 @@ static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
 
 YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size  );
 YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str  );
-YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len  );
+YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len  );
 
 void *yyalloc (yy_size_t  );
 void *yyrealloc (void *,yy_size_t  );
@@ -465,11 +461,11 @@ static yyconst flex_int32_t yy_ec[256] =
         1,    1,    1,    1,    8,    9,   10,   11,   12,   13,
        14,   15,   16,   17,   18,   19,   20,   21,   22,   23,
        24,   25,   26,   27,   28,   29,   30,   31,   32,   33,
-        1,    1,    1,    1,    7,    1,    8,    9,   10,   11,
+        1,    1,    1,    1,    7,    1,   34,   35,   36,   37,
 
-       12,   13,   14,   15,   16,   17,   18,   19,   20,   21,
-       22,   23,   24,   25,   26,   27,   28,   29,   30,   31,
-       32,   33,    1,    1,    1,    1,    1,    1,    1,    1,
+       38,   39,   40,   41,   42,   43,   44,   45,   46,   47,
+       48,   49,   50,   51,   52,   53,   54,   29,   55,   56,
+       57,   58,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -486,94 +482,96 @@ static yyconst flex_int32_t yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int32_t yy_meta[34] =
+static yyconst flex_int32_t yy_meta[59] =
     {   0,
         1,    2,    2,    1,    1,    1,    1,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3
     } ;
 
 static yyconst flex_int16_t yy_base[706] =
     {   0,
-        0,   19,   30,    0,   56,    0,   82,  101,  120,  131,
-      142,  153,  164,  175,  186,  205,  224,  235,  247,  270,
-      293,  320,  338,    0,  357,  383,   12,   13,   14,   22,
-      409,    0,  432,    0,   42,   43,  455,    0,   61,   62,
-       74,   75,   92,   94,  481,  504,  120,  142,  527,  544,
-      561,  580,  164,  178,  180,  181,  600,  617,  912,  913,
-      913,  913,  907,  913,  904,  888,  887,  899,  884,  897,
-      882,   16,    1,  895,  874,  876,  872,  887,   55,  886,
-      885,   95,  874,  883,  874,  871,    2,  880,  913,  913,
-      887,  884,  885,  882,    0,  115,   90,    0,  866,    0,
-
-      126,  210,    0,  865,  881,  878,  879,  876,    0,  860,
-      858,    0,  858,  853,   79,   36,  183,  852,  864,  853,
-      866,  861,  864,  844,  858,  851,  110,  843,  855,  858,
-      183,  853,  843,  841,  191,  854,   57,  845,  839,  837,
-      837,  835,  828,  830,  838,  828,  844,  839,  830,  841,
-      826,  839,  824,  825,  836,  131,  839,  836,  837,  913,
-      834,  828,  828,  814,  815,  808,  813,  825,  800,  817,
-      810,  802,  806,  815,  813,  817,  816,  803,  802,  812,
-      797,  794,  796,  809,  808,  801,  783,  786,  792,  807,
-      913,  804,  805,  913,  802,    0,  148,  803,    0,  215,
-
-      800,  794,    0,  170,  800,    0,  254,  797,  791,  797,
-      913,  794,  795,  913,  792,    0,  786,  770,    0,  784,
-      766,  785,  771,  764,  770,  781,  769,  765,   84,  778,
-      769,  775,  756,  762,  769,  749,  752,  755,  755,  744,
-      766,  742,  753,  144,  758,  752,  762,  742,  741,  734,
-      746,  754,  750,  744,  192,  741,  734,  744,  726,  750,
-      748,  736,  747,  729,  728,  732,  730,  742,  729,  732,
-      743,  913,  740,  913,  726,  913,  731,  735,  715,  727,
-      728,  727,  726,  714,  719,  710,  722,  714,  709,  722,
-      707,  913,  702,  706,  700,  715,  711,  913,  697,  715,
-
-      699,  913,    0,  913,    0,    0,  694,    0,  708,  693,
-      660,  664,  613,  608,  607,  605,  620,  602,  618,  607,
-      615,  618,  613,  604,  592,  913,  593,  589,  599,  602,
-      594,  603,  588,  583,  590,  586,  597,  583,  572,  586,
-      588,  568,  575,  570,  569,  563,  570,  566,  575,  563,
-      571,  557,  565,  560,  556,  563,  546,  558,  559,  549,
-      541,  552,  544,  537,  550,  536,  538,  913,  530,  544,
-      523,  529,  541,  540,  529,  531,  514,  520,  532,  530,
-      529,  527,  527,  518,  522,    0,  509,  522,  913,  913,
-      505,  518,  517,  913,  505,  515,  913,  507,  514,  913,
-
-      496,  913,  509,  496,  498,  498,  504,  493,  495,  913,
-      501,  487,  495,  494,  495,  490,  483,  489,  491,  477,
-      488,  913,  482,  471,  913,  913,  476,  475,  481,  480,
-      483,  913,  913,  478,  913,  462,  477,  473,  476,  471,
-      455,  913,  469,  452,  466,  455,  462,  464,  449,  452,
-      462,  913,  913,  444,  441,  201,  444,  453,  452,  443,
-      147,  447,  431,  428,  426,  913,  425,  224,  441,  913,
-      421,  913,  438,  913,  913,  426,  436,  427,  913,  414,
-      418,  413,  407,  414,  913,  913,  913,  416,  410,  414,
-      913,  418,  913,  399,  395,  913,  394,  407,  913,  391,
-
-      390,  384,  913,  402,  385,  403,  388,  400,  399,  380,
-      378,  913,  913,  396,  377,  378,  373,  371,  371,  371,
-      368,  367,  381,  376,  913,  913,  370,  363,  362,  360,
-      371,  913,  356,  355,  349,  368,  358,  366,  913,  355,
-      363,  347,  345,  913,  349,  913,  913,  343,  913,  346,
-      346,  351,  343,  355,  339,  336,  348,  344,  327,  331,
-      327,  337,  332,    0,  321,  330,  325,  913,  313,  325,
-      326,  329,  320,  323,  322,  321,  913,  321,  913,  310,
-      315,  318,  287,  306,  294,  304,  303,  289,  291,  913,
-      300,  913,  296,  283,  286,  293,  913,  299,  913,  913,
-
-      278,  284,  281,  290,  282,  272,  913,  269,  913,  913,
-      270,  267,  913,  913,  266,  913,  913,  260,  261,  913,
-      265,  263,  913,  913,  913,  275,  913,  254,  257,  913,
-      258,  258,  257,  913,  247,  913,  248,  247,  249,  243,
-      255,  913,  235,  249,  913,  231,  913,  239,  913,  224,
-      223,  222,  913,  216,  208,  913,  202,  206,  198,  197,
-      199,  913,  192,  170,  179,  913,  913,  913,  117,   97,
-       54,   24,  913,  913,  913,  913,  637,  640,  643,  646,
-      649,  652,  655,  658,  661,  664,  667,  670,  673,  676,
-      679,  682,  685,  688,  691,  694,  697,    8,    5,  700,
-
-      703,  706,  709,  712,  715
+        0,   45,   82,    0,  133,    0,    7,   20,   29,   52,
+       72,  152,  181,  192,  203,  208,  214,  229,  267,  316,
+      365,  418,  462,    0,  507,  558,   80,  120,  235,  240,
+      609,    0,  658,    0,  241,  242,  706,    0,  243,  260,
+      287,  288,  295,  333,  757,  806,  339,  340,  855,  898,
+      941,  986,  341,  342,  385,  386,  391,  394,  373, 1613,
+     1613, 1613,  360, 1613,  337,   13,   16,    9,   22,   11,
+       40,   95,  105,   60,   43,   48,  116,  135,  193,  138,
+      139,  388,  141,  153,  181,  191,  404,  226, 1613, 1613,
+      338,  326,  327,  321,    0,   26,   12,    0,  254,    0,
+
+       78,  292,    0,  278,  309,  306,  293,  290,    0,  288,
+      288,    0,  303,  323,  407,  433,  432,  338,  405,  436,
+      452,  450,  455,  437,  453,  448,  473,  444,  481,  488,
+      483,  488,  485,  491,  493,  509,  509,  502,  503,  506,
+      509,  509,  505,  510,  522,  520,  538,  543,  538,  557,
+      545,  560,  547,  550,  565,  567,  240,  237,  238, 1613,
+      231,  565,  567,  556,  559,  555,  562,  578,   54,  576,
+      572,  571,  585,  605,  606,  612,  614,  606,  610,  622,
+      609,  609,  616,  631,  633,  630,   58,  623,  639,  220,
+     1613,  209,  198, 1613,  194,    0,  165,  188,    0,  444,
+
+      155,  658,    0,  178,  153,    0,  669,  117,  662,  116,
+     1613,   71,   68, 1613,   63,    0,  666,  653,    0,  671,
+      655,  678,  668,  664,  676,  689,  679,  679,  704,  703,
+      705,  716,  703,  711,  721,  166,  707,  715,  717,  221,
+      732,  234,  723,  748,  734,  730,  755,  739,  743,  293,
+      751,  761,  766,  762,  772,  765,  760,  772,  420,  782,
+      782,  773,  787,  776,  780,  795,  797,  812,  803,  808,
+       35, 1613,   19, 1613,  809, 1613,  816,  822,  805,  821,
+      824,  825,  826,  816,  823,  818,  835,  834,  834,  858,
+      847, 1613,  845,  852,  851,  869,  867, 1613,  855,  876,
+
+      863, 1613,    0, 1613,    0,    0,  860,    0,  877,  864,
+      870,  887,  876,  878,  882,  895,  912,  896,  915,  906,
+      917,  922,  920,  913,  907, 1613,  914,  913,  926,  931,
+      928,  942,  940,  939,  951,  949,  962,  955,  948,  966,
+      970,  955,  965,  963,  964,  966,  975,  973,  991,  990,
+     1002,  992, 1002,  999,  998, 1010,  996, 1010, 1014, 1006,
+     1002, 1015, 1011, 1010, 1025, 1013, 1024, 1613, 1018, 1035,
+      721, 1026, 1042, 1043, 1036, 1040, 1029, 1040, 1054, 1055,
+     1056, 1057, 1059, 1055, 1061,    0, 1050, 1066, 1613, 1613,
+     1051, 1070, 1071, 1613, 1064, 1076, 1613, 1070, 1079, 1613,
+
+     1071, 1613, 1086, 1076, 1083, 1087, 1095, 1088, 1092, 1613,
+     1100, 1092, 1102, 1103, 1108, 1105, 1100, 1111, 1115, 1103,
+     1119, 1613, 1115, 1109, 1613, 1613, 1116, 1120, 1128, 1129,
+     1134, 1613, 1613, 1137, 1613, 1123, 1140, 1141, 1150, 1147,
+     1135, 1613, 1152, 1137, 1159, 1150, 1159, 1163, 1150, 1155,
+     1170, 1613, 1613, 1154, 1155, 1159, 1163, 1178, 1183, 1176,
+     1187, 1183, 1169, 1177, 1182, 1613, 1185, 1206, 1203, 1613,
+     1189, 1613, 1208, 1613, 1613, 1202, 1215, 1208, 1613, 1198,
+     1205, 1205, 1204, 1213, 1613, 1613, 1613, 1218, 1214, 1222,
+     1613, 1231, 1613, 1218, 1217, 1613, 1219, 1234, 1613, 1226,
+
+     1227, 1227, 1613, 1242, 1235, 1255, 1245, 1259, 1260, 1247,
+     1247, 1613, 1613, 1267, 1251, 1254, 1251, 1255, 1257, 1260,
+     1259, 1260, 1278, 1275, 1613, 1613, 1274, 1269, 1270, 1272,
+     1291, 1613, 1279, 1280, 1278, 1302, 1294, 1306, 1613, 1298,
+     1308, 1298, 1299, 1613, 1305, 1613, 1613, 1301, 1613, 1306,
+     1308, 1318, 1313, 1327, 1313, 1312, 1330, 1331, 1320, 1329,
+     1330, 1342, 1345,    0, 1336, 1347, 1345, 1613, 1339, 1353,
+     1358, 1363, 1356, 1365, 1366, 1367, 1613, 1370, 1613, 1361,
+     1368, 1376, 1356, 1377, 1367, 1379, 1382, 1370, 1377, 1613,
+     1388, 1613, 1386, 1375, 1386, 1395, 1613, 1403, 1613, 1613,
+
+     1386, 1398, 1397, 1410, 1404, 1404, 1613, 1407, 1613, 1613,
+     1410, 1409, 1613, 1613, 1410, 1613, 1613, 1406, 1409, 1613,
+     1418, 1418, 1613, 1613, 1613, 1433, 1613, 1415, 1420, 1613,
+     1425, 1427, 1439, 1613, 1431, 1613, 1434, 1435, 1445, 1441,
+     1455, 1613, 1439, 1458, 1613, 1444, 1613, 1458, 1613, 1453,
+     1454, 1459, 1613, 1455, 1456, 1613, 1453, 1459, 1465, 1466,
+     1472, 1613, 1482, 1472, 1486, 1613, 1613, 1613, 1474, 1491,
+     1484, 1484, 1613, 1613, 1613, 1613, 1531, 1534, 1537, 1540,
+     1543, 1546, 1549, 1552, 1555, 1558, 1561, 1564, 1567, 1570,
+     1573, 1576, 1579, 1582, 1585, 1588, 1591,   18,    5, 1594,
+
+     1597, 1600, 1603, 1606, 1609
     } ;
 
 static yyconst flex_int16_t yy_def[706] =
@@ -658,220 +656,380 @@ static yyconst flex_int16_t yy_def[706] =
       676,  676,  676,  676,  676
     } ;
 
-static yyconst flex_int16_t yy_nxt[947] =
+static yyconst flex_int16_t yy_nxt[1672] =
     {   0,
-      676,   61,   62,   63,   64,   65,   61,  219,  169,  187,
-      216,   66,  170,  188,  676,   67,   60,   60,   60,   68,
-       61,   62,   63,   64,   65,   61,   60,   60,   60,   60,
-       66,   60,   60,   60,   67,  168,  163,   60,   68,   69,
-       70,   60,   71,  224,  675,   72,   60,   60,   73,   60,
-       74,   75,   76,   77,   78,   79,   80,   60,   60,   81,
-       60,   60,   60,  225,  176,   60,   60,   82,   83,  177,
-       84,   85,  250,  674,   86,   87,   60,   60,   60,   60,
-       60,   60,   88,   89,   90,   91,  178,   92,  251,   60,
-       60,  201,  201,   60,   60,  199,   60,  222,   60,  317,
-
-      223,   60,   89,   90,   91,  318,   92,   60,  673,   60,
-      147,   60,  147,   60,  181,  162,  198,  198,  199,  182,
-       60,   89,   90,   93,   60,   94,   61,  205,  205,  206,
-      162,   66,   89,   90,   93,  149,   94,   61,  249,  150,
-      238,  672,   66,   61,   62,   96,   60,   97,   98,  198,
-      198,  199,  270,   99,   61,   62,   96,  149,   97,   98,
-      520,  150,  521,  333,   99,   89,   90,  101,   60,  102,
-      103,  205,  205,  206,  334,  104,   89,   90,  101,   60,
-      102,  103,   60,   60,   60,   60,  104,   89,   90,  105,
-      671,  106,  670,   60,  226,   60,   60,   60,  227,   60,
-
-       60,  345,  274,  669,  228,   60,   89,   90,  105,  242,
-      106,  208,  208,  247,  243,  206,  201,  201,  248,  668,
-      199,  667,  666,  514,   60,   89,   90,  107,  515,  108,
-       61,  527,  665,  664,  663,   66,   89,   90,  107,  528,
-      108,   61,  662,  661,  660,  659,   66,   60,   61,   62,
-       63,   60,   65,   61,  658,  208,  208,  657,  110,  206,
-      656,  655,  654,  653,  652,  651,  650,  649,  648,  111,
-       60,   61,   62,   63,   60,   65,   61,  647,  646,  645,
-      644,  110,  643,  642,  641,  640,  639,  638,  637,  636,
-      635,  634,  111,   60,   61,   62,   63,   60,   65,   61,
-
-      633,  632,  631,  630,  113,  629,  628,  627,  626,  625,
-      624,  623,  622,  621,  620,  619,  618,  617,  616,  114,
-       60,   61,   62,   63,   60,   65,   61,  615,  614,  613,
-      612,  113,  611,  610,  609,  608,  607,  606,  605,  604,
-      603,  602,  601,  600,  599,  598,  114,  115,  116,  597,
-      117,  118,  119,  596,  120,  595,  121,  122,  123,  594,
-       76,   60,  593,  592,  591,  590,  589,  588,  587,  586,
-      585,  584,  124,  583,  582,  581,   60,  580,  579,  578,
-      577,  576,  575,  125,  574,  573,  126,   60,  572,  571,
-      570,  569,  568,  567,  566,  565,  564,  563,  124,  562,
-
-      561,  560,   60,  559,  558,  557,  556,  555,  554,  125,
-      553,  552,  126,   60,  551,  550,  549,  548,  547,  546,
-      127,  545,  128,  544,   60,  543,  129,  130,   60,  542,
-      541,  540,  539,  538,  131,  132,   60,  537,  536,  133,
-      535,  134,  534,  533,  532,  531,  530,   60,  529,  526,
-      525,   60,  524,  135,  136,  523,  522,  137,  519,  518,
-      517,  138,  139,  516,  140,  513,  141,  142,  512,  511,
-      510,  509,  508,  507,  506,  505,  143,  144,  504,  503,
-      145,  502,  501,  500,  146,   60,  499,  498,  497,  496,
-      495,  494,  493,  492,  491,  490,   60,  489,  488,  147,
-
-       60,  487,  486,  485,  484,  483,  482,  148,   60,  481,
-      480,  479,  478,  477,  476,  475,  474,  473,  472,   60,
-      471,  470,  147,   60,  469,  468,  467,  466,  465,  464,
-      148,   60,  463,  462,  461,  460,  459,  458,  457,  151,
-      456,  455,   60,  454,  453,  452,   60,  152,   60,  451,
-      450,  449,  448,  447,  446,  445,  151,  444,  443,   60,
-      442,  441,  440,   60,  152,   60,  439,  438,  437,  436,
-      435,  434,  433,  153,  432,  431,  154,  430,  429,  428,
-       60,  155,  427,  156,   60,  426,  425,  424,  423,  422,
-      421,  420,  153,  419,  418,  154,  417,  416,  415,   60,
-
-      155,  414,  156,  157,   60,  158,  413,  412,  411,  410,
-      409,  408,  407,  406,  405,   60,  404,  403,  402,   60,
-      157,   60,  158,  401,  400,  399,  398,  397,  396,  395,
-      394,  393,   60,  392,  391,  390,   60,   60,   60,   60,
-       95,   95,   95,  100,  100,  100,  109,  109,  109,  112,
-      112,  112,  159,  159,  159,  161,  161,  161,  190,  190,
-      190,  192,  192,  192,  193,  193,  193,  195,  195,  195,
-      196,  389,  196,  197,  197,  197,  200,  200,  200,  203,
-      388,  203,  204,  204,  204,  207,  207,  207,  210,  210,
-      210,  212,  212,  212,  213,  213,  213,  215,  215,  215,
-
-      271,  271,  271,  273,  273,  273,  198,  198,  198,  201,
-      201,  201,  205,  205,  205,  208,  208,  208,  387,  386,
-      385,  384,  383,  382,  381,  380,  379,  378,  377,  376,
-      375,  374,  373,  372,  371,  370,  369,  368,  367,  366,
-      365,  364,  363,  362,  361,  272,  272,  360,  359,  358,
-      357,  356,  355,  354,  353,  352,  351,  350,  349,  348,
-      347,  346,  344,  343,  342,  341,  340,  339,  338,  337,
-      336,  335,  332,  331,  330,  329,  328,  327,  326,  325,
-      324,  323,  322,  321,  320,  319,  316,  315,  314,  313,
-      312,  311,  310,  309,  308,  307,  306,  214,  214,  211,
-
-      211,  305,  304,  304,  303,  302,  302,  194,  194,  191,
-      191,  301,  300,  299,  298,  297,  296,  295,  294,  293,
-      292,  291,  290,  289,  288,  287,  286,  285,  284,  283,
-      282,  281,  280,  279,  278,  277,  276,  275,  274,  160,
-      160,  272,  272,  269,  268,  267,  266,  265,  264,  263,
-      262,  261,  260,  259,  258,  257,  256,  255,  254,  253,
-      252,  249,  246,  245,  244,  241,  240,  239,  237,  236,
-      235,  234,  233,  232,  231,  230,  229,  221,  220,  218,
-      217,  214,  214,  211,  211,  209,  202,  194,  194,  191,
-      191,  189,  186,  185,  184,  183,  180,  179,  175,  174,
-
-      173,  172,  171,  167,  166,  165,  164,  163,  162,  160,
-      160,  676,   59,  676,  676,  676,  676,  676,  676,  676,
+      676,   61,   62,   63,   64,   65,   61,  219,   89,   90,
+       91,   66,   92,  201,  201,   67,  164,  199,  166,   68,
+      216,   89,   90,   91,  272,   92,   60,  198,  198,  199,
+       89,   90,   93,  162,   94,   61,  163,   66,  272,   60,
+       66,   67,  164,  165,  166,   68,   61,   62,   63,   64,
+       65,   61,   60,   89,   90,   93,   66,   94,   61,  162,
+       67,  167,  163,   66,   68,   60,   66,  171,  214,  165,
+      172,  214,  173,   61,   62,   96,  211,   97,   98,  205,
+      205,  206,   66,   99,   60,  281,   67,  167,  299,   66,
+       68,   69,   70,  171,   71,   60,  172,   72,  173,   60,
+
+       73,   60,   74,   75,   76,   77,   78,   79,   80,   99,
+      281,   81,  169,  299,  168,  163,  170,   69,   70,  211,
+       71,   60,  304,   72,   60,   60,   73,   60,   74,   75,
+       76,   77,   78,   79,   80,   60,   81,   60,  169,   60,
+      168,  163,  170,  174,   82,   83,  175,   84,   85,  179,
+      180,   86,   87,   61,   62,   96,  304,   97,   98,   88,
+      302,   60,  183,   99,  184,   60,  198,  198,  199,  174,
+       82,   83,  175,   84,   85,  179,  180,   86,   87,  205,
+      205,  206,   89,   90,  101,   88,  102,  103,  183,   99,
+      184,  302,  104,   89,   90,  101,  325,  102,  103,  194,
+
+      185,  194,  176,  104,   89,   90,  105,  177,  106,   89,
+       90,  105,  186,  106,  191,   89,   90,  107,  104,  108,
+       61,  325,   60,  191,  178,   66,  185,   60,  176,  104,
+       89,   90,  107,  177,  108,   61,  160,  189,  186,   60,
+       66,  160,  272,  272,   60,   60,   60,   60,   60,  178,
+       60,   66,  329,   60,   60,   60,   60,   60,   60,   60,
+       60,   60,   60,  189,   60,  331,   66,   60,   61,   62,
+       63,   60,   65,   61,  202,   60,   60,  329,  110,   60,
+       60,   60,   60,   60,   60,   60,   60,   60,   60,  111,
+      331,   60,   60,  208,  208,  214,  214,  206,  209,   60,
+
+      202,   60,   60,   60,  110,   60,   60,   60,  217,  218,
+       60,  211,  211,  147,   60,  111,   60,   61,   62,   63,
+       60,   65,   61,  220,  209,  340,  194,  110,   60,   60,
+      194,  191,   60,   60,  217,  218,   60,   60,  111,  147,
+       60,  191,  160,   60,   60,   60,   60,  221,   60,  220,
+      340,  147,   60,  110,  149,  149,   60,   60,  150,  150,
+       60,   60,  229,  160,  111,   60,   61,   62,   63,   60,
+       65,   61,  676,  221,   60,  676,  113,  147,   60,  676,
+      149,  149,   60,   60,  150,  150,   60,   60,  229,   60,
+       60,  114,  676,  676,  157,   60,  158,  157,   60,  158,
+
+       60,   60,  113,  676,   60,   60,   60,  181,  162,   60,
+       60,  187,  182,   60,  676,  188,  230,  114,   60,   61,
+       62,   63,   60,   65,   61,  222,   60,   60,  223,  113,
+       60,   60,   60,  181,  162,   60,   60,  187,  182,   60,
+      224,  188,  230,  226,  114,  201,  201,  227,  676,  199,
+      676,  222,  349,  228,  223,  113,  676,  231,  676,  232,
+      225,  233,  234,  235,  236,  237,  224,  676,  239,  226,
+      114,  115,  116,  227,  117,  118,  119,  349,  120,  228,
+      121,  122,  123,  231,   76,  232,  225,  233,  234,  235,
+      236,  237,  240,  162,  239,  241,  676,  115,  116,  244,
+
+      117,  118,  119,  238,  120,  245,  121,  122,  123,  242,
+       76,   60,  246,  676,  243,  247,  249,  252,  240,  162,
+      248,  241,  124,  253,  250,  244,   60,  254,  238,  255,
+      256,  245,  257,  125,  258,  242,  126,  259,  246,  243,
+      251,  247,  249,  252,  260,  261,  248,  676,  124,  253,
+      250,  676,   60,  254,  262,  255,  256,  263,  257,  125,
+      258,  126,   60,  259,  264,  251,  265,  266,  267,  268,
+      260,  261,  269,  124,  249,  274,  275,   60,  276,  277,
+      262,  278,  279,  263,  125,  280,  676,  126,  270,  282,
+      264,  283,  265,  266,  267,  268,  676,  284,  269,  124,
+
+      249,  274,  275,   60,  276,  277,  285,  278,  279,  676,
+      125,  280,  126,   60,  270,  282,  286,  283,  287,  288,
+      127,  289,  128,  284,   60,  290,  129,  130,   60,  291,
+      292,  293,  285,  294,  131,  132,  676,  295,  296,  676,
+      297,  676,  286,  298,  287,  288,  127,  289,  128,  300,
+       60,  290,  129,  130,   60,  291,  292,  293,  301,  294,
+      131,  132,   60,  295,  296,  133,  297,  134,  303,  298,
+      208,  208,  305,   60,  206,  300,  306,   60,  307,  135,
+      136,  308,  309,  137,  301,  310,  676,  138,  311,  676,
+      312,  133,  676,  134,  303,  313,  314,  315,  305,   60,
+
+      316,  676,  306,   60,  307,  135,  136,  308,  309,  137,
+      319,  310,  138,  139,  311,  140,  312,  141,  142,  317,
+      320,  313,  314,  315,  321,  318,  316,  143,  144,  322,
+      323,  145,  324,  326,  676,  146,  319,  327,  328,  139,
+      330,  140,  332,  141,  142,  317,  320,  335,  336,  676,
+      321,  318,  446,  143,  144,  322,  323,  145,  324,  326,
+      146,   60,  337,  327,  328,  338,  330,  333,  332,  339,
+      341,  342,   60,  335,  336,  147,   60,  446,  334,  343,
+      344,  345,  274,  148,  676,  346,  347,  348,  337,  350,
+      351,  338,  352,  333,  353,  339,  341,  342,   60,  676,
+
+      354,  147,   60,  334,  355,  343,  344,  345,  274,  148,
+       60,  346,  347,  348,  356,  350,  351,  357,  352,  358,
+      353,   60,  359,  360,  147,   60,  354,  361,  362,  363,
+      355,  364,  148,  676,  365,  366,  367,  368,  369,  370,
+      356,  676,  371,  357,  676,  358,  372,   60,  359,  360,
+      147,   60,  373,  361,  362,  363,  374,  364,  148,   60,
+      365,  366,  367,  368,  369,  370,  375,  151,  371,  376,
+       60,  377,  372,  378,   60,  152,  676,  379,  373,  380,
+      381,  382,  374,  383,  676,  384,  385,  676,  386,  387,
+      388,  676,  375,  151,  389,  376,   60,  377,  390,  378,
+
+       60,  152,   60,  379,  391,  380,  381,  382,  392,  383,
+      151,  384,  385,   60,  386,  387,  388,   60,  152,  676,
+      389,  393,  394,  395,  390,  396,  397,  676,  398,  399,
+      391,  400,  401,  402,  392,  676,  151,  676,  403,   60,
+      404,  405,  406,   60,  152,   60,  407,  393,  394,  395,
+      408,  396,  397,  153,  398,  399,  154,  400,  401,  402,
+       60,  155,  409,  156,  403,  410,  404,  405,  406,  411,
+      412,  413,  407,  414,  415,  676,  408,  416,  417,  153,
+      676,  418,  154,  419,  420,  421,   60,  155,  409,  156,
+       60,  410,  422,  423,  424,  411,  412,  413,  153,  414,
+
+      415,  154,  425,  416,  417,   60,  155,  418,  156,  419,
+      420,  421,  426,  427,  428,  429,  430,  431,  422,  423,
+      424,  432,  433,  434,  153,  435,  436,  154,  425,  437,
+      438,   60,  155,  439,  156,  440,  441,  442,  426,  427,
+      428,  429,  430,  431,  443,  444,  445,  432,  433,  434,
+      447,  435,  436,  448,  449,  437,  438,  450,  451,  439,
+      452,  440,  441,  442,  453,  454,  455,  456,  457,  458,
+      443,  444,  445,  459,  460,  461,  447,  462,  463,  448,
+      449,  464,  465,  450,  451,  452,  466,  467,  468,  469,
+      453,  454,  455,  456,  457,  458,  470,  471,  472,  459,
+
+      460,  461,  473,  462,  463,  474,  475,  464,  465,  476,
+      477,  478,  466,  467,  468,  469,  479,  480,  481,  482,
+      483,  484,  470,  471,  472,  485,  486,  487,  473,  488,
+      489,  474,  475,  490,  491,  476,  477,  478,  492,  493,
+      494,  495,  479,  480,  481,  482,  483,  484,  496,  497,
+      498,  485,  486,  487,  499,  488,  489,  500,  501,  490,
+      491,  502,  503,  504,  492,  493,  494,  495,  505,  506,
+      507,  508,  509,  510,  496,  497,  498,  511,  512,  513,
+      499,  514,  516,  500,  501,  517,  515,  502,  503,  504,
+      518,  519,  522,  523,  505,  506,  507,  508,  509,  510,
+
+      520,  524,  521,  511,  512,  513,  525,  514,  516,  526,
+      529,  517,  515,  527,  530,  531,  518,  519,  522,  523,
+      532,  528,  533,  534,  535,  536,  520,  524,  521,  537,
+      538,  539,  525,  540,  541,  526,  529,  542,  543,  527,
+      530,  531,  544,  545,  546,  547,  532,  528,  533,  534,
+      535,  536,  548,  549,  551,  537,  538,  539,  550,  540,
+      541,  552,  553,  542,  543,  554,  555,  556,  544,  545,
+      546,  547,  557,  558,  559,  560,  561,  562,  548,  549,
+      551,  563,  564,  550,  565,  566,  567,  552,  553,  568,
+      569,  554,  555,  556,  570,  571,  572,  573,  557,  558,
+
+      559,  560,  561,  562,  574,  575,  576,  563,  564,  577,
+      565,  566,  567,  578,  579,  568,  569,  580,  581,  582,
+      570,  571,  572,  573,  583,  584,  585,  586,  587,  588,
+      574,  575,  576,  589,  577,  590,  591,  592,  593,  578,
+      579,  594,  595,  580,  581,  582,  596,  597,  598,  599,
+      583,  584,  585,  586,  587,  588,  600,  601,  602,  589,
+      603,  590,  591,  592,  593,  604,  605,  594,  595,  606,
+      607,  608,  596,  597,  598,  599,  609,  610,  611,  612,
+      613,  614,  600,  601,  602,  615,  603,  616,  617,  618,
+      619,  604,  605,  620,  621,  606,  607,  608,  622,  623,
+
+      624,  625,  609,  610,  611,  612,  613,  614,  626,  627,
+      628,  615,  616,  629,  617,  618,  619,  630,  631,  620,
+      621,  632,  633,  634,  622,  623,  624,  625,  635,  636,
+      637,  638,  639,  640,  626,  627,  628,  641,  642,  629,
+      643,  644,  645,  630,  631,  646,  647,  632,  633,  634,
+      648,  649,  650,  651,  635,  636,  637,  638,  639,  640,
+      652,  653,  654,  641,  642,  655,  643,  644,  645,  656,
+      657,  646,  647,  658,  659,  660,  648,  649,  650,  651,
+      661,  662,  663,  676,  664,  665,  652,  653,  654,  666,
+      667,  655,  668,  669,  670,  656,  657,  671,  672,  658,
+
+      659,  660,  673,  674,  675,  676,  661,  662,  663,  664,
+      676,  665,  676,  676,  676,  666,  667,  676,  668,  669,
+      670,  676,  676,  671,  672,  676,  676,  676,  673,  674,
+      675,   60,   60,   60,   95,   95,   95,  100,  100,  100,
+      109,  109,  109,  112,  112,  112,  159,  159,  159,  161,
+      161,  161,  190,  190,  190,  192,  192,  192,  193,  193,
+      193,  195,  195,  195,  196,  676,  196,  197,  197,  197,
+      200,  200,  200,  203,  676,  203,  204,  204,  204,  207,
+      207,  207,  210,  210,  210,  212,  212,  212,  213,  213,
+      213,  215,  215,  215,  271,  271,  271,  273,  273,  273,
+
+      198,  198,  198,  201,  201,  201,  205,  205,  205,  208,
+      208,  208,   59,  676,  676,  676,  676,  676,  676,  676,
+      676,  676,  676,  676,  676,  676,  676,  676,  676,  676,
       676,  676,  676,  676,  676,  676,  676,  676,  676,  676,
       676,  676,  676,  676,  676,  676,  676,  676,  676,  676,
-      676,  676,  676,  676,  676,  676
+      676,  676,  676,  676,  676,  676,  676,  676,  676,  676,
+      676,  676,  676,  676,  676,  676,  676,  676,  676,  676,
+      676
     } ;
 
-static yyconst flex_int16_t yy_chk[947] =
+static yyconst flex_int16_t yy_chk[1672] =
     {   0,
-        0,    1,    1,    1,    1,    1,    1,  699,   73,   87,
-      698,    1,   73,   87,    0,    1,   27,   28,   29,    1,
-        2,    2,    2,    2,    2,    2,   30,   27,   28,   29,
-        2,   27,   28,   29,    2,   72,   72,   30,    2,    3,
-        3,   30,    3,  116,  672,    3,   35,   36,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,   35,   36,    3,
-        5,   35,   36,  116,   79,   39,   40,    5,    5,   79,
-        5,    5,  137,  671,    5,    5,   39,   40,   41,   42,
-       39,   40,    5,    7,    7,    7,   79,    7,  137,   41,
-       42,   97,   97,   41,   42,   97,   43,  115,   44,  229,
-
-      115,    7,    8,    8,    8,  229,    8,   43,  670,   44,
-       43,   43,   44,   44,   82,   82,   96,   96,   96,   82,
-        8,    9,    9,    9,   47,    9,    9,  101,  101,  101,
-      127,    9,   10,   10,   10,   47,   10,   10,  156,   47,
-      127,  669,   10,   11,   11,   11,   48,   11,   11,  197,
-      197,  197,  156,   11,   12,   12,   12,   48,   12,   12,
-      461,   48,  461,  244,   12,   13,   13,   13,   53,   13,
-       13,  204,  204,  204,  244,   13,   14,   14,   14,   53,
-       14,   14,   54,   53,   55,   56,   14,   15,   15,   15,
-      665,   15,  664,   54,  117,   55,   56,   54,  117,   55,
-
-       56,  255,  255,  663,  117,   15,   16,   16,   16,  131,
-       16,  102,  102,  135,  131,  102,  200,  200,  135,  661,
-      200,  660,  659,  456,   16,   17,   17,   17,  456,   17,
-       17,  468,  658,  657,  655,   17,   18,   18,   18,  468,
-       18,   18,  654,  652,  651,  650,   18,   19,   19,   19,
-       19,   19,   19,   19,  648,  207,  207,  646,   19,  207,
-      644,  643,  641,  640,  639,  638,  637,  635,  633,   19,
-       20,   20,   20,   20,   20,   20,   20,  632,  631,  629,
-      628,   20,  626,  622,  621,  619,  618,  615,  612,  611,
-      608,  606,   20,   21,   21,   21,   21,   21,   21,   21,
-
-      605,  604,  603,  602,   21,  601,  598,  596,  595,  594,
-      593,  591,  589,  588,  587,  586,  585,  584,  583,   21,
-       22,   22,   22,   22,   22,   22,   22,  582,  581,  580,
-      578,   22,  576,  575,  574,  573,  572,  571,  570,  569,
-      567,  566,  565,  563,  562,  561,   22,   23,   23,  560,
-       23,   23,   23,  559,   23,  558,   23,   23,   23,  557,
-       23,   25,  556,  555,  554,  553,  552,  551,  550,  548,
-      545,  543,   25,  542,  541,  540,   25,  538,  537,  536,
-      535,  534,  533,   25,  531,  530,   25,   26,  529,  528,
-      527,  524,  523,  522,  521,  520,  519,  518,   26,  517,
-
-      516,  515,   26,  514,  511,  510,  509,  508,  507,   26,
-      506,  505,   26,   31,  504,  502,  501,  500,  498,  497,
-       31,  495,   31,  494,   31,  492,   31,   31,   31,  490,
-      489,  488,  484,  483,   31,   31,   33,  482,  481,   33,
-      480,   33,  478,  477,  476,  473,  471,   33,  469,  467,
-      465,   33,  464,   33,   33,  463,  462,   33,  460,  459,
-      458,   33,   37,  457,   37,  455,   37,   37,  454,  451,
-      450,  449,  448,  447,  446,  445,   37,   37,  444,  443,
-       37,  441,  440,  439,   37,   45,  438,  437,  436,  434,
-      431,  430,  429,  428,  427,  424,   45,  423,  421,   45,
-
-       45,  420,  419,  418,  417,  416,  415,   45,   46,  414,
-      413,  412,  411,  409,  408,  407,  406,  405,  404,   46,
-      403,  401,   46,   46,  399,  398,  396,  395,  393,  392,
-       46,   49,  391,  388,  387,  385,  384,  383,  382,   49,
-      381,  380,   49,  379,  378,  377,   49,   49,   50,  376,
-      375,  374,  373,  372,  371,  370,   50,  369,  367,   50,
-      366,  365,  364,   50,   50,   51,  363,  362,  361,  360,
-      359,  358,  357,   51,  356,  355,   51,  354,  353,  352,
-       51,   51,  351,   51,   52,  350,  349,  348,  347,  346,
-      345,  344,   52,  343,  342,   52,  341,  340,  339,   52,
-
-       52,  338,   52,   57,   57,   57,  337,  336,  335,  334,
-      333,  332,  331,  330,  329,   57,  328,  327,  325,   57,
-       58,   58,   58,  324,  323,  322,  321,  320,  319,  318,
-      317,  316,   58,  315,  314,  313,   58,  677,  677,  677,
-      678,  678,  678,  679,  679,  679,  680,  680,  680,  681,
-      681,  681,  682,  682,  682,  683,  683,  683,  684,  684,
-      684,  685,  685,  685,  686,  686,  686,  687,  687,  687,
-      688,  312,  688,  689,  689,  689,  690,  690,  690,  691,
-      311,  691,  692,  692,  692,  693,  693,  693,  694,  694,
-      694,  695,  695,  695,  696,  696,  696,  697,  697,  697,
-
-      700,  700,  700,  701,  701,  701,  702,  702,  702,  703,
-      703,  703,  704,  704,  704,  705,  705,  705,  310,  309,
-      307,  301,  300,  299,  297,  296,  295,  294,  293,  291,
-      290,  289,  288,  287,  286,  285,  284,  283,  282,  281,
-      280,  279,  278,  277,  275,  273,  271,  270,  269,  268,
-      267,  266,  265,  264,  263,  262,  261,  260,  259,  258,
-      257,  256,  254,  253,  252,  251,  250,  249,  248,  247,
-      246,  245,  243,  242,  241,  240,  239,  238,  237,  236,
-      235,  234,  233,  232,  231,  230,  228,  227,  226,  225,
-      224,  223,  222,  221,  220,  218,  217,  215,  213,  212,
-
-      210,  209,  208,  205,  202,  201,  198,  195,  193,  192,
-      190,  189,  188,  187,  186,  185,  184,  183,  182,  181,
-      180,  179,  178,  177,  176,  175,  174,  173,  172,  171,
-      170,  169,  168,  167,  166,  165,  164,  163,  162,  161,
-      159,  158,  157,  155,  154,  153,  152,  151,  150,  149,
-      148,  147,  146,  145,  144,  143,  142,  141,  140,  139,
-      138,  136,  134,  133,  132,  130,  129,  128,  126,  125,
-      124,  123,  122,  121,  120,  119,  118,  114,  113,  111,
-      110,  108,  107,  106,  105,  104,   99,   94,   93,   92,
-       91,   88,   86,   85,   84,   83,   81,   80,   78,   77,
-
-       76,   75,   74,   71,   70,   69,   68,   67,   66,   65,
-       63,   59,  676,  676,  676,  676,  676,  676,  676,  676,
+        0,    1,    1,    1,    1,    1,    1,  699,    7,    7,
+        7,    1,    7,   97,   97,    1,   68,   97,   70,    1,
+      698,    8,    8,    8,  273,    8,    7,   96,   96,   96,
+        9,    9,    9,   66,    9,    9,   67,    1,  271,    8,
+        9,    1,   68,   69,   70,    1,    2,    2,    2,    2,
+        2,    2,    7,   10,   10,   10,    2,   10,   10,   66,
+        2,   71,   67,   10,    2,    8,    9,   74,  215,   69,
+       75,  213,   76,   11,   11,   11,  212,   11,   11,  101,
+      101,  101,    2,   11,   27,  169,    2,   71,  187,   10,
+        2,    3,    3,   74,    3,   27,   75,    3,   76,   27,
+
+        3,    3,    3,    3,    3,    3,    3,    3,    3,   11,
+      169,    3,   73,  187,   72,   72,   73,    3,    3,  210,
+        3,   27,  208,    3,   28,   27,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,   28,    3,    5,   73,   28,
+       72,   72,   73,   77,    5,    5,   78,    5,    5,   80,
+       81,    5,    5,   12,   12,   12,  205,   12,   12,    5,
+      201,   28,   83,   12,   84,   28,  197,  197,  197,   77,
+        5,    5,   78,    5,    5,   80,   81,    5,    5,  204,
+      204,  204,   13,   13,   13,    5,   13,   13,   83,   12,
+       84,  198,   13,   14,   14,   14,  236,   14,   14,  195,
+
+       85,  193,   79,   14,   15,   15,   15,   79,   15,   16,
+       16,   16,   86,   16,  192,   17,   17,   17,   13,   17,
+       17,  236,   15,  190,   79,   17,   85,   16,   79,   14,
+       18,   18,   18,   79,   18,   18,  161,   88,   86,   29,
+       18,  159,  158,  157,   30,   35,   36,   39,   15,   79,
+       29,   17,  240,   16,   29,   30,   35,   36,   39,   30,
+       35,   36,   39,   88,   40,  242,   18,   19,   19,   19,
+       19,   19,   19,   19,   99,   40,   29,  240,   19,   40,
+       29,   30,   35,   36,   39,   30,   35,   36,   39,   19,
+      242,   41,   42,  102,  102,  108,  107,  102,  104,   43,
+
+       99,   40,   41,   42,   19,   40,   41,   42,  110,  111,
+       43,  106,  105,   43,   43,   19,   20,   20,   20,   20,
+       20,   20,   20,  113,  104,  250,   94,   20,   41,   42,
+       93,   92,   41,   42,  110,  111,   43,   44,   20,   43,
+       43,   91,   65,   47,   48,   53,   54,  114,   44,  113,
+      250,   44,   44,   20,   47,   48,   53,   54,   47,   48,
+       53,   54,  118,   63,   20,   21,   21,   21,   21,   21,
+       21,   21,   59,  114,   44,    0,   21,   44,   44,    0,
+       47,   48,   53,   54,   47,   48,   53,   54,  118,   55,
+       56,   21,    0,    0,   57,   57,   57,   58,   58,   58,
+
+       55,   56,   21,    0,   55,   56,   57,   82,   82,   58,
+       57,   87,   82,   58,    0,   87,  119,   21,   22,   22,
+       22,   22,   22,   22,   22,  115,   55,   56,  115,   22,
+       55,   56,   57,   82,   82,   58,   57,   87,   82,   58,
+      116,   87,  119,  117,   22,  200,  200,  117,    0,  200,
+        0,  115,  259,  117,  115,   22,    0,  120,    0,  121,
+      116,  122,  123,  124,  125,  126,  116,    0,  128,  117,
+       22,   23,   23,  117,   23,   23,   23,  259,   23,  117,
+       23,   23,   23,  120,   23,  121,  116,  122,  123,  124,
+      125,  126,  129,  127,  128,  130,    0,   23,   23,  132,
+
+       23,   23,   23,  127,   23,  133,   23,   23,   23,  131,
+       23,   25,  134,    0,  131,  135,  136,  138,  129,  127,
+      135,  130,   25,  139,  137,  132,   25,  140,  127,  141,
+      142,  133,  143,   25,  144,  131,   25,  145,  134,  131,
+      137,  135,  136,  138,  146,  147,  135,    0,   25,  139,
+      137,    0,   25,  140,  148,  141,  142,  149,  143,   25,
+      144,   25,   26,  145,  150,  137,  151,  152,  153,  154,
+      146,  147,  155,   26,  156,  162,  163,   26,  164,  165,
+      148,  166,  167,  149,   26,  168,    0,   26,  156,  170,
+      150,  171,  151,  152,  153,  154,    0,  172,  155,   26,
+
+      156,  162,  163,   26,  164,  165,  173,  166,  167,    0,
+       26,  168,   26,   31,  156,  170,  174,  171,  175,  176,
+       31,  177,   31,  172,   31,  178,   31,   31,   31,  179,
+      180,  181,  173,  182,   31,   31,    0,  183,  184,    0,
+      185,    0,  174,  186,  175,  176,   31,  177,   31,  188,
+       31,  178,   31,   31,   31,  179,  180,  181,  189,  182,
+       31,   31,   33,  183,  184,   33,  185,   33,  202,  186,
+      207,  207,  209,   33,  207,  188,  217,   33,  218,   33,
+       33,  220,  221,   33,  189,  222,    0,   33,  223,    0,
+      224,   33,    0,   33,  202,  225,  226,  227,  209,   33,
+
+      228,    0,  217,   33,  218,   33,   33,  220,  221,   33,
+      230,  222,   33,   37,  223,   37,  224,   37,   37,  229,
+      231,  225,  226,  227,  232,  229,  228,   37,   37,  233,
+      234,   37,  235,  237,    0,   37,  230,  238,  239,   37,
+      241,   37,  243,   37,   37,  229,  231,  245,  246,    0,
+      232,  229,  371,   37,   37,  233,  234,   37,  235,  237,
+       37,   45,  247,  238,  239,  248,  241,  244,  243,  249,
+      251,  252,   45,  245,  246,   45,   45,  371,  244,  253,
+      254,  255,  255,   45,    0,  256,  257,  258,  247,  260,
+      261,  248,  262,  244,  263,  249,  251,  252,   45,    0,
+
+      264,   45,   45,  244,  265,  253,  254,  255,  255,   45,
+       46,  256,  257,  258,  266,  260,  261,  267,  262,  268,
+      263,   46,  269,  270,   46,   46,  264,  275,  277,  278,
+      265,  279,   46,    0,  280,  281,  282,  283,  284,  285,
+      266,    0,  286,  267,    0,  268,  287,   46,  269,  270,
+       46,   46,  288,  275,  277,  278,  289,  279,   46,   49,
+      280,  281,  282,  283,  284,  285,  290,   49,  286,  291,
+       49,  293,  287,  294,   49,   49,    0,  295,  288,  296,
+      297,  299,  289,  300,    0,  301,  307,    0,  309,  310,
+      311,    0,  290,   49,  312,  291,   49,  293,  313,  294,
+
+       49,   49,   50,  295,  314,  296,  297,  299,  315,  300,
+       50,  301,  307,   50,  309,  310,  311,   50,   50,    0,
+      312,  316,  317,  318,  313,  319,  320,    0,  321,  322,
+      314,  323,  324,  325,  315,    0,   50,    0,  327,   50,
+      328,  329,  330,   50,   50,   51,  331,  316,  317,  318,
+      332,  319,  320,   51,  321,  322,   51,  323,  324,  325,
+       51,   51,  333,   51,  327,  334,  328,  329,  330,  335,
+      336,  337,  331,  338,  339,    0,  332,  340,  341,   51,
+        0,  342,   51,  343,  344,  345,   51,   51,  333,   51,
+       52,  334,  346,  347,  348,  335,  336,  337,   52,  338,
+
+      339,   52,  349,  340,  341,   52,   52,  342,   52,  343,
+      344,  345,  350,  351,  352,  353,  354,  355,  346,  347,
+      348,  356,  357,  358,   52,  359,  360,   52,  349,  361,
+      362,   52,   52,  363,   52,  364,  365,  366,  350,  351,
+      352,  353,  354,  355,  367,  369,  370,  356,  357,  358,
+      372,  359,  360,  373,  374,  361,  362,  375,  376,  363,
+      377,  364,  365,  366,  378,  379,  380,  381,  382,  383,
+      367,  369,  370,  384,  385,  387,  372,  388,  391,  373,
+      374,  392,  393,  375,  376,  377,  395,  396,  398,  399,
+      378,  379,  380,  381,  382,  383,  401,  403,  404,  384,
+
+      385,  387,  405,  388,  391,  406,  407,  392,  393,  408,
+      409,  411,  395,  396,  398,  399,  412,  413,  414,  415,
+      416,  417,  401,  403,  404,  418,  419,  420,  405,  421,
+      423,  406,  407,  424,  427,  408,  409,  411,  428,  429,
+      430,  431,  412,  413,  414,  415,  416,  417,  434,  436,
+      437,  418,  419,  420,  438,  421,  423,  439,  440,  424,
+      427,  441,  443,  444,  428,  429,  430,  431,  445,  446,
+      447,  448,  449,  450,  434,  436,  437,  451,  454,  455,
+      438,  456,  457,  439,  440,  458,  456,  441,  443,  444,
+      459,  460,  462,  463,  445,  446,  447,  448,  449,  450,
+
+      461,  464,  461,  451,  454,  455,  465,  456,  457,  467,
+      469,  458,  456,  468,  471,  473,  459,  460,  462,  463,
+      476,  468,  477,  478,  480,  481,  461,  464,  461,  482,
+      483,  484,  465,  488,  489,  467,  469,  490,  492,  468,
+      471,  473,  494,  495,  497,  498,  476,  468,  477,  478,
+      480,  481,  500,  501,  504,  482,  483,  484,  502,  488,
+      489,  505,  506,  490,  492,  507,  508,  509,  494,  495,
+      497,  498,  510,  511,  514,  515,  516,  517,  500,  501,
+      504,  518,  519,  502,  520,  521,  522,  505,  506,  523,
+      524,  507,  508,  509,  527,  528,  529,  530,  510,  511,
+
+      514,  515,  516,  517,  531,  533,  534,  518,  519,  535,
+      520,  521,  522,  536,  537,  523,  524,  538,  540,  541,
+      527,  528,  529,  530,  542,  543,  545,  548,  550,  551,
+      531,  533,  534,  552,  535,  553,  554,  555,  556,  536,
+      537,  557,  558,  538,  540,  541,  559,  560,  561,  562,
+      542,  543,  545,  548,  550,  551,  563,  565,  566,  552,
+      567,  553,  554,  555,  556,  569,  570,  557,  558,  571,
+      572,  573,  559,  560,  561,  562,  574,  575,  576,  578,
+      580,  581,  563,  565,  566,  582,  567,  583,  584,  585,
+      586,  569,  570,  587,  588,  571,  572,  573,  589,  591,
+
+      593,  594,  574,  575,  576,  578,  580,  581,  595,  596,
+      598,  582,  583,  601,  584,  585,  586,  602,  603,  587,
+      588,  604,  605,  606,  589,  591,  593,  594,  608,  611,
+      612,  615,  618,  619,  595,  596,  598,  621,  622,  601,
+      626,  628,  629,  602,  603,  631,  632,  604,  605,  606,
+      633,  635,  637,  638,  608,  611,  612,  615,  618,  619,
+      639,  640,  641,  621,  622,  643,  626,  628,  629,  644,
+      646,  631,  632,  648,  650,  651,  633,  635,  637,  638,
+      652,  654,  655,    0,  657,  658,  639,  640,  641,  659,
+      660,  643,  661,  663,  664,  644,  646,  665,  669,  648,
+
+      650,  651,  670,  671,  672,    0,  652,  654,  655,  657,
+        0,  658,    0,    0,    0,  659,  660,    0,  661,  663,
+      664,    0,    0,  665,  669,    0,    0,    0,  670,  671,
+      672,  677,  677,  677,  678,  678,  678,  679,  679,  679,
+      680,  680,  680,  681,  681,  681,  682,  682,  682,  683,
+      683,  683,  684,  684,  684,  685,  685,  685,  686,  686,
+      686,  687,  687,  687,  688,    0,  688,  689,  689,  689,
+      690,  690,  690,  691,    0,  691,  692,  692,  692,  693,
+      693,  693,  694,  694,  694,  695,  695,  695,  696,  696,
+      696,  697,  697,  697,  700,  700,  700,  701,  701,  701,
+
+      702,  702,  702,  703,  703,  703,  704,  704,  704,  705,
+      705,  705,  676,  676,  676,  676,  676,  676,  676,  676,
+      676,  676,  676,  676,  676,  676,  676,  676,  676,  676,
       676,  676,  676,  676,  676,  676,  676,  676,  676,  676,
       676,  676,  676,  676,  676,  676,  676,  676,  676,  676,
-      676,  676,  676,  676,  676,  676
+      676,  676,  676,  676,  676,  676,  676,  676,  676,  676,
+      676,  676,  676,  676,  676,  676,  676,  676,  676,  676,
+      676
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1300,7 +1458,7 @@ static void metadata_layer_key(char *yytext, bool quotes)
 	else if(!strncmp("tinyows_writable", yytext, 16))
 		map_lmd_state = MAP_LMD_TOWS_WRITABLE;
 	else if(!strncmp("tinyows_geobbox", yytext, 15))
-		map_md_state = MAP_LMD_TOWS_GEOBBOX;
+		map_lmd_state = MAP_LMD_TOWS_GEOBBOX;
 	else if(!strncmp("tinyows_gml_ns_list", yytext, 19))
 		map_lmd_state = MAP_LMD_TOWS_GML_NS_LIST;
 	else map_lmd_state = MAP_LMD_SKIP;
@@ -1334,6 +1492,10 @@ static void metadata_layer_value(char *yytext, bool quotes)
 		return;
 	case MAP_LMD_NAMESPACE_PREFIX:
 		buffer_add_str(map_l->ns_prefix, yytext);
+                if (map_l->name->use) {
+                    buffer_add_head(map_l->name, ':');
+                    buffer_add_head_str(map_l->name, yytext); 
+                }
 		return;
 	case MAP_LMD_SRS:
 		map_l->srid = list_explode_str(',', yytext);
@@ -1425,9 +1587,21 @@ static void end_layer()
 		if (!map_l->storage->schema->use)
 			buffer_add_str(map_l->storage->schema, "public");
 		if (!map_is_dump) map_l->retrievable=map_l->writable = false;
+
+                buffer_copy(map_l->name_prefix, map_l->name);
+                if (map_l->ns_prefix->use) {
+                    buffer_add_head(map_l->name_prefix, ':');
+                    buffer_add_head_str(map_l->name_prefix, map_l->ns_prefix->buf);
+                }
+
+                buffer_copy(map_l->name_no_uri, map_l->name);
+                if (map_l->ns_uri->use) {
+                    buffer_add_head(map_l->name, ':');
+                    buffer_add_head_str(map_l->name, map_l->ns_uri->buf);
+                }
+
 		ows_layer_list_add(map_o->layers, map_l);
 	}
-
 		
 	map_is_dump = map_is_postgis = false;
 }
@@ -1461,7 +1635,7 @@ static void end_layer()
 
 
 
-#line 1465 "src/mapfile/mapfile.c"
+#line 1639 "src/mapfile/mapfile.c"
 
 #define INITIAL 0
 #define MAP 1
@@ -1507,6 +1681,35 @@ static void end_layer()
 
 static int yy_init_globals (void );
 
+/* Accessor methods to globals.
+   These are made visible to non-reentrant scanners for convenience. */
+
+int yylex_destroy (void );
+
+int yyget_debug (void );
+
+void yyset_debug (int debug_flag  );
+
+YY_EXTRA_TYPE yyget_extra (void );
+
+void yyset_extra (YY_EXTRA_TYPE user_defined  );
+
+FILE *yyget_in (void );
+
+void yyset_in  (FILE * in_str  );
+
+FILE *yyget_out (void );
+
+void yyset_out  (FILE * out_str  );
+
+yy_size_t yyget_leng (void );
+
+char *yyget_text (void );
+
+int yyget_lineno (void );
+
+void yyset_lineno (int line_number  );
+
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
  */
@@ -1557,7 +1760,7 @@ static int input (void );
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
+#define ECHO fwrite( yytext, yyleng, 1, yyout )
 #endif
 
 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
@@ -1568,7 +1771,7 @@ static int input (void );
 	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
 		{ \
 		int c = '*'; \
-		size_t n; \
+		yy_size_t n; \
 		for ( n = 0; n < max_size && \
 			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
 			buf[n] = (char) c; \
@@ -1650,10 +1853,10 @@ YY_DECL
 	register char *yy_cp, *yy_bp;
 	register int yy_act;
     
-#line 582 "src/mapfile/mapfile.l"
+#line 598 "src/mapfile/mapfile.l"
 
 
-#line 1657 "src/mapfile/mapfile.c"
+#line 1860 "src/mapfile/mapfile.c"
 
 	if ( !(yy_init) )
 		{
@@ -1734,23 +1937,23 @@ do_action:	/* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 584 "src/mapfile/mapfile.l"
+#line 600 "src/mapfile/mapfile.l"
 { char c ; for (c=input() ; c && c != '\n' ; c=input()); }
 	YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 585 "src/mapfile/mapfile.l"
+#line 601 "src/mapfile/mapfile.l"
 { yy_push_state(INCLUDE); OWS_MAP_DBG }
 	YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 588 "src/mapfile/mapfile.l"
+#line 604 "src/mapfile/mapfile.l"
 { /*LEGEND rule must appears before END... */
 				  yy_push_state(LEGEND); OWS_MAP_DBG }
 	YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 591 "src/mapfile/mapfile.l"
+#line 607 "src/mapfile/mapfile.l"
 { 
 				 OWS_MAP_EATLINE
 				 if (yy_top_state() == INITIAL && YY_START != MAP) { 
@@ -1764,483 +1967,483 @@ YY_RULE_SETUP
 	YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 602 "src/mapfile/mapfile.l"
+#line 618 "src/mapfile/mapfile.l"
 { yy_push_state(MAP); OWS_MAP_DBG }
 	YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 603 "src/mapfile/mapfile.l"
+#line 619 "src/mapfile/mapfile.l"
 { yy_push_state(WEB); OWS_MAP_DBG }
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 604 "src/mapfile/mapfile.l"
+#line 620 "src/mapfile/mapfile.l"
 { yy_push_state(QUERYMAP); OWS_MAP_DBG }
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 605 "src/mapfile/mapfile.l"
+#line 621 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE /* must be before SYMBOL */ }
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 606 "src/mapfile/mapfile.l"
+#line 622 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 607 "src/mapfile/mapfile.l"
+#line 623 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 608 "src/mapfile/mapfile.l"
+#line 624 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 609 "src/mapfile/mapfile.l"
+#line 625 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 610 "src/mapfile/mapfile.l"
+#line 626 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 611 "src/mapfile/mapfile.l"
+#line 627 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 612 "src/mapfile/mapfile.l"
+#line 628 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 613 "src/mapfile/mapfile.l"
+#line 629 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 614 "src/mapfile/mapfile.l"
+#line 630 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 615 "src/mapfile/mapfile.l"
+#line 631 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 616 "src/mapfile/mapfile.l"
+#line 632 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 617 "src/mapfile/mapfile.l"
+#line 633 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 618 "src/mapfile/mapfile.l"
+#line 634 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 619 "src/mapfile/mapfile.l"
+#line 635 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 620 "src/mapfile/mapfile.l"
+#line 636 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 621 "src/mapfile/mapfile.l"
+#line 637 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 622 "src/mapfile/mapfile.l"
+#line 638 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 623 "src/mapfile/mapfile.l"
+#line 639 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 624 "src/mapfile/mapfile.l"
+#line 640 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 625 "src/mapfile/mapfile.l"
+#line 641 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 626 "src/mapfile/mapfile.l"
+#line 642 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 627 "src/mapfile/mapfile.l"
+#line 643 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 628 "src/mapfile/mapfile.l"
+#line 644 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 629 "src/mapfile/mapfile.l"
+#line 645 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 630 "src/mapfile/mapfile.l"
+#line 646 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 631 "src/mapfile/mapfile.l"
+#line 647 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 632 "src/mapfile/mapfile.l"
+#line 648 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 633 "src/mapfile/mapfile.l"
+#line 649 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 634 "src/mapfile/mapfile.l"
+#line 650 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 635 "src/mapfile/mapfile.l"
+#line 651 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 636 "src/mapfile/mapfile.l"
+#line 652 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 637 "src/mapfile/mapfile.l"
+#line 653 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 638 "src/mapfile/mapfile.l"
+#line 654 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 639 "src/mapfile/mapfile.l"
+#line 655 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 640 "src/mapfile/mapfile.l"
+#line 656 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 641 "src/mapfile/mapfile.l"
+#line 657 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 642 "src/mapfile/mapfile.l"
+#line 658 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 643 "src/mapfile/mapfile.l"
+#line 659 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 644 "src/mapfile/mapfile.l"
+#line 660 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 645 "src/mapfile/mapfile.l"
+#line 661 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 646 "src/mapfile/mapfile.l"
+#line 662 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 647 "src/mapfile/mapfile.l"
+#line 663 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 648 "src/mapfile/mapfile.l"
+#line 664 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 649 "src/mapfile/mapfile.l"
+#line 665 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 650 "src/mapfile/mapfile.l"
+#line 666 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 651 "src/mapfile/mapfile.l"
+#line 667 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 652 "src/mapfile/mapfile.l"
+#line 668 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 653 "src/mapfile/mapfile.l"
+#line 669 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 654 "src/mapfile/mapfile.l"
+#line 670 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 655 "src/mapfile/mapfile.l"
+#line 671 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 656 "src/mapfile/mapfile.l"
+#line 672 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 657 "src/mapfile/mapfile.l"
+#line 673 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 658 "src/mapfile/mapfile.l"
+#line 674 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 659 "src/mapfile/mapfile.l"
+#line 675 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 660 "src/mapfile/mapfile.l"
+#line 676 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 661 "src/mapfile/mapfile.l"
+#line 677 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 662 "src/mapfile/mapfile.l"
+#line 678 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 663 "src/mapfile/mapfile.l"
+#line 679 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 664 "src/mapfile/mapfile.l"
+#line 680 "src/mapfile/mapfile.l"
 { OWS_MAP_EATLINE }
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 666 "src/mapfile/mapfile.l"
+#line 682 "src/mapfile/mapfile.l"
 { yy_push_state(SYMBOL); OWS_MAP_DBG }
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 667 "src/mapfile/mapfile.l"
+#line 683 "src/mapfile/mapfile.l"
 { yy_push_state(SCALEBAR); OWS_MAP_DBG  }
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 668 "src/mapfile/mapfile.l"
+#line 684 "src/mapfile/mapfile.l"
 { yy_push_state(REFERENCE); OWS_MAP_DBG }
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 669 "src/mapfile/mapfile.l"
+#line 685 "src/mapfile/mapfile.l"
 { yy_push_state(OUTPUTFORMAT); OWS_MAP_DBG }
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 670 "src/mapfile/mapfile.l"
+#line 686 "src/mapfile/mapfile.l"
 { yy_push_state(METADATA); OWS_MAP_DBG }
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 671 "src/mapfile/mapfile.l"
+#line 687 "src/mapfile/mapfile.l"
 { yy_push_state(GRID); OWS_MAP_DBG }
 	YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 672 "src/mapfile/mapfile.l"
+#line 688 "src/mapfile/mapfile.l"
 { yy_push_state(JOIN); OWS_MAP_DBG }
 	YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 673 "src/mapfile/mapfile.l"
+#line 689 "src/mapfile/mapfile.l"
 { yy_push_state(LAYER_METADATA); OWS_MAP_DBG }
 	YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 674 "src/mapfile/mapfile.l"
+#line 690 "src/mapfile/mapfile.l"
 { yy_push_state(CLASS); OWS_MAP_DBG }
 	YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 675 "src/mapfile/mapfile.l"
+#line 691 "src/mapfile/mapfile.l"
 { yy_push_state(STYLE); OWS_MAP_DBG }
 	YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 676 "src/mapfile/mapfile.l"
+#line 692 "src/mapfile/mapfile.l"
 { yy_push_state(LABEL); OWS_MAP_DBG }
 	YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 677 "src/mapfile/mapfile.l"
+#line 693 "src/mapfile/mapfile.l"
 { yy_push_state(PROJECTION); OWS_MAP_DBG }
 	YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 678 "src/mapfile/mapfile.l"
+#line 694 "src/mapfile/mapfile.l"
 { yy_push_state(PATTERN); OWS_MAP_DBG }
 	YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 679 "src/mapfile/mapfile.l"
+#line 695 "src/mapfile/mapfile.l"
 { yy_push_state(POINTS); OWS_MAP_DBG }
 	YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 680 "src/mapfile/mapfile.l"
+#line 696 "src/mapfile/mapfile.l"
 { yy_push_state(LABEL); OWS_MAP_DBG }
 	YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 681 "src/mapfile/mapfile.l"
+#line 697 "src/mapfile/mapfile.l"
 { yy_push_state(LAYER); map_l = ows_layer_init(); OWS_MAP_DBG }
 	YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 682 "src/mapfile/mapfile.l"
+#line 698 "src/mapfile/mapfile.l"
 { yy_push_state(FEATURE); OWS_MAP_DBG }
 	YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 683 "src/mapfile/mapfile.l"
+#line 699 "src/mapfile/mapfile.l"
 { BEGIN PROPERTIES; map_prop_state = MAP_NAME; }
 	YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 684 "src/mapfile/mapfile.l"
+#line 700 "src/mapfile/mapfile.l"
 { BEGIN LAYER_PROPERTIES; map_layer_prop_state = MAP_LAYER_NAME; }
 	YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 685 "src/mapfile/mapfile.l"
+#line 701 "src/mapfile/mapfile.l"
 { BEGIN LAYER_PROPERTIES; map_layer_prop_state = MAP_LAYER_CONNECTION; }
 	YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 686 "src/mapfile/mapfile.l"
+#line 702 "src/mapfile/mapfile.l"
 { BEGIN LAYER_CONNECTIONTYPE; }
 	YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 687 "src/mapfile/mapfile.l"
+#line 703 "src/mapfile/mapfile.l"
 { BEGIN LAYER; map_is_postgis=true; }
 	YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 688 "src/mapfile/mapfile.l"
+#line 704 "src/mapfile/mapfile.l"
 { BEGIN LAYER; map_is_postgis=false; }
 	YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 689 "src/mapfile/mapfile.l"
+#line 705 "src/mapfile/mapfile.l"
 { BEGIN LAYER_DUMP; }
 	YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 690 "src/mapfile/mapfile.l"
+#line 706 "src/mapfile/mapfile.l"
 { BEGIN LAYER; map_is_dump=true; }
 	YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 691 "src/mapfile/mapfile.l"
+#line 707 "src/mapfile/mapfile.l"
 { BEGIN LAYER; map_is_dump=false; }
 	YY_BREAK
 case 94:
 /* rule 94 can match eol */
 YY_RULE_SETUP
-#line 693 "src/mapfile/mapfile.l"
+#line 709 "src/mapfile/mapfile.l"
 {}
 	YY_BREAK
 case 95:
 /* rule 95 can match eol */
 YY_RULE_SETUP
-#line 695 "src/mapfile/mapfile.l"
+#line 711 "src/mapfile/mapfile.l"
 {metadata_key(yytext, true); BEGIN METADATA_VALUE;}
 	YY_BREAK
 case 96:
 /* rule 96 can match eol */
 YY_RULE_SETUP
-#line 696 "src/mapfile/mapfile.l"
+#line 712 "src/mapfile/mapfile.l"
 {metadata_value(yytext, true); BEGIN METADATA;}
 	YY_BREAK
 case 97:
 /* rule 97 can match eol */
 YY_RULE_SETUP
-#line 697 "src/mapfile/mapfile.l"
+#line 713 "src/mapfile/mapfile.l"
 {metadata_layer_key(yytext, true); BEGIN LAYER_METADATA_VALUE;}
 	YY_BREAK
 case 98:
 /* rule 98 can match eol */
 YY_RULE_SETUP
-#line 698 "src/mapfile/mapfile.l"
+#line 714 "src/mapfile/mapfile.l"
 {metadata_layer_value(yytext, true); BEGIN LAYER_METADATA;}
 	YY_BREAK
 case 99:
 /* rule 99 can match eol */
 YY_RULE_SETUP
-#line 699 "src/mapfile/mapfile.l"
+#line 715 "src/mapfile/mapfile.l"
 {
 
 	 char *p, *q; 
@@ -2274,40 +2477,40 @@ YY_RULE_SETUP
 case 100:
 /* rule 100 can match eol */
 YY_RULE_SETUP
-#line 730 "src/mapfile/mapfile.l"
+#line 746 "src/mapfile/mapfile.l"
 {properties(yytext, true);  BEGIN MAP;}
 	YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 731 "src/mapfile/mapfile.l"
+#line 747 "src/mapfile/mapfile.l"
 {properties(yytext, false);  BEGIN MAP;}		
 	YY_BREAK
 case 102:
 /* rule 102 can match eol */
 YY_RULE_SETUP
-#line 732 "src/mapfile/mapfile.l"
+#line 748 "src/mapfile/mapfile.l"
 {layer_properties(yytext, true);  BEGIN LAYER;}
 	YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 733 "src/mapfile/mapfile.l"
+#line 749 "src/mapfile/mapfile.l"
 {layer_properties(yytext, false);  BEGIN LAYER;}		
 	YY_BREAK
 case 104:
 /* rule 104 can match eol */
 YY_RULE_SETUP
-#line 734 "src/mapfile/mapfile.l"
+#line 750 "src/mapfile/mapfile.l"
 {}
 	YY_BREAK
 case 105:
 YY_RULE_SETUP
-#line 735 "src/mapfile/mapfile.l"
+#line 751 "src/mapfile/mapfile.l"
 {}
 	YY_BREAK
 case 106:
 /* rule 106 can match eol */
 YY_RULE_SETUP
-#line 736 "src/mapfile/mapfile.l"
+#line 752 "src/mapfile/mapfile.l"
 {}
 	YY_BREAK
 case YY_STATE_EOF(INITIAL):
@@ -2339,7 +2542,7 @@ case YY_STATE_EOF(SYMBOL):
 case YY_STATE_EOF(PATTERN):
 case YY_STATE_EOF(POINTS):
 case YY_STATE_EOF(INCLUDE):
-#line 738 "src/mapfile/mapfile.l"
+#line 754 "src/mapfile/mapfile.l"
 { 
 	/* End of main file */
 	if (map_include_stack_ptr == 0 && YY_START == 0) yyterminate(); 
@@ -2357,10 +2560,10 @@ case YY_STATE_EOF(INCLUDE):
 	YY_BREAK
 case 107:
 YY_RULE_SETUP
-#line 753 "src/mapfile/mapfile.l"
+#line 769 "src/mapfile/mapfile.l"
 ECHO;
 	YY_BREAK
-#line 2364 "src/mapfile/mapfile.c"
+#line 2567 "src/mapfile/mapfile.c"
 
 	case YY_END_OF_BUFFER:
 		{
@@ -2545,7 +2748,7 @@ static int yy_get_next_buffer (void)
 
 	else
 		{
-			int num_to_read =
+			yy_size_t num_to_read =
 			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
 
 		while ( num_to_read <= 0 )
@@ -2559,7 +2762,7 @@ static int yy_get_next_buffer (void)
 
 			if ( b->yy_is_our_buffer )
 				{
-				int new_size = b->yy_buf_size * 2;
+				yy_size_t new_size = b->yy_buf_size * 2;
 
 				if ( new_size <= 0 )
 					b->yy_buf_size += b->yy_buf_size / 8;
@@ -2614,6 +2817,14 @@ static int yy_get_next_buffer (void)
 	else
 		ret_val = EOB_ACT_CONTINUE_SCAN;
 
+	if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+		/* Extend the array by 50%, plus the number we really need. */
+		yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
+		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+	}
+
 	(yy_n_chars) += number_to_move;
 	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
 	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
@@ -2704,7 +2915,7 @@ static int yy_get_next_buffer (void)
 
 		else
 			{ /* need more input */
-			int offset = (yy_c_buf_p) - (yytext_ptr);
+			yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
 			++(yy_c_buf_p);
 
 			switch ( yy_get_next_buffer(  ) )
@@ -2976,7 +3187,7 @@ void yypop_buffer_state (void)
  */
 static void yyensure_buffer_stack (void)
 {
-	int num_to_alloc;
+	yy_size_t num_to_alloc;
     
 	if (!(yy_buffer_stack)) {
 
@@ -2988,7 +3199,9 @@ static void yyensure_buffer_stack (void)
 		(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
 								(num_to_alloc * sizeof(struct yy_buffer_state*)
 								);
-		
+		if ( ! (yy_buffer_stack) )
+			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+								  
 		memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
 				
 		(yy_buffer_stack_max) = num_to_alloc;
@@ -3006,6 +3219,8 @@ static void yyensure_buffer_stack (void)
 								((yy_buffer_stack),
 								num_to_alloc * sizeof(struct yy_buffer_state*)
 								);
+		if ( ! (yy_buffer_stack) )
+			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
 
 		/* zero only the new slots.*/
 		memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
@@ -3050,7 +3265,7 @@ YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
 
 /** Setup the input buffer state to scan a string. The next call to yylex() will
  * scan from a @e copy of @a str.
- * @param str a NUL-terminated string to scan
+ * @param yystr a NUL-terminated string to scan
  * 
  * @return the newly allocated buffer state object.
  * @note If you want to scan bytes that may contain NUL values, then use
@@ -3069,12 +3284,11 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
  * 
  * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
+YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )
 {
 	YY_BUFFER_STATE b;
 	char *buf;
-	yy_size_t n;
-	int i;
+	yy_size_t n, i;
     
 	/* Get memory for full buffer, including space for trailing EOB's. */
 	n = _yybytes_len + 2;
@@ -3115,8 +3329,7 @@ YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
 			(yy_start_stack) = (int *) yyrealloc((void *) (yy_start_stack),new_size  );
 
 		if ( ! (yy_start_stack) )
-			YY_FATAL_ERROR(
-			"out of memory expanding start-condition stack" );
+			YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
 		}
 
 	(yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
@@ -3194,7 +3407,7 @@ FILE *yyget_out  (void)
 /** Get the length of the current token.
  * 
  */
-int yyget_leng  (void)
+yy_size_t yyget_leng  (void)
 {
         return yyleng;
 }
@@ -3350,7 +3563,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 753 "src/mapfile/mapfile.l"
+#line 769 "src/mapfile/mapfile.l"
 
 
 
diff --git a/src/mapfile/mapfile.l b/src/mapfile/mapfile.l
index 53f87eb..36066e9 100644
--- a/src/mapfile/mapfile.l
+++ b/src/mapfile/mapfile.l
@@ -409,7 +409,7 @@ static void metadata_layer_key(char *yytext, bool quotes)
 	else if(!strncmp("tinyows_writable", yytext, 16))
 		map_lmd_state = MAP_LMD_TOWS_WRITABLE;
 	else if(!strncmp("tinyows_geobbox", yytext, 15))
-		map_md_state = MAP_LMD_TOWS_GEOBBOX;
+		map_lmd_state = MAP_LMD_TOWS_GEOBBOX;
 	else if(!strncmp("tinyows_gml_ns_list", yytext, 19))
 		map_lmd_state = MAP_LMD_TOWS_GML_NS_LIST;
 	else map_lmd_state = MAP_LMD_SKIP;
@@ -443,6 +443,10 @@ static void metadata_layer_value(char *yytext, bool quotes)
 		return;
 	case MAP_LMD_NAMESPACE_PREFIX:
 		buffer_add_str(map_l->ns_prefix, yytext);
+                if (map_l->name->use) {
+                    buffer_add_head(map_l->name, ':');
+                    buffer_add_head_str(map_l->name, yytext); 
+                }
 		return;
 	case MAP_LMD_SRS:
 		map_l->srid = list_explode_str(',', yytext);
@@ -534,9 +538,21 @@ static void end_layer()
 		if (!map_l->storage->schema->use)
 			buffer_add_str(map_l->storage->schema, "public");
 		if (!map_is_dump) map_l->retrievable=map_l->writable = false;
+
+                buffer_copy(map_l->name_prefix, map_l->name);
+                if (map_l->ns_prefix->use) {
+                    buffer_add_head(map_l->name_prefix, ':');
+                    buffer_add_head_str(map_l->name_prefix, map_l->ns_prefix->buf);
+                }
+
+                buffer_copy(map_l->name_no_uri, map_l->name);
+                if (map_l->ns_uri->use) {
+                    buffer_add_head(map_l->name, ':');
+                    buffer_add_head_str(map_l->name, map_l->ns_uri->buf);
+                }
+
 		ows_layer_list_add(map_o->layers, map_l);
 	}
-
 		
 	map_is_dump = map_is_postgis = false;
 }
diff --git a/src/ows/ows.c b/src/ows/ows.c
index d7ae89a..0809725 100644
--- a/src/ows/ows.c
+++ b/src/ows/ows.c
@@ -36,28 +36,28 @@
  */
 static void ows_pg(ows * o, char *con_str)
 {
-    assert(o);
-    assert(con_str);
-
-    o->pg = PQconnectdb(con_str);
-
-    if (PQstatus(o->pg) != CONNECTION_OK) {
-	ows_log(o, 1, PQerrorMessage(o->pg));
-        ows_error(o, OWS_ERROR_CONNECTION_FAILED, "Connection to database failed", "init_OWS");
-        return;
-    }
-
-    if (PQsetClientEncoding(o->pg, o->db_encoding->buf)) {
-	ows_log(o, 1, PQerrorMessage(o->pg));
-        ows_error(o, OWS_ERROR_CONNECTION_FAILED, "Wrong database encoding", "init_OWS");
-        return;
-    }
-
-    o->postgis_version = ows_psql_postgis_version(o);
-    if (!o->postgis_version)
-        ows_error(o, OWS_ERROR_CONNECTION_FAILED, "No PostGIS available in database", "init_OWS");
-    else if (ows_version_get(o->postgis_version) < 150)
-        ows_error(o, OWS_ERROR_CONNECTION_FAILED, "PostGIS version must be at least 1.5.0", "init_OWS");
+  assert(o);
+  assert(con_str);
+
+  o->pg = PQconnectdb(con_str);
+
+  if (PQstatus(o->pg) != CONNECTION_OK) {
+    ows_log(o, 1, PQerrorMessage(o->pg));
+    ows_error(o, OWS_ERROR_CONNECTION_FAILED, "Connection to database failed", "init_OWS");
+    return;
+  }
+
+  if (PQsetClientEncoding(o->pg, o->db_encoding->buf)) {
+    ows_log(o, 1, PQerrorMessage(o->pg));
+    ows_error(o, OWS_ERROR_CONNECTION_FAILED, "Wrong database encoding", "init_OWS");
+    return;
+  }
+
+  o->postgis_version = ows_psql_postgis_version(o);
+  if (!o->postgis_version)
+    ows_error(o, OWS_ERROR_CONNECTION_FAILED, "No PostGIS available in database", "init_OWS");
+  else if (ows_version_get(o->postgis_version) < 150)
+    ows_error(o, OWS_ERROR_CONNECTION_FAILED, "PostGIS version must be at least 1.5.0", "init_OWS");
 }
 
 
@@ -66,48 +66,47 @@ static void ows_pg(ows * o, char *con_str)
  */
 static ows *ows_init()
 {
-    ows *o;
-
-    o = malloc(sizeof(ows));
-    assert(o);
-
-    o->init = true;
-    o->exit = false;
-    o->request = NULL;
-    o->cgi = NULL;
-    o->psql_requests = NULL;
-    o->pg = NULL;
-    o->pg_dsn = buffer_init();
-    o->output = stdout;
-    o->config_file = NULL;
-    o->mapfile = false;
-    o->online_resource = buffer_init();
-    o->schema_dir = buffer_init();
-    o->log_file = NULL;
-    o->log = NULL;
-    o->log_level=0;
-    o->encoding = buffer_init();
-    o->db_encoding = buffer_init();
-    o->log = NULL;
-    o->layers = NULL;
-    o->max_features = 0;
-    o->degree_precision = 6;
-    o->meter_precision = 0;
-    o->max_geobbox = NULL;
-    o->display_bbox = true;
-    o->estimated_extent = false;
-    o->expose_pk = false;
-    o->check_schema = true;
-    o->check_valid_geom = true;
-    o->metadata = NULL;
-    o->contact = NULL;
-    o->postgis_version = NULL;
-    o->schema_wfs_100 = NULL;
-    o->schema_wfs_110 = NULL;
-    o->wfs_default_version = ows_version_init();
-    ows_version_set(o->wfs_default_version, 1, 1, 0);
-
-    return o;
+  ows *o;
+
+  o = malloc(sizeof(ows));
+  assert(o);
+
+  o->init = true;
+  o->exit = false;
+  o->request = NULL;
+  o->cgi = NULL;
+  o->psql_requests = NULL;
+  o->pg = NULL;
+  o->pg_dsn = buffer_init();
+  o->output = stdout;
+  o->config_file = NULL;
+  o->mapfile = false;
+  o->online_resource = buffer_init();
+  o->schema_dir = buffer_init();
+  o->log_file = NULL;
+  o->log = NULL;
+  o->log_level=0;
+  o->encoding = buffer_init();
+  o->db_encoding = buffer_init();
+  o->layers = NULL;
+  o->max_features = 0;
+  o->degree_precision = 6;
+  o->meter_precision = 0;
+  o->max_geobbox = NULL;
+  o->display_bbox = true;
+  o->estimated_extent = false;
+  o->expose_pk = false;
+  o->check_schema = true;
+  o->check_valid_geom = true;
+  o->metadata = NULL;
+  o->contact = NULL;
+  o->postgis_version = NULL;
+  o->schema_wfs_100 = NULL;
+  o->schema_wfs_110 = NULL;
+  o->wfs_default_version = ows_version_init();
+  ows_version_set(o->wfs_default_version, 1, 1, 0);
+
+  return o;
 }
 
 
@@ -118,83 +117,84 @@ static ows *ows_init()
 #ifdef OWS_DEBUG
 void ows_flush(ows * o, FILE * output)
 {
-    assert(o);
-    assert(output);
-
-    fprintf(output, "exit : %d\n", o->exit?1:0);
-
-    if (o->config_file)     fprintf(output, "config_file: %s\nmapfile %d\n", (char *) o->config_file->buf, o->mapfile?1:0);
-    if (o->schema_dir)      fprintf(output, "schema_dir: %s\n", (char *) o->schema_dir->buf);
-    if (o->online_resource) fprintf(output, "online_resource: %s\n", (char *) o->online_resource->buf);
-    if (o->pg_dsn)          fprintf(output, "pg: %s\n", (char *) o->pg_dsn->buf);
-    if (o->log_file)        fprintf(output, "log file: %s\n", (char *) o->log_file->buf);
-    if (o->encoding)        fprintf(output, "encoding: %s\n", (char *) o->encoding->buf);
-    if (o->db_encoding)     fprintf(output, "db_encoding: %s\n", (char *) o->db_encoding->buf);
-
-    if (o->postgis_version) {
-        fprintf(output, "PostGIS version: %d.%d.%d\n", o->postgis_version->major,
-                                                       o->postgis_version->minor,
-                                                       o->postgis_version->release);
-    }
-
-    if (o->wfs_default_version) {
-        fprintf(output, "WFS default version: %d.%d.%d\n", o->wfs_default_version->major,
-                                                           o->wfs_default_version->minor,
-                                                           o->wfs_default_version->release);
-    }
-
-    if (o->metadata) {
-        fprintf(output, "metadata: ");
-        ows_metadata_flush(o->metadata, output);
-        fprintf(output, "\n");
-    }
-
-    if (o->contact) {
-        fprintf(output, "contact: ");
-        ows_contact_flush(o->contact, output);
-        fprintf(output, "\n");
-    }
-
-    if (o->cgi) {
-        fprintf(output, "cgi: ");
-        array_flush(o->cgi, output);
-        fprintf(output, "\n");
-    }
-
-    if (o->psql_requests) {
-        fprintf(output, "SQL requests: ");
-        list_flush(o->psql_requests, output);
-        fprintf(output, "\n");
-    }
-
-    if (o->layers) {
-        fprintf(output, "layers: ");
-        ows_layer_list_flush(o->layers, output);
-        fprintf(output, "\n");
-    }
-
-    if (o->request) {
-        fprintf(output, "request: ");
-        ows_request_flush(o->request, output);
-        fprintf(output, "\n");
-    }
-
-    fprintf(output, "max_features: %d\n", o->max_features);
-    fprintf(output, "degree_precision: %d\n", o->degree_precision);
-    fprintf(output, "meter_precision: %d\n", o->meter_precision);
-
-    if (o->max_geobbox) {
-        fprintf(output, "max_geobbox: ");
-        ows_geobbox_flush(o->max_geobbox, output);
-        fprintf(output, "\n");
-    }
-    fprintf(output, "display_bbox: %d\n", o->display_bbox?1:0);
-    fprintf(output, "estimated_extent: %d\n", o->estimated_extent?1:0);
-    fprintf(output, "check_schema: %d\n", o->check_schema?1:0);
-    fprintf(output, "check_valid_geom: %d\n", o->check_valid_geom?1:0);
-
-    fprintf(output, "schema WFS 1.0: %d\n", o->schema_wfs_100?1:0);
-    fprintf(output, "schema WFS 1.1: %d\n", o->schema_wfs_110?1:0);
+  assert(o);
+  assert(output);
+
+  fprintf(output, "exit : %d\n", o->exit?1:0);
+
+  if (o->config_file)     fprintf(output, "config_file: %s\nmapfile %d\n", (char *) o->config_file->buf, o->mapfile?1:0);
+  if (o->schema_dir)      fprintf(output, "schema_dir: %s\n", (char *) o->schema_dir->buf);
+  if (o->online_resource) fprintf(output, "online_resource: %s\n", (char *) o->online_resource->buf);
+  if (o->pg_dsn)          fprintf(output, "pg: %s\n", (char *) o->pg_dsn->buf);
+  if (o->log_file)        fprintf(output, "log file: %s\n", (char *) o->log_file->buf);
+  if (o->encoding)        fprintf(output, "encoding: %s\n", (char *) o->encoding->buf);
+  if (o->db_encoding)     fprintf(output, "db_encoding: %s\n", (char *) o->db_encoding->buf);
+
+  if (o->postgis_version) {
+    fprintf(output, "PostGIS version: %d.%d.%d\n", o->postgis_version->major,
+            o->postgis_version->minor,
+            o->postgis_version->release);
+  }
+
+  if (o->wfs_default_version) {
+    fprintf(output, "WFS default version: %d.%d.%d\n", o->wfs_default_version->major,
+            o->wfs_default_version->minor,
+            o->wfs_default_version->release);
+  }
+
+  if (o->metadata) {
+    fprintf(output, "metadata: ");
+    ows_metadata_flush(o->metadata, output);
+    fprintf(output, "\n");
+  }
+
+  if (o->contact) {
+    fprintf(output, "contact: ");
+    ows_contact_flush(o->contact, output);
+    fprintf(output, "\n");
+  }
+
+  if (o->cgi) {
+    fprintf(output, "cgi: ");
+    array_flush(o->cgi, output);
+    fprintf(output, "\n");
+  }
+
+  if (o->psql_requests) {
+    fprintf(output, "SQL requests: ");
+    list_flush(o->psql_requests, output);
+    fprintf(output, "\n");
+  }
+
+  if (o->layers) {
+    fprintf(output, "layers: ");
+    ows_layer_list_flush(o->layers, output);
+    fprintf(output, "\n");
+  }
+
+  if (o->request) {
+    fprintf(output, "request: ");
+    ows_request_flush(o->request, output);
+    fprintf(output, "\n");
+  }
+
+  fprintf(output, "max_features: %d\n", o->max_features);
+  fprintf(output, "degree_precision: %d\n", o->degree_precision);
+  fprintf(output, "meter_precision: %d\n", o->meter_precision);
+  fprintf(output, "expose_pk: %d\n", o->expose_pk?1:0);
+
+  if (o->max_geobbox) {
+    fprintf(output, "max_geobbox: ");
+    ows_geobbox_flush(o->max_geobbox, output);
+    fprintf(output, "\n");
+  }
+  fprintf(output, "display_bbox: %d\n", o->display_bbox?1:0);
+  fprintf(output, "estimated_extent: %d\n", o->estimated_extent?1:0);
+  fprintf(output, "check_schema: %d\n", o->check_schema?1:0);
+  fprintf(output, "check_valid_geom: %d\n", o->check_valid_geom?1:0);
+
+  fprintf(output, "schema WFS 1.0: %d\n", o->schema_wfs_100?1:0);
+  fprintf(output, "schema WFS 1.1: %d\n", o->schema_wfs_110?1:0);
 }
 #endif
 
@@ -204,215 +204,215 @@ void ows_flush(ows * o, FILE * output)
  */
 void ows_free(ows * o)
 {
-    assert(o);
-
-    if (o->config_file) 	 buffer_free(o->config_file);
-    if (o->schema_dir) 		 buffer_free(o->schema_dir);
-    if (o->online_resource) 	 buffer_free(o->online_resource);
-    if (o->pg)			 PQfinish(o->pg);
-    if (o->log_file)		 buffer_free(o->log_file);
-    if (o->log)	                 fclose(o->log);
-    if (o->pg_dsn)		 buffer_free(o->pg_dsn);
-    if (o->cgi)			 array_free(o->cgi);
-    if (o->psql_requests)	 list_free(o->psql_requests);
-    if (o->layers)		 ows_layer_list_free(o->layers);
-    if (o->request)		 ows_request_free(o->request);
-    if (o->max_geobbox)		 ows_geobbox_free(o->max_geobbox);
-    if (o->metadata)		 ows_metadata_free(o->metadata);
-    if (o->contact)	   	 ows_contact_free(o->contact);
-    if (o->encoding)	   	 buffer_free(o->encoding);
-    if (o->db_encoding)		 buffer_free(o->db_encoding);
-    if (o->wfs_default_version)  ows_version_free(o->wfs_default_version);
-    if (o->postgis_version)      ows_version_free(o->postgis_version);
-    if (o->schema_wfs_100)       xmlSchemaFree(o->schema_wfs_100);
-    if (o->schema_wfs_110)       xmlSchemaFree(o->schema_wfs_110);
-
-    free(o);
-    o = NULL;
+  assert(o);
+
+  if (o->config_file)          buffer_free(o->config_file);
+  if (o->schema_dir)           buffer_free(o->schema_dir);
+  if (o->online_resource)      buffer_free(o->online_resource);
+  if (o->pg)                   PQfinish(o->pg);
+  if (o->log_file)             buffer_free(o->log_file);
+  if (o->log)                  fclose(o->log);
+  if (o->pg_dsn)               buffer_free(o->pg_dsn);
+  if (o->cgi)                  array_free(o->cgi);
+  if (o->psql_requests)        list_free(o->psql_requests);
+  if (o->layers)               ows_layer_list_free(o->layers);
+  if (o->request)              ows_request_free(o->request);
+  if (o->max_geobbox)          ows_geobbox_free(o->max_geobbox);
+  if (o->metadata)             ows_metadata_free(o->metadata);
+  if (o->contact)              ows_contact_free(o->contact);
+  if (o->encoding)             buffer_free(o->encoding);
+  if (o->db_encoding)          buffer_free(o->db_encoding);
+  if (o->wfs_default_version)  ows_version_free(o->wfs_default_version);
+  if (o->postgis_version)      ows_version_free(o->postgis_version);
+  if (o->schema_wfs_100)       xmlSchemaFree(o->schema_wfs_100);
+  if (o->schema_wfs_110)       xmlSchemaFree(o->schema_wfs_110);
+
+  free(o);
+  o = NULL;
 }
 
 
 void ows_log(ows *o, int log_level, const char *log)
 {
-    char *t, *p;
-    time_t ts;
+  char *t, *p;
+  time_t ts;
 
-    if (o->log_file && !o->log) o->log = fopen(o->log_file->buf, "a");
-    if (!o->log || !(o->log_level & log_level)) return;
+  if (o->log_file && !o->log) o->log = fopen(o->log_file->buf, "a");
+  if (!o->log || !(o->log_level & log_level)) return;
 
-    ts = time(NULL);
-    t = ctime(&ts);
+  ts = time(NULL);
+  t = ctime(&ts);
 
-    /* Suppress ctime \n last char */
-    for (p = t; *p && *p != '\n'; p++);
-    *p = '\0';
+  /* Suppress ctime \n last char */
+  for (p = t; *p && *p != '\n'; p++);
+  *p = '\0';
 
-    if      (log_level & 1) fprintf(o->log, "[%s] [ERROR] %s\n", t, log);
-    else if (log_level & 2) fprintf(o->log, "[%s] [EVENT] %s\n", t, log);
-    else if (log_level & 4) fprintf(o->log, "[%s] [QUERY] %s\n", t, log);
-    else if (log_level & 8) fprintf(o->log, "[%s] [SQL] %s\n", t, log);
+  if      (log_level & 1) fprintf(o->log, "[%s] [ERROR] %s\n", t, log);
+  else if (log_level & 2) fprintf(o->log, "[%s] [EVENT] %s\n", t, log);
+  else if (log_level & 4) fprintf(o->log, "[%s] [QUERY] %s\n", t, log);
+  else if (log_level & 8) fprintf(o->log, "[%s] [SQL] %s\n", t, log);
 
-    fflush(o->log);
+  fflush(o->log);
 }
 
 
 void ows_usage(ows * o)
 {
-    fprintf(stdout, "TinyOWS version:   %s\n", TINYOWS_VERSION);
-#ifdef TINYOWS_SVN_REV
-    fprintf(stdout, "TinyOWS revision:  %s\n", TINYOWS_SVN_REV);
+  fprintf(stdout, "TinyOWS version:   %s\n", TINYOWS_VERSION);
+#ifdef TINYOWS_GIT_COMMIT
+  fprintf(stdout, "TinyOWS revision:  %s\n", TINYOWS_GIT_COMMIT);
 #endif
 #if TINYOWS_FCGI
-    fprintf(stdout, "FCGI support:      Yes\n");
+  fprintf(stdout, "FCGI support:      Yes\n");
 #else
-    fprintf(stdout, "FCGI support:      No\n");
+  fprintf(stdout, "FCGI support:      No\n");
 #endif
-    if (o->mapfile)
+  if (o->mapfile)
     fprintf(stdout, "Config File Path:  %s (Mapfile)\n", o->config_file->buf);
-    else 
+  else
     fprintf(stdout, "Config File Path:  %s (TinyOWS XML)\n", o->config_file->buf);
 
-    fprintf(stdout, "PostGIS Version:   %d.%d.%d\n", o->postgis_version->major,
-                                                     o->postgis_version->minor,
-                                                     o->postgis_version->release);
+  fprintf(stdout, "PostGIS Version:   %d.%d.%d\n", o->postgis_version->major,
+          o->postgis_version->minor,
+          o->postgis_version->release);
 
-    fprintf(stdout, "PostGIS dsn:       %s\n", o->pg_dsn->buf);
-    fprintf(stdout, "Output Encoding:   %s\n", o->encoding->buf);
-    fprintf(stdout, "Database Encoding: %s\n", o->db_encoding->buf);
-    fprintf(stdout, "Schema dir:        %s\n", o->schema_dir->buf);
-    if (o->log_file) {
+  fprintf(stdout, "PostGIS dsn:       %s\n", o->pg_dsn->buf);
+  fprintf(stdout, "Output Encoding:   %s\n", o->encoding->buf);
+  fprintf(stdout, "Database Encoding: %s\n", o->db_encoding->buf);
+  fprintf(stdout, "Schema dir:        %s\n", o->schema_dir->buf);
+  if (o->log_file) {
     fprintf(stdout, "Log file:          %s\n", o->log_file->buf);
-    fprintf(stdout, "Log level:         %s%s%s%s\n",(o->log_level & 1)?"ERROR ":"", 
-                                                    (o->log_level & 2)?"EVENT ":"",
-                                                    (o->log_level & 4)?"QUERY ":"",
-                                                    (o->log_level & 8)?"SQL":"" );
-    }
-
-    fprintf(stdout, "Display bbox:      %s\n", o->display_bbox?"Yes":"No");
-    fprintf(stdout, "Estimated extent:  %s\n", o->estimated_extent?"Yes":"No");
-    fprintf(stdout, "Check schema:      %s\n", o->check_schema?"Yes":"No");
-    fprintf(stdout, "Check valid geoms: %s\n", o->check_valid_geom?"Yes":"No");
-    if (o->max_features)
+    fprintf(stdout, "Log level:         %s%s%s%s\n",(o->log_level & 1)?"ERROR ":"",
+            (o->log_level & 2)?"EVENT ":"",
+            (o->log_level & 4)?"QUERY ":"",
+            (o->log_level & 8)?"SQL":"" );
+  }
+
+  fprintf(stdout, "Display bbox:      %s\n", o->display_bbox?"Yes":"No");
+  fprintf(stdout, "Estimated extent:  %s\n", o->estimated_extent?"Yes":"No");
+  fprintf(stdout, "Check schema:      %s\n", o->check_schema?"Yes":"No");
+  fprintf(stdout, "Check valid geoms: %s\n", o->check_valid_geom?"Yes":"No");
+  if (o->max_features)
     fprintf(stdout, "Max features:      %d\n", o->max_features);
 
-    fprintf(stdout, "Available layers:\n");
-    ows_layers_storage_flush(o, stdout);
+  fprintf(stdout, "Available layers:\n");
+  ows_layers_storage_flush(o, stdout);
 }
 
 
 static void ows_kvp_or_xml(ows *o, char *query)
 {
-    /*
-     * Request encoding and HTTP method WFS 1.1.0 -> 6.5
-     */
-   
-    /* GET could only handle KVP */
-    if (cgi_method_get()) o->request->method = OWS_METHOD_KVP;
-
-    /* POST could handle KVP or XML encoding */
-    else if (cgi_method_post()) {
-        /* WFS 1.1.0 mandatory */
-        if (     !strcmp(getenv("CONTENT_TYPE"), "application/x-www-form-urlencoded"))
-            o->request->method = OWS_METHOD_KVP;
-        else if (    !strcmp(getenv("CONTENT_TYPE"), "text/xml") 
-                  || !strncmp(getenv("CONTENT_TYPE"), "text/xml;", 9))        /* Allowing charset */
-            o->request->method = OWS_METHOD_XML;
-
-        /* WFS 1.0.0 && CITE Test compliant */
-        else if (    !strcmp(getenv("CONTENT_TYPE"), "application/xml")
-                  || !strcmp(getenv("CONTENT_TYPE"), "text/plain")
-                  || !strncmp(getenv("CONTENT_TYPE"), "application/xml;", 16) /* Allowing charset */
-                  || !strncmp(getenv("CONTENT_TYPE"), "text/plain;", 11))     /* Allowing charset */
-            o->request->method = OWS_METHOD_XML;
-
-        /* Command line Unit Test cases with XML values (not HTTP) */
-    } else if (!cgi_method_post() && !cgi_method_get() && query[0] == '<')
-        o->request->method = OWS_METHOD_XML;
-    else if (!cgi_method_post() && !cgi_method_get())
-        o->request->method = OWS_METHOD_KVP;
-
-    else ows_error(o, OWS_ERROR_REQUEST_HTTP, "Wrong HTTP request Method", "http");
+  /*
+   * Request encoding and HTTP method WFS 1.1.0 -> 6.5
+   */
+
+  /* GET could only handle KVP */
+  if (cgi_method_get()) o->request->method = OWS_METHOD_KVP;
+
+  /* POST could handle KVP or XML encoding */
+  else if (cgi_method_post()) {
+    /* WFS 1.1.0 mandatory */
+    if (       !strcmp(getenv("CONTENT_TYPE"), "application/x-www-form-urlencoded")
+               || !strncmp(getenv("CONTENT_TYPE"), "application/x-www-form-urlencoded;", 34))
+      o->request->method = OWS_METHOD_KVP;
+    else if (    !strcmp(getenv("CONTENT_TYPE"), "text/xml")
+                 || !strncmp(getenv("CONTENT_TYPE"), "text/xml;", 9))        /* Allowing charset */
+      o->request->method = OWS_METHOD_XML;
+
+    /* WFS 1.0.0 && CITE Test compliant */
+    else if (    !strcmp(getenv("CONTENT_TYPE"),  "application/xml")
+                 || !strcmp(getenv("CONTENT_TYPE"), "text/plain")
+                 || !strncmp(getenv("CONTENT_TYPE"), "application/xml;", 16) /* Allowing charset */
+                 || !strncmp(getenv("CONTENT_TYPE"), "text/plain;", 11))     /* Allowing charset */
+      o->request->method = OWS_METHOD_XML;
+
+    /* Command line Unit Test cases with XML values (not HTTP) */
+  } else if (!cgi_method_post() && !cgi_method_get() && query[0] == '<')
+    o->request->method = OWS_METHOD_XML;
+  else if (!cgi_method_post() && !cgi_method_get())
+    o->request->method = OWS_METHOD_KVP;
+
+  else ows_error(o, OWS_ERROR_REQUEST_HTTP, "Wrong HTTP request Method", "http");
 }
 
 
 int main(int argc, char *argv[])
 {
-    ows *o;
-    char *query;
+  ows *o;
+  char *query;
 
-    o = ows_init();
-    o->config_file = buffer_init();
+  o = ows_init();
+  o->config_file = buffer_init();
 
-    /* Config Files */
-    if (getenv("TINYOWS_CONFIG_FILE"))
-        buffer_add_str(o->config_file, getenv("TINYOWS_CONFIG_FILE"));
-    else if (getenv("TINYOWS_MAPFILE")) {
-        buffer_add_str(o->config_file, getenv("TINYOWS_MAPFILE"));
-        o->mapfile = true;
-    } else
-        buffer_add_str(o->config_file, OWS_CONFIG_FILE_PATH);
+  /* Config Files */
+  if (getenv("TINYOWS_CONFIG_FILE"))
+    buffer_add_str(o->config_file, getenv("TINYOWS_CONFIG_FILE"));
+  else if (getenv("TINYOWS_MAPFILE")) {
+    buffer_add_str(o->config_file, getenv("TINYOWS_MAPFILE"));
+    o->mapfile = true;
+  } else
+    buffer_add_str(o->config_file, OWS_CONFIG_FILE_PATH);
 
-    LIBXML_TEST_VERSION
-    xmlInitParser();
+  LIBXML_TEST_VERSION
+  xmlInitParser();
 
-    /* Parse the configuration file and initialize ows struct */
-    if (!o->exit) ows_parse_config(o, o->config_file->buf);
-    if (!o->exit) ows_log(o, 2, "== TINYOWS STARTUP ==");
+  /* Parse the configuration file and initialize ows struct */
+  if (!o->exit) ows_parse_config(o, o->config_file->buf);
+  if (!o->exit) ows_log(o, 2, "== TINYOWS STARTUP ==");
 
-    /* Connect the ows to the database */
-    if (!o->exit) ows_pg(o, o->pg_dsn->buf);
-    if (!o->exit) ows_log(o, 2, "== Connection PostGIS ==");
+  /* Connect the ows to the database */
+  if (!o->exit) ows_pg(o, o->pg_dsn->buf);
+  if (!o->exit) ows_log(o, 2, "== Connection PostGIS ==");
 
-    /* Fill layers storage metadata */
-    if (!o->exit) ows_layers_storage_fill(o);
-    if (!o->exit) ows_log(o, 2, "== Filling Storage ==");
+  /* Fill layers storage metadata */
+  if (!o->exit) ows_layers_storage_fill(o);
+  if (!o->exit) ows_log(o, 2, "== Filling Storage ==");
 
-    o->init = false;
+  o->init = false;
 
 #if TINYOWS_FCGI
-   if (!o->exit) ows_log(o, 2, "== FCGI START ==");
-   while (FCGI_Accept() >= 0)
-   {
+  if (!o->exit) ows_log(o, 2, "== FCGI START ==");
+  while (FCGI_Accept() >= 0) {
 #endif
 
     query=NULL;
     if (!o->exit) query = cgi_getback_query(o);  /* Retrieve safely query string */
     if (!o->exit) ows_log(o, 4, query);          /* Log input query if asked */
 
-    if (!o->exit && (!query || !strlen(query)))
-    {
-    	/* Usage or Version command line options */
-        if (argc > 1) {
-		     if (    !strncmp(argv[1], "--help", 6)
-                          || !strncmp(argv[1], "-h", 2)     
-                          || !strncmp(argv[1], "--check", 7)) ows_usage(o);
+    if (!o->exit && (!query || !strlen(query))) {
+      /* Usage or Version command line options */
+      if (argc > 1) {
+        if (    !strncmp(argv[1], "--help", 6)
+                || !strncmp(argv[1], "-h", 2)
+                || !strncmp(argv[1], "--check", 7)) ows_usage(o);
 
-        	else if (    !strncmp(argv[1], "--version", 9) 
-			  || !strncmp(argv[1], "-v", 2))
-			fprintf(stdout, "%s\n", TINYOWS_VERSION);
+        else if (    !strncmp(argv[1], "--version", 9)
+                     || !strncmp(argv[1], "-v", 2))
+          fprintf(stdout, "%s\n", TINYOWS_VERSION);
 
-        	else ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "Service Unknown", "service");
+        else ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "Service Unknown", "service");
 
-	} else ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "Service Unknown", "service");
+      } else ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "Service Unknown", "service");
 
-        o->exit=true;  /* Have done what we have to */
-    } 
+      o->exit=true;  /* Have done what we have to */
+    }
 
     if (!o->exit) o->request = ows_request_init();
     if (!o->exit) ows_kvp_or_xml(o, query);  /* Method is KVP or XML ? */
 
     if (!o->exit) {
 
-    	switch (o->request->method) {
-            case OWS_METHOD_KVP:
-                o->cgi = cgi_parse_kvp(o, query);
-                break;
-            case OWS_METHOD_XML:
-                o->cgi = cgi_parse_xml(o, query);
-                break;
-
-            default: ows_error(o, OWS_ERROR_REQUEST_HTTP, "Wrong HTTP request Method", "http");
-        }
+      switch (o->request->method) {
+        case OWS_METHOD_KVP:
+          o->cgi = cgi_parse_kvp(o, query);
+          break;
+        case OWS_METHOD_XML:
+          o->cgi = cgi_parse_xml(o, query);
+          break;
+
+        default:
+          ows_error(o, OWS_ERROR_REQUEST_HTTP, "Wrong HTTP request Method", "http");
+      }
     }
 
     if (!o->exit) o->psql_requests = list_init();
@@ -421,20 +421,20 @@ int main(int argc, char *argv[])
 
     /* Run the right OWS service */
     if (!o->exit) {
-        switch (o->request->service) {
-            case WFS:
-                o->request->request.wfs = wfs_request_init();
-                wfs_request_check(o, o->request->request.wfs, o->cgi);
-                if (!o->exit) wfs(o, o->request->request.wfs);
-                break;
-            default:
-                ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "Service Unknown", "service");
-        }
+      switch (o->request->service) {
+        case WFS:
+          o->request->request.wfs = wfs_request_init();
+          wfs_request_check(o, o->request->request.wfs, o->cgi);
+          if (!o->exit) wfs(o, o->request->request.wfs);
+          break;
+        default:
+          ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "Service Unknown", "service");
+      }
     }
 
     if (o->request) {
-        ows_request_free(o->request);
-        o->request=NULL;
+      ows_request_free(o->request);
+      o->request=NULL;
     }
 
     /* We allocated memory only on post case */
@@ -443,19 +443,14 @@ int main(int argc, char *argv[])
 #if TINYOWS_FCGI
     fflush(stdout);
     o->exit = false;
-    }
-    ows_log(o, 2, "== FCGI SHUTDOWN ==");
-    OS_LibShutdown();
+  }
+  ows_log(o, 2, "== FCGI SHUTDOWN ==");
+  OS_LibShutdown();
 #endif
-    ows_log(o, 2, "== TINYOWS SHUTDOWN ==");
-    ows_free(o);
+  ows_log(o, 2, "== TINYOWS SHUTDOWN ==");
+  ows_free(o);
 
-    xmlCleanupParser();
+  xmlCleanupParser();
 
-    return EXIT_SUCCESS;
+  return EXIT_SUCCESS;
 }
-
-
-/*
- * vim: expandtab sw=4 ts=4
- */
diff --git a/src/ows/ows.h b/src/ows/ows.h
index 0be286a..45fdb17 100644
--- a/src/ows/ows.h
+++ b/src/ows/ows.h
@@ -39,8 +39,3 @@
 #include "../ows_api.h"
 
 #endif /* OWS_H */
-
-
-/*
- * vim: expandtab sw=4 ts=4 
- */
diff --git a/src/ows/ows_bbox.c b/src/ows/ows_bbox.c
index 1290d32..a009063 100644
--- a/src/ows/ows_bbox.c
+++ b/src/ows/ows_bbox.c
@@ -36,19 +36,19 @@
  */
 ows_bbox *ows_bbox_init()
 {
-    ows_bbox *b;
+  ows_bbox *b;
 
-    b = malloc(sizeof(ows_bbox));
-    assert(b);
+  b = malloc(sizeof(ows_bbox));
+  assert(b);
 
-    b->xmin = -DBL_MAX + 1;
-    b->ymin = -DBL_MAX + 1;
-    b->xmax = DBL_MAX - 1;
-    b->ymax = DBL_MAX - 1;
+  b->xmin = -DBL_MAX + 1;
+  b->ymin = -DBL_MAX + 1;
+  b->xmax = DBL_MAX - 1;
+  b->ymax = DBL_MAX - 1;
 
-    b->srs = ows_srs_init();
+  b->srs = ows_srs_init();
 
-    return b;
+  return b;
 }
 
 
@@ -57,11 +57,11 @@ ows_bbox *ows_bbox_init()
  */
 void ows_bbox_free(ows_bbox * b)
 {
-    assert(b);
+  assert(b);
 
-    ows_srs_free(b->srs);
-    free(b);
-    b = NULL;
+  ows_srs_free(b->srs);
+  free(b);
+  b = NULL;
 }
 
 
@@ -70,24 +70,23 @@ void ows_bbox_free(ows_bbox * b)
  */
 bool ows_bbox_set(ows * o, ows_bbox * b, double xmin, double ymin, double xmax, double ymax, int srid)
 {
-    assert(o);
-    assert(b);
+  assert(o && b);
 
-    if (xmin >= xmax || ymin >= ymax) return false;
+  if (xmin >= xmax || ymin >= ymax) return false;
 
-    if (    fabs(xmin - DBL_MAX) < DBL_EPSILON
-         || fabs(ymin - DBL_MAX) < DBL_EPSILON
-         || fabs(xmax - DBL_MAX) < DBL_EPSILON
-         || fabs(ymax - DBL_MAX) < DBL_EPSILON) return false;
+  if (    fabs(xmin - DBL_MAX) < DBL_EPSILON
+       || fabs(ymin - DBL_MAX) < DBL_EPSILON
+       || fabs(xmax - DBL_MAX) < DBL_EPSILON
+       || fabs(ymax - DBL_MAX) < DBL_EPSILON) return false;
 
-    b->xmin = xmin;
-    b->xmax = xmax;
-    b->ymin = ymin;
-    b->ymax = ymax;
+  b->xmin = xmin;
+  b->xmax = xmax;
+  b->ymin = ymin;
+  b->ymax = ymax;
 
-    if (srid == 4326) return ows_srs_set_geobbox(o, b->srs);
+  if (srid == 4326) return ows_srs_set_geobbox(o, b->srs);
 
-    return ows_srs_set_from_srid(o, b->srs, srid);
+  return ows_srs_set_from_srid(o, b->srs, srid);
 }
 
 
@@ -96,46 +95,44 @@ bool ows_bbox_set(ows * o, ows_bbox * b, double xmin, double ymin, double xmax,
  */
 bool ows_bbox_set_from_str(ows * o, ows_bbox * bb, const char *str, int srid)
 {
-    double xmin, ymin, xmax, ymax;
-    ows_srs *s;
-    buffer *b;
-    list *l;
-    int srs = srid;
-    bool ret_srs = true;
-
-    assert(o);
-    assert(bb);
-    assert(str);
-
-    b = buffer_init();
-    buffer_add_str(b, str);
-    l = list_explode(',', b);
-    buffer_free(b);
-
-    /* srs is optional since WFS 1.1 */
-    if (l->size < 4 || l->size > 5) {
-        list_free(l);
-        return false;
-    }
-
-    xmin = strtod(l->first->value->buf, NULL);
-    ymin = strtod(l->first->next->value->buf, NULL);
-    xmax = strtod(l->first->next->next->value->buf, NULL);
-    ymax = strtod(l->first->next->next->next->value->buf, NULL);
-    /* TODO error handling */
-
-    /* srs is optional since WFS 1.1 */
-    if (l->size == 5) {
-        s = ows_srs_init();
-        ret_srs = ows_srs_set_from_srsname(o, s, l->last->value->buf);
-        srs = s->srid;
-        ows_srs_free(s);
-    }
-
+  double xmin, ymin, xmax, ymax;
+  ows_srs *s;
+  buffer *b;
+  list *l;
+  int srs = srid;
+  bool ret_srs = true;
+
+  assert(o && bb && str);
+
+  b = buffer_init();
+  buffer_add_str(b, str);
+  l = list_explode(',', b);
+  buffer_free(b);
+
+  /* srs is optional since WFS 1.1 */
+  if (l->size < 4 || l->size > 5) {
     list_free(l);
-    if(!ret_srs) return false;
-
-    return ows_bbox_set(o, bb, xmin, ymin, xmax, ymax, srs);
+    return false;
+  }
+
+  xmin = strtod(l->first->value->buf, NULL);
+  ymin = strtod(l->first->next->value->buf, NULL);
+  xmax = strtod(l->first->next->next->value->buf, NULL);
+  ymax = strtod(l->first->next->next->next->value->buf, NULL);
+  /* FIXME error handling */
+
+  /* srs is optional since WFS 1.1 */
+  if (l->size == 5) {
+    s = ows_srs_init();
+    ret_srs = ows_srs_set_from_srsname(o, s, l->last->value->buf);
+    srs = s->srid;
+    ows_srs_free(s);
+  }
+
+  list_free(l);
+  if(!ret_srs) return false;
+
+  return ows_bbox_set(o, bb, xmin, ymin, xmax, ymax, srs);
 }
 
 
@@ -147,70 +144,69 @@ bool ows_bbox_set_from_str(ows * o, ows_bbox * bb, const char *str, int srid)
  */
 ows_bbox *ows_bbox_boundaries(ows * o, list * from, list * where, ows_srs * srs)
 {
-    ows_bbox *bb;
-    buffer *sql;
-    list *geom;
-    list_node *ln_from, *ln_where, *ln_geom;
-    PGresult *res;
-
-    assert(o);
-    assert(from);
-    assert(where);
-    assert(srs);
-
-    bb = ows_bbox_init();
-
-    if (from->size != where->size) return bb;
-
-    sql = buffer_init();
-    /* Put into a buffer the SQL request calculating an extent */
-    buffer_add_str(sql, "SELECT ST_xmin(g.extent), ST_ymin(g.extent), ST_xmax(g.extent), ST_ymax(g.extent) FROM ");
-    buffer_add_str(sql, "(SELECT ST_Extent(foo.the_geom) as extent FROM ( ");
-
-    /* For each layer name or each geometry column, make an union between retrieved features */
-    for (ln_from = from->first, ln_where = where->first; ln_from ; ln_from = ln_from->next, ln_where = ln_where->next) {
-
-        geom = ows_psql_geometry_column(o, ln_from->value);
-
-        for (ln_geom = geom->first ; ln_geom ; ln_geom = ln_geom->next) {
-            buffer_add_str(sql, " (SELECT ST_Transform(\"");
-            buffer_copy(sql, ln_geom->value);
-            buffer_add_str(sql, "\"::geometry, ");
-            buffer_add_int(sql, srs->srid);
-            buffer_add_str(sql, ") AS \"the_geom\" FROM ");
-            buffer_copy(sql, ows_psql_schema_name(o, ln_from->value));
-            buffer_add_str(sql, ".\"");
-            buffer_copy(sql, ows_psql_table_name(o, ln_from->value));
-            buffer_add_str(sql, "\" ");
-            buffer_copy(sql, ln_where->value);
-            buffer_add_str(sql, ")");
-
-            if (ln_geom->next) buffer_add_str(sql, " UNION ALL ");
-        }
-
-        if (ln_from->next) buffer_add_str(sql, " UNION ALL ");
+  ows_bbox *bb;
+  buffer *sql;
+  list *geom;
+  list_node *ln_from, *ln_where, *ln_geom;
+  PGresult *res;
+
+  assert(o && from && where && srs);
+
+  bb = ows_bbox_init();
+
+  if (from->size != where->size) return bb;
+
+  sql = buffer_init();
+  /* Put into a buffer the SQL request calculating an extent */
+  buffer_add_str(sql, "SELECT ST_xmin(g.extent), ST_ymin(g.extent), ST_xmax(g.extent), ST_ymax(g.extent) FROM ");
+  buffer_add_str(sql, "(SELECT ST_Extent(foo.the_geom) as extent FROM ( ");
+
+  /* For each layer name or each geometry column, make an union between retrieved features */
+  for (ln_from = from->first, ln_where = where->first; 
+       ln_from; 
+       ln_from = ln_from->next, ln_where = ln_where->next) {
+
+    geom = ows_psql_geometry_column(o, ln_from->value);
+
+    for (ln_geom = geom->first ; ln_geom ; ln_geom = ln_geom->next) {
+      buffer_add_str(sql, " (SELECT ST_Transform(\"");
+      buffer_copy(sql, ln_geom->value);
+      buffer_add_str(sql, "\"::geometry, ");
+      buffer_add_int(sql, srs->srid);
+      buffer_add_str(sql, ") AS \"the_geom\" FROM \"");
+      buffer_copy(sql, ows_psql_schema_name(o, ln_from->value));
+      buffer_add_str(sql, "\".\"");
+      buffer_copy(sql, ows_psql_table_name(o, ln_from->value));
+      buffer_add_str(sql, "\" ");
+      buffer_copy(sql, ln_where->value);
+      buffer_add_str(sql, ")");
+
+      if (ln_geom->next) buffer_add_str(sql, " UNION ALL ");
     }
 
-    buffer_add_str(sql, " ) AS foo) AS g");
-
-    res = ows_psql_exec(o, sql->buf);
-    buffer_free(sql);
+    if (ln_from->next) buffer_add_str(sql, " UNION ALL ");
+  }
 
-    if (PQresultStatus(res) != PGRES_TUPLES_OK && PQntuples(res) != 4) {
-        PQclear(res);
-        return bb;
-    }
-
-    bb->xmin = strtod(PQgetvalue(res, 0, 0), NULL);
-    bb->ymin = strtod(PQgetvalue(res, 0, 1), NULL);
-    bb->xmax = strtod(PQgetvalue(res, 0, 2), NULL);
-    bb->ymax = strtod(PQgetvalue(res, 0, 3), NULL);
-    /* TODO Error handling */
+  buffer_add_str(sql, " ) AS foo) AS g");
 
-    ows_srs_copy(bb->srs, srs);
+  res = ows_psql_exec(o, sql->buf);
+  buffer_free(sql);
 
+  if (PQresultStatus(res) != PGRES_TUPLES_OK || PQntuples(res) != 4) {
     PQclear(res);
     return bb;
+  }
+
+  bb->xmin = strtod(PQgetvalue(res, 0, 0), NULL);
+  bb->ymin = strtod(PQgetvalue(res, 0, 1), NULL);
+  bb->xmax = strtod(PQgetvalue(res, 0, 2), NULL);
+  bb->ymax = strtod(PQgetvalue(res, 0, 3), NULL);
+  /* FIXME Error handling */
+
+  ows_srs_copy(bb->srs, srs);
+
+  PQclear(res);
+  return bb;
 }
 
 
@@ -219,32 +215,31 @@ ows_bbox *ows_bbox_boundaries(ows * o, list * from, list * where, ows_srs * srs)
  */
 bool ows_bbox_transform(ows * o, ows_bbox * bb, int srid)
 {
-    buffer *sql;
-    PGresult *res;
+  buffer *sql;
+  PGresult *res;
 
-    assert(o);
-    assert(bb);
+  assert(o && bb);
 
-    sql = buffer_init();
-    buffer_add_str(sql, "SELECT xmin(g), ymin(g), xmax(g), ymax(g) FROM (SELECT ST_Transform(");
-    ows_bbox_to_query(o, bb, sql);
-    buffer_add_str(sql, ")) AS g ) AS foo");
+  sql = buffer_init();
+  buffer_add_str(sql, "SELECT xmin(g), ymin(g), xmax(g), ymax(g) FROM (SELECT ST_Transform(");
+  ows_bbox_to_query(o, bb, sql);
+  buffer_add_str(sql, ")) AS g ) AS foo");
 
-    res = ows_psql_exec(o, sql->buf);
-    buffer_free(sql);
+  res = ows_psql_exec(o, sql->buf);
+  buffer_free(sql);
 
-    if (PQresultStatus(res) != PGRES_TUPLES_OK) {
-        PQclear(res);
-        return false;
-    }
+  if (PQresultStatus(res) != PGRES_TUPLES_OK) {
+    PQclear(res);
+    return false;
+  }
 
-    bb->xmin = strtod(PQgetvalue(res, 0, 0), NULL);
-    bb->ymin = strtod(PQgetvalue(res, 0, 1), NULL);
-    bb->xmax = strtod(PQgetvalue(res, 0, 2), NULL);
-    bb->ymax = strtod(PQgetvalue(res, 0, 3), NULL);
-    /* TODO Error Handling */
+  bb->xmin = strtod(PQgetvalue(res, 0, 0), NULL);
+  bb->ymin = strtod(PQgetvalue(res, 0, 1), NULL);
+  bb->xmax = strtod(PQgetvalue(res, 0, 2), NULL);
+  bb->ymax = strtod(PQgetvalue(res, 0, 3), NULL);
+  /* FIXME Error Handling */
 
-    return ows_srs_set_from_srid(o, bb->srs, srid);
+  return ows_srs_set_from_srid(o, bb->srs, srid);
 }
 
 
@@ -253,26 +248,25 @@ bool ows_bbox_transform(ows * o, ows_bbox * bb, int srid)
  */
 bool ows_bbox_set_from_geobbox(ows * o, ows_bbox * bb, ows_geobbox * geo)
 {
-    assert(bb);
-    assert(geo);
-
-    if (geo->west < geo->east) {
-        bb->xmin = geo->west;
-        bb->xmax = geo->east;
-    } else {
-        bb->xmax = geo->west;
-        bb->xmin = geo->east;
-    }
-
-    if (geo->north < geo->south) {
-        bb->ymin = geo->north;
-        bb->ymax = geo->south;
-    } else {
-        bb->ymax = geo->north;
-        bb->ymin = geo->south;
-    }
-
-    return ows_srs_set_geobbox(o, bb->srs);
+  assert(bb && geo);
+
+  if (geo->west < geo->east) {
+    bb->xmin = geo->west;
+    bb->xmax = geo->east;
+  } else {
+    bb->xmax = geo->west;
+    bb->xmin = geo->east;
+  }
+
+  if (geo->north < geo->south) {
+    bb->ymin = geo->north;
+    bb->ymax = geo->south;
+  } else {
+    bb->ymax = geo->north;
+    bb->ymin = geo->south;
+  }
+
+  return ows_srs_set_geobbox(o, bb->srs);
 }
 
 
@@ -281,51 +275,49 @@ bool ows_bbox_set_from_geobbox(ows * o, ows_bbox * bb, ows_geobbox * geo)
  */
 void ows_bbox_to_query(ows *o, ows_bbox *bbox, buffer *query)
 {
-    double x1, y1, x2, y2;
-
-    assert(o);
-    assert(bbox);
-    assert(query);
-
-    if (bbox->srs->is_reverse_axis) {
-        x1 = bbox->ymin;
-        y1 = bbox->xmin;
-        x2 = bbox->ymax;
-        y2 = bbox->xmax;
-    } else {
-        x1 = bbox->xmin;
-        y1 = bbox->ymin;
-        x2 = bbox->xmax;
-        y2 = bbox->ymax;
-    }
-
-   /* We use explicit POLYGON geometry rather than BBOX 
-      related to precision handle (Float4 vs Double)    */
-    buffer_add_str(query, "'SRID=");
-    buffer_add_int(query, bbox->srs->srid);
-    buffer_add_str(query, ";POLYGON((");
-    buffer_add_double(query, x1);
-    buffer_add_str(query, " ");
-    buffer_add_double(query, y1);
-    buffer_add_str(query, ",");
-    buffer_add_double(query, x1);
-    buffer_add_str(query, " ");
-    buffer_add_double(query, y2);
-    buffer_add_str(query, ",");
-    buffer_add_double(query, x2);
-    buffer_add_str(query, " ");
-    buffer_add_double(query, y2);
-    buffer_add_str(query, ",");
-    buffer_add_double(query, x2);
-    buffer_add_str(query, " ");
-    buffer_add_double(query, y1);
-    buffer_add_str(query, ",");
-    buffer_add_double(query, x1);
-    buffer_add_str(query, " ");
-    buffer_add_double(query, y1);
-    buffer_add_str(query, "))'::geometry");
-
-    /* FIXME what about geography ? */
+  double x1, y1, x2, y2;
+
+  assert(o && bbox && query);
+
+  if (bbox->srs->is_reverse_axis) {
+    x1 = bbox->ymin;
+    y1 = bbox->xmin;
+    x2 = bbox->ymax;
+    y2 = bbox->xmax;
+  } else {
+    x1 = bbox->xmin;
+    y1 = bbox->ymin;
+    x2 = bbox->xmax;
+    y2 = bbox->ymax;
+  }
+
+  /* We use explicit POLYGON geometry rather than BBOX
+     related to precision handle (Float4 vs Double)    */
+  buffer_add_str(query, "'SRID=");
+  buffer_add_int(query, bbox->srs->srid);
+  buffer_add_str(query, ";POLYGON((");
+  buffer_add_double(query, x1);
+  buffer_add_str(query, " ");
+  buffer_add_double(query, y1);
+  buffer_add_str(query, ",");
+  buffer_add_double(query, x1);
+  buffer_add_str(query, " ");
+  buffer_add_double(query, y2);
+  buffer_add_str(query, ",");
+  buffer_add_double(query, x2);
+  buffer_add_str(query, " ");
+  buffer_add_double(query, y2);
+  buffer_add_str(query, ",");
+  buffer_add_double(query, x2);
+  buffer_add_str(query, " ");
+  buffer_add_double(query, y1);
+  buffer_add_str(query, ",");
+  buffer_add_double(query, x1);
+  buffer_add_str(query, " ");
+  buffer_add_double(query, y1);
+  buffer_add_str(query, "))'::geometry");
+
+  /* FIXME what about geography ? */
 }
 
 
@@ -335,14 +327,9 @@ void ows_bbox_to_query(ows *o, ows_bbox *bbox, buffer *query)
  */
 void ows_bbox_flush(const ows_bbox * b, FILE * output)
 {
-    assert(b);
+  assert(b);
 
-    fprintf(output, "[%g,%g,%g,%g]\n", b->xmin, b->ymin, b->xmax, b->ymax);
-    ows_srs_flush(b->srs, output);
+  fprintf(output, "[%g,%g,%g,%g]\n", b->xmin, b->ymin, b->xmax, b->ymax);
+  ows_srs_flush(b->srs, output);
 }
 #endif
-
-
-/*
- * vim: expandtab sw=4 ts=4
- */
diff --git a/src/ows/ows_config.c b/src/ows/ows_config.c
index 77b4ec3..cd452ca 100644
--- a/src/ows/ows_config.c
+++ b/src/ows/ows_config.c
@@ -34,93 +34,93 @@
  */
 static void ows_parse_config_tinyows(ows * o, xmlTextReaderPtr r)
 {
-    xmlChar *a;
-    int precision, log_level;
-
-    assert(o);
-    assert(r);
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "online_resource");
-    if (a) {
-        buffer_add_str(o->online_resource, (char *) a);
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "schema_dir");
-    if (a) {
-        buffer_add_str(o->schema_dir, (char *) a);
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "log");
-    if (a) {
-        o->log_file = buffer_init();
-        buffer_add_str(o->log_file, (char *) a);
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "log_level");
-    if (a) {
-        log_level = atoi((char *) a);
-        if (log_level > 0 && log_level < 16) o->log_level = log_level;
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "degree_precision");
-    if (a) {
-        precision = atoi((char *) a);
-        if (precision > 0 && precision < 12) o->degree_precision = precision;
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "meter_precision");
-    if (a) {
-        precision = atoi((char *) a);
-        if (precision > 0 && precision < 12) o->meter_precision = precision;
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "display_bbox");
-    if (a) {
-        if (!atoi((char *) a)) o->display_bbox = false;
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "estimated_extent");
-    if (a) {
-        if (atoi((char *) a)) o->estimated_extent = true;
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "check_schema");
-    if (a) {
-        if (!atoi((char *) a)) o->check_schema = false;
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "check_valid_geom");
-    if (a) {
-        if (!atoi((char *) a)) o->check_valid_geom = false;
-        xmlFree(a);
-    }
-    
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "encoding");
-    if (a) {
-        buffer_add_str(o->encoding, (char *) a);
-        xmlFree(a);
-    } else buffer_add_str(o->encoding, OWS_DEFAULT_XML_ENCODING);
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "expose_pk");
-    if (a) {
-        if (atoi((char *) a)) o->expose_pk = true;
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "wfs_default_version");
-    if (a) {
-        ows_version_set_str(o->wfs_default_version, (char *) a);
-        xmlFree(a);
-    }
+  xmlChar *a;
+  int precision, log_level;
+
+  assert(o);
+  assert(r);
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "online_resource");
+  if (a) {
+    buffer_add_str(o->online_resource, (char *) a);
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "schema_dir");
+  if (a) {
+    buffer_add_str(o->schema_dir, (char *) a);
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "log");
+  if (a) {
+    o->log_file = buffer_init();
+    buffer_add_str(o->log_file, (char *) a);
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "log_level");
+  if (a) {
+    log_level = atoi((char *) a);
+    if (log_level > 0 && log_level < 16) o->log_level = log_level;
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "degree_precision");
+  if (a) {
+    precision = atoi((char *) a);
+    if (precision > 0 && precision < 12) o->degree_precision = precision;
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "meter_precision");
+  if (a) {
+    precision = atoi((char *) a);
+    if (precision > 0 && precision < 12) o->meter_precision = precision;
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "display_bbox");
+  if (a) {
+    if (!atoi((char *) a)) o->display_bbox = false;
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "estimated_extent");
+  if (a) {
+    if (atoi((char *) a)) o->estimated_extent = true;
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "check_schema");
+  if (a) {
+    if (!atoi((char *) a)) o->check_schema = false;
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "check_valid_geom");
+  if (a) {
+    if (!atoi((char *) a)) o->check_valid_geom = false;
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "encoding");
+  if (a) {
+    buffer_add_str(o->encoding, (char *) a);
+    xmlFree(a);
+  } else buffer_add_str(o->encoding, OWS_DEFAULT_XML_ENCODING);
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "expose_pk");
+  if (a) {
+    if (atoi((char *) a)) o->expose_pk = true;
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "wfs_default_version");
+  if (a) {
+    ows_version_set_str(o->wfs_default_version, (char *) a);
+    xmlFree(a);
+  }
 }
 
 
@@ -129,118 +129,118 @@ static void ows_parse_config_tinyows(ows * o, xmlTextReaderPtr r)
  */
 static void ows_parse_config_contact(ows * o, xmlTextReaderPtr r)
 {
-    xmlChar *a;
-    ows_contact *contact = ows_contact_init();
-
-    assert(o);
-    assert(r);
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "name");
-    if (a) {
-        contact->name = buffer_init();
-        buffer_add_str(contact->name, (char *) a);
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "site");
-    if (a) {
-        contact->site = buffer_init();
-        buffer_add_str(contact->site, (char *) a);
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "individual_name");
-    if (a) {
-        contact->indiv_name = buffer_init();
-        buffer_add_str(contact->indiv_name, (char *) a);
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "position");
-    if (a) {
-        contact->position = buffer_init();
-        buffer_add_str(contact->position, (char *) a);
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "phone");
-    if (a) {
-        contact->phone = buffer_init();
-        buffer_add_str(contact->phone, (char *) a);
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "fax");
-    if (a) {
-        contact->fax = buffer_init();
-        buffer_add_str(contact->fax, (char *) a);
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "online_resource");
-    if (a) {
-        contact->online_resource = buffer_init();
-        buffer_add_str(contact->online_resource, (char *) a);
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "address");
-    if (a) {
-        contact->address = buffer_init();
-        buffer_add_str(contact->address, (char *) a);
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "postcode");
-    if (a) {
-        contact->postcode = buffer_init();
-        buffer_add_str(contact->postcode, (char *) a);
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "city");
-    if (a) {
-        contact->city = buffer_init();
-        buffer_add_str(contact->city, (char *) a);
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "administrative_area");
-    if (a) {
-        contact->state = buffer_init();
-        buffer_add_str(contact->state, (char *) a);
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "country");
-    if (a) {
-        contact->country = buffer_init();
-        buffer_add_str(contact->country, (char *) a);
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "email");
-    if (a) {
-        contact->email = buffer_init();
-        buffer_add_str(contact->email, (char *) a);
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "hours_of_service");
-    if (a) {
-        contact->hours = buffer_init();
-        buffer_add_str(contact->hours, (char *) a);
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "contact_instructions");
-    if (a) {
-        contact->instructions = buffer_init();
-        buffer_add_str(contact->instructions, (char *) a);
-        xmlFree(a);
-    }
-
-    o->contact = contact;
+  xmlChar *a;
+  ows_contact *contact = ows_contact_init();
+
+  assert(o);
+  assert(r);
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "name");
+  if (a) {
+    contact->name = buffer_init();
+    buffer_add_str(contact->name, (char *) a);
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "site");
+  if (a) {
+    contact->site = buffer_init();
+    buffer_add_str(contact->site, (char *) a);
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "individual_name");
+  if (a) {
+    contact->indiv_name = buffer_init();
+    buffer_add_str(contact->indiv_name, (char *) a);
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "position");
+  if (a) {
+    contact->position = buffer_init();
+    buffer_add_str(contact->position, (char *) a);
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "phone");
+  if (a) {
+    contact->phone = buffer_init();
+    buffer_add_str(contact->phone, (char *) a);
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "fax");
+  if (a) {
+    contact->fax = buffer_init();
+    buffer_add_str(contact->fax, (char *) a);
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "online_resource");
+  if (a) {
+    contact->online_resource = buffer_init();
+    buffer_add_str(contact->online_resource, (char *) a);
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "address");
+  if (a) {
+    contact->address = buffer_init();
+    buffer_add_str(contact->address, (char *) a);
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "postcode");
+  if (a) {
+    contact->postcode = buffer_init();
+    buffer_add_str(contact->postcode, (char *) a);
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "city");
+  if (a) {
+    contact->city = buffer_init();
+    buffer_add_str(contact->city, (char *) a);
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "administrative_area");
+  if (a) {
+    contact->state = buffer_init();
+    buffer_add_str(contact->state, (char *) a);
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "country");
+  if (a) {
+    contact->country = buffer_init();
+    buffer_add_str(contact->country, (char *) a);
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "email");
+  if (a) {
+    contact->email = buffer_init();
+    buffer_add_str(contact->email, (char *) a);
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "hours_of_service");
+  if (a) {
+    contact->hours = buffer_init();
+    buffer_add_str(contact->hours, (char *) a);
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "contact_instructions");
+  if (a) {
+    contact->instructions = buffer_init();
+    buffer_add_str(contact->instructions, (char *) a);
+    xmlFree(a);
+  }
+
+  o->contact = contact;
 }
 
 
@@ -249,46 +249,46 @@ static void ows_parse_config_contact(ows * o, xmlTextReaderPtr r)
  */
 static void ows_parse_config_metadata(ows * o, xmlTextReaderPtr r)
 {
-    xmlChar *a;
-
-    assert(o);
-    assert(r);
-
-    o->metadata = ows_metadata_init();
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "name");
-    if (a) {
-        o->metadata->name = buffer_init();
-        buffer_add_str(o->metadata->name, (char *) a);
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "title");
-    if (a) {
-        o->metadata->title = buffer_init();
-        buffer_add_str(o->metadata->title, (char *) a);
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "keywords");
-    if (a) {
-        o->metadata->keywords = list_explode_str(',', (char *) a);
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "fees");
-    if (a) {
-        o->metadata->fees = buffer_init();
-        buffer_add_str(o->metadata->fees, (char *) a);
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "access_constraints");
-    if (a) {
-        o->metadata->access_constraints = buffer_init();
-        buffer_add_str(o->metadata->access_constraints, (char *) a);
-        xmlFree(a);
-    }
+  xmlChar *a;
+
+  assert(o);
+  assert(r);
+
+  o->metadata = ows_metadata_init();
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "name");
+  if (a) {
+    o->metadata->name = buffer_init();
+    buffer_add_str(o->metadata->name, (char *) a);
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "title");
+  if (a) {
+    o->metadata->title = buffer_init();
+    buffer_add_str(o->metadata->title, (char *) a);
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "keywords");
+  if (a) {
+    o->metadata->keywords = list_explode_str(',', (char *) a);
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "fees");
+  if (a) {
+    o->metadata->fees = buffer_init();
+    buffer_add_str(o->metadata->fees, (char *) a);
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "access_constraints");
+  if (a) {
+    o->metadata->access_constraints = buffer_init();
+    buffer_add_str(o->metadata->access_constraints, (char *) a);
+    xmlFree(a);
+  }
 }
 
 
@@ -297,21 +297,21 @@ static void ows_parse_config_metadata(ows * o, xmlTextReaderPtr r)
  */
 static void ows_parse_config_abstract(ows * o, xmlTextReaderPtr r)
 {
-    xmlChar *v;
+  xmlChar *v;
 
-    assert(r);
-    assert(o);
-    assert(o->metadata);
+  assert(r);
+  assert(o);
+  assert(o->metadata);
 
-    /* FIXME should use XmlTextReader expand on metadata parent */
-    xmlTextReaderRead(r);
-    v = xmlTextReaderValue(r);
+  /* FIXME should use XmlTextReader expand on metadata parent */
+  xmlTextReaderRead(r);
+  v = xmlTextReaderValue(r);
 
-    if (v) {
-        o->metadata->abstract = buffer_init();
-        buffer_add_str(o->metadata->abstract, (char *) v);
-        xmlFree(v);
-    }
+  if (v) {
+    o->metadata->abstract = buffer_init();
+    buffer_add_str(o->metadata->abstract, (char *) v);
+    xmlFree(v);
+  }
 }
 
 
@@ -320,25 +320,25 @@ static void ows_parse_config_abstract(ows * o, xmlTextReaderPtr r)
  */
 static void ows_parse_config_limits(ows * o, xmlTextReaderPtr r)
 {
-    xmlChar *a;
-    ows_geobbox *geo;
-
-    assert(o);
-    assert(r);
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "features");
-    if (a) {
-        o->max_features = atoi((char *) a);
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "geobbox");
-    if (a) {
-        geo = ows_geobbox_init();
-        if (ows_geobbox_set_from_str(o, geo, (char *) a)) o->max_geobbox = geo;
-        else ows_geobbox_free(geo);
-        xmlFree(a);
-    }
+  xmlChar *a;
+  ows_geobbox *geo;
+
+  assert(o);
+  assert(r);
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "features");
+  if (a) {
+    o->max_features = atoi((char *) a);
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "geobbox");
+  if (a) {
+    geo = ows_geobbox_init();
+    if (ows_geobbox_set_from_str(o, geo, (char *) a)) o->max_geobbox = geo;
+    else ows_geobbox_free(geo);
+    xmlFree(a);
+  }
 }
 
 
@@ -347,37 +347,37 @@ static void ows_parse_config_limits(ows * o, xmlTextReaderPtr r)
  */
 static void ows_parse_config_pg(ows * o, xmlTextReaderPtr r)
 {
-    xmlChar *a, *v;
-
-    assert(o);
-    assert(r);
-
-    if (xmlTextReaderMoveToFirstAttribute(r) != 1) return;
-    do {
-        a = xmlTextReaderName(r);
-
-        if (       !strcmp((char *) a, "host")
-                || !strcmp((char *) a, "user")
-                || !strcmp((char *) a, "password")
-                || !strcmp((char *) a, "dbname")
-                || !strcmp((char *) a, "port")) {
-            v = xmlTextReaderValue(r);
-            buffer_add_str(o->pg_dsn, (char *) a);
-            buffer_add_str(o->pg_dsn, "=");
-            buffer_add_str(o->pg_dsn, (char *) v);
-            buffer_add_str(o->pg_dsn, " ");
-            xmlFree(v);
-        } else if (!strcmp((char *) a, "encoding")) { 
-            v = xmlTextReaderValue(r); 
-            buffer_add_str(o->db_encoding, (char *) v); 
-            xmlFree(v); 
-        }
-
-        xmlFree(a);
-    } while (xmlTextReaderMoveToNextAttribute(r) == 1);
-
-    if (!o->db_encoding->use)
-        buffer_add_str(o->db_encoding, OWS_DEFAULT_DB_ENCODING);
+  xmlChar *a, *v;
+
+  assert(o);
+  assert(r);
+
+  if (xmlTextReaderMoveToFirstAttribute(r) != 1) return;
+  do {
+    a = xmlTextReaderName(r);
+
+    if (    !strcmp((char *) a, "host")
+         || !strcmp((char *) a, "user")
+         || !strcmp((char *) a, "password")
+         || !strcmp((char *) a, "dbname")
+         || !strcmp((char *) a, "port")) {
+      v = xmlTextReaderValue(r);
+      buffer_add_str(o->pg_dsn, (char *) a);
+      buffer_add_str(o->pg_dsn, "=");
+      buffer_add_str(o->pg_dsn, (char *) v);
+      buffer_add_str(o->pg_dsn, " ");
+      xmlFree(v);
+    } else if (!strcmp((char *) a, "encoding")) {
+      v = xmlTextReaderValue(r);
+      buffer_add_str(o->db_encoding, (char *) v);
+      xmlFree(v);
+    }
+
+    xmlFree(a);
+  } while (xmlTextReaderMoveToNextAttribute(r) == 1);
+
+  if (!o->db_encoding->use)
+    buffer_add_str(o->db_encoding, OWS_DEFAULT_DB_ENCODING);
 }
 
 
@@ -386,20 +386,20 @@ static void ows_parse_config_pg(ows * o, xmlTextReaderPtr r)
  */
 static ows_layer *ows_parse_config_layer_get_parent(const ows * o, int depth)
 {
-    ows_layer_node *ln;
+  ows_layer_node *ln;
 
-    if (depth == 1) return (ows_layer *) NULL;
+  if (depth == 1) return (ows_layer *) NULL;
 
-    ln = o->layers->last;
+  ln = o->layers->last;
 
-    if (ln->layer->depth < depth)  return ln->layer;
-    if (ln->layer->depth == depth) return ln->layer->parent;
+  if (ln->layer->depth < depth)  return ln->layer;
+  if (ln->layer->depth == depth) return ln->layer->parent;
 
-    for (/* empty */ ; ln ; ln = ln->prev)
-        if (depth == ln->layer->depth)
-            return ln->layer->parent;
+  for (/* empty */ ; ln ; ln = ln->prev)
+    if (depth == ln->layer->depth)
+      return ln->layer->parent;
 
-    return (ows_layer *) NULL;
+  return (ows_layer *) NULL;
 }
 
 
@@ -408,130 +408,174 @@ static ows_layer *ows_parse_config_layer_get_parent(const ows * o, int depth)
  */
 static void ows_parse_config_layer(ows * o, xmlTextReaderPtr r)
 {
-    ows_layer *layer;
-    xmlChar *a;
-    list *l;
-
-    assert(o);
-    assert(r);
-
-    layer = ows_layer_init();
-
-    layer->depth = xmlTextReaderDepth(r);
-    layer->parent = ows_parse_config_layer_get_parent(o, layer->depth);
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "table");
-    if (a) {
-        buffer_add_str(layer->storage->table, (char *) a);
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "name");
-    if (a) {
-        layer->name = buffer_init();
-        buffer_add_str(layer->name, (char *) a);
-
-	if (!layer->storage->table->use) buffer_add_str(layer->storage->table, (char *) a);
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "title");
-    if (a) {
-        layer->title = buffer_init();
-        buffer_add_str(layer->title, (char *) a);
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "abstract");
-    if (a) {
-        layer->abstract = buffer_init();
-        buffer_add_str(layer->abstract, (char *) a);
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "keywords");
-    if (a) {
-        layer->keywords = list_explode_str(',', (char *) a);
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "gml_ns");
-    if (a) {
-        layer->gml_ns = list_explode_str(',', (char *) a);
-        xmlFree(a);
-    }
-
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "schema");
-    if (a) {
-        buffer_add_str(layer->storage->schema, (char *) a);
-        xmlFree(a);
-    } else buffer_add_str(layer->storage->schema, "public");
-
-    /* inherits from layer parent and replaces with specified value if defined */
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "retrievable");
-    if (a && atoi((char *) a) == 1) {
-        layer->retrievable = true;
-        xmlFree(a);
-    } else if (!a && layer->parent && layer->parent->retrievable)
-        layer->retrievable = true;
-    else
-        xmlFree(a);
-
-    /* inherits from layer parent and replaces with specified value if defined */
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "writable");
-    if (a && atoi((char *) a) == 1) {
-        layer->writable = true;
-        xmlFree(a);
-    } else if (!a && layer->parent && layer->parent->writable)
-        layer->writable = true;
-    else xmlFree(a);
-
-    /* inherits from layer parent and adds specified value */
-    if (layer->parent && layer->parent->srid) {
-        layer->srid = list_init();
-        list_add_list(layer->srid, layer->parent->srid);
-    }
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "srid");
-    if (a) {
-        if (!layer->srid)
-		layer->srid = list_explode_str(',', (char *) a);
-	else {
-        	l = list_explode_str(',', (char *) a);
-        	list_add_list(layer->srid, l);
-        	list_free(l);
-	}
-        xmlFree(a);
-    }
-
-    /* Inherits from layer parent and replaces with specified value if defined */
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "geobbox");
-    if (a) {
-        layer->geobbox = ows_geobbox_init();
-        ows_geobbox_set_from_str(o, layer->geobbox, (char *) a);
-        xmlFree(a);
-    } else if (!a && layer->parent && layer->parent->geobbox) {
-        layer->geobbox = ows_geobbox_copy(layer->parent->geobbox);
-    } else xmlFree(a);
-
-    /* Inherits from layer parent and replaces with specified value if defined */
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "ns_prefix");
-    if (a) {
-        buffer_add_str(layer->ns_prefix, (char *) a);
-        xmlFree(a);
-    } else if (!a && layer->parent && layer->parent->ns_prefix) {
-        buffer_copy(layer->ns_prefix, layer->parent->ns_prefix);
-    } else xmlFree(a);
-
-    /* Inherits from layer parent and replaces with specified value if defined */
-    a = xmlTextReaderGetAttribute(r, (xmlChar *) "ns_uri");
-    if (a) {
-        buffer_add_str(layer->ns_uri, (char *) a);
-        xmlFree(a);
-    } else if (!a && layer->parent && layer->parent->ns_uri) {
-        buffer_copy(layer->ns_uri, layer->parent->ns_uri);
-    } else xmlFree(a);
-
-    ows_layer_list_add(o->layers, layer);
+  ows_layer *layer;
+  xmlChar *a;
+  list *l;
+
+  assert(o);
+  assert(r);
+
+  layer = ows_layer_init();
+
+  layer->depth = xmlTextReaderDepth(r);
+  layer->parent = ows_parse_config_layer_get_parent(o, layer->depth);
+
+
+  /* Not herited properties  */
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "table");
+  if (a) {
+    buffer_add_str(layer->storage->table, (char *) a);
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "name");
+  if (a) {
+    layer->name = buffer_init();
+    layer->name_no_uri = buffer_init();
+    layer->name_prefix = buffer_init();
+    buffer_add_str(layer->name, (char *) a);
+    buffer_copy(layer->name_no_uri, layer->name);
+    buffer_copy(layer->name_prefix, layer->name);
+    if (!layer->storage->table->use)
+      buffer_add_str(layer->storage->table, (char *) a);
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "title");
+  if (a) {
+    layer->title = buffer_init();
+    buffer_add_str(layer->title, (char *) a);
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "abstract");
+  if (a) {
+    layer->abstract = buffer_init();
+    buffer_add_str(layer->abstract, (char *) a);
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "gml_ns");
+  if (a) {
+    layer->gml_ns = list_explode_str(',', (char *) a);
+    xmlFree(a);
+  }
+
+
+  /* Herited properties  */
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "keywords");
+  if (a) {
+    layer->keywords = list_explode_str(',', (char *) a);
+    xmlFree(a);
+  } else if (layer->parent && layer->parent->keywords) {
+    layer->keywords = list_init();
+    list_add_list(layer->keywords, layer->parent->keywords);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "schema");
+  if (a) {
+    buffer_add_str(layer->storage->schema, (char *) a);
+    xmlFree(a);
+  } else if (layer->parent && layer->parent->storage->schema) 
+    buffer_copy(layer->storage->schema, layer->parent->storage->schema);
+  else buffer_add_str(layer->storage->schema, "public");
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "retrievable");
+  if (a && atoi((char *) a) == 1) {
+    layer->retrievable = true;
+    xmlFree(a);
+  } else if (!a && layer->parent && layer->parent->retrievable)
+    layer->retrievable = true;
+  else xmlFree(a);
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "writable");
+  if (a && atoi((char *) a) == 1) {
+    layer->writable = true;
+    xmlFree(a);
+  } else if (!a && layer->parent && layer->parent->writable)
+    layer->writable = true;
+  else xmlFree(a);
+
+  if (layer->parent && layer->parent->srid) {
+    layer->srid = list_init();
+    list_add_list(layer->srid, layer->parent->srid);
+  }
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "srid");
+  if (a) {
+    if (!layer->srid)
+      layer->srid = list_explode_str(',', (char *) a);
+    else {
+      l = list_explode_str(',', (char *) a);
+      list_add_list(layer->srid, l);
+      list_free(l);
+    }
+    xmlFree(a);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "geobbox");
+  if (a) {
+    layer->geobbox = ows_geobbox_init();
+    ows_geobbox_set_from_str(o, layer->geobbox, (char *) a);
+    xmlFree(a);
+  } else if (!a && layer->parent && layer->parent->geobbox)
+    layer->geobbox = ows_geobbox_copy(layer->parent->geobbox);
+  else xmlFree(a);
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "ns_prefix");
+  if (a) {
+    buffer_add_str(layer->ns_prefix, (char *) a);
+    xmlFree(a);
+  } else if (!a && layer->parent && layer->parent->ns_prefix)
+    buffer_copy(layer->ns_prefix, layer->parent->ns_prefix);
+  else xmlFree(a);
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "ns_uri");
+  if (a) {
+    buffer_add_str(layer->ns_uri, (char *) a);
+    xmlFree(a);
+  } else if (!a && layer->parent && layer->parent->ns_uri)
+    buffer_copy(layer->ns_uri, layer->parent->ns_uri);
+  else xmlFree(a);
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "exclude_items");
+  if (a) {
+    layer->exclude_items = list_explode_str_trim(',', (char *) a);
+    xmlFree(a);
+  } else if (layer->parent && layer->parent->exclude_items) {
+    layer->exclude_items = list_init();
+    list_add_list(layer->exclude_items, layer->parent->exclude_items);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "include_items");
+  if (a) {
+    layer->include_items = list_explode_str_trim(',', (char *) a);
+    xmlFree(a);
+  } else if (layer->parent && layer->parent->include_items) {
+    layer->include_items = list_init();
+    list_add_list(layer->exclude_items, layer->parent->include_items);
+  }
+
+  a = xmlTextReaderGetAttribute(r, (xmlChar *) "pkey");
+  if (a) {
+    layer->pkey = buffer_init();
+    buffer_add_str(layer->pkey, (char *) a);
+    xmlFree(a);
+  } else if (layer->parent && layer->parent->pkey) {
+    layer->pkey = buffer_init();
+    buffer_copy(layer->pkey, layer->parent->pkey);
+  }
+
+  if (layer->name && layer->ns_uri) {
+      buffer_add_head(layer->name, ':');
+      buffer_add_head_str(layer->name, layer->ns_uri->buf);
+  }
+  if (layer->name && layer->ns_prefix) {
+      buffer_add_head(layer->name_prefix, ':');
+      buffer_add_head_str(layer->name_prefix, layer->ns_prefix->buf);
+  }
+  ows_layer_list_add(o->layers, layer);
 }
 
 
@@ -541,44 +585,45 @@ static void ows_parse_config_layer(ows * o, xmlTextReaderPtr r)
  */
 static void ows_config_check(ows * o)
 {
-    if (!o->online_resource->use) {
-        ows_error(o, OWS_ERROR_CONFIG_FILE, "No 'online_resource' property in tinyows element",
-                  "parse_config_file");
-        return;
-    }
-
-    if (!ows_version_check(o->wfs_default_version)) {
-        ows_error(o, OWS_ERROR_CONFIG_FILE, "WFS Default version is not correct.", "parse_config_file");
-        return;
-    }
-
-    if (!o->schema_dir->use) {
-        ows_error(o, OWS_ERROR_CONFIG_FILE, "No 'schema_dir' property in tinyows element",
-                  "parse_config_file");
-        return;
-    }
-
-    if (!o->metadata) {
-        ows_error(o, OWS_ERROR_CONFIG_FILE, "No 'metadata' element", "parse_config_file");
-        return;
-    }
-
-    if (!o->metadata->name) {
-        ows_error(o, OWS_ERROR_CONFIG_FILE, "No 'name' property in metadata element",
-                  "parse_config_file");
-        return;
-    }
-
-    if (!o->metadata->title) {
-        ows_error(o, OWS_ERROR_CONFIG_FILE, "No 'title' property in metadata element",
-                  "parse_config_file");
-        return;
-    }
-
-    if (!o->pg_dsn->use) { ows_error(o, OWS_ERROR_CONFIG_FILE, "No 'pg' element",
-                  "parse_config_file");
-        return;
-    }
+  if (!o->online_resource->use) {
+    ows_error(o, OWS_ERROR_CONFIG_FILE, "No 'online_resource' property in tinyows element",
+              "parse_config_file");
+    return;
+  }
+
+  if (!ows_version_check(o->wfs_default_version)) {
+    ows_error(o, OWS_ERROR_CONFIG_FILE, "WFS Default version is not correct.", "parse_config_file");
+    return;
+  }
+
+  if (!o->schema_dir->use) {
+    ows_error(o, OWS_ERROR_CONFIG_FILE, "No 'schema_dir' property in tinyows element",
+              "parse_config_file");
+    return;
+  }
+
+  if (!o->metadata) {
+    ows_error(o, OWS_ERROR_CONFIG_FILE, "No 'metadata' element", "parse_config_file");
+    return;
+  }
+
+  if (!o->metadata->name) {
+    ows_error(o, OWS_ERROR_CONFIG_FILE, "No 'name' property in metadata element",
+              "parse_config_file");
+    return;
+  }
+
+  if (!o->metadata->title) {
+    ows_error(o, OWS_ERROR_CONFIG_FILE, "No 'title' property in metadata element",
+              "parse_config_file");
+    return;
+  }
+
+  if (!o->pg_dsn->use) {
+    ows_error(o, OWS_ERROR_CONFIG_FILE, "No 'pg' element",
+              "parse_config_file");
+    return;
+  }
 }
 
 
@@ -587,73 +632,68 @@ static void ows_config_check(ows * o)
  */
 static void ows_parse_config_xml(ows * o, const char *filename)
 {
-    xmlTextReaderPtr r;
-    const xmlChar *name;
-    int ret;
-
-    assert(o);
-    assert(filename);
+  xmlTextReaderPtr r;
+  const xmlChar *name;
+  int ret;
 
-    r = xmlReaderForFile(filename, "UTF-8", 0);
-    if (!r) {
-        ows_error(o, OWS_ERROR_CONFIG_FILE, "Unable to open config file !", "parse_config_file");
-        return;
-    }
+  assert(o);
+  assert(filename);
 
-    if (!o->layers) o->layers = ows_layer_list_init();
+  r = xmlReaderForFile(filename, "UTF-8", 0);
+  if (!r) {
+    ows_error(o, OWS_ERROR_CONFIG_FILE, "Unable to open config file !", "parse_config_file");
+    return;
+  }
 
-    while ((ret = xmlTextReaderRead(r)) == 1) {
-        if (xmlTextReaderNodeType(r) == XML_READER_TYPE_ELEMENT) {
-            name = xmlTextReaderConstLocalName(r);
+  if (!o->layers) o->layers = ows_layer_list_init();
 
-            if (!strcmp((char *) name, "tinyows"))
-                ows_parse_config_tinyows(o, r);
+  while ((ret = xmlTextReaderRead(r)) == 1) {
+    if (xmlTextReaderNodeType(r) == XML_READER_TYPE_ELEMENT) {
+      name = xmlTextReaderConstLocalName(r);
 
-            if (!strcmp((char *) name, "metadata"))
-                ows_parse_config_metadata(o, r);
+      if (!strcmp((char *) name, "tinyows"))
+        ows_parse_config_tinyows(o, r);
 
-            if (!strcmp((char *) name, "abstract"))
-                ows_parse_config_abstract(o, r);
+      if (!strcmp((char *) name, "metadata"))
+        ows_parse_config_metadata(o, r);
 
-            if (!strcmp((char *) name, "contact"))
-                ows_parse_config_contact(o, r);
+      if (!strcmp((char *) name, "abstract"))
+        ows_parse_config_abstract(o, r);
 
-            if (!strcmp((char *) name, "pg"))
-                ows_parse_config_pg(o, r);
+      if (!strcmp((char *) name, "contact"))
+        ows_parse_config_contact(o, r);
 
-            if (!strcmp((char *) name, "limits"))
-                ows_parse_config_limits(o, r);
+      if (!strcmp((char *) name, "pg"))
+        ows_parse_config_pg(o, r);
 
-            if (!strcmp((char *) name, "layer"))
-                ows_parse_config_layer(o, r);
-        }
-    }
+      if (!strcmp((char *) name, "limits"))
+        ows_parse_config_limits(o, r);
 
-    if (ret != 0) {
-        xmlFreeTextReader(r);
-        ows_error(o, OWS_ERROR_CONFIG_FILE, "Unable to open config file !", "parse_config_file");
-        return;
+      if (!strcmp((char *) name, "layer"))
+        ows_parse_config_layer(o, r);
     }
+  }
 
+  if (ret != 0) {
     xmlFreeTextReader(r);
+    ows_error(o, OWS_ERROR_CONFIG_FILE, "Unable to open config file !", "parse_config_file");
+    return;
+  }
+
+  xmlFreeTextReader(r);
 }
 
 
 
 /*
- * 
+ *
  */
 void ows_parse_config(ows * o, const char *filename)
 {
-    assert(o);
-    assert(filename);
+  assert(o);
+  assert(filename);
 
-    if (o->mapfile) ows_parse_config_mapfile(o, filename);
-    else	    ows_parse_config_xml(o, filename);
-    if (!o->exit) ows_config_check(o);
+  if (o->mapfile) ows_parse_config_mapfile(o, filename);
+  else      ows_parse_config_xml(o, filename);
+  if (!o->exit) ows_config_check(o);
 }
-
-
-/*
- * vim: expandtab sw=4 ts=4
- */
diff --git a/src/ows/ows_error.c b/src/ows/ows_error.c
index c354bf6..f75823b 100644
--- a/src/ows/ows_error.c
+++ b/src/ows/ows_error.c
@@ -32,36 +32,36 @@
  */
 static char *ows_error_code_string(enum ows_error_code code)
 {
-    switch (code) {
-        case OWS_ERROR_OPERATION_NOT_SUPPORTED:
-            return "OperationNotSupported";
-        case OWS_ERROR_MISSING_PARAMETER_VALUE:
-            return "MissingParameterValue";
-        case OWS_ERROR_INVALID_PARAMETER_VALUE:
-            return "InvalidParameterValue";
-        case OWS_ERROR_VERSION_NEGOTIATION_FAILED:
-            return "VersionNegotiationFailed";
-        case OWS_ERROR_INVALID_UPDATE_SEQUENCE:
-            return "InvalidUpdateSequence";
-        case OWS_ERROR_NO_APPLICABLE_CODE:
-            return "NoApplicableCode";
-        case OWS_ERROR_CONNECTION_FAILED:
-            return "ConnectionFailed";
-        case OWS_ERROR_CONFIG_FILE:
-            return "ErrorConfigFile";
-        case OWS_ERROR_REQUEST_SQL_FAILED:
-            return "RequestSqlFailed";
-        case OWS_ERROR_REQUEST_HTTP:
-            return "RequestHTTPNotValid";
-        case OWS_ERROR_FORBIDDEN_CHARACTER:
-            return "ForbiddenCharacter";
-        case OWS_ERROR_MISSING_METADATA:
-            return "MissingMetadata";
-        case OWS_ERROR_NO_SRS_DEFINED:
-            return "NoSrsDefined";
-    }
+  switch (code) {
+    case OWS_ERROR_OPERATION_NOT_SUPPORTED:
+      return "OperationNotSupported";
+    case OWS_ERROR_MISSING_PARAMETER_VALUE:
+      return "MissingParameterValue";
+    case OWS_ERROR_INVALID_PARAMETER_VALUE:
+      return "InvalidParameterValue";
+    case OWS_ERROR_VERSION_NEGOTIATION_FAILED:
+      return "VersionNegotiationFailed";
+    case OWS_ERROR_INVALID_UPDATE_SEQUENCE:
+      return "InvalidUpdateSequence";
+    case OWS_ERROR_NO_APPLICABLE_CODE:
+      return "NoApplicableCode";
+    case OWS_ERROR_CONNECTION_FAILED:
+      return "ConnectionFailed";
+    case OWS_ERROR_CONFIG_FILE:
+      return "ErrorConfigFile";
+    case OWS_ERROR_REQUEST_SQL_FAILED:
+      return "RequestSqlFailed";
+    case OWS_ERROR_REQUEST_HTTP:
+      return "RequestHTTPNotValid";
+    case OWS_ERROR_FORBIDDEN_CHARACTER:
+      return "ForbiddenCharacter";
+    case OWS_ERROR_MISSING_METADATA:
+      return "MissingMetadata";
+    case OWS_ERROR_NO_SRS_DEFINED:
+      return "NoSrsDefined";
+  }
 
-    assert(0); /* Should not happen */
+  assert(0); /* Should not happen */
 }
 
 
@@ -70,17 +70,17 @@ static char *ows_error_code_string(enum ows_error_code code)
  */
 void ows_error(ows * o, enum ows_error_code code, char *message, char *locator)
 {
-    assert(o);
-    assert(message);
-    assert(locator);
+  assert(o);
+  assert(message);
+  assert(locator);
 
-    assert(!o->exit);
-    o->exit = true;
+  assert(!o->exit);
+  o->exit = true;
 
-    ows_log(o, 1, message);
+  ows_log(o, 1, message);
 
 #if TINYOWS_FCGI
-if ((o->init && FCGI_Accept() >= 0) || !o->init) {
+  if ((o->init && FCGI_Accept() >= 0) || !o->init) {
 #endif
     fprintf(o->output, "Content-Type: application/xml\n\n");
     fprintf(o->output, "<?xml version='1.0' encoding='UTF-8'?>\n");
@@ -99,10 +99,6 @@ if ((o->init && FCGI_Accept() >= 0) || !o->init) {
 
 #if TINYOWS_FCGI
     fflush(o->output);
-}
+  }
 #endif
 }
-
-/*
- * vim: expandtab sw=4 ts=4
- */
diff --git a/src/ows/ows_geobbox.c b/src/ows/ows_geobbox.c
index c2a456f..ea3760a 100644
--- a/src/ows/ows_geobbox.c
+++ b/src/ows/ows_geobbox.c
@@ -36,17 +36,17 @@
  */
 ows_geobbox *ows_geobbox_init()
 {
-    ows_geobbox *g;
+  ows_geobbox *g;
 
-    g = malloc(sizeof(ows_geobbox));
-    assert(g != NULL);
+  g = malloc(sizeof(ows_geobbox));
+  assert(g != NULL);
 
-    g->west = DBL_MIN;
-    g->east = DBL_MIN;
-    g->south = DBL_MIN;
-    g->north = DBL_MIN;
+  g->west = DBL_MIN;
+  g->east = DBL_MIN;
+  g->south = DBL_MIN;
+  g->north = DBL_MIN;
 
-    return g;
+  return g;
 }
 
 
@@ -55,11 +55,11 @@ ows_geobbox *ows_geobbox_init()
  */
 ows_geobbox *ows_geobbox_copy(ows_geobbox *g)
 {
-    ows_geobbox *c;
+  ows_geobbox *c;
 
-    assert(g);
-    c = malloc(sizeof(g));
-    return memcpy(c, g, sizeof(g));
+  assert(g);
+  c = malloc(sizeof(g));
+  return memcpy(c, g, sizeof(g));
 }
 
 
@@ -68,9 +68,9 @@ ows_geobbox *ows_geobbox_copy(ows_geobbox *g)
  */
 void ows_geobbox_free(ows_geobbox *g)
 {
-    assert(g);
-    free(g);
-    g = NULL;
+  assert(g);
+  free(g);
+  g = NULL;
 }
 
 
@@ -79,26 +79,26 @@ void ows_geobbox_free(ows_geobbox *g)
  */
 bool ows_geobbox_set(ows * o, ows_geobbox * g, double west, double east, double south, double north)
 {
-    double geom_tolerance = 0.01;
+  double geom_tolerance = 0.01;
 
-    assert(g);
+  assert(g);
 
-    if (south + geom_tolerance < -90.0 || south - geom_tolerance > 90.0 || 
-        north + geom_tolerance < -90.0 || north - geom_tolerance > 90.0 ||
-        east + geom_tolerance < -180.0 || east - geom_tolerance > 180.0 ||
-        west + geom_tolerance < -180.0 || west - geom_tolerance > 180.0)
-        return false;
+  if (south + geom_tolerance < -90.0 || south - geom_tolerance > 90.0 ||
+      north + geom_tolerance < -90.0 || north - geom_tolerance > 90.0 ||
+      east + geom_tolerance < -180.0 || east - geom_tolerance > 180.0 ||
+      west + geom_tolerance < -180.0 || west - geom_tolerance > 180.0)
+    return false;
 
-    if (fabs(south - north) < DBL_EPSILON || fabs(east - west) < DBL_EPSILON)
-        return false;
+  if (fabs(south - north) < DBL_EPSILON || fabs(east - west) < DBL_EPSILON)
+    return false;
 
-    /* FIXME add a test to see if north is northern than south and so forth... */
-    g->west = west;
-    g->east = east;
-    g->south = south;
-    g->north = north;
+  /* TODO add a test to see if north is northern than south and so forth... */
+  g->west = west;
+  g->east = east;
+  g->south = south;
+  g->north = north;
 
-    return true;
+  return true;
 }
 
 
@@ -107,24 +107,24 @@ bool ows_geobbox_set(ows * o, ows_geobbox * g, double west, double east, double
  */
 bool ows_geobbox_set_from_bbox(ows * o, ows_geobbox * g, ows_bbox * bb)
 {
-    double west, east, south, north;
-
-    assert(g);
-    assert(bb);
-
-    if (bb->ymin < 0.0 && bb->ymax < 0.0) {
-        south = bb->ymax;
-        north = bb->ymin;
-        west = bb->xmax;
-        east = bb->xmin;
-    } else {
-        south = bb->ymin;
-        north = bb->ymax;
-        west = bb->xmin;
-        east = bb->xmax;
-    }
-
-    return ows_geobbox_set(o, g, west, east, south, north);
+  double west, east, south, north;
+
+  assert(g);
+  assert(bb);
+
+  if (bb->ymin < 0.0 && bb->ymax < 0.0) {
+    south = bb->ymax;
+    north = bb->ymin;
+    west = bb->xmax;
+    east = bb->xmin;
+  } else {
+    south = bb->ymin;
+    north = bb->ymax;
+    west = bb->xmin;
+    east = bb->xmax;
+  }
+
+  return ows_geobbox_set(o, g, west, east, south, north);
 }
 
 
@@ -133,17 +133,17 @@ bool ows_geobbox_set_from_bbox(ows * o, ows_geobbox * g, ows_bbox * bb)
  */
 ows_geobbox *ows_geobbox_set_from_str(ows * o, ows_geobbox * g, char *str)
 {
-    ows_bbox *bb;
+  ows_bbox *bb;
 
-    assert(g);
-    assert(str);
+  assert(g);
+  assert(str);
 
-    bb = ows_bbox_init();
-    ows_bbox_set_from_str(o, bb, str, 4326);
-    ows_geobbox_set_from_bbox(o, g, bb);
-    ows_bbox_free(bb);
+  bb = ows_bbox_init();
+  ows_bbox_set_from_str(o, bb, str, 4326);
+  ows_geobbox_set_from_bbox(o, g, bb);
+  ows_bbox_free(bb);
 
-    return g;
+  return g;
 }
 
 
@@ -152,86 +152,84 @@ ows_geobbox *ows_geobbox_set_from_str(ows * o, ows_geobbox * g, char *str)
  */
 ows_geobbox *ows_geobbox_compute(ows * o, buffer * layer_name)
 {
-    double xmin, ymin, xmax, ymax;
-    buffer *sql;
-    PGresult *res;
-    ows_geobbox *g;
-    ows_bbox *bb;
-    list *geom;
-    list_node *ln;
-    bool first = true;
-
-    assert(o);
-    assert(layer_name);
-
-    sql = buffer_init();
-
-    geom = ows_psql_geometry_column(o, layer_name);
-    assert(geom);
-
-    g = ows_geobbox_init();
-    xmin = ymin = xmax = ymax = 0.0;
-
-    for (ln = geom->first; ln ; ln = ln->next)
-    {
-    	buffer_add_str(sql, "SELECT ST_xmin(g), ST_ymin(g), ST_xmax(g), ST_ymax(g) FROM ");
-	if (o->estimated_extent) 
-	{
-		buffer_add_str(sql, "(SELECT ST_Transform(ST_SetSRID(ST_Estimated_Extent('");
-    		buffer_copy(sql, ows_psql_schema_name(o, layer_name));
- 	   	buffer_add_str(sql, "','");
-    		buffer_copy(sql, layer_name);
-	    	buffer_add_str(sql, "','");
-	    	buffer_copy(sql, ln->value);
-   	 	buffer_add_str(sql, "'), (SELECT ST_SRID(\"");
-    		buffer_copy(sql, ln->value);
-    		buffer_add_str(sql, "\") FROM ");
-    		buffer_copy(sql, ows_psql_schema_name(o, layer_name));
-    		buffer_add_str(sql, ".\"");
-    		buffer_copy(sql, layer_name);
-    		buffer_add_str(sql, "\" LIMIT 1)) ,4326) AS g) AS foo");
-	} else {
-		buffer_add_str(sql, "(SELECT ST_Transform(ST_SetSRID(ST_Extent(\"");
-	    	buffer_copy(sql, ln->value);
-   	 	buffer_add_str(sql, "\"), (SELECT ST_SRID(\"");
-    		buffer_copy(sql, ln->value);
-    		buffer_add_str(sql, "\") FROM ");
-    		buffer_copy(sql, ows_psql_schema_name(o, layer_name));
-    		buffer_add_str(sql, ".\"");
-    		buffer_copy(sql, layer_name);
-    		buffer_add_str(sql, "\" LIMIT 1)), 4326) AS g ");
-    		buffer_add_str(sql, " FROM ");
-    		buffer_copy(sql, ows_psql_schema_name(o, layer_name));
-    		buffer_add_str(sql, ".\"");
-    		buffer_copy(sql, layer_name);
-    		buffer_add_str(sql, "\" ) AS foo");
-	}
-
-        res = ows_psql_exec(o, sql->buf);
-    	buffer_empty(sql);
-    	if (PQresultStatus(res) != PGRES_TUPLES_OK) {
-        	PQclear(res);
-    		buffer_free(sql);
-        	return g;
-    	}
-
-	if (first || atof(PQgetvalue(res, 0, 0)) < xmin) xmin = atof(PQgetvalue(res, 0, 0));
-	if (first || atof(PQgetvalue(res, 0, 1)) < ymin) ymin = atof(PQgetvalue(res, 0, 1));
-	if (first || atof(PQgetvalue(res, 0, 2)) > xmax) xmax = atof(PQgetvalue(res, 0, 2));
-	if (first || atof(PQgetvalue(res, 0, 3)) > ymax) ymax = atof(PQgetvalue(res, 0, 3));
-
-	first = false;
-	PQclear(res);
+  double xmin, ymin, xmax, ymax;
+  buffer *sql;
+  PGresult *res;
+  ows_geobbox *g;
+  ows_bbox *bb;
+  list *geom;
+  list_node *ln;
+  bool first = true;
+
+  assert(o);
+  assert(layer_name);
+
+  sql = buffer_init();
+
+  geom = ows_psql_geometry_column(o, layer_name);
+  assert(geom);
+
+  g = ows_geobbox_init();
+  xmin = ymin = xmax = ymax = 0.0;
+
+  for (ln = geom->first; ln ; ln = ln->next) {
+    buffer_add_str(sql, "SELECT ST_xmin(g), ST_ymin(g), ST_xmax(g), ST_ymax(g) FROM ");
+    if (o->estimated_extent) {
+      buffer_add_str(sql, "(SELECT ST_Transform(ST_SetSRID(ST_Estimated_Extent('");
+      buffer_copy(sql, ows_psql_schema_name(o, layer_name));
+      buffer_add_str(sql, "','");
+      buffer_copy(sql, ows_psql_table_name(o, layer_name));
+      buffer_add_str(sql, "','");
+      buffer_copy(sql, ln->value);
+      buffer_add_str(sql, "'), (SELECT ST_SRID(\"");
+      buffer_copy(sql, ln->value);
+      buffer_add_str(sql, "\") FROM \"");
+      buffer_copy(sql, ows_psql_schema_name(o, layer_name));
+      buffer_add_str(sql, "\".\"");
+      buffer_copy(sql, ows_psql_table_name(o, layer_name));
+      buffer_add_str(sql, "\" LIMIT 1)) ,4326) AS g) AS foo");
+    } else {
+      buffer_add_str(sql, "(SELECT ST_Transform(ST_SetSRID(ST_Extent(\"");
+      buffer_copy(sql, ln->value);
+      buffer_add_str(sql, "\"), (SELECT ST_SRID(\"");
+      buffer_copy(sql, ln->value);
+      buffer_add_str(sql, "\") FROM \"");
+      buffer_copy(sql, ows_psql_schema_name(o, layer_name));
+      buffer_add_str(sql, "\".\"");
+      buffer_copy(sql, ows_psql_table_name(o, layer_name));
+      buffer_add_str(sql, "\" LIMIT 1)), 4326) AS g ");
+      buffer_add_str(sql, " FROM \"");
+      buffer_copy(sql, ows_psql_schema_name(o, layer_name));
+      buffer_add_str(sql, "\".\"");
+      buffer_copy(sql, ows_psql_table_name(o, layer_name));
+      buffer_add_str(sql, "\" ) AS foo");
+    }
+
+    res = ows_psql_exec(o, sql->buf);
+    buffer_empty(sql);
+    if (PQresultStatus(res) != PGRES_TUPLES_OK) {
+      PQclear(res);
+      buffer_free(sql);
+      return g;
     }
 
-    buffer_free(sql);
+    if (first || atof(PQgetvalue(res, 0, 0)) < xmin) xmin = atof(PQgetvalue(res, 0, 0));
+    if (first || atof(PQgetvalue(res, 0, 1)) < ymin) ymin = atof(PQgetvalue(res, 0, 1));
+    if (first || atof(PQgetvalue(res, 0, 2)) > xmax) xmax = atof(PQgetvalue(res, 0, 2));
+    if (first || atof(PQgetvalue(res, 0, 3)) > ymax) ymax = atof(PQgetvalue(res, 0, 3));
+
+    first = false;
+    PQclear(res);
+  }
+
+  buffer_free(sql);
 
-    bb = ows_bbox_init();
-    ows_bbox_set(o, bb, xmin, ymin, xmax, ymax, 4326);
-    ows_geobbox_set_from_bbox(o, g, bb);
-    ows_bbox_free(bb);
+  bb = ows_bbox_init();
+  ows_bbox_set(o, bb, xmin, ymin, xmax, ymax, 4326);
+  ows_geobbox_set_from_bbox(o, g, bb);
+  ows_bbox_free(bb);
 
-    return g;
+  return g;
 }
 
 
@@ -241,10 +239,10 @@ ows_geobbox *ows_geobbox_compute(ows * o, buffer * layer_name)
  */
 void ows_geobbox_flush(const ows_geobbox * g, FILE * output)
 {
-    assert(g);
-    assert(output);
+  assert(g);
+  assert(output);
 
-    fprintf(output, "[W:%f,E:%f,S:%f,N:%f]\n", g->west, g->east, g->south, g->north);
+  fprintf(output, "[W:%f,E:%f,S:%f,N:%f]\n", g->west, g->east, g->south, g->north);
 }
 #endif
 
diff --git a/src/ows/ows_get_capabilities.c b/src/ows/ows_get_capabilities.c
index a0efcc8..c3802bc 100644
--- a/src/ows/ows_get_capabilities.c
+++ b/src/ows/ows_get_capabilities.c
@@ -36,21 +36,21 @@
  */
 void ows_get_capabilities_dcpt(const ows * o, const char * req)
 {
-    assert(o);
-    assert(o->online_resource);
-
-    fprintf(o->output, "    <ows:DCP>\n");
-    fprintf(o->output, "     <ows:HTTP>\n");
-    fprintf(o->output, "      <ows:Get xlink:href=\"");
-    fprintf(o->output, "%s?%s\"/>\n", o->online_resource->buf, req);
-    fprintf(o->output, "     </ows:HTTP>\n");
-    fprintf(o->output, "    </ows:DCP>\n");
-    fprintf(o->output, "    <ows:DCP>\n");
-    fprintf(o->output, "     <ows:HTTP>\n");
-    fprintf(o->output, "      <ows:Post xlink:href=\"");
-    fprintf(o->output, "%s\"/>\n", o->online_resource->buf);
-    fprintf(o->output, "     </ows:HTTP>\n");
-    fprintf(o->output, "    </ows:DCP>\n");
+  assert(o);
+  assert(o->online_resource);
+
+  fprintf(o->output, "    <ows:DCP>\n");
+  fprintf(o->output, "     <ows:HTTP>\n");
+  fprintf(o->output, "      <ows:Get xlink:href=\"");
+  fprintf(o->output, "%s?%s\"/>\n", o->online_resource->buf, req);
+  fprintf(o->output, "     </ows:HTTP>\n");
+  fprintf(o->output, "    </ows:DCP>\n");
+  fprintf(o->output, "    <ows:DCP>\n");
+  fprintf(o->output, "     <ows:HTTP>\n");
+  fprintf(o->output, "      <ows:Post xlink:href=\"");
+  fprintf(o->output, "%s\"/>\n", o->online_resource->buf);
+  fprintf(o->output, "     </ows:HTTP>\n");
+  fprintf(o->output, "    </ows:DCP>\n");
 }
 
 
@@ -61,42 +61,42 @@ void ows_get_capabilities_dcpt(const ows * o, const char * req)
  */
 void ows_service_metadata(const ows * o)
 {
-    list_node *ln;
+  list_node *ln;
 
-    assert(o);
-    assert(o->online_resource);
-    assert(o->metadata->name);
-    assert(o->metadata->title);
+  assert(o);
+  assert(o->online_resource);
+  assert(o->metadata->name);
+  assert(o->metadata->title);
 
-    ln = NULL;
+  ln = NULL;
 
-    fprintf(o->output, " <Service>\n");
-    fprintf(o->output, "  <Name>%s</Name>\n", o->metadata->name->buf);
-    fprintf(o->output, "  <Title>%s</Title>\n", o->metadata->title->buf);
+  fprintf(o->output, " <Service>\n");
+  fprintf(o->output, "  <Name>%s</Name>\n", o->metadata->name->buf);
+  fprintf(o->output, "  <Title>%s</Title>\n", o->metadata->title->buf);
 
-    if (o->metadata->abstract)
-        fprintf(o->output, "  <Abstract>%s</Abstract>\n", o->metadata->abstract->buf);
+  if (o->metadata->abstract)
+    fprintf(o->output, "  <Abstract>%s</Abstract>\n", o->metadata->abstract->buf);
 
-    if (o->metadata->keywords) {
-        fprintf(o->output, "  <Keywords>");
+  if (o->metadata->keywords) {
+    fprintf(o->output, "  <Keywords>");
 
-        for (ln = o->metadata->keywords->first ; ln->next; ln = ln->next)
-            fprintf(o->output, "%s,", ln->value->buf);
+    for (ln = o->metadata->keywords->first ; ln->next; ln = ln->next)
+      fprintf(o->output, "%s,", ln->value->buf);
 
-        fprintf(o->output, "%s</Keywords>\n", ln->value->buf);
-    }
+    fprintf(o->output, "%s</Keywords>\n", ln->value->buf);
+  }
 
-    fprintf(o->output, "  <OnlineResource>%s</OnlineResource>\n", o->online_resource->buf);
+  fprintf(o->output, "  <OnlineResource>%s</OnlineResource>\n", o->online_resource->buf);
 
-    if (o->metadata->fees)
-        fprintf(o->output, "  <Fees>%s</Fees>\n", o->metadata->fees->buf);
+  if (o->metadata->fees)
+    fprintf(o->output, "  <Fees>%s</Fees>\n", o->metadata->fees->buf);
 
-    if (o->metadata->access_constraints)
-        fprintf(o->output,
-                "  <AccessConstraints>%s</AccessConstraints>\n",
-                o->metadata->access_constraints->buf);
+  if (o->metadata->access_constraints)
+    fprintf(o->output,
+            "  <AccessConstraints>%s</AccessConstraints>\n",
+            o->metadata->access_constraints->buf);
 
-    fprintf(o->output, " </Service>\n");
+  fprintf(o->output, " </Service>\n");
 }
 
 
@@ -107,48 +107,48 @@ void ows_service_metadata(const ows * o)
  */
 void ows_service_identification(const ows * o)
 {
-    list_node *ln;
+  list_node *ln;
 
-    assert(o);
-    assert(o->metadata->type);
-    assert(o->metadata->versions);
+  assert(o);
+  assert(o->metadata->type);
+  assert(o->metadata->versions);
 
-    ln = NULL;
+  ln = NULL;
 
-    fprintf(o->output, " <ows:ServiceIdentification>\n");
+  fprintf(o->output, " <ows:ServiceIdentification>\n");
 
-    if (o->metadata->title)
-        fprintf(o->output, "  <ows:Title>%s</ows:Title>\n", o->metadata->title->buf);
+  if (o->metadata->title)
+    fprintf(o->output, "  <ows:Title>%s</ows:Title>\n", o->metadata->title->buf);
 
-    if (o->metadata->abstract)
-        fprintf(o->output, "  <ows:Abstract>%s</ows:Abstract>\n", o->metadata->abstract->buf);
+  if (o->metadata->abstract)
+    fprintf(o->output, "  <ows:Abstract>%s</ows:Abstract>\n", o->metadata->abstract->buf);
 
-    if (o->metadata->keywords) {
-        fprintf(o->output, "  <ows:Keywords>\n");
-        for (ln = o->metadata->keywords->first ; ln ; ln = ln->next)
-            fprintf(o->output, "   <ows:Keyword>%s</ows:Keyword>\n", ln->value->buf);
-        fprintf(o->output, "  </ows:Keywords>\n");
-    }
+  if (o->metadata->keywords) {
+    fprintf(o->output, "  <ows:Keywords>\n");
+    for (ln = o->metadata->keywords->first ; ln ; ln = ln->next)
+      fprintf(o->output, "   <ows:Keyword>%s</ows:Keyword>\n", ln->value->buf);
+    fprintf(o->output, "  </ows:Keywords>\n");
+  }
 
-    fprintf(o->output, "  <ows:ServiceType>%s</ows:ServiceType>\n", o->metadata->type->buf);
-    fprintf(o->output, "  <ows:ServiceTypeVersion>");
+  fprintf(o->output, "  <ows:ServiceType>%s</ows:ServiceType>\n", o->metadata->type->buf);
+  fprintf(o->output, "  <ows:ServiceTypeVersion>");
 
-    for (ln = o->metadata->versions->first ; ln ; ln = ln->next) {
-        fprintf(o->output, "%s", ln->value->buf);
-        if (ln->next) fprintf(o->output, ",");
-    }
+  for (ln = o->metadata->versions->first ; ln ; ln = ln->next) {
+    fprintf(o->output, "%s", ln->value->buf);
+    if (ln->next) fprintf(o->output, ",");
+  }
 
-    fprintf(o->output, "</ows:ServiceTypeVersion>\n");
+  fprintf(o->output, "</ows:ServiceTypeVersion>\n");
 
-    if (o->metadata->fees)
-        fprintf(o->output, "  <ows:Fees>%s</ows:Fees>\n", o->metadata->fees->buf);
+  if (o->metadata->fees)
+    fprintf(o->output, "  <ows:Fees>%s</ows:Fees>\n", o->metadata->fees->buf);
 
-    if (o->metadata->access_constraints)
-        fprintf(o->output,
-                "  <ows:AccessConstraints>%s</ows:AccessConstraints>\n",
-                o->metadata->access_constraints->buf);
+  if (o->metadata->access_constraints)
+    fprintf(o->output,
+            "  <ows:AccessConstraints>%s</ows:AccessConstraints>\n",
+            o->metadata->access_constraints->buf);
 
-    fprintf(o->output, " </ows:ServiceIdentification>\n");
+  fprintf(o->output, " </ows:ServiceIdentification>\n");
 }
 
 
@@ -159,105 +159,105 @@ void ows_service_identification(const ows * o)
  */
 void ows_service_provider(const ows * o)
 {
-    assert(o);
+  assert(o);
 
-    if (!o->contact) return;
+  if (!o->contact) return;
 
-    fprintf(o->output, " <ows:ServiceProvider>\n");
+  fprintf(o->output, " <ows:ServiceProvider>\n");
 
-    if (o->contact->name)
-	fprintf(o->output, "  <ows:ProviderName>%s</ows:ProviderName>\n", o->contact->name->buf);
-    if (o->contact->site)
-	fprintf(o->output, "  <ows:ProviderSite xlink:href=\"%s\" />\n", o->contact->site->buf);
+  if (o->contact->name)
+    fprintf(o->output, "  <ows:ProviderName>%s</ows:ProviderName>\n", o->contact->name->buf);
+  if (o->contact->site)
+    fprintf(o->output, "  <ows:ProviderSite xlink:href=\"%s\" />\n", o->contact->site->buf);
 
-    fprintf(o->output, "  <ows:ServiceContact>\n");
+  fprintf(o->output, "  <ows:ServiceContact>\n");
 
-    if (o->contact->indiv_name)
-        fprintf(o->output, "   <ows:IndividualName>%s</ows:IndividualName>\n",
-                o->contact->indiv_name->buf);
+  if (o->contact->indiv_name)
+    fprintf(o->output, "   <ows:IndividualName>%s</ows:IndividualName>\n",
+            o->contact->indiv_name->buf);
 
-    if (o->contact->position)
-        fprintf(o->output, "   <ows:PositionName>%s</ows:PositionName>\n",
-                o->contact->position->buf);
+  if (o->contact->position)
+    fprintf(o->output, "   <ows:PositionName>%s</ows:PositionName>\n",
+            o->contact->position->buf);
 
-    if (       o->contact->phone
-            || o->contact->fax
-            || o->contact->address
-            || o->contact->postcode
-            || o->contact->city
-            || o->contact->state
-            || o->contact->country
-            || o->contact->email
-            || o->contact->online_resource
-            || o->contact->hours
-            || o->contact->instructions) {
-        fprintf(o->output, "   <ows:ContactInfo>\n");
+  if (       o->contact->phone
+             || o->contact->fax
+             || o->contact->address
+             || o->contact->postcode
+             || o->contact->city
+             || o->contact->state
+             || o->contact->country
+             || o->contact->email
+             || o->contact->online_resource
+             || o->contact->hours
+             || o->contact->instructions) {
+    fprintf(o->output, "   <ows:ContactInfo>\n");
 
-        if (o->contact->phone || o->contact->fax) {
-            fprintf(o->output, "    <ows:Phone>\n");
+    if (o->contact->phone || o->contact->fax) {
+      fprintf(o->output, "    <ows:Phone>\n");
 
-            if (o->contact->phone)
-                fprintf(o->output, "     <ows:Voice>%s</ows:Voice>\n", o->contact->phone->buf);
+      if (o->contact->phone)
+        fprintf(o->output, "     <ows:Voice>%s</ows:Voice>\n", o->contact->phone->buf);
 
-            if (o->contact->fax)
-                fprintf(o->output, "     <ows:Facsimile>%s</ows:Facsimile>\n",
-                        o->contact->fax->buf);
+      if (o->contact->fax)
+        fprintf(o->output, "     <ows:Facsimile>%s</ows:Facsimile>\n",
+                o->contact->fax->buf);
 
-            fprintf(o->output, "    </ows:Phone>\n");
-        }
+      fprintf(o->output, "    </ows:Phone>\n");
+    }
 
-        if (       o->contact->address
-                || o->contact->postcode
-                || o->contact->city
-                || o->contact->state
-                || o->contact->country
-		|| o->contact->email) {
-            fprintf(o->output, "    <ows:Address>\n");
+    if (       o->contact->address
+               || o->contact->postcode
+               || o->contact->city
+               || o->contact->state
+               || o->contact->country
+               || o->contact->email) {
+      fprintf(o->output, "    <ows:Address>\n");
 
-            if (o->contact->address)
-                fprintf(o->output, "     <ows:DeliveryPoint>%s</ows:DeliveryPoint>\n",
-                        o->contact->address->buf);
+      if (o->contact->address)
+        fprintf(o->output, "     <ows:DeliveryPoint>%s</ows:DeliveryPoint>\n",
+                o->contact->address->buf);
 
-            if (o->contact->city)
-                fprintf(o->output, "     <ows:City>%s</ows:City>\n", o->contact->city->buf);
+      if (o->contact->city)
+        fprintf(o->output, "     <ows:City>%s</ows:City>\n", o->contact->city->buf);
 
-            if (o->contact->state)
-                fprintf(o->output, "     <ows:AdministrativeArea>%s</ows:AdministrativeArea>\n",
-                        o->contact->state->buf);
+      if (o->contact->state)
+        fprintf(o->output, "     <ows:AdministrativeArea>%s</ows:AdministrativeArea>\n",
+                o->contact->state->buf);
 
-            if (o->contact->postcode)
-                fprintf(o->output, "     <ows:PostalCode>%s</ows:PostalCode>\n",
-                        o->contact->postcode->buf);
+      if (o->contact->postcode)
+        fprintf(o->output, "     <ows:PostalCode>%s</ows:PostalCode>\n",
+                o->contact->postcode->buf);
 
-            if (o->contact->country)
-                fprintf(o->output, "     <ows:Country>%s</ows:Country>\n",
-                        o->contact->country->buf);
+      if (o->contact->country)
+        fprintf(o->output, "     <ows:Country>%s</ows:Country>\n",
+                o->contact->country->buf);
 
-            if (o->contact->email)
-                fprintf(o->output,
-                        "    <ows:ElectronicMailAddress>%s</ows:ElectronicMailAddress>\n",
-                        o->contact->email->buf);
+      if (o->contact->email)
+        fprintf(o->output,
+                "    <ows:ElectronicMailAddress>%s</ows:ElectronicMailAddress>\n",
+                o->contact->email->buf);
 
-            fprintf(o->output, "    </ows:Address>\n");
-        }
+      fprintf(o->output, "    </ows:Address>\n");
+    }
 
-        if (o->contact->online_resource)
-            fprintf(o->output, "    <ows:OnlineResource xlink:href=\"%s\" />\n",
-                    o->contact->online_resource->buf);
+    if (o->contact->online_resource)
+      fprintf(o->output, "    <ows:OnlineResource xlink:href=\"%s\" />\n",
+              o->contact->online_resource->buf);
 
-        if (o->contact->hours)
-            fprintf(o->output, "    <ows:HoursOfService>%s</ows:HoursOfService>\n",
-                    o->contact->hours->buf);
+    if (o->contact->hours)
+      fprintf(o->output, "    <ows:HoursOfService>%s</ows:HoursOfService>\n",
+              o->contact->hours->buf);
 
-        if (o->contact->instructions)
-            fprintf(o->output, "    <ows:ContactInstructions>%s</ows:ContactInstructions>\n",
-                    o->contact->instructions->buf);
+    if (o->contact->instructions)
+      fprintf(o->output, "    <ows:ContactInstructions>%s</ows:ContactInstructions>\n",
+              o->contact->instructions->buf);
 
-        fprintf(o->output, "   </ows:ContactInfo>\n");
-    }
+    fprintf(o->output, "   </ows:ContactInfo>\n");
+  }
 
-    fprintf(o->output, "  </ows:ServiceContact>\n");
-    fprintf(o->output, " </ows:ServiceProvider>\n");
+  fprintf(o->output, "  </ows:ServiceContact>\n");
+  fprintf(o->output, " </ows:ServiceProvider>\n");
 }
 
 
diff --git a/src/ows/ows_layer.c b/src/ows/ows_layer.c
index 7c995e1..caa4fcb 100644
--- a/src/ows/ows_layer.c
+++ b/src/ows/ows_layer.c
@@ -31,18 +31,18 @@
 
 
 /*
- * Initialize an aws layer structure
+ * Initialize an ows layer structure
  */
 ows_layer_list *ows_layer_list_init()
 {
-    ows_layer_list *ll;
+  ows_layer_list *ll;
 
-    ll = malloc(sizeof(ows_layer_list));
-    assert(ll);
+  ll = malloc(sizeof(ows_layer_list));
+  assert(ll);
 
-    ll->first = NULL;
-    ll->last = NULL;
-    return ll;
+  ll->first = NULL;
+  ll->last = NULL;
+  return ll;
 }
 
 
@@ -51,12 +51,12 @@ ows_layer_list *ows_layer_list_init()
  */
 void ows_layer_list_free(ows_layer_list * ll)
 {
-    assert(ll);
+  assert(ll);
 
-    while (ll->first) ows_layer_node_free(ll, ll->first);
-    ll->last = NULL;
-    free(ll);
-    ll = NULL;
+  while (ll->first) ows_layer_node_free(ll, ll->first);
+  ll->last = NULL;
+  free(ll);
+  ll = NULL;
 }
 
 
@@ -65,16 +65,16 @@ void ows_layer_list_free(ows_layer_list * ll)
  */
 ows_layer * ows_layer_get(const ows_layer_list * ll, const buffer * name)
 {
-    ows_layer_node *ln;
+  ows_layer_node *ln;
 
-    assert(ll);
-    assert(name);
+  assert(ll);
+  assert(name);
 
-    for (ln = ll->first; ln ; ln = ln->next)
-        if (ln->layer->name && !strcmp(ln->layer->name->buf, name->buf))
-            return ln->layer;
+  for (ln = ll->first; ln ; ln = ln->next)
+    if (ln->layer->name && !strcmp(ln->layer->name->buf, name->buf))
+      return ln->layer;
 
-    return (ows_layer *) NULL;
+  return (ows_layer *) NULL;
 }
 
 
@@ -83,18 +83,18 @@ ows_layer * ows_layer_get(const ows_layer_list * ll, const buffer * name)
  */
 bool ows_layer_match_table(const ows * o, const buffer * name)
 {
-    ows_layer_node *ln;
+  ows_layer_node *ln;
 
-    assert(o);
-    assert(name);
+  assert(o);
+  assert(name);
 
-    for (ln = o->layers->first; ln ; ln = ln->next)
-        if (ln->layer->name && !strcmp(ln->layer->name->buf, name->buf)) {
-	    if (ln->layer->storage) return true;
-            else return false;
-	}
+  for (ln = o->layers->first; ln ; ln = ln->next)
+    if (ln->layer->name && !strcmp(ln->layer->name->buf, name->buf)) {
+      if (ln->layer->storage) return true;
+      else return false;
+    }
 
-    return false;
+  return false;
 }
 
 
@@ -104,18 +104,18 @@ bool ows_layer_match_table(const ows * o, const buffer * name)
  */
 list * ows_layer_list_having_storage(const ows_layer_list * ll)
 {
-    ows_layer_node *ln;
-    list *l;
+  ows_layer_node *ln;
+  list *l;
 
-    assert(ll);
+  assert(ll);
 
-    l = list_init();
+  l = list_init();
 
-    for (ln = ll->first; ln ; ln = ln->next)
-        if (ln->layer->storage)
-            list_add_by_copy(l, ln->layer->name);
+  for (ln = ll->first; ln ; ln = ln->next)
+    if (ln->layer->storage)
+      list_add_by_copy(l, ln->layer->name);
 
-    return l;
+  return l;
 }
 
 
@@ -124,14 +124,14 @@ list * ows_layer_list_having_storage(const ows_layer_list * ll)
  */
 bool ows_layer_list_retrievable(const ows_layer_list * ll)
 {
-    ows_layer_node *ln;
+  ows_layer_node *ln;
 
-    assert(ll);
+  assert(ll);
 
-    for (ln = ll->first; ln ; ln = ln->next)
-        if (!ln->layer->retrievable) return false;
+  for (ln = ll->first; ln ; ln = ln->next)
+    if (!ln->layer->retrievable) return false;
 
-    return true;
+  return true;
 }
 
 
@@ -140,16 +140,16 @@ bool ows_layer_list_retrievable(const ows_layer_list * ll)
  */
 bool ows_layer_retrievable(const ows_layer_list * ll, const buffer * name)
 {
-    ows_layer_node *ln;
+  ows_layer_node *ln;
 
-    assert(ll);
-    assert(name);
+  assert(ll);
+  assert(name);
 
-    for (ln = ll->first; ln ; ln = ln->next)
-        if (ln->layer->name && !strcmp(ln->layer->name->buf, name->buf))
-            return ln->layer->retrievable;
+  for (ln = ll->first; ln ; ln = ln->next)
+    if (ln->layer->name && !strcmp(ln->layer->name->buf, name->buf))
+      return ln->layer->retrievable;
 
-    return false;
+  return false;
 }
 
 
@@ -158,14 +158,14 @@ bool ows_layer_retrievable(const ows_layer_list * ll, const buffer * name)
  */
 bool ows_layer_list_writable(const ows_layer_list * ll)
 {
-    ows_layer_node *ln;
+  ows_layer_node *ln;
 
-    assert(ll);
+  assert(ll);
 
-    for (ln = ll->first; ln ; ln = ln->next)
-        if (!ln->layer->writable) return false;
+  for (ln = ll->first; ln ; ln = ln->next)
+    if (!ln->layer->writable) return false;
 
-    return true;
+  return true;
 }
 
 
@@ -174,16 +174,16 @@ bool ows_layer_list_writable(const ows_layer_list * ll)
  */
 bool ows_layer_writable(const ows_layer_list * ll, const buffer * name)
 {
-    ows_layer_node *ln;
+  ows_layer_node *ln;
 
-    assert(ll);
-    assert(name);
+  assert(ll);
+  assert(name);
 
-    for (ln = ll->first; ln ; ln = ln->next)
-        if (ln->layer->name && !strcmp(ln->layer->name->buf, name->buf))
-            return ln->layer->writable;
+  for (ln = ll->first; ln ; ln = ln->next)
+    if (ln->layer->name && !strcmp(ln->layer->name->buf, name->buf))
+      return ln->layer->writable;
 
-    return false;
+  return false;
 }
 
 
@@ -192,16 +192,16 @@ bool ows_layer_writable(const ows_layer_list * ll, const buffer * name)
  */
 bool ows_layer_in_list(const ows_layer_list * ll, buffer * name)
 {
-    ows_layer_node *ln;
+  ows_layer_node *ln;
 
-    assert(ll);
-    assert(name);
+  assert(ll);
+  assert(name);
 
-    for (ln = ll->first; ln ; ln = ln->next)
-        if (ln->layer->name && !strcmp(ln->layer->name->buf, name->buf))
-            return true;
+  for (ln = ll->first; ln ; ln = ln->next)
+    if (ln->layer->name && !strcmp(ln->layer->name->buf, name->buf))
+      return true;
 
-    return false;
+  return false;
 }
 
 
@@ -210,15 +210,15 @@ bool ows_layer_in_list(const ows_layer_list * ll, buffer * name)
  */
 bool ows_layer_list_in_list(const ows_layer_list * ll, const list * l)
 {
-    list_node *ln;
+  list_node *ln;
 
-    assert(ll);
-    assert(l);
+  assert(ll);
+  assert(l);
 
-    for (ln = l->first; ln ; ln = ln->next)
-        if (!ows_layer_in_list(ll, ln->value)) return false;
+  for (ln = l->first; ln ; ln = ln->next)
+    if (!ows_layer_in_list(ll, ln->value)) return false;
 
-    return true;
+  return true;
 }
 
 
@@ -227,112 +227,210 @@ bool ows_layer_list_in_list(const ows_layer_list * ll, const list * l)
  */
 array *ows_layer_list_namespaces(ows_layer_list * ll)
 {
-    buffer *ns_prefix, *ns_uri;
-    ows_layer_node *ln;
-    array *namespaces = array_init();
-
-    assert(ll);
-
-    for (ln = ll->first; ln ; ln = ln->next) {
-        if (    ln->layer->ns_prefix && ln->layer->ns_prefix->use 
-             && !array_is_key(namespaces, ln->layer->ns_prefix->buf)) {
-
-            ns_prefix = buffer_init();
-            ns_uri = buffer_init();
-            buffer_copy(ns_prefix, ln->layer->ns_prefix);
-            buffer_copy(ns_uri, ln->layer->ns_uri);
-            array_add(namespaces, ns_prefix, ns_uri);
-        }
+  buffer *ns_prefix, *ns_uri;
+  ows_layer_node *ln;
+  array *namespaces = array_init();
+
+  assert(ll);
+
+  for (ln = ll->first; ln ; ln = ln->next) {
+    if (    ln->layer->ns_prefix && ln->layer->ns_prefix->use
+            && !array_is_key(namespaces, ln->layer->ns_prefix->buf)) {
+
+      ns_prefix = buffer_init();
+      ns_uri = buffer_init();
+      buffer_copy(ns_prefix, ln->layer->ns_prefix);
+      buffer_copy(ns_uri, ln->layer->ns_uri);
+      array_add(namespaces, ns_prefix, ns_uri);
     }
+  }
 
-    return namespaces;
+  return namespaces;
 }
 
 
 /*
  * Return a list of layer names grouped by prefix
  */
-list *ows_layer_list_by_ns_prefix(ows_layer_list * ll, list * layer_name, buffer * ns_prefix)
+list *ows_layer_list_by_ns_prefix(ows_layer_list * ll, list * layer_name_prefix, buffer * ns_prefix)
 {
-    list *typ;
-    list_node *ln;
-    buffer *layer_ns_prefix;
+  list *typ;
+  list_node *ln;
+  buffer *layer_ns_prefix;
 
-    assert(ll);
-    assert(layer_name);
-    assert(ns_prefix);
+  assert(ll);
+  assert(layer_name_prefix);
+  assert(ns_prefix);
 
-    typ = list_init();
+  typ = list_init();
 
-    for (ln = layer_name->first; ln ; ln = ln->next) {
-        layer_ns_prefix = ows_layer_ns_prefix(ll, ln->value);
+  for (ln = layer_name_prefix->first; ln ; ln = ln->next) {
+    layer_ns_prefix = ows_layer_ns_prefix(ll, ln->value);
 
-        if (buffer_cmp(layer_ns_prefix, ns_prefix->buf))
-            list_add_by_copy(typ, ln->value);
-    }
+    if (buffer_cmp(layer_ns_prefix, ns_prefix->buf))
+      list_add_by_copy(typ, ln->value);
+  }
 
-    return typ;
+  return typ;
 }
 
 
 /*
  * Retrieve a list of prefix used for a specified list of layers
  */
-list *ows_layer_list_ns_prefix(ows_layer_list * ll, list * layer_name)
+list *ows_layer_list_ns_prefix(ows_layer_list * ll, list * layer_name_uri)
 {
-    list_node *ln;
-    list *ml_ns_prefix;
-    buffer *ns_prefix;
+  list_node *ln;
+  list *ml_ns_prefix;
+  buffer *ns_prefix;
 
-    assert(ll);
-    assert(layer_name);
+  assert(ll && layer_name_uri);
 
-    ml_ns_prefix = list_init();
+  ml_ns_prefix = list_init();
 
-    for (ln = layer_name->first; ln ; ln = ln->next) {
-        ns_prefix = ows_layer_ns_prefix(ll, ln->value);
+  for (ln = layer_name_uri->first; ln ; ln = ln->next) {
+    ns_prefix = ows_layer_ns_prefix(ll, ows_layer_uri_to_prefix(ll, ln->value));
 
-        if (!in_list(ml_ns_prefix, ns_prefix))
-            list_add_by_copy(ml_ns_prefix, ns_prefix);
-    }
+    if (!in_list(ml_ns_prefix, ns_prefix))
+      list_add_by_copy(ml_ns_prefix, ns_prefix);
 
-    return ml_ns_prefix;
+    if ((ows_layer_get(ll, ln->value))->gml_ns && !in_list_str(ml_ns_prefix, "gml"))
+      list_add_str(ml_ns_prefix, "gml");
+  }
+
+  return ml_ns_prefix;
 }
 
 
 /*
- * Retrieve the prefix linked to the specified layer
+ * TODO
+ */
+list *ows_layer_list_prefix_to_uri(ows_layer_list * ll, list * layer_name_prefix)
+{
+  list_node *ln;
+  list *prefix;
+  assert(ll && layer_name_prefix);
+
+  prefix = list_init();
+
+  for (ln = layer_name_prefix->first; ln ; ln = ln->next) {
+    list_add_by_copy(prefix, ows_layer_prefix_to_uri(ll, ln->value));
+  }
+
+  return prefix;
+}
+
+
+/*
+ * TODO
+ */
+buffer *ows_layer_uri_to_prefix(ows_layer_list * ll, buffer * layer_name)
+{
+  ows_layer_node *ln;
+  assert(ll && layer_name);
+
+  for (ln = ll->first; ln ; ln = ln->next)
+    if (buffer_cmp(ln->layer->name, layer_name->buf))
+      return ln->layer->name_prefix;
+  
+  return (buffer *) NULL;
+}
+
+
+/*
+ * TODO
  */
-buffer *ows_layer_ns_prefix(ows_layer_list * ll, buffer * layer_name)
+buffer *ows_layer_prefix_to_uri(ows_layer_list * ll, buffer * layer_name_prefix)
 {
-    ows_layer_node *ln;
+  ows_layer_node *ln;
+  assert(ll && layer_name_prefix);
+
+  for (ln = ll->first; ln ; ln = ln->next)
+    if (buffer_cmp(ln->layer->name_prefix, layer_name_prefix->buf))
+      return ln->layer->name;
+  
+  return (buffer *) NULL;
+}
+  
+
+/*
+ * TODO
+ */
+buffer *ows_layer_ns_prefix_to_ns_uri(ows_layer_list * ll, buffer * ns_prefix)
+{
+  ows_layer_node *ln;
+  assert(ll && ns_prefix);
+
+  for (ln = ll->first; ln ; ln = ln->next) {
+    if (buffer_cmp(ln->layer->ns_prefix, ns_prefix->buf))
+      return ln->layer->ns_uri;
+  }
+
+  return (buffer *) NULL;
+}
+
 
-    assert(ll);
-    assert(layer_name);
+/*
+ * Retrieve layer name without uri
+ */
+buffer *ows_layer_no_uri(ows_layer_list * ll, buffer * layer_name)
+{
+  ows_layer_node *ln;
+  assert(ll && layer_name);
+
+  for (ln = ll->first; ln ; ln = ln->next)
+    if (buffer_cmp(ln->layer->name, layer_name->buf))
+      return ln->layer->name_no_uri;
+
+  return (buffer *) NULL;
+}
+
+
+/*
+ * Retrieve layer name without uri
+ */
+buffer *ows_layer_no_uri_to_uri(const ows_layer_list * ll, buffer * layer_name_no_uri)
+{
+  ows_layer_node *ln;
+  assert(ll && layer_name_no_uri);
 
-    for (ln = ll->first; ln ; ln = ln->next)
-        if (buffer_cmp(ln->layer->name, layer_name->buf))
-            return ln->layer->ns_prefix;
+  for (ln = ll->first; ln ; ln = ln->next)
+    if (buffer_cmp(ln->layer->name_no_uri, layer_name_no_uri->buf))
+      return ln->layer->name;
 
-    return (buffer *) NULL;
+  return (buffer *) NULL;
 }
 
 
 /*
- * Retrieve the ns_uri associated to the specified ns_prefix
+ * Retrieve the prefix linked to the specified layer
  */
-buffer *ows_layer_ns_uri(ows_layer_list * ll, buffer * ns_prefix)
+buffer *ows_layer_ns_prefix(ows_layer_list * ll, buffer * layer_name_prefix)
 {
-    ows_layer_node *ln;
+  ows_layer_node *ln;
+  assert(ll && layer_name_prefix);
+
+  for (ln = ll->first; ln ; ln = ln->next)
+    if (buffer_cmp(ln->layer->name_prefix, layer_name_prefix->buf))
+      return ln->layer->ns_prefix;
 
-    assert(ll);
-    assert(ns_prefix);
+  return (buffer *) NULL;
+}
 
-    for (ln = ll->first; ln ; ln = ln->next)
-        if (buffer_cmp(ln->layer->ns_prefix, ns_prefix->buf))
-            return ln->layer->ns_uri;
 
-    return (buffer *) NULL;
+/*
+ * Retrieve the ns_uri associated to the specified layer
+ */
+buffer *ows_layer_ns_uri(ows_layer_list * ll, buffer * layer_name_uri)
+{
+  ows_layer_node *ln;
+  assert(ll && layer_name_uri);
+
+  for (ln = ll->first; ln ; ln = ln->next)
+    if (buffer_cmp(ln->layer->name, layer_name_uri->buf))
+      return ln->layer->ns_uri;
+
+  return (buffer *) NULL;
 }
 
 
@@ -341,21 +439,19 @@ buffer *ows_layer_ns_uri(ows_layer_list * ll, buffer * ns_prefix)
  */
 void ows_layer_list_add(ows_layer_list * ll, ows_layer * l)
 {
-    ows_layer_node *ln = ows_layer_node_init();
-
-    assert(ll);
-    assert(l);
-
-    ln->layer = l;
-    if (!ll->first) {
-        ln->prev = NULL;
-        ll->first = ln;
-    } else {
-        ln->prev = ll->last;
-        ll->last->next = ln;
-    }
-    ll->last = ln;
-    ll->last->next = NULL;
+  ows_layer_node *ln = ows_layer_node_init();
+  assert(ll && l);
+
+  ln->layer = l;
+  if (!ll->first) {
+    ln->prev = NULL;
+    ll->first = ln;
+  } else {
+    ln->prev = ll->last;
+    ll->last->next = ln;
+  }
+  ll->last = ln;
+  ll->last->next = NULL;
 }
 
 
@@ -364,14 +460,14 @@ void ows_layer_list_add(ows_layer_list * ll, ows_layer * l)
  */
 ows_layer_node *ows_layer_node_init()
 {
-    ows_layer_node *ln = malloc(sizeof(ows_layer_node));
-    assert(ln);
+  ows_layer_node *ln = malloc(sizeof(ows_layer_node));
+  assert(ln);
 
-    ln->prev = NULL;
-    ln->next = NULL;
-    ln->layer = NULL;
+  ln->prev = NULL;
+  ln->next = NULL;
+  ln->layer = NULL;
 
-    return ln;
+  return ln;
 }
 
 
@@ -380,19 +476,18 @@ ows_layer_node *ows_layer_node_init()
  */
 void ows_layer_node_free(ows_layer_list * ll, ows_layer_node * ln)
 {
-    assert(ln);
+  assert(ln);
 
-    if (ln->prev) ln->prev = NULL;
-    if (ln->next)
-    {
-        if (ll) ll->first = ln->next;
-        ln->next = NULL;
-    } else if (ll) ll->first = NULL;
+  if (ln->prev) ln->prev = NULL;
+  if (ln->next) {
+    if (ll) ll->first = ln->next;
+    ln->next = NULL;
+  } else if (ll) ll->first = NULL;
 
-    if (ln->layer) ows_layer_free(ln->layer);
+  if (ln->layer) ows_layer_free(ln->layer);
 
-    free(ln);
-    ln = NULL;
+  free(ln);
+  ln = NULL;
 }
 
 
@@ -403,14 +498,14 @@ void ows_layer_node_free(ows_layer_list * ll, ows_layer_node * ln)
 #ifdef OWS_DEBUG
 void ows_layer_list_flush(ows_layer_list * ll, FILE * output)
 {
-    ows_layer_node *ln = NULL;
-    assert(ll);
-    assert(output);
-
-    for (ln = ll->first; ln ; ln = ln->next) {
-        ows_layer_flush(ln->layer, output);
-        fprintf(output, "--------------------\n");
-    }
+  ows_layer_node *ln = NULL;
+  assert(ll);
+  assert(output);
+
+  for (ln = ll->first; ln ; ln = ln->next) {
+    ows_layer_flush(ln->layer, output);
+    fprintf(output, "--------------------\n");
+  }
 }
 #endif
 
@@ -420,25 +515,30 @@ void ows_layer_list_flush(ows_layer_list * ll, FILE * output)
  */
 ows_layer *ows_layer_init()
 {
-    ows_layer *l = malloc(sizeof(ows_layer));
-    assert(l);
-
-    l->parent = NULL;
-    l->depth = 0;
-    l->title = NULL;
-    l->name = NULL;
-    l->abstract = NULL;
-    l->keywords = NULL;
-    l->gml_ns = NULL;
-    l->retrievable = false;
-    l->writable = false;
-    l->srid = NULL;
-    l->geobbox = NULL;
-    l->ns_prefix = buffer_init();
-    l->ns_uri = buffer_init();
-    l->storage = ows_layer_storage_init();
-
-    return l;
+  ows_layer *l = malloc(sizeof(ows_layer));
+  assert(l);
+
+  l->depth = 0;
+  l->parent = NULL;
+  l->title = NULL;
+  l->name = NULL;
+  l->name_prefix = NULL;
+  l->name_no_uri = NULL;
+  l->abstract = NULL;
+  l->keywords = NULL;
+  l->gml_ns = NULL;
+  l->retrievable = false;
+  l->writable = false;
+  l->srid = NULL;
+  l->geobbox = NULL;
+  l->exclude_items = NULL;
+  l->include_items = NULL;
+  l->pkey = NULL;
+  l->ns_prefix = buffer_init();
+  l->ns_uri = buffer_init();
+  l->storage = ows_layer_storage_init();
+
+  return l;
 }
 
 
@@ -447,21 +547,26 @@ ows_layer *ows_layer_init()
  */
 void ows_layer_free(ows_layer * l)
 {
-    assert(l);
-
-    if (l->title) 	buffer_free(l->title);
-    if (l->name) 	buffer_free(l->name);
-    if (l->abstract) 	buffer_free(l->abstract);
-    if (l->keywords) 	list_free(l->keywords);
-    if (l->gml_ns) 	list_free(l->gml_ns);
-    if (l->srid)	list_free(l->srid);
-    if (l->geobbox)	ows_geobbox_free(l->geobbox);
-    if (l->ns_uri)	buffer_free(l->ns_uri);
-    if (l->ns_prefix)	buffer_free(l->ns_prefix);
-    if (l->storage)	ows_layer_storage_free(l->storage);
-
-    free(l);
-    l = NULL;
+  assert(l);
+
+  if (l->title)         buffer_free(l->title);
+  if (l->name)          buffer_free(l->name);
+  if (l->name_prefix)   buffer_free(l->name_prefix);
+  if (l->name_no_uri)   buffer_free(l->name_no_uri);
+  if (l->abstract)      buffer_free(l->abstract);
+  if (l->keywords)      list_free(l->keywords);
+  if (l->gml_ns)        list_free(l->gml_ns);
+  if (l->srid)          list_free(l->srid);
+  if (l->geobbox)       ows_geobbox_free(l->geobbox);
+  if (l->ns_uri)        buffer_free(l->ns_uri);
+  if (l->ns_prefix)     buffer_free(l->ns_prefix);
+  if (l->storage)       ows_layer_storage_free(l->storage);
+  if (l->exclude_items) list_free(l->exclude_items);
+  if (l->include_items) list_free(l->include_items);
+  if (l->pkey)          buffer_free(l->pkey);
+
+  free(l);
+  l = NULL;
 }
 
 
@@ -472,75 +577,95 @@ void ows_layer_free(ows_layer * l)
 #ifdef OWS_DEBUG
 void ows_layer_flush(ows_layer * l, FILE * output)
 {
-    assert(l);
-    assert(output);
-
-    fprintf(output, "depth: %i\n", l->depth);
-
-    if (l->parent) {
-             if (l->parent->name)  fprintf(output, "parent: %s\n", l->parent->name->buf);
-        else if (l->parent->title) fprintf(output, "parent: %s\n", l->parent->title->buf);
-    }
-
-    fprintf(output, "retrievable: %i\n", l->retrievable?1:0);
-    fprintf(output, "writable: %i\n", l->writable?1:0);
-
-    if (l->title) {
-        fprintf(output, "title: ");
-        buffer_flush(l->title, output);
-        fprintf(output, "\n");
-    }
-
-    if (l->name) {
-        fprintf(output, "name: ");
-        buffer_flush(l->name, output);
-        fprintf(output, "\n");
-    }
-
-    if (l->srid) {
-        fprintf(output, "srid: ");
-        list_flush(l->srid, output);
-        fprintf(output, "\n");
-    }
-
-    if (l->keywords) {
-        fprintf(output, "keyword: ");
-        list_flush(l->keywords, output);
-        fprintf(output, "\n");
-    }
-
-    if (l->gml_ns) {
-        fprintf(output, "gml_ns: ");
-        list_flush(l->gml_ns, output);
-        fprintf(output, "\n");
-    }
-
-    if (l->geobbox) {
-        fprintf(output, "geobbox: ");
-        ows_geobbox_flush(l->geobbox, output);
-        fprintf(output, "\n");
-    }
-
-    if (l->ns_prefix) {
-        fprintf(output, "ns_prefix: ");
-        buffer_flush(l->ns_prefix, output);
-        fprintf(output, "\n");
-    }
-
-    if (l->ns_uri) {
-        fprintf(output, "ns_uri: ");
-        buffer_flush(l->ns_uri, output);
-        fprintf(output, "\n");
-    }
-
-    if (l->storage) {
-        fprintf(output, "storage: ");
-        ows_layer_storage_flush(l->storage, output);
-        fprintf(output, "\n");
-    }
+  assert(l);
+  assert(output);
+
+  fprintf(output, "depth: %i\n", l->depth);
+
+  if (l->parent) {
+    if      (l->parent->name)  fprintf(output, "parent: %s\n", l->parent->name->buf);
+    else if (l->parent->title) fprintf(output, "parent: %s\n", l->parent->title->buf);
+  }
+
+  fprintf(output, "retrievable: %i\n", l->retrievable?1:0);
+  fprintf(output, "writable: %i\n", l->writable?1:0);
+
+  if (l->title) {
+    fprintf(output, "title: ");
+    buffer_flush(l->title, output);
+    fprintf(output, "\n");
+  }
+
+  if (l->name) {
+    fprintf(output, "name: ");
+    buffer_flush(l->name, output);
+    fprintf(output, "\n");
+  }
+
+  if (l->name_prefix) {
+    fprintf(output, "name_prefix: ");
+    buffer_flush(l->name_prefix, output);
+    fprintf(output, "\n");
+  }
+
+  if (l->name_no_uri) {
+    fprintf(output, "name_no_uri: ");
+    buffer_flush(l->name_no_uri, output);
+    fprintf(output, "\n");
+  }
+
+  if (l->srid) {
+    fprintf(output, "srid: ");
+    list_flush(l->srid, output);
+    fprintf(output, "\n");
+  }
+
+  if (l->keywords) {
+    fprintf(output, "keyword: ");
+    list_flush(l->keywords, output);
+    fprintf(output, "\n");
+  }
+
+  if (l->gml_ns) {
+    fprintf(output, "gml_ns: ");
+    list_flush(l->gml_ns, output);
+    fprintf(output, "\n");
+  }
+
+  if (l->geobbox) {
+    fprintf(output, "geobbox: ");
+    ows_geobbox_flush(l->geobbox, output);
+    fprintf(output, "\n");
+  }
+
+  if (l->ns_prefix) {
+    fprintf(output, "ns_prefix: ");
+    buffer_flush(l->ns_prefix, output);
+    fprintf(output, "\n");
+  }
+
+  if (l->ns_uri) {
+    fprintf(output, "ns_uri: ");
+    buffer_flush(l->ns_uri, output);
+    fprintf(output, "\n");
+  }
+
+  if (l->storage) {
+    fprintf(output, "storage: ");
+    ows_layer_storage_flush(l->storage, output);
+    fprintf(output, "\n");
+  }
+
+  if(l->exclude_items) {
+    fprintf(output, "exclude_items: ");
+    list_flush(l->exclude_items, output);
+    fprintf(output, "\n");
+  }
+
+  if(l->include_items) {
+    fprintf(output, "include_items: ");
+    list_flush(l->include_items, output);
+    fprintf(output, "\n");
+  }
 }
 #endif
-
-/*
- * vim: expandtab sw=4 ts=4
- */
diff --git a/src/ows/ows_libxml.c b/src/ows/ows_libxml.c
index 837f680..281ecc7 100644
--- a/src/ows/ows_libxml.c
+++ b/src/ows/ows_libxml.c
@@ -30,34 +30,34 @@
 
 
 /*
- * Same prefix but not same URI 
+ * Same prefix but not same URI
  */
-static bool ows_libxml_check_namespace_node(ows *o, xmlNodePtr n, xmlNsPtr *ns_doc) 
+static bool ows_libxml_check_namespace_node(ows *o, xmlNodePtr n, xmlNsPtr *ns_doc)
 {
-    xmlNsPtr *ns_node, *pn, *pd;
-    bool ret= true;
-
-    assert(o);
-    assert(n);
-    assert(ns_doc);
-
-    ns_node = xmlGetNsList(n->doc, n);
-    if (!ns_node) return ret;
-
-    for (pn = ns_node ; *(pn) ; pn++) {
-       for (pd = ns_doc ; *(pd) ; pd++) {
-
-            if (    (*pn)->prefix && (*pd)->prefix && (*pn)->href && (*pd)->href
-                 && !strcmp((char *) (*pn)->prefix, (char *) (*pd)->prefix)
-                 &&  strcmp((char *) (*pn)->href,   (char *) (*pd)->href  )) {
-                 ret = false;
-                 break;
-            }
-        }
+  xmlNsPtr *ns_node, *pn, *pd;
+  bool ret= true;
+
+  assert(o);
+  assert(n);
+  assert(ns_doc);
+
+  ns_node = xmlGetNsList(n->doc, n);
+  if (!ns_node) return ret;
+
+  for (pn = ns_node ; *(pn) ; pn++) {
+    for (pd = ns_doc ; *(pd) ; pd++) {
+
+      if (    (*pn)->prefix && (*pd)->prefix && (*pn)->href && (*pd)->href
+              && !strcmp((char *) (*pn)->prefix, (char *) (*pd)->prefix)
+              &&  strcmp((char *) (*pn)->href,   (char *) (*pd)->href  )) {
+        ret = false;
+        break;
+      }
     }
+  }
 
-    xmlFree(ns_node);
-    return ret;
+  xmlFree(ns_node);
+  return ret;
 }
 
 
@@ -66,24 +66,24 @@ static bool ows_libxml_check_namespace_node(ows *o, xmlNodePtr n, xmlNsPtr *ns_d
  */
 bool ows_libxml_check_namespace(ows *o, xmlNodePtr n)
 {
-    xmlNsPtr *ns_doc;
-    xmlNodePtr node;
-    bool ret = true;
+  xmlNsPtr *ns_doc;
+  xmlNodePtr node;
+  bool ret = true;
 
-    assert(o);
-    assert(n);
+  assert(o);
+  assert(n);
 
-    ns_doc  = xmlGetNsList(n->doc, xmlDocGetRootElement(n->doc));
-    if (!ns_doc) return false;
+  ns_doc  = xmlGetNsList(n->doc, xmlDocGetRootElement(n->doc));
+  if (!ns_doc) return false;
 
-    for (node = n ; node ; node = node->next) {
-        if (node->type != XML_ELEMENT_NODE) continue;
-        if (node->children && !(ret = ows_libxml_check_namespace(o, node->children))) break;
-        if (!(ret = ows_libxml_check_namespace_node(o, node, ns_doc))) break;
-    }
-   
-    xmlFree(ns_doc);
-    return ret;
+  for (node = n ; node ; node = node->next) {
+    if (node->type != XML_ELEMENT_NODE) continue;
+    if (node->children && !(ret = ows_libxml_check_namespace(o, node->children))) break;
+    if (!(ret = ows_libxml_check_namespace_node(o, node, ns_doc))) break;
+  }
+
+  xmlFree(ns_doc);
+  return ret;
 }
 
 
diff --git a/src/ows/ows_metadata.c b/src/ows/ows_metadata.c
index 7c793ab..30a42f9 100644
--- a/src/ows/ows_metadata.c
+++ b/src/ows/ows_metadata.c
@@ -33,28 +33,28 @@
  */
 ows_contact *ows_contact_init()
 {
-    ows_contact *contact;
-    contact = malloc(sizeof(ows_contact));
-
-    assert(contact);
-
-    contact->name = NULL;
-    contact->site = NULL;
-    contact->indiv_name = NULL;
-    contact->position = NULL;
-    contact->phone = NULL;
-    contact->fax = NULL;
-    contact->online_resource = NULL;
-    contact->address = NULL;
-    contact->postcode = NULL;
-    contact->city = NULL;
-    contact->state = NULL;
-    contact->country = NULL;
-    contact->email = NULL;
-    contact->hours = NULL;
-    contact->instructions = NULL;
-
-    return contact;
+  ows_contact *contact;
+  contact = malloc(sizeof(ows_contact));
+
+  assert(contact);
+
+  contact->name = NULL;
+  contact->site = NULL;
+  contact->indiv_name = NULL;
+  contact->position = NULL;
+  contact->phone = NULL;
+  contact->fax = NULL;
+  contact->online_resource = NULL;
+  contact->address = NULL;
+  contact->postcode = NULL;
+  contact->city = NULL;
+  contact->state = NULL;
+  contact->country = NULL;
+  contact->email = NULL;
+  contact->hours = NULL;
+  contact->instructions = NULL;
+
+  return contact;
 }
 
 
@@ -63,26 +63,26 @@ ows_contact *ows_contact_init()
  */
 void ows_contact_free(ows_contact * contact)
 {
-    assert(contact);
-
-    if (contact->name)            buffer_free(contact->name);
-    if (contact->site)            buffer_free(contact->site);
-    if (contact->indiv_name)      buffer_free(contact->indiv_name);
-    if (contact->position)        buffer_free(contact->position);
-    if (contact->phone)           buffer_free(contact->phone);
-    if (contact->fax)             buffer_free(contact->fax);
-    if (contact->online_resource) buffer_free(contact->online_resource);
-    if (contact->address)         buffer_free(contact->address);
-    if (contact->postcode)        buffer_free(contact->postcode);
-    if (contact->city)            buffer_free(contact->city);
-    if (contact->state)           buffer_free(contact->state);
-    if (contact->country)         buffer_free(contact->country);
-    if (contact->email)           buffer_free(contact->email);
-    if (contact->hours)           buffer_free(contact->hours);
-    if (contact->instructions)    buffer_free(contact->instructions);
-
-    free(contact);
-    contact = NULL;
+  assert(contact);
+
+  if (contact->name)            buffer_free(contact->name);
+  if (contact->site)            buffer_free(contact->site);
+  if (contact->indiv_name)      buffer_free(contact->indiv_name);
+  if (contact->position)        buffer_free(contact->position);
+  if (contact->phone)           buffer_free(contact->phone);
+  if (contact->fax)             buffer_free(contact->fax);
+  if (contact->online_resource) buffer_free(contact->online_resource);
+  if (contact->address)         buffer_free(contact->address);
+  if (contact->postcode)        buffer_free(contact->postcode);
+  if (contact->city)            buffer_free(contact->city);
+  if (contact->state)           buffer_free(contact->state);
+  if (contact->country)         buffer_free(contact->country);
+  if (contact->email)           buffer_free(contact->email);
+  if (contact->hours)           buffer_free(contact->hours);
+  if (contact->instructions)    buffer_free(contact->instructions);
+
+  free(contact);
+  contact = NULL;
 }
 
 
@@ -91,21 +91,21 @@ void ows_contact_free(ows_contact * contact)
  */
 ows_meta *ows_metadata_init()
 {
-    ows_meta *metadata;
+  ows_meta *metadata;
 
-    metadata = malloc(sizeof(ows_meta));
-    assert(metadata);
+  metadata = malloc(sizeof(ows_meta));
+  assert(metadata);
 
-    metadata->name = NULL;
-    metadata->type = NULL;
-    metadata->versions = NULL;
-    metadata->title = NULL;
-    metadata->abstract = NULL;
-    metadata->keywords = NULL;
-    metadata->fees = NULL;
-    metadata->access_constraints = NULL;
+  metadata->name = NULL;
+  metadata->type = NULL;
+  metadata->versions = NULL;
+  metadata->title = NULL;
+  metadata->abstract = NULL;
+  metadata->keywords = NULL;
+  metadata->fees = NULL;
+  metadata->access_constraints = NULL;
 
-    return metadata;
+  return metadata;
 }
 
 
@@ -114,19 +114,19 @@ ows_meta *ows_metadata_init()
  */
 void ows_metadata_free(ows_meta * metadata)
 {
-    assert(metadata);
-
-    if (metadata->name)               buffer_free(metadata->name);
-    if (metadata->type)               buffer_free(metadata->type);
-    if (metadata->versions)           list_free(metadata->versions);
-    if (metadata->title)              buffer_free(metadata->title);
-    if (metadata->abstract)           buffer_free(metadata->abstract);
-    if (metadata->keywords)           list_free(metadata->keywords);
-    if (metadata->fees)               buffer_free(metadata->fees);
-    if (metadata->access_constraints) buffer_free(metadata->access_constraints);
-
-    free(metadata);
-    metadata = NULL;
+  assert(metadata);
+
+  if (metadata->name)               buffer_free(metadata->name);
+  if (metadata->type)               buffer_free(metadata->type);
+  if (metadata->versions)           list_free(metadata->versions);
+  if (metadata->title)              buffer_free(metadata->title);
+  if (metadata->abstract)           buffer_free(metadata->abstract);
+  if (metadata->keywords)           list_free(metadata->keywords);
+  if (metadata->fees)               buffer_free(metadata->fees);
+  if (metadata->access_constraints) buffer_free(metadata->access_constraints);
+
+  free(metadata);
+  metadata = NULL;
 }
 
 
@@ -135,38 +135,38 @@ void ows_metadata_free(ows_meta * metadata)
  */
 void ows_metadata_fill(ows * o, array * cgi)
 {
-    buffer *b;
-
-    assert(o);
-    assert(o->metadata);
-    assert(cgi);
-
-    /* Retrieve the requested service from request */
-    if (array_is_key(cgi, "xmlns")) {
-        b = array_get(cgi, "xmlns");
-        if (buffer_case_cmp(b, "http://www.opengis.net/wfs"))
-            o->metadata->type = buffer_from_str("WFS");
-    } else if (array_is_key(cgi, "service")) {
-        b = array_get(cgi, "service");
-        o->metadata->type = buffer_init();
-        buffer_copy(o->metadata->type, b);
-    } else {
-        ows_error(o, OWS_ERROR_MISSING_PARAMETER_VALUE, "service unknown", "service");
-        return;
-    }
-
-    /* Initialize supported versions from service type */
-    if (o->metadata->type) {
-        if (buffer_case_cmp(o->metadata->type, "WFS")) {
-            o->metadata->versions = list_init();
-            list_add_str(o->metadata->versions, "1.0.0");
-            list_add_str(o->metadata->versions, "1.1.0");
-        } else if (buffer_case_cmp(o->metadata->type, "WMS")) {
-            o->metadata->versions = list_init();
-            list_add_str(o->metadata->versions, "1.1.0");
-            list_add_str(o->metadata->versions, "1.3.0");
-        }
+  buffer *b;
+
+  assert(o);
+  assert(o->metadata);
+  assert(cgi);
+
+  /* Retrieve the requested service from request */
+  if (array_is_key(cgi, "xmlns")) {
+    b = array_get(cgi, "xmlns");
+    if (buffer_case_cmp(b, "http://www.opengis.net/wfs"))
+      o->metadata->type = buffer_from_str("WFS");
+  } else if (array_is_key(cgi, "service")) {
+    b = array_get(cgi, "service");
+    o->metadata->type = buffer_init();
+    buffer_copy(o->metadata->type, b);
+  } else {
+    ows_error(o, OWS_ERROR_MISSING_PARAMETER_VALUE, "service unknown", "service");
+    return;
+  }
+
+  /* Initialize supported versions from service type */
+  if (o->metadata->type) {
+    if (buffer_case_cmp(o->metadata->type, "WFS")) {
+      o->metadata->versions = list_init();
+      list_add_str(o->metadata->versions, "1.0.0");
+      list_add_str(o->metadata->versions, "1.1.0");
+    } else if (buffer_case_cmp(o->metadata->type, "WMS")) {
+      o->metadata->versions = list_init();
+      list_add_str(o->metadata->versions, "1.1.0");
+      list_add_str(o->metadata->versions, "1.3.0");
     }
+  }
 }
 
 
@@ -177,98 +177,98 @@ void ows_metadata_fill(ows * o, array * cgi)
 #ifdef OWS_DEBUG
 void ows_contact_flush(ows_contact * contact, FILE * output)
 {
-    assert(contact);
-    assert(output);
-
-    if (contact->name) {
-        fprintf(output, "name: ");
-        buffer_flush(contact->name, output);
-        fprintf(output, "\n");
-    }
-
-    if (contact->site) {
-        fprintf(output, "site: ");
-        buffer_flush(contact->site, output);
-        fprintf(output, "\n");
-    }
-
-    if (contact->indiv_name) {
-        fprintf(output, "individual name: ");
-        buffer_flush(contact->indiv_name, output);
-        fprintf(output, "\n");
-    }
-
-    if (contact->position) {
-        fprintf(output, "position: ");
-        buffer_flush(contact->position, output);
-        fprintf(output, "\n");
-    }
-
-    if (contact->phone) {
-        fprintf(output, "phone: ");
-        buffer_flush(contact->phone, output);
-        fprintf(output, "\n");
-    }
-
-    if (contact->fax) {
-        fprintf(output, "fax: ");
-        buffer_flush(contact->fax, output);
-        fprintf(output, "\n");
-    }
-
-    if (contact->online_resource) {
-        fprintf(output, "online_resource: ");
-        buffer_flush(contact->online_resource, output);
-        fprintf(output, "\n");
-    }
-
-    if (contact->address) {
-        fprintf(output, "address: ");
-        buffer_flush(contact->address, output);
-        fprintf(output, "\n");
-    }
-
-    if (contact->postcode) {
-        fprintf(output, "postcode: ");
-        buffer_flush(contact->postcode, output);
-        fprintf(output, "\n");
-    }
-
-    if (contact->city) {
-        fprintf(output, "city: ");
-        buffer_flush(contact->city, output);
-        fprintf(output, "\n");
-    }
-
-    if (contact->state) {
-        fprintf(output, "administrative_area: ");
-        buffer_flush(contact->city, output);
-        fprintf(output, "\n");
-    }
-
-    if (contact->country) {
-        fprintf(output, "country: ");
-        buffer_flush(contact->country, output);
-        fprintf(output, "\n");
-    }
-
-    if (contact->email) {
-        fprintf(output, "email: ");
-        buffer_flush(contact->email, output);
-        fprintf(output, "\n");
-    }
-
-    if (contact->hours) {
-        fprintf(output, "hours_of_service: ");
-        buffer_flush(contact->hours, output);
-        fprintf(output, "\n");
-    }
-
-    if (contact->instructions) {
-        fprintf(output, "contact_instructions: ");
-        buffer_flush(contact->instructions, output);
-        fprintf(output, "\n");
-    }
+  assert(contact);
+  assert(output);
+
+  if (contact->name) {
+    fprintf(output, "name: ");
+    buffer_flush(contact->name, output);
+    fprintf(output, "\n");
+  }
+
+  if (contact->site) {
+    fprintf(output, "site: ");
+    buffer_flush(contact->site, output);
+    fprintf(output, "\n");
+  }
+
+  if (contact->indiv_name) {
+    fprintf(output, "individual name: ");
+    buffer_flush(contact->indiv_name, output);
+    fprintf(output, "\n");
+  }
+
+  if (contact->position) {
+    fprintf(output, "position: ");
+    buffer_flush(contact->position, output);
+    fprintf(output, "\n");
+  }
+
+  if (contact->phone) {
+    fprintf(output, "phone: ");
+    buffer_flush(contact->phone, output);
+    fprintf(output, "\n");
+  }
+
+  if (contact->fax) {
+    fprintf(output, "fax: ");
+    buffer_flush(contact->fax, output);
+    fprintf(output, "\n");
+  }
+
+  if (contact->online_resource) {
+    fprintf(output, "online_resource: ");
+    buffer_flush(contact->online_resource, output);
+    fprintf(output, "\n");
+  }
+
+  if (contact->address) {
+    fprintf(output, "address: ");
+    buffer_flush(contact->address, output);
+    fprintf(output, "\n");
+  }
+
+  if (contact->postcode) {
+    fprintf(output, "postcode: ");
+    buffer_flush(contact->postcode, output);
+    fprintf(output, "\n");
+  }
+
+  if (contact->city) {
+    fprintf(output, "city: ");
+    buffer_flush(contact->city, output);
+    fprintf(output, "\n");
+  }
+
+  if (contact->state) {
+    fprintf(output, "administrative_area: ");
+    buffer_flush(contact->city, output);
+    fprintf(output, "\n");
+  }
+
+  if (contact->country) {
+    fprintf(output, "country: ");
+    buffer_flush(contact->country, output);
+    fprintf(output, "\n");
+  }
+
+  if (contact->email) {
+    fprintf(output, "email: ");
+    buffer_flush(contact->email, output);
+    fprintf(output, "\n");
+  }
+
+  if (contact->hours) {
+    fprintf(output, "hours_of_service: ");
+    buffer_flush(contact->hours, output);
+    fprintf(output, "\n");
+  }
+
+  if (contact->instructions) {
+    fprintf(output, "contact_instructions: ");
+    buffer_flush(contact->instructions, output);
+    fprintf(output, "\n");
+  }
 
 }
 #endif
@@ -281,56 +281,56 @@ void ows_contact_flush(ows_contact * contact, FILE * output)
 #ifdef OWS_DEBUG
 void ows_metadata_flush(ows_meta * metadata, FILE * output)
 {
-    assert(metadata);
-    assert(output);
-
-    if (metadata->name) {
-        fprintf(output, "name: ");
-        buffer_flush(metadata->name, output);
-        fprintf(output, "\n");
-    }
-
-    if (metadata->type) {
-        fprintf(output, "type: ");
-        buffer_flush(metadata->type, output);
-        fprintf(output, "\n");
-    }
-
-    if (metadata->versions) {
-        fprintf(output, "version: ");
-        list_flush(metadata->versions, output);
-        fprintf(output, "\n");
-    }
-
-    if (metadata->title) {
-        fprintf(output, "title: ");
-        buffer_flush(metadata->title, output);
-        fprintf(output, "\n");
-    }
-
-    if (metadata->abstract) {
-        fprintf(output, "abstract: ");
-        buffer_flush(metadata->abstract, output);
-        fprintf(output, "\n");
-    }
-
-    if (metadata->keywords) {
-        fprintf(output, "keywords: ");
-        list_flush(metadata->keywords, output);
-        fprintf(output, "\n");
-    }
-
-    if (metadata->fees) {
-        fprintf(output, "fees: ");
-        buffer_flush(metadata->fees, output);
-        fprintf(output, "\n");
-    }
-
-    if (metadata->access_constraints) {
-        fprintf(output, "access_constraints: ");
-        buffer_flush(metadata->access_constraints, output);
-        fprintf(output, "\n");
-    }
+  assert(metadata);
+  assert(output);
+
+  if (metadata->name) {
+    fprintf(output, "name: ");
+    buffer_flush(metadata->name, output);
+    fprintf(output, "\n");
+  }
+
+  if (metadata->type) {
+    fprintf(output, "type: ");
+    buffer_flush(metadata->type, output);
+    fprintf(output, "\n");
+  }
+
+  if (metadata->versions) {
+    fprintf(output, "version: ");
+    list_flush(metadata->versions, output);
+    fprintf(output, "\n");
+  }
+
+  if (metadata->title) {
+    fprintf(output, "title: ");
+    buffer_flush(metadata->title, output);
+    fprintf(output, "\n");
+  }
+
+  if (metadata->abstract) {
+    fprintf(output, "abstract: ");
+    buffer_flush(metadata->abstract, output);
+    fprintf(output, "\n");
+  }
+
+  if (metadata->keywords) {
+    fprintf(output, "keywords: ");
+    list_flush(metadata->keywords, output);
+    fprintf(output, "\n");
+  }
+
+  if (metadata->fees) {
+    fprintf(output, "fees: ");
+    buffer_flush(metadata->fees, output);
+    fprintf(output, "\n");
+  }
+
+  if (metadata->access_constraints) {
+    fprintf(output, "access_constraints: ");
+    buffer_flush(metadata->access_constraints, output);
+    fprintf(output, "\n");
+  }
 }
 #endif
 
diff --git a/src/ows/ows_psql.c b/src/ows/ows_psql.c
index 6911e03..4fe0e35 100644
--- a/src/ows/ows_psql.c
+++ b/src/ows/ows_psql.c
@@ -35,32 +35,38 @@
  */
 buffer *ows_psql_id_column(ows * o, buffer * layer_name)
 {
-    ows_layer_node *ln = NULL;
+  ows_layer_node *ln = NULL;
 
-    assert(o);
-    assert(o->layers);
-    assert(layer_name);
+  assert(o);
+  assert(o->layers);
+  assert(layer_name);
 
-    for (ln = o->layers->first ; ln ; ln = ln->next)
-        if (ln->layer->name && ln->layer->storage
-	    && !strcmp(ln->layer->name->buf, layer_name->buf))
-            return ln->layer->storage->pkey;
+  for (ln = o->layers->first ; ln ; ln = ln->next)
+    if (ln->layer->name && ln->layer->storage
+        && !strcmp(ln->layer->name->buf, layer_name->buf))
+      return ln->layer->storage->pkey;
 
-    return NULL;
+  return NULL;
 }
 
 
 /*
- * Execute an SQL request 
+ * Execute an SQL request
  */
 PGresult * ows_psql_exec(ows *o, const char *sql)
 {
-    assert(o);
-    assert(sql);
-    assert(o->pg);
-     
-    ows_log(o, 8, sql);
-    return PQexecParams(o->pg, sql, 0, NULL, NULL, NULL, NULL, 0); 
+  PGresult* res;
+
+  assert(o);
+  assert(sql);
+  assert(o->pg);
+
+  ows_log(o, 8, sql);
+  res = PQexecParams(o->pg, sql, 0, NULL, NULL, NULL, NULL, 0);
+  if (strlen(PQresultErrorMessage(res)))
+    ows_log(o, 1, PQresultErrorMessage(res));
+
+  return res;
 }
 
 
@@ -70,18 +76,18 @@ PGresult * ows_psql_exec(ows *o, const char *sql)
  */
 int ows_psql_column_number_id_column(ows * o, buffer * layer_name)
 {
-    ows_layer_node *ln = NULL;
+  ows_layer_node *ln = NULL;
 
-    assert(o);
-    assert(o->layers);
-    assert(layer_name);
+  assert(o);
+  assert(o->layers);
+  assert(layer_name);
 
-    for (ln = o->layers->first ; ln ; ln = ln->next)
-        if (ln->layer->name && ln->layer->storage
-            && !strcmp(ln->layer->name->buf, layer_name->buf))
-            return ln->layer->storage->pkey_column_number;
+  for (ln = o->layers->first ; ln ; ln = ln->next)
+    if (ln->layer->name && ln->layer->storage
+        && !strcmp(ln->layer->name->buf, layer_name->buf))
+      return ln->layer->storage->pkey_column_number;
 
-    return -1;
+  return -1;
 }
 
 
@@ -90,58 +96,58 @@ int ows_psql_column_number_id_column(ows * o, buffer * layer_name)
  */
 list *ows_psql_geometry_column(ows * o, buffer * layer_name)
 {
-    ows_layer_node *ln = NULL;
+  ows_layer_node *ln = NULL;
 
-    assert(o);
-    assert(o->layers);
-    assert(layer_name);
+  assert(o);
+  assert(o->layers);
+  assert(layer_name);
 
-    for (ln = o->layers->first ; ln ; ln = ln->next)
-        if (ln->layer->name && ln->layer->storage
-            && !strcmp(ln->layer->name->buf, layer_name->buf))
-            return ln->layer->storage->geom_columns;
+  for (ln = o->layers->first ; ln ; ln = ln->next)
+    if (ln->layer->name && ln->layer->storage
+        && !strcmp(ln->layer->name->buf, layer_name->buf))
+      return ln->layer->storage->geom_columns;
 
-    return NULL;
+  return NULL;
 }
 
 
 /*
- * Return schema name from a given layer 
+ * Return schema name from a given layer
  */
 buffer *ows_psql_schema_name(ows * o, buffer * layer_name)
 {
-    ows_layer_node *ln = NULL;
+  ows_layer_node *ln = NULL;
 
-    assert(o);
-    assert(o->layers);
-    assert(layer_name);
+  assert(o);
+  assert(o->layers);
+  assert(layer_name);
 
-    for (ln = o->layers->first ; ln ; ln = ln->next)
-        if (ln->layer->name && ln->layer->storage
-            && !strcmp(ln->layer->name->buf, layer_name->buf))
-            return ln->layer->storage->schema;
+  for (ln = o->layers->first ; ln ; ln = ln->next)
+    if (ln->layer->name && ln->layer->storage
+        && !strcmp(ln->layer->name->buf, layer_name->buf))
+      return ln->layer->storage->schema;
 
-    return NULL;
+  return NULL;
 }
 
 
 /*
- * Return table name from a given layer 
+ * Return table name from a given layer
  */
 buffer *ows_psql_table_name(ows * o, buffer * layer_name)
 {
-    ows_layer_node *ln = NULL;
+  ows_layer_node *ln = NULL;
 
-    assert(o);
-    assert(o->layers);
-    assert(layer_name);
+  assert(o);
+  assert(o->layers);
+  assert(layer_name);
 
-    for (ln = o->layers->first ; ln ; ln = ln->next)
-        if (ln->layer->name && ln->layer->storage
-            && !strcmp(ln->layer->name->buf, layer_name->buf))
-            return ln->layer->storage->table;
+  for (ln = o->layers->first ; ln ; ln = ln->next)
+    if (ln->layer->name && ln->layer->storage
+        && !strcmp(ln->layer->name->buf, layer_name->buf))
+      return ln->layer->storage->table;
 
-    return NULL;
+  return NULL;
 }
 
 
@@ -150,26 +156,26 @@ buffer *ows_psql_table_name(ows * o, buffer * layer_name)
  */
 bool ows_psql_is_geometry_valid(ows * o, buffer * geom)
 {
-    buffer *sql;
-    PGresult *res;
-    bool ret = false;
+  buffer *sql;
+  PGresult *res;
+  bool ret = false;
 
-    assert(o);
-    assert(geom);
+  assert(o);
+  assert(geom);
 
-    sql = buffer_init();
-    buffer_add_str(sql, "SELECT ST_isvalid(ST_geometryfromtext('");
-    buffer_copy(sql, geom);
-    buffer_add_str(sql, "', -1));");
-    
-    res = ows_psql_exec(o, sql->buf);
-    buffer_free(sql);
+  sql = buffer_init();
+  buffer_add_str(sql, "SELECT ST_isvalid(ST_geometryfromtext('");
+  buffer_copy(sql, geom);
+  buffer_add_str(sql, "', -1));");
 
-    if (PQresultStatus(res) == PGRES_TUPLES_OK && PQntuples(res) == 1
-	&& (char) PQgetvalue(res, 0, 0)[0] ==  't') ret = true;
+  res = ows_psql_exec(o, sql->buf);
+  buffer_free(sql);
 
-    PQclear(res);
-    return ret;
+  if (PQresultStatus(res) == PGRES_TUPLES_OK && PQntuples(res) == 1
+      && (char) PQgetvalue(res, 0, 0)[0] ==  't') ret = true;
+
+  PQclear(res);
+  return ret;
 }
 
 
@@ -178,19 +184,19 @@ bool ows_psql_is_geometry_valid(ows * o, buffer * geom)
  */
 bool ows_psql_is_geometry_column(ows * o, buffer * layer_name, buffer * column)
 {
-    ows_layer_node *ln;
+  ows_layer_node *ln;
 
-    assert(o);
-    assert(o->layers);
-    assert(layer_name);
-    assert(column);
+  assert(o);
+  assert(o->layers);
+  assert(layer_name);
+  assert(column);
 
-    for (ln = o->layers->first ; ln ; ln = ln->next)
-        if (ln->layer->name && ln->layer->storage
-            && !strcmp(ln->layer->name->buf, layer_name->buf))
-            return in_list(ln->layer->storage->geom_columns, column);
+  for (ln = o->layers->first ; ln ; ln = ln->next)
+    if (ln->layer->name && ln->layer->storage
+        && !strcmp(ln->layer->name->buf, layer_name->buf))
+      return in_list(ln->layer->storage->geom_columns, column);
 
-    return false;
+  return false;
 }
 
 
@@ -199,18 +205,110 @@ bool ows_psql_is_geometry_column(ows * o, buffer * layer_name, buffer * column)
  */
 list *ows_psql_not_null_properties(ows * o, buffer * layer_name)
 {
-    ows_layer_node *ln;
+  ows_layer_node *ln;
 
-    assert(o);
-    assert(o->layers);
-    assert(layer_name);
+  assert(o);
+  assert(o->layers);
+  assert(layer_name);
 
-    for (ln = o->layers->first ; ln ; ln = ln->next)
-        if (ln->layer->name && ln->layer->storage
-            && !strcmp(ln->layer->name->buf, layer_name->buf))
-            return ln->layer->storage->not_null_columns;
+  for (ln = o->layers->first ; ln ; ln = ln->next)
+    if (ln->layer->name && ln->layer->storage
+        && !strcmp(ln->layer->name->buf, layer_name->buf))
+      return ln->layer->storage->not_null_columns;
 
-    return NULL;
+  return NULL;
+}
+
+
+/*
+ * Returns the constraint name for a table column.
+ * Used to return enumeration constraints in describe feature type request.
+ */
+buffer *ows_psql_column_constraint_name(ows * o, buffer * column_name, buffer * table_name)
+{
+  buffer *sql;
+  PGresult *res;
+  buffer *constraint_name;
+
+  constraint_name = buffer_init();
+
+  assert(o);
+  assert(column_name);
+  assert(table_name);
+
+  sql = buffer_init();
+
+  buffer_add_str(sql, "SELECT constraint_name FROM information_schema.constraint_column_usage WHERE table_name = '");
+  buffer_add_str(sql, table_name->buf);
+  buffer_add_str(sql, "' AND column_name='");
+  buffer_add_str(sql, column_name->buf);
+  buffer_add_str(sql, "'");
+
+  res = ows_psql_exec(o, sql->buf);
+  buffer_free(sql);
+
+  if (PQresultStatus(res) != PGRES_TUPLES_OK || PQntuples(res) != 1) {
+    PQclear(res);
+    return constraint_name;
+  }
+
+  buffer_add_str(constraint_name, PQgetvalue(res, 0, 0));
+  PQclear(res);
+
+  return constraint_name;
+}
+
+/*
+ * Returns the list of possible values for a column according to the constraint value.
+ * Used to return enumeration constraints in describe feature type request.
+ */
+list *ows_psql_column_check_constraint(ows * o, buffer * constraint_name)
+{
+  buffer *sql;
+  PGresult *res;
+  list *constraints;
+  buffer *constraint_value;
+  buffer *buf;
+  size_t i;
+  size_t j;
+
+  constraints = list_init();
+  constraint_value = buffer_init();
+
+  assert(o);
+  assert(constraint_name);
+
+  sql = buffer_init();
+
+  buffer_add_str(sql, "SELECT check_clause FROM information_schema.check_constraints WHERE constraint_name = '");
+  buffer_add_str(sql, constraint_name->buf);
+  buffer_add_str(sql, "'");
+
+  res = ows_psql_exec(o, sql->buf);
+
+  if (PQresultStatus(res) != PGRES_TUPLES_OK || PQntuples(res) != 1) {
+    PQclear(res);
+    return constraints;
+  }
+
+  buffer_add_str(constraint_value, PQgetvalue(res, 0, 0));
+  PQclear(res);
+
+  j=0;
+  buf = buffer_init();
+  for (i = 0; constraint_value->buf[i] != '\0'; i++) {
+    if(constraint_value->buf[i] == '\'') {
+      j++;
+      if(j%2==1) {
+        buf = buffer_init();
+      } else {
+        list_add(constraints, buf);
+      }
+    } else if(j%2==1)
+      buffer_add(buf, constraint_value->buf[i]);
+  }
+
+  return constraints;
 }
 
 
@@ -221,33 +319,72 @@ list *ows_psql_not_null_properties(ows * o, buffer * layer_name)
  */
 buffer *ows_psql_column_name(ows * o, buffer * layer_name, int number)
 {
-    buffer *sql;
-    PGresult *res;
-    buffer *column;
+  buffer *sql;
+  PGresult *res;
+  buffer *column;
 
-    assert(o);
-    assert(layer_name);
+  assert(o);
+  assert(layer_name);
 
-    sql = buffer_init();
-    column = buffer_init();
+  sql = buffer_init();
+  column = buffer_init();
 
-    buffer_add_str(sql, "SELECT a.attname FROM pg_class c, pg_attribute a, pg_type t WHERE c.relname ='");
-    buffer_copy(sql, layer_name);
-    buffer_add_str(sql, "' AND a.attnum > 0 AND a.attrelid = c.oid AND a.atttypid = t.oid AND a.attnum = ");
-    buffer_add_int(sql, number);
+  buffer_add_str(sql, "SELECT a.attname FROM pg_class c, pg_attribute a, pg_type t WHERE c.relname ='");
+  buffer_copy(sql, layer_name);
+  buffer_add_str(sql, "' AND a.attnum > 0 AND a.attrelid = c.oid AND a.atttypid = t.oid AND a.attnum = ");
+  buffer_add_int(sql, number);
 
-    res = ows_psql_exec(o, sql->buf);
-    buffer_free(sql);
+  res = ows_psql_exec(o, sql->buf);
+  buffer_free(sql);
 
-    if (PQresultStatus(res) != PGRES_TUPLES_OK || PQntuples(res) != 1) {
-        PQclear(res);
-        return column;
-    }
+  if (PQresultStatus(res) != PGRES_TUPLES_OK || PQntuples(res) != 1) {
+    PQclear(res);
+    return column;
+  }
+
+  buffer_add_str(column, PQgetvalue(res, 0, 0));
+  PQclear(res);
+
+  return column;
+}
+
+/*
+ * Returns the column character_maximum_length value from the database
+ * information schema.
+ * Used to return maxLength constraint in describe feature type request.
+ */
+buffer *ows_psql_column_character_maximum_length(ows * o, buffer * column_name, buffer * table_name)
+{
+  buffer *sql;
+  PGresult *res;
+  buffer *character_maximum_length;
+
+  character_maximum_length = buffer_init();
+
+  assert(o);
+  assert(column_name);
+  assert(table_name);
 
-    buffer_add_str(column, PQgetvalue(res, 0, 0));
+  sql = buffer_init();
+
+  buffer_add_str(sql, "SELECT character_maximum_length FROM information_schema.columns WHERE table_name = '");
+  buffer_add_str(sql, table_name->buf);
+  buffer_add_str(sql, "' and column_name = '");
+  buffer_add_str(sql, column_name->buf);
+  buffer_add_str(sql, "'");
+
+  res = ows_psql_exec(o, sql->buf);
+  buffer_free(sql);
+
+  if (PQresultStatus(res) != PGRES_TUPLES_OK || PQntuples(res) != 1) {
     PQclear(res);
+    return character_maximum_length;
+  }
 
-    return column;
+  buffer_add_str(character_maximum_length, PQgetvalue(res, 0, 0));
+  PQclear(res);
+
+  return character_maximum_length;
 }
 
 
@@ -256,52 +393,69 @@ buffer *ows_psql_column_name(ows * o, buffer * layer_name, int number)
  */
 array *ows_psql_describe_table(ows * o, buffer * layer_name)
 {
-    ows_layer_node *ln = NULL;
+  ows_layer_node *ln = NULL;
 
-    assert(o);
-    assert(o->layers);
-    assert(layer_name);
+  assert(o);
+  assert(o->layers);
+  assert(layer_name);
 
-    for (ln = o->layers->first ; ln ; ln = ln->next)
-        if (ln->layer->name && ln->layer->storage
-            && !strcmp(ln->layer->name->buf, layer_name->buf))
-            return ln->layer->storage->attributes;
+  for (ln = o->layers->first ; ln ; ln = ln->next)
+    if (ln->layer->name && ln->layer->storage
+        && !strcmp(ln->layer->name->buf, layer_name->buf))
+      return ln->layer->storage->attributes;
 
-    return NULL;
+  return NULL;
 }
 
 
-/* 
+/*
  * Retrieve an ows_version, related to current PostGIS version.
  */
 ows_version * ows_psql_postgis_version(ows *o)
 {
-    list *l;
-    PGresult * res;
-    ows_version * v = NULL; 
-
-    res = ows_psql_exec(o, "SELECT substr(postgis_full_version(), 10, 5)");
-    if (PQresultStatus(res) != PGRES_TUPLES_OK || PQntuples(res) != 1) {
-         PQclear(res);
-         return NULL;
-    }
+  list *l;
+  PGresult * res;
+  ows_version * v = NULL;
 
-    l = list_explode_str('.', (char *) PQgetvalue(res, 0, 0));
-
-    if (    l->size == 3 
-         && check_regexp(l->first->value->buf,       "^[0-9]+$")
-         && check_regexp(l->first->next->value->buf, "^[0-9]+$")
-         && check_regexp(l->last->value->buf,        "^[0-9]+$") )
-        {
-	    v = ows_version_init();
-            v->major   = atoi(l->first->value->buf);
-            v->minor   = atoi(l->first->next->value->buf);
-            v->release = atoi(l->last->value->buf);
-        }
- 
-    list_free(l);
+  res = ows_psql_exec(o, "SELECT substr(postgis_full_version(), 10, 5)");
+  if (PQresultStatus(res) != PGRES_TUPLES_OK || PQntuples(res) != 1) {
     PQclear(res);
-    return v;
+    return NULL;
+  }
+
+  l = list_explode_str('.', (char *) PQgetvalue(res, 0, 0));
+
+  if (    l->size == 3
+          && check_regexp(l->first->value->buf,       "^[0-9]+$")
+          && check_regexp(l->first->next->value->buf, "^[0-9]+$")
+          && check_regexp(l->last->value->buf,        "^[0-9]+$") ) {
+    v = ows_version_init();
+    v->major   = atoi(l->first->value->buf);
+    v->minor   = atoi(l->first->next->value->buf);
+    v->release = atoi(l->last->value->buf);
+  }
+
+  list_free(l);
+  PQclear(res);
+  return v;
+}
+
+
+/*
+ * TODO
+ */
+bool ows_psql_is_numeric(buffer * type)
+{
+  assert(type);
+
+  if (buffer_cmp(type, "int2")) return true;
+  if (buffer_cmp(type, "int4")) return true;
+  if (buffer_cmp(type, "int8")) return true;
+  if (buffer_cmp(type, "float4")) return true;
+  if (buffer_cmp(type, "float8")) return true;
+  if (buffer_ncmp(type, "numeric", 7)) return true;
+
+  return false;
 }
 
 
@@ -309,41 +463,44 @@ ows_version * ows_psql_postgis_version(ows *o)
  * Convert a PostgreSql type to a valid
  * OGC XMLSchema's type
  */
-char *ows_psql_to_xsd(buffer * type, ows_version *version)
+char *ows_psql_to_xsd(buffer * type, enum wfs_format format)
 {
-    int wfs_version;
-
-    assert(type);
-    assert(version);
-
-    wfs_version = ows_version_get(version); 
- 
-    if (buffer_case_cmp(type, "geometry")) return "gml:GeometryPropertyType";
-    if (buffer_cmp(type, "geography")) return "gml:GeometryPropertyType";
-    if (buffer_cmp(type, "int2")) return "short";
-    if (buffer_cmp(type, "int4")) return "int";
-    if (buffer_cmp(type, "int8")) return "long";
-    if (buffer_cmp(type, "float4")) return "float";
-    if (buffer_cmp(type, "float8")) return "double";
-    if (buffer_cmp(type, "bool")) return "boolean";
-    if (buffer_cmp(type, "bytea")) return "byte";
-    if (buffer_cmp(type, "date")) return "date";
-    if (buffer_cmp(type, "time")) return "time";
-    if (buffer_ncmp(type, "numeric", 7)) return "decimal";
-    if (buffer_ncmp(type, "timestamp", 9)) return "dateTime"; /* Could be also timestamptz */
-    if (buffer_cmp(type, "POINT")) return "gml:PointPropertyType";
-    if (buffer_cmp(type, "LINESTRING") && wfs_version == 100) return "gml:LineStringPropertyType";
-    if (buffer_cmp(type, "LINESTRING") && wfs_version == 110) return "gml:CurvePropertyType";
-    if (buffer_cmp(type, "POLYGON") && wfs_version == 100) return "gml:PolygonPropertyType";
-    if (buffer_cmp(type, "POLYGON") && wfs_version == 110) return "gml:SurfacePropertyType";
-    if (buffer_cmp(type, "MULTIPOINT")) return "gml:MultiPointPropertyType";
-    if (buffer_cmp(type, "MULTILINESTRING") && wfs_version == 100) return "gml:MultiLineStringPropertyType";
-    if (buffer_cmp(type, "MULTILINESTRING") && wfs_version == 110) return "gml:MultiCurvePropertyType";
-    if (buffer_cmp(type, "MULTIPOLYGON") && wfs_version == 100) return "gml:MultiPolygonPropertyType";
-    if (buffer_cmp(type, "MULTIPOLYGON") && wfs_version == 110) return "gml:MultiSurfacePropertyType";
-    if (buffer_cmp(type, "GEOMETRYCOLLECTION")) return "gml:MultiGeometryPropertyType";
-
-    return "string";
+  int gml_version = 311;
+
+  assert(type);
+  assert(format);
+
+  if (format == WFS_GML212) gml_version = 212;
+
+  if (buffer_case_cmp(type, "geometry")) return "gml:GeometryPropertyType";
+  if (buffer_cmp(type, "geography")) return "gml:GeometryPropertyType";
+  if (buffer_cmp(type, "int2")) return "short";
+  if (buffer_cmp(type, "int4")) return "int";
+  if (buffer_cmp(type, "int8")) return "long";
+  if (buffer_cmp(type, "float4")) return "float";
+  if (buffer_cmp(type, "float8")) return "double";
+  if (buffer_cmp(type, "bool")) return "boolean";
+  if (buffer_cmp(type, "bytea")) return "byte";
+  if (buffer_cmp(type, "date")) return "date";
+  if (buffer_cmp(type, "time")) return "time";
+  if (buffer_ncmp(type, "numeric", 7)) return "decimal";
+  if (buffer_ncmp(type, "timestamp", 9)) return "dateTime"; /* Could be also timestamptz */
+  if (buffer_cmp(type, "POINT")) return "gml:PointPropertyType";
+  if (buffer_cmp(type, "LINESTRING") && gml_version == 212) return "gml:LineStringPropertyType";
+  if (buffer_cmp(type, "LINESTRING") && gml_version >= 311) return "gml:CurvePropertyType";
+  if (buffer_cmp(type, "POLYGON") && gml_version == 212) return "gml:PolygonPropertyType";
+  if (buffer_cmp(type, "POLYGON") && gml_version >= 311) return "gml:SurfacePropertyType";
+  if (buffer_cmp(type, "TRIANGLE")) return "gml:TrianglePropertyType";
+  if (buffer_cmp(type, "MULTIPOINT")) return "gml:MultiPointPropertyType";
+  if (buffer_cmp(type, "MULTILINESTRING") && gml_version == 212) return "gml:MultiLineStringPropertyType";
+  if (buffer_cmp(type, "MULTILINESTRING") && gml_version >= 311) return "gml:MultiCurvePropertyType";
+  if (buffer_cmp(type, "MULTIPOLYGON") && gml_version == 212) return "gml:MultiPolygonPropertyType";
+  if (buffer_cmp(type, "MULTIPOLYGON") && gml_version >= 311) return "gml:MultiSurfacePropertyType";
+  if (buffer_cmp(type, "TIN")) return "gml:TriangulatedSurfacePropertyType";
+  if (buffer_cmp(type, "POLYHEDRALSURFACE")) return "gml:PolyhedralSurfacePropertyType";
+  if (buffer_cmp(type, "GEOMETRYCOLLECTION")) return "gml:MultiGeometryPropertyType";
+
+  return "string";
 }
 
 
@@ -352,22 +509,22 @@ char *ows_psql_to_xsd(buffer * type, ows_version *version)
  */
 buffer *ows_psql_timestamp_to_xml_time(char *timestamp)
 {
-    buffer *time;
+  buffer *time;
 
-    assert(timestamp);
+  assert(timestamp);
 
-    time = buffer_init();
-    buffer_add_str(time, timestamp);
-    if (!time->use) return time;
+  time = buffer_init();
+  buffer_add_str(time, timestamp);
+  if (!time->use) return time;
 
-    buffer_replace(time, " ", "T");
+  buffer_replace(time, " ", "T");
 
-    if (check_regexp(time->buf, "\\+"))
-        buffer_add_str(time, ":00");
-    else
-        buffer_add_str(time, "Z");
+  if (check_regexp(time->buf, "\\+"))
+    buffer_add_str(time, ":00");
+  else
+    buffer_add_str(time, "Z");
 
-    return time;
+  return time;
 }
 
 
@@ -376,20 +533,20 @@ buffer *ows_psql_timestamp_to_xml_time(char *timestamp)
  */
 buffer *ows_psql_type(ows * o, buffer * layer_name, buffer * property)
 {
-    ows_layer_node *ln;
+  ows_layer_node *ln;
 
-    assert(o);
-    assert(o->layers);
-    assert(layer_name);
-    assert(property);
+  assert(o);
+  assert(o->layers);
+  assert(layer_name);
+  assert(property);
 
-    for (ln = o->layers->first ; ln ; ln = ln->next) {
-        if (ln->layer->name && ln->layer->storage
-            && !strcmp(ln->layer->name->buf, layer_name->buf))
-            return array_get(ln->layer->storage->attributes, property->buf);
-    }
+  for (ln = o->layers->first ; ln ; ln = ln->next) {
+    if (ln->layer->name && ln->layer->storage
+        && !strcmp(ln->layer->name->buf, layer_name->buf))
+      return array_get(ln->layer->storage->attributes, property->buf);
+  }
 
-    return NULL;
+  return NULL;
 }
 
 
@@ -398,80 +555,101 @@ buffer *ows_psql_type(ows * o, buffer * layer_name, buffer * property)
  */
 buffer *ows_psql_generate_id(ows * o, buffer * layer_name)
 {
-    ows_layer_node *ln;
-    buffer * id, *sql_id;
-    FILE *fp;
-    PGresult * res;
-    int i, seed_len;
-    char * seed = NULL;
-
-    assert(o);
-    assert(o->layers);
-    assert(layer_name);
-
-    /* Retrieve layer node pointer */
-    for (ln = o->layers->first ; ln ; ln = ln->next) {
-        if (ln->layer->name && ln->layer->storage
-            && !strcmp(ln->layer->name->buf, layer_name->buf)) break;
+  ows_layer_node *ln;
+  buffer * id, *sql_id;
+  FILE *fp;
+  PGresult * res;
+  int i, seed_len;
+  char * seed = NULL;
+
+  assert(o);
+  assert(o->layers);
+  assert(layer_name);
+
+  /* Retrieve layer node pointer */
+  for (ln = o->layers->first ; ln ; ln = ln->next) {
+    if (ln->layer->name && ln->layer->storage
+        && !strcmp(ln->layer->name->buf, layer_name->buf)) break;
+  }
+  assert(ln);
+
+  id = buffer_init();
+
+  /* If PK have a sequence in PostgreSQL database,
+   * retrieve next available sequence value
+   */
+  if (ln->layer->storage->pkey_sequence) {
+    sql_id = buffer_init();
+    buffer_add_str(sql_id, "SELECT nextval('");
+    buffer_copy(sql_id, ln->layer->storage->pkey_sequence);
+    buffer_add_str(sql_id, "');");
+    res = ows_psql_exec(o, sql_id->buf);
+    buffer_free(sql_id);
+
+    if (PQresultStatus(res) == PGRES_TUPLES_OK && PQntuples(res) == 1) {
+      buffer_add_str(id, (char *) PQgetvalue(res, 0, 0));
+      PQclear(res);
+      return id;
+    }
+
+    /* FIXME: Shouldn't we return an error there instead ? */
+    PQclear(res);
+  }
+
+  /* If PK have a DEFAULT in PostgreSQL database,
+   * retrieve next available DEFAULT value
+   */
+  if (ln->layer->storage->pkey_default) {
+    sql_id = buffer_init();
+    buffer_add_str(sql_id, "SELECT ");
+    buffer_copy(sql_id, ln->layer->storage->pkey_default);
+    buffer_add_str(sql_id, ";");
+    res = ows_psql_exec(o, sql_id->buf);
+    buffer_free(sql_id);
+
+    if (PQresultStatus(res) == PGRES_TUPLES_OK && PQntuples(res) == 1) {
+      buffer_add_str(id, (char *) PQgetvalue(res, 0, 0));
+      PQclear(res);
+      return id;
     }
-    assert(ln);
-
-    id = buffer_init();
-
-    /* If PK have a sequence in PostgreSQL database,
-     * retrieve next available sequence value
-     */
-     if (ln->layer->storage->pkey_sequence) {
-         sql_id = buffer_init();
-         buffer_add_str(sql_id, "SELECT nextval('");
-         buffer_copy(sql_id, ln->layer->storage->pkey_sequence);
-         buffer_add_str(sql_id, "');");
-         res = ows_psql_exec(o, sql_id->buf);
-         buffer_free(sql_id);
-
-         if (PQresultStatus(res) == PGRES_TUPLES_OK && PQntuples(res) == 1) {
-             buffer_add_str(id, (char *) PQgetvalue(res, 0, 0));
-             PQclear(res);
-             return id;
-         }
-
-         /* FIXME: Shouldn't we return an error there instead ? */
-         PQclear(res);
-     } 
-     
-     /*
-      * If we don't have a PostgreSQL Sequence, we will try to 
-      * generate a pseudo random keystring using /dev/urandom
-      * Will so work only on somes/commons Unix system
-      */
-     seed_len = 6;
-     seed = malloc(sizeof(char) * (seed_len * 3 + 1));  /* multiply by 3 to be able to deal
-                                                           with hex2dec conversion */ 
-     assert(seed);
-     seed[0] = '\0';
-
-     fp = fopen("/dev/urandom","r");
-     if (fp) {
-         for (i=0 ; i<seed_len ; i++)
-             sprintf(seed,"%s%03d", seed, fgetc(fp));
-         fclose(fp);
-         buffer_add_str(id, seed);
-         free(seed);
-
-         return id;
-     } 
-     free(seed);
-
-    /* Case where we not using PostgreSQL sequence, 
-     * and OS don't have a /dev/urandom support
-     * This case don't prevent to produce ID collision
-     * Don't use it unless really no others choices !!!
-     */
-     srand((int) (time(NULL) ^ rand() % 1000) + 42); 
-     srand((rand() % 1000 ^ rand() % 1000) + 42); 
-     buffer_add_int(id, rand());
-
-     return id;
+
+    /* FIXME: Shouldn't we return an error there instead ? */
+    PQclear(res);
+  }
+
+  /*
+   * If we don't have a PostgreSQL Sequence, we will try to
+   * generate a pseudo random keystring using /dev/urandom
+   * Will so work only on somes/commons Unix system
+   */
+  seed_len = 6;
+  seed = malloc(sizeof(char) * (seed_len * 3 + 1));  /* multiply by 3 to be able to deal
+                                                           with hex2dec conversion */
+  assert(seed);
+  seed[0] = '\0';
+
+  fp = fopen("/dev/urandom","r");
+  if (fp) {
+    for (i=0 ; i<seed_len ; i++)
+      sprintf(seed,"%s%03d", seed, fgetc(fp));
+    fclose(fp);
+    buffer_add_str(id, seed);
+    free(seed);
+
+    return id;
+  }
+  free(seed);
+
+  /* Case where we not using PostgreSQL sequence,
+   * and OS don't have a /dev/urandom support
+   * This case don't prevent to produce ID collision
+   * Don't use it unless really no others choices !!!
+   */
+  srand((int) (time(NULL) ^ rand() % 1000) + 42);
+  srand((rand() % 1000 ^ rand() % 1000) + 42);
+  buffer_add_int(id, rand());
+
+  return id;
 }
 
 
@@ -480,86 +658,90 @@ buffer *ows_psql_generate_id(ows * o, buffer * layer_name)
  */
 int ows_psql_number_features(ows * o, list * from, list * where)
 {
-    buffer *sql;
-    PGresult *res;
-    list_node *ln_from, *ln_where;
-    int nb;
-
-    assert(o);
-    assert(from);
-    assert(where);
-
-    nb = 0;
-
-    /* checks if from list and where list have the same size */
-    if (from->size != where->size) return nb;
-
-
-    for (ln_from = from->first, ln_where = where->first; 
-	 ln_from;
-         ln_from = ln_from->next, ln_where = ln_where->next) {
-             sql = buffer_init();
-
-             /* execute the request */
-             buffer_add_str(sql, "SELECT count(*) FROM \"");
-             buffer_copy(sql, ln_from->value);
-             buffer_add_str(sql, "\" ");
-             buffer_copy(sql, ln_where->value);
-             res = ows_psql_exec(o, sql->buf);
-             buffer_free(sql);
-
-             if (PQresultStatus(res) != PGRES_TUPLES_OK) {
-                 PQclear(res);
-                 return -1;
-             }
-             nb = nb + atoi(PQgetvalue(res, 0, 0));
-             PQclear(res);
-     }
-
-    return nb;
+  buffer *sql;
+  PGresult *res;
+  list_node *ln_from, *ln_where;
+  int nb;
+
+  assert(o);
+  assert(from);
+  assert(where);
+
+  nb = 0;
+
+  /* checks if from list and where list have the same size */
+  if (from->size != where->size) return nb;
+
+
+  for (ln_from = from->first, ln_where = where->first;
+       ln_from;
+       ln_from = ln_from->next, ln_where = ln_where->next) {
+    sql = buffer_init();
+
+    /* execute the request */
+    buffer_add_str(sql, "SELECT count(*) FROM \"");
+    buffer_copy(sql, ln_from->value);
+    buffer_add_str(sql, "\" ");
+    buffer_copy(sql, ln_where->value);
+    res = ows_psql_exec(o, sql->buf);
+    buffer_free(sql);
+
+    if (PQresultStatus(res) != PGRES_TUPLES_OK) {
+      PQclear(res);
+      return -1;
+    }
+    nb = nb + atoi(PQgetvalue(res, 0, 0));
+    PQclear(res);
+  }
+
+  return nb;
 }
 
 
 static xmlNodePtr ows_psql_recursive_parse_gml(ows * o, xmlNodePtr n, xmlNodePtr result)
 {
-    xmlNodePtr c;
-
-    assert(o);
-    assert(n);
-
-    if (result) return result;  /* avoid recursive loop */
-
-    /* We are looking for the geometry part inside GML doc */
-    for (; n ; n = n->next) {
-
-        if (n->type != XML_ELEMENT_NODE) continue;
-
-        /* Check on namespace GML 3 and GML 3.2 */
-	if (    strcmp("http://www.opengis.net/gml",     (char *) n->ns->href)
-             && strcmp("http://www.opengis.net/gml/3.2", (char *) n->ns->href)) continue;
-
-        /* GML SF Geometries Types */
-        if (   !strcmp((char *) n->name, "Point")
-            || !strcmp((char *) n->name, "LineString")
-            || !strcmp((char *) n->name, "LinearRing")
-            || !strcmp((char *) n->name, "Curve")
-            || !strcmp((char *) n->name, "Polygon")
-            || !strcmp((char *) n->name, "Surface")
-            || !strcmp((char *) n->name, "MultiPoint")
-            || !strcmp((char *) n->name, "MultiLineString")
-            || !strcmp((char *) n->name, "MultiCurve")
-            || !strcmp((char *) n->name, "MultiPolygon")
-            || !strcmp((char *) n->name, "MultiSurface")
-            || !strcmp((char *) n->name, "MultiGeometry")) return n;
-
-        /* Recursive exploration */
-        if (n->children)
-            for (c = n->children ; c ; c = c->next)
-                if ((result = ows_psql_recursive_parse_gml(o, c, NULL)))
-                    return result;
-    }
-
-    return NULL;
+  xmlNodePtr c;
+
+  assert(o);
+  assert(n);
+
+  if (result) return result;  /* avoid recursive loop */
+
+  /* We are looking for the geometry part inside GML doc */
+  for (; n ; n = n->next) {
+
+    if (n->type != XML_ELEMENT_NODE) continue;
+
+    /* Check on namespace GML 3 and GML 3.2 */
+    if (    strcmp("http://www.opengis.net/gml",     (char *) n->ns->href)
+         && strcmp("http://www.opengis.net/gml/3.2", (char *) n->ns->href)) continue;
+
+    /* GML SF Geometries Types */
+    if (   !strcmp((char *) n->name, "Point")
+        || !strcmp((char *) n->name, "LineString")
+        || !strcmp((char *) n->name, "LinearRing")
+        || !strcmp((char *) n->name, "Curve")
+        || !strcmp((char *) n->name, "Polygon")
+        || !strcmp((char *) n->name, "Triangle")
+        || !strcmp((char *) n->name, "Surface")
+        || !strcmp((char *) n->name, "MultiPoint")
+        || !strcmp((char *) n->name, "MultiLineString")
+        || !strcmp((char *) n->name, "MultiCurve")
+        || !strcmp((char *) n->name, "MultiPolygon")
+        || !strcmp((char *) n->name, "MultiSurface")
+        || !strcmp((char *) n->name, "PolyhedralSurface")
+        || !strcmp((char *) n->name, "Tin")
+        || !strcmp((char *) n->name, "TriangulatedSurface")
+        || !strcmp((char *) n->name, "MultiGeometry")) return n;
+
+    /* Recursive exploration */
+    if (n->children)
+      for (c = n->children ; c ; c = c->next)
+        if ((result = ows_psql_recursive_parse_gml(o, c, NULL)))
+          return result;
+  }
+
+  return NULL;
 }
 
 
@@ -569,94 +751,94 @@ static xmlNodePtr ows_psql_recursive_parse_gml(ows * o, xmlNodePtr n, xmlNodePtr
  */
 buffer * ows_psql_gml_to_sql(ows * o, xmlNodePtr n, int srid)
 {
-    PGresult *res;
-    xmlNodePtr g;
-    buffer *result, *sql, *gml;
+  PGresult *res;
+  xmlNodePtr g;
+  buffer *result, *sql, *gml;
+
+  assert(o);
+  assert(n);
+
+  g = ows_psql_recursive_parse_gml(o, n, NULL);
+  if (!g) return NULL;    /* No Geometry founded in GML doc */
+
+  /* Retrieve the sub doc and launch GML parse via PostGIS */
+  gml = buffer_init();
+  cgi_add_xml_into_buffer(gml, g);
+
+  sql = buffer_init();
+  buffer_add_str(sql, "SELECT ST_GeomFromGML('");
+  buffer_add_str(sql, gml->buf);
+
+  if (ows_version_get(o->postgis_version) >= 200) {
+    buffer_add_str(sql, "',");
+    buffer_add_int(sql, srid);
+    buffer_add_str(sql, ")");
+  } else {
+    /* Means PostGIS 1.5 */
+    buffer_add_str(sql, "')");
+  }
+
+  res = ows_psql_exec(o, sql->buf);
+  buffer_free(gml);
+
+  /* GML Parse errors cases */
+  if (PQresultStatus(res) != PGRES_TUPLES_OK || PQntuples(res) != 1) {
+    buffer_free(sql);
+    PQclear(res);
+    return NULL;
+  }
 
-    assert(o);
-    assert(n);
+  result = buffer_init();
+  buffer_add_str(result, PQgetvalue(res, 0, 0));
+  PQclear(res);
 
-    g = ows_psql_recursive_parse_gml(o, n, NULL);
-    if (!g) return NULL;    /* No Geometry founded in GML doc */
+  /* Check if geometry is valid */
+  if (o->check_valid_geom) {
 
-    /* Retrieve the sub doc and launch GML parse via PostGIS */
-    gml = buffer_init();
-    cgi_add_xml_into_buffer(gml, g);
-    
-    sql = buffer_init();
-    buffer_add_str(sql, "SELECT ST_GeomFromGML('");
-    buffer_add_str(sql, gml->buf);
-
-    if (ows_version_get(o->postgis_version) >= 200) {
-       buffer_add_str(sql, "',");
-       buffer_add_int(sql, srid);
-       buffer_add_str(sql, ")");
-    } else { 
-       /* Means PostGIS 1.5 */
-       buffer_add_str(sql, "')");
-    }
+    buffer_empty(sql);
+    buffer_add_str(sql, "SELECT ST_IsValid('");
+    buffer_add_str(sql, result->buf);
+    buffer_add_str(sql, "')");
 
     res = ows_psql_exec(o, sql->buf);
-    buffer_free(gml);
 
-    /* GML Parse errors cases */
-    if (PQresultStatus(res) != PGRES_TUPLES_OK || PQntuples(res) != 1) {
-        buffer_free(sql);
-        PQclear(res);
-        return NULL;
+    if (    PQresultStatus(res) != PGRES_TUPLES_OK
+         || PQntuples(res) != 1
+         || (char) PQgetvalue(res, 0, 0)[0] !=  't') {
+      buffer_free(sql);
+      buffer_free(result);
+      PQclear(res);
+      return NULL;
     }
-
-    result = buffer_init();
-    buffer_add_str(result, PQgetvalue(res, 0, 0));
     PQclear(res);
+  }
 
-    /* Check if geometry is valid */
-    if (o->check_valid_geom) {
-
-        buffer_empty(sql);
-        buffer_add_str(sql, "SELECT ST_IsValid('");
-        buffer_add_str(sql, result->buf);
-        buffer_add_str(sql, "')");
-
-        res = ows_psql_exec(o, sql->buf);
-
-        if (    PQresultStatus(res) != PGRES_TUPLES_OK
-             || PQntuples(res) != 1
-             || (char) PQgetvalue(res, 0, 0)[0] !=  't') {
-            buffer_free(sql);
-            buffer_free(result);
-            PQclear(res);
-            return NULL;
-        }
-        PQclear(res);
-    }
+  buffer_free(sql);
 
-    buffer_free(sql);
- 
-    return result;
+  return result;
 }
 
 
-/* 
+/*
  * Use PostgreSQL native handling to escape string
  * string returned must be freed by the caller
  * return NULL on error
  */
 char *ows_psql_escape_string(ows *o, const char *content)
 {
-    char *content_escaped;
-    int error = 0;
+  char *content_escaped;
+  int error = 0;
 
-    assert(o);
-    assert(o->pg);
-    assert(content);
+  assert(o);
+  assert(o->pg);
+  assert(content);
 
-    content_escaped = malloc(strlen(content) * 2 + 1);
-    PQescapeStringConn(o->pg, content_escaped, content, strlen(content), &error);
-    
-    if (error != 0) return NULL;
+  content_escaped = malloc(strlen(content) * 2 + 1);
+  PQescapeStringConn(o->pg, content_escaped, content, strlen(content), &error);
 
-    return content_escaped;
+  if (error != 0) return NULL;
+
+  return content_escaped;
 }
 
 
@@ -665,27 +847,27 @@ char *ows_psql_escape_string(ows *o, const char *content)
  */
 int ows_psql_geometry_srid(ows *o, const char *geom)
 {
-    int srid;
-    buffer *sql;
-    PGresult *res;
-    
-    assert(o);
-    assert(o->pg);
-    assert(geom);
-
-    sql = buffer_from_str("SELECT ST_SRID('");
-    buffer_add_str(sql, geom);
-    buffer_add_str(sql, "'::geometry)");
+  int srid;
+  buffer *sql;
+  PGresult *res;
 
-    res = ows_psql_exec(o, sql->buf);
+  assert(o);
+  assert(o->pg);
+  assert(geom);
 
-    if (PQresultStatus(res) != PGRES_TUPLES_OK || PQntuples(res) != 1) srid = -1;
-    else srid = atoi((char *) PQgetvalue(res, 0, 0));
+  sql = buffer_from_str("SELECT ST_SRID('");
+  buffer_add_str(sql, geom);
+  buffer_add_str(sql, "'::geometry)");
 
-    buffer_free(sql);
-    PQclear(res);
+  res = ows_psql_exec(o, sql->buf);
+
+  if (PQresultStatus(res) != PGRES_TUPLES_OK || PQntuples(res) != 1) srid = -1;
+  else srid = atoi((char *) PQgetvalue(res, 0, 0));
+
+  buffer_free(sql);
+  PQclear(res);
 
-    return srid;
+  return srid;
 }
 
 
diff --git a/src/ows/ows_request.c b/src/ows/ows_request.c
index ad302af..e97be9a 100644
--- a/src/ows/ows_request.c
+++ b/src/ows/ows_request.c
@@ -38,16 +38,16 @@
  */
 ows_request *ows_request_init()
 {
-    ows_request *or;
-    or = malloc(sizeof(ows_request));
-    assert(or);
+  ows_request *or;
+  or = malloc(sizeof(ows_request));
+  assert(or);
 
-    or->version = NULL;
-    or->service = OWS_SERVICE_UNKNOWN;
-    or->method = OWS_METHOD_UNKNOWN;
-    or->request.wfs = NULL;
+  or->version = NULL;
+  or->service = OWS_SERVICE_UNKNOWN;
+  or->method = OWS_METHOD_UNKNOWN;
+  or->request.wfs = NULL;
 
-    return or;
+  return or;
 }
 
 
@@ -56,21 +56,22 @@ ows_request *ows_request_init()
  */
 void ows_request_free(ows_request * or)
 {
-    assert(or);
-
-    if (or->version) ows_version_free(or->version);
-
-    switch (or->service) {
-        case WFS:
-            if (or->request.wfs) wfs_request_free(or->request.wfs);
-            break;
-        case OWS_SERVICE_UNKNOWN:
-            break;
-        default: assert(0); /* Should not happen */
-    }
-
-    free(or);
-    or = NULL;
+  assert(or);
+
+  if (or->version) ows_version_free(or->version);
+
+  switch (or->service) {
+    case WFS:
+      if (or->request.wfs) wfs_request_free(or->request.wfs);
+      break;
+    case OWS_SERVICE_UNKNOWN:
+      break;
+    default:
+      assert(0); /* Should not happen */
+  }
+
+  free(or);
+  or = NULL;
 }
 
 
@@ -81,17 +82,17 @@ void ows_request_free(ows_request * or)
  */
 void ows_request_flush(ows_request * or, FILE * output)
 {
-    assert(or);
-    assert(output);
+  assert(or);
+  assert(output);
 
-    fprintf(output, "method:%d\n", or->method);
-    fprintf(output, "service:%d\n", or->service);
+  fprintf(output, "method:%d\n", or->method);
+  fprintf(output, "service:%d\n", or->service);
 
-    if (or->version) {
-        fprintf(output, "version:");
-        ows_version_flush(or->version, output);
-        fprintf(output, "\n");
-    }
+  if (or->version) {
+    fprintf(output, "version:");
+    ows_version_flush(or->version, output);
+    fprintf(output, "\n");
+  }
 }
 #endif
 
@@ -100,49 +101,50 @@ void ows_request_flush(ows_request * or, FILE * output)
  * Simple callback used to catch error and warning from libxml2 schema
  * validation
  */
-static void libxml2_callback  (void * ctx, const char * msg, ...) {
-    va_list varg;
-    char * str;
-    ows *o;
+static void libxml2_callback  (void * ctx, const char * msg, ...)
+{
+  va_list varg;
+  char * str;
+  ows *o;
 
-    o = (ows *) ctx;
-    va_start(varg, msg);
-    str = (char *)va_arg( varg, char *);
-    ows_log(o, 1, str);
+  o = (ows *) ctx;
+  va_start(varg, msg);
+  str = (char *)va_arg( varg, char *);
+  ows_log(o, 1, str);
 
 #ifdef OWS_DEBUG
-    fprintf(stderr, "%s", str);
+  fprintf(stderr, "%s", str);
 #endif
 }
 
 
 static xmlSchemaPtr ows_generate_schema(const ows *o, buffer * xml_schema, bool schema_is_file)
 {
-    xmlSchemaParserCtxtPtr ctxt;
-    xmlSchemaPtr schema = NULL;
+  xmlSchemaParserCtxtPtr ctxt;
+  xmlSchemaPtr schema = NULL;
 
-    assert(o);
-    assert(xml_schema);
+  assert(o);
+  assert(xml_schema);
 
-    /* Open XML Schema File */
-    if (schema_is_file) ctxt = xmlSchemaNewParserCtxt(xml_schema->buf);
-    else                ctxt = xmlSchemaNewMemParserCtxt(xml_schema->buf, xml_schema->use);
+  /* Open XML Schema File */
+  if (schema_is_file) ctxt = xmlSchemaNewParserCtxt(xml_schema->buf);
+  else                ctxt = xmlSchemaNewMemParserCtxt(xml_schema->buf, xml_schema->use);
 
-    xmlSchemaSetParserErrors(ctxt,
-                             (xmlSchemaValidityErrorFunc) libxml2_callback,
-                             (xmlSchemaValidityWarningFunc) libxml2_callback,
-                             (void *) o);
+  xmlSchemaSetParserErrors(ctxt,
+                           (xmlSchemaValidityErrorFunc) libxml2_callback,
+                           (xmlSchemaValidityWarningFunc) libxml2_callback,
+                           (void *) o);
 
-    schema = xmlSchemaParse(ctxt);
-    xmlSchemaFreeParserCtxt(ctxt);
+  schema = xmlSchemaParse(ctxt);
+  xmlSchemaFreeParserCtxt(ctxt);
 
-    /* If XML Schema hasn't been rightly loaded */
-    if (!schema) {
-        xmlSchemaCleanupTypes();
-	return NULL;
-    }
+  /* If XML Schema hasn't been rightly loaded */
+  if (!schema) {
+    xmlSchemaCleanupTypes();
+    return NULL;
+  }
 
-    return schema;
+  return schema;
 }
 
 
@@ -151,53 +153,53 @@ static xmlSchemaPtr ows_generate_schema(const ows *o, buffer * xml_schema, bool
  */
 int ows_schema_validation(ows *o, buffer *xml_schema, buffer *xml, bool schema_is_file, enum ows_schema_type schema_type)
 {
-    xmlSchemaPtr schema;
-    xmlSchemaValidCtxtPtr schema_ctx;
-    xmlDocPtr doc;
-    int ret = -1;
-    bool schema_generate = true;
-
-    assert(o);
-    assert(xml);
-    assert(xml_schema);
-
-    doc = xmlParseMemory(xml->buf, xml->use);
-    if (!doc) return ret;
-    if (!ows_libxml_check_namespace(o, doc->children)) {
-        xmlFreeDoc(doc);
-        return ret;
-    }
-
-    if (schema_type == WFS_SCHEMA_TYPE_100 && o->schema_wfs_100) {
-	schema_generate = false;
-	schema = o->schema_wfs_100;
-    } else if (schema_type == WFS_SCHEMA_TYPE_110 && o->schema_wfs_110) {
-	schema_generate = false;
-	schema = o->schema_wfs_110;
-    }
-
-    if (schema_generate) schema = ows_generate_schema(o, xml_schema, schema_is_file);
-    if (!schema) {
-        xmlFreeDoc(doc);
-        return ret;
-    }
-
-    schema_ctx = xmlSchemaNewValidCtxt(schema);
-    xmlSchemaSetValidErrors(schema_ctx,
-                            (xmlSchemaValidityErrorFunc) libxml2_callback,
-                            (xmlSchemaValidityWarningFunc) libxml2_callback, (void *) o);
-    if (schema_ctx) { 
-        ret = xmlSchemaValidateDoc(schema_ctx, doc); /* validation */
-        xmlSchemaFreeValidCtxt(schema_ctx);
-    }
+  xmlSchemaPtr schema;
+  xmlSchemaValidCtxtPtr schema_ctx;
+  xmlDocPtr doc;
+  int ret = -1;
+  bool schema_generate = true;
+
+  assert(o);
+  assert(xml);
+  assert(xml_schema);
+
+  doc = xmlParseMemory(xml->buf, xml->use);
+  if (!doc) return ret;
+  if (!ows_libxml_check_namespace(o, doc->children)) {
+    xmlFreeDoc(doc);
+    return ret;
+  }
+
+  if (schema_type == WFS_SCHEMA_TYPE_100 && o->schema_wfs_100) {
+    schema_generate = false;
+    schema = o->schema_wfs_100;
+  } else if (schema_type == WFS_SCHEMA_TYPE_110 && o->schema_wfs_110) {
+    schema_generate = false;
+    schema = o->schema_wfs_110;
+  }
+
+  if (schema_generate) schema = ows_generate_schema(o, xml_schema, schema_is_file);
+  if (!schema) {
     xmlFreeDoc(doc);
-
-    if (schema_generate) {
-    	     if (schema_type == WFS_SCHEMA_TYPE_100) o->schema_wfs_100 = schema;
-        else if (schema_type == WFS_SCHEMA_TYPE_110) o->schema_wfs_110 = schema;
-    } 
-
     return ret;
+  }
+
+  schema_ctx = xmlSchemaNewValidCtxt(schema);
+  xmlSchemaSetValidErrors(schema_ctx,
+                          (xmlSchemaValidityErrorFunc) libxml2_callback,
+                          (xmlSchemaValidityWarningFunc) libxml2_callback, (void *) o);
+  if (schema_ctx) {
+    ret = xmlSchemaValidateDoc(schema_ctx, doc); /* validation */
+    xmlSchemaFreeValidCtxt(schema_ctx);
+  }
+  xmlFreeDoc(doc);
+
+  if (schema_generate) {
+    if (schema_type == WFS_SCHEMA_TYPE_100) o->schema_wfs_100 = schema;
+    else if (schema_type == WFS_SCHEMA_TYPE_110) o->schema_wfs_110 = schema;
+  }
+
+  return ret;
 }
 
 
@@ -206,51 +208,51 @@ int ows_schema_validation(ows *o, buffer *xml_schema, buffer *xml, bool schema_i
  */
 static ows_version *ows_request_check_version(ows * o, ows_request * or, const array * cgi)
 {
-    buffer *b;
-    ows_version *v;
-    list *l = NULL;
-
-    assert(o);
-    assert(or);
-    assert(cgi);
-
-    v = or->version;
-    b = array_get(cgi, "version");
-
-    if (buffer_cmp(b, "")) ows_version_set(o->request->version, 0, 0, 0);
-    else {
-        /* check if version format is x.y.z */
-        if (b->use < 5) {
-            ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE,
-                      "VERSION parameter is not valid (use x.y.z)", "version");
-	    return v;
-        }
-
-        l = list_explode('.', b);
-        if (l->size != 3) {
-            list_free(l);
-            ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE,
-                      "VERSION parameter is not valid (use x.y.z)", "version");
-            return v;
-        }
+  buffer *b;
+  ows_version *v;
+  list *l = NULL;
+
+  assert(o);
+  assert(or);
+  assert(cgi);
+
+  v = or->version;
+  b = array_get(cgi, "version");
+
+  if (buffer_cmp(b, "")) ows_version_set(o->request->version, 0, 0, 0);
+  else {
+    /* check if version format is x.y.z */
+    if (b->use < 5) {
+      ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE,
+                "VERSION parameter is not valid (use x.y.z)", "version");
+      return v;
+    }
 
-        if (    check_regexp(l->first->value->buf, "^[0-9]+$")
-             && check_regexp(l->first->next->value->buf, "^[0-9]+$")
-             && check_regexp(l->first->next->next->value->buf, "^[0-9]+$")) {
-            v->major = atoi(l->first->value->buf);
-            v->minor = atoi(l->first->next->value->buf);
-            v->release = atoi(l->first->next->next->value->buf);
-        } else {
-            list_free(l);
-            ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE,
-                      "VERSION parameter is not valid (use x.y.z)", "version");
-            return v;
-        }
+    l = list_explode('.', b);
+    if (l->size != 3) {
+      list_free(l);
+      ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE,
+                "VERSION parameter is not valid (use x.y.z)", "version");
+      return v;
+    }
 
-        list_free(l);
+    if (    check_regexp(l->first->value->buf, "^[0-9]+$")
+         && check_regexp(l->first->next->value->buf, "^[0-9]+$")
+         && check_regexp(l->first->next->next->value->buf, "^[0-9]+$")) {
+      v->major = atoi(l->first->value->buf);
+      v->minor = atoi(l->first->next->value->buf);
+      v->release = atoi(l->first->next->next->value->buf);
+    } else {
+      list_free(l);
+      ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE,
+                "VERSION parameter is not valid (use x.y.z)", "version");
+      return v;
     }
 
-    return v;
+    list_free(l);
+  }
+
+  return v;
 }
 
 
@@ -260,159 +262,151 @@ static ows_version *ows_request_check_version(ows * o, ows_request * or, const a
  */
 void ows_request_check(ows * o, ows_request * or, const array * cgi, const char *query)
 {
-    list_node *srid;
-    buffer *typename, *xmlstring, *schema, *b=NULL;
-    ows_layer_node *ln = NULL;
-    bool srsname = false;
-    int valid = 0;
-
-    assert(o);
-    assert(or);
-    assert(cgi);
-    assert(query);
-
-    /* check if SERVICE is set */
-    if (!array_is_key(cgi, "service")) {
-        /* Tests WFS 1.1.0 require a default value for requests
-           encoded in XML if service is not set */
-        if (cgi_method_get()) {
-            ows_error(o, OWS_ERROR_MISSING_PARAMETER_VALUE, "SERVICE is not set", "SERVICE");
-            return;
-        } else {
-            if (buffer_case_cmp(o->metadata->type, "WFS"))
-                or->service = WFS;
-            else {
-                ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "service unknown", "service");
-                return;
-            }
-        }
+  list_node *srid;
+  buffer *typename, *xmlstring, *schema, *b=NULL;
+  ows_layer_node *ln = NULL;
+  bool srsname = false;
+  int valid = 0;
+
+  assert(o && or && cgi && query);
+
+  /* check if SERVICE is set */
+  if (!array_is_key(cgi, "service")) {
+    /* Tests WFS 1.1.0 require a default value for requests
+       encoded in XML if service is not set */
+    if (cgi_method_get()) {
+      ows_error(o, OWS_ERROR_MISSING_PARAMETER_VALUE, "SERVICE is not set", "SERVICE");
+      return;
     } else {
-        b = array_get(cgi, "service");
-
-        if (buffer_case_cmp(b, "WFS"))
-            or->service = WFS;
-        else if (buffer_case_cmp(b, "")) {
-            if (buffer_case_cmp(o->metadata->type, "WFS"))
-                or->service = WFS;
-            else { 
-                ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "service unknown", "service");
-                return;
-            }
-        } else {
-                ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "service unknown", "service");
-                return;
-        }
+      if (buffer_case_cmp(o->metadata->type, "WFS"))
+        or->service = WFS;
+      else {
+        ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "SERVICE Unknown", "SERVICE");
+        return;
+      }
+    }
+  } else {
+    b = array_get(cgi, "service");
+
+    if (buffer_case_cmp(b, "WFS"))
+      or->service = WFS;
+    else if (buffer_case_cmp(b, "")) {
+      if (buffer_case_cmp(o->metadata->type, "WFS"))
+        or->service = WFS;
+      else {
+        ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "SERVICE Unknown", "SERVICE");
+        return;
+      }
+    } else {
+      ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "SERVICE unknown", "SERVICE");
+      return;
     }
+  }
 
 
-    /* check if REQUEST is set */
-    if (!array_is_key(cgi, "request")) {
-        ows_error(o, OWS_ERROR_MISSING_PARAMETER_VALUE, "REQUEST is not set", "REQUEST");
-        return;
-    } else b = array_get(cgi, "request");
-
-    /* check if VERSION is set and init Version */
-    or->version = ows_version_init();
-
-    if (!array_is_key(cgi, "version") || buffer_cmp(array_get(cgi, "version"), "")) {
-        if (!buffer_case_cmp(b, "GetCapabilities")) {
-            /* WFS 1.1.0 with KVP need a version set */
-            if (o->request->method == OWS_METHOD_KVP) {
-                ows_error(o, OWS_ERROR_MISSING_PARAMETER_VALUE, "VERSION is not set", "VERSION");
-                return;
-            }
-            /* WFS 1.1.0 require a default value for requests
-               encoded in XML if version is not set */
-            else if (o->request->method == OWS_METHOD_XML) {
-                if (or->service == WFS) ows_version_set(o->request->version, 1, 1, 0);
-            }
-        }
-    } else or->version = ows_request_check_version(o, or, cgi);
+  /* check if REQUEST is set */
+  if (!array_is_key(cgi, "request")) {
+    ows_error(o, OWS_ERROR_MISSING_PARAMETER_VALUE, "REQUEST is not set", "REQUEST");
+    return;
+  } else b = array_get(cgi, "request");
 
-    /* check if layers have name or title and srs */
-    for (ln = o->layers->first ; ln ; ln = ln->next) {
+  /* check if VERSION is set and init Version */
+  or->version = ows_version_init();
 
-        if (!ln->layer->name) {
-            ows_error(o, OWS_ERROR_CONFIG_FILE, "No layer name defined", "config_file");
-            return;
-        }
+  if (!array_is_key(cgi, "version") || buffer_cmp(array_get(cgi, "version"), "")) {
+    if (!buffer_case_cmp(b, "GetCapabilities")) {
+      /* WFS 1.1.0 with KVP need a version set */
+      if (o->request->method == OWS_METHOD_KVP) {
+        ows_error(o, OWS_ERROR_MISSING_PARAMETER_VALUE, "VERSION is not set", "VERSION");
+        return;
+      }
+      /* WFS 1.1.0 require a default value for requests
+         encoded in XML if version is not set */
+      else if (o->request->method == OWS_METHOD_XML) {
+        if (or->service == WFS) ows_version_set(o->request->version, 1, 1, 0);
+      }
+    }
+  } else or->version = ows_request_check_version(o, or, cgi);
 
-        if (!ows_layer_match_table(o, ln->layer->name)) continue;
+  /* check if layers have name or title and srs */
+  for (ln = o->layers->first ; ln ; ln = ln->next) {
 
-        if (!ln->layer->title) {
-            ows_error(o, OWS_ERROR_CONFIG_FILE, "No layer title defined", "config_file");
-            return;
-        }
+    if (!ln->layer->name) {
+      ows_error(o, OWS_ERROR_CONFIG_FILE, "No layer name defined", "config_file");
+      return;
+    }
 
-        if (or->service == WFS) {
-            if (!ln->layer->ns_prefix->use) {
-                ows_error(o, OWS_ERROR_CONFIG_FILE, "No layer NameSpace prefix defined", "config_file");
-                return;
-            }
+    if (!ows_layer_match_table(o, ln->layer->name)) continue;
 
-            if (!ln->layer->ns_uri->use) {
-                ows_error(o, OWS_ERROR_CONFIG_FILE, "No layer NameSpace URI defined", "config_file");
-                return;
-            }
-        }
+    if (!ln->layer->title) {
+      ows_error(o, OWS_ERROR_CONFIG_FILE, "No layer title defined", "config_file");
+      return;
+    }
 
-        if (ln->layer->srid) {
-            if (array_is_key(cgi, "srsname") && array_is_key(cgi, "typename")) {
-                b = array_get(cgi, "srsname");
-                typename = array_get(cgi, "typename");
-
-                if (buffer_cmp(typename, ln->layer->name->buf)) {
-                    if (    !check_regexp(b->buf, "^http://www.opengis.net")
-                         && !check_regexp(b->buf, "^EPSG")
-                         && !check_regexp(b->buf, "^urn:")) {
-                        ows_error(o, OWS_ERROR_CONFIG_FILE, "srsname isn't valid", "srsName");
-                        return;
-                    }
-
-                    for (srid = ln->layer->srid->first ; srid ; srid = srid->next) {
-                        if (check_regexp(b->buf, srid->value->buf)) srsname = true;
-                    }
-
-                    if (srsname == false) {
-                        ows_error(o, OWS_ERROR_CONFIG_FILE, "srsname doesn't match srid",
-                                  "config_file");
-                        return;
-                    }
-                }
-            }
-        }
+    if (or->service == WFS) {
+      if (!ln->layer->ns_prefix->use) {
+        ows_error(o, OWS_ERROR_CONFIG_FILE, "No layer NameSpace prefix defined", "config_file");
+        return;
+      }
+
+      if (!ln->layer->ns_uri->use) {
+        ows_error(o, OWS_ERROR_CONFIG_FILE, "No layer NameSpace URI defined", "config_file");
+        return;
+      }
     }
 
-    /* check XML Validity */
-    if ( (cgi_method_post() && (    !strcmp(getenv("CONTENT_TYPE"), "application/xml; charset=UTF-8")
-                                 || !strcmp(getenv("CONTENT_TYPE"), "application/xml")
-                                 || !strcmp(getenv("CONTENT_TYPE"), "text/xml")
-                                 || !strcmp(getenv("CONTENT_TYPE"), "text/plain"))) 
-         || (!cgi_method_post() && !cgi_method_get() && query[0] == '<') /* Unit test command line use case */ ) {
-
-        if (or->service == WFS && o->check_schema) {
-            xmlstring = buffer_from_str(query);
-
-            if (ows_version_get(or->version) == 100) {
-                schema = wfs_generate_schema(o, or->version);
-                valid = ows_schema_validation(o, schema, xmlstring, false, WFS_SCHEMA_TYPE_100);
-            } else {
-                schema = wfs_generate_schema(o, or->version);
-                valid = ows_schema_validation(o, schema, xmlstring, false, WFS_SCHEMA_TYPE_110);
-            }
-
-            buffer_free(schema);
-            buffer_free(xmlstring);
-            
-            if (valid != 0) {
-                ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "XML request isn't valid", "request");
-                return;
-            }
+    if (ln->layer->srid) {
+      if (array_is_key(cgi, "srsname") && array_is_key(cgi, "typename")) {
+        b = array_get(cgi, "srsname");
+        typename = array_get(cgi, "typename");
+
+        if (buffer_cmp(typename, ln->layer->name->buf)) {
+          if (    !check_regexp(b->buf, "^http://www.opengis.net")
+               && !check_regexp(b->buf, "^EPSG")
+               && !check_regexp(b->buf, "^urn:")
+               && !check_regexp(b->buf, "^spatialreferencing.org")) {
+            ows_error(o, OWS_ERROR_CONFIG_FILE, "srsname isn't valid", "srsName");
+            return;
+          }
+
+          for (srid = ln->layer->srid->first ; srid ; srid = srid->next) {
+            if (check_regexp(b->buf, srid->value->buf)) srsname = true;
+          }
+
+          if (srsname == false) {
+            ows_error(o, OWS_ERROR_CONFIG_FILE, "srsname doesn't match srid", "config_file");
+            return;
+          }
         }
+      }
+    }
+  }
+
+  /* check XML Validity */
+  if ( (cgi_method_post() && (    !strcmp(getenv("CONTENT_TYPE"), "application/xml; charset=UTF-8")
+                               || !strcmp(getenv("CONTENT_TYPE"), "application/xml")
+                               || !strcmp(getenv("CONTENT_TYPE"), "text/xml")
+                               || !strcmp(getenv("CONTENT_TYPE"), "text/plain")))
+       || (!cgi_method_post() && !cgi_method_get() && query[0] == '<') /* Unit test command line use case */ ) {
+
+    if (or->service == WFS && o->check_schema) {
+      xmlstring = buffer_from_str(query);
+
+      if (ows_version_get(or->version) == 100) {
+        schema = wfs_generate_schema(o, or->version);
+        valid = ows_schema_validation(o, schema, xmlstring, false, WFS_SCHEMA_TYPE_100);
+      } else {
+        schema = wfs_generate_schema(o, or->version);
+        valid = ows_schema_validation(o, schema, xmlstring, false, WFS_SCHEMA_TYPE_110);
+      }
+
+      buffer_free(schema);
+      buffer_free(xmlstring);
+
+      if (valid != 0) {
+        ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "XML request isn't valid", "request");
+        return;
+      }
     }
+  }
 }
-
-
-/*
- * vim: expandtab sw=4 ts=4
- */
diff --git a/src/ows/ows_srs.c b/src/ows/ows_srs.c
index 2873b47..97869c6 100644
--- a/src/ows/ows_srs.c
+++ b/src/ows/ows_srs.c
@@ -36,37 +36,37 @@
  */
 ows_srs *ows_srs_init()
 {
-    ows_srs *c;
+  ows_srs *c;
 
-    c = malloc(sizeof(ows_srs));
-    assert(c);
+  c = malloc(sizeof(ows_srs));
+  assert(c);
 
-    c->srid = -1;
-    c->auth_name = buffer_init();
-    c->auth_srid = 0;
-    c->is_degree = true;
-    c->is_reverse_axis = false;
-    c->is_eastern_axis = false;
-    c->is_long = false;
+  c->srid = -1;
+  c->auth_name = buffer_init();
+  c->auth_srid = 0;
+  c->is_degree = true;
+  c->is_reverse_axis = false;
+  c->is_eastern_axis = false;
+  c->is_long = false;
 
-    return c;
+  return c;
 }
 
 
 ows_srs *ows_srs_copy(ows_srs * d, ows_srs * s)
 {
-    assert(s);
-    assert(d);
-
-    d->srid = s->srid;
-    buffer_copy(d->auth_name, s->auth_name);
-    d->auth_srid = s->auth_srid;
-    d->is_degree = s->is_degree;
-    d->is_reverse_axis = s->is_reverse_axis;
-    d->is_eastern_axis = s->is_eastern_axis;
-    d->is_long = s->is_long;
-
-    return d;
+  assert(s);
+  assert(d);
+
+  d->srid = s->srid;
+  buffer_copy(d->auth_name, s->auth_name);
+  d->auth_srid = s->auth_srid;
+  d->is_degree = s->is_degree;
+  d->is_reverse_axis = s->is_reverse_axis;
+  d->is_eastern_axis = s->is_eastern_axis;
+  d->is_long = s->is_long;
+
+  return d;
 }
 
 
@@ -75,11 +75,11 @@ ows_srs *ows_srs_copy(ows_srs * d, ows_srs * s)
  */
 void ows_srs_free(ows_srs * c)
 {
-    assert(c);
+  assert(c);
 
-    buffer_free(c->auth_name);
-    free(c);
-    c = NULL;
+  buffer_free(c->auth_name);
+  free(c);
+  c = NULL;
 }
 
 
@@ -90,31 +90,31 @@ void ows_srs_free(ows_srs * c)
  */
 void ows_srs_flush(ows_srs * c, FILE * output)
 {
-    assert(c);
-    assert(output);
-
-    fprintf(output, "[\n");
-    fprintf(output, " srid: %i\n", c->srid);
-    fprintf(output, " auth_name: %s\n", c->auth_name->buf);
-    fprintf(output, " auth_srid: %i\n", c->auth_srid);
-
-    if (c->is_degree) fprintf(output, " is_degree: true\n]\n");
-    else              fprintf(output, " is_degree: false\n]\n");
-
-    if (c->is_reverse_axis)
-        fprintf(output, " is_reverse_axis: true\n]\n");
-    else
-        fprintf(output, " is_reverse_axis: false\n]\n");
-
-    if (c->is_eastern_axis)
-        fprintf(output, " is_eastern_axis: true\n]\n");
-    else
-        fprintf(output, " is_eastern_axis: false\n]\n");
-
-    if (c->is_long)
-        fprintf(output, " is_long: true\n]\n");
-    else
-        fprintf(output, " is_long: false\n]\n");
+  assert(c);
+  assert(output);
+
+  fprintf(output, "[\n");
+  fprintf(output, " srid: %i\n", c->srid);
+  fprintf(output, " auth_name: %s\n", c->auth_name->buf);
+  fprintf(output, " auth_srid: %i\n", c->auth_srid);
+
+  if (c->is_degree) fprintf(output, " is_degree: true\n]\n");
+  else              fprintf(output, " is_degree: false\n]\n");
+
+  if (c->is_reverse_axis)
+    fprintf(output, " is_reverse_axis: true\n]\n");
+  else
+    fprintf(output, " is_reverse_axis: false\n]\n");
+
+  if (c->is_eastern_axis)
+    fprintf(output, " is_eastern_axis: true\n]\n");
+  else
+    fprintf(output, " is_eastern_axis: false\n]\n");
+
+  if (c->is_long)
+    fprintf(output, " is_long: true\n]\n");
+  else
+    fprintf(output, " is_long: false\n]\n");
 }
 #endif
 
@@ -124,70 +124,70 @@ void ows_srs_flush(ows_srs * c, FILE * output)
  */
 bool ows_srs_set(ows * o, ows_srs * c, const buffer * auth_name, int auth_srid)
 {
-    PGresult *res;
-    buffer *sql;
-
-    assert(o);
-    assert(c);
-    assert(o->pg);
-    assert(auth_name);
-
-    sql = buffer_init();
-    buffer_add_str(sql, "SELECT srid, position('+units=m ' in proj4text)");
-    buffer_add_str(sql, ", (position('AXIS[\"X\",NORTH]]' in srtext) + position('AXIS[\"Easting\",EAST]]' in srtext))");
-    buffer_add_str(sql, " FROM spatial_ref_sys WHERE auth_name='");
-    buffer_copy(sql, auth_name);
-    buffer_add_str(sql, "' AND auth_srid=");
-    buffer_add_int(sql, auth_srid);
-
-    res = ows_psql_exec(o, sql->buf);
-    buffer_free(sql);
-
-    /* If query dont return exactly 1 result, it means projection is not handled */
-    if (PQresultStatus(res) != PGRES_TUPLES_OK || PQntuples(res) != 1) {
-        PQclear(res);
-        return false;
-    }
-
-    buffer_empty(c->auth_name);
-    buffer_copy(c->auth_name, auth_name);
-    c->auth_srid = auth_srid;
-
-    c->srid = atoi(PQgetvalue(res, 0, 0));
-
-    /* Such a way to know if units is meter or degree */
-    if (atoi(PQgetvalue(res, 0, 1)) == 0)
-        c->is_degree = true;
-    else
-        c->is_degree = false;
-
-    /* Is northing-easting SRID ? */
-    if (atoi(PQgetvalue(res, 0, 2)) != 0)
-        c->is_eastern_axis = true;
-
+  PGresult *res;
+  buffer *sql;
+
+  assert(o);
+  assert(c);
+  assert(o->pg);
+  assert(auth_name);
+
+  sql = buffer_init();
+  buffer_add_str(sql, "SELECT srid, position('+units=m ' in proj4text)");
+  buffer_add_str(sql, ", (position('AXIS[\"X\",NORTH]]' in srtext) + position('AXIS[\"Easting\",EAST]]' in srtext))");
+  buffer_add_str(sql, " FROM spatial_ref_sys WHERE auth_name='");
+  buffer_copy(sql, auth_name);
+  buffer_add_str(sql, "' AND auth_srid=");
+  buffer_add_int(sql, auth_srid);
+
+  res = ows_psql_exec(o, sql->buf);
+  buffer_free(sql);
+
+  /* If query dont return exactly 1 result, it means projection is not handled */
+  if (PQresultStatus(res) != PGRES_TUPLES_OK || PQntuples(res) != 1) {
     PQclear(res);
-    return true;
+    return false;
+  }
+
+  buffer_empty(c->auth_name);
+  buffer_copy(c->auth_name, auth_name);
+  c->auth_srid = auth_srid;
+
+  c->srid = atoi(PQgetvalue(res, 0, 0));
+
+  /* Such a way to know if units is meter or degree */
+  if (atoi(PQgetvalue(res, 0, 1)) == 0)
+    c->is_degree = true;
+  else
+    c->is_degree = false;
+
+  /* Is northing-easting SRID ? */
+  if (atoi(PQgetvalue(res, 0, 2)) != 0)
+    c->is_eastern_axis = true;
+
+  PQclear(res);
+  return true;
 }
 
 
-/* 
- * Aim is to avoid all pg connection, 
+/*
+ * Aim is to avoid all pg connection,
  * not a big deal as we already know values
  */
 bool ows_srs_set_geobbox(ows * o, ows_srs * s)
 {
-    assert(o);
-    assert(s);
-    
-    s->srid = 4326;
-    buffer_empty(s->auth_name);
-    buffer_add_str(s->auth_name, "EPSG");
-    s->auth_srid = 4326;
-    s->is_degree = true;
-    s->is_reverse_axis = false;
-    s->is_eastern_axis = false;
-
-    return true; 
+  assert(o);
+  assert(s);
+
+  s->srid = 4326;
+  buffer_empty(s->auth_name);
+  buffer_add_str(s->auth_name, "EPSG");
+  s->auth_srid = 4326;
+  s->is_degree = true;
+  s->is_reverse_axis = false;
+  s->is_eastern_axis = false;
+
+  return true;
 }
 
 
@@ -196,56 +196,56 @@ bool ows_srs_set_geobbox(ows * o, ows_srs * s)
  */
 bool ows_srs_set_from_srid(ows * o, ows_srs * s, int srid)
 {
-    PGresult *res;
-    buffer *sql;
-
-    assert(o);
-    assert(s);
-
-    if (srid == -1 || srid == 0) {
-        s->srid = -1;
-        buffer_empty(s->auth_name);
-        s->auth_srid = 0;
-        s->is_degree = true;
-	s->is_reverse_axis = false;
-        s->is_eastern_axis = false;
-
-        return true;
-    }
-
-    sql = buffer_init();
-    buffer_add_str(sql, "SELECT auth_name, auth_srid, ");
-    buffer_add_str(sql, "position('+units=m ' in proj4text), ");
-    buffer_add_str(sql, "(position('AXIS[\"X\",NORTH]]' in srtext) + position('AXIS[\"Easting\",EAST]]' in srtext)) ");
-    buffer_add_str(sql, "FROM spatial_ref_sys WHERE srid = '");
-    buffer_add_int(sql, srid);
-    buffer_add_str(sql, "'");
-
-    res = ows_psql_exec(o, sql->buf);
-    buffer_free(sql);
-
-    /* If query dont return exactly 1 result, it mean projection not handled */
-    if (PQresultStatus(res) != PGRES_TUPLES_OK || PQntuples(res) != 1) {
-        PQclear(res);
-        return false;
-    }
-
-    buffer_add_str(s->auth_name, PQgetvalue(res, 0, 0));
-    s->auth_srid = atoi(PQgetvalue(res, 0, 1));
-    s->srid = srid;
-
-    /* Such a way to know if units is meter or degree */
-    if (atoi(PQgetvalue(res, 0, 2)) == 0)
-        s->is_degree = true;
-    else
-        s->is_degree = false;
-
-    /* Is northing-easting SRID ? */
-    if (atoi(PQgetvalue(res, 0, 3)) != 0)
-        s->is_eastern_axis = true;
+  PGresult *res;
+  buffer *sql;
+
+  assert(o);
+  assert(s);
+
+  if (srid == -1 || srid == 0) {
+    s->srid = -1;
+    buffer_empty(s->auth_name);
+    s->auth_srid = 0;
+    s->is_degree = true;
+    s->is_reverse_axis = false;
+    s->is_eastern_axis = false;
 
-    PQclear(res);
     return true;
+  }
+
+  sql = buffer_init();
+  buffer_add_str(sql, "SELECT auth_name, auth_srid, ");
+  buffer_add_str(sql, "position('+units=m ' in proj4text), ");
+  buffer_add_str(sql, "(position('AXIS[\"X\",NORTH]]' in srtext) + position('AXIS[\"Easting\",EAST]]' in srtext)) ");
+  buffer_add_str(sql, "FROM spatial_ref_sys WHERE srid = '");
+  buffer_add_int(sql, srid);
+  buffer_add_str(sql, "'");
+
+  res = ows_psql_exec(o, sql->buf);
+  buffer_free(sql);
+
+  /* If query dont return exactly 1 result, it mean projection not handled */
+  if (PQresultStatus(res) != PGRES_TUPLES_OK || PQntuples(res) != 1) {
+    PQclear(res);
+    return false;
+  }
+
+  buffer_add_str(s->auth_name, PQgetvalue(res, 0, 0));
+  s->auth_srid = atoi(PQgetvalue(res, 0, 1));
+  s->srid = srid;
+
+  /* Such a way to know if units is meter or degree */
+  if (atoi(PQgetvalue(res, 0, 2)) == 0)
+    s->is_degree = true;
+  else
+    s->is_degree = false;
+
+  /* Is northing-easting SRID ? */
+  if (atoi(PQgetvalue(res, 0, 3)) != 0)
+    s->is_eastern_axis = true;
+
+  PQclear(res);
+  return true;
 }
 
 
@@ -254,54 +254,56 @@ bool ows_srs_set_from_srid(ows * o, ows_srs * s, int srid)
  */
 bool ows_srs_set_from_srsname(ows * o, ows_srs * s, const char *srsname)
 {
-    char sep;
-    int srid = -1;
-    const char *p = NULL;
-
-    assert(o);
-    assert(s);
-    assert(srsname);
-
-    /* Severals srsName formats are available...
-     *  cf WFS 1.1.0 -> 9.2 (p36)
-     *  cf ISO 19142 -> 7.9.2.4.4 (p34)
-     *  cf RFC 5165 <http://tools.ietf.org/html/rfc5165>
-     *  cf CITE WFS-1.1 (GetFeature-tc17.2)
-     */
-
-     /* SRS pattern like:    EPSG:4326
-                             urn:EPSG:geographicCRS:4326
-                             urn:ogc:def:crs:EPSG:4326
-                             urn:ogc:def:crs:EPSG::4326
-                             urn:ogc:def:crs:EPSG:6.6:4326
-                             urn:x-ogc:def:crs:EPSG:6.6:4326
-                             http://www.opengis.net/gml/srs/epsg.xml#4326
-     */
-     s->is_long = true;
-
-     if (!strncmp((char *) srsname,        "EPSG:", 5)) {
-         sep = ':';
-         s->is_reverse_axis = false;
-         s->is_long = false;
-
-     } else if (!strncmp((char *) srsname, "urn:ogc:def:crs:EPSG:", 21)
+  char sep;
+  int srid = -1;
+  const char *p = NULL;
+
+  assert(o);
+  assert(s);
+  assert(srsname);
+
+  /* Severals srsName formats are available...
+   *  cf WFS 1.1.0 -> 9.2 (p36)
+   *  cf ISO 19142 -> 7.9.2.4.4 (p34)
+   *  cf RFC 5165 <http://tools.ietf.org/html/rfc5165>
+   *  cf CITE WFS-1.1 (GetFeature-tc17.2)
+   */
+
+  /* SRS pattern like:    EPSG:4326
+                          urn:EPSG:geographicCRS:4326
+                          urn:ogc:def:crs:EPSG:4326
+                          urn:ogc:def:crs:EPSG::4326
+                          urn:ogc:def:crs:EPSG:6.6:4326
+                          urn:x-ogc:def:crs:EPSG:6.6:4326
+                          http://www.opengis.net/gml/srs/epsg.xml#4326
+                          spatialreferencing.org:900913
+  */
+  s->is_long = true;
+
+  if    (!strncmp((char *) srsname,        "EPSG:", 5)
+         || !strncmp((char *) srsname, "spatialreferencing.org", 22)) {
+    sep = ':';
+    s->is_reverse_axis = false;
+    s->is_long = false;
+
+  } else if (!strncmp((char *) srsname, "urn:ogc:def:crs:EPSG:", 21)
              || !strncmp((char *) srsname, "urn:x-ogc:def:crs:EPSG:", 23)
              || !strncmp((char *) srsname, "urn:EPSG:geographicCRS:", 23)) {
-         sep = ':';
-         s->is_reverse_axis = true;
+    sep = ':';
+    s->is_reverse_axis = true;
 
-     } else if (!strncmp((char *) srsname, "http://www.opengis.net/gml/srs/epsg.xml#", 40)) {
-         sep = '#';
-         s->is_reverse_axis = false;
-     } else return false;
+  } else if (!strncmp((char *) srsname, "http://www.opengis.net/gml/srs/epsg.xml#", 40)) {
+    sep = '#';
+    s->is_reverse_axis = false;
+  } else return false; /* FIXME must we really not allow other value ? */
 
-     /*  Retrieve from last separator to the end of srsName string */
-     for (p = srsname ; *p ; p++);
-     for (--p ; *p != sep ; p--)
-         if (!isdigit(*p)) return false;
-     srid = atoi(++p);
+  /*  Retrieve from last separator to the end of srsName string */
+  for (p = srsname ; *p ; p++);
+  for (--p ; *p != sep ; p--)
+    if (!isdigit(*p)) return false;
+  srid = atoi(++p);
 
-     return ows_srs_set_from_srid(o, s, srid);
+  return ows_srs_set_from_srid(o, s, srid);
 }
 
 
@@ -310,17 +312,17 @@ bool ows_srs_set_from_srsname(ows * o, ows_srs * s, const char *srsname)
  */
 bool ows_srs_meter_units(ows * o, buffer * layer_name)
 {
-    ows_layer_node * ln;
+  ows_layer_node * ln;
 
-    assert(o);
-    assert(layer_name);
+  assert(o);
+  assert(layer_name);
 
-    for (ln = o->layers->first ; ln ; ln = ln->next)
-        if (ln->layer->name && ln->layer->storage && !strcmp(ln->layer->name->buf, layer_name->buf))
-            return !ln->layer->storage->is_degree;
+  for (ln = o->layers->first ; ln ; ln = ln->next)
+    if (ln->layer->name && ln->layer->storage && !strcmp(ln->layer->name->buf, layer_name->buf))
+      return !ln->layer->storage->is_degree;
 
-    assert(0); /* Should not happen */
-    return false;
+  assert(0); /* Should not happen */
+  return false;
 }
 
 
@@ -329,16 +331,16 @@ bool ows_srs_meter_units(ows * o, buffer * layer_name)
  */
 int ows_srs_get_srid_from_layer(ows * o, buffer * layer_name)
 {
-    ows_layer_node * ln;
+  ows_layer_node * ln;
 
-    assert(o);
-    assert(layer_name);
+  assert(o);
+  assert(layer_name);
 
-    for (ln = o->layers->first ; ln ; ln = ln->next)
-        if (ln->layer->name && ln->layer->storage && !strcmp(ln->layer->name->buf, layer_name->buf))
-            return ln->layer->storage->srid;
+  for (ln = o->layers->first ; ln ; ln = ln->next)
+    if (ln->layer->name && ln->layer->storage && !strcmp(ln->layer->name->buf, layer_name->buf))
+      return ln->layer->storage->srid;
 
-    return -1;
+  return -1;
 }
 
 
@@ -347,23 +349,23 @@ int ows_srs_get_srid_from_layer(ows * o, buffer * layer_name)
  */
 list *ows_srs_get_from_srid(ows * o, list * l)
 {
-    list_node *ln;
-    buffer *b;
-    list *srs;
+  list_node *ln;
+  buffer *b;
+  list *srs;
 
-    assert(o);
-    assert(l);
+  assert(o);
+  assert(l);
 
-    srs = list_init();
+  srs = list_init();
 
-    if (l->size == 0) return srs;
+  if (l->size == 0) return srs;
 
-    for (ln = l->first; ln ; ln = ln->next) {
-        b = ows_srs_get_from_a_srid(o, atoi(ln->value->buf));
-        list_add(srs, b);
-    }
+  for (ln = l->first; ln ; ln = ln->next) {
+    b = ows_srs_get_from_a_srid(o, atoi(ln->value->buf));
+    list_add(srs, b);
+  }
 
-    return srs;
+  return srs;
 }
 
 
@@ -372,33 +374,33 @@ list *ows_srs_get_from_srid(ows * o, list * l)
  */
 buffer *ows_srs_get_from_a_srid(ows * o, int srid)
 {
-    buffer *b;
-    buffer *sql;
-    PGresult *res;
+  buffer *b;
+  buffer *sql;
+  PGresult *res;
 
-    assert(o);
+  assert(o);
 
-    sql = buffer_init();
-    buffer_add_str(sql, "SELECT auth_name||':'||auth_srid AS srs ");
-    buffer_add_str(sql, "FROM spatial_ref_sys ");
-    buffer_add_str(sql, "WHERE srid=");
-    buffer_add_int(sql, srid);
+  sql = buffer_init();
+  buffer_add_str(sql, "SELECT auth_name||':'||auth_srid AS srs ");
+  buffer_add_str(sql, "FROM spatial_ref_sys ");
+  buffer_add_str(sql, "WHERE srid=");
+  buffer_add_int(sql, srid);
 
-    res = ows_psql_exec(o, sql->buf);
-    buffer_free(sql);
+  res = ows_psql_exec(o, sql->buf);
+  buffer_free(sql);
 
-    b = buffer_init();
+  b = buffer_init();
 
-    if (PQresultStatus(res) != PGRES_TUPLES_OK || PQntuples(res) != 1) {
-        PQclear(res);
-        return b;
-    }
+  if (PQresultStatus(res) != PGRES_TUPLES_OK || PQntuples(res) != 1) {
+    PQclear(res);
+    return b;
+  }
 
-    buffer_add_str(b, PQgetvalue(res, 0, 0));
+  buffer_add_str(b, PQgetvalue(res, 0, 0));
 
-    PQclear(res);
+  PQclear(res);
 
-    return b;
+  return b;
 }
 
 
diff --git a/src/ows/ows_storage.c b/src/ows/ows_storage.c
index 67150f9..288267e 100644
--- a/src/ows/ows_storage.c
+++ b/src/ows/ows_storage.c
@@ -30,96 +30,104 @@
 
 ows_layer_storage * ows_layer_storage_init()
 {
-    ows_layer_storage * storage;
-
-    storage = malloc(sizeof(ows_layer_storage));
-    assert(storage);
-
-    /* default values:  srid='-1' */
-    storage->schema = buffer_init();
-    storage->srid = -1;
-    storage->geom_columns = list_init();
-    storage->is_degree = true;
-    storage->table = buffer_init();
-    storage->pkey = NULL;
-    storage->pkey_sequence = NULL;
-    storage->pkey_column_number = -1;
-    storage->attributes = array_init();
-    storage->not_null_columns = NULL;
-
-    return storage;
+  ows_layer_storage * storage;
+
+  storage = malloc(sizeof(ows_layer_storage));
+  assert(storage);
+
+  /* default values:  srid='-1' */
+  storage->schema = buffer_init();
+  storage->srid = -1;
+  storage->geom_columns = list_init();
+  storage->is_degree = true;
+  storage->table = buffer_init();
+  storage->pkey = NULL;
+  storage->pkey_sequence = NULL;
+  storage->pkey_default = NULL;
+  storage->pkey_column_number = -1;
+  storage->attributes = array_init();
+  storage->not_null_columns = NULL;
+
+  return storage;
 }
 
 
 void ows_layer_storage_free(ows_layer_storage * storage)
 {
-    assert(storage);
-
-    if (storage->schema)           buffer_free(storage->schema);
-    if (storage->table)            buffer_free(storage->table);
-    if (storage->pkey)             buffer_free(storage->pkey);
-    if (storage->pkey_sequence)    buffer_free(storage->pkey_sequence);
-    if (storage->geom_columns)     list_free(storage->geom_columns);
-    if (storage->attributes)       array_free(storage->attributes);
-    if (storage->not_null_columns) list_free(storage->not_null_columns);
-
-    free(storage);
-    storage = NULL;
+  assert(storage);
+
+  if (storage->schema)           buffer_free(storage->schema);
+  if (storage->table)            buffer_free(storage->table);
+  if (storage->pkey)             buffer_free(storage->pkey);
+  if (storage->pkey_sequence)    buffer_free(storage->pkey_sequence);
+  if (storage->pkey_default)     buffer_free(storage->pkey_default);
+  if (storage->geom_columns)     list_free(storage->geom_columns);
+  if (storage->attributes)       array_free(storage->attributes);
+  if (storage->not_null_columns) list_free(storage->not_null_columns);
+
+  free(storage);
+  storage = NULL;
 }
 
 
 #ifdef OWS_DEBUG
 void ows_layer_storage_flush(ows_layer_storage * storage, FILE * output)
 {
-    assert(storage);
-    assert(output);
-
-    if (storage->schema) {
-        fprintf(output, "schema: ");
-        buffer_flush(storage->schema, output);
-        fprintf(output, "\n");
-    }
-
-    if (storage->table) {
-        fprintf(output, "table: ");
-        buffer_flush(storage->table, output);
-        fprintf(output, "\n");
-    }
-
-    if (storage->geom_columns) {
-        fprintf(output, "geom_columns: ");
-        list_flush(storage->geom_columns, output);
-        fprintf(output, "\n");
-    }
-
-    fprintf(output, "srid: %i\n", storage->srid);
-    fprintf(output, "is_degree: %i\n", storage->is_degree?1:0);
-
-    if (storage->pkey) {
-        fprintf(output, "pkey: ");
-        buffer_flush(storage->pkey, output);
-        fprintf(output, "\n");
-    }
-
-    fprintf(output, "pkey_column_number: %i\n", storage->pkey_column_number);
-
-    if (storage->pkey_sequence) {
-        fprintf(output, "pkey_sequence: ");
-        buffer_flush(storage->pkey_sequence, output);
-        fprintf(output, "\n");
-    }
-
-    if (storage->attributes) {
-        fprintf(output, "attributes: ");
-        array_flush(storage->attributes, output);
-        fprintf(output, "\n");
-    }
-
-    if (storage->not_null_columns) {
-        fprintf(output, "not_null_columns: ");
-        list_flush(storage->not_null_columns, output);
-        fprintf(output, "\n");
-    }
+  assert(storage);
+  assert(output);
+
+  if (storage->schema) {
+    fprintf(output, "schema: ");
+    buffer_flush(storage->schema, output);
+    fprintf(output, "\n");
+  }
+
+  if (storage->table) {
+    fprintf(output, "table: ");
+    buffer_flush(storage->table, output);
+    fprintf(output, "\n");
+  }
+
+  if (storage->geom_columns) {
+    fprintf(output, "geom_columns: ");
+    list_flush(storage->geom_columns, output);
+    fprintf(output, "\n");
+  }
+
+  fprintf(output, "srid: %i\n", storage->srid);
+  fprintf(output, "is_degree: %i\n", storage->is_degree?1:0);
+
+  if (storage->pkey) {
+    fprintf(output, "pkey: ");
+    buffer_flush(storage->pkey, output);
+    fprintf(output, "\n");
+  }
+
+  fprintf(output, "pkey_column_number: %i\n", storage->pkey_column_number);
+
+  if (storage->pkey_sequence) {
+    fprintf(output, "pkey_sequence: ");
+    buffer_flush(storage->pkey_sequence, output);
+    fprintf(output, "\n");
+  }
+
+  if (storage->pkey_default) {
+    fprintf(output, "pkey_default: ");
+    buffer_flush(storage->pkey_default, output);
+    fprintf(output, "\n");
+  }
+
+  if (storage->attributes) {
+    fprintf(output, "attributes: ");
+    array_flush(storage->attributes, output);
+    fprintf(output, "\n");
+  }
+
+  if (storage->not_null_columns) {
+    fprintf(output, "not_null_columns: ");
+    list_flush(storage->not_null_columns, output);
+    fprintf(output, "\n");
+  }
 
 }
 #endif
@@ -130,41 +138,41 @@ void ows_layer_storage_flush(ows_layer_storage * storage, FILE * output)
  */
 static void ows_storage_fill_not_null(ows * o, ows_layer * l)
 {
-    int i, nb_result;
-    buffer *sql, *b;
-    PGresult *res;
-
-    assert(o);
-    assert(l);
-    assert(l->storage);
-
-    sql = buffer_init();
-    buffer_add_str(sql, "SELECT a.attname AS field FROM pg_class c, pg_attribute a, pg_type t, pg_namespace n ");
-    buffer_add_str(sql, "WHERE n.nspname = '");
-    buffer_copy(sql, l->storage->schema);
-    buffer_add_str(sql, "' AND c.relname = '");
-    buffer_copy(sql, l->storage->table);
-    buffer_add_str(sql, "' AND c.relnamespace = n.oid AND a.attnum > 0 AND a.attrelid = c.oid ");
-    buffer_add_str(sql, "AND a.atttypid = t.oid AND a.attnotnull = 't' AND a.atthasdef='f'");
-
-    res = ows_psql_exec(o, sql->buf);
-    buffer_free(sql);
-
-    if (PQresultStatus(res) != PGRES_TUPLES_OK) {
-        PQclear(res);
-        ows_error(o, OWS_ERROR_REQUEST_SQL_FAILED, "Unable to access pg_* tables.", "not_null columns");
-        return;
-    }
-
-    nb_result = PQntuples(res);
-    if (nb_result) l->storage->not_null_columns = list_init();
-    for (i = 0 ; i < nb_result ; i++) {
-        b = buffer_init();
-        buffer_add_str(b, PQgetvalue(res, i, 0));
-        list_add(l->storage->not_null_columns, b);
-    }
-
+  int i, nb_result;
+  buffer *sql, *b;
+  PGresult *res;
+
+  assert(o);
+  assert(l);
+  assert(l->storage);
+
+  sql = buffer_init();
+  buffer_add_str(sql, "SELECT a.attname AS field FROM pg_class c, pg_attribute a, pg_type t, pg_namespace n ");
+  buffer_add_str(sql, "WHERE n.nspname = '");
+  buffer_copy(sql, l->storage->schema);
+  buffer_add_str(sql, "' AND c.relname = '");
+  buffer_copy(sql, l->storage->table);
+  buffer_add_str(sql, "' AND c.relnamespace = n.oid AND a.attnum > 0 AND a.attrelid = c.oid ");
+  buffer_add_str(sql, "AND a.atttypid = t.oid AND a.attnotnull = 't'");
+
+  res = ows_psql_exec(o, sql->buf);
+  buffer_free(sql);
+
+  if (PQresultStatus(res) != PGRES_TUPLES_OK) {
     PQclear(res);
+    ows_error(o, OWS_ERROR_REQUEST_SQL_FAILED, "Unable to access pg_* tables.", "not_null columns");
+    return;
+  }
+
+  nb_result = PQntuples(res);
+  if (nb_result) l->storage->not_null_columns = list_init();
+  for (i = 0 ; i < nb_result ; i++) {
+    b = buffer_init();
+    buffer_add_str(b, PQgetvalue(res, i, 0));
+    list_add(l->storage->not_null_columns, b);
+  }
+
+  PQclear(res);
 }
 
 
@@ -174,95 +182,129 @@ static void ows_storage_fill_not_null(ows * o, ows_layer * l)
  */
 static void ows_storage_fill_pkey(ows * o, ows_layer * l)
 {
-    buffer *sql;
-    PGresult *res;
-
-    assert(o);
-    assert(l);
-    assert(l->storage);
-
-    sql = buffer_init();
+  buffer *sql;
+  PGresult *res;
+
+  assert(o);
+  assert(l);
+  assert(l->storage);
+
+  sql = buffer_init();
+
+  buffer_add_str(sql, "SELECT c.column_name FROM information_schema.constraint_column_usage c, pg_namespace n ");
+  buffer_add_str(sql, "WHERE n.nspname = '");
+  buffer_copy(sql, l->storage->schema);
+  buffer_add_str(sql, "' AND c.table_name = '");
+  buffer_copy(sql, l->storage->table);
+  buffer_add_str(sql, "' AND c.constraint_name = (");
+
+  buffer_add_str(sql, "SELECT c.conname FROM pg_class r, pg_constraint c, pg_namespace n ");
+  buffer_add_str(sql, "WHERE r.oid = c.conrelid AND relname = '");
+  buffer_copy(sql, l->storage->table);
+  buffer_add_str(sql, "' AND r.relnamespace = n.oid AND n.nspname = '");
+  buffer_copy(sql, l->storage->schema);
+  buffer_add_str(sql, "' AND c.contype = 'p')");
+
+  res = ows_psql_exec(o, sql->buf);
+  if (PQresultStatus(res) != PGRES_TUPLES_OK) {
+    PQclear(res);
+    buffer_free(sql);
+    ows_error(o, OWS_ERROR_REQUEST_SQL_FAILED, "Unable to access pg_* tables.", "pkey column");
+    return;
+  }
+
+  /* Layer could have no Pkey indeed... (An SQL view for example) */
+  if (l->pkey || PQntuples(res) == 1) {
+    l->storage->pkey = buffer_init();
+    if (l->pkey) {
+      /*TODO check the column (l->pkey) in the table */
+      buffer_copy(l->storage->pkey, l->pkey);
+    } else {
+      buffer_add_str(l->storage->pkey, PQgetvalue(res, 0, 0));
+    }
+    buffer_empty(sql);
+    PQclear(res);
 
-    buffer_add_str(sql, "SELECT c.column_name FROM information_schema.constraint_column_usage c, pg_namespace n ");
-    buffer_add_str(sql, "WHERE n.nspname = '");
+    /* Retrieve the Pkey column number */
+    buffer_add_str(sql, "SELECT a.attnum FROM pg_class c, pg_attribute a, pg_type t, pg_namespace n");
+    buffer_add_str(sql, " WHERE a.attrelid = c.oid AND a.atttypid = t.oid AND n.nspname='");
     buffer_copy(sql, l->storage->schema);
-    buffer_add_str(sql, "' AND c.table_name = '");
+    buffer_add_str(sql, "' AND c.relname='");
     buffer_copy(sql, l->storage->table);
-    buffer_add_str(sql, "' AND c.constraint_name = (");
+    buffer_add_str(sql, "' AND a.attname='");
+    buffer_copy(sql, l->storage->pkey);
+    buffer_add_str(sql, "'");
+    res = ows_psql_exec(o, sql->buf);
+    if (PQresultStatus(res) != PGRES_TUPLES_OK) {
+      PQclear(res);
+      buffer_free(sql);
+      ows_error(o, OWS_ERROR_REQUEST_SQL_FAILED, "Unable to find pkey column number.", "pkey_column number");
+      return;
+    }
 
-    buffer_add_str(sql, "SELECT c.conname FROM pg_class r, pg_constraint c, pg_namespace n ");
-    buffer_add_str(sql, "WHERE r.oid = c.conrelid AND relname = '");
-    buffer_copy(sql, l->storage->table);
-    buffer_add_str(sql, "' AND r.relnamespace = n.oid AND n.nspname = '");
+    /* -1 because column number start at 1 */
+    l->storage->pkey_column_number = atoi(PQgetvalue(res, 0, 0)) - 1;
+    buffer_empty(sql);
+    PQclear(res);
+
+    /* Now try to find a sequence related to this Pkey */
+    buffer_add_str(sql, "SELECT pg_get_serial_sequence('");
     buffer_copy(sql, l->storage->schema);
-    buffer_add_str(sql, "' AND c.contype = 'p')");
+    buffer_add_str(sql, ".\"");
+    buffer_copy(sql, l->storage->table);
+    buffer_add_str(sql, "\"', '");
+    buffer_copy(sql, l->storage->pkey);
+    buffer_add_str(sql, "');");
 
     res = ows_psql_exec(o, sql->buf);
     if (PQresultStatus(res) != PGRES_TUPLES_OK) {
-        PQclear(res);
-        buffer_free(sql);
-        ows_error(o, OWS_ERROR_REQUEST_SQL_FAILED, "Unable to access pg_* tables.", "pkey column");
-	return;
+      PQclear(res);
+      buffer_free(sql);
+      ows_error(o, OWS_ERROR_REQUEST_SQL_FAILED,
+                "Unable to use pg_get_serial_sequence.", "pkey_sequence retrieve");
+      return;
     }
 
-    /* Layer could have no Pkey indeed... (An SQL view for example) */
-    if (PQntuples(res) == 1) {
-        l->storage->pkey = buffer_init();
-        buffer_add_str(l->storage->pkey, PQgetvalue(res, 0, 0));
-        buffer_empty(sql);
-        PQclear(res);
+    /* Even if no sequence found, this function return an empty row
+     * so we must check that result string returned > 0 char
+     */
+    if (PQntuples(res) == 1 && strlen((char *) PQgetvalue(res, 0, 0)) > 0) {
+      l->storage->pkey_sequence = buffer_init();
+      buffer_add_str(l->storage->pkey_sequence, PQgetvalue(res, 0, 0));
+    }
 
-        /* Retrieve the Pkey column number */
-        buffer_add_str(sql, "SELECT a.attnum FROM pg_class c, pg_attribute a, pg_type t, pg_namespace n");
-        buffer_add_str(sql, " WHERE a.attnum > 0 AND a.attrelid = c.oid AND a.atttypid = t.oid AND n.nspname='");
-        buffer_copy(sql, l->storage->schema);
-        buffer_add_str(sql, "' AND c.relname='");
-        buffer_copy(sql, l->storage->table);
-        buffer_add_str(sql, "' AND a.attname='");
-        buffer_copy(sql, l->storage->pkey);
-        buffer_add_str(sql, "'");
-        res = ows_psql_exec(o, sql->buf);
-        if (PQresultStatus(res) != PGRES_TUPLES_OK) {
-            PQclear(res);
-            buffer_free(sql);
-            ows_error(o, OWS_ERROR_REQUEST_SQL_FAILED, "Unable to find pkey column number.", "pkey_column number");
-	    return;
-        }
-
-        /* -1 because column number start at 1 */
-        l->storage->pkey_column_number = atoi(PQgetvalue(res, 0, 0)) - 1;
-        buffer_empty(sql);
-        PQclear(res);
+    buffer_empty(sql);
+    PQclear(res);
+    /* Now try to find a DEFAULT value related to this Pkey */
+    buffer_add_str(sql, "SELECT column_default FROM information_schema.columns WHERE table_schema = '");
+    buffer_copy(sql, l->storage->schema);
+    buffer_add_str(sql, "' AND table_name = '");
+    buffer_copy(sql, l->storage->table);
+    buffer_add_str(sql, "' AND column_name = '");
+    buffer_copy(sql, l->storage->pkey);
+    buffer_add_str(sql, "' AND table_catalog = current_database();");
 
-        /* Now try to find a sequence related to this Pkey */
-        buffer_add_str(sql, "SELECT pg_get_serial_sequence('");
-        buffer_copy(sql, l->storage->schema);
-        buffer_add_str(sql, ".\"");
-        buffer_copy(sql, l->storage->table);
-	buffer_add_str(sql, "\"', '");
-        buffer_copy(sql, l->storage->pkey);
-	buffer_add_str(sql, "');");
-
-        res = ows_psql_exec(o, sql->buf);
-        if (PQresultStatus(res) != PGRES_TUPLES_OK) {
-            PQclear(res);
-            buffer_free(sql);
-            ows_error(o, OWS_ERROR_REQUEST_SQL_FAILED,
-                  "Unable to use pg_get_serial_sequence.", "pkey_sequence retrieve");
-            return;
-        }
-        
-        /* Even if no sequence found, this function return an empty row
-         * so we must check that result string returned > 0 char
-         */
-        if (PQntuples(res) == 1 && strlen((char *) PQgetvalue(res, 0, 0)) > 0) {
-            l->storage->pkey_sequence = buffer_init();
-            buffer_add_str(l->storage->pkey_sequence, PQgetvalue(res, 0, 0));
-        }
+    res = ows_psql_exec(o, sql->buf);
+    if (PQresultStatus(res) != PGRES_TUPLES_OK) {
+      PQclear(res);
+      buffer_free(sql);
+      ows_error(o, OWS_ERROR_REQUEST_SQL_FAILED,
+                "Unable to SELECT column_default FROM information_schema.columns.",
+                "pkey_default retrieve");
+      return;
     }
 
-    PQclear(res);
-    buffer_free(sql);
+    /* Even if no DEFAULT value found, this function return an empty row
+     * so we must check that result string returned > 0 char
+     */
+    if (PQntuples(res) == 1 && strlen((char *) PQgetvalue(res, 0, 0)) > 0) {
+      l->storage->pkey_default = buffer_init();
+      buffer_add_str(l->storage->pkey_default, PQgetvalue(res, 0, 0));
+    }
+  }
+
+  PQclear(res);
+  buffer_free(sql);
 }
 
 
@@ -271,131 +313,159 @@ static void ows_storage_fill_pkey(ows * o, ows_layer * l)
  */
 static void ows_storage_fill_attributes(ows * o, ows_layer * l)
 {
-    buffer *sql;
-    PGresult *res;
-    buffer *b, *t;
-    int i, end;
-
-    assert(o);
-    assert(l);
-    assert(l->storage);
+  buffer *sql;
+  PGresult *res;
+  buffer *b, *t;
+  int i, end;
+  list_node *ln;
+
+  assert(o);
+  assert(l);
+  assert(l->storage);
+
+  sql = buffer_init();
+
+  buffer_add_str(sql, "SELECT a.attname AS field, t.typname AS type ");
+  buffer_add_str(sql, "FROM pg_class c, pg_attribute a, pg_type t, pg_namespace n WHERE n.nspname = '");
+  buffer_copy(sql, l->storage->schema);
+  buffer_add_str(sql, "' AND c.relname = '");
+  buffer_copy(sql, l->storage->table);
+  buffer_add_str(sql, "' AND c.relnamespace = n.oid AND a.attrelid = c.oid AND a.atttypid = t.oid");
+  if (l->include_items) {
+    buffer_add_str(sql, " AND a.attname IN (");
+    for (ln = l->include_items->first ; ln ; ln = ln->next) {
+      buffer_add_str(sql, "'");
+      buffer_copy(sql, ln->value);
+      buffer_add_str(sql, "', ");
+    }
+    if (l->include_items->first && l->storage->pkey) {
+      buffer_add_str(sql, "'");
+      buffer_copy(sql, l->storage->pkey );
+      buffer_add_str(sql, "',");
+    }
 
-    sql = buffer_init();
+    buffer_add_str(sql, " '');");
+  } else {
+    buffer_add_str(sql, " AND a.attnum > 0;");
+  }
 
-    buffer_add_str(sql, "SELECT a.attname AS field, t.typname AS type ");
-    buffer_add_str(sql, "FROM pg_class c, pg_attribute a, pg_type t, pg_namespace n WHERE n.nspname = '");
-    buffer_copy(sql, l->storage->schema);
-    buffer_add_str(sql, "' AND c.relname = '");
-    buffer_copy(sql, l->storage->table);
-    buffer_add_str(sql, "' AND c.relnamespace = n.oid AND a.attnum > 0 AND a.attrelid = c.oid AND a.atttypid = t.oid");
-
-    res = ows_psql_exec(o, sql->buf);
-    buffer_free(sql);
+  res = ows_psql_exec(o, sql->buf);
+  buffer_free(sql);
 
-    if (PQresultStatus(res) != PGRES_TUPLES_OK) {
+  if (PQresultStatus(res) != PGRES_TUPLES_OK) {
+    PQclear(res);
+    ows_error(o, OWS_ERROR_REQUEST_SQL_FAILED, "Unable to access pg_* tables.", "fill_attributes");
+    return;
+  }
+
+  for (i = 0, end = PQntuples(res); i < end; i++) {
+    b = buffer_init();
+    t = buffer_init();
+    buffer_add_str(b, PQgetvalue(res, i, 0));
+    buffer_add_str(t, PQgetvalue(res, i, 1));
+
+    /* If the column is a geometry, get its real geometry type */
+    if (buffer_cmp(t, "geometry")) {
+      PGresult *geom_res;
+      buffer *geom_sql = buffer_init();
+      buffer_add_str(geom_sql, "SELECT type from geometry_columns where f_table_schema='");
+      buffer_copy(geom_sql, l->storage->schema);
+      buffer_add_str(geom_sql,"' and f_table_name='");
+      buffer_copy(geom_sql, l->storage->table);
+      buffer_add_str(geom_sql,"' and f_geometry_column='");
+      buffer_copy(geom_sql, b);
+      buffer_add_str(geom_sql,"';");
+
+      geom_res = ows_psql_exec(o, geom_sql->buf);
+      buffer_free(geom_sql);
+
+      if (PQresultStatus(geom_res) != PGRES_TUPLES_OK || PQntuples(geom_res) == 0) {
         PQclear(res);
-        ows_error(o, OWS_ERROR_REQUEST_SQL_FAILED, "Unable to access pg_* tables.", "fill_attributes");
+        PQclear(geom_res);
+        ows_error(o, OWS_ERROR_REQUEST_SQL_FAILED,
+                  "Unable to access geometry_columns table, try Populate_Geometry_Columns()", "fill_attributes");
         return;
-    }
+      }
 
-    for (i = 0, end = PQntuples(res); i < end; i++) {
-        b = buffer_init();
-        t = buffer_init();
-        buffer_add_str(b, PQgetvalue(res, i, 0));
-	buffer_add_str(t, PQgetvalue(res, i, 1));
-
-	/* If the column is a geometry, get its real geometry type */
-	if (buffer_cmp(t, "geometry"))
-	{
-	  PGresult *geom_res;
-	  buffer *geom_sql = buffer_init();
-	  buffer_add_str(geom_sql, "SELECT type from geometry_columns where f_table_schema='");
-	  buffer_copy(geom_sql, l->storage->schema);
-	  buffer_add_str(geom_sql,"' and f_table_name='");
-	  buffer_copy(geom_sql, l->storage->table);
-	  buffer_add_str(geom_sql,"' and f_geometry_column='");
-	  buffer_copy(geom_sql, b);
-	  buffer_add_str(geom_sql,"';");
-	  
-          geom_res = ows_psql_exec(o, geom_sql->buf);
-	  buffer_free(geom_sql);
-	  
-	  if (PQresultStatus(geom_res) != PGRES_TUPLES_OK || PQntuples(geom_res) == 0) {
-	    PQclear(res);
-	    PQclear(geom_res);
-	    ows_error(o, OWS_ERROR_REQUEST_SQL_FAILED,
-		      "Unable to access geometry_columns table, try Populate_Geometry_Columns()", "fill_attributes");
-	    return;
-	  }
-	  
-	  buffer_empty(t);
-	  buffer_add_str(t, PQgetvalue(geom_res, 0, 0));
-          PQclear(geom_res);
-	}
-	
-        array_add(l->storage->attributes, b, t);
+      buffer_empty(t);
+      buffer_add_str(t, PQgetvalue(geom_res, 0, 0));
+      PQclear(geom_res);
     }
-    PQclear(res);
+
+    array_add(l->storage->attributes, b, t);
+  }
+  PQclear(res);
 
 }
 
 
 static void ows_layer_storage_fill(ows * o, ows_layer * l, bool is_geom)
 {
-    buffer * sql;
-    PGresult *res;
-    int i, end;
-
-    assert(o);
-    assert(l);
-    assert(l->storage);
-
-    sql = buffer_init();
-    if (is_geom) buffer_add_str(sql, "SELECT srid, f_geometry_column FROM geometry_columns");
-    else         buffer_add_str(sql, "SELECT '4326', f_geography_column FROM geography_columns");
-
-    buffer_add_str(sql, " WHERE f_table_schema='");
-    buffer_copy(sql, l->storage->schema);
-    buffer_add_str(sql, "' AND f_table_name='");
-    buffer_copy(sql, l->storage->table);
-    buffer_add_str(sql, "'");
-
-    res = ows_psql_exec(o, sql->buf);
-    buffer_empty(sql);
-
-    if (PQresultStatus(res) != PGRES_TUPLES_OK || PQntuples(res) == 0) {
-        PQclear(res);
+  buffer * sql;
+  PGresult *res;
+  int i, end;
+
+  assert(o);
+  assert(l);
+  assert(l->storage);
+
+  sql = buffer_init();
+  if (is_geom) buffer_add_str(sql, "SELECT srid, f_geometry_column FROM geometry_columns");
+  else         buffer_add_str(sql, "SELECT srid, f_geography_column FROM geography_columns");
+
+  buffer_add_str(sql, " WHERE f_table_schema='");
+  buffer_copy(sql, l->storage->schema);
+  buffer_add_str(sql, "' AND f_table_name='");
+  buffer_copy(sql, l->storage->table);
+  buffer_add_str(sql, "'");
+  if (l->include_items) {
+    buffer_add_str(sql, is_geom?" AND f_geometry_column IN ('":" AND f_geography_column IN ('");
+    list_implode(sql, "','", l->include_items);
+    buffer_add_str(sql, "')");
+  }
+  if (l->exclude_items) {
+    buffer_add_str(sql, is_geom?" AND f_geometry_column NOT IN ('":" AND f_geography_column NOT IN ('");
+    list_implode(sql, "','", l->exclude_items);
+    buffer_add_str(sql, "')");
+  }
+  buffer_add_str(sql, ";");
+
+  res = ows_psql_exec(o, sql->buf);
+  buffer_empty(sql);
+
+  if (PQresultStatus(res) != PGRES_TUPLES_OK || PQntuples(res) == 0) {
+    PQclear(res);
 
-        ows_error(o, OWS_ERROR_REQUEST_SQL_FAILED,
-	   "All config file layers are not availables in geometry_columns or geography_columns",
-           "storage");
-        return;
-    }
+    ows_error(o, OWS_ERROR_REQUEST_SQL_FAILED,
+              "All config file layers are not availables in geometry_columns or geography_columns",
+              "storage");
+    return;
+  }
 
-    l->storage->srid = atoi(PQgetvalue(res, 0, 0));
+  l->storage->srid = atoi(PQgetvalue(res, 0, 0));
 
-    for (i = 0, end = PQntuples(res); i < end; i++)
-        list_add_str(l->storage->geom_columns, PQgetvalue(res, i, 1));
+  for (i = 0, end = PQntuples(res); i < end; i++)
+    list_add_str(l->storage->geom_columns, PQgetvalue(res, i, 1));
 
-    buffer_add_str(sql, "SELECT * FROM spatial_ref_sys WHERE srid=");
-    buffer_add_str(sql, PQgetvalue(res, 0, 0));
-    buffer_add_str(sql, " AND proj4text like '%%units=m%%'");
+  buffer_add_str(sql, "SELECT * FROM spatial_ref_sys WHERE srid=");
+  buffer_add_str(sql, PQgetvalue(res, 0, 0));
+  buffer_add_str(sql, " AND proj4text like '%%units=m%%'");
 
-    PQclear(res);
+  PQclear(res);
 
-    res = ows_psql_exec(o, sql->buf);
-    buffer_free(sql);
+  res = ows_psql_exec(o, sql->buf);
+  buffer_free(sql);
 
-    if (PQntuples(res) != 1)
-        l->storage->is_degree = true;
-    else
-        l->storage->is_degree = false;
+  if (PQntuples(res) != 1)
+    l->storage->is_degree = true;
+  else
+    l->storage->is_degree = false;
 
-    PQclear(res);
+  PQclear(res);
 
-    ows_storage_fill_attributes(o, l);
-    ows_storage_fill_not_null(o, l);
-    ows_storage_fill_pkey(o, l);
+  ows_storage_fill_pkey(o, l);
+  ows_storage_fill_attributes(o, l);
+  ows_storage_fill_not_null(o, l);
 }
 
 
@@ -404,77 +474,72 @@ static void ows_layer_storage_fill(ows * o, ows_layer * l, bool is_geom)
  */
 void ows_layers_storage_flush(ows * o, FILE * output)
 {
-    ows_layer_node *ln;
-
-    assert(o);
-    assert(o->layers);
-
-    for (ln = o->layers->first ; ln ; ln = ln->next) {
-        if (ln->layer->storage) {
-                fprintf(output, " - %s.%s (%i) -> %s.%s [",
-			ln->layer->storage->schema->buf,
-			ln->layer->storage->table->buf,
-			ln->layer->storage->srid,
-			ln->layer->ns_prefix->buf,
-			ln->layer->name->buf);
-
-                if (ln->layer->retrievable) fprintf(output, "R");
-                if (ln->layer->writable)    fprintf(output, "W");
-                fprintf(output, "]\n");
-        }
+  ows_layer_node *ln;
+
+  assert(o);
+  assert(o->layers);
+
+  for (ln = o->layers->first ; ln ; ln = ln->next) {
+    if (ln->layer->storage) {
+      fprintf(output, " - %s.%s (%i) -> %s [",
+              ln->layer->storage->schema->buf,
+              ln->layer->storage->table->buf,
+              ln->layer->storage->srid,
+              ln->layer->name_prefix->buf);
+
+      if (ln->layer->retrievable) fprintf(output, "R");
+      if (ln->layer->writable)    fprintf(output, "W");
+      fprintf(output, "]\n");
     }
-} 
+  }
+}
 
 
 void ows_layers_storage_fill(ows * o)
 {
-    PGresult *res, *res_g;
-    ows_layer_node *ln;
-    bool filled;
-    buffer *sql;
-    int i, end;
+  PGresult *res, *res_g;
+  ows_layer_node *ln;
+  bool filled;
+  buffer *sql;
+  int i, end;
 
-    assert(o);
-    assert(o->layers);
+  assert(o);
+  assert(o->layers);
 
-    sql = buffer_init();
-    buffer_add_str(sql, "SELECT DISTINCT f_table_schema, f_table_name FROM geometry_columns");
-    res = ows_psql_exec(o, sql->buf);
-    buffer_empty(sql);
+  sql = buffer_init();
+  buffer_add_str(sql, "SELECT DISTINCT f_table_schema, f_table_name FROM geometry_columns");
+  res = ows_psql_exec(o, sql->buf);
+  buffer_empty(sql);
 
-    buffer_add_str(sql, "SELECT DISTINCT f_table_schema, f_table_name FROM geography_columns");
-    res_g = ows_psql_exec(o, sql->buf);
-    buffer_free(sql);
+  buffer_add_str(sql, "SELECT DISTINCT f_table_schema, f_table_name FROM geography_columns");
+  res_g = ows_psql_exec(o, sql->buf);
+  buffer_free(sql);
+
+  for (ln = o->layers->first ; ln ; ln = ln->next) {
+    filled = false;
 
-    for (ln = o->layers->first ; ln ; ln = ln->next) {
-        filled = false;
-
-        for (i = 0, end = PQntuples(res); i < end; i++) {
-            if (    buffer_cmp(ln->layer->storage->schema, (char *) PQgetvalue(res, i, 0)) 
-		 && buffer_cmp(ln->layer->storage->table,  (char *) PQgetvalue(res, i, 1))) {
-                ows_layer_storage_fill(o, ln->layer, true);
-                filled = true;
-            }
-        }
-            
-        for (i = 0, end = PQntuples(res_g); i < end; i++) {
-            if (    buffer_cmp(ln->layer->storage->schema, (char *) PQgetvalue(res_g, i, 0))
-		 && buffer_cmp(ln->layer->storage->table,  (char *) PQgetvalue(res_g, i, 1))) {
-                ows_layer_storage_fill(o, ln->layer, false);
-                filled = true;
-            }
-        }
-
-        if (!filled) {
-            if (ln->layer->storage) ows_layer_storage_free(ln->layer->storage);
-            ln->layer->storage = NULL;
-        }
+    for (i = 0, end = PQntuples(res); i < end; i++) {
+      if (    buffer_cmp(ln->layer->storage->schema, (char *) PQgetvalue(res, i, 0))
+           && buffer_cmp(ln->layer->storage->table,  (char *) PQgetvalue(res, i, 1))) {
+        ows_layer_storage_fill(o, ln->layer, true);
+        filled = true;
+      }
     }
-    PQclear(res);
-    PQclear(res_g);
 
-}
+    for (i = 0, end = PQntuples(res_g); i < end; i++) {
+      if (    buffer_cmp(ln->layer->storage->schema, (char *) PQgetvalue(res_g, i, 0))
+           && buffer_cmp(ln->layer->storage->table,  (char *) PQgetvalue(res_g, i, 1))) {
+        ows_layer_storage_fill(o, ln->layer, false);
+        filled = true;
+      }
+    }
 
-/*
- * vim: expandtab sw=4 ts=4
- */
+    if (!filled) {
+      if (ln->layer->storage) ows_layer_storage_free(ln->layer->storage);
+      ln->layer->storage = NULL;
+    }
+  }
+
+  PQclear(res);
+  PQclear(res_g);
+}
diff --git a/src/ows/ows_version.c b/src/ows/ows_version.c
index 339b44a..0513cc7 100644
--- a/src/ows/ows_version.c
+++ b/src/ows/ows_version.c
@@ -32,16 +32,16 @@
  */
 ows_version *ows_version_init()
 {
-    ows_version *v;
+  ows_version *v;
 
-    v = malloc(sizeof(ows_version));
-    assert(v);
+  v = malloc(sizeof(ows_version));
+  assert(v);
 
-    v->major = -1;
-    v->minor = -1;
-    v->release = -1;
+  v->major = -1;
+  v->minor = -1;
+  v->release = -1;
 
-    return v;
+  return v;
 }
 
 
@@ -50,41 +50,41 @@ ows_version *ows_version_init()
  */
 void ows_version_set(ows_version * v, int major, int minor, int release)
 {
-    assert(v);
+  assert(v);
 
-    v->major = major;
-    v->minor = minor;
-    v->release = release;
+  v->major = major;
+  v->minor = minor;
+  v->release = release;
 }
 
 
 bool ows_version_set_str(ows_version * v, char *str)
 {
-    int i, major, minor, release;
-    char *p;
-
-    assert(v);
-    assert(str);
-
-    /* Nota: We don't handle version on 2 digits like X.YY.Z */
-    if (!check_regexp(str, "[0-9].[0-9].[0-9]")) return false;
-
-    i = major = minor = release = -1;
-    for ( p = str; *p ; p++, i = *(p - 1)) {
-		     
-	/* 48 means 0 in ASCII */
-	if (*(p) == '.') {
-		     if (major < 0) major = i - 48;
-		else if (major >= 0 && minor < 0) minor = i - 48;
-	}
+  int i, major, minor, release;
+  char *p;
+
+  assert(v);
+  assert(str);
+
+  /* Nota: We don't handle version on 2 digits like X.YY.Z */
+  if (!check_regexp(str, "[0-9].[0-9].[0-9]")) return false;
+
+  i = major = minor = release = -1;
+  for ( p = str; *p ; p++, i = *(p - 1)) {
+
+    /* 48 means 0 in ASCII */
+    if (*(p) == '.') {
+      if (major < 0) major = i - 48;
+      else if (major >= 0 && minor < 0) minor = i - 48;
     }
-    release = *(p - 1) - 48;
+  }
+  release = *(p - 1) - 48;
 
-    v->major = major;
-    v->minor = minor;
-    v->release = release;
+  v->major = major;
+  v->minor = minor;
+  v->release = release;
 
-    return true;
+  return true;
 }
 
 
@@ -93,10 +93,10 @@ bool ows_version_set_str(ows_version * v, char *str)
  */
 void ows_version_free(ows_version * v)
 {
-    assert(v);
+  assert(v);
 
-    free(v);
-    v = NULL;
+  free(v);
+  v = NULL;
 }
 
 
@@ -105,26 +105,26 @@ void ows_version_free(ows_version * v)
  */
 int ows_version_get(ows_version * v)
 {
-    assert(v);
+  assert(v);
 
-    return v->major * 100 + v->minor * 10 + v->release;
+  return v->major * 100 + v->minor * 10 + v->release;
 }
 
 
 bool ows_version_check(ows_version *v)
 {
-    assert(v);
-    if (v->major == -1 || v->minor == -1 || v->release == -1) return false;
-    return true;
+  assert(v);
+  if (v->major == -1 || v->minor == -1 || v->release == -1) return false;
+  return true;
 }
 
 #ifdef OWS_DEBUG
 void ows_version_flush(ows_version * v, FILE * output)
 {
-    assert(v);
-    assert(output);
+  assert(v);
+  assert(output);
 
-    fprintf(output, "version: [%i,%i,%i]\n", v->major, v->minor, v->release);
+  fprintf(output, "version: [%i,%i,%i]\n", v->major, v->minor, v->release);
 }
 #endif
 
diff --git a/src/ows_api.h b/src/ows_api.h
index 29c4ba9..03ea267 100644
--- a/src/ows_api.h
+++ b/src/ows_api.h
@@ -4,19 +4,19 @@
   Permission is hereby granted, free of charge, to any person obtaining a copy
   of this software and associated documentation files (the "Software"), to deal
   in the Software without restriction, including without limitation the rights
-  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 
-  copies of the Software, and to permit persons to whom the Software is 
+  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+  copies of the Software, and to permit persons to whom the Software is
   furnished to do so, subject to the following conditions:
 
   The above copyright notice and this permission notice shall be included in
   all copies or substantial portions of the Software.
 
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
-  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
-  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
-  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
-  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
-  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
   IN THE SOFTWARE.
 */
 
@@ -25,8 +25,10 @@ void array_add (array * a, buffer * key, buffer * value);
 void array_flush (const array * a, FILE * output);
 void array_free (array * a);
 buffer *array_get (const array * a, const char *key);
+buffer *array_get_key(const array * a, const char *value);
 array *array_init ();
 bool array_is_key (const array * a, const char *key);
+bool array_is_value (const array * a, const char *value);
 alist *alist_init();
 void alist_free(alist * al);
 void alist_add(alist * al, buffer * key, buffer * value);
@@ -39,11 +41,13 @@ void buffer_add_head (buffer * buf, char c);
 void buffer_add_head_str (buffer * buf, char *str);
 void buffer_add_int (buffer * buf, int i);
 void buffer_add_str (buffer * buf, const char *str);
+void buffer_add_nstr (buffer * buf, const char *str, size_t n);
 buffer *buffer_from_str(const char *str);
 bool buffer_cmp (const buffer * buf, const char *str);
 bool buffer_ncmp(const buffer * buf, const char *str, size_t n);
 bool buffer_case_cmp (const buffer * buf, const char *str);
 void buffer_copy (buffer * dest, const buffer * src);
+buffer *buffer_clone(buffer * buf);
 void buffer_empty (buffer * buf);
 void buffer_flush (buffer * buf, FILE * output);
 void buffer_free (buffer * buf);
@@ -53,6 +57,8 @@ buffer *buffer_itoa (int i);
 void buffer_pop (buffer * buf, size_t len);
 buffer *buffer_replace (buffer * buf, char *before, char *after);
 void buffer_shift (buffer * buf, size_t len);
+long int buffer_chr(const buffer * buf, char c);
+long int buffer_rchr(const buffer * buf, char c);
 buffer *buffer_encode_xml_entities_str(const char *str);
 buffer *buffer_encode_json_str(const char *str);
 buffer *cgi_add_xml_into_buffer (buffer * element, xmlNodePtr n);
@@ -91,9 +97,13 @@ void list_add (list * l, buffer * value);
 void list_add_by_copy (list * l, buffer * value);
 void list_add_list (list * l, list * l_to_add);
 void list_add_str (list * l, char *value);
+void list_pop(list *l);
+list *list_split (char separator, const buffer * value, bool reverse);
 list *list_explode (char separator, const buffer * value);
 list *list_explode_start_end (char separator_start, char separator_end, buffer * value);
 list *list_explode_str (char separator, const char *value);
+list *list_explode_str_trim(char separator, const char *value);
+void list_implode(buffer * buf, const char * separator, const list * l);
 void list_flush (const list * l, FILE * output);
 void list_free (list * l);
 list *list_init ();
@@ -134,22 +144,28 @@ void ows_get_capabilities_dcpt (const ows * o, const char * req);
 void ows_layer_flush (ows_layer * l, FILE * output);
 void ows_layer_free (ows_layer * l);
 bool ows_layer_in_list (const ows_layer_list * ll, buffer * name);
+buffer *ows_layer_no_uri_to_uri(const ows_layer_list * ll, buffer * name_no_uri);
 ows_layer *ows_layer_init ();
 void ows_layer_list_add (ows_layer_list * ll, ows_layer * l);
-list *ows_layer_list_by_ns_prefix (ows_layer_list * ll, list * layer_name, buffer * ns_prefix);
+list *ows_layer_list_by_ns_prefix (ows_layer_list * ll, list * layer_name_prefix, buffer * ns_prefix);
 list *ows_layer_list_having_storage (const ows_layer_list * ll);
 void ows_layer_list_flush (ows_layer_list * ll, FILE * output);
 void ows_layer_list_free (ows_layer_list * ll);
 bool ows_layer_list_in_list (const ows_layer_list * ll, const list * l);
 ows_layer_list *ows_layer_list_init ();
 array *ows_layer_list_namespaces (ows_layer_list * ll);
-list *ows_layer_list_ns_prefix (ows_layer_list * ll, list * layer_name);
+buffer *ows_layer_no_uri(ows_layer_list * ll, buffer * layer_name);
+buffer *ows_layer_ns_prefix_to_ns_uri(ows_layer_list * ll, buffer * ns_prefix);
+buffer *ows_layer_prefix_to_uri(ows_layer_list * ll, buffer * layer_name_prefix);
+buffer *ows_layer_uri_to_prefix(ows_layer_list * ll, buffer * layer_name);
+list *ows_layer_list_prefix_to_uri(ows_layer_list * ll, list * layer_name_prefix);
+list *ows_layer_list_ns_prefix (ows_layer_list * ll, list * layer_name_prefix);
 bool ows_layer_list_retrievable (const ows_layer_list * ll);
 bool ows_layer_list_writable (const ows_layer_list * ll);
 bool ows_layer_match_table (const ows * o, const buffer * name);
 void ows_layer_node_free (ows_layer_list * ll, ows_layer_node * ln);
 ows_layer_node *ows_layer_node_init ();
-buffer *ows_layer_ns_prefix (ows_layer_list * ll, buffer * layer_name);
+buffer *ows_layer_ns_prefix (ows_layer_list * ll, buffer * layer_name_prefix);
 bool ows_layer_retrievable (const ows_layer_list * ll, const buffer * name);
 buffer *ows_layer_ns_uri (ows_layer_list * ll, buffer * ns_prefix);
 bool ows_layer_writable (const ows_layer_list * ll, const buffer * name);
@@ -166,12 +182,16 @@ list *ows_psql_geometry_column (ows * o, buffer * layer_name);
 buffer *ows_psql_schema_name(ows * o, buffer * layer_name);
 buffer *ows_psql_table_name(ows * o, buffer * layer_name);
 buffer *ows_psql_id_column (ows * o, buffer * layer_name);
+buffer *ows_psql_column_constraint_name(ows * o, buffer * column_name, buffer * table_name);
+list *ows_psql_column_check_constraint(ows * o, buffer * constraint_name);
+buffer *ows_psql_column_character_maximum_length(ows * o, buffer * column_name, buffer * table_name);
 int ows_psql_column_number_id_column(ows * o, buffer * layer_name);
 bool ows_psql_is_geometry_column (ows * o, buffer * layer_name, buffer * column);
 bool ows_psql_is_geometry_valid(ows * o, buffer * geom);
 list *ows_psql_not_null_properties (ows * o, buffer * layer_name);
 buffer *ows_psql_timestamp_to_xml_time (char *timestamp);
-char *ows_psql_to_xsd (buffer * type, ows_version *version);
+char *ows_psql_to_xsd (buffer * type, enum wfs_format format);
+bool ows_psql_is_numeric(buffer * type);
 buffer *ows_psql_type (ows * o, buffer * layer_name, buffer * property);
 buffer *ows_psql_generate_id (ows * o, buffer * layer_name);
 int ows_psql_number_features(ows * o, list * from, list * where);
@@ -217,9 +237,9 @@ void wfs_gml_feature_member (ows * o, wfs_request * wr, buffer * layer_name, lis
 void wfs_parse_operation (ows * o, wfs_request * wr, buffer * op);
 void wfs_request_check (ows * o, wfs_request * wr, const array * cgi);
 void wfs_request_flush (wfs_request * wr, FILE * output);
+buffer *wfs_request_remove_prop_ns_prefix(ows * o, buffer * prop, list * layer_name);
 void wfs_request_free (wfs_request * wr);
 wfs_request *wfs_request_init ();
-buffer *wfs_request_remove_namespaces (ows * o, buffer * b);
 ows_layer_storage * ows_layer_storage_init();
 void ows_layer_storage_free(ows_layer_storage * storage);
 void ows_layer_storage_flush(ows_layer_storage * storage, FILE * output);
diff --git a/src/ows_define.h.in b/src/ows_define.h.in
index 1f0636f..aebf6c8 100644
--- a/src/ows_define.h.in
+++ b/src/ows_define.h.in
@@ -4,31 +4,31 @@
   Permission is hereby granted, free of charge, to any person obtaining a copy
   of this software and associated documentation files (the "Software"), to deal
   in the Software without restriction, including without limitation the rights
-  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 
-  copies of the Software, and to permit persons to whom the Software is 
+  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+  copies of the Software, and to permit persons to whom the Software is
   furnished to do so, subject to the following conditions:
 
   The above copyright notice and this permission notice shall be included in
   all copies or substantial portions of the Software.
 
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
-  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
-  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
-  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
-  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
-  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
   IN THE SOFTWARE.
 */
 
 
-#ifndef OWS_DEFINE_H 
+#ifndef OWS_DEFINE_H
 #define OWS_DEFINE_H
 
 #if @TINYOWS_DEBUG@
 #define OWS_DEBUG
 #endif
 
-#define TINYOWS_VERSION             "1.0.0"
+#define TINYOWS_VERSION             "1.1.0"
 #define TINYOWS_FCGI                @USE_FCGI@
 
 #define OWS_CONFIG_FILE_PATH        "/etc/tinyows.xml"
@@ -37,8 +37,3 @@
 #define WFS_SCHEMA_110              "wfs/1.1.0/wfs.xsd"
 
 #endif /* OWS_DEFINE_H */
-
-
-/*
- * vim: expandtab sw=4 ts=4 
- */
diff --git a/src/ows_struct.h b/src/ows_struct.h
index 6968b97..13e0eab 100644
--- a/src/ows_struct.h
+++ b/src/ows_struct.h
@@ -4,34 +4,34 @@
   Permission is hereby granted, free of charge, to any person obtaining a copy
   of this software and associated documentation files (the "Software"), to deal
   in the Software without restriction, including without limitation the rights
-  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 
-  copies of the Software, and to permit persons to whom the Software is 
+  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+  copies of the Software, and to permit persons to whom the Software is
   furnished to do so, subject to the following conditions:
 
   The above copyright notice and this permission notice shall be included in
   all copies or substantial portions of the Software.
 
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
-  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
-  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
-  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
-  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
-  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
   IN THE SOFTWARE.
 */
 
 
-#ifndef OWS_STRUCT_H 
+#ifndef OWS_STRUCT_H
 #define OWS_STRUCT_H
 
-#include <stdio.h> 		/* FILE prototype */
+#include <stdio.h>    /* FILE prototype */
 
 
 /* ========= Structures ========= */
 
-enum Bool { 
-	false,
-	true
+enum Bool {
+  false,
+  true
 };
 
 typedef enum Bool bool;
@@ -39,199 +39,205 @@ typedef enum Bool bool;
 #define BUFFER_SIZE_INIT   256
 
 typedef struct Buffer {
-    size_t use; 		/** size used for data */
-    size_t size;		/** memory available */
-    size_t realloc;		/** size to next realloc */
-    char * buf;			/** data */
+  size_t use;     /** size used for data */
+  size_t size;    /** memory available */
+  size_t realloc;   /** size to next realloc */
+  char * buf;     /** data */
 } buffer;
 
 
 typedef struct List_node {
-    buffer * value;
-    struct List_node * next;
-    struct List_node * prev;
+  buffer * value;
+  struct List_node * next;
+  struct List_node * prev;
 } list_node;
 
 typedef struct List {
-	list_node * first;
-	list_node * last;
-    unsigned int size;
+  list_node * first;
+  list_node * last;
+  unsigned int size;
 } list;
 
 
 typedef struct Mlist_node {
-    list * value;
-    struct Mlist_node * next;
-    struct Mlist_node * prev;
+  list * value;
+  struct Mlist_node * next;
+  struct Mlist_node * prev;
 } mlist_node;
 
 typedef struct Mlist {
-	mlist_node * first;
-	mlist_node * last;
-    unsigned int size;
+  mlist_node * first;
+  mlist_node * last;
+  unsigned int size;
 } mlist;
 
 
 typedef struct Alist_node {
-	buffer * key;
-	list * value;
-	struct Alist_node * next;
+  buffer * key;
+  list * value;
+  struct Alist_node * next;
 } alist_node;
 
 typedef struct Alist {
-	alist_node * first;
-	alist_node * last;
+  alist_node * first;
+  alist_node * last;
 } alist;
 
 
 typedef struct Array_node {
-	buffer * key;
-	buffer * value;
-	struct Array_node * next;
+  buffer * key;
+  buffer * value;
+  struct Array_node * next;
 } array_node;
 
 typedef struct Array {
-	array_node * first;
-	array_node * last;
+  array_node * first;
+  array_node * last;
 } array;
 
 
 /* ========= OWS Common ========= */
 
 typedef struct Ows_layer_storage {
-    buffer * schema;
-    buffer * table;
-    list * geom_columns;
-    list * not_null_columns;
-    int srid;
-    buffer * pkey;
-    buffer * pkey_sequence;
-    int pkey_column_number;
-    bool is_degree;
-    array * attributes;
+  buffer * schema;
+  buffer * table;
+  list * geom_columns;
+  list * not_null_columns;
+  int srid;
+  buffer * pkey;
+  buffer * pkey_sequence;
+  buffer * pkey_default;
+  int pkey_column_number;
+  bool is_degree;
+  array * attributes;
 } ows_layer_storage;
 
 typedef struct Ows_srs {
-    int srid;
-    buffer * auth_name;
-    int auth_srid;
-    bool is_degree;
-    bool is_reverse_axis;
-    bool is_eastern_axis;
-    bool is_long;
+  int srid;
+  buffer * auth_name;
+  int auth_srid;
+  bool is_degree;
+  bool is_reverse_axis;
+  bool is_eastern_axis;
+  bool is_long;
 } ows_srs;
 
 
 typedef struct Ows_bbox {
-    double xmin;
-    double ymin;
-    double xmax;
-    double ymax;
-    ows_srs * srs;
+  double xmin;
+  double ymin;
+  double xmax;
+  double ymax;
+  ows_srs * srs;
 } ows_bbox;
 
 typedef struct Ows_geobbox {
-    double east;
-    double west;
-    double south;
-    double north;
+  double east;
+  double west;
+  double south;
+  double north;
 } ows_geobbox;
 
 typedef struct Ows_version {
-    int major;
-    int minor;
-    int release;
+  int major;
+  int minor;
+  int release;
 } ows_version;
 
 /*cf table 19 in OWS specification*/
 enum ows_error_code {
-    OWS_ERROR_OPERATION_NOT_SUPPORTED,
-    OWS_ERROR_MISSING_PARAMETER_VALUE,
-    OWS_ERROR_INVALID_PARAMETER_VALUE,
-    OWS_ERROR_VERSION_NEGOTIATION_FAILED,
-    OWS_ERROR_INVALID_UPDATE_SEQUENCE,
-    OWS_ERROR_NO_APPLICABLE_CODE,
-    /* Add-on to the spec on the same way */
-    OWS_ERROR_CONNECTION_FAILED,
-    OWS_ERROR_CONFIG_FILE,
-    OWS_ERROR_REQUEST_SQL_FAILED,
-    OWS_ERROR_REQUEST_HTTP,
-    OWS_ERROR_FORBIDDEN_CHARACTER,
-    OWS_ERROR_MISSING_METADATA,
-    OWS_ERROR_NO_SRS_DEFINED
+  OWS_ERROR_OPERATION_NOT_SUPPORTED,
+  OWS_ERROR_MISSING_PARAMETER_VALUE,
+  OWS_ERROR_INVALID_PARAMETER_VALUE,
+  OWS_ERROR_VERSION_NEGOTIATION_FAILED,
+  OWS_ERROR_INVALID_UPDATE_SEQUENCE,
+  OWS_ERROR_NO_APPLICABLE_CODE,
+  /* Add-on to the spec on the same way */
+  OWS_ERROR_CONNECTION_FAILED,
+  OWS_ERROR_CONFIG_FILE,
+  OWS_ERROR_REQUEST_SQL_FAILED,
+  OWS_ERROR_REQUEST_HTTP,
+  OWS_ERROR_FORBIDDEN_CHARACTER,
+  OWS_ERROR_MISSING_METADATA,
+  OWS_ERROR_NO_SRS_DEFINED
 };
 
 
 typedef struct Ows_layer {
-    struct Ows_layer * parent;
-    int depth;
-    buffer * name;
-    buffer * title;
-    bool retrievable;
-    bool writable;
-    list * srid;
-    ows_geobbox * geobbox;
-    buffer * abstract;
-    list * keywords;
-    list * gml_ns;
-    buffer * ns_prefix;
-    buffer * ns_uri;
-    buffer * encoding;
-    ows_layer_storage * storage;
+  struct Ows_layer * parent;
+  int depth;
+  buffer * name;
+  buffer * name_prefix;
+  buffer * name_no_uri;
+  buffer * title;
+  bool retrievable;
+  bool writable;
+  list * srid;
+  ows_geobbox * geobbox;
+  buffer * abstract;
+  list * keywords;
+  list * exclude_items;
+  list * include_items;
+  buffer * pkey;
+  list * gml_ns;
+  buffer * ns_prefix;
+  buffer * ns_uri;
+  buffer * encoding;
+  ows_layer_storage * storage;
 } ows_layer;
 
 typedef struct Ows_layer_node {
-    ows_layer * layer;
-    struct Ows_layer_node * next;
-    struct Ows_layer_node * prev;
+  ows_layer * layer;
+  struct Ows_layer_node * next;
+  struct Ows_layer_node * prev;
 } ows_layer_node;
 
 typedef struct Ows_layer_list {
-    ows_layer_node * first;
-    ows_layer_node * last;
-    unsigned int size;
+  ows_layer_node * first;
+  ows_layer_node * last;
+  unsigned int size;
 } ows_layer_list;
 
 
 typedef struct Ows_meta {
-    buffer * type;
-    list * versions;
-    buffer * name;
-    buffer * title;
-    buffer * abstract;
-    list * keywords;
-    buffer * fees;
-    buffer * access_constraints;
+  buffer * type;
+  list * versions;
+  buffer * name;
+  buffer * title;
+  buffer * abstract;
+  list * keywords;
+  buffer * fees;
+  buffer * access_constraints;
 } ows_meta;
 
 typedef struct Ows_contact {
-    buffer * name;
-    buffer * site;
-    buffer * indiv_name;
-    buffer * position;
-    buffer * phone;
-    buffer * fax;
-    buffer * online_resource;
-    buffer * address;
-    buffer * postcode;
-    buffer * city;
-    buffer * state;
-    buffer * country;
-    buffer * email;
-    buffer * hours;
-    buffer * instructions;
+  buffer * name;
+  buffer * site;
+  buffer * indiv_name;
+  buffer * position;
+  buffer * phone;
+  buffer * fax;
+  buffer * online_resource;
+  buffer * address;
+  buffer * postcode;
+  buffer * city;
+  buffer * state;
+  buffer * country;
+  buffer * email;
+  buffer * hours;
+  buffer * instructions;
 } ows_contact;
 
 enum ows_service {
-    WMS,
-    WFS,
-    OWS_SERVICE_UNKNOWN
+  WMS,
+  WFS,
+  OWS_SERVICE_UNKNOWN
 };
 
 enum ows_method {
-   OWS_METHOD_UNKNOWN,
-   OWS_METHOD_KVP,
-   OWS_METHOD_XML
+  OWS_METHOD_UNKNOWN,
+  OWS_METHOD_KVP,
+  OWS_METHOD_XML
 };
 
 
@@ -239,67 +245,67 @@ enum ows_method {
 
 
 enum wfs_error_code {
-    WFS_ERROR_INVALID_VERSION,
-    WFS_ERROR_OUTPUT_FORMAT_NOT_SUPPORTED,
-    WFS_ERROR_LAYER_NOT_DEFINED,
-    WFS_ERROR_LAYER_NOT_RETRIEVABLE,
-    WFS_ERROR_LAYER_NOT_WRITABLE,
-    WFS_ERROR_EXCLUSIVE_PARAMETERS,
-    WFS_ERROR_INCORRECT_SIZE_PARAMETER,
-    WFS_ERROR_NO_MATCHING,
-    WFS_ERROR_INVALID_PARAMETER,
-    WFS_ERROR_MISSING_PARAMETER
+  WFS_ERROR_INVALID_VERSION,
+  WFS_ERROR_OUTPUT_FORMAT_NOT_SUPPORTED,
+  WFS_ERROR_LAYER_NOT_DEFINED,
+  WFS_ERROR_LAYER_NOT_RETRIEVABLE,
+  WFS_ERROR_LAYER_NOT_WRITABLE,
+  WFS_ERROR_EXCLUSIVE_PARAMETERS,
+  WFS_ERROR_INCORRECT_SIZE_PARAMETER,
+  WFS_ERROR_NO_MATCHING,
+  WFS_ERROR_INVALID_PARAMETER,
+  WFS_ERROR_MISSING_PARAMETER
 };
 
 enum wfs_request {
-	WFS_REQUEST_UNKNOWN,
-	WFS_GET_CAPABILITIES,
-	WFS_DESCRIBE_FEATURE_TYPE,
-	WFS_GET_FEATURE,
-	WFS_TRANSACTION
+  WFS_REQUEST_UNKNOWN,
+  WFS_GET_CAPABILITIES,
+  WFS_DESCRIBE_FEATURE_TYPE,
+  WFS_GET_FEATURE,
+  WFS_TRANSACTION
 };
 
 enum wfs_format {
-	WFS_FORMAT_UNKNOWN,
-	WFS_XML_SCHEMA,
-	WFS_GML212,
-	WFS_GML311,
-	WFS_GML321,
-	WFS_GEOJSON,
-	WFS_TEXT_XML,
-	WFS_APPLICATION_XML
+  WFS_FORMAT_UNKNOWN,
+  WFS_XML_SCHEMA,
+  WFS_GML212,
+  WFS_GML311,
+  WFS_GML321,
+  WFS_GEOJSON,
+  WFS_TEXT_XML,
+  WFS_APPLICATION_XML
 };
 
 enum wfs_insert_idgen {
-	WFS_GENERATE_NEW,
-	WFS_USE_EXISTING,
-	WFS_REPLACE_DUPLICATE
+  WFS_GENERATE_NEW,
+  WFS_USE_EXISTING,
+  WFS_REPLACE_DUPLICATE
 };
 
 enum ows_schema_type {
-	WFS_SCHEMA_TYPE_100,
-	WFS_SCHEMA_TYPE_110
+  WFS_SCHEMA_TYPE_100,
+  WFS_SCHEMA_TYPE_110
 };
 
 typedef struct Wfs_request {
-    enum wfs_request request;
-    enum wfs_format format;
-    list * typename;
-    ows_bbox * bbox;
-    mlist * propertyname;
-    int maxfeatures;
-    ows_srs * srs;
-    mlist * featureid;
-    list * filter;
-    buffer * operation;
-    list * handle;
-    buffer * resulttype;
-    buffer * sortby;
-    list * sections;
-
-    alist * insert_results;
-    int delete_results;
-    int update_results;
+  enum wfs_request request;
+  enum wfs_format format;
+  list * typename;
+  ows_bbox * bbox;
+  mlist * propertyname;
+  int maxfeatures;
+  ows_srs * srs;
+  mlist * featureid;
+  list * filter;
+  buffer * operation;
+  list * handle;
+  buffer * resulttype;
+  buffer * sortby;
+  list * sections;
+
+  alist * insert_results;
+  int delete_results;
+  int update_results;
 
 } wfs_request;
 
@@ -308,91 +314,92 @@ typedef struct Wfs_request {
 
 
 enum fe_error_code {
-    FE_NO_ERROR,
-    FE_ERROR_FEATUREID,
-    FE_ERROR_FILTER,
-    FE_ERROR_BBOX,
-    FE_ERROR_PROPERTYNAME,
-    FE_ERROR_GEOM_PROPERTYNAME,
-    FE_ERROR_UNITS,
-    FE_ERROR_GEOMETRY,
-    FE_ERROR_FID,
-    FE_ERROR_SRS,
-    FE_ERROR_FUNCTION,
-    FE_ERROR_NAMESPACE
+  FE_NO_ERROR,
+  FE_ERROR_FEATUREID,
+  FE_ERROR_FILTER,
+  FE_ERROR_BBOX,
+  FE_ERROR_PROPERTYNAME,
+  FE_ERROR_GEOM_PROPERTYNAME,
+  FE_ERROR_UNITS,
+  FE_ERROR_GEOMETRY,
+  FE_ERROR_FID,
+  FE_ERROR_SRS,
+  FE_ERROR_FUNCTION,
+  FE_ERROR_NAMESPACE
 };
 
 typedef struct Filter_encoding {
-    bool in_not;
-    buffer * sql;
-    enum fe_error_code error_code;
+  bool in_not;
+  bool is_numeric;
+  buffer * sql;
+  enum fe_error_code error_code;
 } filter_encoding;
 
 
 /* ========= OWS Request & Main ========= */
 
 typedef struct Ows_request {
-    ows_version * version;
-    enum ows_method method;
-    enum ows_service service;
-    union {
-        wfs_request * wfs;
-        } request;
+  ows_version * version;
+  enum ows_method method;
+  enum ows_service service;
+  union {
+    wfs_request * wfs;
+  } request;
 } ows_request;
 
-#define OWS_DEFAULT_XML_ENCODING "UTF-8" 
-#define OWS_DEFAULT_DB_ENCODING "UTF8" 
+#define OWS_DEFAULT_XML_ENCODING "UTF-8"
+#define OWS_DEFAULT_DB_ENCODING "UTF8"
 
 #define OWS_MAX_DOUBLE 1e15  /* %f vs %g */
 
 typedef struct Ows {
-    bool init;
-    bool exit;
-    PGconn * pg;
-    bool mapfile;
-    buffer * config_file;
-    buffer * schema_dir;
-    buffer * online_resource;
-    buffer * pg_dsn;
-    buffer * encoding;
-    buffer * db_encoding;
-
-    FILE* log;
-    int log_level;
-    buffer * log_file;
-
-    FILE* output;
-
-    ows_meta * metadata;
-    ows_contact * contact;
-
-    int degree_precision;
-    int meter_precision;
-
-    int max_features;
-    ows_geobbox * max_geobbox;
-
-    bool display_bbox;
-    bool expose_pk;
-    bool estimated_extent;
-
-    bool check_schema;
-    bool check_valid_geom;
-
-    array * cgi;
-    list * psql_requests;
-    ows_layer_list * layers;
-    ows_request * request;
-    ows_version * wfs_default_version;
-    ows_version * postgis_version;
-
-    xmlSchemaPtr  schema_wfs_100;
-    xmlSchemaPtr  schema_wfs_110;
+  bool init;
+  bool exit;
+  PGconn * pg;
+  bool mapfile;
+  buffer * config_file;
+  buffer * schema_dir;
+  buffer * online_resource;
+  buffer * pg_dsn;
+  buffer * encoding;
+  buffer * db_encoding;
+
+  FILE* log;
+  int log_level;
+  buffer * log_file;
+
+  FILE* output;
+
+  ows_meta * metadata;
+  ows_contact * contact;
+
+  int degree_precision;
+  int meter_precision;
+
+  int max_features;
+  ows_geobbox * max_geobbox;
+
+  bool display_bbox;
+  bool expose_pk;
+  bool estimated_extent;
+
+  bool check_schema;
+  bool check_valid_geom;
+
+  array * cgi;
+  list * psql_requests;
+  ows_layer_list * layers;
+  ows_request * request;
+  ows_version * wfs_default_version;
+  ows_version * postgis_version;
+
+  xmlSchemaPtr  schema_wfs_100;
+  xmlSchemaPtr  schema_wfs_110;
 } ows;
 
 #endif /* OWS_STRUCT_H */
 
 
 /*
- * vim: expandtab sw=4 ts=4 
+ * vim: expandtab sw=4 ts=4
  */
diff --git a/src/sld/sld.h b/src/sld/sld.h
deleted file mode 100644
index d57ee6f..0000000
--- a/src/sld/sld.h
+++ /dev/null
@@ -1,97 +0,0 @@
-typedef struct Sld {
-	sld_layer_list * layers;
-	ows_version * version;
-} sld;
-
-typedef struct Sld_named_layer {
-	buffer * name;
-	buffer * filter;
-	sld_style_list * styles;
-} sld_named_layer;
-
-typedef struct Sld_style {
-	buffer * name;
-	buffer * title;
-	buffer * abstract;
-	bool is_default;
-	feature_type_style_list * feature_type_style;
-} sld_style;
-
-
-typedef struct Sld_feature_type_style {
-	buffer * name;
-	buffer * title;
-	buffer * abstract;
-	buffer * feature_type_name;
-	array * semantic_type_identifier;
-	rule_list * rules;
-} sld_feature_type_style;
-
-
-typedef struct Sld_rule {
-	buffer * name;
-	buffer * title;
-	buffer * abstract;
-	sld_graphic * legend_graphic;
-	fe_filter * filter;
-	bool is_else_filter;
-	double minscale;
-	double maxscale;
-	symbolizer_type_list * symbolizers;
-} sld_rules;
-
-
-typedef struct Sld_line_symbolizer {
-	GEOM * geom; /* FIXME be sure about Postgis geom type */
-	sld_stroke * stroke;
-} sld_line_symbolizer;
-
-enum sld_stroke_linejoin {
-	SLD_STROKE_LINEJOIN_MITRE,
-	SLD_STROKE_LINEJOIN_ROUND,
-	SLD_STROKE_LINEJOIN_BEVEL,
-};
-
-enum sld_stroke_linecap {
-	SLD_STROKE_LINECAP_BUTT,
-	SLD_STROKE_LINECAP_ROUND,
-	SLD_STROKE_LINECAP_SQUARE,
-};
-
-typedef struct Sld_stroke {
-	ows_color * stroke;
-	double * opacity;
-	double width;
-	enum sld_stroke_linejoin  linejoin;
-	enum sld_stroke_linecap  linecap;
-	buffer * dasharray; /* FIXME need a double list */
-	double dashoffset;
-	sld_graphic * graphic;
-	bool is_graphic_fill;
-} sld_stroke;
-
-typedef struct Sld_polygon_symbolizer {
-	GEOM * geom; /* FIXME be sure about Postgis geom type */
-	sld_fill * fill;
-	sld_stroke * stroke;
-} sld_polygon_symbolizer;
-
-typedef struct Sld_fill {
-	sld_color * color;
-	double opacity;
-} sld_fill;
-
-
-typedef struct Sld_point_symbolyzer {
-	GEOM * geom; /* FIXME be sure about Postgis geom type */
-	sld_graphic * graphic;
-} sld_point_symbolizer;
-
-
-typedef struct Sld_graphic {
-	buffer * url;
-	bool is_mark;
-	double opacity;
-	double rotation;
-	double size;
-} sld_graphic;
diff --git a/src/struct/alist.c b/src/struct/alist.c
index 465dd99..3674aa5 100644
--- a/src/struct/alist.c
+++ b/src/struct/alist.c
@@ -38,15 +38,15 @@
  */
 alist *alist_init()
 {
-    alist *al = NULL;
+  alist *al = NULL;
 
-    al = malloc(sizeof(alist));
-    assert(al);
+  al = malloc(sizeof(alist));
+  assert(al);
 
-    al->first = NULL;
-    al->last = NULL;
+  al->first = NULL;
+  al->last = NULL;
 
-    return al;
+  return al;
 }
 
 
@@ -55,23 +55,23 @@ alist *alist_init()
  */
 void alist_free(alist * al)
 {
-    alist_node *an = NULL;
-    alist_node *an_to_free = NULL;
+  alist_node *an = NULL;
+  alist_node *an_to_free = NULL;
 
-    assert(al);
+  assert(al);
 
-    for (an = al->first ; an ; /* empty */) {
-        an_to_free = an;
-        an = an->next;
+  for (an = al->first ; an ; /* empty */) {
+    an_to_free = an;
+    an = an->next;
 
-        buffer_free(an_to_free->key);
-        list_free(an_to_free->value);
-        free(an_to_free);
-        an_to_free = NULL;
-    }
+    buffer_free(an_to_free->key);
+    list_free(an_to_free->value);
+    free(an_to_free);
+    an_to_free = NULL;
+  }
 
-    free(al);
-    al = NULL;
+  free(al);
+  al = NULL;
 }
 
 
@@ -82,31 +82,31 @@ void alist_free(alist * al)
  */
 void alist_add(alist * al, buffer * key, buffer * value)
 {
-    alist_node *an;
+  alist_node *an;
 
-    assert(al);
-    assert(key);
-    assert(value);
+  assert(al);
+  assert(key);
+  assert(value);
 
-    if (!alist_is_key(al, key->buf)) {
-        an = malloc(sizeof(alist_node));
-        assert(an);
+  if (!alist_is_key(al, key->buf)) {
+    an = malloc(sizeof(alist_node));
+    assert(an);
 
-        an->key = key;
-        an->value = list_init();
+    an->key = key;
+    an->value = list_init();
 
-        if (!al->first) al->first = an;
-        else            al->last->next = an;
+    if (!al->first) al->first = an;
+    else            al->last->next = an;
 
-        al->last = an;
-        al->last->next = NULL;
-    } else {
-        for (an = al->first ; an ; an = an->next)
-            if (buffer_case_cmp(an->key, key->buf))
-                break;
-    }
+    al->last = an;
+    al->last->next = NULL;
+  } else {
+    for (an = al->first ; an ; an = an->next)
+      if (buffer_case_cmp(an->key, key->buf))
+        break;
+  }
 
-    list_add(an->value, value);
+  list_add(an->value, value);
 }
 
 
@@ -115,18 +115,18 @@ void alist_add(alist * al, buffer * key, buffer * value)
  */
 bool alist_is_key(const alist * al, const char *key)
 {
-    alist_node *an;
-    size_t ks;
+  alist_node *an;
+  size_t ks;
 
-    assert(al);
-    assert(key);
+  assert(al);
+  assert(key);
 
-    for (ks = strlen(key), an = al->first ; an ; an = an->next)
-        if (ks == an->key->use)
-            if (buffer_case_cmp(an->key, key))
-                return true;
+  for (ks = strlen(key), an = al->first ; an ; an = an->next)
+    if (ks == an->key->use)
+      if (buffer_case_cmp(an->key, key))
+        return true;
 
-    return false;
+  return false;
 }
 
 
@@ -137,21 +137,21 @@ bool alist_is_key(const alist * al, const char *key)
  */
 list *alist_get(const alist * al, const char *key)
 {
-    alist_node *an;
-    size_t ks;
+  alist_node *an;
+  size_t ks;
 
-    assert(al);
-    assert(key);
+  assert(al);
+  assert(key);
 
-    for (ks = strlen(key), an = al->first ; an ; an = an->next) {
-        if (ks == an->key->use)
-            if (buffer_case_cmp(an->key, key))
-                break;
-    }
+  for (ks = strlen(key), an = al->first ; an ; an = an->next) {
+    if (ks == an->key->use)
+      if (buffer_case_cmp(an->key, key))
+        break;
+  }
 
-    assert(an);
+  assert(an);
 
-    return an->value;
+  return an->value;
 }
 
 
@@ -162,18 +162,18 @@ list *alist_get(const alist * al, const char *key)
  */
 void alist_flush(const alist * al, FILE * output)
 {
-    alist_node *an;
-
-    assert(al);
-    assert(output);
-
-    for (an = al->first ; an ; an = an->next) {
-        fprintf(output, "[");
-        buffer_flush(an->key, output);
-        fprintf(output, "] -> ");
-        list_flush(an->value, output);
-        fprintf(output, "\n");
-    }
+  alist_node *an;
+
+  assert(al);
+  assert(output);
+
+  for (an = al->first ; an ; an = an->next) {
+    fprintf(output, "[");
+    buffer_flush(an->key, output);
+    fprintf(output, "] -> ");
+    list_flush(an->value, output);
+    fprintf(output, "\n");
+  }
 }
 #endif
 
diff --git a/src/struct/array.c b/src/struct/array.c
index 1f6354d..b1cc3d7 100644
--- a/src/struct/array.c
+++ b/src/struct/array.c
@@ -35,15 +35,15 @@
  */
 array *array_init()
 {
-    array *arr = NULL;
+  array *arr = NULL;
 
-    arr = malloc(sizeof(array));
-    assert(arr);
+  arr = malloc(sizeof(array));
+  assert(arr);
 
-    arr->first = NULL;
-    arr->last = NULL;
+  arr->first = NULL;
+  arr->last = NULL;
 
-    return arr;
+  return arr;
 }
 
 
@@ -52,23 +52,23 @@ array *array_init()
  */
 void array_free(array * a)
 {
-    array_node *an = NULL;
-    array_node *an_to_free = NULL;
+  array_node *an = NULL;
+  array_node *an_to_free = NULL;
 
-    assert(a);
+  assert(a);
 
-    for (an = a->first ; an ; /* empty */) {
-        an_to_free = an;
-        an = an->next;
+  for (an = a->first ; an ; /* empty */) {
+    an_to_free = an;
+    an = an->next;
 
-        buffer_free(an_to_free->key);
-        buffer_free(an_to_free->value);
-        free(an_to_free);
-        an_to_free = NULL;
-    }
+    buffer_free(an_to_free->key);
+    buffer_free(an_to_free->value);
+    free(an_to_free);
+    an_to_free = NULL;
+  }
 
-    free(a);
-    a = NULL;
+  free(a);
+  a = NULL;
 }
 
 
@@ -79,23 +79,23 @@ void array_free(array * a)
  */
 void array_add(array * a, buffer * key, buffer * value)
 {
-    array_node *an;
+  array_node *an;
 
-    assert(a);
-    assert(key);
-    assert(value);
+  assert(a);
+  assert(key);
+  assert(value);
 
-    an = malloc(sizeof(array_node));
-    assert(an);
+  an = malloc(sizeof(array_node));
+  assert(an);
 
-    an->key = key;
-    an->value = value;
+  an->key = key;
+  an->value = value;
 
-    if (!a->first) a->first = an;
-    else           a->last->next = an;
+  if (!a->first) a->first = an;
+  else           a->last->next = an;
 
-    a->last = an;
-    a->last->next = NULL;
+  a->last = an;
+  a->last->next = NULL;
 }
 
 
@@ -104,18 +104,38 @@ void array_add(array * a, buffer * key, buffer * value)
  */
 bool array_is_key(const array * a, const char *key)
 {
-    array_node *an;
-    size_t ks;
+  array_node *an;
+  size_t ks;
 
-    assert(a);
-    assert(key);
+  assert(a);
+  assert(key);
 
-    for (ks = strlen(key), an = a->first ; an ; an = an->next)
-        if (ks == an->key->use)
-            if (buffer_case_cmp(an->key, key))
-                return true;
+  for (ks = strlen(key), an = a->first ; an ; an = an->next)
+    if (ks == an->key->use)
+      if (buffer_case_cmp(an->key, key))
+        return true;
 
-    return false;
+  return false;
+}
+
+
+/*
+ * Check if a given value string is or not in the array
+ */
+bool array_is_value(const array * a, const char *value)
+{
+  array_node *an;
+  size_t vs;
+
+  assert(a);
+  assert(value);
+
+  for (vs = strlen(value), an = a->first ; an ; an = an->next)
+    if (vs == an->value->use)
+      if (buffer_case_cmp(an->value, value))
+        return true;
+
+  return false;
 }
 
 
@@ -126,21 +146,44 @@ bool array_is_key(const array * a, const char *key)
  */
 buffer *array_get(const array * a, const char *key)
 {
-    array_node *an;
-    size_t ks;
+  array_node *an;
+  size_t ks;
 
-    assert(a);
-    assert(key);
+  assert(a);
+  assert(key);
 
-    for (ks = strlen(key), an = a->first ; an ; an = an->next) {
-        if (ks == an->key->use)
-            if (buffer_case_cmp(an->key, key))
-                break;
-    }
+  for (ks = strlen(key), an = a->first ; an ; an = an->next) {
+    if (ks == an->key->use)
+      if (buffer_case_cmp(an->key, key))
+        break;
+  }
 
-    assert(an);
+  assert(an);
 
-    return an->value;
+  return an->value;
+}
+
+
+/*
+ * Return a key buffer from an array (from value)
+ */
+buffer *array_get_key(const array * a, const char *value)
+{
+  array_node *an;
+  size_t vs;
+
+  assert(a);
+  assert(value);
+
+  for (vs = strlen(value), an = a->first ; an ; an = an->next) {
+    if (vs == an->value->use)
+      if (buffer_case_cmp(an->value, value))
+        break;
+  }
+
+  assert(an);
+
+  return an->key;
 }
 
 
@@ -151,22 +194,17 @@ buffer *array_get(const array * a, const char *key)
  */
 void array_flush(const array * a, FILE * output)
 {
-    array_node *an;
-
-    assert(a);
-    assert(output);
-
-    for (an = a->first ; an ; an = an->next) {
-        fprintf(output, "[");
-        buffer_flush(an->key, output);
-        fprintf(output, "] -> ");
-        buffer_flush(an->value, output);
-        fprintf(output, "\n");
-    }
+  array_node *an;
+
+  assert(a);
+  assert(output);
+
+  for (an = a->first ; an ; an = an->next) {
+    fprintf(output, "[");
+    buffer_flush(an->key, output);
+    fprintf(output, "] -> ");
+    buffer_flush(an->value, output);
+    fprintf(output, "\n");
+  }
 }
 #endif
-
-
-/*
- * vim: expandtab sw=4 ts=4
- */
diff --git a/src/struct/buffer.c b/src/struct/buffer.c
index 79c93c2..5815d86 100644
--- a/src/struct/buffer.c
+++ b/src/struct/buffer.c
@@ -43,15 +43,15 @@
  */
 static void buffer_realloc(buffer * buf)
 {
-    assert(buf);
+  assert(buf);
 
-    buf->buf = realloc(buf->buf, buf->realloc * sizeof(char));
-    assert(buf->buf);
+  buf->buf = realloc(buf->buf, buf->realloc * sizeof(char));
+  assert(buf->buf);
 
-    buf->size = buf->realloc;
-    buf->realloc *= 4;
+  buf->size = buf->realloc;
+  buf->realloc *= 4;
 
-    if (buf->realloc >= SIZE_MAX) assert(false);
+  if (buf->realloc >= SIZE_MAX) assert(false);
 }
 
 
@@ -60,20 +60,20 @@ static void buffer_realloc(buffer * buf)
  */
 buffer *buffer_init()
 {
-    buffer *buf;
+  buffer *buf;
 
-    buf = malloc(sizeof(buffer));
-    assert(buf);
+  buf = malloc(sizeof(buffer));
+  assert(buf);
 
-    buf->buf = malloc(BUFFER_SIZE_INIT * sizeof(char));
-    assert(buf->buf);
+  buf->buf = malloc(BUFFER_SIZE_INIT * sizeof(char));
+  assert(buf->buf);
 
-    buf->size = BUFFER_SIZE_INIT;
-    buf->realloc = BUFFER_SIZE_INIT * 2;
-    buf->use = 0;
-    buf->buf[0] = '\0';
+  buf->size = BUFFER_SIZE_INIT;
+  buf->realloc = BUFFER_SIZE_INIT * 2;
+  buf->use = 0;
+  buf->buf[0] = '\0';
 
-    return buf;
+  return buf;
 }
 
 
@@ -82,14 +82,14 @@ buffer *buffer_init()
  */
 void buffer_free(buffer * buf)
 {
-    assert(buf);
-    assert(buf->buf);
+  assert(buf);
+  assert(buf->buf);
 
-    free(buf->buf);
-    buf->buf = NULL;
+  free(buf->buf);
+  buf->buf = NULL;
 
-    free(buf);
-    buf = NULL;
+  free(buf);
+  buf = NULL;
 }
 
 
@@ -99,9 +99,9 @@ void buffer_free(buffer * buf)
  */
 void buffer_empty(buffer * buf)
 {
-    assert(buf);
-    if (buf->use > 0) buf->buf[0] = '\0';
-    buf->use = 0;
+  assert(buf);
+  if (buf->use > 0) buf->buf[0] = '\0';
+  buf->use = 0;
 }
 
 
@@ -111,9 +111,9 @@ void buffer_empty(buffer * buf)
  */
 void buffer_flush(buffer * buf, FILE * output)
 {
-    assert(buf);
-    assert(output);
-    fprintf(output, "%s", buf->buf);
+  assert(buf);
+  assert(output);
+  fprintf(output, "%s", buf->buf);
 }
 
 
@@ -122,13 +122,13 @@ void buffer_flush(buffer * buf, FILE * output)
  */
 void buffer_add(buffer * buf, char c)
 {
-    assert(buf);
+  assert(buf);
 
-    if ((buf->use + 1) >= buf->size) buffer_realloc(buf);
+  if ((buf->use + 1) >= buf->size) buffer_realloc(buf);
 
-    buf->buf[buf->use] = c;
-    buf->buf[buf->use + 1] = '\0';
-    buf->use++;
+  buf->buf[buf->use] = c;
+  buf->buf[buf->use + 1] = '\0';
+  buf->use++;
 }
 
 
@@ -137,15 +137,14 @@ void buffer_add(buffer * buf, char c)
  */
 buffer *buffer_ftoa(double f)
 {
-    buffer *res;
+  buffer *res;
 
-    res = buffer_init();
-    /* FIXME use snprintf instead ! */
-    while (res->size < 100) buffer_realloc(res);
-    sprintf(res->buf, "%f", f);
-    res->use = strlen(res->buf);
+  res = buffer_init();
+  while (res->size < 100) buffer_realloc(res);
+  snprintf(res->buf, 99, "%f", f);
+  res->use = strlen(res->buf);
 
-    return res;
+  return res;
 }
 
 
@@ -154,13 +153,13 @@ buffer *buffer_ftoa(double f)
  */
 void buffer_add_double(buffer * buf, double f)
 {
-    buffer *b;
+  buffer *b;
 
-    assert(buf);
+  assert(buf);
 
-    b = buffer_ftoa(f);
-    buffer_copy(buf, b);
-    buffer_free(b);
+  b = buffer_ftoa(f);
+  buffer_copy(buf, b);
+  buffer_free(b);
 }
 
 
@@ -169,13 +168,13 @@ void buffer_add_double(buffer * buf, double f)
  */
 void buffer_add_int(buffer * buf, int i)
 {
-    buffer *b;
+  buffer *b;
 
-    assert(buf);
+  assert(buf);
 
-    b = buffer_itoa(i);
-    buffer_copy(buf, b);
-    buffer_free(b);
+  b = buffer_itoa(i);
+  buffer_copy(buf, b);
+  buffer_free(b);
 }
 
 
@@ -184,27 +183,27 @@ void buffer_add_int(buffer * buf, int i)
  */
 buffer *buffer_itoa(int i)
 {
-    buffer *res;
+  buffer *res;
 
-    res = buffer_init();
-    /* FIXME use snprintf instead ! */
-    while (res->size < 100) buffer_realloc(res);
-    sprintf(res->buf, "%i", i);
-    res->use = strlen(res->buf);
+  res = buffer_init();
+  /* FIXME use snprintf instead ! */
+  while (res->size < 100) buffer_realloc(res);
+  sprintf(res->buf, "%i", i);
+  res->use = strlen(res->buf);
 
-    return res;
+  return res;
 }
 
 
 buffer *buffer_from_str(const char *str)
 {
-    buffer *b;
+  buffer *b;
 
-    assert(str);
-    b = buffer_init();
+  assert(str);
+  b = buffer_init();
 
-    buffer_add_str(b, str);
-    return b;
+  buffer_add_str(b, str);
+  return b;
 }
 
 
@@ -213,20 +212,20 @@ buffer *buffer_from_str(const char *str)
  */
 void buffer_add_head(buffer * buf, char c)
 {
-    size_t i;
+  size_t i;
 
-    assert(buf);
+  assert(buf);
 
-    if ((buf->use + 2) >= buf->size)
-        buffer_realloc(buf);
+  if ((buf->use + 2) >= buf->size)
+    buffer_realloc(buf);
 
-    if (buf->use > 0)
-        for (i = buf->use; i > 0; i--)
-            buf->buf[i] = buf->buf[i - 1];
+  if (buf->use > 0)
+    for (i = buf->use; i > 0; i--)
+      buf->buf[i] = buf->buf[i - 1];
 
-    buf->buf[0] = c;
-    buf->buf[buf->use + 1] = '\0';
-    buf->use++;
+  buf->buf[0] = c;
+  buf->buf[buf->use + 1] = '\0';
+  buf->use++;
 }
 
 
@@ -235,13 +234,13 @@ void buffer_add_head(buffer * buf, char c)
  */
 void buffer_add_head_str(buffer * buf, char *str)
 {
-    int i;
+  int i;
 
-    assert(buf);
-    assert(str);
+  assert(buf);
+  assert(str);
 
-    for (i = strlen(str); i != 0; i--)
-        buffer_add_head(buf, str[i - 1]);
+  for (i = strlen(str); i != 0; i--)
+    buffer_add_head(buf, str[i - 1]);
 }
 
 
@@ -250,10 +249,34 @@ void buffer_add_head_str(buffer * buf, char *str)
  */
 void buffer_add_str(buffer * buf, const char *str)
 {
-    assert(buf);
-    assert(str);
+  assert(buf);
+  assert(str);
 
-    while (*str++) buffer_add(buf, *(str - 1));
+  if ((strlen(str) + buf->use) >= buf->size)
+    while ((strlen(str) + buf->use) >= buf->size)
+      buffer_realloc(buf);
+
+  strcat(buf->buf, str);
+  buf->use = buf->use + strlen(str);
+}
+
+
+/*
+ * Add n char from string to a buffer
+ */
+void buffer_add_nstr(buffer * buf, const char *str, size_t n)
+{
+  assert(buf);
+  assert(str);
+  assert(n > 0);
+  assert(n <= strlen(str));
+
+  if ((n + buf->use) >= buf->size) 
+    while ((n + buf->use) >= buf->size)
+      buffer_realloc(buf);
+
+  strncat(buf->buf, str, n);
+  buf->use = buf->use + n;
 }
 
 
@@ -262,18 +285,18 @@ void buffer_add_str(buffer * buf, const char *str)
  */
 bool buffer_cmp(const buffer * buf, const char *str)
 {
-    size_t i;
+  size_t i;
 
-    assert(buf);
-    assert(str);
+  assert(buf);
+  assert(str);
 
-    if (buf->use != strlen(str)) return false;
+  if (buf->use != strlen(str)) return false;
 
-    for (i = 0; i < buf->use; i++)
-        if (buf->buf[i] != str[i])
-            return false;
+  for (i = 0; i < buf->use; i++)
+    if (buf->buf[i] != str[i])
+      return false;
 
-    return true;
+  return true;
 }
 
 
@@ -282,18 +305,18 @@ bool buffer_cmp(const buffer * buf, const char *str)
  */
 bool buffer_ncmp(const buffer * buf, const char *str, size_t n)
 {
-    size_t i;
+  size_t i;
 
-    assert(buf);
-    assert(str);
+  assert(buf);
+  assert(str);
 
-    if (buf->use < n) return false;
+  if (buf->use < n) return false;
 
-    for (i = 0 ; i < n ; i++)
-        if (buf->buf[i] != str[i])
-            return false;
+  for (i = 0 ; i < n ; i++)
+    if (buf->buf[i] != str[i])
+      return false;
 
-    return true;
+  return true;
 }
 
 /*
@@ -302,18 +325,18 @@ bool buffer_ncmp(const buffer * buf, const char *str, size_t n)
  */
 bool buffer_case_cmp(const buffer * buf, const char *str)
 {
-    size_t i;
+  size_t i;
 
-    assert(buf);
-    assert(str);
+  assert(buf);
+  assert(str);
 
-    if (buf->use != strlen(str)) return false;
+  if (buf->use != strlen(str)) return false;
 
-    for (i = 0; i < buf->use; i++)
-        if (toupper(buf->buf[i]) != toupper(str[i]))
-            return false;
+  for (i = 0; i < buf->use; i++)
+    if (toupper(buf->buf[i]) != toupper(str[i]))
+      return false;
 
-    return true;
+  return true;
 }
 
 
@@ -322,13 +345,27 @@ bool buffer_case_cmp(const buffer * buf, const char *str)
  */
 void buffer_copy(buffer * dest, const buffer * src)
 {
-    size_t i;
+  assert(dest);
+  assert(src);
+
+  buffer_add_str(dest, src->buf);
+}
 
-    assert(dest);
-    assert(src);
 
-    for (i = 0; i < src->use; i++)
-        buffer_add(dest, src->buf[i]);
+/*
+ * Copy the whole buffer struct to an another struct
+ */
+buffer *buffer_clone(buffer * buf)
+{
+  buffer *b;
+
+  assert(buf);
+  assert(buf->buf);
+
+  b = buffer_init();
+  buffer_copy(b, buf);
+  
+  return b;
 }
 
 
@@ -337,11 +374,11 @@ void buffer_copy(buffer * dest, const buffer * src)
  */
 void buffer_pop(buffer * buf, size_t len)
 {
-    assert(buf);
-    assert(len <= buf->use);
+  assert(buf);
+  assert(len <= buf->use);
 
-    buf->use -= len;
-    buf->buf[buf->use] = '\0';
+  buf->use -= len;
+  buf->buf[buf->use] = '\0';
 }
 
 
@@ -350,18 +387,18 @@ void buffer_pop(buffer * buf, size_t len)
  */
 void buffer_shift(buffer * buf, size_t len)
 {
-    size_t i;
+  size_t i;
 
-    assert(buf);
-    assert(len <= buf->use);
+  assert(buf);
+  assert(len <= buf->use);
 
-    if (len <= 0) return; /* nothing to do */
+  if (len <= 0) return; /* nothing to do */
 
-    for (i = len; i < buf->use; i++)
-        buf->buf[i - len] = buf->buf[i];
+  for (i = len; i < buf->use; i++)
+    buf->buf[i - len] = buf->buf[i];
 
-    buf->use -= len;
-    buf->buf[buf->use] = '\0';
+  buf->use -= len;
+  buf->buf[buf->use] = '\0';
 }
 
 
@@ -370,41 +407,80 @@ void buffer_shift(buffer * buf, size_t len)
  */
 buffer *buffer_replace(buffer * buf, char *before, char *after)
 {
-    buffer *new_buf, *rest;
-    size_t length;
-    char *pos;
-
-    assert(before);
-    assert(after);
-    assert(buf);
-
-    if (!strcmp(before, after)) return buf; /* To prevent infinite loop */
-
-    new_buf = buffer_init();
-    buffer_copy(new_buf, buf);
-
-    pos = strstr(new_buf->buf, before); /* Look for first occurence */
-    while (pos) {
-        length = strlen(pos);
-        
-        buffer_pop(new_buf, length);    /* Copy the first part without occurence */
-        buffer_add_str(new_buf, after); /* Add the string after */
-
-        /* Add the remaining string */
-        rest = buffer_init();
-        buffer_copy(rest, buf);
-        buffer_shift(rest, buf->use - length + strlen(before));
-        buffer_copy(new_buf, rest);
-        buffer_free(rest);
-        
-        pos = strstr(new_buf->buf, before); /* Search the next occurence */
-    }
+  buffer *new_buf, *rest;
+  size_t length;
+  char *pos;
+
+  assert(before);
+  assert(after);
+  assert(buf);
+
+  if (!strcmp(before, after)) return buf; /* To prevent infinite loop */
+
+  new_buf = buffer_init();
+  buffer_copy(new_buf, buf);
+
+  pos = strstr(new_buf->buf, before); /* Look for first occurence */
+  while (pos) {
+    length = strlen(pos);
+
+    buffer_pop(new_buf, length);    /* Copy the first part without occurence */
+    buffer_add_str(new_buf, after); /* Add the string after */
+
+    /* Add the remaining string */
+    rest = buffer_init();
+    buffer_copy(rest, buf);
+    buffer_shift(rest, buf->use - length + strlen(before));
+    buffer_copy(new_buf, rest);
+    buffer_free(rest);
+
+    pos = strstr(new_buf->buf, before); /* Search the next occurence */
+  }
+
+  buffer_empty(buf);
+  buffer_copy(buf, new_buf);
+  buffer_free(new_buf);
+
+  return buf;
+}
+
+
+/*
+ * Retrieve first position inside a buffer of a specific char
+ * or -1 if not found.
+ */
+long int buffer_chr(const buffer * buf, char c)
+{
+  size_t i;
+
+  assert(buf);
+  assert(c);
+
+  for(i=0 ; i < buf->use ; i++) {
+    if (buf->buf[i] == c)
+      return i;
+  }
+
+  return -1;
+}
+
+
+/*
+ * Same as buffer_chr but begin by the end of buffer 
+ */
+long int buffer_rchr(const buffer * buf, char c)
+{
+  size_t i;
+
+  assert(buf);
+  assert(c);
 
-    buffer_empty(buf);
-    buffer_copy(buf, new_buf);
-    buffer_free(new_buf);
+  for(i=buf->use ; i > 0 ; i--) {
+    if (buf->buf[i] == c)
+      return i;
+  }
 
-    return buf;
+  return -1;
 }
 
 
@@ -413,46 +489,46 @@ buffer *buffer_replace(buffer * buf, char *before, char *after)
  * Function originaly written by Assefa
  *
  * The replacements performed are:
- *  &	-> &
- *  "	-> "
- *  <	-> <
- *  >	-> >
+ *  & -> &
+ *  " -> "
+ *  < -> <
+ *  > -> >
  */
 buffer *buffer_encode_xml_entities_str(const char * str)
 {
-    buffer *buf;
+  buffer *buf;
 
-    assert(str);
-    buf = buffer_init();
+  assert(str);
+  buf = buffer_init();
 
-    for( /* empty */ ; *str ; str++) {
-    	switch(*str) {
-	        case '&':
- 	        buffer_add_str(buf, "&");
-       	        break;
+  for( /* empty */ ; *str ; str++) {
+    switch(*str) {
+      case '&':
+        buffer_add_str(buf, "&");
+        break;
 
-            case '<':
-                buffer_add_str(buf, "<");
-                break;
+      case '<':
+        buffer_add_str(buf, "<");
+        break;
 
-            case '>':
-                buffer_add_str(buf, ">");
-                break;
+      case '>':
+        buffer_add_str(buf, ">");
+        break;
 
-            case '"':
-                buffer_add_str(buf, """);
-                break;
+      case '"':
+        buffer_add_str(buf, """);
+        break;
 
-            case '\'':
-                buffer_add_str(buf, "'");
-                break;
+      case '\'':
+        buffer_add_str(buf, "'");
+        break;
 
-            default:
-		buffer_add(buf, *str);
-	    }
+      default:
+        buffer_add(buf, *str);
     }
+  }
 
-    return buf;
+  return buf;
 }
 
 
@@ -465,23 +541,23 @@ buffer *buffer_encode_xml_entities_str(const char * str)
  */
 buffer *buffer_encode_json_str(const char * str)
 {
-    buffer *buf;
+  buffer *buf;
 
-    assert(str);
-    buf = buffer_init();
+  assert(str);
+  buf = buffer_init();
 
-    for( /* empty */ ; *str ; str++) {
-        switch(*str) {
-            case '"':
-                    buffer_add_str(buf, "\\\"");
-                break;
+  for( /* empty */ ; *str ; str++) {
+    switch(*str) {
+      case '"':
+        buffer_add_str(buf, "\\\"");
+        break;
 
-            default:
-                    buffer_add(buf, *str);
-            }
+      default:
+        buffer_add(buf, *str);
     }
+  }
 
-    return buf;
+  return buf;
 }
 
 
diff --git a/src/struct/cgi_request.c b/src/struct/cgi_request.c
index 7bc526f..7801be8 100644
--- a/src/struct/cgi_request.c
+++ b/src/struct/cgi_request.c
@@ -41,11 +41,11 @@
  */
 bool cgi_method_get()
 {
-    char *method;
+  char *method;
 
-    method = getenv("REQUEST_METHOD");
-    if (method && !strcmp(method, "GET")) return true;
-    return false;
+  method = getenv("REQUEST_METHOD");
+  if (method && !strcmp(method, "GET")) return true;
+  return false;
 }
 
 
@@ -54,11 +54,11 @@ bool cgi_method_get()
  */
 bool cgi_method_post()
 {
-    char *method;
+  char *method;
 
-    method = getenv("REQUEST_METHOD");
-    if (method && !strcmp(method, "POST")) return true;
-    return false;
+  method = getenv("REQUEST_METHOD");
+  if (method && !strcmp(method, "POST")) return true;
+  return false;
 }
 
 
@@ -67,27 +67,30 @@ bool cgi_method_post()
  */
 char *cgi_getback_query(ows * o)
 {
-    char *query;
-    int query_size = 0;
-    size_t result;
-
-    if (cgi_method_get()) query = getenv("QUERY_STRING");
-    else if (cgi_method_post()) {
-        query_size = atoi(getenv("CONTENT_LENGTH"));
-
-        query = malloc(sizeof(char) * query_size + 1);
-        assert(query); /* FIXME Really ? */
-        result = fread(query, query_size, 1, stdin);
-        if (ferror(stdin)) {
-            ows_error(o, OWS_ERROR_REQUEST_HTTP, "Error on QUERY input", "request");
-            return NULL;
-	}
-        query[query_size] = '\0';
+  char *query;
+  int query_size = 0;
+  size_t s;
+
+  if (cgi_method_get()) query = getenv("QUERY_STRING");
+  else if (cgi_method_post()) {
+    query_size = atoi(getenv("CONTENT_LENGTH"));
+
+    query = malloc(sizeof(char) * query_size + 1);
+    if (!query) {
+      ows_error(o, OWS_ERROR_REQUEST_HTTP, "Error on QUERY input - Memory allocation", "request");
+      return NULL;
     }
-    /* local tests */
-    else query = getenv("QUERY_STRING");
+    s = fread(query, query_size, 1, stdin);
+    if (ferror(stdin)) {
+      ows_error(o, OWS_ERROR_REQUEST_HTTP, "Error on QUERY input", "request");
+      return NULL;
+    }
+    query[query_size] = '\0';
+  }
+  /* local tests */
+  else query = getenv("QUERY_STRING");
 
-    return query;
+  return query;
 }
 
 
@@ -97,12 +100,12 @@ char *cgi_getback_query(ows * o)
  */
 static char cgi_hexatochar(char *what)
 {
-    char digit;
+  char digit;
 
-    digit = (what[0] >= 'A' ? ((what[0] & 0xdf) - 'A') + 10 : (what[0] - '0'));
-    digit *= 16;
-    digit += (what[1] >= 'A' ? ((what[1] & 0xdf) - 'A') + 10 : (what[1] - '0'));
-    return (digit);
+  digit = (what[0] >= 'A' ? ((what[0] & 0xdf) - 'A') + 10 : (what[0] - '0'));
+  digit *= 16;
+  digit += (what[1] >= 'A' ? ((what[1] & 0xdf) - 'A') + 10 : (what[1] - '0'));
+  return (digit);
 }
 
 
@@ -112,16 +115,16 @@ static char cgi_hexatochar(char *what)
  */
 static void cgi_unescape_url(char *url)
 {
-    int x, y;
+  int x, y;
 
-    for (x = 0, y = 0; url[y]; ++x, ++y) {
-        if ((url[x] = url[y]) == '%') {
-            url[x] = cgi_hexatochar(&url[y + 1]);
-            y += 2;
-        }
+  for (x = 0, y = 0; url[y]; ++x, ++y) {
+    if ((url[x] = url[y]) == '%') {
+      url[x] = cgi_hexatochar(&url[y + 1]);
+      y += 2;
     }
+  }
 
-    url[x] = '\0';
+  url[x] = '\0';
 }
 
 
@@ -130,22 +133,22 @@ static void cgi_unescape_url(char *url)
  */
 static void cgi_plustospace(char *str)
 {
-    int x;
+  int x;
 
-    for (x=0 ; str[x] ; x++)
-        if (str[x] == '+') str[x] = ' ';
+  for (x=0 ; str[x] ; x++)
+    if (str[x] == '+') str[x] = ' ';
 }
 
 /*
- * Remove CR or LF in URL 
+ * Remove CR or LF in URL
  */
 static void cgi_remove_crlf(char *str)
 {
-    int x;
+  int x;
 
-    for (x=0 ; str[x] ; x++)
-        if (str[x] == '\n' || str[x] == '\r')
-		str[x] = ' ';
+  for (x=0 ; str[x] ; x++)
+    if (str[x] == '\n' || str[x] == '\r')
+      str[x] = ' ';
 }
 
 /*
@@ -154,88 +157,88 @@ static void cgi_remove_crlf(char *str)
  */
 array *cgi_parse_kvp(ows * o, char *query)
 {
-    int i;
-    bool in_key;
-    buffer *key;
-    buffer *val;
-    array *arr;
-    char string[2];
+  int i;
+  bool in_key;
+  buffer *key;
+  buffer *val;
+  array *arr;
+  char string[2];
+
+  assert(o);
+  assert(query);
 
-    assert(o);
-    assert(query);
+  key = buffer_init();
+  val = buffer_init();
+  arr = array_init();
+  in_key = true;
 
-    key = buffer_init();
-    val = buffer_init();
-    arr = array_init();
-    in_key = true;
+  cgi_unescape_url(query);
+  cgi_remove_crlf(query);
+  cgi_plustospace(query);
 
-    cgi_unescape_url(query);
-    cgi_remove_crlf(query);
-    cgi_plustospace(query);
+  for (i = 0; i < CGI_QUERY_MAX && query[i] ; i++) {
 
-    for (i = 0; i < CGI_QUERY_MAX && query[i] ; i++) {
+    if (query[i] == '&') {
 
-        if (query[i] == '&') {
+      in_key = true;
 
-            in_key = true;
+      array_add(arr, key, val);
+      key = buffer_init();
+      val = buffer_init();
+
+    } else if (query[i] == '=') {
+      /* char '=' inside filter key mustn't be taken into account */
+      if ((!buffer_case_cmp(key, "filter") || !buffer_case_cmp(key, "outputformat")) && buffer_cmp(val, ""))
+        in_key = false;
+      else buffer_add(val, query[i]);
+    }
+    /* Check characters'CGI request */
+    else {
+      /* to check the regular expression, argument must be a string, not a char */
+      string[0] = query[i];
+      string[1] = '\0';
 
-            array_add(arr, key, val);
-            key = buffer_init();
-            val = buffer_init();
+      if (in_key) {
 
-        } else if (query[i] == '=') {
-            /* char '=' inside filter key mustn't be taken into account */
-            if ((!buffer_case_cmp(key, "filter") || !buffer_case_cmp(key, "outputformat")) && buffer_cmp(val, ""))
-                in_key = false;
-            else buffer_add(val, query[i]);
+        /* if word is key, only letters are allowed */
+        if (check_regexp(string, "[A-Za-zà-ÿ]"))
+          buffer_add(key, tolower(query[i]));
+        else {
+          buffer_free(key);
+          buffer_free(val);
+          array_free(arr);
+          ows_error(o, OWS_ERROR_MISSING_PARAMETER_VALUE,
+                    "QUERY_STRING contains forbidden characters", "request");
+          return NULL;
         }
-        /* Check characters'CGI request */
+      } else {
+        /* if word is filter key, more characters are allowed */
+        if (                                 check_regexp(string, "[A-Za-zà-ÿ0-9.\\=;,():/\\*_ \\-]")
+                                             || (buffer_cmp(key, "filter") && check_regexp(string, "[A-Za-zà-ÿ0-9.#\\,():/_<> %\"\'=\\*!\\-]|\\[|\\]")))
+          buffer_add(val, query[i]);
         else {
-            /* to check the regular expression, argument must be a string, not a char */
-            string[0] = query[i];
-            string[1] = '\0';
-
-            if (in_key) {
-
-                /* if word is key, only letters are allowed */
-                if (check_regexp(string, "[A-Za-zà-ÿ]"))
-                    buffer_add(key, tolower(query[i]));
-                else {
-                    buffer_free(key);
-                    buffer_free(val);
-                    array_free(arr);
-                    ows_error(o, OWS_ERROR_MISSING_PARAMETER_VALUE,
-                              "QUERY_STRING contains forbidden characters", "request");
-                    return NULL;
-                }
-            } else {
-                /* if word is filter key, more characters are allowed */
-                if (                                 check_regexp(string, "[A-Za-zà-ÿ0-9.\\=;,():/\\*_ \\-]") 
-                    || (buffer_cmp(key, "filter") && check_regexp(string, "[A-Za-zà-ÿ0-9.#\\,():/_<> %\"\'=\\*!\\-]|\\[|\\]")))
-                    buffer_add(val, query[i]);
-                else {
-                    buffer_free(key);
-                    buffer_free(val);
-                    array_free(arr);
-                    ows_error(o, OWS_ERROR_MISSING_PARAMETER_VALUE,
-                              "QUERY_STRING contains forbidden characters", "request");
-                    return NULL;
-                }
-            }
+          buffer_free(key);
+          buffer_free(val);
+          array_free(arr);
+          ows_error(o, OWS_ERROR_MISSING_PARAMETER_VALUE,
+                    "QUERY_STRING contains forbidden characters", "request");
+          return NULL;
         }
+      }
     }
+  }
 
-    if (i == CGI_QUERY_MAX) {
-        buffer_free(key);
-        buffer_free(val);
-        array_free(arr);
-        ows_error(o, OWS_ERROR_REQUEST_HTTP, "QUERY_STRING too long", "request");
-        return NULL;
-    }
+  if (i == CGI_QUERY_MAX) {
+    buffer_free(key);
+    buffer_free(val);
+    array_free(arr);
+    ows_error(o, OWS_ERROR_REQUEST_HTTP, "QUERY_STRING too long", "request");
+    return NULL;
+  }
 
-    array_add(arr, key, val);
+  array_add(arr, key, val);
 
-    return arr;
+  return arr;
 }
 
 
@@ -244,23 +247,23 @@ array *cgi_parse_kvp(ows * o, char *query)
  */
 static array *cgi_add_node(array * arr, xmlNodePtr n)
 {
-    buffer *key, *val;
-    xmlChar *content;
+  buffer *key, *val;
+  xmlChar *content;
 
-    assert(arr);
-    assert(n);
+  assert(arr);
+  assert(n);
 
-    key = buffer_init();
-    val = buffer_init();
+  key = buffer_init();
+  val = buffer_init();
 
-    buffer_add_str(key, (char *) n->name);
-    content = xmlNodeGetContent(n);
-    buffer_add_str(val, (char *) content);
-    xmlFree(content);
+  buffer_add_str(key, (char *) n->name);
+  content = xmlNodeGetContent(n);
+  buffer_add_str(val, (char *) content);
+  xmlFree(content);
 
-    array_add(arr, key, val);
+  array_add(arr, key, val);
 
-    return arr;
+  return arr;
 }
 
 
@@ -269,23 +272,23 @@ static array *cgi_add_node(array * arr, xmlNodePtr n)
  */
 static array *cgi_add_att(array * arr, xmlAttr * att)
 {
-    buffer *key, *val;
-    xmlChar *content;
+  buffer *key, *val;
+  xmlChar *content;
 
-    assert(arr);
-    assert(att);
+  assert(arr);
+  assert(att);
 
-    key = buffer_init();
-    val = buffer_init();
+  key = buffer_init();
+  val = buffer_init();
 
-    buffer_add_str(key, (char *) att->name);
-    content = xmlNodeGetContent(att->children);
-    buffer_add_str(val, (char *) content);
-    xmlFree(content);
+  buffer_add_str(key, (char *) att->name);
+  content = xmlNodeGetContent(att->children);
+  buffer_add_str(val, (char *) content);
+  xmlFree(content);
 
-    array_add(arr, key, val);
+  array_add(arr, key, val);
 
-    return arr;
+  return arr;
 }
 
 
@@ -294,52 +297,52 @@ static array *cgi_add_att(array * arr, xmlAttr * att)
  */
 static array *cgi_add_sortby(array * arr, xmlNodePtr n)
 {
-    buffer *key, *val;
-    xmlNodePtr elemt, node;
-    xmlChar *content;
-
-    assert(arr);
-    assert(n);
+  buffer *key, *val;
+  xmlNodePtr elemt, node;
+  xmlChar *content;
 
-    content = NULL;
-    key = buffer_init();
-    buffer_add_str(key, (char *) n->name);
-    val = buffer_init();
+  assert(arr);
+  assert(n);
 
-    elemt = n->children;
+  content = NULL;
+  key = buffer_init();
+  buffer_add_str(key, (char *) n->name);
+  val = buffer_init();
 
-    if (elemt->type != XML_ELEMENT_NODE) elemt = elemt->next;
+  elemt = n->children;
 
-    /* parse the properties to sort */
-    for ( /* empty */ ; elemt ; elemt = elemt->next) {
-        if (elemt->type == XML_ELEMENT_NODE) {
-            node = elemt->children;
-            if (node->type != XML_ELEMENT_NODE) node = node->next;
+  if (elemt->type != XML_ELEMENT_NODE) elemt = elemt->next;
 
-            /* add the property name */
-            content = xmlNodeGetContent(node);
-            buffer_add_str(val, (char *) content);
-            xmlFree(content);
+  /* parse the properties to sort */
+  for ( /* empty */ ; elemt ; elemt = elemt->next) {
+    if (elemt->type == XML_ELEMENT_NODE) {
+      node = elemt->children;
+      if (node->type != XML_ELEMENT_NODE) node = node->next;
 
-            buffer_add_str(val, " ");
+      /* add the property name */
+      content = xmlNodeGetContent(node);
+      buffer_add_str(val, (char *) content);
+      xmlFree(content);
 
-            node = node->next;
-            if (node->type != XML_ELEMENT_NODE) node = node->next;
+      buffer_add_str(val, " ");
 
-            /* add the order */
-            content = xmlNodeGetContent(node);
-            buffer_add_str(val, (char *) content);
-            xmlFree(content);
+      node = node->next;
+      if (node->type != XML_ELEMENT_NODE) node = node->next;
 
-        }
+      /* add the order */
+      content = xmlNodeGetContent(node);
+      buffer_add_str(val, (char *) content);
+      xmlFree(content);
 
-        if (elemt->next && elemt->next->type == XML_ELEMENT_NODE)
-		buffer_add_str(val, ",");
     }
 
-    array_add(arr, key, val);
+    if (elemt->next && elemt->next->type == XML_ELEMENT_NODE)
+      buffer_add_str(val, ",");
+  }
+
+  array_add(arr, key, val);
 
-    return arr;
+  return arr;
 }
 
 
@@ -348,26 +351,26 @@ static array *cgi_add_sortby(array * arr, xmlNodePtr n)
  */
 static array *cgi_add_buffer(array * arr, buffer * b, char *name)
 {
-    buffer *key, *val;
+  buffer *key, *val;
 
-    assert(arr);
-    assert(b);
-    assert(name);
+  assert(arr);
+  assert(b);
+  assert(name);
 
-    key = buffer_init();
-    buffer_add_str(key, name);
+  key = buffer_init();
+  buffer_add_str(key, name);
 
-    /* if there is only one element in brackets, brackets are useless so delete them */
-    if (check_regexp(b->buf, "^\\([^\\)]*\\)$") || check_regexp(b->buf, "^\\(.*position\\(\\).*\\)$")) {
-        buffer_shift(b, 1);
-        buffer_pop(b, 1);
-    }
+  /* if there is only one element in brackets, brackets are useless so delete them */
+  if (check_regexp(b->buf, "^\\([^\\)]*\\)$") || check_regexp(b->buf, "^\\(.*position\\(\\).*\\)$")) {
+    buffer_shift(b, 1);
+    buffer_pop(b, 1);
+  }
 
-    val = buffer_init();
-    buffer_copy(val, b);
-    array_add(arr, key, val);
+  val = buffer_init();
+  buffer_copy(val, b);
+  array_add(arr, key, val);
 
-    return arr;
+  return arr;
 }
 
 
@@ -376,18 +379,18 @@ static array *cgi_add_buffer(array * arr, buffer * b, char *name)
  */
 static buffer *cgi_add_into_buffer(buffer * b, xmlNodePtr n, bool need_comma)
 {
-    xmlChar *content;
+  xmlChar *content;
 
-    assert(b);
-    assert(n);
+  assert(b);
+  assert(n);
 
-    if (need_comma) buffer_add_str(b, ",");
+  if (need_comma) buffer_add_str(b, ",");
 
-    content = xmlNodeGetContent(n);
-    buffer_add_str(b, (char *) content);
-    xmlFree(content);
+  content = xmlNodeGetContent(n);
+  buffer_add_str(b, (char *) content);
+  xmlFree(content);
 
-    return b;
+  return b;
 }
 
 
@@ -396,34 +399,35 @@ static buffer *cgi_add_into_buffer(buffer * b, xmlNodePtr n, bool need_comma)
  */
 buffer *cgi_add_xml_into_buffer(buffer * element, xmlNodePtr n)
 {
-    xmlBufferPtr buf;
-    xmlNsPtr * ns;
-    int i;
+  xmlBufferPtr buf;
+  xmlNsPtr * ns;
+  int i;
 
-    assert(element);
-    assert(n);
+  assert(element);
+  assert(n);
 
-    ns = xmlGetNsList(n->doc, n);
+  ns = xmlGetNsList(n->doc, n);
 
-    for (i = 0 ; ns[i] ; i++)
-        xmlNewNs(n, ns[i]->href, ns[i]->prefix);
+  for (i = 0 ; ns[i] ; i++)
+    xmlNewNs(n, ns[i]->href, ns[i]->prefix);
 
-    buf = xmlBufferCreate();
-    xmlNodeDump(buf, n->doc, n, 0, 0);
-    buffer_add_str(element, (char *) buf->content);
+  buf = xmlBufferCreate();
+  xmlNodeDump(buf, n->doc, n, 0, 0);
+  buffer_add_str(element, (char *) buf->content);
 
-    xmlBufferFree(buf);
-    xmlFree(ns);
+  xmlBufferFree(buf);
+  xmlFree(ns);
 
-    return element;
+  return element;
 }
 
 
-static bool is_node_ns_wfs(xmlNodePtr n) 
+static bool is_node_ns_wfs(xmlNodePtr n)
 {
-    if (n->ns && n->ns->href && (!strcmp("http://www.opengis.net/wfs", (char *) n->ns->href) 
-                              || !strcmp("http://www.opengis.net/ogc", (char *) n->ns->href))) return true;
-    return false;
+  if (n->ns && n->ns->href 
+       && (!strcmp("http://www.opengis.net/wfs", (char *) n->ns->href)
+       ||  !strcmp("http://www.opengis.net/ogc", (char *) n->ns->href))) return true;
+  return false;
 }
 
 /*
@@ -431,163 +435,173 @@ static bool is_node_ns_wfs(xmlNodePtr n)
  */
 array *cgi_parse_xml(ows * o, char *query)
 {
-    buffer *key, *val, *operations, *prop, *filter, *typename;
-    bool prop_need_comma, typ_need_comma;
-    xmlDocPtr xmldoc;
-    xmlAttr *att;
-    array *arr;
-    bool lock_error, unknown_error;
-    xmlNodePtr node, n = NULL;
-
-    assert(o);
-    assert(query);
-
-    prop_need_comma = typ_need_comma = false;
-    lock_error = unknown_error = false;
-
-    xmldoc = xmlParseMemory(query, strlen(query));
-
-    if (!xmldoc || !(n = xmlDocGetRootElement(xmldoc))) {
-        xmlFreeDoc(xmldoc);
-        ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "xml isn't valid", "request");
-        return NULL;
-    }
+  buffer *key, *val, *operations, *prop, *filter, *typename;
+  bool prop_need_comma, typ_need_comma;
+  xmlDocPtr xmldoc;
+  xmlAttr *att;
+  array *arr, *o_ns;
+  bool lock_error, unknown_error;
+  xmlNodePtr node, n = NULL;
 
-    arr = array_init();
+  assert(o);
+  assert(query);
 
-    operations = buffer_init();
-    prop = buffer_init();;
-    filter = buffer_init();
-    typename = buffer_init();
+  prop_need_comma = typ_need_comma = false;
+  lock_error = unknown_error = false;
 
-    /* First child processed aside because name node match value array instead of key array */
-    key = buffer_from_str("request");
-    val = buffer_from_str((char *) n->name);
-    array_add(arr, key, val);
+  xmldoc = xmlParseMemory(query, strlen(query));
 
-    /* Retrieve the namespace linked to the first node */
-    if (n->ns && n->ns->href) {
-        key = buffer_from_str("xmlns");
-        val = buffer_from_str((char *) n->ns->href);
-        array_add(arr, key, val);
-    }
+  if (!xmldoc || !(n = xmlDocGetRootElement(xmldoc))) {
+    xmlFreeDoc(xmldoc);
+    ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "XML isn't valid", "request");
+    return NULL;
+  }
 
-    /* Name element is put in key, and content element in value */
-    for (att = n->properties ; att ; att = att->next)
-        arr = cgi_add_att(arr, att);
+  arr = array_init();
 
-    for (n = n->children; n; n = n->next) {
-        if (n->type != XML_ELEMENT_NODE) continue; /* Eat spaces */
-        if (!is_node_ns_wfs(n)) continue;          /* NS check */
+  operations = buffer_init();
+  prop = buffer_init();;
+  filter = buffer_init();
+  typename = buffer_init();
 
-        for (att = n->properties ; att ; att = att->next) {
+  o_ns = ows_layer_list_namespaces(o->layers);
 
-            /* Add typename to the matching global buffer */
-            if (!strcmp((char *) att->name, "typeName")) {
-                typename = cgi_add_into_buffer(typename, att->children, typ_need_comma);
-                typ_need_comma = true;
-            
-            } else arr = cgi_add_att(arr, att); /* Add name and content element in array */
-        }
+  /* First child processed aside because name node match value array instead of key array */
+  key = buffer_from_str("request");
+  val = buffer_from_str((char *) n->name);
+  array_add(arr, key, val);
 
-        if (is_node_ns_wfs(n) && !strcmp((char *) n->name, "TypeName")) {
-            /* Add typename to the matching global buffer */
-            typename = cgi_add_into_buffer(typename, n, typ_need_comma);
-            typ_need_comma = true;
-        }
-        else if (is_node_ns_wfs(n) && !strcmp((char *) n->name, "LockID")) lock_error = true;
-        /* If it's an operation, keep the xml to analyze it later */
-        else if (  is_node_ns_wfs(n) 
-                   && (    !strcmp((char *) n->name, "Insert")
-                        || !strcmp((char *) n->name, "Delete")
-                        || !strcmp((char *) n->name, "Update"))) {
-
-            if (!operations->use) buffer_add_str(operations, "<operations>");
-            operations = cgi_add_xml_into_buffer(operations, n); /* Add the whole xml operation to the buffer */
-        }
-        /* if node name match 'Query', parse the children elements */
-        else if (is_node_ns_wfs(n) && !strcmp((char *) n->name, "Query")) {
-            /* each query's propertynames and filter must be in brackets */
-            buffer_add_str(prop, "(");
-            buffer_add_str(filter, "(");
-
-            for (node = n->children; node; node = node->next) {
-                /*execute the process only if n is an element and not spaces for instance */
-                if (node->type != XML_ELEMENT_NODE) continue;
-
-                if (is_node_ns_wfs(node) && !strcmp((char *) node->name, "PropertyName")) {
-                    /* add propertyname to the matching global buffer */
-                    prop = cgi_add_into_buffer(prop, node, prop_need_comma);
-                    prop_need_comma = true;
-                } else if (is_node_ns_wfs(node) && !strcmp((char *) node->name, "Filter")) {
-                    /* add the whole xml filter to the matching global buffer */
-                    filter = cgi_add_xml_into_buffer(filter, node);
-                } else if (is_node_ns_wfs(node) && !strcmp((char *) node->name, "SortBy")) {
-                    /* add sortby element to the array */
-                    arr = cgi_add_sortby(arr, node);
-                } else {
-                    /* add element to the array */
-                    arr = cgi_add_node(arr, node);
-                }
-            }
-
-            /* when there aren't any propertynames, an '*' must be included into 
-               the buffer to be sur that propertyname's size and typename's size are similar */
-            if (prop_need_comma == false) buffer_add_str(prop, "*");
-
-            buffer_add_str(prop, ")");
-            prop_need_comma = false;
-            /* when there is no filter, an empty element must be included into
-	       the list to be sur that filter's size and typename's size are similar */
-            buffer_add_str(filter, ")");
-
-        } else unknown_error = true;
-    }
+  /* Retrieve the namespace linked to the first node */
+  if (n->ns && n->ns->href) {
+    key = buffer_from_str("xmlns");
+    val = buffer_from_str((char *) n->ns->href);
+    array_add(arr, key, val);
+  }
 
-    /* operations */
-    if (operations->use) {
-        buffer_add_str(operations, "</operations>");
-        arr = cgi_add_buffer(arr, operations, "operations");
-    }
+  /* Name element is put in key, and content element in value */
+  for (att = n->properties ; att ; att = att->next)
+    arr = cgi_add_att(arr, att);
 
-    /* propertyname */
-    if (prop->use) {
-        /* if buffer just contains a series of (*), propertyname not useful */
-        if (!check_regexp(prop->buf, "^[\\(\\)\\*]+$")) {
-            arr = cgi_add_buffer(arr, prop, "propertyname");
-        }
-    }
+  for (n = n->children; n; n = n->next) {
+    if (n->type != XML_ELEMENT_NODE) continue; /* Eat spaces */
+    if (!is_node_ns_wfs(n)) continue;          /* NS check */
 
-    /* filter */
-    if (filter->use) {
-        /* if buffer just contains a series of (), filter not useful */
-        if (!check_regexp(filter->buf, "^[\\(\\)]+$")) {
-            arr = cgi_add_buffer(arr, filter, "filter");
-        }
-    }
+    for (att = n->properties ; att ; att = att->next) {
 
-    /* typename */
-    if (typename->use) arr = cgi_add_buffer(arr, typename, "typename");
+      /* Add typename to the matching global buffer */
+      if (!strcmp((char *) att->name, "typeName")) {
 
-    buffer_free(prop);
-    buffer_free(operations);
-    buffer_free(filter);
-    buffer_free(typename);
+        typename = cgi_add_into_buffer(typename, att->children, typ_need_comma);
+        typ_need_comma = true;
 
-    xmlFreeDoc(xmldoc);
+        /* Handle case when ns_prefix don't match but ns_uri does */
+        /* FIXME is this still work with several ns_uri ? */
+        if (n->nsDef && n->nsDef->href && array_is_value(o_ns, (char *) n->nsDef->href)) {
+          buffer_shift(typename, strlen((char *) n->nsDef->prefix));
+          buffer_add_head_str(typename, (array_get_key(o_ns, (char *) n->nsDef->href))->buf);
+        }
 
-    if (lock_error) {
-        array_free(arr);
-        ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "LockID is not implemented", "request");
-        return NULL;
+      } else arr = cgi_add_att(arr, att); /* Add name and content element in array */
     }
-    if (unknown_error) {
-        array_free(arr);
-        ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "Unknown or invalid Query", "request");
-        return NULL;
+
+    if (is_node_ns_wfs(n) && !strcmp((char *) n->name, "TypeName")) {
+      /* Add typename to the matching global buffer */
+      typename = cgi_add_into_buffer(typename, n, typ_need_comma);
+      typ_need_comma = true;
+    } else if (is_node_ns_wfs(n) && !strcmp((char *) n->name, "LockID")) lock_error = true;
+    /* If it's an operation, keep the xml to analyze it later */
+    else if (  is_node_ns_wfs(n)
+               && (    !strcmp((char *) n->name, "Insert")
+                    || !strcmp((char *) n->name, "Delete")
+                    || !strcmp((char *) n->name, "Update"))) {
+
+      if (!operations->use) buffer_add_str(operations, "<operations>");
+      operations = cgi_add_xml_into_buffer(operations, n); /* Add the whole xml operation to the buffer */
+    }
+    /* if node name match 'Query', parse the children elements */
+    else if (is_node_ns_wfs(n) && !strcmp((char *) n->name, "Query")) {
+      /* each query's propertynames and filter must be in brackets */
+      buffer_add_str(prop, "(");
+      buffer_add_str(filter, "(");
+
+      for (node = n->children; node; node = node->next) {
+        /*execute the process only if n is an element and not spaces for instance */
+        if (node->type != XML_ELEMENT_NODE) continue;
+
+        if (is_node_ns_wfs(node) && !strcmp((char *) node->name, "PropertyName")) {
+          /* add propertyname to the matching global buffer */
+          prop = cgi_add_into_buffer(prop, node, prop_need_comma);
+          prop_need_comma = true;
+        } else if (is_node_ns_wfs(node) && !strcmp((char *) node->name, "Filter")) {
+          /* add the whole xml filter to the matching global buffer */
+          filter = cgi_add_xml_into_buffer(filter, node);
+        } else if (is_node_ns_wfs(node) && !strcmp((char *) node->name, "SortBy")) {
+          /* add sortby element to the array */
+          arr = cgi_add_sortby(arr, node);
+        } else {
+          /* add element to the array */
+          arr = cgi_add_node(arr, node);
+        }
+      }
+
+      /* when there aren't any propertynames, an '*' must be included into
+         the buffer to be sur that propertyname's size and typename's size are similar */
+      if (prop_need_comma == false) buffer_add_str(prop, "*");
+
+      buffer_add_str(prop, ")");
+      prop_need_comma = false;
+      /* when there is no filter, an empty element must be included into
+               the list to be sur that filter's size and typename's size are similar */
+      buffer_add_str(filter, ")");
+
+    } else unknown_error = true;
+  }
+
+  /* operations */
+  if (operations->use) {
+    buffer_add_str(operations, "</operations>");
+    arr = cgi_add_buffer(arr, operations, "operations");
+  }
+
+  /* propertyname */
+  if (prop->use) {
+    /* if buffer just contains a series of (*), propertyname not useful */
+    if (!check_regexp(prop->buf, "^[\\(\\)\\*]+$")) {
+      arr = cgi_add_buffer(arr, prop, "propertyname");
     }
+  }
 
-    return arr;
+  /* filter */
+  if (filter->use) {
+    /* if buffer just contains a series of (), filter not useful */
+    if (!check_regexp(filter->buf, "^[\\(\\)]+$")) {
+      arr = cgi_add_buffer(arr, filter, "filter");
+    }
+  }
+
+  /* typename */
+  if (typename->use) arr = cgi_add_buffer(arr, typename, "typename");
+
+  buffer_free(prop);
+  buffer_free(operations);
+  buffer_free(filter);
+  buffer_free(typename);
+  array_free(o_ns);
+
+  xmlFreeDoc(xmldoc);
+
+  if (lock_error) {
+    array_free(arr);
+    ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "LockID is not implemented", "request");
+    return NULL;
+  }
+  if (unknown_error) {
+    array_free(arr);
+    ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "Unknown or invalid Query", "request");
+    return NULL;
+  }
+
+  return arr;
 }
 
 
diff --git a/src/struct/list.c b/src/struct/list.c
index 5f154b0..9e0555a 100644
--- a/src/struct/list.c
+++ b/src/struct/list.c
@@ -35,16 +35,16 @@
  */
 list *list_init()
 {
-    list *l = NULL;
+  list *l = NULL;
 
-    l = malloc(sizeof(list));
-    assert(l);
+  l = malloc(sizeof(list));
+  assert(l);
 
-    l->first = NULL;
-    l->last = NULL;
-    l->size = 0;
+  l->first = NULL;
+  l->last = NULL;
+  l->size = 0;
 
-    return l;
+  return l;
 }
 
 
@@ -53,13 +53,13 @@ list *list_init()
  */
 void list_free(list * l)
 {
-    assert(l);
+  assert(l);
 
-    while (l->first != NULL) list_node_free(l, l->first);
+  while (l->first) list_node_free(l, l->first);
 
-    l->last = NULL;
-    free(l);
-    l = NULL;
+  l->last = NULL;
+  free(l);
+  l = NULL;
 }
 
 
@@ -70,27 +70,27 @@ void list_free(list * l)
  */
 void list_add(list * l, buffer * value)
 {
-    list_node *ln;
+  list_node *ln;
 
-    assert(l);
-    assert(value);
-    assert(l->size < UINT_MAX);
+  assert(l);
+  assert(value);
+  assert(l->size < UINT_MAX);
 
-    ln = list_node_init();
+  ln = list_node_init();
 
-    ln->value = value;
+  ln->value = value;
 
-    if (!l->first) {
-        ln->prev = NULL;
-        l->first = ln;
-    } else {
-        ln->prev = l->last;
-        l->last->next = ln;
-    }
-
-    l->last = ln;
-    l->last->next = NULL;
-    l->size++;
+  if (!l->first) {
+    ln->prev = NULL;
+    l->first = ln;
+  } else {
+    ln->prev = l->last;
+    l->last->next = ln;
+  }
+
+  l->last = ln;
+  l->last->next = NULL;
+  l->size++;
 }
 
 
@@ -101,28 +101,46 @@ void list_add(list * l, buffer * value)
  */
 void list_add_str(list * l, char *value)
 {
-    list_node *ln;
+  list_node *ln;
 
-    assert(l);
-    assert(value);
-    assert(l->size < UINT_MAX);
+  assert(l);
+  assert(value);
+  assert(l->size < UINT_MAX);
 
-    ln = list_node_init();
+  ln = list_node_init();
 
-    ln->value = buffer_init();
-    buffer_add_str(ln->value, value);
+  ln->value = buffer_init();
+  buffer_add_str(ln->value, value);
 
-    if (!l->first) {
-        ln->prev = NULL;
-        l->first = ln;
-    } else {
-        ln->prev = l->last;
-        l->last->next = ln;
-    }
+  if (!l->first) {
+    ln->prev = NULL;
+    l->first = ln;
+  } else {
+    ln->prev = l->last;
+    l->last->next = ln;
+  }
+
+  l->last = ln;
+  l->last->next = NULL;
+  l->size++;
+}
+
+
+void list_pop(list *l)
+{
+  list_node *ln;
+
+  assert(l);
+  if (l->size == 0) return;
+
+  ln = l->last->prev;
+  list_node_free(l, l->last);
+  ln->next = NULL; 
+  l->last = ln;
+  l->size--;
 
-    l->last = ln;
-    l->last->next = NULL;
-    l->size++;
+  if (l->size == 0) l->first = l->last = NULL;
+  if (l->size == 1) l->first = l->last = ln;
 }
 
 
@@ -133,31 +151,31 @@ void list_add_str(list * l, char *value)
  */
 void list_add_list(list * l, list * l_to_add)
 {
-    list_node *ln, *ln_parse;
-
-    assert(l);
-    assert(l_to_add);
-
-    for (ln_parse = l_to_add->first ; ln_parse ; ln_parse = ln_parse->next) {
-        if (!in_list(l, ln_parse->value)) {
-            ln = list_node_init();
-
-            ln->value = buffer_init();
-            buffer_copy(ln->value, ln_parse->value);
-
-            if (!l->first) {
-                ln->prev = NULL;
-                l->first = ln;
-            } else {
-                ln->prev = l->last;
-                l->last->next = ln;
-            }
-
-            l->last = ln;
-            l->last->next = NULL;
-            l->size++;
-        }
+  list_node *ln, *ln_parse;
+
+  assert(l);
+  assert(l_to_add);
+
+  for (ln_parse = l_to_add->first ; ln_parse ; ln_parse = ln_parse->next) {
+    if (!in_list(l, ln_parse->value)) {
+      ln = list_node_init();
+
+      ln->value = buffer_init();
+      buffer_copy(ln->value, ln_parse->value);
+
+      if (!l->first) {
+        ln->prev = NULL;
+        l->first = ln;
+      } else {
+        ln->prev = l->last;
+        l->last->next = ln;
+      }
+
+      l->last = ln;
+      l->last->next = NULL;
+      l->size++;
     }
+  }
 }
 
 
@@ -168,30 +186,30 @@ void list_add_list(list * l, list * l_to_add)
  */
 void list_add_by_copy(list * l, buffer * value)
 {
-    list_node *ln;
-    buffer *tmp;
+  list_node *ln;
+  buffer *tmp;
 
-    assert(l);
-    assert(value);
-    assert(l->size < UINT_MAX);
+  assert(l);
+  assert(value);
+  assert(l->size < UINT_MAX);
 
-    ln = list_node_init();
-    tmp = buffer_init();
+  ln = list_node_init();
+  tmp = buffer_init();
 
-    buffer_copy(tmp, value);
-    ln->value = tmp;
-
-    if (!l->first) {
-        ln->prev = NULL;
-        l->first = ln;
-    } else {
-        ln->prev = l->last;
-        l->last->next = ln;
-    }
+  buffer_copy(tmp, value);
+  ln->value = tmp;
 
-    l->last = ln;
-    l->last->next = NULL;
-    l->size++;
+  if (!l->first) {
+    ln->prev = NULL;
+    l->first = ln;
+  } else {
+    ln->prev = l->last;
+    l->last->next = ln;
+  }
+
+  l->last = ln;
+  l->last->next = NULL;
+  l->size++;
 }
 
 
@@ -200,16 +218,16 @@ void list_add_by_copy(list * l, buffer * value)
  */
 list_node *list_node_init()
 {
-    list_node *ln;
+  list_node *ln;
 
-    ln = malloc(sizeof(list_node));
-    assert(ln);
+  ln = malloc(sizeof(list_node));
+  assert(ln);
 
-    ln->value = NULL;
-    ln->prev = NULL;
-    ln->next = NULL;
+  ln->value = NULL;
+  ln->prev = NULL;
+  ln->next = NULL;
 
-    return ln;
+  return ln;
 }
 
 
@@ -218,20 +236,20 @@ list_node *list_node_init()
  */
 void list_node_free(list * l, list_node * ln)
 {
-    assert(ln);
+  assert(ln);
 
-    if (ln->prev) ln->prev = NULL;
-    if (ln->next) {
-        if (l) l->first = ln->next;
-        ln->next = NULL;
-    } else {
-        if (l) l->first = NULL;
-    }
+  if (ln->prev) ln->prev = NULL;
+  if (ln->next) {
+    if (l) l->first = ln->next;
+    ln->next = NULL;
+  } else {
+    if (l) l->first = NULL;
+  }
 
-    if (ln->value) buffer_free(ln->value);
+  if (ln->value) buffer_free(ln->value);
 
-    free(ln);
-    ln = NULL;
+  free(ln);
+  ln = NULL;
 }
 
 
@@ -240,17 +258,17 @@ void list_node_free(list * l, list_node * ln)
  */
 bool in_list(const list * l, const buffer * value)
 {
-    list_node *ln;
+  list_node *ln;
 
-    assert(l);
-    assert(value);
+  assert(l);
+  assert(value);
 
-    for (ln = l->first ; ln ; ln = ln->next)
-        if (value->use == ln->value->use)
-            if (buffer_cmp(value, ln->value->buf))
-                return true;
+  for (ln = l->first ; ln ; ln = ln->next)
+    if (value->use == ln->value->use)
+      if (buffer_cmp(value, ln->value->buf))
+        return true;
 
-    return false;
+  return false;
 }
 
 
@@ -259,15 +277,15 @@ bool in_list(const list * l, const buffer * value)
  */
 bool in_list_str(const list * l, const char * value)
 {
-    list_node *ln;
+  list_node *ln;
 
-    assert(l);
-    assert(value);
+  assert(l);
+  assert(value);
 
-    for (ln = l->first ; ln ; ln = ln->next)
-        if (!strcmp(value, ln->value->buf)) return true;
+  for (ln = l->first ; ln ; ln = ln->next)
+    if (!strcmp(value, ln->value->buf)) return true;
 
-    return false;
+  return false;
 }
 
 
@@ -277,24 +295,67 @@ bool in_list_str(const list * l, const char * value)
  */
 list *list_explode(char separator, const buffer * value)
 {
-    size_t i;
-    list *l;
-    buffer *buf;
+  size_t i;
+  list *l;
+  buffer *buf;
 
-    assert(value);
+  assert(value);
 
-    l = list_init();
-    buf = buffer_init();
+  l = list_init();
+  buf = buffer_init();
 
-    for (i = 0 ; i < value->use ; i++)
-        if (value->buf[i] == separator) {
-            list_add(l, buf);  /* Add the buffer to the list */
-            buf = buffer_init();
-        } else buffer_add(buf, value->buf[i]);
+  for (i = 0 ; i < value->use ; i++)
+    if (value->buf[i] == separator) {
+      list_add(l, buf);  /* Add the buffer to the list */
+      buf = buffer_init();
+    } else buffer_add(buf, value->buf[i]);
 
-    list_add(l, buf);
+  list_add(l, buf);
 
+  return l;
+}
+
+
+/*
+ * Trunk an initial buffer into two pieces upon a separator char
+ * (reverse could be use to begin string parse from the end)
+ * Careful returned list must then be free with list_free()
+ */
+list *list_split(char separator, const buffer * value, bool reverse)
+{
+  long int s;
+  list *l;
+  buffer *buf1, *buf2;
+
+  assert(value);
+
+  l = list_init();
+  buf1 = buffer_init();
+  buffer_copy(buf1, value);
+
+  if (reverse) 
+    s = buffer_rchr(value, separator);
+  else
+    s = buffer_chr(value, separator);
+
+  if (s <= 0 || s == value->use) {
+    list_add(l, buf1);
     return l;
+  }
+
+  buf2 = buffer_init();
+  buffer_add_nstr(buf2, value->buf, s);
+  buffer_shift(buf1, s + 1);
+
+  if (reverse) {
+    list_add(l, buf1);
+    list_add(l, buf2);
+  } else {
+    list_add(l, buf2);
+    list_add(l, buf1);
+  }
+
+  return l;
 }
 
 
@@ -304,28 +365,32 @@ list *list_explode(char separator, const buffer * value)
  */
 list *list_explode_start_end(char separator_start, char separator_end, buffer * value)
 {
-    list *l;
-    size_t i;
-    buffer *buf;
+  list *l;
+  size_t i;
+  buffer *buf;
 
-    assert(value);
+  assert(value);
 
-    l = list_init();
+  l = list_init();
 
-    /* If first char doesn't match separator, list contains only one element */
-    if (value->buf[0] != separator_start) {
-        list_add_by_copy(l, value);
-        return l;
-    }
+  /* If first char doesn't match separator, list contains only one element */
+  if (value->buf[0] != separator_start) {
+    list_add_by_copy(l, value);
+    return l;
+  }
 
-    buf = buffer_init();
+  buf = buffer_init();
 
-    for (i = 1 ; i < value->use ; i++)
-             if (value->buf[i] == separator_end)   { list_add(l, buf); }
-        else if (value->buf[i] != separator_start) { buffer_add(buf, value->buf[i]); }
-        else     /* separator_start */             { buf = buffer_init(); }
+  for (i = 1 ; i < value->use ; i++)
+    if (value->buf[i] == separator_end)   {
+      list_add(l, buf);
+    } else if (value->buf[i] != separator_start) {
+      buffer_add(buf, value->buf[i]);
+    } else {   /* separator_start */
+      buf = buffer_init();
+    }
 
-    return l;
+  return l;
 }
 
 
@@ -335,26 +400,76 @@ list *list_explode_start_end(char separator_start, char separator_end, buffer *
  */
 list *list_explode_str(char separator, const char *value)
 {
-    size_t i;
-    list *l;
-    buffer *buf;
+  size_t i;
+  list *l;
+  buffer *buf;
 
-    assert(value);
+  assert(value);
 
-    l = list_init();
-    buf = buffer_init();
+  l = list_init();
+  buf = buffer_init();
 
-    for (i = 0; value[i] != '\0'; i++)
-        if (value[i] == separator) {
-            /* add the buffer to the list */
-            list_add(l, buf);
-            buf = buffer_init();
-        } else
-            buffer_add(buf, value[i]);
+  for (i = 0; value[i] != '\0'; i++)
+    if (value[i] == separator) {
+      /* add the buffer to the list */
+      list_add(l, buf);
+      buf = buffer_init();
+    } else
+      buffer_add(buf, value[i]);
 
-    list_add(l, buf);
+  list_add(l, buf);
 
-    return l;
+  return l;
+}
+
+
+/*
+ * Trunk an initial string into several pieces upon a separator char
+ * Careful returned list must then be free with list_free()
+ */
+list *list_explode_str_trim(char separator, const char *value)
+{
+  size_t i;
+  list *l;
+  buffer *buf;
+
+  assert(value);
+
+  l = list_init();
+  buf = buffer_init();
+
+  for (i = 0; value[i] != '\0'; i++)
+    if (value[i] == separator) {
+      /* add the buffer to the list */
+      list_add(l, buf);
+      buf = buffer_init();
+    } else {
+      if(value[i] != ' ') {
+        buffer_add(buf, value[i]);
+      }
+    }
+
+  list_add(l, buf);
+
+  return l;
+}
+
+
+/*
+ * Join list to a given bufer
+ */
+void list_implode(buffer * buf, const char * separator, const list * l)
+{
+  list_node *ln;
+
+  assert(buf);
+  assert(l);
+
+  for (ln = l->first ; ln ; ln = ln->next) {
+    buffer_add_str(buf, ln->value->buf);
+    if (ln->next)
+      buffer_add_str(buf, separator);
+  }
 }
 
 
@@ -365,16 +480,16 @@ list *list_explode_str(char separator, const char *value)
  */
 void list_flush(const list * l, FILE * output)
 {
-    list_node *ln;
+  list_node *ln;
 
-    assert(l);
-    assert(output);
+  assert(l);
+  assert(output);
 
-    for (ln = l->first ; ln ; ln = ln->next) {
-        fprintf(output, "[");
-        buffer_flush(ln->value, output);
-        fprintf(output, "]\n");
-    }
+  for (ln = l->first ; ln ; ln = ln->next) {
+    fprintf(output, "[");
+    buffer_flush(ln->value, output);
+    fprintf(output, "]\n");
+  }
 }
 #endif
 
diff --git a/src/struct/mlist.c b/src/struct/mlist.c
index 9a6877f..a80ee08 100644
--- a/src/struct/mlist.c
+++ b/src/struct/mlist.c
@@ -35,16 +35,16 @@
  */
 mlist *mlist_init()
 {
-    mlist *ml = NULL;
+  mlist *ml = NULL;
 
-    ml = malloc(sizeof(mlist));
-    assert(ml);
+  ml = malloc(sizeof(mlist));
+  assert(ml);
 
-    ml->first = NULL;
-    ml->last = NULL;
-    ml->size = 0;
+  ml->first = NULL;
+  ml->last = NULL;
+  ml->size = 0;
 
-    return ml;
+  return ml;
 }
 
 
@@ -53,13 +53,13 @@ mlist *mlist_init()
  */
 void mlist_free(mlist * ml)
 {
-    assert(ml);
+  assert(ml);
 
-    while (ml->first) mlist_node_free(ml, ml->first);
+  while (ml->first) mlist_node_free(ml, ml->first);
 
-    ml->last = NULL;
-    free(ml);
-    ml = NULL;
+  ml->last = NULL;
+  free(ml);
+  ml = NULL;
 }
 
 
@@ -70,27 +70,27 @@ void mlist_free(mlist * ml)
  */
 void mlist_add(mlist * ml, list * value)
 {
-    mlist_node *mln;
-
-    assert(ml);
-    assert(value);
-    assert(ml->size < UINT_MAX);
+  mlist_node *mln;
 
-    mln = mlist_node_init();
+  assert(ml);
+  assert(value);
+  assert(ml->size < UINT_MAX);
 
-    mln->value = value;
+  mln = mlist_node_init();
 
-    if (!ml->first) {
-        mln->prev = NULL;
-        ml->first = mln;
-    } else {
-        mln->prev = ml->last;
-        ml->last->next = mln;
-    }
+  mln->value = value;
 
-    ml->last = mln;
-    ml->last->next = NULL;
-    ml->size++;
+  if (!ml->first) {
+    mln->prev = NULL;
+    ml->first = mln;
+  } else {
+    mln->prev = ml->last;
+    ml->last->next = mln;
+  }
+
+  ml->last = mln;
+  ml->last->next = NULL;
+  ml->size++;
 }
 
 
@@ -99,16 +99,16 @@ void mlist_add(mlist * ml, list * value)
  */
 mlist_node *mlist_node_init()
 {
-    mlist_node *mln;
+  mlist_node *mln;
 
-    mln = malloc(sizeof(mlist_node));
-    assert(mln);
+  mln = malloc(sizeof(mlist_node));
+  assert(mln);
 
-    mln->value = NULL;
-    mln->prev = NULL;
-    mln->next = NULL;
+  mln->value = NULL;
+  mln->prev = NULL;
+  mln->next = NULL;
 
-    return mln;
+  return mln;
 }
 
 
@@ -117,22 +117,22 @@ mlist_node *mlist_node_init()
  */
 void mlist_node_free(mlist * ml, mlist_node * mln)
 {
-    assert(mln);
-    assert(ml);
+  assert(mln);
+  assert(ml);
 
-    if (mln->prev)
-        mln->prev = NULL;
+  if (mln->prev)
+    mln->prev = NULL;
 
-    if (mln->next) {
-        ml->first = mln->next;
-        mln->next = NULL;
-    } else
-        ml->first = NULL;
+  if (mln->next) {
+    ml->first = mln->next;
+    mln->next = NULL;
+  } else
+    ml->first = NULL;
 
-    if (mln->value) list_free(mln->value);
+  if (mln->value) list_free(mln->value);
 
-    free(mln);
-    mln = NULL;
+  free(mln);
+  mln = NULL;
 }
 
 
@@ -143,41 +143,41 @@ void mlist_node_free(mlist * ml, mlist_node * mln)
  */
 mlist *mlist_explode(char separator_start, char separator_end, buffer * value)
 {
-    size_t i;
-    mlist *ml;
-    list *l;
-    buffer *buf;
-
-    assert(value);
-
-    ml = mlist_init();
-
-    /* if first char doesn't match separator, mlist contains only one element */
-    if (value->buf[0] != separator_start) {
-        /* according to wfs specification, elements inside a multiple list
-           are separated by a comma */
-        l = list_explode(',', value);
+  size_t i;
+  mlist *ml;
+  list *l;
+  buffer *buf;
+
+  assert(value);
+
+  ml = mlist_init();
+
+  /* if first char doesn't match separator, mlist contains only one element */
+  if (value->buf[0] != separator_start) {
+    /* according to wfs specification, elements inside a multiple list
+       are separated by a comma */
+    l = list_explode(',', value);
+    mlist_add(ml, l);
+  } else {
+    buf = buffer_init();
+
+    for (i = 1; i < value->use; i++)
+      if (value->buf[i] == separator_end) {
+        /* explode the mlist's element */
+        l = list_explode(',', buf);
+        /* add the list to the multiple list */
         mlist_add(ml, l);
-    } else {
+        buffer_free(buf);
+      } else if (value->buf[i] != separator_start) {
+        buffer_add(buf, value->buf[i]);
+      }
+    /* separator start */
+      else
         buf = buffer_init();
 
-        for (i = 1; i < value->use; i++)
-            if (value->buf[i] == separator_end) {
-                /* explode the mlist's element */
-                l = list_explode(',', buf);
-                /* add the list to the multiple list */
-                mlist_add(ml, l);
-                buffer_free(buf);
-            } else if (value->buf[i] != separator_start) {
-                buffer_add(buf, value->buf[i]);
-            }
-        /* separator start */
-            else
-                buf = buffer_init();
-
-    }
-
-    return ml;
+  }
+
+  return ml;
 }
 
 
@@ -188,16 +188,16 @@ mlist *mlist_explode(char separator_start, char separator_end, buffer * value)
  */
 void mlist_flush(const mlist * ml, FILE * output)
 {
-    mlist_node *mln;
+  mlist_node *mln;
 
-    assert(ml);
-    assert(output);
+  assert(ml);
+  assert(output);
 
-    for (mln = ml->first ; mln ; mln = mln->next) {
-        fprintf(output, "(\n");
-        list_flush(mln->value, output);
-        fprintf(output, ")\n");
-    }
+  for (mln = ml->first ; mln ; mln = mln->next) {
+    fprintf(output, "(\n");
+    list_flush(mln->value, output);
+    fprintf(output, ")\n");
+  }
 }
 #endif
 
diff --git a/src/struct/regexp.c b/src/struct/regexp.c
index 318aa6b..876d420 100644
--- a/src/struct/regexp.c
+++ b/src/struct/regexp.c
@@ -35,26 +35,26 @@
  */
 bool check_regexp(const char *str_request, const char *str_regex)
 {
-    int err;
-    int match;
-    regex_t preg;
+  int err;
+  int match;
+  regex_t preg;
 
-    assert(str_request);
-    assert(str_regex);
+  assert(str_request);
+  assert(str_regex);
 
-    err = regcomp(&preg, str_regex, REG_NOSUB | REG_EXTENDED);
+  err = regcomp(&preg, str_regex, REG_NOSUB | REG_EXTENDED);
 
-    if (err == 0) {
+  if (err == 0) {
 
-        match = regexec(&preg, str_request, 0, NULL, 0);
-        regfree(&preg);
+    match = regexec(&preg, str_request, 0, NULL, 0);
+    regfree(&preg);
 
-        if (match == 0) return true;
-        else if (match == REG_NOMATCH) return false;
-        else return false;
-    }
+    if (match == 0) return true;
+    else if (match == REG_NOMATCH) return false;
+    else return false;
+  }
 
-    return false;
+  return false;
 }
 
 
diff --git a/src/wfs/wfs_describe.c b/src/wfs/wfs_describe.c
index f07115a..a04593d 100644
--- a/src/wfs/wfs_describe.c
+++ b/src/wfs/wfs_describe.c
@@ -35,62 +35,125 @@
  */
 static void wfs_complex_type(ows * o, wfs_request * wr, buffer * layer_name)
 {
-    buffer *id_name;
-    array *table;
-    array_node *an;
-    list *mandatory_prop;
-
-    assert(o);
-    assert(wr);
-    assert(layer_name);
-
-    mandatory_prop = ows_psql_not_null_properties(o, layer_name);
-
-    fprintf(o->output, "<xs:complexType name='");
-    buffer_flush(layer_name, o->output);
-    fprintf(o->output, "Type'>\n");
-    fprintf(o->output, " <xs:complexContent>\n");
-    fprintf(o->output, "  <xs:extension base='gml:AbstractFeatureType'>\n");
-    fprintf(o->output, "   <xs:sequence>\n");
-
-    table = ows_psql_describe_table(o, layer_name);
-    id_name = ows_psql_id_column(o, layer_name);
-
-    assert(table);
-
-    /* Output the description of the layer_name */
-    for (an = table->first ; an ; an = an->next) {
-
-         /* Handle GML namespace */
-         if (            (ows_layer_get(o->layers, layer_name))->gml_ns 
-              && in_list((ows_layer_get(o->layers, layer_name))->gml_ns, an->key)) {
-
-              if (    !strcmp("name", an->key->buf)
-                   || !strcmp("description", an->key->buf) 
-                   || !strcmp("boundedBy", an->key->buf)) { continue; }
+  buffer *id_name;
+  array *table;
+  array_node *an;
+  list *mandatory_prop;
+  char * xsd_type;
+  buffer *table_name;
+  buffer *character_maximum_length;
+  buffer *constraint_name;
+  list *check_constraints;
+  list_node *ln;
+
+  assert(o);
+  assert(wr);
+  assert(layer_name);
+
+  layer_name = ows_layer_prefix_to_uri(o->layers, layer_name);
+  mandatory_prop = ows_psql_not_null_properties(o, layer_name);
+
+  fprintf(o->output, "<xs:complexType name='");
+  buffer_flush(ows_layer_no_uri(o->layers, layer_name), o->output);
+  fprintf(o->output, "Type'>\n");
+  fprintf(o->output, " <xs:complexContent>\n");
+  fprintf(o->output, "  <xs:extension base='gml:AbstractFeatureType'>\n");
+  fprintf(o->output, "   <xs:sequence>\n");
+
+  table = ows_psql_describe_table(o, layer_name);
+  id_name = ows_psql_id_column(o, layer_name);
+
+  assert(table);
+
+  /* Output the description of the layer_name */
+  for (an = table->first ; an ; an = an->next) {
+
+    /* Handle GML namespace */
+    if (            (ows_layer_get(o->layers, layer_name))->gml_ns
+                    && in_list((ows_layer_get(o->layers, layer_name))->gml_ns, an->key)) {
+
+      if (    !strcmp("name", an->key->buf)
+              || !strcmp("description", an->key->buf)
+              || !strcmp("boundedBy", an->key->buf)) {
+        continue;
+      }
+
+      fprintf(o->output, "    <xs:element ref='gml:%s'/>\n", an->key->buf);
+      continue;
+    }
 
-               fprintf(o->output, "    <xs:element ref='gml:%s'/>\n", an->key->buf);
-               continue;
-         }
+    /* Avoid to expose PK if not specificaly wanted */
+    if (id_name && buffer_cmp(an->key, id_name->buf) && !o->expose_pk) {
+      continue;
+    }
+    /* Avoid to expose elements in mapfile gml_exclude_items */
+    if ( (ows_layer_get(o->layers, layer_name))->exclude_items
+         && in_list((ows_layer_get(o->layers, layer_name))->exclude_items, an->key)) {
+      continue;
+    }
 
-         /* Avoid to expose PK if not specificaly wanted */
-         if (id_name && buffer_cmp(an->key, id_name->buf) && !o->expose_pk) { continue; }
+    xsd_type = ows_psql_to_xsd(an->value, o->request->request.wfs->format);
 
-         fprintf(o->output, "    <xs:element name ='%s' type='%s' ",
-             an->key->buf, ows_psql_to_xsd(an->value, o->request->version));
+    if(!strcmp(xsd_type, "string")) {
+      table_name = ows_psql_table_name(o, layer_name);
+      /* Read string constraint from database and convert to gml restrictions*/
+      constraint_name = ows_psql_column_constraint_name(o, an->key, table_name);
+      if(strcmp(constraint_name->buf, "")) {
+        fprintf(o->output, "    <xs:element name ='%s' ", an->key->buf);
+        if (mandatory_prop && in_list(mandatory_prop, an->key))
+          fprintf(o->output, "nillable='false' minOccurs='1' ");
+        else
+          fprintf(o->output, "nillable='true' minOccurs='0' ");
+        fprintf(o->output, "maxOccurs='1'>\n");
 
-         if (mandatory_prop && in_list(mandatory_prop, an->key))
-             fprintf(o->output, "nillable='false' minOccurs='1' ");
-         else
-             fprintf(o->output, "nillable='true' minOccurs='0' ");
-	
-      	 fprintf(o->output, "maxOccurs='1'/>\n");
+        fprintf(o->output, "<xs:simpleType><xs:restriction base='string'>");
+        check_constraints = ows_psql_column_check_constraint(o, constraint_name);
+        for (ln = check_constraints->first ; ln ; ln = ln->next) {
+          fprintf(o->output, "<xs:enumeration value='%s'/>", ln->value->buf);
+        }
+        fprintf(o->output, "</xs:restriction></xs:simpleType></xs:element>");
+      } else {
+        character_maximum_length = ows_psql_column_character_maximum_length(o, an->key, table_name);
+        if(strcmp(character_maximum_length->buf, "")) {
+          fprintf(o->output, "    <xs:element name ='%s' ", an->key->buf);
+          if (mandatory_prop && in_list(mandatory_prop, an->key))
+            fprintf(o->output, "nillable='false' minOccurs='1' ");
+          else
+            fprintf(o->output, "nillable='true' minOccurs='0' ");
+          fprintf(o->output, "maxOccurs='1'>\n");
+          fprintf(o->output, "<xs:simpleType><xs:restriction base='string'>");
+          fprintf(o->output, "<xs:maxLength value='%s'/>", character_maximum_length->buf);
+          fprintf(o->output, "</xs:restriction></xs:simpleType></xs:element>");
+        } else {
+          fprintf(o->output, "    <xs:element name ='%s' type='%s' ",
+                  an->key->buf, ows_psql_to_xsd(an->value, o->request->request.wfs->format));
+
+          if (mandatory_prop && in_list(mandatory_prop, an->key))
+            fprintf(o->output, "nillable='false' minOccurs='1' ");
+          else
+            fprintf(o->output, "nillable='true' minOccurs='0' ");
+          fprintf(o->output, "maxOccurs='1'/>\n");
+        }
+        buffer_free(character_maximum_length);
+      }
+      buffer_free(constraint_name);
+    } else {
+      fprintf(o->output, "    <xs:element name ='%s' type='%s' ",
+              an->key->buf, ows_psql_to_xsd(an->value, o->request->request.wfs->format));
+
+      if (mandatory_prop && in_list(mandatory_prop, an->key))
+        fprintf(o->output, "nillable='false' minOccurs='1' ");
+      else
+        fprintf(o->output, "nillable='true' minOccurs='0' ");
+
+      fprintf(o->output, "maxOccurs='1'/>\n");
     }
+  }
 
-    fprintf(o->output, "   </xs:sequence>\n");
-    fprintf(o->output, "  </xs:extension>\n");
-    fprintf(o->output, " </xs:complexContent>\n");
-    fprintf(o->output, "</xs:complexType>\n");
+  fprintf(o->output, "   </xs:sequence>\n");
+  fprintf(o->output, "  </xs:extension>\n");
+  fprintf(o->output, " </xs:complexContent>\n");
+  fprintf(o->output, "</xs:complexType>\n");
 }
 
 
@@ -100,171 +163,167 @@ static void wfs_complex_type(ows * o, wfs_request * wr, buffer * layer_name)
  */
 void wfs_describe_feature_type(ows * o, wfs_request * wr)
 {
-    int wfs_version;
-    list_node *elemt, *ln;
-    list *ns_prefix, *typ;
-    buffer *namespace;
-
-    assert(o);
-    assert(wr);
-
-    wfs_version = ows_version_get(o->request->version);
-    ns_prefix = ows_layer_list_ns_prefix(o->layers, wr->typename);
-    if (!ns_prefix->first) {
-            list_free(ns_prefix);
-            ows_error(o, OWS_ERROR_CONFIG_FILE,
-                    "Not a single layer is available. Check config file", "describe");
-            return;
-    }
-
-         if (wr->format == WFS_GML212 || wr->format == WFS_XML_SCHEMA)
-    	fprintf(o->output, "Content-Type: text/xml; subtype=gml/2.1.2;\n\n");
-    else if (wr->format == WFS_GML311)
-    	fprintf(o->output, "Content-Type: text/xml; subtype=gml/3.1.1;\n\n");
-
-    fprintf(o->output, "<?xml version='1.0' encoding='%s'?>\n", o->encoding->buf);
-
-    /* if all layers belong to different prefixes, import the matching namespaces */
-    if (ns_prefix->first->next) {
-        fprintf(o->output, "<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'");
-        fprintf(o->output, " xmlns='http://www.w3.org/2001/XMLSchema'");
-        fprintf(o->output, " elementFormDefault='qualified'> ");
+  int wfs_version;
+  buffer *namespace;
+  list_node *elemt, *ln;
+  list *ns_prefix, *typ, *layer_name;
+
+  assert(o && wr);
+
+  wfs_version = ows_version_get(o->request->version);
+  layer_name = ows_layer_list_prefix_to_uri(o->layers, wr->typename); 
+  ns_prefix = ows_layer_list_ns_prefix(o->layers, layer_name);
+  list_free(layer_name);
+  if (!ns_prefix || !ns_prefix->first) {
+    list_free(ns_prefix);
+    ows_error(o, OWS_ERROR_CONFIG_FILE,
+              "Not a single layer is available. Check config file", "describe");
+    return;
+  }
+
+  if (wr->format == WFS_GML212 || wr->format == WFS_XML_SCHEMA)
+    fprintf(o->output, "Content-Type: text/xml; subtype=gml/2.1.2;\n\n");
+  else if (wr->format == WFS_GML311)
+    fprintf(o->output, "Content-Type: text/xml; subtype=gml/3.1.1;\n\n");
+
+  fprintf(o->output, "<?xml version='1.0' encoding='%s'?>\n", o->encoding->buf);
+   
+  if (buffer_cmp(ns_prefix->last->value, "gml"))
+    list_pop(ns_prefix);
+  
+
+  /* if all layers belong to different prefixes, import the matching namespaces */
+  if (ns_prefix->first->next) {
+    fprintf(o->output, "<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'");
+    fprintf(o->output, " xmlns='http://www.w3.org/2001/XMLSchema'");
+    fprintf(o->output, " elementFormDefault='qualified'> ");
 
-        for (elemt = ns_prefix->first ; elemt ; elemt = elemt->next) {
-            namespace = ows_layer_ns_uri(o->layers, elemt->value);
-            fprintf(o->output, "<xs:import namespace='%s' ", namespace->buf);
-            fprintf(o->output, "schemaLocation='%s?service=WFS&version=",
-                    o->online_resource->buf);
+    for (elemt = ns_prefix->first ; elemt ; elemt = elemt->next) {
+      namespace = ows_layer_ns_prefix_to_ns_uri(o->layers, elemt->value);
+      fprintf(o->output, "<xs:import namespace='%s' ", namespace->buf);
+      fprintf(o->output, "schemaLocation='%s?service=WFS&version=",
+              o->online_resource->buf);
 
-            if (wfs_version == 100)
-                fprintf(o->output, "1.0.0&request=DescribeFeatureType&typename=");
-            else
-                fprintf(o->output, "1.1.0&request=DescribeFeatureType&typename=");
+      if (wfs_version == 100)
+        fprintf(o->output, "1.0.0&request=DescribeFeatureType&typename=");
+      else
+        fprintf(o->output, "1.1.0&request=DescribeFeatureType&typename=");
 
-            /* print the describeFeatureType request with typenames for each prefix */
-            typ = ows_layer_list_by_ns_prefix(o->layers, wr->typename, elemt->value);
+      /* print the describeFeatureType request with typenames for each prefix */
+      typ = ows_layer_list_by_ns_prefix(o->layers, wr->typename, elemt->value);
 
-            for (ln = typ->first ; ln ; ln = ln->next) {
-                fprintf(o->output, "%s", ln->value->buf);
+      for (ln = typ->first ; ln ; ln = ln->next) {
+        fprintf(o->output, "%s", ln->value->buf);
 
-                if (ln->next) fprintf(o->output, ",");
-            }
+        if (ln->next) fprintf(o->output, ",");
+      }
 
-            list_free(typ);
-            fprintf(o->output, "' />\n\n");
-        }
-
-        fprintf(o->output, "</xs:schema>\n");
+      list_free(typ);
+      fprintf(o->output, "' />\n\n");
     }
-    /* if all layers belong to the same prefix, print the xsd schema describing features */
-    else {
-        namespace = ows_layer_ns_uri(o->layers, ns_prefix->first->value);
-        fprintf(o->output, "<xs:schema targetNamespace='%s' ", namespace->buf);
-        fprintf(o->output, "xmlns:%s='%s' ", ns_prefix->first->value->buf, namespace->buf);
-        fprintf(o->output, "xmlns:ogc='http://www.opengis.net/ogc' ");
-        fprintf(o->output, "xmlns:xs='http://www.w3.org/2001/XMLSchema' ");
-        fprintf(o->output, "xmlns='http://www.w3.org/2001/XMLSchema' ");
-        fprintf(o->output, "xmlns:gml='http://www.opengis.net/gml' ");
-        fprintf(o->output, "elementFormDefault='qualified' ");
-
-        if (wfs_version == 100) fprintf(o->output, "version='1.0'>\n");
-        else                    fprintf(o->output, "version='1.1'>\n");
-
-        fprintf(o->output, "<xs:import namespace='http://www.opengis.net/gml'");
-
-        if (wfs_version == 100)
-            fprintf(o->output, " schemaLocation='http://schemas.opengis.net/gml/2.1.2/feature.xsd'/>\n");
-        else
-            fprintf(o->output, " schemaLocation='http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'/>\n");
-
-        /* Describe each feature type specified in the request */
-        for (elemt = wr->typename->first ; elemt ; elemt = elemt->next)
-        {
-            fprintf(o->output, "<xs:element name='");
-            buffer_flush(elemt->value, o->output);
-            fprintf(o->output, "' type='%s:", ns_prefix->first->value->buf);
-            buffer_flush(elemt->value, o->output);
-            fprintf(o->output, "Type' substitutionGroup='gml:_Feature' />\n");
-            wfs_complex_type(o, wr, elemt->value);
-        }
 
-        fprintf(o->output, "</xs:schema>");
+    fprintf(o->output, "</xs:schema>\n");
+  }
+  /* if all layers belong to the same prefix, print the xsd schema describing features */
+  else {
+    namespace = ows_layer_ns_prefix_to_ns_uri(o->layers, ns_prefix->first->value);
+    fprintf(o->output, "<xs:schema targetNamespace='%s' ", namespace->buf);
+    fprintf(o->output, "xmlns:%s='%s' ", ns_prefix->first->value->buf, namespace->buf);
+    fprintf(o->output, "xmlns:ogc='http://www.opengis.net/ogc' ");
+    fprintf(o->output, "xmlns:xs='http://www.w3.org/2001/XMLSchema' ");
+    fprintf(o->output, "xmlns='http://www.w3.org/2001/XMLSchema' ");
+    fprintf(o->output, "xmlns:gml='http://www.opengis.net/gml' ");
+    fprintf(o->output, "elementFormDefault='qualified' ");
+
+    if (wfs_version == 100) fprintf(o->output, "version='1.0'>\n");
+    else                    fprintf(o->output, "version='1.1'>\n");
+
+    fprintf(o->output, "<xs:import namespace='http://www.opengis.net/gml'");
+
+    if (wfs_version == 100)
+      fprintf(o->output, " schemaLocation='http://schemas.opengis.net/gml/2.1.2/feature.xsd'/>\n");
+    else
+      fprintf(o->output, " schemaLocation='http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'/>\n");
+
+    /* Describe each feature type specified in the request */
+    for (elemt = wr->typename->first ; elemt ; elemt = elemt->next) {
+      fprintf(o->output, "<xs:element name='");
+      buffer_flush(ows_layer_no_uri(o->layers, ows_layer_prefix_to_uri(o->layers, elemt->value)), o->output);
+      fprintf(o->output, "' type='");
+      buffer_flush(elemt->value, o->output);
+      fprintf(o->output, "Type' substitutionGroup='gml:_Feature' />\n");
+      wfs_complex_type(o, wr, elemt->value);
     }
 
-    list_free(ns_prefix);
+    fprintf(o->output, "</xs:schema>");
+  }
+
+  list_free(ns_prefix);
 }
 
 
 /*
  * Generate a WFS Schema related to current Server (all valid layers)
- * with GML XSD import 
+ * with GML XSD import
  * This is needed by WFS Insert operation validation as libxml2 only handle
  * a single schema validation at a time
  */
 buffer * wfs_generate_schema(ows * o, ows_version * version)
 {
-    list_node *elemt, *t;
-    list *ns_prefix, *typename;
-    buffer *namespace;
-    buffer *schema;
-    list * layers;
-    int wfs_version;
-
-    assert(o);
-    assert(version);
+  list *ns_prefix, *typename, *layers;
+  buffer *namespace, *schema;
+  list_node *elemt, *t;
+  int wfs_version;
 
-    wfs_version = ows_version_get(version);
-    schema = buffer_init();
-    layers = ows_layer_list_having_storage(o->layers);
+  assert(o && version);
 
-    buffer_add_str(schema, "<?xml version='1.0' encoding='utf-8'?>\n");
+  schema = buffer_init();
+  wfs_version = ows_version_get(version);
+  layers = ows_layer_list_having_storage(o->layers);
 
-    ns_prefix = ows_layer_list_ns_prefix(o->layers, layers);
+  buffer_add_str(schema, "<?xml version='1.0' encoding='utf-8'?>\n");
 
-    buffer_add_str(schema, "<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'");
-    buffer_add_str(schema, " xmlns='http://www.w3.org/2001/XMLSchema' elementFormDefault='qualified'>\n");
-    buffer_add_str(schema, "<xs:import namespace='http://www.opengis.net/wfs' schemaLocation='");
-    buffer_copy(schema, o->schema_dir);
+  ns_prefix = ows_layer_list_ns_prefix(o->layers, layers);
 
-    if (wfs_version == 100) buffer_add_str(schema, WFS_SCHEMA_100);
-    else                    buffer_add_str(schema, WFS_SCHEMA_110);
+  buffer_add_str(schema, "<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'");
+  buffer_add_str(schema, " xmlns='http://www.w3.org/2001/XMLSchema' elementFormDefault='qualified'>\n");
+  buffer_add_str(schema, "<xs:import namespace='http://www.opengis.net/wfs' schemaLocation='");
+  buffer_copy(schema, o->schema_dir);
 
-    buffer_add_str(schema, "'/>\n");
-
-    for (elemt = ns_prefix->first ; elemt ; elemt = elemt->next) {
-        namespace = ows_layer_ns_uri(o->layers, elemt->value);
-        buffer_add_str(schema, "<xs:import namespace='");
-        buffer_copy(schema, namespace);
-        buffer_add_str(schema, "' schemaLocation='");
+  if (wfs_version == 100) buffer_add_str(schema, WFS_SCHEMA_100);
+  else                    buffer_add_str(schema, WFS_SCHEMA_110);
 
-        buffer_copy(schema, o->online_resource);
-        buffer_add_str(schema, "?service=WFS&request=DescribeFeatureType");
+  buffer_add_str(schema, "'/>\n");
 
-        if (elemt->next || elemt != ns_prefix->first) {
-            buffer_add_str(schema, "&Typename=");
+  for (elemt = ns_prefix->first ; elemt ; elemt = elemt->next) {
+    namespace = ows_layer_ns_prefix_to_ns_uri(o->layers, elemt->value);
+    buffer_add_str(schema, "<xs:import namespace='");
+    buffer_copy(schema, namespace);
+    buffer_add_str(schema, "' schemaLocation='");
 
-            typename = ows_layer_list_by_ns_prefix(o->layers, layers, elemt->value);
-            for (t = typename->first ; t ; t = t->next) {
-        	buffer_copy(schema, t->value);
-	  	if (t->next) buffer_add(schema, ',');
-	    }
-            list_free(typename);
-        } 
+    buffer_copy(schema, o->online_resource);
+    buffer_add_str(schema, "?service=WFS&request=DescribeFeatureType");
 
-        if (wfs_version == 100) buffer_add_str(schema, "&version=1.0.0");
-        else                    buffer_add_str(schema, "&version=1.1.0");
+    if (elemt->next || elemt != ns_prefix->first) {
+      buffer_add_str(schema, "&Typename=");
 
-        buffer_add_str(schema, "'/>\n");
+      typename = ows_layer_list_by_ns_prefix(o->layers, layers, elemt->value);
+      for (t = typename->first ; t ; t = t->next) {
+        buffer_copy(schema, t->value);
+        if (t->next) buffer_add(schema, ',');
+      }
+      list_free(typename);
     }
 
-    buffer_add_str(schema, "</xs:schema>");
-    list_free(ns_prefix);
-    list_free(layers);
+    if (wfs_version == 100) buffer_add_str(schema, "&version=1.0.0");
+    else                    buffer_add_str(schema, "&version=1.1.0");
 
-    return schema;
-}
+    buffer_add_str(schema, "'/>\n");
+  }
 
+  buffer_add_str(schema, "</xs:schema>");
+  list_free(ns_prefix);
+  list_free(layers);
 
-/*
- * vim: expandtab sw=4 ts=4
- */
+  return schema;
+}
diff --git a/src/wfs/wfs_error.c b/src/wfs/wfs_error.c
index 008ad9e..72abd73 100644
--- a/src/wfs/wfs_error.c
+++ b/src/wfs/wfs_error.c
@@ -33,30 +33,30 @@
  */
 static char *wfs_error_code_string(enum wfs_error_code code)
 {
-    switch (code) {
-        case WFS_ERROR_INVALID_VERSION:
-            return "InvalidVersion";
-        case WFS_ERROR_OUTPUT_FORMAT_NOT_SUPPORTED:
-            return "OutputFormatNotSupported";
-        case WFS_ERROR_LAYER_NOT_DEFINED:
-            return "LayerNotDefined";
-        case WFS_ERROR_EXCLUSIVE_PARAMETERS:
-            return "ExclusiveParameters";
-        case WFS_ERROR_LAYER_NOT_RETRIEVABLE:
-            return "LayerNotRetrievable";
-        case WFS_ERROR_LAYER_NOT_WRITABLE:
-            return "LayerNotWritable";
-        case WFS_ERROR_INCORRECT_SIZE_PARAMETER:
-            return "IncorrectSizeParameter";
-        case WFS_ERROR_NO_MATCHING:
-            return "NoMatching";
-        case WFS_ERROR_INVALID_PARAMETER:
-            return "InvalidParameterValue";
-        case WFS_ERROR_MISSING_PARAMETER:
-            return "MissingParameterValue";
-    }
-
-    assert(0); /* Should not happen */
+  switch (code) {
+    case WFS_ERROR_INVALID_VERSION:
+      return "InvalidVersion";
+    case WFS_ERROR_OUTPUT_FORMAT_NOT_SUPPORTED:
+      return "OutputFormatNotSupported";
+    case WFS_ERROR_LAYER_NOT_DEFINED:
+      return "LayerNotDefined";
+    case WFS_ERROR_EXCLUSIVE_PARAMETERS:
+      return "ExclusiveParameters";
+    case WFS_ERROR_LAYER_NOT_RETRIEVABLE:
+      return "LayerNotRetrievable";
+    case WFS_ERROR_LAYER_NOT_WRITABLE:
+      return "LayerNotWritable";
+    case WFS_ERROR_INCORRECT_SIZE_PARAMETER:
+      return "IncorrectSizeParameter";
+    case WFS_ERROR_NO_MATCHING:
+      return "NoMatching";
+    case WFS_ERROR_INVALID_PARAMETER:
+      return "InvalidParameterValue";
+    case WFS_ERROR_MISSING_PARAMETER:
+      return "MissingParameterValue";
+  }
+
+  assert(0); /* Should not happen */
 }
 
 
@@ -65,27 +65,27 @@ static char *wfs_error_code_string(enum wfs_error_code code)
  */
 static void wfs_error_100(ows * o, wfs_request * wf, enum wfs_error_code code, char *message, char *locator)
 {
-    assert(o);
-    assert(wf);
-    assert(message);
-    assert(locator);
-
-    assert(!o->exit);
-    o->exit = true;
-
-    ows_log(o, 1, message);
-
-    fprintf(o->output, "<?xml version=\"1.0\" encoding=\"%s\"?>\n", o->encoding->buf);
-    fprintf(o->output, "<ServiceExceptionReport\n");
-    fprintf(o->output, " xmlns=\"http://www.opengis.net/ogc\"\n");
-    fprintf(o->output, " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n");
-    fprintf(o->output, " xsi:schemaLocation=\"http://www.opengis.net/ogc");
-    fprintf(o->output, " http://schemas.opengis.net/wms/1.1.1/OGC-exception.xsd\"\n");
-    fprintf(o->output, "version=\"1.2.0\">\n");
-    fprintf(o->output, "<ServiceException code=\"%s\"", wfs_error_code_string(code));
-    fprintf(o->output, " locator=\"%s\">\n%s", locator, message);
-    fprintf(o->output, "</ServiceException>\n");
-    fprintf(o->output, "</ServiceExceptionReport>\n");
+  assert(o);
+  assert(wf);
+  assert(message);
+  assert(locator);
+
+  assert(!o->exit);
+  o->exit = true;
+
+  ows_log(o, 1, message);
+
+  fprintf(o->output, "<?xml version=\"1.0\" encoding=\"%s\"?>\n", o->encoding->buf);
+  fprintf(o->output, "<ServiceExceptionReport\n");
+  fprintf(o->output, " xmlns=\"http://www.opengis.net/ogc\"\n");
+  fprintf(o->output, " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n");
+  fprintf(o->output, " xsi:schemaLocation=\"http://www.opengis.net/ogc");
+  fprintf(o->output, " http://schemas.opengis.net/wms/1.1.1/OGC-exception.xsd\"\n");
+  fprintf(o->output, "version=\"1.2.0\">\n");
+  fprintf(o->output, "<ServiceException code=\"%s\"", wfs_error_code_string(code));
+  fprintf(o->output, " locator=\"%s\">\n%s", locator, message);
+  fprintf(o->output, "</ServiceException>\n");
+  fprintf(o->output, "</ServiceExceptionReport>\n");
 }
 
 
@@ -94,27 +94,27 @@ static void wfs_error_100(ows * o, wfs_request * wf, enum wfs_error_code code, c
  */
 static void wfs_error_110(ows * o, wfs_request * wf, enum wfs_error_code code, char *message, char *locator)
 {
-    assert(o);
-    assert(wf);
-    assert(message);
-    assert(locator);
-
-    assert(!o->exit);
-    o->exit = true;
-
-    ows_log(o, 1, message);
-
-    fprintf(o->output, "<?xml version='1.0' encoding='UTF-8'?>\n");
-    fprintf(o->output, "<ExceptionReport\n");
-    fprintf(o->output, " xmlns='http://www.opengis.net/ows'\n");
-    fprintf(o->output, " xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'\n");
-    fprintf(o->output, " xsi:schemaLocation='http://www.opengis.net/ows");
-    fprintf(o->output, " http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd'\n");
-    fprintf(o->output, " version='1.0.0' language='en'>\n");
-    fprintf(o->output, " <Exception exceptionCode='%s' locator='%s'>\n", wfs_error_code_string(code), locator);
-    fprintf(o->output, "  <ExceptionText>%s</ExceptionText>\n", message);
-    fprintf(o->output, " </Exception>\n");
-    fprintf(o->output, "</ExceptionReport>\n");
+  assert(o);
+  assert(wf);
+  assert(message);
+  assert(locator);
+
+  assert(!o->exit);
+  o->exit = true;
+
+  ows_log(o, 1, message);
+
+  fprintf(o->output, "<?xml version='1.0' encoding='UTF-8'?>\n");
+  fprintf(o->output, "<ExceptionReport\n");
+  fprintf(o->output, " xmlns='http://www.opengis.net/ows'\n");
+  fprintf(o->output, " xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'\n");
+  fprintf(o->output, " xsi:schemaLocation='http://www.opengis.net/ows");
+  fprintf(o->output, " http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd'\n");
+  fprintf(o->output, " version='1.0.0' language='en'>\n");
+  fprintf(o->output, " <Exception exceptionCode='%s' locator='%s'>\n", wfs_error_code_string(code), locator);
+  fprintf(o->output, "  <ExceptionText>%s</ExceptionText>\n", message);
+  fprintf(o->output, " </Exception>\n");
+  fprintf(o->output, "</ExceptionReport>\n");
 }
 
 
@@ -123,24 +123,24 @@ static void wfs_error_110(ows * o, wfs_request * wf, enum wfs_error_code code, c
  */
 void wfs_error(ows * o, wfs_request * wf, enum wfs_error_code code, char *message, char *locator)
 {
-    int version;
-
-    assert(o);
-    assert(wf);
-    assert(message);
-    assert(locator);
-
-    version = ows_version_get(o->request->version);
-    fprintf(o->output, "Content-Type: application/xml\n\n");
-
-    switch (version) {
-        case 100:
-            wfs_error_100(o, wf, code, message, locator);
-            break;
-        case 110:
-            wfs_error_110(o, wf, code, message, locator);
-            break;
-    }
+  int version;
+
+  assert(o);
+  assert(wf);
+  assert(message);
+  assert(locator);
+
+  version = ows_version_get(o->request->version);
+  fprintf(o->output, "Content-Type: application/xml\n\n");
+
+  switch (version) {
+    case 100:
+      wfs_error_100(o, wf, code, message, locator);
+      break;
+    case 110:
+      wfs_error_110(o, wf, code, message, locator);
+      break;
+  }
 }
 
 
diff --git a/src/wfs/wfs_get_capabilities.c b/src/wfs/wfs_get_capabilities.c
index b34b010..ecf56be 100644
--- a/src/wfs/wfs_get_capabilities.c
+++ b/src/wfs/wfs_get_capabilities.c
@@ -38,21 +38,21 @@
  */
 static void wfs_get_capabilities_dcpt_100(const ows * o, char * req)
 {
-    assert(o);
-    assert(o->online_resource);
-
-    fprintf(o->output, "    <DCPType>\n");
-    fprintf(o->output, "     <HTTP>\n");
-    fprintf(o->output, "      <Get onlineResource=\"");
-    fprintf(o->output, "%s?%s\"/>\n", o->online_resource->buf, req);
-    fprintf(o->output, "     </HTTP>\n");
-    fprintf(o->output, "    </DCPType>\n");
-    fprintf(o->output, "    <DCPType>\n");
-    fprintf(o->output, "     <HTTP>\n");
-    fprintf(o->output, "      <Post onlineResource=\"");
-    fprintf(o->output, "%s\"/>\n", o->online_resource->buf);
-    fprintf(o->output, "     </HTTP>\n");
-    fprintf(o->output, "    </DCPType>\n");
+  assert(o);
+  assert(o->online_resource);
+
+  fprintf(o->output, "    <DCPType>\n");
+  fprintf(o->output, "     <HTTP>\n");
+  fprintf(o->output, "      <Get onlineResource=\"");
+  fprintf(o->output, "%s?%s\"/>\n", o->online_resource->buf, req);
+  fprintf(o->output, "     </HTTP>\n");
+  fprintf(o->output, "    </DCPType>\n");
+  fprintf(o->output, "    <DCPType>\n");
+  fprintf(o->output, "     <HTTP>\n");
+  fprintf(o->output, "      <Post onlineResource=\"");
+  fprintf(o->output, "%s\"/>\n", o->online_resource->buf);
+  fprintf(o->output, "     </HTTP>\n");
+  fprintf(o->output, "    </DCPType>\n");
 }
 
 
@@ -62,16 +62,16 @@ static void wfs_get_capabilities_dcpt_100(const ows * o, char * req)
  */
 static void wfs_gml_object_type(ows * o, char *type)
 {
-    assert(o);
-    assert(type);
-
-    fprintf(o->output, "  <GMLObjectType>\n");
-    fprintf(o->output, "   <Name>gml:%s</Name>\n", type);
-    fprintf(o->output, "   <OutputFormats>\n");
-    fprintf(o->output, "    <Format>text/xml; subtype=gml/2.1.2</Format>\n");
-    fprintf(o->output, "    <Format>text/xml; subtype=gml/3.1.1</Format>\n");
-    fprintf(o->output, "   </OutputFormats>\n");
-    fprintf(o->output, "  </GMLObjectType>\n");
+  assert(o);
+  assert(type);
+
+  fprintf(o->output, "  <GMLObjectType>\n");
+  fprintf(o->output, "   <Name>gml:%s</Name>\n", type);
+  fprintf(o->output, "   <OutputFormats>\n");
+  fprintf(o->output, "    <Format>text/xml; subtype=gml/2.1.2</Format>\n");
+  fprintf(o->output, "    <Format>text/xml; subtype=gml/3.1.1</Format>\n");
+  fprintf(o->output, "   </OutputFormats>\n");
+  fprintf(o->output, "  </GMLObjectType>\n");
 }
 
 
@@ -82,17 +82,17 @@ static void wfs_gml_object_type(ows * o, char *type)
  */
 static void wfs_gml_object_type_list(ows * o)
 {
-    assert(o);
-
-    fprintf(o->output, " <SupportsGMLObjectTypeList>\n");
-    wfs_gml_object_type(o, "AbstractGMLFeatureType");
-    wfs_gml_object_type(o, "PointType");
-    wfs_gml_object_type(o, "LineStringType");
-    wfs_gml_object_type(o, "PolygonType");
-    wfs_gml_object_type(o, "MultiPointType");
-    wfs_gml_object_type(o, "MultiLineStringType");
-    wfs_gml_object_type(o, "MultiPolygonType");
-    fprintf(o->output, " </SupportsGMLObjectTypeList>\n");
+  assert(o);
+
+  fprintf(o->output, " <SupportsGMLObjectTypeList>\n");
+  wfs_gml_object_type(o, "AbstractGMLFeatureType");
+  wfs_gml_object_type(o, "PointType");
+  wfs_gml_object_type(o, "LineStringType");
+  wfs_gml_object_type(o, "PolygonType");
+  wfs_gml_object_type(o, "MultiPointType");
+  wfs_gml_object_type(o, "MultiLineStringType");
+  wfs_gml_object_type(o, "MultiPolygonType");
+  fprintf(o->output, " </SupportsGMLObjectTypeList>\n");
 }
 
 
@@ -102,30 +102,30 @@ static void wfs_gml_object_type_list(ows * o)
  */
 static void wfs_capability(ows * o)
 {
-    assert(o);
-
-    fprintf(o->output, " <Capability>\n");
-    fprintf(o->output, "  <Request>\n");
-    fprintf(o->output, "   <GetCapabilities>\n");
-    wfs_get_capabilities_dcpt_100(o, "");
-    fprintf(o->output, "   </GetCapabilities>\n");
-    fprintf(o->output, "   <DescribeFeatureType>\n");
-    fprintf(o->output, "     <SchemaDescriptionLanguage>\n");
-    fprintf(o->output, "        <XMLSCHEMA/>\n");
-    fprintf(o->output, "     </SchemaDescriptionLanguage>\n");
-    wfs_get_capabilities_dcpt_100(o, "");
-    fprintf(o->output, "   </DescribeFeatureType>\n");
-    fprintf(o->output, "   <GetFeature>\n");
-    fprintf(o->output, "<ResultFormat>\n");
-    fprintf(o->output, "<GML2/>\n");
-    fprintf(o->output, "</ResultFormat>\n");
-    wfs_get_capabilities_dcpt_100(o, "");
-    fprintf(o->output, "   </GetFeature>\n");
-    fprintf(o->output, "   <Transaction>\n");
-    wfs_get_capabilities_dcpt_100(o, "");
-    fprintf(o->output, "   </Transaction>\n");
-    fprintf(o->output, "  </Request>\n");
-    fprintf(o->output, " </Capability>\n");
+  assert(o);
+
+  fprintf(o->output, " <Capability>\n");
+  fprintf(o->output, "  <Request>\n");
+  fprintf(o->output, "   <GetCapabilities>\n");
+  wfs_get_capabilities_dcpt_100(o, "");
+  fprintf(o->output, "   </GetCapabilities>\n");
+  fprintf(o->output, "   <DescribeFeatureType>\n");
+  fprintf(o->output, "     <SchemaDescriptionLanguage>\n");
+  fprintf(o->output, "        <XMLSCHEMA/>\n");
+  fprintf(o->output, "     </SchemaDescriptionLanguage>\n");
+  wfs_get_capabilities_dcpt_100(o, "");
+  fprintf(o->output, "   </DescribeFeatureType>\n");
+  fprintf(o->output, "   <GetFeature>\n");
+  fprintf(o->output, "<ResultFormat>\n");
+  fprintf(o->output, "<GML2/>\n");
+  fprintf(o->output, "</ResultFormat>\n");
+  wfs_get_capabilities_dcpt_100(o, "");
+  fprintf(o->output, "   </GetFeature>\n");
+  fprintf(o->output, "   <Transaction>\n");
+  wfs_get_capabilities_dcpt_100(o, "");
+  fprintf(o->output, "   </Transaction>\n");
+  fprintf(o->output, "  </Request>\n");
+  fprintf(o->output, " </Capability>\n");
 }
 
 
@@ -135,68 +135,68 @@ static void wfs_capability(ows * o)
  */
 static void wfs_operations_metadata(ows * o)
 {
-    assert(o);
-
-    fprintf(o->output, " <ows:OperationsMetadata>\n");
-    fprintf(o->output, "  <ows:Operation name='GetCapabilities'>\n");
-    ows_get_capabilities_dcpt(o, "");
-    fprintf(o->output, "  <ows:Parameter name='AcceptVersions'>\n");
-    fprintf(o->output, "  <ows:Value>1.1.0</ows:Value>\n");
-    fprintf(o->output, "  <ows:Value>1.0.0</ows:Value>\n");
-    fprintf(o->output, "  </ows:Parameter>\n");
-    fprintf(o->output, "  <ows:Parameter name='AcceptFormats'>\n");
-    fprintf(o->output, "  <ows:Value>text/xml</ows:Value>\n");
-    fprintf(o->output, "  </ows:Parameter>\n");
-    fprintf(o->output, "  <ows:Parameter name='Sections'>\n");
-    fprintf(o->output, "  <ows:Value>ServiceIdentification</ows:Value>\n");
-    fprintf(o->output, "  <ows:Value>ServiceProvider</ows:Value>\n");
-    fprintf(o->output, "  <ows:Value>OperationsMetadata</ows:Value>\n");
-    fprintf(o->output, "  <ows:Value>FeatureTypeList</ows:Value>\n");
-    fprintf(o->output, "  <ows:Value>ServesGMLObjectTypeList</ows:Value>\n");
-    fprintf(o->output, "  <ows:Value>SupportsGMLObjectTypeList</ows:Value>\n");
-    fprintf(o->output, "  </ows:Parameter>\n");
-    fprintf(o->output, "   </ows:Operation>\n");
-    fprintf(o->output, "   <ows:Operation name='DescribeFeatureType'>\n");
-    ows_get_capabilities_dcpt(o, "");
-    fprintf(o->output, "  <ows:Parameter name='outputFormat'>\n");
-    fprintf(o->output, "  <ows:Value>text/xml; subtype=gml/3.1.1</ows:Value>\n");
-    fprintf(o->output, "  <ows:Value>text/xml; subtype=gml/2.1.2</ows:Value>\n");
-    fprintf(o->output, "  </ows:Parameter>\n");
-    fprintf(o->output, "   </ows:Operation>\n");
-    fprintf(o->output, "   <ows:Operation name='GetFeature'>\n");
-    ows_get_capabilities_dcpt(o, "");
-    fprintf(o->output, "  <ows:Parameter name='resultType'>\n");
-    fprintf(o->output, "  <ows:Value>results</ows:Value>\n");
-    fprintf(o->output, "  <ows:Value>hits</ows:Value>\n");
-    fprintf(o->output, "  </ows:Parameter>\n");
-    fprintf(o->output, "  <ows:Parameter name='outputFormat'>\n");
-    fprintf(o->output, "  <ows:Value>text/xml; subtype=gml/3.1.1</ows:Value>\n");
-    fprintf(o->output, "  <ows:Value>text/xml; subtype=gml/2.1.2</ows:Value>\n");
-    fprintf(o->output, "  <ows:Value>application/json</ows:Value>\n");
-    fprintf(o->output, "  </ows:Parameter>\n");
-    fprintf(o->output, "   </ows:Operation>\n");
-    fprintf(o->output, "   <ows:Operation name='Transaction'>\n");
-    ows_get_capabilities_dcpt(o, "");
-    fprintf(o->output, "    <ows:Parameter name='inputFormat'>\n"); 
-    fprintf(o->output, "     <ows:Value>text/xml; subtype=gml/3.1.1</ows:Value>\n");
-    fprintf(o->output, "    </ows:Parameter>\n"); 
-    fprintf(o->output, "    <ows:Parameter name='idgen'>\n"); 
-    fprintf(o->output, "     <ows:Value>GenerateNew</ows:Value>\n");
-    fprintf(o->output, "     <ows:Value>UseExisting</ows:Value>\n");
-    fprintf(o->output, "    </ows:Parameter>\n"); 
-    fprintf(o->output, "   </ows:Operation>\n");
-    if (o->max_features) {
+  assert(o);
+
+  fprintf(o->output, " <ows:OperationsMetadata>\n");
+  fprintf(o->output, "  <ows:Operation name='GetCapabilities'>\n");
+  ows_get_capabilities_dcpt(o, "");
+  fprintf(o->output, "  <ows:Parameter name='AcceptVersions'>\n");
+  fprintf(o->output, "  <ows:Value>1.1.0</ows:Value>\n");
+  fprintf(o->output, "  <ows:Value>1.0.0</ows:Value>\n");
+  fprintf(o->output, "  </ows:Parameter>\n");
+  fprintf(o->output, "  <ows:Parameter name='AcceptFormats'>\n");
+  fprintf(o->output, "  <ows:Value>text/xml</ows:Value>\n");
+  fprintf(o->output, "  </ows:Parameter>\n");
+  fprintf(o->output, "  <ows:Parameter name='Sections'>\n");
+  fprintf(o->output, "  <ows:Value>ServiceIdentification</ows:Value>\n");
+  fprintf(o->output, "  <ows:Value>ServiceProvider</ows:Value>\n");
+  fprintf(o->output, "  <ows:Value>OperationsMetadata</ows:Value>\n");
+  fprintf(o->output, "  <ows:Value>FeatureTypeList</ows:Value>\n");
+  fprintf(o->output, "  <ows:Value>ServesGMLObjectTypeList</ows:Value>\n");
+  fprintf(o->output, "  <ows:Value>SupportsGMLObjectTypeList</ows:Value>\n");
+  fprintf(o->output, "  </ows:Parameter>\n");
+  fprintf(o->output, "   </ows:Operation>\n");
+  fprintf(o->output, "   <ows:Operation name='DescribeFeatureType'>\n");
+  ows_get_capabilities_dcpt(o, "");
+  fprintf(o->output, "  <ows:Parameter name='outputFormat'>\n");
+  fprintf(o->output, "  <ows:Value>text/xml; subtype=gml/3.1.1</ows:Value>\n");
+  fprintf(o->output, "  <ows:Value>text/xml; subtype=gml/2.1.2</ows:Value>\n");
+  fprintf(o->output, "  </ows:Parameter>\n");
+  fprintf(o->output, "   </ows:Operation>\n");
+  fprintf(o->output, "   <ows:Operation name='GetFeature'>\n");
+  ows_get_capabilities_dcpt(o, "");
+  fprintf(o->output, "  <ows:Parameter name='resultType'>\n");
+  fprintf(o->output, "  <ows:Value>results</ows:Value>\n");
+  fprintf(o->output, "  <ows:Value>hits</ows:Value>\n");
+  fprintf(o->output, "  </ows:Parameter>\n");
+  fprintf(o->output, "  <ows:Parameter name='outputFormat'>\n");
+  fprintf(o->output, "  <ows:Value>text/xml; subtype=gml/3.1.1</ows:Value>\n");
+  fprintf(o->output, "  <ows:Value>text/xml; subtype=gml/2.1.2</ows:Value>\n");
+  fprintf(o->output, "  <ows:Value>application/json</ows:Value>\n");
+  fprintf(o->output, "  </ows:Parameter>\n");
+  fprintf(o->output, "   </ows:Operation>\n");
+  fprintf(o->output, "   <ows:Operation name='Transaction'>\n");
+  ows_get_capabilities_dcpt(o, "");
+  fprintf(o->output, "    <ows:Parameter name='inputFormat'>\n");
+  fprintf(o->output, "     <ows:Value>text/xml; subtype=gml/3.1.1</ows:Value>\n");
+  fprintf(o->output, "    </ows:Parameter>\n");
+  fprintf(o->output, "    <ows:Parameter name='idgen'>\n");
+  fprintf(o->output, "     <ows:Value>GenerateNew</ows:Value>\n");
+  fprintf(o->output, "     <ows:Value>UseExisting</ows:Value>\n");
+  fprintf(o->output, "    </ows:Parameter>\n");
+  fprintf(o->output, "   </ows:Operation>\n");
+  if (o->max_features) {
     fprintf(o->output, "   <ows:Constraint name='DefaultMaxFeatures'>\n");
     fprintf(o->output, "    <ows:Value>%d</ows:Value>\n", o->max_features);
     fprintf(o->output, "   </ows:Constraint>\n");
-    }
-    fprintf(o->output, "   <ows:Constraint name='LocalTraverseXLinkScope'>\n");
-    fprintf(o->output, "    <ows:Value>0</ows:Value>\n");
-    fprintf(o->output, "   </ows:Constraint>\n");
-    fprintf(o->output, "   <ows:Constraint name='RemoteTraverseXLinkScope'>\n");
-    fprintf(o->output, "    <ows:Value>0</ows:Value>\n");
-    fprintf(o->output, "   </ows:Constraint>\n");
-    fprintf(o->output, " </ows:OperationsMetadata>\n");
+  }
+  fprintf(o->output, "   <ows:Constraint name='LocalTraverseXLinkScope'>\n");
+  fprintf(o->output, "    <ows:Value>0</ows:Value>\n");
+  fprintf(o->output, "   </ows:Constraint>\n");
+  fprintf(o->output, "   <ows:Constraint name='RemoteTraverseXLinkScope'>\n");
+  fprintf(o->output, "    <ows:Value>0</ows:Value>\n");
+  fprintf(o->output, "   </ows:Constraint>\n");
+  fprintf(o->output, " </ows:OperationsMetadata>\n");
 }
 
 
@@ -206,235 +206,233 @@ static void wfs_operations_metadata(ows * o)
  */
 static void wfs_feature_type_list(ows * o)
 {
-    ows_layer_node *ln;
-    ows_geobbox *gb;
-
-    int srid_int;
-    buffer *srid;
-    buffer *srs;
-    list_node *keyword, *l_srid;
-    int s;
-    bool writable, retrievable;
+  ows_layer_node *ln;
+  ows_geobbox *gb;
+
+  int srid_int;
+  buffer *srid;
+  buffer *srs;
+  list_node *keyword, *l_srid;
+  int s;
+  bool writable, retrievable;
+
+  assert(o);
+
+  writable = false;
+  retrievable = false;
+
+  fprintf(o->output, " <FeatureTypeList>\n");
+
+  /* print global operations */
+
+  if (    ows_layer_list_retrievable(o->layers)
+          || ows_layer_list_writable(o->layers))
+    fprintf(o->output, "  <Operations>\n");
+
+  if (ows_layer_list_retrievable(o->layers)) {
+    if (ows_version_get(o->request->version) == 100)
+      fprintf(o->output, "   <Query/>\n");
+    else if (ows_version_get(o->request->version) == 110)
+      fprintf(o->output, " <Operation>Query</Operation>\n");
+
+    retrievable = true;
+  }
+
+  if (ows_layer_list_writable(o->layers)) {
+    if (ows_version_get(o->request->version) == 100) {
+      fprintf(o->output, "   <Insert/>\n");
+      fprintf(o->output, "   <Update/>\n");
+      fprintf(o->output, "   <Delete/>\n");
+    } else if (ows_version_get(o->request->version) == 110) {
+      fprintf(o->output, "   <Operation>Insert</Operation>\n");
+      fprintf(o->output, "   <Operation>Update</Operation>\n");
+      fprintf(o->output, "   <Operation>Delete</Operation>\n");
+    }
 
-    assert(o);
+    writable = true;
+  }
+
+  if (    ows_layer_list_retrievable(o->layers)
+          || ows_layer_list_writable(o->layers))
+    fprintf(o->output, "  </Operations>\n");
+
+  for (ln = o->layers->first ; ln ; ln = ln->next) {
+    /* print each feature type */
+    if (ows_layer_match_table(o, ln->layer->name)) {
+
+      fprintf(o->output, "<FeatureType xmlns:%s=\"%s\">\n",
+              ln->layer->ns_prefix->buf, ln->layer->ns_uri->buf);
+
+      /* name */
+      if (ln->layer->name) {
+        for (s = 0; s < ln->layer->depth; s++) fprintf(o->output, " ");
+
+        fprintf(o->output, " <Name>");
+        buffer_flush(ows_layer_uri_to_prefix(o->layers, ln->layer->name), o->output);
+        fprintf(o->output, "</Name>\n");
+      }
+
+      /* title */
+      if (ln->layer->title) {
+        for (s = 0; s < ln->layer->depth; s++) fprintf(o->output, " ");
+
+        fprintf(o->output, " <Title>");
+        buffer_flush(ln->layer->title, o->output);
+        fprintf(o->output, "</Title>\n");
+      }
+
+      /* abstract */
+      if (ln->layer->abstract) {
+        for (s = 0; s < ln->layer->depth; s++) fprintf(o->output, " ");
+
+        fprintf(o->output, " <Abstract>");
+        buffer_flush(ln->layer->abstract, o->output);
+        fprintf(o->output, "</Abstract>\n");
+      }
+
+      /* keywords */
+      if (ln->layer->keywords) {
+        for (s = 0; s < ln->layer->depth; s++) fprintf(o->output, " ");
+
+        fprintf(o->output, " <Keywords>");
+
+        for (keyword = ln->layer->keywords->first ; keyword ; keyword = keyword->next) {
+          if (ows_version_get(o->request->version) == 100) {
+            fprintf(o->output, "%s", keyword->value->buf);
+            if (keyword->next) fprintf(o->output, ",");
+          } else if (ows_version_get(o->request->version) == 110) {
+            fprintf(o->output, "  <Keyword>");
+            fprintf(o->output, "%s", keyword->value->buf);
+            fprintf(o->output, "</Keyword>");
+          }
+        }
 
-    writable = false;
-    retrievable = false;
+        fprintf(o->output, "</Keywords>\n");
+      }
 
-    fprintf(o->output, " <FeatureTypeList>\n");
+      /* SRS */
+      srid = buffer_init();
+      srid_int = ows_srs_get_srid_from_layer(o, ln->layer->name);
+      buffer_add_int(srid, srid_int);
+      srs = ows_srs_get_from_a_srid(o, srid_int);
 
-    /* print global operations */
-    
-    if (    ows_layer_list_retrievable(o->layers)
-         || ows_layer_list_writable(o->layers)) 
-    	fprintf(o->output, "  <Operations>\n");
+      if (srs->use) {
+        if (ows_version_get(o->request->version) == 100) {
+          fprintf(o->output, " <SRS>");
+          buffer_flush(srs, o->output);
+          fprintf(o->output, "</SRS>\n");
+        } else if (ows_version_get(o->request->version) == 110) {
+          fprintf(o->output, " <DefaultSRS>urn:ogc:def:crs:EPSG::%s</DefaultSRS>\n", srid->buf);
 
-    if (ows_layer_list_retrievable(o->layers)) {
+          if (ln->layer->srid) {
+            for (l_srid = ln->layer->srid->first; l_srid; l_srid = l_srid->next) {
+              if (!buffer_cmp(srid, l_srid->value->buf)) {
+                fprintf(o->output, " <OtherSRS>urn:ogc:def:crs:EPSG::%s</OtherSRS>\n", l_srid->value->buf);
+              }
+            }
+          }
+        }
+      } else {
         if (ows_version_get(o->request->version) == 100)
-            fprintf(o->output, "   <Query/>\n");
+          fprintf(o->output, " <SRS></SRS>\n");
         else if (ows_version_get(o->request->version) == 110)
-            fprintf(o->output, " <Operation>Query</Operation>\n");
-
-        retrievable = true;
-    }
+          fprintf(o->output, " <NoSRS/>");
+      }
+      /* Operations */
+      if (retrievable != ln->layer->retrievable || writable != ln->layer->writable) {
+        fprintf(o->output, "  <Operations>\n");
+
+        if (retrievable == false && ln->layer->retrievable == true) {
+          if (ows_version_get(o->request->version) == 100)
+            fprintf(o->output, "   <Query/>\n");
+          else if (ows_version_get(o->request->version) == 110)
+            fprintf(o->output, "   <Operation>Query</Operation>\n");
+        }
 
-    if (ows_layer_list_writable(o->layers)) {
-        if (ows_version_get(o->request->version) == 100) {
+        if (writable == false && ln->layer->writable == true) {
+          if (ows_version_get(o->request->version) == 100) {
             fprintf(o->output, "   <Insert/>\n");
             fprintf(o->output, "   <Update/>\n");
             fprintf(o->output, "   <Delete/>\n");
-        } else if (ows_version_get(o->request->version) == 110) {
+          } else if (ows_version_get(o->request->version) == 110) {
             fprintf(o->output, "   <Operation>Insert</Operation>\n");
             fprintf(o->output, "   <Operation>Update</Operation>\n");
             fprintf(o->output, "   <Operation>Delete</Operation>\n");
+          }
         }
 
-        writable = true;
-    }
-
-    if (    ows_layer_list_retrievable(o->layers)
-         || ows_layer_list_writable(o->layers)) 
-    	fprintf(o->output, "  </Operations>\n");
-
-    for (ln = o->layers->first ; ln ; ln = ln->next) {
-        /* print each feature type */
-        if (ows_layer_match_table(o, ln->layer->name)) {
-
-            fprintf(o->output, "<FeatureType xmlns:%s=\"%s\">\n",
-                    ln->layer->ns_prefix->buf, ln->layer->ns_uri->buf);
-
-            /* name */
-            if (ln->layer->name) {
-                for (s = 0; s < ln->layer->depth; s++) fprintf(o->output, " ");
-
-                fprintf(o->output, " <Name>");
-                buffer_flush(ln->layer->ns_prefix, o->output);
-                fprintf(o->output, ":");
-                buffer_flush(ln->layer->name, o->output);
-                fprintf(o->output, "</Name>\n");
-            }
-
-            /* title */
-            if (ln->layer->title) {
-                for (s = 0; s < ln->layer->depth; s++) fprintf(o->output, " ");
-
-                fprintf(o->output, " <Title>");
-                buffer_flush(ln->layer->title, o->output);
-                fprintf(o->output, "</Title>\n");
-            }
-
-            /* abstract */
-            if (ln->layer->abstract) {
-                for (s = 0; s < ln->layer->depth; s++) fprintf(o->output, " ");
-
-                fprintf(o->output, " <Abstract>");
-                buffer_flush(ln->layer->abstract, o->output);
-                fprintf(o->output, "</Abstract>\n");
-            }
-
-            /* keywords */
-            if (ln->layer->keywords) {
-                for (s = 0; s < ln->layer->depth; s++) fprintf(o->output, " ");
-
-                fprintf(o->output, " <Keywords>");
-
-                for (keyword = ln->layer->keywords->first ; keyword ; keyword = keyword->next) {
-                    if (ows_version_get(o->request->version) == 100) {
-                        fprintf(o->output, "%s", keyword->value->buf);
-			if (keyword->next) fprintf(o->output, ",");
-		    } else if (ows_version_get(o->request->version) == 110) {
-                        fprintf(o->output, "  <Keyword>");
-                        fprintf(o->output, "%s", keyword->value->buf);
-                        fprintf(o->output, "</Keyword>");
-                    }
-                }
-
-                fprintf(o->output, "</Keywords>\n");
-            }
-
-            /* SRS */
-            srid = buffer_init();
-            srid_int = ows_srs_get_srid_from_layer(o, ln->layer->name);
-            buffer_add_int(srid, srid_int);
-            srs = ows_srs_get_from_a_srid(o, srid_int);
-
-            if (srs->use) {
-                if (ows_version_get(o->request->version) == 100) {
-                    fprintf(o->output, " <SRS>");
-                    buffer_flush(srs, o->output);
-                    fprintf(o->output, "</SRS>\n");
-                } else if (ows_version_get(o->request->version) == 110) {
-                    fprintf(o->output, " <DefaultSRS>urn:ogc:def:crs:EPSG::%s</DefaultSRS>\n", srid->buf);
-
-                    if (ln->layer->srid) {
-                        for (l_srid = ln->layer->srid->first; l_srid; l_srid = l_srid->next) {
-                            if (!buffer_cmp(srid, l_srid->value->buf)) {
-                                fprintf(o->output, " <OtherSRS>urn:ogc:def:crs:EPSG::%s</OtherSRS>\n", l_srid->value->buf);
-                            }
-                        }
-                    }
-                }
-            } else {
-                if (ows_version_get(o->request->version) == 100)
-                    fprintf(o->output, " <SRS></SRS>\n");
-                else if (ows_version_get(o->request->version) == 110)
-                    fprintf(o->output, " <NoSRS/>");
-            }
-            /* Operations */
-            if (retrievable != ln->layer->retrievable || writable != ln->layer->writable) {
-                fprintf(o->output, "  <Operations>\n");
-
-                if (retrievable == false && ln->layer->retrievable == true) {
-                    if (ows_version_get(o->request->version) == 100)
-                        fprintf(o->output, "   <Query/>\n");
-                    else if (ows_version_get(o->request->version) == 110)
-                        fprintf(o->output, "   <Operation>Query</Operation>\n");
-                }
-
-                if (writable == false && ln->layer->writable == true) {
-                    if (ows_version_get(o->request->version) == 100) {
-                        fprintf(o->output, "   <Insert/>\n");
-                        fprintf(o->output, "   <Update/>\n");
-                        fprintf(o->output, "   <Delete/>\n");
-                    } else if (ows_version_get(o->request->version) == 110) {
-                        fprintf(o->output, "   <Operation>Insert</Operation>\n");
-                        fprintf(o->output, "   <Operation>Update</Operation>\n");
-                        fprintf(o->output, "   <Operation>Delete</Operation>\n");
-                    }
-                }
-
-                fprintf(o->output, "  </Operations>\n");
-            }
-
-            /* Boundaries */
-            if (!ln->layer->geobbox) {
-                gb = ows_geobbox_compute(o, ln->layer->name);
-            } else {
-                gb = ows_geobbox_init();
-                gb->west = ln->layer->geobbox->west;
-                gb->east = ln->layer->geobbox->east;
-                gb->south = ln->layer->geobbox->south;
-                gb->north = ln->layer->geobbox->north;
-            }
-            assert(gb);
-
-            for (s = 0; s < ln->layer->depth; s++) fprintf(o->output, " ");
-
-            if (ows_version_get(o->request->version) == 100)
-                fprintf(o->output, " <LatLongBoundingBox");
-            else if (ows_version_get(o->request->version) == 110)
-                fprintf(o->output, " <ows:WGS84BoundingBox>");
-
-            if (gb->east != DBL_MIN) {
-                if (ows_version_get(o->request->version) == 100) {
-                    if (gb->west < gb->east)
-                        fprintf(o->output, " minx='%.*f'", o->degree_precision, gb->west);
-                    else
-                        fprintf(o->output, " minx='%.*f'", o->degree_precision, gb->east);
-
-                    if (gb->north < gb->south)
-                        fprintf(o->output, " miny='%.*f'", o->degree_precision, gb->north);
-                    else
-                        fprintf(o->output, " miny='%.*f'", o->degree_precision, gb->south);
-
-                    if (gb->west < gb->east)
-                        fprintf(o->output, " maxx='%.*f'", o->degree_precision, gb->east);
-                    else
-                        fprintf(o->output, " maxx='%.*f'", o->degree_precision, gb->west);
-
-                    if (gb->north < gb->south)
-                        fprintf(o->output, " maxy='%.*f'", o->degree_precision, gb->south);
-                    else
-                        fprintf(o->output, " maxy='%.*f'", o->degree_precision, gb->north);
-
-                    fprintf(o->output, " />\n");
-                } else if (ows_version_get(o->request->version) == 110) {
-                    fprintf(o->output, " <ows:LowerCorner>%.*f %.*f</ows:LowerCorner>",
-                        o->degree_precision, gb->west, o->degree_precision, gb->south);
-                    fprintf(o->output, " <ows:UpperCorner>%.*f %.*f</ows:UpperCorner>",
-                        o->degree_precision, gb->east, o->degree_precision, gb->north);
-                }
-            } else {
-                if (ows_version_get(o->request->version) == 100) {
-                    fprintf(o->output, " minx='0' miny='0' maxx='0' maxy='0'/>\n");
-                } else if (ows_version_get(o->request->version) == 110) {
-                    fprintf(o->output, " <ows:LowerCorner>0 0</ows:LowerCorner>");
-                    fprintf(o->output, " <ows:UpperCorner>0 0</ows:UpperCorner>");
-                }
-            }
+        fprintf(o->output, "  </Operations>\n");
+      }
+
+      /* Boundaries */
+      if (!ln->layer->geobbox) {
+        gb = ows_geobbox_compute(o, ln->layer->name);
+      } else {
+        gb = ows_geobbox_init();
+        gb->west = ln->layer->geobbox->west;
+        gb->east = ln->layer->geobbox->east;
+        gb->south = ln->layer->geobbox->south;
+        gb->north = ln->layer->geobbox->north;
+      }
+      assert(gb);
+
+      for (s = 0; s < ln->layer->depth; s++) fprintf(o->output, " ");
+
+      if (ows_version_get(o->request->version) == 100)
+        fprintf(o->output, " <LatLongBoundingBox");
+      else if (ows_version_get(o->request->version) == 110)
+        fprintf(o->output, " <ows:WGS84BoundingBox>");
+
+      if (gb->east != DBL_MIN) {
+        if (ows_version_get(o->request->version) == 100) {
+          if (gb->west < gb->east)
+            fprintf(o->output, " minx='%.*f'", o->degree_precision, gb->west);
+          else
+            fprintf(o->output, " minx='%.*f'", o->degree_precision, gb->east);
+
+          if (gb->north < gb->south)
+            fprintf(o->output, " miny='%.*f'", o->degree_precision, gb->north);
+          else
+            fprintf(o->output, " miny='%.*f'", o->degree_precision, gb->south);
+
+          if (gb->west < gb->east)
+            fprintf(o->output, " maxx='%.*f'", o->degree_precision, gb->east);
+          else
+            fprintf(o->output, " maxx='%.*f'", o->degree_precision, gb->west);
+
+          if (gb->north < gb->south)
+            fprintf(o->output, " maxy='%.*f'", o->degree_precision, gb->south);
+          else
+            fprintf(o->output, " maxy='%.*f'", o->degree_precision, gb->north);
+
+          fprintf(o->output, " />\n");
+        } else if (ows_version_get(o->request->version) == 110) {
+          fprintf(o->output, " <ows:LowerCorner>%.*f %.*f</ows:LowerCorner>",
+                  o->degree_precision, gb->west, o->degree_precision, gb->south);
+          fprintf(o->output, " <ows:UpperCorner>%.*f %.*f</ows:UpperCorner>",
+                  o->degree_precision, gb->east, o->degree_precision, gb->north);
+        }
+      } else {
+        if (ows_version_get(o->request->version) == 100) {
+          fprintf(o->output, " minx='0' miny='0' maxx='0' maxy='0'/>\n");
+        } else if (ows_version_get(o->request->version) == 110) {
+          fprintf(o->output, " <ows:LowerCorner>0 0</ows:LowerCorner>");
+          fprintf(o->output, " <ows:UpperCorner>0 0</ows:UpperCorner>");
+        }
+      }
 
-            if (ows_version_get(o->request->version) == 110)
-                fprintf(o->output, " </ows:WGS84BoundingBox>\n");
+      if (ows_version_get(o->request->version) == 110)
+        fprintf(o->output, " </ows:WGS84BoundingBox>\n");
 
-            buffer_free(srid);
-            buffer_free(srs);
-            ows_geobbox_free(gb);
+      buffer_free(srid);
+      buffer_free(srs);
+      ows_geobbox_free(gb);
 
-            fprintf(o->output, "</FeatureType>\n");
-        }
+      fprintf(o->output, "</FeatureType>\n");
     }
+  }
 
-    fprintf(o->output, " </FeatureTypeList>\n");
+  fprintf(o->output, " </FeatureTypeList>\n");
 }
 
 
@@ -443,92 +441,92 @@ static void wfs_feature_type_list(ows * o)
  */
 static void wfs_get_capabilities_110(ows * o, wfs_request * wr)
 {
-    buffer *name;
-
-    assert(o);
-    assert(wr);
-
-    if (wr->format == WFS_TEXT_XML)
-        fprintf(o->output, "Content-Type: text/xml\n\n");
-    else
-        fprintf(o->output, "Content-Type: application/xml\n\n");
-
-    fprintf(o->output, "<?xml version='1.0' encoding='%s'?>\n", o->encoding->buf);
-    fprintf(o->output, "<WFS_Capabilities");
-    fprintf(o->output, " version='1.1.0' updateSequence='0'\n");
-    fprintf(o->output, "  xmlns='http://www.opengis.net/wfs'\n");
-    fprintf(o->output, "  xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'\n");
-    fprintf(o->output, "  xmlns:ogc='http://www.opengis.net/ogc'\n");
-    fprintf(o->output, "  xmlns:gml='http://www.opengis.net/gml'\n");
-    fprintf(o->output, "  xmlns:ows='http://www.opengis.net/ows'\n");
-    fprintf(o->output, "  xmlns:xlink='http://www.w3.org/1999/xlink'\n");
-    fprintf(o->output, "  xsi:schemaLocation='http://www.opengis.net/wfs\n");
-    fprintf(o->output, "  http://schemas.opengis.net/wfs/1.1.0/wfs.xsd' >\n");
-
-    name = buffer_init();
-
-    /* Service Identification Section : provides information about the
-       WFS service iself */
-    buffer_add_str(name, "ServiceIdentification");
-
-    if (wr->sections) {
-        if (in_list(wr->sections, name) || buffer_case_cmp(wr->sections->first->value, "all"))
-            ows_service_identification(o);
-    } else ows_service_identification(o);
-
-    /* Service Provider Section : provides metadata about
-       the organization operating the WFS server */
-    buffer_empty(name);
-    buffer_add_str(name, "ServiceProvider");
-
-    if (wr->sections) {
-        if (in_list(wr->sections, name) || buffer_case_cmp(wr->sections->first->value, "all"))
-            ows_service_provider(o);
-    } else ows_service_provider(o);
-
-    /* Operation Metadata Section : specifies the list of requests
-       that the WFS can handle */
-    buffer_empty(name);
-    buffer_add_str(name, "OperationsMetadata");
-
-    if (wr->sections) {
-        if (in_list(wr->sections, name) || buffer_case_cmp(wr->sections->first->value, "all"))
-            wfs_operations_metadata(o);
-    } else wfs_operations_metadata(o);
-
-
-    /* FeatureType list Section : specifies the list of feature types
-       available from the wfs */
-    buffer_empty(name);
-    buffer_add_str(name, "FeatureTypeList");
-
-    if (wr->sections) {
-        if (in_list(wr->sections, name) || buffer_case_cmp(wr->sections->first->value, "all"))
-            wfs_feature_type_list(o);
-    } else wfs_feature_type_list(o);
-
-    /* No ServesGMLObjectType list Section since there isn't any supported
-       GML Object types not derived from gml:AbstractFeatureType */
-
-    /* SupportsGMLObjectType list Section : defines the list of GML Object types
-       that the WFS server would be capable of serving */
-    buffer_empty(name);
-    buffer_add_str(name, "SupportsGMLObjectTypeList");
-
-    if (wr->sections) {
-        if (in_list(wr->sections, name) || buffer_case_cmp(wr->sections->first->value, "all"))
-            wfs_gml_object_type_list(o);
-    } else wfs_gml_object_type_list(o);
-
-
-    /* Filter Capabilities Section : describe what specific filter capabilties
-       are supported by the wfs */
-    fe_filter_capabilities_110(o);
-
-    fprintf(o->output, "</WFS_Capabilities>\n");
-    fclose(o->output);
-
-    buffer_free(name);
+  buffer *name;
+
+  assert(o);
+  assert(wr);
+
+  if (wr->format == WFS_TEXT_XML)
+    fprintf(o->output, "Content-Type: text/xml\n\n");
+  else
+    fprintf(o->output, "Content-Type: application/xml\n\n");
+
+  fprintf(o->output, "<?xml version='1.0' encoding='%s'?>\n", o->encoding->buf);
+  fprintf(o->output, "<WFS_Capabilities");
+  fprintf(o->output, " version='1.1.0' updateSequence='0'\n");
+  fprintf(o->output, "  xmlns='http://www.opengis.net/wfs'\n");
+  fprintf(o->output, "  xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'\n");
+  fprintf(o->output, "  xmlns:ogc='http://www.opengis.net/ogc'\n");
+  fprintf(o->output, "  xmlns:gml='http://www.opengis.net/gml'\n");
+  fprintf(o->output, "  xmlns:ows='http://www.opengis.net/ows'\n");
+  fprintf(o->output, "  xmlns:xlink='http://www.w3.org/1999/xlink'\n");
+  fprintf(o->output, "  xsi:schemaLocation='http://www.opengis.net/wfs\n");
+  fprintf(o->output, "  http://schemas.opengis.net/wfs/1.1.0/wfs.xsd' >\n");
+
+  name = buffer_init();
+
+  /* Service Identification Section : provides information about the
+     WFS service iself */
+  buffer_add_str(name, "ServiceIdentification");
+
+  if (wr->sections) {
+    if (in_list(wr->sections, name) || buffer_case_cmp(wr->sections->first->value, "all"))
+      ows_service_identification(o);
+  } else ows_service_identification(o);
+
+  /* Service Provider Section : provides metadata about
+     the organization operating the WFS server */
+  buffer_empty(name);
+  buffer_add_str(name, "ServiceProvider");
+
+  if (wr->sections) {
+    if (in_list(wr->sections, name) || buffer_case_cmp(wr->sections->first->value, "all"))
+      ows_service_provider(o);
+  } else ows_service_provider(o);
+
+  /* Operation Metadata Section : specifies the list of requests
+     that the WFS can handle */
+  buffer_empty(name);
+  buffer_add_str(name, "OperationsMetadata");
+
+  if (wr->sections) {
+    if (in_list(wr->sections, name) || buffer_case_cmp(wr->sections->first->value, "all"))
+      wfs_operations_metadata(o);
+  } else wfs_operations_metadata(o);
+
+
+  /* FeatureType list Section : specifies the list of feature types
+     available from the wfs */
+  buffer_empty(name);
+  buffer_add_str(name, "FeatureTypeList");
+
+  if (wr->sections) {
+    if (in_list(wr->sections, name) || buffer_case_cmp(wr->sections->first->value, "all"))
+      wfs_feature_type_list(o);
+  } else wfs_feature_type_list(o);
+
+  /* No ServesGMLObjectType list Section since there isn't any supported
+     GML Object types not derived from gml:AbstractFeatureType */
+
+  /* SupportsGMLObjectType list Section : defines the list of GML Object types
+     that the WFS server would be capable of serving */
+  buffer_empty(name);
+  buffer_add_str(name, "SupportsGMLObjectTypeList");
+
+  if (wr->sections) {
+    if (in_list(wr->sections, name) || buffer_case_cmp(wr->sections->first->value, "all"))
+      wfs_gml_object_type_list(o);
+  } else wfs_gml_object_type_list(o);
+
+
+  /* Filter Capabilities Section : describe what specific filter capabilties
+     are supported by the wfs */
+  fe_filter_capabilities_110(o);
+
+  fprintf(o->output, "</WFS_Capabilities>\n");
+  fclose(o->output);
+
+  buffer_free(name);
 }
 
 
@@ -537,36 +535,36 @@ static void wfs_get_capabilities_110(ows * o, wfs_request * wr)
  */
 static void wfs_get_capabilities_100(ows * o, wfs_request * wr)
 {
-    assert(o);
-    assert(wr);
-
-    fprintf(o->output, "Content-Type: application/xml\n\n");
-    fprintf(o->output, "<?xml version='1.0' encoding='%s'?>\n", o->encoding->buf);
-    fprintf(o->output, "<WFS_Capabilities\n");
-    fprintf(o->output, "version='1.0.0' updateSequence='0'\n");
-    fprintf(o->output, " xmlns='http://www.opengis.net/wfs'\n");
-    fprintf(o->output, " xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'\n");
-    fprintf(o->output, " xmlns:ogc='http://www.opengis.net/ogc'\n");
-    fprintf(o->output, " xsi:schemaLocation='http://www.opengis.net/wfs\n");
-    fprintf(o->output, " http://schemas.opengis.net/wfs/1.0.0/WFS-capabilities.xsd' >\n");
-
-    /* Service Section : provides information about the service iself */
-    ows_service_metadata(o);
-
-    /* Capabilities Section : specifies the list of requests
-       that the WFS can handle */
-    wfs_capability(o);
-
-    /* FeatureType list Section : specifies the list of feature types
-       available from the wfs */
-    wfs_feature_type_list(o);
-
-    /* Filter Capabilities Section : describe what specific filter capabilties
-       are supported by the wfs */
-    fe_filter_capabilities_100(o);
-
-    fprintf(o->output, "</WFS_Capabilities>\n");
-    fclose(o->output);
+  assert(o);
+  assert(wr);
+
+  fprintf(o->output, "Content-Type: application/xml\n\n");
+  fprintf(o->output, "<?xml version='1.0' encoding='%s'?>\n", o->encoding->buf);
+  fprintf(o->output, "<WFS_Capabilities\n");
+  fprintf(o->output, "version='1.0.0' updateSequence='0'\n");
+  fprintf(o->output, " xmlns='http://www.opengis.net/wfs'\n");
+  fprintf(o->output, " xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'\n");
+  fprintf(o->output, " xmlns:ogc='http://www.opengis.net/ogc'\n");
+  fprintf(o->output, " xsi:schemaLocation='http://www.opengis.net/wfs\n");
+  fprintf(o->output, " http://schemas.opengis.net/wfs/1.0.0/WFS-capabilities.xsd' >\n");
+
+  /* Service Section : provides information about the service iself */
+  ows_service_metadata(o);
+
+  /* Capabilities Section : specifies the list of requests
+     that the WFS can handle */
+  wfs_capability(o);
+
+  /* FeatureType list Section : specifies the list of feature types
+     available from the wfs */
+  wfs_feature_type_list(o);
+
+  /* Filter Capabilities Section : describe what specific filter capabilties
+     are supported by the wfs */
+  fe_filter_capabilities_100(o);
+
+  fprintf(o->output, "</WFS_Capabilities>\n");
+  fclose(o->output);
 }
 
 
@@ -575,21 +573,21 @@ static void wfs_get_capabilities_100(ows * o, wfs_request * wr)
  */
 void wfs_get_capabilities(ows * o, wfs_request * wr)
 {
-    int version;
+  int version;
 
-    assert(o);
-    assert(wr);
+  assert(o);
+  assert(wr);
 
-    version = ows_version_get(o->request->version);
+  version = ows_version_get(o->request->version);
 
-    switch (version) {
-        case 100:
-            wfs_get_capabilities_100(o, wr);
-            break;
-        case 110:
-            wfs_get_capabilities_110(o, wr);
-            break;
-    }
+  switch (version) {
+    case 100:
+      wfs_get_capabilities_100(o, wr);
+      break;
+    case 110:
+      wfs_get_capabilities_110(o, wr);
+      break;
+  }
 }
 
 
diff --git a/src/wfs/wfs_get_feature.c b/src/wfs/wfs_get_feature.c
index 84ea3da..a025f82 100644
--- a/src/wfs/wfs_get_feature.c
+++ b/src/wfs/wfs_get_feature.c
@@ -37,122 +37,137 @@
  */
 static void wfs_gml_bounded_by(ows * o, wfs_request * wr, double xmin, double ymin, double xmax, double ymax, ows_srs * srs)
 {
-    int precision;
+  int precision;
 
-    assert(o);
-    assert(wr);
-    assert(srs);
+  assert(o);
+  assert(wr);
+  assert(srs);
 
-    if (srs->is_degree) precision = o->degree_precision;
-    else precision = o->meter_precision;
+  if (srs->is_degree) precision = o->degree_precision;
+  else precision = o->meter_precision;
 
-    if (!srs->srid || srs->srid == -1 || (xmin == ymin && xmax == ymax && xmin == xmax)) {
-        if (ows_version_get(o->request->version) == 100)
-            fprintf(o->output, "<gml:boundedBy><gml:null>missing</gml:null></gml:boundedBy>\n");
-        else return; /* No Null boundedBy in WFS 1.1.0 SF-0 */
-            
-    } else {
-        fprintf(o->output, "<gml:boundedBy>\n");
-
-        if (wr->format == WFS_GML212) {
-            fprintf(o->output, "  <gml:Box srsName=\"%s:%d\">", srs->is_long?"urn:ogc:def:crs:EPSG:":"EPSG", srs->srid);
-            
-	    if (fabs(xmin) > OWS_MAX_DOUBLE || fabs(ymin) > OWS_MAX_DOUBLE ||
-                fabs(xmax) > OWS_MAX_DOUBLE || fabs(ymax) > OWS_MAX_DOUBLE)
-                 fprintf(o->output, "<gml:coordinates decimal=\".\" cs=\",\" ts=\" \">%g,%g %g,%g</gml:coordinates>",
-                        xmin, ymin, xmax, ymax);
-            else fprintf(o->output, "<gml:coordinates decimal=\".\" cs=\",\" ts=\" \">%.*f,%.*f %.*f,%.*f</gml:coordinates>",
-                        precision, xmin, precision, ymin, precision, xmax, precision, ymax);
-            fprintf(o->output, "</gml:Box>\n");
-
-        } else if (wr->format == WFS_GML311) {
-            fprintf(o->output, "  <gml:Envelope srsName=\"%s:%d\">", srs->is_long?"urn:ogc:def:crs:EPSG:":"EPSG", srs->srid);
-            if (srs->is_reverse_axis && !srs->is_eastern_axis && srs->is_long) {
-		if (fabs(xmin) > OWS_MAX_DOUBLE || fabs(ymin) > OWS_MAX_DOUBLE ||
-                    fabs(xmax) > OWS_MAX_DOUBLE || fabs(ymax) > OWS_MAX_DOUBLE) {
-                    fprintf(o->output, "<gml:lowerCorner>%g %g</gml:lowerCorner>", ymin, xmin);
-                    fprintf(o->output, "<gml:upperCorner>%g %g</gml:upperCorner>", ymax, xmax);
-                } else {
-                    fprintf(o->output, "<gml:lowerCorner>%.*f %.*f</gml:lowerCorner>", precision, ymin, precision, xmin);
-                    fprintf(o->output, "<gml:upperCorner>%.*f %.*f</gml:upperCorner>", precision, ymax, precision, xmax);
-                }
-            } else {
-		if (fabs(xmin) > OWS_MAX_DOUBLE || fabs(ymin) > OWS_MAX_DOUBLE ||
-                    fabs(xmax) > OWS_MAX_DOUBLE || fabs(ymax) > OWS_MAX_DOUBLE) {
-                    fprintf(o->output, "<gml:lowerCorner>%g %g</gml:lowerCorner>", xmin, ymin);
-                    fprintf(o->output, "<gml:upperCorner>%g %g</gml:upperCorner>", xmax, ymax);
-                } else {
-                    fprintf(o->output, "<gml:lowerCorner>%.*f %.*f</gml:lowerCorner>", precision, xmin, precision, ymin);
-                    fprintf(o->output, "<gml:upperCorner>%.*f %.*f</gml:upperCorner>", precision, xmax, precision, ymax);
-                }
-            }
-            fprintf(o->output, "</gml:Envelope>\n");
+  if (!srs->srid || srs->srid == -1 || (xmin == ymin && xmax == ymax && xmin == xmax)) {
+    if (ows_version_get(o->request->version) == 100)
+      fprintf(o->output, "<gml:boundedBy><gml:null>missing</gml:null></gml:boundedBy>\n");
+    else return; /* No Null boundedBy in WFS 1.1.0 SF-0 */
+
+  } else {
+    fprintf(o->output, "<gml:boundedBy>\n");
+
+    if (wr->format == WFS_GML212) {
+      fprintf(o->output, "  <gml:Box srsName=\"");
+      if (strcmp(srs->auth_name->buf, "EPSG")) fprintf(o->output, "%s:", srs->auth_name->buf);
+      else if (srs->is_long) fprintf(o->output, "urn:ogc:def:crs:EPSG::");
+      else fprintf(o->output, "EPSG:");
+      fprintf(o->output, "%d\">", srs->srid);
+
+      if (fabs(xmin) > OWS_MAX_DOUBLE || fabs(ymin) > OWS_MAX_DOUBLE ||
+          fabs(xmax) > OWS_MAX_DOUBLE || fabs(ymax) > OWS_MAX_DOUBLE)
+        fprintf(o->output, "<gml:coordinates decimal=\".\" cs=\",\" ts=\" \">%g,%g %g,%g</gml:coordinates>",
+                xmin, ymin, xmax, ymax);
+      else fprintf(o->output, "<gml:coordinates decimal=\".\" cs=\",\" ts=\" \">%.*f,%.*f %.*f,%.*f</gml:coordinates>",
+                     precision, xmin, precision, ymin, precision, xmax, precision, ymax);
+      fprintf(o->output, "</gml:Box>\n");
+
+    } else if (wr->format == WFS_GML311) {
+      fprintf(o->output, "  <gml:Envelope srsName=\"");
+      if (strcmp(srs->auth_name->buf, "EPSG")) fprintf(o->output, "%s:", srs->auth_name->buf);
+      else if (srs->is_long) fprintf(o->output, "urn:ogc:def:crs:EPSG::");
+      else fprintf(o->output, "EPSG:");
+      fprintf(o->output, "%d\">", srs->srid);
+
+      if (srs->is_reverse_axis && !srs->is_eastern_axis && srs->is_long) {
+        if (fabs(xmin) > OWS_MAX_DOUBLE || fabs(ymin) > OWS_MAX_DOUBLE ||
+            fabs(xmax) > OWS_MAX_DOUBLE || fabs(ymax) > OWS_MAX_DOUBLE) {
+          fprintf(o->output, "<gml:lowerCorner>%g %g</gml:lowerCorner>", ymin, xmin);
+          fprintf(o->output, "<gml:upperCorner>%g %g</gml:upperCorner>", ymax, xmax);
+        } else {
+          fprintf(o->output, "<gml:lowerCorner>%.*f %.*f</gml:lowerCorner>", precision, ymin, precision, xmin);
+          fprintf(o->output, "<gml:upperCorner>%.*f %.*f</gml:upperCorner>", precision, ymax, precision, xmax);
+        }
+      } else {
+        if (fabs(xmin) > OWS_MAX_DOUBLE || fabs(ymin) > OWS_MAX_DOUBLE ||
+            fabs(xmax) > OWS_MAX_DOUBLE || fabs(ymax) > OWS_MAX_DOUBLE) {
+          fprintf(o->output, "<gml:lowerCorner>%g %g</gml:lowerCorner>", xmin, ymin);
+          fprintf(o->output, "<gml:upperCorner>%g %g</gml:upperCorner>", xmax, ymax);
+        } else {
+          fprintf(o->output, "<gml:lowerCorner>%.*f %.*f</gml:lowerCorner>", precision, xmin, precision, ymin);
+          fprintf(o->output, "<gml:upperCorner>%.*f %.*f</gml:upperCorner>", precision, xmax, precision, ymax);
         }
-    
-        fprintf(o->output, "</gml:boundedBy>\n");
+      }
+      fprintf(o->output, "</gml:Envelope>\n");
     }
+
+    fprintf(o->output, "</gml:boundedBy>\n");
+  }
 }
 
 
 /*
  * Display the properties of one feature
  */
-void wfs_gml_display_feature(ows * o, wfs_request * wr, buffer * layer_name, buffer * prefix,
+void wfs_gml_display_feature(ows * o, wfs_request * wr,
+                             buffer * layer_name, buffer * prefix,
                              char * prop_name, buffer * prop_type, char * value)
 {
-    buffer *time, *pkey, *value_encoded;
-    bool gml_ns = false;
+  buffer *time, *pkey, *value_encoded, *prop_name_buffer;
+  bool gml_ns = false;
+  assert(layer_name && prop_name);
+  assert(prop_type);
+  assert(prefix);
+  assert(value);
+  assert(layer_name && prop_name && prop_type && prefix && value && wr && o);
 
-    assert(layer_name);
-    assert(prop_name);
-    assert(prop_type);
-    assert(prefix);
-    assert(value);
-    assert(wr);
-    assert(o);
+  pkey = ows_psql_id_column(o, layer_name); /* CAUTION: pkey could be NULL ! */
 
-    pkey = ows_psql_id_column(o, layer_name); /* pkey could be NULL !!! */
+  /* No Pkey display in GML (default behaviour) */
+  if (pkey && pkey->buf && !strcmp(prop_name, pkey->buf) && !o->expose_pk) return;
 
-    /* No Pkey display in GML (default behaviour) */
-    if (pkey && pkey->buf && !strcmp(prop_name, pkey->buf) && !o->expose_pk) return;
+  /* Avoid to expose elements from gml_exclude_items */
+  prop_name_buffer = buffer_from_str(prop_name);
 
-    if (strlen(value) == 0) return; /* Don't display empty property */ 
+  if ((ows_layer_get(o->layers, layer_name))->exclude_items
+       && in_list(ows_layer_get(o->layers, layer_name)->exclude_items, prop_name_buffer)) return;
 
-    /* We have to check if we use gml ns or not */
-    if ((ows_layer_get(o->layers, layer_name))->gml_ns 
-         && (in_list_str((ows_layer_get(o->layers, layer_name))->gml_ns, prop_name))) gml_ns = true;
+  buffer_free(prop_name_buffer);
 
-    if (gml_ns) fprintf(o->output, "   <gml:%s>", prop_name);
-    else        fprintf(o->output, "   <%s:%s>", prefix->buf, prop_name);
+  if (strlen(value) == 0) return; /* Don't display empty property */
 
+  /* We have to check if we use gml ns or not */
+  if ((ows_layer_get(o->layers, layer_name))->gml_ns
+      && (in_list_str((ows_layer_get(o->layers, layer_name))->gml_ns, prop_name))) gml_ns = true;
 
-    /* PSQL date must be transformed into GML format */
-    if (    buffer_cmp(prop_type, "timestamptz")
-         || buffer_cmp(prop_type, "timestamp")
-         || buffer_cmp(prop_type, "datetime")
-         || buffer_cmp(prop_type, "date")) {
-        time = ows_psql_timestamp_to_xml_time(value);
-        fprintf(o->output, "%s", time->buf);
-        buffer_free(time);
+  if (gml_ns) fprintf(o->output, "   <gml:%s>", prop_name);
+  else        fprintf(o->output, "   <%s:%s>", prefix->buf, prop_name);
+
+
+  /* PSQL date must be transformed into GML format */
+  if (    buffer_cmp(prop_type, "timestamptz")
+       || buffer_cmp(prop_type, "timestamp")
+       || buffer_cmp(prop_type, "datetime")
+       || buffer_cmp(prop_type, "date")) {
+    time = ows_psql_timestamp_to_xml_time(value);
+    fprintf(o->output, "%s", time->buf);
+    buffer_free(time);
 
     /* PSQL boolean must be transformed into GML format */
-    } else if (buffer_cmp(prop_type, "bool")) {
-        if (!strcmp(value, "t")) fprintf(o->output, "true");
-        if (!strcmp(value, "f")) fprintf(o->output, "false");
-
-    } else if (    buffer_cmp(prop_type, "text")
-                || buffer_cmp(prop_type, "hstore")
-                || buffer_ncmp(prop_type, "char", 4)
-                || buffer_ncmp(prop_type, "varchar", 7)) {
-
-	    value_encoded = buffer_encode_xml_entities_str(value);
-            fprintf(o->output, "%s", value_encoded->buf);
-            buffer_free(value_encoded);
-
-    } else fprintf(o->output, "%s", value);
-    
-    if (gml_ns) fprintf(o->output, "</gml:%s>\n", prop_name);
-    else        fprintf(o->output, "</%s:%s>\n", prefix->buf, prop_name);
+  } else if (buffer_cmp(prop_type, "bool")) {
+    if (!strcmp(value, "t")) fprintf(o->output, "true");
+    if (!strcmp(value, "f")) fprintf(o->output, "false");
+
+  } else if (    buffer_cmp(prop_type, "text")
+              || buffer_cmp(prop_type, "hstore")
+              || buffer_ncmp(prop_type, "char", 4)
+              || buffer_ncmp(prop_type, "varchar", 7)) {
+
+    value_encoded = buffer_encode_xml_entities_str(value);
+    fprintf(o->output, "%s", value_encoded->buf);
+    buffer_free(value_encoded);
+
+  } else fprintf(o->output, "%s", value);
+
+  if (gml_ns) fprintf(o->output, "</gml:%s>\n", prop_name);
+  else        fprintf(o->output, "</%s:%s>\n", prefix->buf, prop_name);
 }
 
 
@@ -161,59 +176,56 @@ void wfs_gml_display_feature(ows * o, wfs_request * wr, buffer * layer_name, buf
  */
 void wfs_gml_feature_member(ows * o, wfs_request * wr, buffer * layer_name, list * properties, PGresult * res)
 {
-    int i, j, number, end, nb_fields;
-    buffer *id_name, *ns_prefix, *prop_type;
-    array * describe;
-    list *mandatory_prop;
-
-    assert(o);
-    assert(wr);
-    assert(res);
-    assert(layer_name);
-    /* NOTA: properties could be NULL ! */
-
-    number = -1;
-    id_name = ows_psql_id_column(o, layer_name);
-
-    /* We could imagine layer without PK ! */
-    if (id_name && id_name->use) number = ows_psql_column_number_id_column(o, layer_name);
-
-    ns_prefix = ows_layer_ns_prefix(o->layers, layer_name);
-    mandatory_prop = ows_psql_not_null_properties(o, layer_name);
-    describe = ows_psql_describe_table(o, layer_name);
-
-    /* display the results in gml */
-    for (i = 0, end = PQntuples(res); i < end; i++) {
-        fprintf(o->output, "  <gml:featureMember>\n");
-
-        /* print layer's name and id according to GML version */
-        if (id_name && id_name->use) {
-            if (wr->format == WFS_GML311)
-                fprintf(o->output,  "   <%s:%s gml:id=\"%s.%s\">\n",
-                        ns_prefix->buf, layer_name->buf, layer_name->buf, PQgetvalue(res, i, number));
-            else fprintf(o->output, "   <%s:%s fid=\"%s.%s\">\n",
-                        ns_prefix->buf, layer_name->buf, layer_name->buf, PQgetvalue(res, i, number));
-        } else fprintf(o->output,   "   <%s:%s>\n", ns_prefix->buf, layer_name->buf);
-
-        /* print properties */
-        for (j = 0, nb_fields = PQnfields(res) ; j < nb_fields ; j++) {
-	    if (    !properties
-                 || in_list_str(properties, PQfname(res, j))
-                 || buffer_cmp(properties->first->value, "*")
-                 || (ows_psql_not_null_properties(o, layer_name) 
-                      && in_list_str(ows_psql_not_null_properties(o, layer_name), PQfname(res, j)))
-                 || ((ows_layer_get(o->layers, layer_name))->gml_ns  
-                      && in_list_str((ows_layer_get(o->layers, layer_name))->gml_ns, PQfname(res, j)))) {
-               prop_type = array_get(describe, PQfname(res, j));
-               wfs_gml_display_feature(o, wr, layer_name, ns_prefix, PQfname(res,j), prop_type, PQgetvalue(res, i ,j));
-	    }
-        }
-
-        fprintf(o->output, "   </%s:%s>\n", ns_prefix->buf, layer_name->buf);
-        fprintf(o->output, "  </gml:featureMember>\n");
+  int i, j, number, end, nb_fields;
+  buffer *id_name, *ns_prefix, *prop_type, *layer;
+  array * describe;
+  assert(o && wr && res && layer_name);
+
+  /* CAUTION: Properties could be NULL ! */
+
+  number = -1;
+  id_name = ows_psql_id_column(o, layer_name);
+
+  /* CAUTION: We could imagine layer without PK ! */
+  if (id_name && id_name->use) number = PQfnumber(res, id_name->buf);
+
+  ns_prefix = ows_layer_ns_prefix(o->layers, ows_layer_uri_to_prefix(o->layers, layer_name));
+  describe = ows_psql_describe_table(o, layer_name);
+
+  /* display the results in gml */
+  for (i = 0, end = PQntuples(res); i < end; i++) {
+    fprintf(o->output, "  <gml:featureMember>\n");
+
+     layer = ows_layer_no_uri(o->layers, layer_name);
+
+    /* print layer's name and id according to GML version */
+    if (id_name && id_name->use) {
+      if (wr->format == WFS_GML311)
+        fprintf(o->output,  "   <%s gml:id=\"%s.%s\">\n",
+                ows_layer_uri_to_prefix(o->layers, layer_name)->buf,
+                layer->buf, PQgetvalue(res, i, number));
+      else fprintf(o->output, "   <%s fid=\"%s.%s\">\n",
+                      ows_layer_uri_to_prefix(o->layers, layer_name)->buf,
+                      layer->buf, PQgetvalue(res, i, number));
+    } else fprintf(o->output,   "   <%s>\n", ows_layer_uri_to_prefix(o->layers, layer_name)->buf);
+
+    /* print properties */
+    for (j = 0, nb_fields = PQnfields(res) ; j < nb_fields ; j++) {
+      if (    !properties
+           || in_list_str(properties, PQfname(res, j))
+           || buffer_cmp(properties->first->value, "*")
+           || (ows_psql_not_null_properties(o, layer_name)
+              && in_list_str(ows_psql_not_null_properties(o, layer_name), PQfname(res, j)))
+           || ((ows_layer_get(o->layers, layer_name))->gml_ns
+              && in_list_str((ows_layer_get(o->layers, layer_name))->gml_ns, PQfname(res, j)))) {
+        prop_type = array_get(describe, PQfname(res, j));
+        wfs_gml_display_feature(o, wr, layer_name, ns_prefix, PQfname(res,j), prop_type, PQgetvalue(res, i ,j));
+      }
     }
 
-    buffer_free(layer_name);
+    fprintf(o->output, "   </%s>\n", ows_layer_uri_to_prefix(o->layers, layer_name)->buf);
+    fprintf(o->output, "  </gml:featureMember>\n");
+  }
 }
 
 
@@ -222,72 +234,71 @@ void wfs_gml_feature_member(ows * o, wfs_request * wr, buffer * layer_name, list
  */
 static void wfs_gml_display_namespaces(ows * o, wfs_request * wr)
 {
-    array *namespaces;
-    array_node *an;
-    list_node *ln;
-    buffer * ns_prefix;
-
-    assert(o);
-    assert(wr);
-
-    namespaces = ows_layer_list_namespaces(o->layers);
-    assert(namespaces);
-
-         if (wr->format == WFS_GML212)
-         fprintf(o->output, "Content-Type: text/xml; subtype=gml/2.1.2\n\n");
-    else if (wr->format == WFS_GML311)
-         fprintf(o->output, "Content-Type: text/xml; subtype=gml/3.1.1\n\n");
-
-    fprintf(o->output, "<?xml version='1.0' encoding='%s'?>\n", o->encoding->buf);
-    fprintf(o->output, "<wfs:FeatureCollection\n");
-
-    for (an = namespaces->first; an != NULL; an = an->next)
-        fprintf(o->output, " xmlns:%s='%s'\n", an->key->buf, an->value->buf);
-
-    fprintf(o->output, " xmlns:wfs='http://www.opengis.net/wfs'\n");
-    fprintf(o->output, " xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'\n");
-    fprintf(o->output, " xmlns:gml='http://www.opengis.net/gml'\n");
-    fprintf(o->output, " xmlns:xsd='http://www.w3.org/2001/XMLSchema'\n");
-    fprintf(o->output, " xmlns:ogc='http://www.opengis.net/ogc'\n");
-    fprintf(o->output, " xmlns:xlink='http://www.w3.org/1999/xlink'\n");
-    fprintf(o->output, " xmlns:ows='http://www.opengis.net/ows'\n");
-
-    fprintf(o->output, " xsi:schemaLocation='");
-    if (ows_version_get(o->request->version) == 100)
-        fprintf(o->output, "%s\n    %s?service=WFS&version=1.0.0&request=DescribeFeatureType",
-                namespaces->first->value->buf, o->online_resource->buf);
-    else 
-        fprintf(o->output, "%s\n    %s?service=WFS&version=1.1.0&request=DescribeFeatureType",
-                namespaces->first->value->buf, o->online_resource->buf);
-
-    /* FeatureId request could be without Typename parameter */ 
-    if (wr->typename)  
-    { 
-         fprintf(o->output, "&Typename=");
-         for (ln = wr->typename->first ; ln ; ln = ln->next) { 
-                ns_prefix = ows_layer_ns_prefix(o->layers, ln->value); 
-                fprintf(o->output, "%s:%s", ns_prefix->buf, ln->value->buf); 
-                if (ln->next) fprintf(o->output, ","); 
-         } 
-    }
-
-    if (ows_version_get(o->request->version) == 100) {
-        fprintf(o->output, "   http://www.opengis.net/wfs\n");
-        fprintf(o->output, "   http://schemas.opengis.net/wfs/1.0.0/WFS-basic.xsd\n");
-    } else {
-        fprintf(o->output, "   http://www.opengis.net/wfs\n");
-        fprintf(o->output, "   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd\n");
-    }
-
-    if (wr->format == WFS_GML212) {
-        fprintf(o->output, "   http://www.opengis.net/gml\n");
-        fprintf(o->output, "   http://schemas.opengis.net/gml/2.1.2/feature.xsd'\n");
-    } else {
-        fprintf(o->output, "   http://www.opengis.net/gml\n");
-        fprintf(o->output, "   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'\n");
+  array *namespaces;
+  array_node *an;
+  list_node *ln;
+  buffer * ns_prefix;
+
+  assert(o);
+  assert(wr);
+
+  namespaces = ows_layer_list_namespaces(o->layers);
+  assert(namespaces);
+
+  if (wr->format == WFS_GML212)
+    fprintf(o->output, "Content-Type: text/xml; subtype=gml/2.1.2\n\n");
+  else if (wr->format == WFS_GML311)
+    fprintf(o->output, "Content-Type: text/xml; subtype=gml/3.1.1\n\n");
+
+  fprintf(o->output, "<?xml version='1.0' encoding='%s'?>\n", o->encoding->buf);
+  fprintf(o->output, "<wfs:FeatureCollection\n");
+
+  for (an = namespaces->first; an != NULL; an = an->next)
+    fprintf(o->output, " xmlns:%s='%s'\n", an->key->buf, an->value->buf);
+
+  fprintf(o->output, " xmlns:wfs='http://www.opengis.net/wfs'\n");
+  fprintf(o->output, " xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'\n");
+  fprintf(o->output, " xmlns:gml='http://www.opengis.net/gml'\n");
+  fprintf(o->output, " xmlns:xsd='http://www.w3.org/2001/XMLSchema'\n");
+  fprintf(o->output, " xmlns:ogc='http://www.opengis.net/ogc'\n");
+  fprintf(o->output, " xmlns:xlink='http://www.w3.org/1999/xlink'\n");
+  fprintf(o->output, " xmlns:ows='http://www.opengis.net/ows'\n");
+
+  fprintf(o->output, " xsi:schemaLocation='");
+  if (ows_version_get(o->request->version) == 100)
+    fprintf(o->output, "%s\n    %s?service=WFS&version=1.0.0&request=DescribeFeatureType",
+            namespaces->first->value->buf, o->online_resource->buf);
+  else
+    fprintf(o->output, "%s\n    %s?service=WFS&version=1.1.0&request=DescribeFeatureType",
+            namespaces->first->value->buf, o->online_resource->buf);
+
+  /* FeatureId request could be without Typename parameter */
+  if (wr->typename) {
+    fprintf(o->output, "&Typename=");
+    for (ln = wr->typename->first ; ln ; ln = ln->next) {
+      ns_prefix = ows_layer_ns_prefix(o->layers, ln->value);
+      fprintf(o->output, "%s:%s", ns_prefix->buf, ln->value->buf);
+      if (ln->next) fprintf(o->output, ",");
     }
-
-    array_free(namespaces);
+  }
+
+  if (ows_version_get(o->request->version) == 100) {
+    fprintf(o->output, "   http://www.opengis.net/wfs\n");
+    fprintf(o->output, "   http://schemas.opengis.net/wfs/1.0.0/WFS-basic.xsd\n");
+  } else {
+    fprintf(o->output, "   http://www.opengis.net/wfs\n");
+    fprintf(o->output, "   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd\n");
+  }
+
+  if (wr->format == WFS_GML212) {
+    fprintf(o->output, "   http://www.opengis.net/gml\n");
+    fprintf(o->output, "   http://schemas.opengis.net/gml/2.1.2/feature.xsd'\n");
+  } else {
+    fprintf(o->output, "   http://www.opengis.net/gml\n");
+    fprintf(o->output, "   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'\n");
+  }
+
+  array_free(namespaces);
 }
 
 
@@ -296,34 +307,34 @@ static void wfs_gml_display_namespaces(ows * o, wfs_request * wr)
  */
 static void wfs_gml_display_hits(ows * o, wfs_request * wr, mlist * request_list)
 {
-    list_node * ln;
-    PGresult *res;
-    buffer * date;
-    int hits = 0;
-
-    assert(o);
-    assert(wr);
-    assert(request_list);
-
-    wfs_gml_display_namespaces(o, wr);
-
-    /* just count the number of features */
-    for (ln = request_list->first->value->first ; ln ; ln = ln->next) {
-	buffer_add_head_str(ln->value, "SELECT count(*) FROM (");
-	buffer_add_str(ln->value, ") as foo");
-      
-        res = ows_psql_exec(o, ln->value->buf);
-        if (PQresultStatus(res) == PGRES_TUPLES_OK)
-            hits = hits + atoi(PQgetvalue(res, 0, 0));
-        PQclear(res);
-    }
+  list_node * ln;
+  PGresult *res;
+  buffer * date;
+  int hits = 0;
+
+  assert(o);
+  assert(wr);
+  assert(request_list);
 
-    /* render GML hits output */
-    res = ows_psql_exec(o, "SELECT localtimestamp");
-    date = ows_psql_timestamp_to_xml_time(PQgetvalue(res, 0, 0));
-    fprintf(o->output, " timeStamp='%s' numberOfFeatures='%d' />\n", date->buf, hits);
-    buffer_free(date);
+  wfs_gml_display_namespaces(o, wr);
+
+  /* Just count the number of features */
+  for (ln = request_list->first->value->first ; ln ; ln = ln->next) {
+    buffer_add_head_str(ln->value, "SELECT count(*) FROM (");
+    buffer_add_str(ln->value, ") AS foo");
+
+    res = ows_psql_exec(o, ln->value->buf);
+    if (PQresultStatus(res) == PGRES_TUPLES_OK)
+      hits = hits + atoi(PQgetvalue(res, 0, 0));
     PQclear(res);
+  }
+
+  /* Render GML hits output */
+  res = ows_psql_exec(o, "SELECT localtimestamp");
+  date = ows_psql_timestamp_to_xml_time(PQgetvalue(res, 0, 0));
+  fprintf(o->output, " timeStamp='%s' numberOfFeatures='%d' />\n", date->buf, hits);
+  buffer_free(date);
+  PQclear(res);
 }
 
 /*
@@ -331,83 +342,75 @@ static void wfs_gml_display_hits(ows * o, wfs_request * wr, mlist * request_list
  */
 static void wfs_gml_display_results(ows * o, wfs_request * wr, mlist * request_list)
 {
-    mlist_node *mln_property, *mln_fid;
-    list_node *ln, *ln_typename;
-    buffer *layer_name;
-    list *fe;
-    PGresult *res;
-    ows_bbox *outer_b;
-
-    assert(o);
-    assert(wr);
-    assert(request_list);
-
-    ln = NULL;
-    ln_typename = NULL;
-    mln_property = NULL;
-    mln_fid = NULL;
-
-    /* display the first node and namespaces */
-    wfs_gml_display_namespaces(o, wr);
-    fprintf(o->output, ">\n");
-
-    /* 
-     * Display only if we really asked the bbox of the features retrieved
-     * Overhead could be signifiant !!!
-     */
-    if (o->display_bbox) {
-        /* print the outerboundaries of the requests */
-        outer_b = ows_bbox_boundaries(o, request_list->first->next->value, request_list->last->value, wr->srs);
-        wfs_gml_bounded_by(o, wr, outer_b->xmin, outer_b->ymin, outer_b->xmax, outer_b->ymax, outer_b->srs);
-        ows_bbox_free(outer_b);
-    }
+  mlist_node *mln_property, *mln_fid;
+  list_node *ln, *ln_typename;
+  buffer *layer_name, *layer_uri;
+  list *fe;
+  PGresult *res;
+  ows_bbox *outer_b;
 
-    /* initialize the nodes to run through requests */
-    if (wr->typename)     ln_typename = wr->typename->first;
-    if (wr->featureid)    mln_fid = wr->featureid->first;
-    if (wr->propertyname) mln_property = wr->propertyname->first;
+  assert(o && wr && request_list);
 
-    for (ln = request_list->first->value->first ; ln ; ln = ln->next) {
+  ln = ln_typename = NULL;
+  mln_property = mln_fid = NULL;
 
-        res = ows_psql_exec(o, ln->value->buf);
+  /* Display the first node and namespaces */
+  wfs_gml_display_namespaces(o, wr);
+  fprintf(o->output, ">\n");
 
-        if (PQresultStatus(res) != PGRES_TUPLES_OK) {
-            PQclear(res);
+  /* Display only if we really asked the bbox of the features retrieved. Overhead could be signifiant ! */
+  if (o->display_bbox) {
+    outer_b = ows_bbox_boundaries(o, request_list->first->next->value, request_list->last->value, wr->srs);
+    wfs_gml_bounded_by(o, wr, outer_b->xmin, outer_b->ymin, outer_b->xmax, outer_b->ymax, outer_b->srs);
+    ows_bbox_free(outer_b);
+  }
 
-            /*increments the nodes */
-            if (wr->typename)     ln_typename = ln_typename->next;
-            if (wr->featureid)    mln_fid = mln_fid->next;
-            if (wr->propertyname) mln_property = mln_property->next;
+  /* Initialize the nodes to run through requests */
+  if (wr->typename)     ln_typename = wr->typename->first;
+  if (wr->featureid)    mln_fid = wr->featureid->first;
+  if (wr->propertyname) mln_property = wr->propertyname->first;
 
-            break;
-        }
+  for (ln = request_list->first->value->first ; ln ; ln = ln->next) {
 
-        /* define a layer_name which match typename or featureid */
-        layer_name = buffer_init();
+    res = ows_psql_exec(o, ln->value->buf);
 
-        if (wr->typename) buffer_copy(layer_name, ln_typename->value);
-        else {
-            fe = list_explode('.', mln_fid->value->first->value);
-            buffer_copy(layer_name, fe->first->value);
-            list_free(fe);
-        }
+    if (PQresultStatus(res) != PGRES_TUPLES_OK) {
+      PQclear(res);
 
-        /* display each feature member */
-        if (wr->propertyname)
-            wfs_gml_feature_member(o, wr, layer_name, mln_property->value, res);
-        else
-            /* Use NULL if propertynames not defined */
-            wfs_gml_feature_member(o, wr, layer_name, NULL, res);
+      /* Increments the nodes */
+      if (wr->typename)     ln_typename = ln_typename->next;
+      if (wr->featureid)    mln_fid = mln_fid->next;
+      if (wr->propertyname) mln_property = mln_property->next;
 
-        PQclear(res);
+      break;
+    }
+
+    /* Define a layer_name which match typename or featureid */
 
-        /*increments the nodes */
-        if (wr->featureid)    mln_fid = mln_fid->next;
-        if (wr->propertyname) mln_property = mln_property->next;
-        if (wr->typename)     ln_typename = ln_typename->next;
+    if (wr->typename) {
+      layer_name = buffer_init();
+      buffer_copy(layer_name, ln_typename->value);
+      layer_uri = ows_layer_prefix_to_uri(o->layers, layer_name);
+      buffer_free(layer_name);
+    } else {
+      fe = list_explode('.', mln_fid->value->first->value);
+      layer_uri = ows_layer_no_uri_to_uri(o->layers, fe->first->value); 
+      list_free(fe);
     }
 
-    fprintf(o->output, "</wfs:FeatureCollection>\n");
+    /* Display each feature member */
+    if (wr->propertyname) wfs_gml_feature_member(o, wr, layer_uri, mln_property->value, res);
+    else                  wfs_gml_feature_member(o, wr, layer_uri, NULL, res);   /* PropertyNames not mandatory */
+
+    PQclear(res);
+
+    /* Increments the nodes */
+    if (wr->featureid)    mln_fid = mln_fid->next;
+    if (wr->propertyname) mln_property = mln_property->next;
+    if (wr->typename)     ln_typename = ln_typename->next;
+  }
+
+  fprintf(o->output, "</wfs:FeatureCollection>\n");
 }
 
 
@@ -416,143 +419,139 @@ static void wfs_gml_display_results(ows * o, wfs_request * wr, mlist * request_l
  */
 static buffer *wfs_retrieve_sql_request_select(ows * o, wfs_request * wr, buffer * layer_name)
 {
-    int gml_opt;
-    buffer *select;
-    array *prop_table;
-    array_node *an;
-    bool gml_boundedby;
-
-    assert(o);
-    assert(wr);
-
-    select = buffer_init();
-    buffer_add_str(select, "SELECT ");
-
-    prop_table = ows_psql_describe_table(o, layer_name);
-
-    for (an = prop_table->first ; an ; an = an->next) {
-
-        if (    !strcmp(an->key->buf, "boundedBy") 
-             && (ows_layer_get(o->layers, layer_name))->gml_ns 
-             && (in_list_str((ows_layer_get(o->layers, layer_name))->gml_ns, an->key->buf))) gml_boundedby = true;
-        else gml_boundedby = false;
-
-        /* geometry columns must be returned in GML */
-        if (ows_psql_is_geometry_column(o, layer_name, an->key)) {
-
-            if (wr->format == WFS_GML212) {
-                buffer_add_str(select, "ST_AsGML(2, ");
-
-                /* Geometry Reprojection on the fly step if asked */
-                if (wr->srs) {
-                    buffer_add_str(select, "ST_Transform(");
-                    buffer_add(select, '"');
-                    buffer_copy(select, an->key);
-                    buffer_add_str(select, "\"::geometry,");
-                    buffer_add_int(select, wr->srs->srid);
-                    buffer_add_str(select, "),");
-                } else {
-                    buffer_add(select, '"');
-                    buffer_copy(select, an->key);
-                    buffer_add_str(select, "\",");
-                }
-
-                if ((wr->srs && !wr->srs->is_degree) || 
-                   (!wr->srs && ows_srs_meter_units(o, layer_name)))
-                    buffer_add_int(select, o->meter_precision); 
-                else 
-                    buffer_add_int(select, o->degree_precision);
-
-		gml_opt = 0; /* Short SRS */
-		if (wr->srs && wr->srs->is_long) gml_opt += 1; /* FIXME really ? */
-                if (wr->srs && wr->srs->is_eastern_axis) gml_opt += 16;
-                if (gml_boundedby) gml_opt += 32;
-
-                buffer_add_str(select, ",");
-                buffer_add_int(select, gml_opt);
-                buffer_add_str(select, ") AS \"");
-                buffer_copy(select, an->key);
-                buffer_add_str(select, "\" ");
-            }
-            /* GML3 */
-            else if (wr->format == WFS_GML311) {
-                buffer_add_str(select, "ST_AsGML(3, ");
-
-                /* Geometry Reprojection on the fly step if asked */
-                if (wr->srs) {
-                    buffer_add_str(select, "ST_Transform(");
-                    buffer_add(select, '"');
-                    buffer_copy(select, an->key);
-                    buffer_add_str(select, "\"::geometry,");
-                    buffer_add_int(select, wr->srs->srid);
-                    buffer_add_str(select, "),");
-                } else {
-                    buffer_add(select, '"');
-                    buffer_copy(select, an->key);
-                    buffer_add_str(select, "\",");
-                }
-
-		gml_opt = 6; /* no srsDimension (CITE Compliant) 
-                                and use LineString rather than curve */
-		if (wr->srs && wr->srs->is_long) gml_opt += 1; /* Long SRS */
-		if (gml_boundedby) gml_opt += 32;
-
-                if (    (wr->srs && !wr->srs->is_degree) 
-                     || (!wr->srs && ows_srs_meter_units(o, layer_name))) {
-                    buffer_add_int(select, o->meter_precision);
-                    if (wr->srs && !wr->srs->is_eastern_axis && wr->srs->is_long) gml_opt += 16;
-                } else {
-                    buffer_add_int(select, o->degree_precision);
-                    if (wr->srs && !wr->srs->is_eastern_axis && wr->srs->is_long) gml_opt += 16;
-                }
-
-                buffer_add_str(select, ", ");
-                buffer_add_int(select, gml_opt);
-                buffer_add_str(select, ") AS \"");
-                buffer_copy(select, an->key);
-                buffer_add_str(select, "\" ");
-            } 
-            else if (wr->format == WFS_GEOJSON) {
-                buffer_add_str(select, "ST_AsGeoJSON(");
-
-                /* Geometry Reprojection on the fly step if asked */
-                if (wr->srs) {
-                    buffer_add_str(select, "ST_Transform(");
-                    buffer_add(select, '"');
-                    buffer_copy(select, an->key);
-                    buffer_add_str(select, "\"::geometry,");
-                    buffer_add_int(select, wr->srs->srid);
-                    buffer_add_str(select, "),");
-                } else {
-                    buffer_add(select, '"');
-                    buffer_copy(select, an->key);
-                    buffer_add_str(select, "\",");
-                }
-
-                if ((wr->srs && !wr->srs->is_degree) || 
-                   (!wr->srs && ows_srs_meter_units(o, layer_name)))
-                    buffer_add_int(select, o->meter_precision); 
-                else 
-                    buffer_add_int(select, o->degree_precision);
-
-                buffer_add_str(select, ", 1) AS \"");	/* Bbox */
-
-                buffer_copy(select, an->key);
-                buffer_add_str(select, "\" ");
-            }
+  int gml_opt;
+  buffer *select;
+  array *prop_table;
+  array_node *an;
+  bool gml_boundedby;
+
+  assert(o && wr);
+
+  select = buffer_init();
+  buffer_add_str(select, "SELECT ");
+
+  prop_table = ows_psql_describe_table(o, layer_name);
+
+  for (an = prop_table->first ; an ; an = an->next) {
+
+    if (!strcmp(an->key->buf, "boundedBy")
+            && (ows_layer_get(o->layers, layer_name))->gml_ns
+            && (in_list_str((ows_layer_get(o->layers, layer_name))->gml_ns, an->key->buf))) gml_boundedby = true;
+    else gml_boundedby = false;
+
+    /* geometry columns must be returned in GML */
+    if (ows_psql_is_geometry_column(o, layer_name, an->key)) {
+
+      if (wr->format == WFS_GML212) {
+        buffer_add_str(select, "ST_AsGML(");
+
+        /* Geometry Reprojection on the fly step if asked */
+        if (wr->srs) {
+          buffer_add_str(select, "ST_Transform(");
+          buffer_add(select, '"');
+          buffer_copy(select, an->key);
+          buffer_add_str(select, "\"::geometry,");
+          buffer_add_int(select, wr->srs->srid);
+          buffer_add_str(select, "),");
+        } else {
+          buffer_add(select, '"');
+          buffer_copy(select, an->key);
+          buffer_add_str(select, "\",");
+        }
+
+        if ((wr->srs && !wr->srs->is_degree) ||
+            (!wr->srs && ows_srs_meter_units(o, layer_name)))
+          buffer_add_int(select, o->meter_precision);
+        else
+          buffer_add_int(select, o->degree_precision);
+
+                                                 gml_opt  = 0; /* Short SRS */
+        if (wr->srs && wr->srs->is_long)         gml_opt += 1; /* FIXME really ? */
+        if (wr->srs && wr->srs->is_eastern_axis) gml_opt += 16;
+        if (gml_boundedby)                       gml_opt += 32;
+
+        buffer_add_str(select, ",");
+        buffer_add_int(select, gml_opt);
+        buffer_add_str(select, ") AS \"");
+        buffer_copy(select, an->key);
+        buffer_add_str(select, "\" ");
+      }
+      /* GML3 */
+      else if (wr->format == WFS_GML311) {
+        buffer_add_str(select, "ST_AsGML(3, ");
+
+        /* Geometry Reprojection on the fly step if asked */
+        if (wr->srs) {
+          buffer_add_str(select, "ST_Transform(");
+          buffer_add(select, '"');
+          buffer_copy(select, an->key);
+          buffer_add_str(select, "\"::geometry,");
+          buffer_add_int(select, wr->srs->srid);
+          buffer_add_str(select, "),");
+        } else {
+          buffer_add(select, '"');
+          buffer_copy(select, an->key);
+          buffer_add_str(select, "\",");
+        }
 
+        gml_opt = 6; /* no srsDimension (CITE Compliant) and use LineString rather than curve */
+        if (wr->srs && wr->srs->is_long) gml_opt += 1; /* Long SRS */
+        if (gml_boundedby) gml_opt += 32;
+
+        if ((wr->srs && !wr->srs->is_degree) || (!wr->srs && ows_srs_meter_units(o, layer_name))) {
+          buffer_add_int(select, o->meter_precision);
+          if (wr->srs && !wr->srs->is_eastern_axis && wr->srs->is_long) gml_opt += 16;
+        } else {
+          buffer_add_int(select, o->degree_precision);
+          if (wr->srs && !wr->srs->is_eastern_axis && wr->srs->is_long) gml_opt += 16;
         }
-        /* columns are written in quotation marks */
-        else {
-            buffer_add_str(select, "\"");
-            buffer_copy(select, an->key);
-            buffer_add_str(select, "\"");
+
+        buffer_add_str(select, ", ");
+        buffer_add_int(select, gml_opt);
+        buffer_add_str(select, ") AS \"");
+        buffer_copy(select, an->key);
+        buffer_add_str(select, "\" ");
+      } else if (wr->format == WFS_GEOJSON) {
+        buffer_add_str(select, "ST_AsGeoJSON(");
+
+        /* Geometry Reprojection on the fly step if asked */
+        if (wr->srs) {
+          buffer_add_str(select, "ST_Transform(");
+          buffer_add(select, '"');
+          buffer_copy(select, an->key);
+          buffer_add_str(select, "\"::geometry,");
+          buffer_add_int(select, wr->srs->srid);
+          buffer_add_str(select, "),");
+        } else {
+          buffer_add(select, '"');
+          buffer_copy(select, an->key);
+          buffer_add_str(select, "\",");
         }
 
-        if (an->next) buffer_add_str(select, ",");
+        if ((wr->srs && !wr->srs->is_degree) ||
+            (!wr->srs && ows_srs_meter_units(o, layer_name)))
+          buffer_add_int(select, o->meter_precision);
+        else
+          buffer_add_int(select, o->degree_precision);
+
+        buffer_add_str(select, ", 1) AS \""); /* Bbox */
+
+        buffer_copy(select, an->key);
+        buffer_add_str(select, "\" ");
+      }
+
     }
+    /* Columns are written in quotation marks */
+    else {
+      buffer_add_str(select, "\"");
+      buffer_copy(select, an->key);
+      buffer_add_str(select, "\"");
+    }
+
+    if (an->next) buffer_add_str(select, ",");
+  }
 
-    return select;
+  return select;
 }
 
 
@@ -561,175 +560,203 @@ static buffer *wfs_retrieve_sql_request_select(ows * o, wfs_request * wr, buffer
  */
 static mlist *wfs_retrieve_sql_request_list(ows * o, wfs_request * wr)
 {
-    mlist *requests;
-    mlist_node *mln_fid;
-    list *fid, *sql_req, *from_list, *where_list;
-    list_node *ln_typename, *ln_filter;
-    buffer *geom, *sql, *where, *layer_name;
-    int srid, size, cpt;
-    filter_encoding *fe;
-    ows_bbox *bbox;
-    char *escaped;
-
-    assert(o);
-    assert(wr);
-
-    mln_fid = NULL;
-    ln_filter = NULL;
-    ln_typename = NULL;
-    where = NULL;
-    geom = NULL;
-    size = 0;
-
-    /* initialize the nodes to run through typename and fid */
+  mlist *requests;
+  mlist_node *mln_fid;
+  list *fid, *sql_req, *from_list, *where_list;
+  list_node *ln_typename, *ln_filter;
+  buffer *geom, *sql, *where, *layer_name, *layer_uri, *sql_count;
+  int srid, size, cpt, features, max_features;
+  filter_encoding *fe;
+  ows_bbox *bbox;
+  char *escaped;
+  PGresult * res;
+
+  assert(o && wr);
+
+  mln_fid = NULL;
+  ln_typename = ln_filter = NULL;
+  where = geom = NULL;
+  size = features = 0;
+
+  /* Initialize the nodes to run through typename and fid */
+  if (wr->typename) {
+    size = wr->typename->size;
+    ln_typename = wr->typename->first;
+  }
+
+  if (wr->filter) ln_filter = wr->filter->first;
+
+  if (wr->featureid) {
+    size = wr->featureid->size;
+    mln_fid = wr->featureid->first;
+  }
+
+  /* Will contain list of SQL requests */
+  sql_req = list_init();
+  /* The 'from_list' and 'where_list' will contain layer names
+     and SQL WHERE statement used later to compute the boundaries */
+  from_list = list_init();
+  where_list = list_init();
+
+  /* Fill a SQL request for each typename */
+  for (cpt = 0; cpt < size; cpt++) {
+    layer_name = buffer_init();
+
+    /* Defines a layer_name which match typename or featureid */
     if (wr->typename) {
-        size = wr->typename->size;
-        ln_typename = wr->typename->first;
+      buffer_copy(layer_name, ln_typename->value);
+      layer_uri = ows_layer_prefix_to_uri(o->layers, layer_name); 
+    } else {
+      fid = list_explode('.', mln_fid->value->first->value);
+      layer_uri = ows_layer_no_uri_to_uri(o->layers, fid->first->value);
+      buffer_copy(layer_name, ows_layer_uri_to_prefix(o->layers, layer_uri));
+      list_free(fid);
     }
 
-    if (wr->filter) ln_filter = wr->filter->first;
 
+    /* SELECT */
+    sql = wfs_retrieve_sql_request_select(o, wr, layer_uri);
+
+    /* FROM : match layer_name (typename or featureid) */
+    buffer_add_str(sql, " FROM \"");
+    buffer_copy(sql, ows_psql_schema_name(o, layer_uri));
+    buffer_add_str(sql, "\".\"");
+    buffer_copy(sql, ows_psql_table_name(o, layer_uri));
+    buffer_add_str(sql, "\"");
+
+    /* WHERE : match featureid, bbox or filter */
+
+    /* FeatureId */
     if (wr->featureid) {
-        size = wr->featureid->size;
-        mln_fid = wr->featureid->first;
+      where = fe_kvp_featureid(o, wr, layer_uri, mln_fid->value);
+
+      if (where->use == 0) {
+        buffer_free(where);
+        buffer_free(sql);
+        buffer_free(layer_name);
+        list_free(sql_req);
+        list_free(from_list);
+        list_free(where_list);
+        wfs_error(o, wr, WFS_ERROR_NO_MATCHING, "error : an id_column is required to use featureid", "GetFeature");
+        return NULL;
+      }
     }
 
-    /* sql_req will contain list of sql requests */
-    sql_req = list_init();
-    /* from_list and where_list will contain layer names and
-       SQL WHERE statement to calculate then the boundaries */
-    from_list = list_init();
-    where_list = list_init();
-
-    /* fill a SQL request for each typename */
-    for (cpt = 0; cpt < size; cpt++) {
-        layer_name = buffer_init();
-
-        /* defines a layer_name which match typename or featureid */
-        if (wr->typename)
-            buffer_copy(layer_name, ln_typename->value);
-        else {
-            fid = list_explode('.', mln_fid->value->first->value);
-            buffer_copy(layer_name, fid->first->value);
-            list_free(fid);
+    /* BBOX */
+    else if (wr->bbox) where = fe_kvp_bbox(o, wr, layer_uri, wr->bbox);
+
+    /* Filter */
+    else if (wr->filter) {
+      if (ln_filter->value->use != 0) {
+        where = buffer_init();
+        buffer_add_str(where, " WHERE ");
+
+        fe = filter_encoding_init();
+        fe = fe_filter(o, fe, layer_name, ln_filter->value);
+
+        if (fe->error_code != FE_NO_ERROR) {
+          buffer_free(where);
+          buffer_free(sql);
+          buffer_free(layer_name);
+          list_free(sql_req);
+          list_free(from_list);
+          list_free(where_list);
+          fe_error(o, fe);
+          return NULL;
         }
 
-        /* SELECT */
-        sql = wfs_retrieve_sql_request_select(o, wr, layer_name);
-
-        /* FROM : match layer_name (typename or featureid) */
-        buffer_add_str(sql, " FROM ");
-        buffer_copy(sql, ows_psql_schema_name(o, layer_name));
-        buffer_add_str(sql, ".\"");
-        buffer_copy(sql, ows_psql_table_name(o, layer_name));
-        buffer_add_str(sql, "\"");
-
-        /* WHERE : match featureid, bbox or filter */
-
-        /* FeatureId */
-        if (wr->featureid) {
-            where = fe_kvp_featureid(o, wr, layer_name, mln_fid->value);
-
-            if (where->use == 0) {
-                buffer_free(where);
-                buffer_free(sql);
-                list_free(sql_req);
-                list_free(from_list);
-                list_free(where_list);
-                buffer_free(layer_name);
-                wfs_error(o, wr, WFS_ERROR_NO_MATCHING, "error : an id_column is required to use featureid", "GetFeature");
-		return NULL;
-            }
-        }
-        /* BBOX */
-        else if (wr->bbox) where = fe_kvp_bbox(o, wr, layer_name, wr->bbox);
-
-        /* Filter */
-        else if (wr->filter) {
-            if (ln_filter->value->use != 0) {
-                where = buffer_init();
-                buffer_add_str(where, " WHERE ");
-
-                fe = filter_encoding_init();
-                fe = fe_filter(o, fe, layer_name, ln_filter->value);
-
-                if (fe->error_code != FE_NO_ERROR) {
-                    buffer_free(where);
-                    buffer_free(sql);
-                    list_free(sql_req);
-                    list_free(from_list);
-                    list_free(where_list);
-                    buffer_free(layer_name);
-                    fe_error(o, fe);
-		    return NULL;
-                }
-
-                buffer_copy(where, fe->sql);
-                filter_encoding_free(fe);
-            }
-        } else where = buffer_init();
-
-             if (o->max_geobbox && where->use != 0) buffer_add_str(where, " AND ");
-        else if (o->max_geobbox && where->use == 0) buffer_add_str(where, " WHERE ");
-
-        /* geobbox's limits of ows */
-        if (o->max_geobbox) {
-
-            bbox = ows_bbox_init();
-	    ows_bbox_set_from_geobbox(o, bbox, o->max_geobbox);
-
-            buffer_add_str(where, "NOT (ST_Disjoint(");
-            buffer_copy(where, geom);
-            buffer_add_str(where, ",ST_Transform(");
-            ows_bbox_to_query(o, bbox, where);
-            buffer_add_str(where, ",");
-            srid = ows_srs_get_srid_from_layer(o, layer_name);
-            buffer_add_int(where, srid);
-            buffer_add_str(where, ")))");
-
-            ows_bbox_free(bbox);
-        }
+        buffer_copy(where, fe->sql);
+        filter_encoding_free(fe);
+      }
+    } else where = buffer_init();
 
-        /* sortby parameter */
-        if (wr->sortby) {
-            buffer_add_str(where, " ORDER BY ");
-            escaped = ows_psql_escape_string(o, wr->sortby->buf);
-            if (escaped) {
-                 buffer_add_str(where, escaped);
-                 free(escaped);
-            }
-        }
+    buffer_free(layer_name);
 
-        /* maxfeatures parameter, or max_features ows limits, limits the number of results */
-        if (wr->maxfeatures > 0) {
-            buffer_add_str(where, " LIMIT ");
-            if (o->max_features > 0 && wr->maxfeatures > o->max_features)
-                 buffer_add_int(where, o->max_features); /* Server limit took precedence */
-            else buffer_add_int(where, wr->maxfeatures);
-        } else if (o->max_features > 0) {
-            buffer_add_str(where, " LIMIT ");
-            buffer_add_int(where, o->max_features);
-        }
+    if (o->max_geobbox && where->use != 0) buffer_add_str(where, " AND ");
+    else if (o->max_geobbox && where->use == 0) buffer_add_str(where, " WHERE ");
+
+    /* geobbox's limits of ows */
+    if (o->max_geobbox) {
 
-        buffer_copy(sql, where);
+      bbox = ows_bbox_init();
+      ows_bbox_set_from_geobbox(o, bbox, o->max_geobbox);
 
-        list_add(sql_req, sql);
-        list_add(where_list, where);
-        list_add(from_list, layer_name);
+      buffer_add_str(where, "NOT (ST_Disjoint(");
+      buffer_copy(where, geom);
+      buffer_add_str(where, ",ST_Transform(");
+      ows_bbox_to_query(o, bbox, where);
+      buffer_add_str(where, ",");
+      srid = ows_srs_get_srid_from_layer(o, layer_uri);
+      buffer_add_int(where, srid);
+      buffer_add_str(where, ")))");
 
-        /* incrementation of the nodes */
-        if (wr->featureid) mln_fid = mln_fid->next;
-        if (wr->typename)  ln_typename = ln_typename->next;
-        if (wr->filter)    ln_filter = ln_filter->next;
+      ows_bbox_free(bbox);
     }
 
-    /* requests multiple list contains three lists : sql requests, from list and where list */
-    requests = mlist_init();
-    mlist_add(requests, sql_req);
-    mlist_add(requests, from_list);
-    mlist_add(requests, where_list);
+    /* sortby parameter */
+    if (wr->sortby) {
+      buffer_add_str(where, " ORDER BY ");
+      escaped = ows_psql_escape_string(o, wr->sortby->buf);
+      if (escaped) {
+        buffer_add_str(where, escaped);
+        free(escaped);
+      }
+    }
+
+    /* maxfeatures parameter, or max_features ows limits, limits the number of results */
+    max_features = -1;
+    if (wr->maxfeatures > 0 && o->max_features > 0 && wr->maxfeatures > o->max_features)
+      max_features = o->max_features;
+    else if (wr->maxfeatures > 0)
+      max_features = wr->maxfeatures;
+    else if (o->max_features > 0)
+      max_features = o->max_features;
+
+    if (max_features > 0 && wr->typename->size == 1) {
+      buffer_add_str(where, " LIMIT ");
+      buffer_add_int(where, max_features);
+    } else if (max_features > 0 && wr->typename->size > 1) {
+      /* We have to compute LIMIT for each layer in this case ! */
+      sql_count = buffer_init();
+      buffer_add_str(sql_count, "SELECT count(*) FROM (");
+      buffer_copy(sql_count, sql);
+      buffer_copy(sql_count, where);
+      buffer_add_str(sql_count, " LIMIT ");
+      buffer_add_int(sql_count, max_features - features );
+      buffer_add_str(sql_count, ") AS c");
+      res = ows_psql_exec(o, sql_count->buf);
+      if (PQresultStatus(res) == PGRES_TUPLES_OK) {
+        if (features + atoi(PQgetvalue(res, 0, 0)) <= max_features) {
+          buffer_add_str(where, " LIMIT ");
+          if ((max_features - features) > 0)
+            buffer_add_int(where, max_features - features);
+          else buffer_add_int(where, 0);
+          features += atoi(PQgetvalue(res, 0, 0));
+        }
+      }
+      PQclear(res);
+      buffer_free(sql_count);
+    }
+
+    buffer_copy(sql, where);
+
+    list_add(sql_req, sql);
+    list_add(where_list, where);
+    list_add_by_copy(from_list, layer_uri);
 
-    return requests;
+    /* incrementation of the nodes */
+    if (wr->featureid) mln_fid = mln_fid->next;
+    if (wr->typename)  ln_typename = ln_typename->next;
+    if (wr->filter)    ln_filter = ln_filter->next;
+  }
+
+  /* requests multiple list contains three lists : sql requests, from list and where list */
+  requests = mlist_init();
+  mlist_add(requests, sql_req);
+  mlist_add(requests, from_list);
+  mlist_add(requests, where_list);
+
+  return requests;
 }
 
 
@@ -738,97 +765,115 @@ static mlist *wfs_retrieve_sql_request_list(ows * o, wfs_request * wr)
  */
 static void wfs_geojson_display_results(ows * o, wfs_request * wr, mlist * request_list)
 {
-    PGresult *res;
-    list_node *ln, *ll;
-    array *prop_table;
-    array_node *an;
-    buffer *prop, *value_enc, *geom;
-    bool first;
-    int i,j;
-    int geoms;
-
-    assert(o);
-    assert(wr);
-    assert(request_list);
-
-    ln = ll= NULL;
-
-    ll = request_list->first->next->value->first;
-    geom = buffer_init();
-    prop = buffer_init();
-
-    fprintf(o->output, "Content-Type: application/json\n\n");
-    fprintf(o->output, "{\"type\": \"FeatureCollection\", \"crs\":{\"type\":\"name\",\"properties\":{\"name\":\"");
-    if (ows_version_get(o->request->version) == 100)
-        fprintf(o->output, "EPSG:%i", wr->srs->srid);
-    else
-        fprintf(o->output, "urn:ogc:def:crs:EPSG::%i", wr->srs->srid);
-     
-    fprintf(o->output, "\"}}, \"features\": [");
-
-    for (ln = request_list->first->value->first ; ln ; ln = ln->next) {
-
-        res = ows_psql_exec(o, ln->value->buf);
-        if (PQresultStatus(res) != PGRES_TUPLES_OK) {
-            PQclear(res);
-            ll = ll->next;
-            break;
-        }
+  PGresult *res;
+  list_node *ln, *ll;
+  array *prop_table;
+  array_node *an;
+  buffer *prop, *value_enc, *geom, *id_name;
+  bool first_row, first_col;
+  int i,j;
+  int geoms;
+  int number;
+
+  assert(o);
+  assert(wr);
+  assert(request_list);
+
+  ln = ll= NULL;
+
+  ll = request_list->first->next->value->first;
+  geom = buffer_init();
+  prop = buffer_init();
+  id_name = buffer_init();
+
+  fprintf(o->output, "Content-Type: application/json\n\n");
+  fprintf(o->output, "{\"type\": \"FeatureCollection\", \"crs\":{\"type\":\"name\",\"properties\":{\"name\":\"");
+  if (ows_version_get(o->request->version) == 100)
+    fprintf(o->output, "EPSG:%i", wr->srs->srid);
+  else
+    fprintf(o->output, "urn:ogc:def:crs:EPSG::%i", wr->srs->srid);
+
+  fprintf(o->output, "\"}}, \"features\": [");
+
+  for (ln = request_list->first->value->first ; ln ; ln = ln->next) {
+
+    res = ows_psql_exec(o, ln->value->buf);
+    if (PQresultStatus(res) != PGRES_TUPLES_OK) {
+      PQclear(res);
+      ll = ll->next;
+      break;
+    }
 
-        prop_table = ows_psql_describe_table(o, ll->value);
-
-        for (i=0 ; i < PQntuples(res) ; i++) {
-
-            first = true;
-            geoms = 0;
-
-            for (an = prop_table->first, j=0 ; an ; an = an->next, j++) {
-
-                if (ows_psql_is_geometry_column(o, ll->value, an->key)) {
-                    buffer_add_str(geom, PQgetvalue(res, i, j));
-                    geoms++;
-                } else {
-
-                    if (first)  first = false;
-                    else buffer_add_str(prop, ", \"");
-
-                    buffer_copy(prop, an->key); 
-                    buffer_add_str(prop, "\": \"");
-                    value_enc = buffer_encode_json_str(PQgetvalue(res, i, j));
-                    buffer_copy(prop, value_enc);
-                    buffer_free(value_enc);
-                    buffer_add(prop, '"');
-                }
-            }
-
-                   if (geoms == 0) {
-                fprintf(o->output,
-                        "{\"type\":\"Feature\", \"properties\":{\"%s}}\n",
-                        prop->buf);
-            } else if (geoms == 1) {
-                fprintf(o->output,
-                        "{\"type\":\"Feature\", \"properties\":{\"%s}, \"geometry\":%s}\n",
-                        prop->buf, geom->buf);
-            } else if (geoms > 1) {
-                fprintf(o->output,
-                        "{\"type\":\"Feature\", \"properties\":{\"%s}, \"geometry\":%s%s]}}\n",
-                        prop->buf, "{ \"type\": \"GeometryCollection\", \"geometries\": [",
-			geom->buf);
-            } 
-	    if (j) fprintf(o->output, ",");
-
-            buffer_empty(prop);
-            buffer_empty(geom);
+    prop_table = ows_psql_describe_table(o, ll->value);
+    first_row = true;
+    id_name = ows_psql_id_column(o, ll->value);
+    number = -1;
+    if (id_name && id_name->use)
+         number = PQfnumber(res, id_name->buf);
+    buffer_empty(id_name);
+
+    for (i=0 ; i < PQntuples(res) ; i++) {
+
+      first_col = true;
+      geoms = 0;
+
+      if (first_row) first_row = false;
+      else fprintf(o->output, ",");
+
+      if ( number >= 0 ) {
+        buffer_add_str(id_name, "\"id\": \"");
+        buffer_copy(id_name, ll->value);
+        buffer_add_str(id_name, ".");
+        buffer_add_str(id_name, PQgetvalue(res, i, number));
+        buffer_add_str(id_name, "\", ");
+      }
+      for (an = prop_table->first, j=0 ; an ; an = an->next, j++) {
+        
+        if (ows_psql_is_geometry_column(o, ll->value, an->key)) {
+          buffer_add_str(geom, PQgetvalue(res, i, j));
+          geoms++;
+        } else {
+
+          if (first_col)  first_col = false;
+          else buffer_add_str(prop, ", \"");
+
+          buffer_copy(prop, an->key);
+          buffer_add_str(prop, "\": \"");
+          value_enc = buffer_encode_json_str(PQgetvalue(res, i, j));
+          buffer_copy(prop, value_enc);
+          buffer_free(value_enc);
+          buffer_add(prop, '"');
         }
-
-        PQclear(res);
-        ll = ll->next;
+      }
+
+      if (geoms == 0) {
+        fprintf(o->output,
+                "{\"type\":\"Feature\", %s\"properties\":{\"%s}}\n",
+                id_name->buf, prop->buf);
+      } else if (geoms == 1) {
+        fprintf(o->output,
+                "{\"type\":\"Feature\", %s\"properties\":{\"%s}, \"geometry\":%s}\n",
+                id_name->buf, prop->buf, geom->buf);
+      } else if (geoms > 1) {
+        fprintf(o->output,
+                "{\"type\":\"Feature\", %s\"properties\":{\"%s}, \"geometry\":%s%s]}}\n",
+                id_name->buf,
+                prop->buf, "{ \"type\": \"GeometryCollection\", \"geometries\": [",
+                geom->buf);
+      }
+      buffer_empty(prop);
+      buffer_empty(geom);
+      buffer_empty(id_name);
     }
 
-    fprintf(o->output, "]}");
+    PQclear(res);
+    ll = ll->next;
+  }
+
+  fprintf(o->output, "]}");
 
-    buffer_free(geom);
-    buffer_free(prop);
+  buffer_free(geom);
+  buffer_free(prop);
 }
 
 
@@ -837,31 +882,24 @@ static void wfs_geojson_display_results(ows * o, wfs_request * wr, mlist * reque
  */
 void wfs_get_feature(ows * o, wfs_request * wr)
 {
-    mlist *request_list;
-
-    assert(o);
-    assert(wr);
-
-    /* retrieve a list of SQL requests from the GetFeature parameters */
-    request_list = wfs_retrieve_sql_request_list(o, wr);
-    if (!request_list) return;
-       
-    if (wr->format == WFS_GML212 || wr->format == WFS_GML311) {
-        /* display result of the GetFeature request in GML */
-        if (buffer_cmp(wr->resulttype, "hits"))
-            wfs_gml_display_hits(o, wr, request_list);
-        else
-            wfs_gml_display_results(o, wr, request_list);
+  mlist *request_list;
+  assert(o && wr);
 
-    } else if (wr->format == WFS_GEOJSON)
-	wfs_geojson_display_results(o, wr, request_list);
+  /* Retrieve a list of SQL requests from the GetFeature parameters */
+  request_list = wfs_retrieve_sql_request_list(o, wr);
+  if (!request_list) return;
 
-    /* add here other functions to display GetFeature response in other formats */
+  if (wr->format == WFS_GML212 || wr->format == WFS_GML311) {
+    /* Display result of the GetFeature request in GML */
+    if (buffer_cmp(wr->resulttype, "hits"))
+      wfs_gml_display_hits(o, wr, request_list);
+    else
+      wfs_gml_display_results(o, wr, request_list);
 
-    mlist_free(request_list);
-}
+  } else if (wr->format == WFS_GEOJSON)
+    wfs_geojson_display_results(o, wr, request_list);
 
+  /* Add here other functions to display GetFeature response in other formats */
 
-/*
- * vim: expandtab sw=4 ts=4
- */
+  mlist_free(request_list);
+}
diff --git a/src/wfs/wfs_request.c b/src/wfs/wfs_request.c
index 1d90ba7..45c4884 100644
--- a/src/wfs/wfs_request.c
+++ b/src/wfs/wfs_request.c
@@ -35,32 +35,32 @@
  */
 wfs_request *wfs_request_init()
 {
-    wfs_request *wr;
-
-    wr = malloc(sizeof(wfs_request));
-    assert(wr);
-
-    wr->request = WFS_REQUEST_UNKNOWN;
-    wr->format = WFS_FORMAT_UNKNOWN;
-    wr->typename = NULL;
-    wr->propertyname = NULL;
-    wr->bbox = NULL;
-    wr->srs = NULL;
-
-    wr->maxfeatures = -1;
-    wr->featureid = NULL;
-    wr->filter = NULL;
-    wr->operation = NULL;
-    wr->handle = NULL;
-    wr->resulttype = NULL;
-    wr->sortby = NULL;
-    wr->sections = NULL;
-
-    wr->insert_results = NULL;
-    wr->delete_results = 0;
-    wr->update_results = 0;
-
-    return wr;
+  wfs_request *wr;
+
+  wr = malloc(sizeof(wfs_request));
+  assert(wr);
+
+  wr->request = WFS_REQUEST_UNKNOWN;
+  wr->format = WFS_FORMAT_UNKNOWN;
+  wr->typename = NULL;
+  wr->propertyname = NULL;
+  wr->bbox = NULL;
+  wr->srs = NULL;
+
+  wr->maxfeatures = -1;
+  wr->featureid = NULL;
+  wr->filter = NULL;
+  wr->operation = NULL;
+  wr->handle = NULL;
+  wr->resulttype = NULL;
+  wr->sortby = NULL;
+  wr->sections = NULL;
+
+  wr->insert_results = NULL;
+  wr->delete_results = 0;
+  wr->update_results = 0;
+
+  return wr;
 }
 
 
@@ -70,88 +70,87 @@ wfs_request *wfs_request_init()
  */
 void wfs_request_flush(wfs_request * wr, FILE * output)
 {
-    assert(wr);
-    assert(output);
-
-    fprintf(output, "[\n");
-
-    fprintf(output, " request -> %i\n", wr->request);
-    fprintf(output, " format -> %i\n", wr->format);
-    fprintf(output, " maxfeatures -> %i\n", wr->maxfeatures);
-
-    if (wr->typename) {
-        fprintf(output, " typename -> ");
-        list_flush(wr->typename, output);
-        fprintf(output, "\n");
-    }
-
-    if (wr->propertyname) {
-        fprintf(output, "propertyname -> ");
-        mlist_flush(wr->propertyname, output);
-        fprintf(output, "\n");
-    }
-
-    if (wr->bbox) {
-        fprintf(output, "bbox -> ");
-        ows_bbox_flush(wr->bbox, output);
-        fprintf(output, "\n");
-    }
-
-    if (wr->srs) {
-        fprintf(output, "srs -> ");
-        ows_srs_flush(wr->srs, output);
-        fprintf(output, "\n");
-    }
-
-    if (wr->featureid) {
-        fprintf(output, " featureid -> ");
-        mlist_flush(wr->featureid, output);
-        fprintf(output, "\n");
-    }
-
-    if (wr->filter) {
-        fprintf(output, " filter -> ");
-        list_flush(wr->filter, output);
-        fprintf(output, "\n");
-    }
-
-    if (wr->operation) {
-        fprintf(output, " operation -> ");
-        buffer_flush(wr->operation, output);
-        fprintf(output, "\n");
-    }
-
-    if (wr->handle) {
-        fprintf(output, " handle -> ");
-        list_flush(wr->handle, output);
-        fprintf(output, "\n");
-    }
-
-    if (wr->resulttype) {
-        fprintf(output, " resulttype -> ");
-        buffer_flush(wr->resulttype, output);
-        fprintf(output, "\n");
-    }
-
-    if (wr->sortby) {
-        fprintf(output, " sortby -> ");
-        buffer_flush(wr->sortby, output);
-        fprintf(output, "\n");
-    }
-
-    if (wr->sections) {
-        fprintf(output, " sections -> ");
-        list_flush(wr->sections, output);
-        fprintf(output, "\n");
-    }
-
-    if (wr->insert_results) {
-        fprintf(output, " insert_results -> ");
-        alist_flush(wr->insert_results, output);
-        fprintf(output, "\n");
-    }
-
-    fprintf(output, "]\n");
+  assert(wr && output);
+
+  fprintf(output, "[\n");
+
+  fprintf(output, " request -> %i\n", wr->request);
+  fprintf(output, " format -> %i\n", wr->format);
+  fprintf(output, " maxfeatures -> %i\n", wr->maxfeatures);
+
+  if (wr->typename) {
+    fprintf(output, " typename -> ");
+    list_flush(wr->typename, output);
+    fprintf(output, "\n");
+  }
+
+  if (wr->propertyname) {
+    fprintf(output, "propertyname -> ");
+    mlist_flush(wr->propertyname, output);
+    fprintf(output, "\n");
+  }
+
+  if (wr->bbox) {
+    fprintf(output, "bbox -> ");
+    ows_bbox_flush(wr->bbox, output);
+    fprintf(output, "\n");
+  }
+
+  if (wr->srs) {
+    fprintf(output, "srs -> ");
+    ows_srs_flush(wr->srs, output);
+    fprintf(output, "\n");
+  }
+
+  if (wr->featureid) {
+    fprintf(output, " featureid -> ");
+    mlist_flush(wr->featureid, output);
+    fprintf(output, "\n");
+  }
+
+  if (wr->filter) {
+    fprintf(output, " filter -> ");
+    list_flush(wr->filter, output);
+    fprintf(output, "\n");
+  }
+
+  if (wr->operation) {
+    fprintf(output, " operation -> ");
+    buffer_flush(wr->operation, output);
+    fprintf(output, "\n");
+  }
+
+  if (wr->handle) {
+    fprintf(output, " handle -> ");
+    list_flush(wr->handle, output);
+    fprintf(output, "\n");
+  }
+
+  if (wr->resulttype) {
+    fprintf(output, " resulttype -> ");
+    buffer_flush(wr->resulttype, output);
+    fprintf(output, "\n");
+  }
+
+  if (wr->sortby) {
+    fprintf(output, " sortby -> ");
+    buffer_flush(wr->sortby, output);
+    fprintf(output, "\n");
+  }
+
+  if (wr->sections) {
+    fprintf(output, " sections -> ");
+    list_flush(wr->sections, output);
+    fprintf(output, "\n");
+  }
+
+  if (wr->insert_results) {
+    fprintf(output, " insert_results -> ");
+    alist_flush(wr->insert_results, output);
+    fprintf(output, "\n");
+  }
+
+  fprintf(output, "]\n");
 }
 #endif
 
@@ -161,23 +160,23 @@ void wfs_request_flush(wfs_request * wr, FILE * output)
  */
 void wfs_request_free(wfs_request * wr)
 {
-    assert(wr);
-
-    if (wr->typename)       list_free(wr->typename);
-    if (wr->propertyname)   mlist_free(wr->propertyname);
-    if (wr->bbox)           ows_bbox_free(wr->bbox);
-    if (wr->srs)            ows_srs_free(wr->srs);
-    if (wr->featureid)      mlist_free(wr->featureid);
-    if (wr->filter)         list_free(wr->filter);
-    if (wr->operation)      buffer_free(wr->operation);
-    if (wr->handle)         list_free(wr->handle);
-    if (wr->resulttype)     buffer_free(wr->resulttype);
-    if (wr->sortby)         buffer_free(wr->sortby);
-    if (wr->sections)       list_free(wr->sections);
-    if (wr->insert_results) alist_free(wr->insert_results);
-
-    free(wr);
-    wr = NULL;
+  assert(wr);
+
+  if (wr->typename)       list_free(wr->typename);
+  if (wr->propertyname)   mlist_free(wr->propertyname);
+  if (wr->bbox)           ows_bbox_free(wr->bbox);
+  if (wr->srs)            ows_srs_free(wr->srs);
+  if (wr->featureid)      mlist_free(wr->featureid);
+  if (wr->filter)         list_free(wr->filter);
+  if (wr->operation)      buffer_free(wr->operation);
+  if (wr->handle)         list_free(wr->handle);
+  if (wr->resulttype)     buffer_free(wr->resulttype);
+  if (wr->sortby)         buffer_free(wr->sortby);
+  if (wr->sections)       list_free(wr->sections);
+  if (wr->insert_results) alist_free(wr->insert_results);
+
+  free(wr);
+  wr = NULL;
 }
 
 
@@ -186,41 +185,14 @@ void wfs_request_free(wfs_request * wr)
  */
 static void wfs_request_check_version(ows * o, wfs_request * wr, const array * cgi)
 {
-    assert(o);
-    assert(wr);
-    assert(cgi);
+  assert(o && wr && cgi);
 
-    if (!array_is_key(cgi, "version"))
-        memcpy(o->request->version, o->wfs_default_version, sizeof(ows_version));
+  if (!array_is_key(cgi, "version"))
+    memcpy(o->request->version, o->wfs_default_version, sizeof(ows_version));
 
-    if (ows_version_get(o->request->version) != 100 && ows_version_get(o->request->version) != 110)
-           ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE,
-               "VERSION parameter is not valid (use 1.0.0 or 1.1.0)", "version");
-}
-
-
-/*
- * Remove prefix namespace from a buffer 
- * to expect return value could be used in SQL request
- */
-buffer *wfs_request_remove_namespaces(ows * o, buffer * b)
-{
-    list *prefix;
-
-    assert(o);
-    assert(b);
-
-    /* TODO could be rewrite without using a list */
-    prefix = list_explode(':', b);
-
-    if (prefix->first->next) {
-        buffer_empty(b);
-        buffer_copy(b, prefix->first->next->value);
-    }
-
-    list_free(prefix);
-
-    return b;
+  if (ows_version_get(o->request->version) != 100 && ows_version_get(o->request->version) != 110)
+    ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE,
+              "VERSION parameter is not valid (use 1.0.0 or 1.1.0)", "version");
 }
 
 
@@ -230,49 +202,48 @@ buffer *wfs_request_remove_namespaces(ows * o, buffer * b)
  */
 static list *wfs_request_check_typename(ows * o, wfs_request * wr, list * layer_name)
 {
-    buffer *b;
-    list_node *ln;
-
-    assert(o);
-    assert(wr);
-    assert(layer_name);
-
-    if (array_is_key(o->cgi, "typename")) {
-        b = array_get(o->cgi, "typename");
-        wr->typename = list_explode(',', b);
-
-        for (ln = wr->typename->first ; ln ; ln = ln->next) {
-            
-            ln->value = wfs_request_remove_namespaces(o, ln->value); /* Remove prefix */
-            list_add_by_copy(layer_name, ln->value);                 /* Fill the global layer name list */
-
-            /* Check if layer exists and have storage */
-            if (!ows_layer_match_table(o, ln->value)) {
-                list_free(layer_name);
-                wfs_error(o, wr, WFS_ERROR_LAYER_NOT_DEFINED, "Unknown layer name", "typename");
-                return NULL;
-            }
-
-            /* Check if layer is retrievable */
-            if ((wr->request == WFS_GET_FEATURE || wr->request == WFS_DESCRIBE_FEATURE_TYPE) 
-                 && !ows_layer_retrievable(o->layers, ln->value)) {
-                list_free(layer_name);
-                wfs_error(o, wr, WFS_ERROR_LAYER_NOT_RETRIEVABLE,
-                          "Not retrievable layer(s), Forbidden operation.", "typename");
-                return NULL;
-            }
-
-            /* Check if layer is writable, if request is a transaction operation */
-            if (wr->operation && !ows_layer_writable(o->layers, ln->value)) {
-                list_free(layer_name);
-                wfs_error(o, wr, WFS_ERROR_LAYER_NOT_WRITABLE,
-                          "Not writable layer(s), Forbidden Transaction Operation", "typename");
-                return NULL;
-            }
-        }
-    }
-
-    return layer_name;
+  buffer *b, *n;
+  list_node *ln;
+
+  assert(o && wr && layer_name);
+
+  if (array_is_key(o->cgi, "typename")) {
+    b = array_get(o->cgi, "typename");
+    wr->typename = list_explode(',', b);
+
+    for (ln = wr->typename->first ; ln ; ln = ln->next) {
+
+      n = ows_layer_prefix_to_uri(o->layers, ln->value); 
+      /* Check if layer exists and have storage */
+      if (!n || !ows_layer_match_table(o, n)) {
+        list_free(layer_name);
+        wfs_error(o, wr, WFS_ERROR_LAYER_NOT_DEFINED, "Unknown layer name", "typename");
+        return NULL;
+      }
+
+      /* Check if layer is retrievable */
+      if ((wr->request == WFS_GET_FEATURE || wr->request == WFS_DESCRIBE_FEATURE_TYPE)
+          && !ows_layer_retrievable(o->layers, n)) {
+        list_free(layer_name);
+        wfs_error(o, wr, WFS_ERROR_LAYER_NOT_RETRIEVABLE,
+                  "Not retrievable layer(s), Forbidden operation.", "typename");
+        return NULL;
+      }
+
+      /* Check if layer is writable, if request is a transaction operation */
+      if (wr->operation && !ows_layer_writable(o->layers, n)) {
+        list_free(layer_name);
+        wfs_error(o, wr, WFS_ERROR_LAYER_NOT_WRITABLE,
+                  "Not writable layer(s), Forbidden Transaction Operation", "typename");
+        return NULL;
+      }
+
+      /* Fill the global layer name list */
+      list_add_by_copy(layer_name, n);
+    }
+  }
+
+  return layer_name;
 }
 
 
@@ -282,106 +253,101 @@ static list *wfs_request_check_typename(ows * o, wfs_request * wr, list * layer_
  */
 static list *wfs_request_check_fid(ows * o, wfs_request * wr, list * layer_name)
 {
-    list *fe;
-    mlist *f;
-    buffer *b;
-    list_node *ln, *ln_tpn;
-    mlist_node *mln = NULL;
+  list *fe;
+  mlist *f;
+  buffer *b, *layer;
+  list_node *ln, *ln_tpn;
+  mlist_node *mln = NULL;
+  ln = ln_tpn = NULL;
+
+  assert(o && wr && layer_name);
+
+  /* Featureid is not a mandatory parameter */
+  if (!array_is_key(o->cgi, "featureid")) return layer_name;
+
+  b = array_get(o->cgi, "featureid");
+  f = mlist_explode('(', ')', b);
+
+  if (wr->typename) {
+    /* Check if Typename and FeatureId size are similar */
+    if (f->size != wr->typename->size) {
+      mlist_free(f);
+      wfs_error(o, wr, WFS_ERROR_INCORRECT_SIZE_PARAMETER,
+                "featureid list and typename lists must have the same size", "");
+      return NULL;
+    }
 
-    assert(o);
-    assert(wr);
-    assert(layer_name);
+    ln_tpn = wr->typename->first;
+  }
 
-    ln = ln_tpn = NULL;
+  for (mln = f->first ; mln ; mln = mln->next) {
+    for (ln = mln->value->first ; ln ; ln = ln->next) {
+      fe = list_split('.', ln->value, true);
 
-    /* Featureid is not a mandatory parameter */
-    if (!array_is_key(o->cgi, "featureid")) return layer_name; 
+      /* Check the mapping between fid and typename */
+      if (wr->typename && !buffer_cmp(fe->last->value, ln_tpn->value->buf)) {
+        list_free(layer_name);
+        list_free(fe);
+        mlist_free(f);
+        wfs_error(o, wr, WFS_ERROR_NO_MATCHING, "featureid values and typename values don't match", "");
+        return NULL;
+      }
 
-    b = array_get(o->cgi, "featureid");
-    f = mlist_explode('(', ')', b);
+      /* Check if featureid is well formed : layer.id */
+      if (!fe->first->next) {
+        list_free(layer_name);
+        list_free(fe);
+        mlist_free(f);
+        ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "featureid must match layer.id", "GetFeature");
+        return NULL;
+      }
 
-    if (wr->typename) {
-        /* Check if Typename and FeatureId size are similar */
-        if (f->size != wr->typename->size) {
-            mlist_free(f);
-            wfs_error(o, wr, WFS_ERROR_INCORRECT_SIZE_PARAMETER,
-                "featureid list and typename lists must have the same size", "");
-            return NULL;
-        }
+      layer = ows_layer_no_uri_to_uri(o->layers, fe->last->value);
 
-        ln_tpn = wr->typename->first;
-    }
+      /* If typename is NULL, fill the layer name list */
+      if (!wr->typename && !in_list(layer_name, layer))
+        list_add_by_copy(layer_name, layer);
 
-    for (mln = f->first ; mln ; mln = mln->next) {
-        for (ln = mln->value->first ; ln ; ln = ln->next) {
-            fe = list_explode('.', ln->value);
-
-            if (wr->typename) {
-                /* Check the mapping between fid and typename */
-                if (!buffer_cmp(fe->first->value, ln_tpn->value->buf)) {
-                    list_free(layer_name);
-                    list_free(fe);
-                    mlist_free(f);
-                    wfs_error(o, wr, WFS_ERROR_NO_MATCHING, "featureid values and typename values don't match", "");
-                    return NULL;
-                }
-            }
-
-            /* Check if featureid is well formed : layer.id */
-            if (!fe->first->next) {
-                list_free(layer_name);
-                list_free(fe);
-                mlist_free(f);
-                ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "featureid must match layer.id", "GetFeature");
-                return NULL;
-            }
-
-            /* If typename is NULL, fill the layer name list */
-            if (!wr->typename) {
-                fe->first->value = wfs_request_remove_namespaces(o, fe->first->value);
-
-                if (!in_list(layer_name, fe->first->value))
-                    list_add_by_copy(layer_name, fe->first->value);
-            }
-
-            /* Check if layer exists */
-            if (!ows_layer_in_list(o->layers, fe->first->value)) {
-                list_free(layer_name);
-                list_free(fe);
-                mlist_free(f);
-                wfs_error(o, wr, WFS_ERROR_LAYER_NOT_DEFINED, "Unknown layer name", "GetFeature");
-                return NULL;
-            }
-
-            /* Check if layer is retrievable if request is getFeature */
-            if (wr->request == WFS_GET_FEATURE && !ows_layer_retrievable(o->layers, fe->first->value)) {
-                list_free(layer_name);
-                list_free(fe);
-                mlist_free(f);
-                wfs_error(o, wr, WFS_ERROR_LAYER_NOT_RETRIEVABLE,
-                    "not-retrievable layer(s), GetFeature Operation impossible, change configuration file", "GetFeature");
-                return NULL;
-            }
-
-            /* Check if layer is writable if request is a transaction operation */
-            if (wr->operation && !ows_layer_writable(o->layers, fe->first->value)) {
-                list_free(layer_name);
-                list_free(fe);
-                mlist_free(f);
-                wfs_error(o, wr, WFS_ERROR_LAYER_NOT_WRITABLE,
-                    "not-writable layer(s), Transaction Operation impossible, change configuration file", "Transaction");
-                return NULL;
-            }
-
-            list_free(fe);
-        }
+      /* Check if layer exists */
+      if (!ows_layer_in_list(o->layers, layer)) {
+        list_free(layer_name);
+        list_free(fe);
+        mlist_free(f);
+        wfs_error(o, wr, WFS_ERROR_LAYER_NOT_DEFINED, "Unknown layer name", "GetFeature");
+        return NULL;
+      }
+
+      /* Check if layer is retrievable if request is getFeature */
+      if (wr->request == WFS_GET_FEATURE && !ows_layer_retrievable(o->layers, layer)) {
+        list_free(layer_name);
+        list_free(fe);
+        mlist_free(f);
+        wfs_error(o, wr, WFS_ERROR_LAYER_NOT_RETRIEVABLE,
+                  "Not-retrievable layer(s), GetFeature Operation not allowed",
+                  "GetFeature");
+        return NULL;
+      }
+
+      /* Check if layer is writable if request is a transaction operation */
+      if (wr->operation && !ows_layer_writable(o->layers, layer)) {
+        list_free(layer_name);
+        list_free(fe);
+        mlist_free(f);
+        wfs_error(o, wr, WFS_ERROR_LAYER_NOT_WRITABLE,
+                  "Not-writable layer(s), Transaction Operation not allowed",
+                  "Transaction");
+        return NULL;
+      }
 
-        if (wr->typename) ln_tpn = ln_tpn->next;
+      list_free(fe);
     }
 
-    wr->featureid = f;
+    if (wr->typename) ln_tpn = ln_tpn->next;
+  }
+
+  wr->featureid = f;
 
-    return layer_name;
+  return layer_name;
 }
 
 
@@ -390,56 +356,59 @@ static list *wfs_request_check_fid(ows * o, wfs_request * wr, list * layer_name)
  */
 static void wfs_request_check_srs(ows * o, wfs_request * wr, list * layer_name)
 {
-    int srid, srid_tmp;
-    buffer *b;
-    list_node *ln;
-
-    assert(o);
-    assert(wr);
-    assert(layer_name);
-
-    wr->srs = ows_srs_init();
-
-    /* srsName is not a mandatory parameter */
-    if (!array_is_key(o->cgi, "srsname")) {
-        
-        /* We took the default SRS from the first requested layer */
-        srid = ows_srs_get_srid_from_layer(o, layer_name->first->value);
-
-        /* And check if all layers have the same SRS */
-        if (wr->typename && wr->typename->first->next) {
-            for (ln = layer_name->first->next ; ln ; ln = ln->next) {
-                srid_tmp = ows_srs_get_srid_from_layer(o, ln->value);
-
-                if (srid != srid_tmp) {
-                    ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE,
-                        "Layers in TYPENAME must have the same SRS", "GetFeature");
-                    return;
-                }
-            }
-        }
+  buffer *b;
+  list_node *ln;
+  int srid, srid_tmp;
 
-        if(!ows_srs_set_from_srid(o, wr->srs, srid)) {
-             ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE,
-                 "srsName value use an unsupported value, for requested layer(s)", "GetFeature");
-             return;
-        }
+  assert(o && wr && layer_name);
 
-        if (wr->srs->is_degree && ows_version_get(o->request->version) == 110) {
-            wr->srs->is_reverse_axis = true;
-            wr->srs->is_long = true;
-        } else if (ows_version_get(o->request->version) == 110) {
-            wr->srs->is_long = true;
-        }
+  wr->srs = ows_srs_init();
+
+  /* srsName is not a mandatory parameter */
+  if (!array_is_key(o->cgi, "srsname")) {
+
+    /* We took the default SRS from the first requested layer */
+    srid = ows_srs_get_srid_from_layer(o, layer_name->first->value);
 
-    } else {
-        b = array_get(o->cgi, "srsname");
-        if (!ows_srs_set_from_srsname(o, wr->srs, b->buf)) {
-             ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE,
-                 "srsName value use an unsupported value, for requested layer(s)", "GetFeature");
-             return;
+    /* And check if all layers have the same SRS */
+    if (wr->typename && wr->typename->first->next) {
+      for (ln = layer_name->first->next ; ln ; ln = ln->next) {
+        srid_tmp = ows_srs_get_srid_from_layer(o, ln->value);
+
+        if (srid != srid_tmp) {
+          ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE,
+                    "Layers in TYPENAME must have the same SRS", "GetFeature");
+          return;
         }
+      }
+    }
+
+    if(!ows_srs_set_from_srid(o, wr->srs, srid)) {
+      ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE,
+                "The srsName value use an unsupported value, for requested layer(s)", "GetFeature");
+      return;
     }
+
+    if ((wr->format == WFS_GML311 || wr->format == WFS_GML321) && wr->srs->is_degree) {
+      wr->srs->is_reverse_axis = true;
+      wr->srs->is_long = true;
+    } else if (wr->format == WFS_GML311 || wr->format == WFS_GML321) {
+      wr->srs->is_long = true;
+    } else if (ows_version_get(o->request->version) == 110 && wr->srs->is_degree) {
+      wr->srs->is_reverse_axis = true;
+      wr->srs->is_long = true;
+    } else if (ows_version_get(o->request->version) == 110) {
+      wr->srs->is_long = true;
+    }
+
+  } else {
+    b = array_get(o->cgi, "srsname");
+    if (!ows_srs_set_from_srsname(o, wr->srs, b->buf)) {
+      ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE,
+                "The srsName value use an unsupported value, for requested layer(s)", "GetFeature");
+      return;
+    }
+  }
 }
 
 
@@ -448,32 +417,28 @@ static void wfs_request_check_srs(ows * o, wfs_request * wr, list * layer_name)
  */
 static void wfs_request_check_bbox(ows * o, wfs_request * wr, list * layer_name)
 {
-    buffer *b;
-    int srid = 4326; /* Default srid if not srs is provided since WFS 1.1.0 */
-
-    assert(o);
-    assert(wr);
-    assert(layer_name);
-    assert(wr->srs);
-    
-    if (!array_is_key(o->cgi, "bbox")) return;  /* BBOX is not mandatory */
-  
-    b = array_get(o->cgi, "bbox");
-    wr->bbox = ows_bbox_init();
-
-    if (ows_version_get(o->request->version) == 100) srid = wr->srs->srid;
-
-    if (!ows_bbox_set_from_str(o, wr->bbox, b->buf, srid)) {
-        ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "Bad parameters for Bbox, must be Xmin,Ymin,Xmax,Ymax[,crsuri]", "NULL");
-        return;
-    }
+  buffer *b;
+  int srid = 4326; /* Default srid if not srs is provided since WFS 1.1.0 */
 
-#if 0
-    /* Not use anymore related to BBOX with crsuri and srsName issue like:
-       BBOX=246700,6780800,436400,6924000,EPSG:3067&srsname=urn:ogc:def:crs:EPSG::2393
-    */
-    if (wr->srs->is_reverse_axis) wr->bbox->srs->is_reverse_axis = true;
-#endif
+  assert(o && wr && layer_name && wr->srs);
+
+  if (!array_is_key(o->cgi, "bbox")) return;  /* BBOX is not mandatory */
+
+  b = array_get(o->cgi, "bbox");
+  wr->bbox = ows_bbox_init();
+
+  if (ows_version_get(o->request->version) == 100) srid = wr->srs->srid;
+
+  if (!ows_bbox_set_from_str(o, wr->bbox, b->buf, srid)) {
+    ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE,
+              "Bad parameters for Bbox, must be Xmin,Ymin,Xmax,Ymax[,crsuri]", "NULL");
+    return;
+  }
+
+  /* related to BBOX with crsuri and srsName issue like:
+     bbox=34.94,-10.52,71.96,32.19,urn:ogc:def:crs:EPSG::4326
+  */
+  if (wr->srs->is_reverse_axis) wr->bbox->srs->is_reverse_axis = true;
 }
 
 
@@ -482,33 +447,31 @@ static void wfs_request_check_bbox(ows * o, wfs_request * wr, list * layer_name)
  */
 static void wfs_request_check_output(ows * o, wfs_request * wr)
 {
-    assert(o);
-    assert(wr);
-
-    if (!array_is_key(o->cgi, "outputformat")) {
-        /* put the default values according to WFS version and request name */
-        if (ows_version_get(o->request->version) == 100) {
-            if (wr->request == WFS_GET_FEATURE) wr->format = WFS_GML212;
-            else  /* DescribeFeatureType */     wr->format = WFS_XML_SCHEMA;
-        } else
-            wr->format = WFS_GML311;
-    } else {
-        if (buffer_cmp(array_get(o->cgi, "outputformat"), "GML2")
-                || buffer_cmp(array_get(o->cgi, "outputformat"), "text/xml; subtype=gml/2.1.2"))
-            wr->format = WFS_GML212;
-        else if (buffer_cmp(array_get(o->cgi, "outputformat"), "GML3")
-                 || buffer_cmp(array_get(o->cgi, "outputformat"), "text/xml; subtype=gml/3.1.1"))
-            wr->format = WFS_GML311;
-        else if (buffer_cmp(array_get(o->cgi, "outputformat"), "JSON")
-                || buffer_cmp(array_get(o->cgi, "outputformat"), "application/json"))
-            wr->format = WFS_GEOJSON;
-        else if (wr->request == WFS_DESCRIBE_FEATURE_TYPE
-                 && buffer_cmp(array_get(o->cgi, "outputformat"), "XMLSCHEMA"))
-            wr->format = WFS_XML_SCHEMA;
-        else
-            wfs_error(o, wr, WFS_ERROR_OUTPUT_FORMAT_NOT_SUPPORTED,
-                      "OutputFormat is not supported", "GetFeature");
-    }
+  assert(o && wr);
+
+  if (!array_is_key(o->cgi, "outputformat")) {
+    /* put the default values according to WFS version and request name */
+    if (ows_version_get(o->request->version) == 100) {
+      wr->format = WFS_GML212;
+    } else
+      wr->format = WFS_GML311;
+  } else {
+         if (    buffer_cmp(array_get(o->cgi, "outputformat"), "GML2")
+              || buffer_cmp(array_get(o->cgi, "outputformat"), "text/xml; subtype=gml/2.1.2"))
+      wr->format = WFS_GML212;
+    else if (    buffer_cmp(array_get(o->cgi, "outputformat"), "GML3")
+              || buffer_cmp(array_get(o->cgi, "outputformat"), "text/xml; subtype=gml/3.1.1"))
+      wr->format = WFS_GML311;
+    else if (    buffer_cmp(array_get(o->cgi, "outputformat"), "JSON")
+              || buffer_cmp(array_get(o->cgi, "outputformat"), "application/json"))
+      wr->format = WFS_GEOJSON;
+    else if (    wr->request == WFS_DESCRIBE_FEATURE_TYPE
+              && buffer_cmp(array_get(o->cgi, "outputformat"), "XMLSCHEMA"))  // FIXME: really ?
+      wr->format = WFS_XML_SCHEMA;
+    else
+      wfs_error(o, wr, WFS_ERROR_OUTPUT_FORMAT_NOT_SUPPORTED,
+                "OutputFormat is not supported", "GetFeature");
+  }
 }
 
 
@@ -517,82 +480,76 @@ static void wfs_request_check_output(ows * o, wfs_request * wr)
  */
 static void wfs_request_check_resulttype(ows * o, wfs_request * wr)
 {
-    buffer *b;
+  buffer *b;
+  assert(o && wr);
 
-    assert(o);
-    assert(wr);
+  wr->resulttype = buffer_init();
 
-    wr->resulttype = buffer_init();
+  /* default value is 'results' */
+  if (!array_is_key(o->cgi, "resulttype")) {
+    buffer_add_str(wr->resulttype, "results");
+    return;
+  }
 
-    /* default value is 'results' */
-    if (!array_is_key(o->cgi, "resulttype")) {
-        buffer_add_str(wr->resulttype, "results");
-        return;
-    }
-
-    b = array_get(o->cgi, "resulttype");
+  b = array_get(o->cgi, "resulttype");
 
-    if (buffer_cmp(b, "results") || buffer_cmp(b, "hits"))
-        buffer_copy(wr->resulttype, b);
-    else
-        ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE,
-                  "ResultType isn't valid, must be results or hits",
-                  "resultType");
+  if (buffer_cmp(b, "results") || buffer_cmp(b, "hits"))
+    buffer_copy(wr->resulttype, b);
+  else
+    ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE,
+              "ResultType isn't valid, must be results or hits", "resultType");
 }
 
 
 /*
  * Check and fill the sortBy parameter
  */
-static void wfs_request_check_sortby(ows * o, wfs_request * wr)
+static void wfs_request_check_sortby(ows * o, wfs_request * wr, list * layer_name)
 {
-    buffer *b;
-    list *l, *fe;
-    list_node *ln = NULL;
+  buffer *b;
+  list *l, *fe;
+  list_node *ln = NULL;
 
-    assert(o);
-    assert(wr);
+  assert(o && wr);
+  /* sortBy is not a mandatory parameter */
+  if (!array_is_key(o->cgi, "sortby")) return;
 
-    /* sortBy is not a mandatory parameter */
-    if (!array_is_key(o->cgi, "sortby")) return;
+  b = array_get(o->cgi, "sortby");
+  wr->sortby = buffer_init();
+  l = list_explode(',', b);
 
-    b = array_get(o->cgi, "sortby");
-    wr->sortby = buffer_init();
-    l = list_explode(',', b);
+  for (ln = l->first ; ln ; ln = ln->next) {
+    fe = list_explode(' ', ln->value);
+    wfs_request_remove_prop_ns_prefix(o, fe->first->value, layer_name); 
 
-    for (ln = l->first ; ln ; ln = ln->next) {
-        fe = list_explode(' ', ln->value);
-        /*remove namespaces */
-        fe->first->value = wfs_request_remove_namespaces(o, fe->first->value);
-
-        /* add quotation marks */
-        buffer_add_head_str(fe->first->value, "\"");
-        buffer_add_str(fe->first->value, "\"");
-
-        /* put the order into postgresql syntax */
-        if (fe->last->value && fe->last != fe->first) {
-            if (buffer_cmp(fe->last->value, "D") || buffer_cmp(fe->last->value, "DESC")) {
-                buffer_empty(fe->last->value);
-                buffer_add_str(fe->last->value, "DESC");
-            } else {
-                buffer_empty(fe->last->value);
-                buffer_add_str(fe->last->value, "ASC");
-            }
-        }
+    /* Add quotation marks */
+    buffer_add_head_str(fe->first->value, "\"");
+    buffer_add_str(fe->first->value, "\"");
 
-        buffer_copy(wr->sortby, fe->first->value);
-        buffer_add_str(wr->sortby, " ");
+    /* SQL Order syntax */
+    if (fe->last->value && fe->last != fe->first) {
+      if (buffer_cmp(fe->last->value, "D") || buffer_cmp(fe->last->value, "DESC")) {
+        buffer_empty(fe->last->value);
+        buffer_add_str(fe->last->value, "DESC");
+      } else {
+        buffer_empty(fe->last->value);
+        buffer_add_str(fe->last->value, "ASC");
+      }
+    }
 
-        if (fe->last->value && fe->last != fe->first)
-            buffer_copy(wr->sortby, fe->last->value);
-        else buffer_add_str(wr->sortby, "ASC");
+    buffer_copy(wr->sortby, fe->first->value);
+    buffer_add_str(wr->sortby, " ");
 
-        if (ln->next) buffer_add_str(wr->sortby, ",");
+    if (fe->last->value && fe->last != fe->first)
+      buffer_copy(wr->sortby, fe->last->value);
+    else buffer_add_str(wr->sortby, "ASC");
 
-        list_free(fe);
-    }
+    if (ln->next) buffer_add_str(wr->sortby, ",");
 
-    list_free(l);
+    list_free(fe);
+  }
+
+  list_free(l);
 }
 
 
@@ -601,21 +558,45 @@ static void wfs_request_check_sortby(ows * o, wfs_request * wr)
  */
 static void wfs_request_check_maxfeatures(ows * o, wfs_request * wr)
 {
-    int mf;
-    buffer *b;
+  int mf;
+  buffer *b;
 
-    assert(o);
-    assert(wr);
+  assert(o && wr);
 
-    /* maxFeatures is not a mandatory parameter */
-    if (!array_is_key(o->cgi, "maxfeatures")) return;
+  /* maxFeatures is not a mandatory parameter */
+  if (!array_is_key(o->cgi, "maxfeatures")) return;
 
-    b = array_get(o->cgi, "maxfeatures");
-    mf = atoi(b->buf);
+  b = array_get(o->cgi, "maxfeatures");
+  mf = atoi(b->buf);
 
-    if (mf > 0) wr->maxfeatures = mf;
-    else ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE,
-                  "MaxFeatures isn't valid, must be > 0", "GetFeature");
+  if (mf > 0) wr->maxfeatures = mf;
+  else ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE,
+                   "MaxFeatures isn't valid, must be > 0", "GetFeature");
+}
+
+
+/*
+ * TODO
+ */
+buffer *wfs_request_remove_prop_ns_prefix(ows * o, buffer * prop, list * layer_name)  
+{
+  list * ns;
+  list_node * ln; 
+
+  assert(o && prop && layer_name);
+
+  ns = ows_layer_list_ns_prefix(o->layers, layer_name);
+
+  for (ln = ns->first ; ln ; ln = ln->next) {
+    if (buffer_ncmp(ln->value, prop->buf, ln->value->use)) {
+      buffer_shift(prop, ln->value->use + 1);  /* +1 for : separator */
+      list_free(ns);
+      return prop;
+    }
+  }
+
+  list_free(ns);
+  return prop;  /* if ns_prefix don't match, just don't do anything */
 }
 
 
@@ -624,75 +605,51 @@ static void wfs_request_check_maxfeatures(ows * o, wfs_request * wr)
  */
 static void wfs_request_check_propertyname(ows * o, wfs_request * wr, list * layer_name)
 {
-    buffer *b;
-    mlist *f;
-    list *fe;
-    list_node *ln, *ln_tpn;
-    array *prop_table;
-    mlist_node *mln = NULL;
+  mlist *f;
+  buffer *b;
+  array *prop_table;
+  list_node *ln, *ln_tpn;
+  mlist_node *mln = NULL;
+
+  ln = ln_tpn = NULL;
+
+  assert(o && wr && layer_name);
+
+  /* propertyName is not a mandatory parameter */
+  if (!array_is_key(o->cgi, "propertyname")) return;
 
-    assert(o);
-    assert(wr);
-    assert(layer_name);
+  b = array_get(o->cgi, "propertyname");
+  f = mlist_explode('(', ')', b);
 
-    ln = ln_tpn = NULL;
+  /*check if propertyname size and typename or fid size are similar */
+  if (f->size != layer_name->size) {
+    mlist_free(f);
+    wfs_error(o, wr, WFS_ERROR_INCORRECT_SIZE_PARAMETER,
+              "propertyname list size and typename list size must be similar", "GetFeature");
+    return;
+  }
 
-    /* propertyName is not a mandatory parameter */
-    if (!array_is_key(o->cgi, "propertyname")) return;
+  for (mln = f->first, ln_tpn = layer_name->first ; mln ; mln = mln->next, ln_tpn = ln_tpn->next) {
+    prop_table = ows_psql_describe_table(o, ln_tpn->value);
 
-    b = array_get(o->cgi, "propertyname");
-    f = mlist_explode('(', ')', b);
+    for (ln = mln->value->first ; ln ; ln = ln->next) {
 
-    /*check if propertyname size and typename or fid size are similar */
-    if (f->size != layer_name->size) {
+      /* if propertyname is an Xpath expression */
+      if (check_regexp(ln->value->buf, "\\*\\["))
+        ln->value = fe_xpath_property_name(o, ln_tpn->value, ln->value);
+
+      /* check if propertyname values are correct */
+      ln->value = wfs_request_remove_prop_ns_prefix(o, ln->value, layer_name);
+      if (!buffer_cmp(ln->value, "*") && !array_is_key(prop_table, ln->value->buf)) {
         mlist_free(f);
-        wfs_error(o, wr, WFS_ERROR_INCORRECT_SIZE_PARAMETER,
-                  "propertyname list size and typename list size must be similar", "GetFeature");
+        ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE,
+                  "PropertyName values not available", "GetFeature");
         return;
+      }
     }
+  }
 
-    for (mln = f->first, ln_tpn = layer_name->first ; mln ; mln = mln->next, ln_tpn = ln_tpn->next) {
-        prop_table = ows_psql_describe_table(o, ln_tpn->value);
-
-        for (ln = mln->value->first ; ln ; ln = ln->next) {
-            fe = list_explode('.', ln->value);
-
-            /*case layer_name.propertyname */
-            if (fe->first->next) {
-                /*check if propertyname values match typename or fid layer names */
-                if (!buffer_cmp(fe->first->value, ln_tpn->value->buf)) {
-                    list_free(fe);
-                    mlist_free(f);
-                    wfs_error(o, wr, WFS_ERROR_NO_MATCHING,
-                              "propertyname values and typename values don't match", "GetFeature");
-                    return;
-                }
-
-                /* keep only the propertyname (without the layer prefixed) */
-                buffer_empty(ln->value);
-                buffer_copy(ln->value, fe->last->value);
-            }
-
-            list_free(fe);
-
-            /* if propertyname is an Xpath expression */
-            if (check_regexp(ln->value->buf, "\\*\\["))
-                ln->value = fe_xpath_property_name(o, ln_tpn->value, ln->value);
-
-            /* remove namespaces */
-            ln->value = wfs_request_remove_namespaces(o, ln->value);
-
-            /* check if propertyname values are correct */
-            if (!buffer_cmp(ln->value, "*") && !array_is_key(prop_table, ln->value->buf)) {
-                mlist_free(f);
-                ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE,
-                          "propertyname values not available", "GetFeature");
-                return;
-            }
-        }
-    }
-
-    wr->propertyname = f;
+  wr->propertyname = f;
 }
 
 
@@ -701,23 +658,21 @@ static void wfs_request_check_propertyname(ows * o, wfs_request * wr, list * lay
  */
 static void wfs_request_check_filter(ows * o, wfs_request * wr)
 {
-    buffer *b, *filter;
+  buffer *b, *filter;
+  assert(o && wr);
 
-    assert(o);
-    assert(wr);
+  if (!array_is_key(o->cgi, "filter")) return; /* Filter is not mandatory */
 
-    if (!array_is_key(o->cgi, "filter")) return; /* Filter is not mandatory */
+  b = array_get(o->cgi, "filter");
+  filter = buffer_init();
+  buffer_copy(filter, b);
+  wr->filter = list_explode_start_end('(', ')', filter);
 
-    b = array_get(o->cgi, "filter");
-    filter = buffer_init();
-    buffer_copy(filter, b);
-    wr->filter = list_explode_start_end('(', ')', filter);
+  if (wr->filter->size != wr->typename->size)
+    wfs_error(o, wr, WFS_ERROR_INCORRECT_SIZE_PARAMETER,
+              "Filter list size and typename list size must be similar", "GetFeature");
 
-    if (wr->filter->size != wr->typename->size)
-        wfs_error(o, wr, WFS_ERROR_INCORRECT_SIZE_PARAMETER,
-            "Filter list size and typename list size must be similar", "GetFeature");
-
-    buffer_free(filter);
+  buffer_free(filter);
 }
 
 
@@ -727,24 +682,23 @@ static void wfs_request_check_filter(ows * o, wfs_request * wr)
  */
 static void wfs_request_check_operation(ows * o, wfs_request * wr)
 {
-    assert(o);
-    assert(wr);
-
-    /* OPERATION parameter is mandatory */
-    if (!array_is_key(o->cgi, "operation")) {
-        ows_error(o, OWS_ERROR_MISSING_PARAMETER_VALUE, "Operation (Delete) must be specified", "Operation");
-        return;
-    }
-
-    wr->operation = buffer_init();
-    buffer_copy(wr->operation, array_get(o->cgi, "operation"));
-
-    if (!buffer_cmp(wr->operation, "Delete")) {
-        ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE,
-                  "Only Delete operation is supported with GET method, use POST method for insert and update operations",
-                  "Transaction");
-        return;
-    }
+  assert(o && wr);
+
+  /* OPERATION parameter is mandatory */
+  if (!array_is_key(o->cgi, "operation")) {
+    ows_error(o, OWS_ERROR_MISSING_PARAMETER_VALUE, "Operation (Delete) must be specified", "Operation");
+    return;
+  }
+
+  wr->operation = buffer_init();
+  buffer_copy(wr->operation, array_get(o->cgi, "operation"));
+
+  if (!buffer_cmp(wr->operation, "Delete")) {
+    ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE,
+              "Only Delete operation is supported with GET method, use POST method for insert and update operations",
+              "Transaction");
+    return;
+  }
 }
 
 
@@ -753,20 +707,19 @@ static void wfs_request_check_operation(ows * o, wfs_request * wr)
  */
 static void wfs_request_check_parameters(ows * o, wfs_request * wr)
 {
-    assert(o);
-    assert(wr);
-
-    if (!array_is_key(o->cgi, "typename") && !array_is_key(o->cgi, "featureid")) {
-        ows_error(o, OWS_ERROR_MISSING_PARAMETER_VALUE, "TYPENAME or FEATUREID must be set", "request");
-        return;
-    }
-
-    /* Test mutually exclusive parameters (FILTER, BBOX and FEATUREID) */
-    if (    (array_is_key(o->cgi, "filter") && array_is_key(o->cgi, "bbox"))
-         || (array_is_key(o->cgi, "filter") && array_is_key(o->cgi, "featureid"))
-         || (array_is_key(o->cgi, "bbox")   && array_is_key(o->cgi, "featureid")))
-        wfs_error(o, wr, WFS_ERROR_EXCLUSIVE_PARAMETERS,
-           "FILTER, BBOX and FEATUREID are mutually exclusive, just use one of these parameters", "request");
+  assert(o && wr);
+
+  if (!array_is_key(o->cgi, "typename") && !array_is_key(o->cgi, "featureid")) {
+    ows_error(o, OWS_ERROR_MISSING_PARAMETER_VALUE, "TYPENAME or FEATUREID must be set", "request");
+    return;
+  }
+
+  /* Test mutually exclusive parameters (FILTER, BBOX and FEATUREID) */
+  if (    (array_is_key(o->cgi, "filter") && array_is_key(o->cgi, "bbox"))
+       || (array_is_key(o->cgi, "filter") && array_is_key(o->cgi, "featureid"))
+       || (array_is_key(o->cgi, "bbox")   && array_is_key(o->cgi, "featureid")))
+    wfs_error(o, wr, WFS_ERROR_EXCLUSIVE_PARAMETERS,
+              "FILTER, BBOX and FEATUREID are mutually exclusive, just use one of these parameters", "request");
 }
 
 
@@ -775,78 +728,76 @@ static void wfs_request_check_parameters(ows * o, wfs_request * wr)
  */
 static void wfs_request_check_get_capabilities(ows * o, wfs_request * wr, const array * cgi)
 {
-    buffer *b;
-    list *l;
-    list_node *ln = NULL;
-    bool version = false;
-
-    assert(o);
-    assert(wr);
-    assert(cgi);
-
-    /* If key version is not set, version = higher version */
-    if (!array_is_key(cgi, "version")) {
-            ows_version_set(o->request->version, 1, 1, 0);
-    } else {
-             if (ows_version_get(o->request->version) < 110) ows_version_set(o->request->version, 1, 0, 0);
-        else if (ows_version_get(o->request->version) > 110) ows_version_set(o->request->version, 1, 1, 0);
-    }
-
-    /* 1.1.0 parameter : uses the first valid version */
-    if (array_is_key(cgi, "acceptversions")) {
-        b = array_get(cgi, "acceptversions");
-        l = list_explode(',', b);
-
-        for (ln = l->first ; ln ; ln = ln->next) {
-            if (version == false) {
-                if (buffer_cmp(ln->value, "1.0.0")) {
-                    ows_version_set(o->request->version, 1, 0, 0);
-                    version = true;
-                } else if (buffer_cmp(ln->value, "1.1.0")) {
-                    ows_version_set(o->request->version, 1, 1, 0);
-                    version = true;
-                }
-            }
-        }
-
-        list_free(l);
-        /* if versions weren't 1.0.0 or 1.1.0, raise an error */
-        if (version == false) {
-            ows_error(o, OWS_ERROR_VERSION_NEGOTIATION_FAILED,
-                      "VERSION parameter is not valid (use 1.0.0 or 1.1.0)",
-                      "AcceptVersions");
-            return;
-        }
-    }
-
-    /* TODO updateSequence is not yet implemented */
-    if (array_is_key(cgi, "updatesequence")) {
-        b = array_get(cgi, "updatesequence");
+  buffer *b;
+  list *l;
+  list_node *ln = NULL;
+  bool version = false;
+
+  assert(o && wr && cgi);
+
+  /* If key version is not set, version = higher version */
+  if (!array_is_key(cgi, "version")) {
+    ows_version_set(o->request->version, 1, 1, 0);
+  } else {
+    if (ows_version_get(o->request->version) < 110) ows_version_set(o->request->version, 1, 0, 0);
+    else if (ows_version_get(o->request->version) > 110) ows_version_set(o->request->version, 1, 1, 0);
+  }
+
+  /* 1.1.0 parameter : uses the first valid version */
+  if (array_is_key(cgi, "acceptversions")) {
+    b = array_get(cgi, "acceptversions");
+    l = list_explode(',', b);
 
-        if (!buffer_cmp(b, "0")) {
-            ows_error(o, OWS_ERROR_INVALID_UPDATE_SEQUENCE,
-                      "UPDATESEQUENCE value must be omit or 0, function not (yet) implemented",
-                      "updateSequence");
-            return;
+    for (ln = l->first ; ln ; ln = ln->next) {
+      if (version == false) {
+        if (buffer_cmp(ln->value, "1.0.0")) {
+          ows_version_set(o->request->version, 1, 0, 0);
+          version = true;
+        } else if (buffer_cmp(ln->value, "1.1.0")) {
+          ows_version_set(o->request->version, 1, 1, 0);
+          version = true;
         }
+      }
     }
 
-    /* Sections */
-    if (array_is_key(cgi, "sections")) {
-        b = array_get(cgi, "sections");
-        l = list_explode(',', b);
-        wr->sections = l;
-    }
+    list_free(l);
+    /* if versions weren't 1.0.0 or 1.1.0, raise an error */
+    if (version == false) {
+      ows_error(o, OWS_ERROR_VERSION_NEGOTIATION_FAILED,
+                "VERSION parameter is not valid (use 1.0.0 or 1.1.0)",
+                "AcceptVersions");
+      return;
+    }
+  }
+
+  /* FIXME updateSequence is not yet implemented */
+  if (array_is_key(cgi, "updatesequence")) {
+    b = array_get(cgi, "updatesequence");
+
+    if (!buffer_cmp(b, "0")) {
+      ows_error(o, OWS_ERROR_INVALID_UPDATE_SEQUENCE,
+                "UPDATESEQUENCE value must be omit or 0, function not (yet) implemented",
+                "updateSequence");
+      return;
+    }
+  }
+
+  /* Sections */
+  if (array_is_key(cgi, "sections")) {
+    b = array_get(cgi, "sections");
+    l = list_explode(',', b);
+    wr->sections = l;
+  }
 
-    /* AcceptFormats */
-    if (array_is_key(cgi, "acceptformats")) {
-        b = array_get(cgi, "acceptformats");
+  /* AcceptFormats */
+  if (array_is_key(cgi, "acceptformats")) {
+    b = array_get(cgi, "acceptformats");
 
-             if (buffer_cmp(b, "text/xml"))        wr->format = WFS_TEXT_XML;
-        else if (buffer_cmp(b, "application/xml")) wr->format = WFS_APPLICATION_XML;
-        else ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE,
-                      "Not supported format : use text/xml or application/xml", "acceptFormats");
-    }
+         if (buffer_cmp(b, "text/xml"))        wr->format = WFS_TEXT_XML;
+    else if (buffer_cmp(b, "application/xml")) wr->format = WFS_APPLICATION_XML;
+    else ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE,
+                     "Not supported format : use text/xml or application/xml", "acceptFormats");
+  }
 }
 
 
@@ -855,30 +806,27 @@ static void wfs_request_check_get_capabilities(ows * o, wfs_request * wr, const
  */
 static void wfs_request_check_describe_feature_type(ows * o, wfs_request * wr, const array * cgi)
 {
-    list *layer_name;
-    ows_layer_node *ln = NULL;
-
-    assert(cgi);
-    assert(o);
-    assert(wr);
-    
-    wfs_request_check_output(o, wr); /* OutputFormat */
-    if(o->exit) return;
-
-    /* Typename */
-    layer_name = list_init();
-    layer_name = wfs_request_check_typename(o, wr, layer_name);
-    if(o->exit) return;
-    list_free(layer_name);
-
-    /* if no Typename parameter is given, retrieve all layers defined in configuration file */
-    if (!array_is_key(cgi, "typename")) {
-        wr->typename = list_init();
-
-        for (ln = o->layers->first ; ln ; ln = ln->next)
-            if (ows_layer_match_table(o, ln->layer->name))
-                list_add_by_copy(wr->typename, ln->layer->name);
-    }
+  list *layer_name;
+  ows_layer_node *ln = NULL;
+  assert(o && wr && cgi);
+
+  wfs_request_check_output(o, wr); /* OutputFormat */
+  if(o->exit) return;
+
+  /* Typename */
+  layer_name = list_init();
+  layer_name = wfs_request_check_typename(o, wr, layer_name);
+  if(o->exit) return;
+  list_free(layer_name);
+
+  /* if no Typename parameter is given, retrieve all layers defined in configuration file */
+  if (!array_is_key(cgi, "typename")) {
+    wr->typename = list_init();
+
+    for (ln = o->layers->first ; ln ; ln = ln->next)
+      if (ows_layer_match_table(o, ln->layer->name))
+        list_add_by_copy(wr->typename, ln->layer->name_prefix);
+  }
 }
 
 
@@ -887,32 +835,29 @@ static void wfs_request_check_describe_feature_type(ows * o, wfs_request * wr, c
  */
 static void wfs_request_check_get_feature(ows * o, wfs_request * wr, const array * cgi)
 {
-    list *layer_name;
+  list *layer_name;
+  assert(o && wr && cgi);
 
-    assert(o);
-    assert(wr);
-    assert(cgi);
+  wfs_request_check_parameters(o, wr);  /* Check parameters validity */
 
-    wfs_request_check_parameters(o, wr);  /* Check parameters validity */
+  layer_name = list_init();
 
-    layer_name = list_init();
+  /* TypeName (required except if there is a FeatureId parameter) */
+  if (!o->exit) layer_name = wfs_request_check_typename(o, wr, layer_name);
 
-    /* TypeName (required except if there is a FeatureId parameter) */
-    if (!o->exit) layer_name = wfs_request_check_typename(o, wr, layer_name);
+  /* FeatureId, if no TypeName defined, list of layer_name must be extracted from FeatureId */
+  if (!o->exit) layer_name = wfs_request_check_fid(o, wr, layer_name);
 
-    /* FeatureId, if no TypeName defined, list of layer_name must be extracted from FeatureId */
-    if (!o->exit) layer_name = wfs_request_check_fid(o, wr, layer_name);
+  if (!o->exit) wfs_request_check_srs(o, wr, layer_name);          /* srsName */
+  if (!o->exit) wfs_request_check_bbox(o, wr, layer_name);         /* BBOX=xmin,ymin,xmax,ymax[,srs] */
+  if (!o->exit) wfs_request_check_propertyname(o, wr, layer_name); /* PropertyName */
+  if (!o->exit) wfs_request_check_output(o, wr);                   /* outputFormat */
+  if (!o->exit) wfs_request_check_resulttype(o, wr);               /* resultType */
+  if (!o->exit) wfs_request_check_sortby(o, wr, layer_name);       /* sortBy */
+  if (!o->exit) wfs_request_check_maxfeatures(o, wr);              /* maxFeatures */
+  if (!o->exit) wfs_request_check_filter(o, wr);                   /* Filter */
 
-    if (!o->exit) wfs_request_check_srs(o, wr, layer_name);          /* srsName */
-    if (!o->exit) wfs_request_check_bbox(o, wr, layer_name);         /* BBOX=xmin,ymin,xmax,ymax[,srs] */
-    if (!o->exit) wfs_request_check_propertyname(o, wr, layer_name); /* PropertyName */
-    if (!o->exit) wfs_request_check_output(o, wr);                   /* outputFormat */
-    if (!o->exit) wfs_request_check_resulttype(o, wr);               /* resultType */
-    if (!o->exit) wfs_request_check_sortby(o, wr);                   /* sortBy */
-    if (!o->exit) wfs_request_check_maxfeatures(o, wr);              /* maxFeatures */
-    if (!o->exit) wfs_request_check_filter(o, wr);                   /* Filter */
-
-    if (layer_name) list_free(layer_name);
+  if (layer_name) list_free(layer_name);
 }
 
 
@@ -921,22 +866,19 @@ static void wfs_request_check_get_feature(ows * o, wfs_request * wr, const array
  */
 static void wfs_request_check_transaction(ows * o, wfs_request * wr, const array * cgi)
 {
-    list *layer_name;
-
-    assert(o);
-    assert(wr);
-    assert(cgi);
+  list *layer_name;
+  assert(o && wr && cgi);
 
-    layer_name = list_init();
+  layer_name = list_init();
 
-    if (!o->exit) wfs_request_check_operation(o, wr);                         /* Operation */
-    if (!o->exit) wfs_request_check_parameters(o, wr);                        /* General checks */
-    if (!o->exit) layer_name = wfs_request_check_typename(o, wr, layer_name); /* Typename */
-    if (!o->exit) layer_name = wfs_request_check_fid(o, wr, layer_name);      /* FeatureId */
-    if (!o->exit) wfs_request_check_bbox(o, wr, layer_name);                  /* Bbox */ 
-    if (!o->exit) wfs_request_check_filter(o, wr);                            /* Filter */
+  if (!o->exit) wfs_request_check_operation(o, wr);                         /* Operation */
+  if (!o->exit) wfs_request_check_parameters(o, wr);                        /* General checks */
+  if (!o->exit) layer_name = wfs_request_check_typename(o, wr, layer_name); /* Typename */
+  if (!o->exit) layer_name = wfs_request_check_fid(o, wr, layer_name);      /* FeatureId */
+  if (!o->exit) wfs_request_check_bbox(o, wr, layer_name);                  /* Bbox */
+  if (!o->exit) wfs_request_check_filter(o, wr);                            /* Filter */
 
-    list_free(layer_name);
+  list_free(layer_name);
 }
 
 
@@ -945,45 +887,42 @@ static void wfs_request_check_transaction(ows * o, wfs_request * wr, const array
  */
 void wfs_request_check(ows * o, wfs_request * wr, const array * cgi)
 {
-    buffer *b;
-
-    assert(o);
-    assert(wr);
-    assert(cgi);
-
-    b = array_get(cgi, "request");
-
-    /* Service */
-    if (o->request->service != WFS) {
-        ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "bad service, should be WFS", "SERVICE");
-        return;
-    }
-
-    /* Version */
-    if (!buffer_case_cmp(b, "GetCapabilities")) {
-        wfs_request_check_version(o, wr, cgi);
-        if (o->exit) return;
-    }
-
-    /* Request */
-           if (buffer_case_cmp(b, "GetCapabilities")) {
-        wr->request = WFS_GET_CAPABILITIES;
-        wfs_request_check_get_capabilities(o, wr, cgi);
-
-    } else if (buffer_case_cmp(b, "DescribeFeatureType")) {
-        wr->request = WFS_DESCRIBE_FEATURE_TYPE;
-        wfs_request_check_describe_feature_type(o, wr, cgi);
-
-    } else if (buffer_case_cmp(b, "GetFeature")) {
-        wr->request = WFS_GET_FEATURE;
-        wfs_request_check_get_feature(o, wr, cgi);
-
-    } else if (buffer_case_cmp(b, "Transaction")) {
-        wr->request = WFS_TRANSACTION;
-        if (cgi_method_get()) wfs_request_check_transaction(o, wr, cgi);
-
-    } else ows_error(o, OWS_ERROR_OPERATION_NOT_SUPPORTED,
-                  "REQUEST is not supported", "REQUEST");
+  buffer *b;
+  assert(o && wr && cgi);
+
+  b = array_get(cgi, "request");
+
+  /* Service */
+  if (o->request->service != WFS) {
+    ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "bad service, should be WFS", "SERVICE");
+    return;
+  }
+
+  /* Version */
+  if (!buffer_case_cmp(b, "GetCapabilities")) {
+    wfs_request_check_version(o, wr, cgi);
+    if (o->exit) return;
+  }
+
+  /* Request */
+  if (buffer_case_cmp(b, "GetCapabilities")) {
+    wr->request = WFS_GET_CAPABILITIES;
+    wfs_request_check_get_capabilities(o, wr, cgi);
+
+  } else if (buffer_case_cmp(b, "DescribeFeatureType")) {
+    wr->request = WFS_DESCRIBE_FEATURE_TYPE;
+    wfs_request_check_describe_feature_type(o, wr, cgi);
+
+  } else if (buffer_case_cmp(b, "GetFeature")) {
+    wr->request = WFS_GET_FEATURE;
+    wfs_request_check_get_feature(o, wr, cgi);
+
+  } else if (buffer_case_cmp(b, "Transaction")) {
+    wr->request = WFS_TRANSACTION;
+    if (cgi_method_get()) wfs_request_check_transaction(o, wr, cgi);
+
+  } else ows_error(o, OWS_ERROR_OPERATION_NOT_SUPPORTED,
+                     "REQUEST is not supported", "REQUEST");
 }
 
 
@@ -992,55 +931,47 @@ void wfs_request_check(ows * o, wfs_request * wr, const array * cgi)
  */
 void wfs(ows * o, wfs_request * wf)
 {
-    buffer *op;
-
-    assert(o);
-    assert(wf);
-
-    /* Run the request's execution */
-    switch (wf->request) {
-        case WFS_GET_CAPABILITIES:
-            wfs_get_capabilities(o, wf);
-            break;
-
-        case WFS_DESCRIBE_FEATURE_TYPE:
-            wfs_describe_feature_type(o, wf);
-            break;
-
-        case WFS_GET_FEATURE:
-            wfs_get_feature(o, wf);
-            break;
-
-        case WFS_TRANSACTION:
-
-            if (cgi_method_get()) {
-                if (buffer_cmp(wf->operation, "Delete"))
-                    wfs_delete(o, wf);
-                else {
-                    ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE,
-                              "Only Delete Operation is supported with GET method, use POST instead for Insert and Update.",
-                              "Transaction");
-                    return;
-                }
-
-            } else {
-                if (array_is_key(o->cgi, "operations")) {
-                    op = array_get(o->cgi, "operations");
-                    wfs_parse_operation(o, wf, op);
-                } else {
-                    ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "Operation parameter must be set", "Transaction");
-                    return;
-                }
-            }
-
-            break;
-
-        default:
-            assert(0);              /* Should not happen */
-    }
-}
+  buffer *op;
+  assert(o && wf);
+
+  /* Run the request's execution */
+  switch (wf->request) {
+    case WFS_GET_CAPABILITIES:
+      wfs_get_capabilities(o, wf);
+      break;
+
+    case WFS_DESCRIBE_FEATURE_TYPE:
+      wfs_describe_feature_type(o, wf);
+      break;
+
+    case WFS_GET_FEATURE:
+      wfs_get_feature(o, wf);
+      break;
+
+    case WFS_TRANSACTION:
+
+      if (cgi_method_get()) {
+        if (buffer_cmp(wf->operation, "Delete"))
+          wfs_delete(o, wf);
+        else {
+          ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE,
+                    "Only Delete Operation is supported with GET method, use POST instead for Insert and Update.",
+                    "Transaction");
+          return;
+        }
 
+      } else {
+        if (array_is_key(o->cgi, "operations")) {
+          op = array_get(o->cgi, "operations");
+          wfs_parse_operation(o, wf, op);
+        } else {
+          ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE, "Operation parameter must be set", "Transaction");
+          return;
+        }
+      }
 
-/*
- * vim: expandtab sw=4 ts=4
- */
+      break;
+
+    default:  assert(0); /* Should not happen */
+  }
+}
diff --git a/src/wfs/wfs_transaction.c b/src/wfs/wfs_transaction.c
index 19e7bf9..7740133 100644
--- a/src/wfs/wfs_transaction.c
+++ b/src/wfs/wfs_transaction.c
@@ -36,36 +36,36 @@
  */
 static buffer *wfs_execute_transaction_request(ows * o, wfs_request * wr, buffer * sql)
 {
-    buffer *result, *cmd_status;
-    PGresult *res;
+  buffer *result, *cmd_status;
+  PGresult *res;
 
-    assert(o);
-    assert(sql);
+  assert(o);
+  assert(sql);
 
-    result = buffer_init();
-    cmd_status = buffer_init();
+  result = buffer_init();
+  cmd_status = buffer_init();
 
-    res = ows_psql_exec(o, sql->buf);
-    if (PQresultStatus(res) != PGRES_COMMAND_OK)
-        buffer_add_str(result, PQresultErrorMessage(res));
-    else
-        buffer_add_str(result, PQresStatus(PQresultStatus(res)));
-    buffer_add_str(cmd_status, (char *) PQcmdStatus(res));
+  res = ows_psql_exec(o, sql->buf);
+  if (PQresultStatus(res) != PGRES_COMMAND_OK)
+    buffer_add_str(result, PQresultErrorMessage(res));
+  else
+    buffer_add_str(result, PQresStatus(PQresultStatus(res)));
+  buffer_add_str(cmd_status, (char *) PQcmdStatus(res));
 
-    if (check_regexp(cmd_status->buf, "^DELETE")) {
-        cmd_status = buffer_replace(cmd_status, "DELETE ", "");
-        wr->delete_results += atoi(cmd_status->buf);
-    }
+  if (check_regexp(cmd_status->buf, "^DELETE")) {
+    cmd_status = buffer_replace(cmd_status, "DELETE ", "");
+    wr->delete_results += atoi(cmd_status->buf);
+  }
 
-    if (check_regexp(cmd_status->buf, "^UPDATE")) {
-        cmd_status = buffer_replace(cmd_status, "UPDATE ", "");
-        wr->update_results += atoi(cmd_status->buf);
-    }
+  if (check_regexp(cmd_status->buf, "^UPDATE")) {
+    cmd_status = buffer_replace(cmd_status, "UPDATE ", "");
+    wr->update_results += atoi(cmd_status->buf);
+  }
 
-    buffer_free(cmd_status);
-    PQclear(res);
+  buffer_free(cmd_status);
+  PQclear(res);
 
-    return result;
+  return result;
 }
 
 
@@ -74,27 +74,27 @@ static buffer *wfs_execute_transaction_request(ows * o, wfs_request * wr, buffer
  */
 static void wfs_transaction_summary(ows * o, wfs_request * wr, buffer * result)
 {
-    alist_node *an;
-    int nb = 0; 
+  alist_node *an;
+  int nb = 0;
 
-    assert(o);
-    assert(wr);
-    assert(result);
+  assert(o);
+  assert(wr);
+  assert(result);
 
-    fprintf(o->output, "<wfs:TransactionSummary>\n");
+  fprintf(o->output, "<wfs:TransactionSummary>\n");
 
-    if (buffer_cmp(result, "PGRES_COMMAND_OK")) {
+  if (buffer_cmp(result, "PGRES_COMMAND_OK")) {
 
-        if (wr->insert_results) {
-            for (an = wr->insert_results->first ; an ; an = an->next) nb += an->value->size;
-            fprintf(o->output, " <wfs:totalInserted>%d</wfs:totalInserted>\n", nb);
-        }
-
-        fprintf(o->output, "<wfs:totalUpdated>%d</wfs:totalUpdated>\n", wr->update_results);
-        fprintf(o->output, " <wfs:totalDeleted>%d</wfs:totalDeleted>\n", wr->delete_results);
+    if (wr->insert_results) {
+      for (an = wr->insert_results->first ; an ; an = an->next) nb += an->value->size;
+      fprintf(o->output, " <wfs:totalInserted>%d</wfs:totalInserted>\n", nb);
     }
 
-    fprintf(o->output, "</wfs:TransactionSummary>\n");
+    fprintf(o->output, "<wfs:totalUpdated>%d</wfs:totalUpdated>\n", wr->update_results);
+    fprintf(o->output, " <wfs:totalDeleted>%d</wfs:totalDeleted>\n", wr->delete_results);
+  }
+
+  fprintf(o->output, "</wfs:TransactionSummary>\n");
 }
 
 
@@ -103,40 +103,40 @@ static void wfs_transaction_summary(ows * o, wfs_request * wr, buffer * result)
  */
 static void wfs_transaction_insert_result(ows * o, wfs_request * wr, buffer * result)
 {
-    alist_node *an;
-    list_node *ln;
+  alist_node *an;
+  list_node *ln;
 
-    assert(o);
-    assert(wr);
-    assert(result);
+  assert(o);
+  assert(wr);
+  assert(result);
 
-    ln = NULL;
+  ln = NULL;
 
-    /* check if there were Insert operations and if the command succeeded */
-    if ((!cgi_method_get()) && (buffer_cmp(result, "PGRES_COMMAND_OK") && (wr->insert_results->first))) {
+  /* check if there were Insert operations and if the command succeeded */
+  if ((!cgi_method_get()) && (buffer_cmp(result, "PGRES_COMMAND_OK") && (wr->insert_results->first))) {
 
-        if (ows_version_get(o->request->version) == 110)
-            fprintf(o->output, "<wfs:InsertResults>\n");
+    if (ows_version_get(o->request->version) == 110)
+      fprintf(o->output, "<wfs:InsertResults>\n");
 
-        for (an = wr->insert_results->first ; an ; an = an->next) {
+    for (an = wr->insert_results->first ; an ; an = an->next) {
 
-            if (ows_version_get(o->request->version) == 100) {
-                fprintf(o->output, "<wfs:InsertResult handle=\"%s\">", an->key->buf);
-                for (ln = an->value->first ; ln ; ln = ln->next)
-                    fprintf(o->output, "<ogc:FeatureId fid=\"%s\"/>", ln->value->buf);
-                fprintf(o->output, "</wfs:InsertResult>\n");
-            } else {
-                for (ln = an->value->first ; ln ; ln = ln->next) {
-                    fprintf(o->output, "<wfs:Feature handle=\"%s\">\n", an->key->buf);
-                    fprintf(o->output, " <ogc:FeatureId fid=\"%s\"/>\n", ln->value->buf);
-                    fprintf(o->output, "</wfs:Feature>\n");
-                }
-            }
+      if (ows_version_get(o->request->version) == 100) {
+        fprintf(o->output, "<wfs:InsertResult handle=\"%s\">", an->key->buf);
+        for (ln = an->value->first ; ln ; ln = ln->next)
+          fprintf(o->output, "<ogc:FeatureId fid=\"%s\"/>", ln->value->buf);
+        fprintf(o->output, "</wfs:InsertResult>\n");
+      } else {
+        for (ln = an->value->first ; ln ; ln = ln->next) {
+          fprintf(o->output, "<wfs:Feature handle=\"%s\">\n", an->key->buf);
+          fprintf(o->output, " <ogc:FeatureId fid=\"%s\"/>\n", ln->value->buf);
+          fprintf(o->output, "</wfs:Feature>\n");
         }
-
-        if (ows_version_get(o->request->version) == 110)
-            fprintf(o->output, "</wfs:InsertResults>");
+      }
     }
+
+    if (ows_version_get(o->request->version) == 110)
+      fprintf(o->output, "</wfs:InsertResults>");
+  }
 }
 
 
@@ -145,39 +145,39 @@ static void wfs_transaction_insert_result(ows * o, wfs_request * wr, buffer * re
  */
 static void wfs_transaction_result(ows * o, wfs_request * wr, buffer * result, buffer * locator)
 {
-    assert(o);
-    assert(wr);
-    assert(result);
+  assert(o);
+  assert(wr);
+  assert(result);
 
-    if (!buffer_cmp(result, "PGRES_COMMAND_OK")) assert(locator);
+  if (!buffer_cmp(result, "PGRES_COMMAND_OK")) assert(locator);
 
-    /* only if version = 1.0.0 or if command failed */
-    if (ows_version_get(o->request->version) == 100
-            || (ows_version_get(o->request->version) == 110
-                && !buffer_cmp(result, "PGRES_COMMAND_OK"))) {
+  /* only if version = 1.0.0 or if command failed */
+  if (ows_version_get(o->request->version) == 100
+      || (ows_version_get(o->request->version) == 110
+          && !buffer_cmp(result, "PGRES_COMMAND_OK"))) {
 
-        if (ows_version_get(o->request->version) == 110)
-            fprintf(o->output, "<wfs:TransactionResults>\n");
-        else {
-            fprintf(o->output, "<wfs:TransactionResult>\n");
-            /* display status transaction only for 1.0.0 version */
-            fprintf(o->output, "<wfs:Status>");
+    if (ows_version_get(o->request->version) == 110)
+      fprintf(o->output, "<wfs:TransactionResults>\n");
+    else {
+      fprintf(o->output, "<wfs:TransactionResult>\n");
+      /* display status transaction only for 1.0.0 version */
+      fprintf(o->output, "<wfs:Status>");
 
-            if (buffer_cmp(result, "PGRES_COMMAND_OK"))
-                 fprintf(o->output, "<wfs:SUCCESS/>");
-            else fprintf(o->output, "<wfs:FAILED/>");
+      if (buffer_cmp(result, "PGRES_COMMAND_OK"))
+        fprintf(o->output, "<wfs:SUCCESS/>");
+      else fprintf(o->output, "<wfs:FAILED/>");
 
-            fprintf(o->output, "</wfs:Status>\n");
-        }
+      fprintf(o->output, "</wfs:Status>\n");
+    }
 
 
-        if (ows_version_get(o->request->version) == 100)
-            fprintf(o->output, "</wfs:TransactionResult>\n");
-        else {
-            fprintf(o->output, "</wfs:Action>\n");
-            fprintf(o->output, "</wfs:TransactionResults>\n");
-        }
+    if (ows_version_get(o->request->version) == 100)
+      fprintf(o->output, "</wfs:TransactionResult>\n");
+    else {
+      fprintf(o->output, "</wfs:Action>\n");
+      fprintf(o->output, "</wfs:TransactionResults>\n");
     }
+  }
 }
 
 
@@ -186,49 +186,49 @@ static void wfs_transaction_result(ows * o, wfs_request * wr, buffer * result, b
  */
 static void wfs_transaction_response(ows * o, wfs_request * wr, buffer * result, buffer * locator)
 {
-    assert(o);
-    assert(wr);
-    assert(result);
-
-    if (!buffer_cmp(result, "PGRES_COMMAND_OK")) {
-           if (buffer_cmp(result, "No FE selector on DELETE statement"))
-               wfs_error(o, wr, WFS_ERROR_MISSING_PARAMETER, result->buf, locator->buf);
-	   else
-               wfs_error(o, wr, WFS_ERROR_INVALID_PARAMETER, result->buf, locator->buf);
-	   return;
-    }
-
-    fprintf(o->output, "Content-Type: application/xml\n\n");
-    fprintf(o->output, "<?xml version='1.0' encoding='%s'?>\n", o->encoding->buf);
+  assert(o);
+  assert(wr);
+  assert(result);
 
-    if (ows_version_get(o->request->version) == 100)
-         fprintf(o->output, "<wfs:WFS_TransactionResponse version=\"1.0.0\"\n");
-    else fprintf(o->output, "<wfs:TransactionResponse version=\"1.1.0\"\n");
-
-    fprintf(o->output, " xmlns:wfs=\"http://www.opengis.net/wfs\"\n");
-    fprintf(o->output, " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n");
-    fprintf(o->output, " xmlns:ogc=\"http://www.opengis.net/ogc\"\n");
-
-    if (ows_version_get(o->request->version) == 100) {
-        fprintf(o->output, " xsi:schemaLocation='http://www.opengis.net/wfs");
-        fprintf(o->output, " http://schemas.opengis.net/wfs/1.0.0/WFS-transaction.xsd'>\n");
-    } else {
-        fprintf(o->output, " xsi:schemaLocation='http://www.opengis.net/wfs");
-        fprintf(o->output, " http://schemas.opengis.net/wfs/1.1.0/wfs.xsd'>\n");
-    }
-
-    if (ows_version_get(o->request->version) == 100) {
-        wfs_transaction_insert_result(o, wr, result);
-        wfs_transaction_result(o, wr, result, locator);
-    } else {
-        wfs_transaction_summary(o, wr, result);
-        wfs_transaction_result(o, wr, result, locator);
-        wfs_transaction_insert_result(o, wr, result);
-    }
-
-    if (ows_version_get(o->request->version) == 100)
-         fprintf(o->output, "</wfs:WFS_TransactionResponse>\n");
-    else fprintf(o->output, "</wfs:TransactionResponse>\n");
+  if (!buffer_cmp(result, "PGRES_COMMAND_OK")) {
+    if (buffer_cmp(result, "No FE selector on DELETE statement"))
+      wfs_error(o, wr, WFS_ERROR_MISSING_PARAMETER, result->buf, locator->buf);
+    else
+      wfs_error(o, wr, WFS_ERROR_INVALID_PARAMETER, result->buf, locator->buf);
+    return;
+  }
+
+  fprintf(o->output, "Content-Type: application/xml\n\n");
+  fprintf(o->output, "<?xml version='1.0' encoding='%s'?>\n", o->encoding->buf);
+
+  if (ows_version_get(o->request->version) == 100)
+    fprintf(o->output, "<wfs:WFS_TransactionResponse version=\"1.0.0\"\n");
+  else fprintf(o->output, "<wfs:TransactionResponse version=\"1.1.0\"\n");
+
+  fprintf(o->output, " xmlns:wfs=\"http://www.opengis.net/wfs\"\n");
+  fprintf(o->output, " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n");
+  fprintf(o->output, " xmlns:ogc=\"http://www.opengis.net/ogc\"\n");
+
+  if (ows_version_get(o->request->version) == 100) {
+    fprintf(o->output, " xsi:schemaLocation='http://www.opengis.net/wfs");
+    fprintf(o->output, " http://schemas.opengis.net/wfs/1.0.0/WFS-transaction.xsd'>\n");
+  } else {
+    fprintf(o->output, " xsi:schemaLocation='http://www.opengis.net/wfs");
+    fprintf(o->output, " http://schemas.opengis.net/wfs/1.1.0/wfs.xsd'>\n");
+  }
+
+  if (ows_version_get(o->request->version) == 100) {
+    wfs_transaction_insert_result(o, wr, result);
+    wfs_transaction_result(o, wr, result, locator);
+  } else {
+    wfs_transaction_summary(o, wr, result);
+    wfs_transaction_result(o, wr, result, locator);
+    wfs_transaction_insert_result(o, wr, result);
+  }
+
+  if (ows_version_get(o->request->version) == 100)
+    fprintf(o->output, "</wfs:WFS_TransactionResponse>\n");
+  else fprintf(o->output, "</wfs:TransactionResponse>\n");
 }
 
 
@@ -237,34 +237,33 @@ static void wfs_transaction_response(ows * o, wfs_request * wr, buffer * result,
  */
 static buffer *wfs_retrieve_value(ows * o, wfs_request * wr, buffer * value, xmlDocPtr xmldoc, xmlNodePtr n)
 {
-    xmlChar *content;
-    char *content_escaped;
+  xmlChar *content;
+  char *content_escaped;
 
-    assert(o);
-    assert(wr);
-    assert(value);
-    assert(n);
+  assert(o);
+  assert(wr);
+  assert(value);
+  assert(n);
 
-    content = xmlNodeGetContent(n);
-    content_escaped = ows_psql_escape_string(o, (char *) content);
+  content = xmlNodeGetContent(n);
+  content_escaped = ows_psql_escape_string(o, (char *) content);
 
-    if (!content_escaped)
-    {
-        xmlFree(content);
-        buffer_free(value);
-        xmlFreeDoc(xmldoc);
-        ows_error(o, OWS_ERROR_FORBIDDEN_CHARACTER,
-	    "Some forbidden character are present into the request", "transaction");
-    }
+  if (!content_escaped) {
+    xmlFree(content);
+    buffer_free(value);
+    xmlFreeDoc(xmldoc);
+    ows_error(o, OWS_ERROR_FORBIDDEN_CHARACTER,
+              "Some forbidden character are present into the request", "transaction");
+  }
 
-    buffer_add_str(value, "'");
-    buffer_add_str(value, content_escaped);
-    buffer_add_str(value, "'");
+  buffer_add_str(value, "'");
+  buffer_add_str(value, content_escaped);
+  buffer_add_str(value, "'");
 
-    xmlFree(content);
-    free(content_escaped);
+  xmlFree(content);
+  free(content_escaped);
 
-    return value;
+  return value;
 }
 
 
@@ -273,31 +272,41 @@ static buffer *wfs_retrieve_value(ows * o, wfs_request * wr, buffer * value, xml
  */
 static buffer *wfs_retrieve_typename(ows * o, wfs_request * wr, xmlNodePtr n)
 {
-    xmlAttr *att;
-    xmlChar *content;
-    buffer *typename;
+  xmlAttr *att;
+  xmlChar *content;
+  buffer *typename;
+  array *o_ns;
 
-    typename = buffer_init();
-    content = NULL;
+  content = NULL;
+  typename = buffer_init();
+  o_ns = ows_layer_list_namespaces(o->layers);
 
-    for (att = n->properties ; att ; att = att->next) {
+  for (att = n->properties ; att ; att = att->next) {
 
-        if (!strcmp((char *) att->name, "typeName")) {
-            content = xmlNodeGetContent(att->children);
-            buffer_add_str(typename, (char *) content);
-            wfs_request_remove_namespaces(o, typename);  /* FIXME need to be rewrite */
+    if (!strcmp((char *) att->name, "typeName")) {
+      content = xmlNodeGetContent(att->children);
+      buffer_add_str(typename, (char *) content);
 
-            if (!ows_layer_writable(o->layers, typename)) {
-            	xmlFree(content);
-    		return NULL;
-	    }
+      /* Handle case when ns_prefix don't match but ns_uri does */
+      /* FIXME is this still work with several ns_uri ? */
+      if (n->nsDef && n->nsDef->href && array_is_value(o_ns, (char *) n->nsDef->href)) {
+        buffer_shift(typename, strlen((char *) n->nsDef->prefix));
+        buffer_add_head_str(typename, (array_get_key(o_ns, (char *) n->nsDef->href))->buf);
+      }
 
-            xmlFree(content);
-    	    return typename;
-        }
+      if (!ows_layer_writable(o->layers, ows_layer_prefix_to_uri(o->layers, typename))) {
+        xmlFree(content);
+        return NULL;
+      }
+
+      xmlFree(content);
+      array_free(o_ns);
+      return typename;
     }
+  }
 
-    return NULL;
+  array_free(o_ns);
+  return NULL;
 }
 
 
@@ -307,308 +316,308 @@ static buffer *wfs_retrieve_typename(ows * o, wfs_request * wr, xmlNodePtr n)
  */
 static buffer *wfs_insert_xml(ows * o, wfs_request * wr, xmlDocPtr xmldoc, xmlNodePtr n)
 {
-    buffer *values, *column, *layer_name, *layer_ns_prefix, *result, *sql, *gml;
-    buffer *handle, *id_column, *fid_full_name, *dup_sql, *id;
-    xmlNodePtr node, elemt;
-    filter_encoding *fe;
-    PGresult *res;
-    array * table;
-    char *escaped;
-    list *l;
-    ows_srs * srs_root;
-    int srid_root = 0;
-    xmlChar *attr = NULL;
-    enum wfs_insert_idgen idgen = WFS_GENERATE_NEW;
-    enum wfs_insert_idgen handle_idgen = WFS_GENERATE_NEW;
-
-    assert(o);
-    assert(wr);
-    assert(xmldoc);
-    assert(n);
-
-    sql = buffer_init();
-    handle = buffer_init();
-    result = NULL;
-
-    /* retrieve handle attribute to report it in transaction response */
-    if (xmlHasProp(n, (xmlChar *) "handle")) {
-        attr =  xmlGetProp(n, (xmlChar *) "handle");
-        buffer_add_str(handle, (char *) attr);
-        xmlFree(attr);
-        attr = NULL;
+  buffer *values, *column, *layer_name, *layer_ns_prefix, *result, *sql, *gml;
+  buffer *handle, *id_column, *fid_full_name, *dup_sql, *id;
+  xmlNodePtr node, elemt;
+  filter_encoding *fe;
+  PGresult *res;
+  array * table;
+  char *escaped;
+  list *l;
+  ows_srs * srs_root;
+  int srid_root = 0;
+  xmlChar *attr = NULL;
+  enum wfs_insert_idgen idgen = WFS_GENERATE_NEW;
+  enum wfs_insert_idgen handle_idgen = WFS_GENERATE_NEW;
+
+  assert(o);
+  assert(wr);
+  assert(xmldoc);
+  assert(n);
+
+  sql = buffer_init();
+  handle = buffer_init();
+  result = NULL;
+
+  /* retrieve handle attribute to report it in transaction response */
+  if (xmlHasProp(n, (xmlChar *) "handle")) {
+    attr =  xmlGetProp(n, (xmlChar *) "handle");
+    buffer_add_str(handle, (char *) attr);
+    xmlFree(attr);
+    attr = NULL;
     /* handle is optional in WFS Schema */
-    } else buffer_add_str(handle, "TinyOWS-WFS-default-handle");
-
-    /* idgen appears in WFS 1.1.0, default behaviour is GenerateNew id
-       It is safe to not test WFS version, as schema validation 
-       already do the job for us.
-    */
-    if (xmlHasProp(n, (xmlChar *) "idgen")) {
-        attr =  xmlGetProp(n, (xmlChar *) "idgen");
-             if (!strcmp((char *) attr, "ReplaceDuplicate")) handle_idgen = WFS_REPLACE_DUPLICATE;
-        else if (!strcmp((char *) attr, "UseExisting"))      handle_idgen = WFS_USE_EXISTING;
-        xmlFree(attr);
-        attr = NULL;
+  } else buffer_add_str(handle, "TinyOWS-WFS-default-handle");
+
+  /* idgen appears in WFS 1.1.0, default behaviour is GenerateNew id
+     It is safe to not test WFS version, as schema validation
+     already do the job for us.
+  */
+  if (xmlHasProp(n, (xmlChar *) "idgen")) {
+    attr =  xmlGetProp(n, (xmlChar *) "idgen");
+    if (!strcmp((char *) attr, "ReplaceDuplicate")) handle_idgen = WFS_REPLACE_DUPLICATE;
+    else if (!strcmp((char *) attr, "UseExisting")) handle_idgen = WFS_USE_EXISTING;
+    xmlFree(attr);
+    attr = NULL;
+  }
+
+  /*
+   * In WFS 1.1.0 default srsName could be define
+   * TODO: what about for WFS 1.0.0 ?
+   */
+  if (xmlHasProp(n, (xmlChar *) "srsName")) {
+    attr =  xmlGetProp(n, (xmlChar *) "srsName");
+    srs_root = ows_srs_init();
+
+    if (!ows_srs_set_from_srsname(o, srs_root, (char *) attr)) {
+      buffer_free(sql);
+      buffer_free(handle);
+      ows_srs_free(srs_root);
+      xmlFree(attr);
+      result = buffer_from_str("Unkwnown or wrong CRS used");
+      return result;
+    }
+
+    srid_root = srs_root->srid;
+    ows_srs_free(srs_root);
+    xmlFree(attr);
+    attr = NULL;
+  }
+
+  n = n->children;
+
+  /* jump to the next element if there are spaces */
+  while (n->type != XML_ELEMENT_NODE) n = n->next;
+
+  /* Create Insert SQL query for each Typename */
+  for ( /* Empty */ ; n ; n = n->next) {
+    if (n->type != XML_ELEMENT_NODE) continue;
+
+    id = buffer_init();
+    values = buffer_init();
+    layer_name = buffer_init();
+
+    /* name of the table in which features must be inserted */
+    buffer_add_str(layer_name, (char *) n->ns->href);
+    buffer_add(layer_name, ':');
+    buffer_add_str(layer_name, (char *) n->name);
+
+    if (!layer_name || !ows_layer_writable(o->layers, layer_name)) {
+      buffer_free(id);
+      buffer_free(sql);
+      buffer_free(values);
+      buffer_free(handle);
+      if (layer_name) buffer_free(layer_name);
+      result = buffer_from_str("Error unknown or not writable Layer Name");
+      return result;
     }
 
-    /*
-     * In WFS 1.1.0 default srsName could be define  
-     * TODO: what about for WFS 1.0.0 ?
+    idgen = handle_idgen;
+
+    /* In GML 3 GML:id is used, in GML 2.1.2 fid is used.
+     * In both cases no other attribute allowed in this element
+     * and in both cases (f)id is optionnal !
      */
-    if (xmlHasProp(n, (xmlChar *) "srsName")) {
-        attr =  xmlGetProp(n, (xmlChar *) "srsName");
-        srs_root = ows_srs_init();
-
-        if (!ows_srs_set_from_srsname(o, srs_root, (char *) attr)) {
-             buffer_free(sql);
-             buffer_free(handle);
-       	     ows_srs_free(srs_root);
-       	     xmlFree(attr);
-             result = buffer_from_str("Unkwnown or wrong CRS used");
-             return result;
-	}
-	
-        srid_root = srs_root->srid;
-        ows_srs_free(srs_root);
-        xmlFree(attr);
-        attr = NULL;
+    if (xmlHasProp(n, (xmlChar *) "id"))       attr = xmlGetProp(n, (xmlChar *) "id");
+    else if (xmlHasProp(n, (xmlChar *) "fid")) attr = xmlGetProp(n, (xmlChar *) "fid");
+
+    if (attr) {
+      buffer_empty(id);
+      buffer_add_str(id, (char *) attr);
+      xmlFree(attr);
+    } else idgen = WFS_GENERATE_NEW;
+    /* FIXME should we end on error if UseExisting or Replace without id set ? */
+
+    id_column = ows_psql_id_column(o, layer_name);
+    if (!id_column) {
+      buffer_free(id);
+      buffer_free(sql);
+      buffer_free(values);
+      buffer_free(layer_name);
+      result = buffer_from_str("Error unknown Layer Name or not id column available");
+      return result;
     }
 
-    n = n->children;
-
-    /* jump to the next element if there are spaces */
-    while (n->type != XML_ELEMENT_NODE) n = n->next;
-
-    /* Create Insert SQL query for each Typename */
-    for ( /* Empty */ ; n ; n = n->next) {
-        if (n->type != XML_ELEMENT_NODE) continue;
-
-        id = buffer_init();
-        values = buffer_init();
-        layer_name = buffer_init();
-
-        /* name of the table in which features must be inserted */
-	buffer_add_str(layer_name, (char *) n->name);
-        wfs_request_remove_namespaces(o, layer_name);
-
-        if (!layer_name || !ows_layer_writable(o->layers, layer_name)) {
-             buffer_free(id);
-             buffer_free(handle);
-             buffer_free(sql);
-             buffer_free(values);
-	     if (layer_name) buffer_free(layer_name);
-             result = buffer_from_str("Error unknown or not writable Layer Name");
-             return result;
-	}
-
-        idgen = handle_idgen;
-
-        /* In GML 3 GML:id is used, in GML 2.1.2 fid is used.
-         * In both cases no other attribute allowed in this element
-         * and in both cases (f)id is optionnal !
-         */ 
-             if (xmlHasProp(n, (xmlChar *) "id"))  attr = xmlGetProp(n, (xmlChar *) "id");
-        else if (xmlHasProp(n, (xmlChar *) "fid")) attr = xmlGetProp(n, (xmlChar *) "fid");
-        
-        if (attr) {
-            buffer_empty(id);
-            buffer_add_str(id, (char *) attr);
-            xmlFree(attr);
-        } else idgen = WFS_GENERATE_NEW;
-        /* FIXME should we end on error if UseExisting or Replace without id set ? */
-
-        id_column = ows_psql_id_column(o, layer_name);
-	if (!id_column) {
-             buffer_free(id);
-             buffer_free(sql);
-             buffer_free(handle);
-             buffer_free(values);
-             buffer_free(layer_name);
-             result = buffer_from_str("Error unknown Layer Name or not id column available");
-             return result;
-	} 
-
-        if (id->use) {
-            l = list_explode('.', id);
-	    if (l->last) {
-	       buffer_empty(id);
-               buffer_copy(id, l->last->value);
-            }
-            list_free(l);
-        }
+    if (id->use) {
+      l = list_explode('.', id);
+      if (l->last) {
+        buffer_empty(id);
+        buffer_copy(id, l->last->value);
+      }
+      list_free(l);
+    }
 
-        layer_ns_prefix = ows_layer_ns_prefix(o->layers, layer_name);
-
-        /* ReplaceDuplicate look if an ID is already used
-         *
-         * May not be safe if another transaction occur between
-         * this select and the related insert !!!
-         */
-	   if (idgen == WFS_REPLACE_DUPLICATE) {
-           dup_sql = buffer_init();
-
-           buffer_add_str(dup_sql, "SELECT count(*) FROM "); 
-           buffer_copy(dup_sql, ows_psql_schema_name(o, layer_name));
-           buffer_add_str(dup_sql, ".\"");
-           buffer_copy(dup_sql, ows_psql_table_name(o, layer_name));
-           buffer_add_str(dup_sql, "\" WHERE "); 
-           buffer_copy(dup_sql, id_column);
-           buffer_add_str(dup_sql, "='"); 
-           escaped = ows_psql_escape_string(o, id->buf);
-           if (escaped) {
-                buffer_add_str(dup_sql, escaped);
-                free(escaped);
-           }
-           buffer_add_str(dup_sql, "';");
-
-           res = ows_psql_exec(o, dup_sql->buf);
-           if (PQresultStatus(res) != PGRES_TUPLES_OK || atoi((char *) PQgetvalue(res, 0, 0)) != 0)
-               idgen = WFS_GENERATE_NEW;
-           else
-               idgen = WFS_USE_EXISTING;
-
-           buffer_free(dup_sql);
-           PQclear(res);
-       }
-
-        if (idgen == WFS_GENERATE_NEW) {
-            buffer_free(id);
-            id = ows_psql_generate_id(o, layer_name);
-        }
+    layer_ns_prefix = ows_layer_ns_prefix(o->layers, layer_name);
 
-        /* Retrieve the id of the inserted feature
-         * to report it in transaction respons
-         */
-        fid_full_name = buffer_init();
-        buffer_copy(fid_full_name, layer_name);
-        buffer_add(fid_full_name, '.');
-        buffer_copy(fid_full_name, id);
-        alist_add(wr->insert_results, handle, fid_full_name);
-
-        buffer_add_str(sql, "INSERT INTO ");
-        buffer_copy(sql, ows_psql_schema_name(o, layer_name));
-        buffer_add_str(sql, ".\"");
-        buffer_copy(sql, ows_psql_table_name(o, layer_name));
-        buffer_add_str(sql, "\" (\"");
-        buffer_copy(sql, id_column);
-        buffer_add_str(sql, "\"");
+    /* ReplaceDuplicate look if an ID is already used
+     *
+     * May not be safe if another transaction occur between
+     * this select and the related insert !!!
+     */
+    if (idgen == WFS_REPLACE_DUPLICATE) {
+      dup_sql = buffer_init();
+
+      buffer_add_str(dup_sql, "SELECT count(*) FROM \"");
+      buffer_copy(dup_sql, ows_psql_schema_name(o, layer_name));
+      buffer_add_str(dup_sql, "\".\"");
+      buffer_copy(dup_sql, ows_psql_table_name(o, layer_name));
+      buffer_add_str(dup_sql, "\" WHERE ");
+      buffer_copy(dup_sql, id_column);
+      buffer_add_str(dup_sql, "='");
+      escaped = ows_psql_escape_string(o, id->buf);
+      if (escaped) {
+        buffer_add_str(dup_sql, escaped);
+        free(escaped);
+      }
+      buffer_add_str(dup_sql, "';");
+
+      res = ows_psql_exec(o, dup_sql->buf);
+      if (PQresultStatus(res) != PGRES_TUPLES_OK || atoi((char *) PQgetvalue(res, 0, 0)) != 0)
+        idgen = WFS_GENERATE_NEW;
+      else
+        idgen = WFS_USE_EXISTING;
+
+      buffer_free(dup_sql);
+      PQclear(res);
+    }
 
-        node = n->children;
+    if (idgen == WFS_GENERATE_NEW) {
+      buffer_free(id);
+      id = ows_psql_generate_id(o, layer_name);
+    }
 
-        /* Jump to the next element if spaces */
-        while (node->type != XML_ELEMENT_NODE) node = node->next;
+    /* Retrieve the id of the inserted feature
+     * to report it in transaction respons
+     */
+    fid_full_name = buffer_init();
+    buffer_add_str(fid_full_name, (char *) n->name);
+    buffer_add(fid_full_name, '.');
+    buffer_copy(fid_full_name, id);
+    alist_add(wr->insert_results, handle, fid_full_name);
+
+    buffer_add_str(sql, "INSERT INTO \"");
+    buffer_copy(sql, ows_psql_schema_name(o, layer_name));
+    buffer_add_str(sql, "\".\"");
+    buffer_copy(sql, ows_psql_table_name(o, layer_name));
+    buffer_add_str(sql, "\" (\"");
+    buffer_copy(sql, id_column);
+    buffer_add_str(sql, "\"");
 
-        /* Fill SQL fields and values at once */
-        for ( /* empty */ ; node; node = node->next) {
-            if (node->type == XML_ELEMENT_NODE && 
-                 ( buffer_cmp(ows_layer_ns_uri(o->layers, layer_ns_prefix), (char *) node->ns->href)
-                   || !strcmp("http://www.opengis.net/gml",     (char *) node->ns->href)
-                   || !strcmp("http://www.opengis.net/gml/3.2", (char *) node->ns->href))) {
-
-		  /* We have to ignore if not present in database, 
-                     gml elements (name, description, boundedBy) */
-                  if (    !strcmp("http://www.opengis.net/gml",     (char *) node->ns->href)
-                       || !strcmp("http://www.opengis.net/gml/3.2", (char *) node->ns->href)) {
-		      table = ows_psql_describe_table(o, layer_name);
-		      if (!array_is_key(table, (char *) node->name)) continue;
-		  }
-                buffer_add(sql, ',');
-                buffer_add(values, ',');
-
-                column = buffer_from_str((char *) node->name);
-
-                buffer_add_str(sql, "\"");
-                escaped = ows_psql_escape_string(o, column->buf);
-                if (escaped) {
-                    buffer_add_str(sql, escaped);
-                    free(escaped);
-                }
-                buffer_add_str(sql, "\"");
-
-                /* If column's type is a geometry, transform the GML into WKT */
-                if (ows_psql_is_geometry_column(o, layer_name, column)) {
-                    elemt = node->children;
-
-                    /* Jump to the next element if spaces */
-                    while (elemt->type != XML_ELEMENT_NODE) elemt = elemt->next;
-
-                    if (!strcmp((char *) elemt->name, "Box") ||
-                        !strcmp((char *) elemt->name, "Envelope")) {
-
-                        fe = filter_encoding_init();
-                        fe->sql = fe_envelope(o, layer_name, fe, fe->sql, elemt);
-			if (fe->error_code != FE_NO_ERROR) {
-				result = fill_fe_error(o, fe);
-             			buffer_free(sql);
-             		        buffer_free(handle);
-            		 	buffer_free(values);
-                            	buffer_free(column);
-                            	buffer_free(id);
-             			buffer_free(layer_name);
-                        	filter_encoding_free(fe);
-				return result;
-			}
-                        buffer_copy(values, fe->sql);
-                        filter_encoding_free(fe);
-
-                    } else if (!strcmp((char *) elemt->name, "Null")) {
-                        buffer_add_str(values, "''");
-                    } else {
-                        gml = ows_psql_gml_to_sql(o, elemt, srid_root);
-                        if (gml) {
-                            buffer_add_str(values, "'");
-                            buffer_copy(values, gml);
-                            buffer_add_str(values, "'");
-                            buffer_free(gml);
-                        } else {
-                            buffer_free(sql);
-                            buffer_free(values);
-                            buffer_free(layer_name);
-                            buffer_free(column);
-                            buffer_free(id);
-
-                            result = buffer_from_str("Error invalid Geometry");
-                            return result;
-                        }
-                   }
-
-                } else values = wfs_retrieve_value(o, wr, values, xmldoc, node);
-
-                buffer_free(column);
-            }
+    node = n->children;
+
+    /* Jump to the next element if spaces */
+    while (node->type != XML_ELEMENT_NODE) node = node->next;
+
+    /* Fill SQL fields and values at once */
+    for ( /* empty */ ; node; node = node->next) {
+
+
+      if (node->type == XML_ELEMENT_NODE &&
+          ( buffer_cmp(ows_layer_ns_uri(o->layers, layer_name), (char *) node->ns->href)
+            || !strcmp("http://www.opengis.net/gml",     (char *) node->ns->href)
+            || !strcmp("http://www.opengis.net/gml/3.2", (char *) node->ns->href))) {
+
+        /* We have to ignore if not present in database,
+                       gml elements (name, description, boundedBy) */
+        if (    !strcmp("http://www.opengis.net/gml",     (char *) node->ns->href)
+             || !strcmp("http://www.opengis.net/gml/3.2", (char *) node->ns->href)) {
+          table = ows_psql_describe_table(o, layer_name);
+          if (!array_is_key(table, (char *) node->name)) continue;
         }
+        buffer_add(sql, ',');
+        buffer_add(values, ',');
 
-        /* As 'id' could be NULL in GML */
-        if (id->use) {  
-            buffer_add_str(sql, ") VALUES ('");
-            escaped = ows_psql_escape_string(o, id->buf);
-            if (escaped) {
-                buffer_add_str(sql, escaped);
-                free(escaped);
-            }
-            buffer_add_str(sql, "'");
-        } else buffer_add_str(sql, ") VALUES (null");
-
-        buffer_copy(sql, values);
-        buffer_add_str(sql, ") ");
-
-        buffer_free(values);
-        buffer_free(layer_name);
-        buffer_free(id);
-
-        /* Run the request to insert each feature */
-        if(result) buffer_free(result);
-        result = wfs_execute_transaction_request(o, wr, sql);
-        if (!buffer_cmp(result, "PGRES_COMMAND_OK")) {
-             buffer_free(sql);
-             return result;
+        column = buffer_from_str((char *) node->name);
+
+        buffer_add_str(sql, "\"");
+        escaped = ows_psql_escape_string(o, column->buf);
+        if (escaped) {
+          buffer_add_str(sql, escaped);
+          free(escaped);
         }
-        buffer_empty(sql);
+        buffer_add_str(sql, "\"");
+
+        /* If column's type is a geometry, transform the GML into WKT */
+        if (ows_psql_is_geometry_column(o, layer_name, column)) {
+          elemt = node->children;
+
+          /* Jump to the next element if spaces */
+          while (elemt->type != XML_ELEMENT_NODE) elemt = elemt->next;
+
+          if (!strcmp((char *) elemt->name, "Box") ||
+              !strcmp((char *) elemt->name, "Envelope")) {
+
+            fe = filter_encoding_init();
+            fe->sql = fe_envelope(o, layer_name, fe, fe->sql, elemt);
+            if (fe->error_code != FE_NO_ERROR) {
+              result = fill_fe_error(o, fe);
+              buffer_free(sql);
+              buffer_free(values);
+              buffer_free(column);
+              buffer_free(id);
+              filter_encoding_free(fe);
+              return result;
+            }
+            buffer_copy(values, fe->sql);
+            filter_encoding_free(fe);
+
+          } else if (!strcmp((char *) elemt->name, "Null")) {
+            buffer_add_str(values, "''");
+          } else {
+            gml = ows_psql_gml_to_sql(o, elemt, srid_root);
+            if (gml) {
+              buffer_add_str(values, "'");
+              buffer_copy(values, gml);
+              buffer_add_str(values, "'");
+              buffer_free(gml);
+            } else {
+              buffer_free(sql);
+              buffer_free(values);
+              buffer_free(column);
+              buffer_free(id);
+              buffer_free(layer_name);
+
+              result = buffer_from_str("Error invalid Geometry");
+              return result;
+            }
+          }
+
+        } else values = wfs_retrieve_value(o, wr, values, xmldoc, node);
+
+        buffer_free(column);
+      }
     }
 
-    buffer_free(sql);
+    /* As 'id' could be NULL in GML */
+    if (id->use) {
+      buffer_add_str(sql, ") VALUES ('");
+      escaped = ows_psql_escape_string(o, id->buf);
+      if (escaped) {
+        buffer_add_str(sql, escaped);
+        free(escaped);
+      }
+      buffer_add_str(sql, "'");
+    } else buffer_add_str(sql, ") VALUES (null");
+
+    buffer_copy(sql, values);
+    buffer_add_str(sql, ") ");
+
+    buffer_free(values);
+    buffer_free(id);
+
+    /* Run the request to insert each feature */
+    if(result) buffer_free(result);
+    result = wfs_execute_transaction_request(o, wr, sql);
+    if (!buffer_cmp(result, "PGRES_COMMAND_OK")) {
+      buffer_free(sql);
+      return result;
+    }
+    buffer_empty(sql);
+    buffer_free(layer_name);
+  }
 
-    return result;
+  buffer_free(sql);
+
+  return result;
 }
 
 
@@ -618,115 +627,111 @@ static buffer *wfs_insert_xml(ows * o, wfs_request * wr, xmlDocPtr xmldoc, xmlNo
  */
 void wfs_delete(ows * o, wfs_request * wr)
 {
-    buffer *sql, *result, *where, *layer_name, *locator;
-    int cpt, size;
-    mlist_node *mln_fid;
-    list_node *ln, *ln_typename, *ln_filter;
-    list *fe;
-    filter_encoding *filter;
-
-    assert(o);
-    assert(wr);
-
-    sql = buffer_init();
-    ln = NULL;
-    ln_typename = NULL;
-    ln_filter = NULL;
-    mln_fid = NULL;
-    where = NULL;
-    size = 0;
-
-    if (wr->typename) {
-        size = wr->typename->size;
-        ln_typename = wr->typename->first;
-    }
-
-    if (wr->filter) ln_filter = wr->filter->first;
-    if (wr->featureid) {
-        size = wr->featureid->size;
-        mln_fid = wr->featureid->first;
+  buffer *sql, *result, *where, *layer_name, *locator;
+  int cpt, size;
+  mlist_node *mln_fid;
+  list_node *ln_typename, *ln_filter;
+  list *fe;
+  filter_encoding *filter;
+
+  assert(o);
+  assert(wr);
+
+  sql = buffer_init();
+  ln_typename = NULL;
+  ln_filter = NULL;
+  mln_fid = NULL;
+  where = NULL;
+  size = 0;
+
+  if (wr->typename) {
+    size = wr->typename->size;
+    ln_typename = wr->typename->first;
+  }
+
+  if (wr->filter) ln_filter = wr->filter->first;
+  if (wr->featureid) {
+    size = wr->featureid->size;
+    mln_fid = wr->featureid->first;
+  }
+
+  /* delete elements layer by layer */
+  for (cpt = 0; cpt < size; cpt++) {
+    /* define a layer_name which match typename or featureid */
+    layer_name = buffer_init();
+
+    if (wr->typename) buffer_copy(layer_name, ln_typename->value);
+    else {
+      fe = list_explode('.', mln_fid->value->first->value);
+      buffer_copy(layer_name, fe->first->value);
+      list_free(fe);
     }
 
-    /* delete elements layer by layer */
-    for (cpt = 0; cpt < size; cpt++) {
-        /* define a layer_name which match typename or featureid */
-        layer_name = buffer_init();
+    /* FROM */
+    buffer_add_str(sql, "DELETE FROM \"");
+    buffer_copy(sql, ows_psql_schema_name(o, layer_name));
+    buffer_add_str(sql, "\".\"");
+    buffer_copy(sql, ows_psql_table_name(o, layer_name));
+    buffer_add_str(sql, "\" ");
 
-        if (wr->typename) buffer_copy(layer_name, ln_typename->value);
-        else {
-            fe = list_explode('.', mln_fid->value->first->value);
-            buffer_copy(layer_name, fe->first->value);
-            list_free(fe);
-        }
+    /* WHERE : match featureid, bbox or filter */
 
-        /* FROM */
-        buffer_add_str(sql, "DELETE FROM ");
-        buffer_copy(sql, ows_psql_schema_name(o, layer_name));
-        buffer_add_str(sql, ".\"");
-        buffer_copy(sql, ows_psql_table_name(o, layer_name));
-        buffer_add_str(sql, "\" ");
-
-        /* WHERE : match featureid, bbox or filter */
+    /* FeatureId */
+    if (wr->featureid) {
+      where = fe_kvp_featureid(o, wr, layer_name, mln_fid->value);
 
-        /* FeatureId */
-        if (wr->featureid) {
-            where = fe_kvp_featureid(o, wr, layer_name, mln_fid->value);
+      if (!where->use) {
+        buffer_free(where);
+        buffer_free(sql);
+        wfs_error(o, wr, WFS_ERROR_NO_MATCHING, "error : an id_column is required to use featureid", "Delete");
+        return;
+      }
+    }
+    /* BBOX */
+    else if (wr->bbox) where = fe_kvp_bbox(o, wr, layer_name, wr->bbox);
 
-            if (!where->use) {
-                buffer_free(where);
-                buffer_free(sql);
-                buffer_free(layer_name);
-                wfs_error(o, wr, WFS_ERROR_NO_MATCHING, "error : an id_column is required to use featureid", "Delete");
-                return;
-            }
-        }
-        /* BBOX */
-        else if (wr->bbox) where = fe_kvp_bbox(o, wr, layer_name, wr->bbox);
-
-        /* Filter */
-        else {
-            if (ln_filter->value->use) {
-                where = buffer_init();
-                buffer_add_str(where, " WHERE ");
-                filter = filter_encoding_init();
-                filter = fe_filter(o, filter, layer_name, ln_filter->value);
-
-                if (filter->error_code != FE_NO_ERROR) {
-                    buffer_free(where);
-                    buffer_free(sql);
-                    buffer_free(layer_name);
-                    fe_error(o, filter);
-                    return;
-                }
-
-                buffer_copy(where, filter->sql);
-                filter_encoding_free(filter);
-            }
+    /* Filter */
+    else {
+      if (ln_filter->value->use) {
+        where = buffer_init();
+        buffer_add_str(where, " WHERE ");
+        filter = filter_encoding_init();
+        filter = fe_filter(o, filter, layer_name, ln_filter->value);
+
+        if (filter->error_code != FE_NO_ERROR) {
+          buffer_free(where);
+          buffer_free(sql);
+          fe_error(o, filter);
+          return;
         }
 
-        buffer_copy(sql, where);
-        buffer_add_str(sql, "; ");
-        buffer_free(where);
-        buffer_free(layer_name);
-
-        /*incrementation of the nodes */
-        if (wr->featureid) mln_fid = mln_fid->next;
-        if (wr->typename)  ln_typename = ln_typename->next;
-        if (wr->filter)    ln_filter = ln_filter->next;
+        buffer_copy(where, filter->sql);
+        filter_encoding_free(filter);
+      }
     }
 
-    result = wfs_execute_transaction_request(o, wr, sql);
+    buffer_copy(sql, where);
+    buffer_add_str(sql, "; ");
+    buffer_free(where);
 
-    locator = buffer_init();
-    buffer_add_str(locator, "Delete");
+    /*incrementation of the nodes */
+    if (wr->featureid) mln_fid = mln_fid->next;
+    if (wr->typename)  ln_typename = ln_typename->next;
+    if (wr->filter)    ln_filter = ln_filter->next;
+  }
 
-    /* display the transaction response directly since
-       there is only one operation using GET method */
-    wfs_transaction_response(o, wr, result, locator);
+  result = wfs_execute_transaction_request(o, wr, sql);
 
-    buffer_free(locator);
-    buffer_free(result);
-    buffer_free(sql);
+  locator = buffer_init();
+  buffer_add_str(locator, "Delete");
+
+  /* display the transaction response directly since
+     there is only one operation using GET method */
+  wfs_transaction_response(o, wr, result, locator);
+
+  buffer_free(locator);
+  buffer_free(result);
+  buffer_free(sql);
 }
 
 
@@ -736,72 +741,74 @@ void wfs_delete(ows * o, wfs_request * wr)
  */
 static buffer *wfs_delete_xml(ows * o, wfs_request * wr, xmlNodePtr n)
 {
-    buffer *typename, *xmlstring, *result, *sql, *s, *t;
-    filter_encoding *filter;
+  buffer *typename, *layer_name, *xmlstring, *result, *sql, *s, *t;
+  filter_encoding *filter;
 
-    assert(o);
-    assert(wr);
-    assert(n);
+  assert(o);
+  assert(wr);
+  assert(n);
 
-    sql = buffer_init();
-    s = t = NULL;
+  sql = buffer_init();
+  s = t = NULL;
 
-    buffer_add_str(sql, "DELETE FROM ");
+  buffer_add_str(sql, "DELETE FROM ");
 
-    /*retrieve the name of the table in which features must be deleted */
-    typename = wfs_retrieve_typename(o, wr, n);
-    if (typename) s = ows_psql_schema_name(o, typename);
-    if (typename) t = ows_psql_table_name(o, typename);
+  /*retrieve the name of the table in which features must be deleted */
+  typename = wfs_retrieve_typename(o, wr, n);
+  layer_name = ows_layer_prefix_to_uri(o->layers, typename);
+  if (layer_name) s = ows_psql_schema_name(o, layer_name);
+  if (layer_name) t = ows_psql_table_name(o, layer_name);
 
-    if (!typename || !s || !t) {
-        if (typename) buffer_free(typename);
-        buffer_free(sql);
-        result = buffer_from_str("Typename provided is unknown or not writable");
-
-	return result;
-    }
-
-    buffer_copy(sql, s);
-    buffer_add_str(sql, ".\"");
-    buffer_copy(sql, t);
-    buffer_add_str(sql, "\"");
-
-    n = n->children;
-    if (!n) {
-        buffer_free(typename);
-        buffer_free(sql);
-        result = buffer_init();
-        buffer_add_str(result, "No FE selector on DELETE statement");
-        return result;
-    }
-
-    /* jump to the next element if there are spaces */
-    while (n->type != XML_ELEMENT_NODE) n = n->next;
-    buffer_add_str(sql, " WHERE ");
-
-    /* put xml filter into a buffer */
-    xmlstring = buffer_init();
-    xmlstring = cgi_add_xml_into_buffer(xmlstring, n);
+  if (!layer_name || !s || !t) {
+    if (typename) buffer_free(typename);
+    buffer_free(sql);
+    result = buffer_from_str("Typename provided is unknown or not writable");
 
-    filter = filter_encoding_init();
-    filter = fe_filter(o, filter, typename, xmlstring);
+    return result;
+  }
 
-    /* check if filter returned an error */
-    if (filter->error_code != FE_NO_ERROR)
-        result = fill_fe_error(o, filter);
-    else {
-        buffer_copy(sql, filter->sql);
-        buffer_add_str(sql, ";");
-        /* run the SQL request to delete all specified features */
-        result = wfs_execute_transaction_request(o, wr, sql);
-    }
+  buffer_add_str(sql, "\"");
+  buffer_copy(sql, s);
+  buffer_add_str(sql, "\".\"");
+  buffer_copy(sql, t);
+  buffer_add_str(sql, "\"");
 
-    filter_encoding_free(filter);
-    buffer_free(xmlstring);
+  n = n->children;
+  if (!n) {
     buffer_free(typename);
     buffer_free(sql);
-
+    result = buffer_init();
+    buffer_add_str(result, "No FE selector on DELETE statement");
     return result;
+  }
+
+  /* jump to the next element if there are spaces */
+  while (n->type != XML_ELEMENT_NODE) n = n->next;
+  buffer_add_str(sql, " WHERE ");
+
+  /* put xml filter into a buffer */
+  xmlstring = buffer_init();
+  xmlstring = cgi_add_xml_into_buffer(xmlstring, n);
+
+  filter = filter_encoding_init();
+  filter = fe_filter(o, filter, typename, xmlstring);
+
+  /* check if filter returned an error */
+  if (filter->error_code != FE_NO_ERROR)
+    result = fill_fe_error(o, filter);
+  else {
+    buffer_copy(sql, filter->sql);
+    buffer_add_str(sql, ";");
+    /* run the SQL request to delete all specified features */
+    result = wfs_execute_transaction_request(o, wr, sql);
+  }
+
+  filter_encoding_free(filter);
+  buffer_free(xmlstring);
+  buffer_free(typename);
+  buffer_free(sql);
+
+  return result;
 }
 
 
@@ -811,206 +818,212 @@ static buffer *wfs_delete_xml(ows * o, wfs_request * wr, xmlNodePtr n)
  */
 static buffer *wfs_update_xml(ows * o, wfs_request * wr, xmlDocPtr xmldoc, xmlNodePtr n)
 {
-    buffer *typename, *xmlstring, *result, *sql, *property_name, *values, *gml, *s, *t;
-    filter_encoding *filter, *fe;
-    xmlNodePtr node, elemt;
-    xmlChar *content;
-    char *escaped;
-    array *table;
-    ows_srs *srs_root;
-    int srid_root = 0;
-    xmlChar *attr = NULL;
-
-    assert(o);
-    assert(wr);
-    assert(xmldoc);
-    assert(n);
-
-    sql = buffer_init();
-    content = NULL;
-    s = t = result = NULL;
-
-    /*
-     * In WFS 1.1.0 default srsName could be define  
-     * TODO: what about for WFS 1.0.0 ?
-     */
-    if (xmlHasProp(n, (xmlChar *) "srsName")) {
-        attr =  xmlGetProp(n, (xmlChar *) "srsName");
-        srs_root = ows_srs_init();
-
-        if (!ows_srs_set_from_srsname(o, srs_root, (char *) attr)) {
-       	     ows_srs_free(srs_root);
-       	     xmlFree(attr);
-             buffer_add_str(result, "Unkwnown or wrong CRS used");
-             return result;
-	}
-	
-        srid_root = srs_root->srid;
-        ows_srs_free(srs_root);
-        xmlFree(attr);
-        attr = NULL;
+  buffer *typename, *layer_name, *xmlstring, *result, *sql, *property_name, *values, *gml, *s, *t;
+  filter_encoding *filter, *fe;
+  xmlNodePtr node, elemt;
+  xmlChar *content;
+  char *escaped;
+  array *table;
+  ows_srs *srs_root;
+  int srid_root = 0;
+  xmlChar *attr = NULL;
+  list *l;
+
+  assert(o);
+  assert(wr);
+  assert(xmldoc);
+  assert(n);
+
+  sql = buffer_init();
+  content = NULL;
+  s = t = result = layer_name = NULL;
+
+  /*
+   * In WFS 1.1.0 default srsName could be define
+   * FIXME: what about for WFS 1.0.0 ?
+   */
+  if (xmlHasProp(n, (xmlChar *) "srsName")) {
+    attr =  xmlGetProp(n, (xmlChar *) "srsName");
+    srs_root = ows_srs_init();
+
+    if (!ows_srs_set_from_srsname(o, srs_root, (char *) attr)) {
+      ows_srs_free(srs_root);
+      xmlFree(attr);
+      buffer_add_str(result, "Unkwnown or wrong CRS used");
+      return result;
     }
 
-    buffer_add_str(sql, "UPDATE ");
+    srid_root = srs_root->srid;
+    ows_srs_free(srs_root);
+    xmlFree(attr);
+    attr = NULL;
+  }
 
-    /*retrieve the name of the table in which features must be updated */
-    typename = wfs_retrieve_typename(o, wr, n);
-    if (typename) s = ows_psql_schema_name(o, typename);
-    if (typename) t = ows_psql_table_name(o, typename);
+  buffer_add_str(sql, "UPDATE ");
 
-    if (!typename || !s || !t) {
-        if (typename) buffer_free(typename);
-        buffer_free(sql);
-        result = buffer_from_str("Typename provided is unknown or not writable");
-	return result;
-    }
+  /*retrieve the name of the table in which features must be updated */
+  typename = wfs_retrieve_typename(o, wr, n);
+  if (typename) layer_name = ows_layer_prefix_to_uri(o->layers, typename);
+  if (layer_name) s = ows_psql_schema_name(o, layer_name);
+  if (layer_name) t = ows_psql_table_name(o, layer_name);
 
-    buffer_copy(sql, s);
-    buffer_add_str(sql, ".\"");
-    buffer_copy(sql, t);
-    buffer_add_str(sql, "\"");
+  if (!layer_name || !s || !t) {
+    if (typename) buffer_free(typename);
+    buffer_free(sql);
+    result = buffer_from_str("Typename provided is unknown or not writable");
+    return result;
+  }
+
+  buffer_add_str(sql, "\"");
+  buffer_copy(sql, s);
+  buffer_add_str(sql, "\".\"");
+  buffer_copy(sql, t);
+  buffer_add_str(sql, "\"");
+
+  n = n->children;
+
+  /* jump to the next element if there are spaces */
+  while (n->type != XML_ELEMENT_NODE) n = n->next;
 
-    n = n->children;
-
-    /* jump to the next element if there are spaces */
-    while (n->type != XML_ELEMENT_NODE) n = n->next;
-
-    buffer_add_str(sql, " SET ");
-
-    /* write the fields and the new values of the features to update */
-    for (; n; n = n->next) {
-        values = buffer_init();
-
-        if (n->type == XML_ELEMENT_NODE) {
-            if (!strcmp((char *) n->name, "Property")) {
-                node = n->children;
-
-                while (node->type != XML_ELEMENT_NODE) node = node->next;
-
-                /* We have to ignore if not present in database, 
-                   gml elements (name, description, boundedBy) */
-                if (    !strcmp("http://www.opengis.net/gml", (char *) node->ns->href)
-                     || !strcmp("http://www.opengis.net/gml/3.2", (char *) node->ns->href)) {
-		      table = ows_psql_describe_table(o, typename);
-		      if (!array_is_key(table, (char *) node->name)) continue;
-		}
-
-                property_name = buffer_init();
-
-                /* property name to update */
-                if (!strcmp((char *) node->name, "Name")) {
-                    content = xmlNodeGetContent(node);
-                    buffer_add_str(property_name, (char *) content);
-                    xmlFree(content);
-                    wfs_request_remove_namespaces(o, property_name);
-                    buffer_add_str(sql, "\"");
-                    escaped = ows_psql_escape_string(o, property_name->buf);
-                    if (escaped) {
-                        buffer_add_str(sql, escaped);
-                        free(escaped);
-                    }
-                    buffer_add_str(sql, "\"");
-                }
-
-                buffer_add_str(sql, " = ");
-                node = node->next;
-
-                /* jump to the next element if there are spaces */
-                if (node && node->type != XML_ELEMENT_NODE) node = node->next;
-
-                /* replacement value is optional, set to NULL if not defined */
-                if (!node) buffer_add_str(sql, "NULL");
-                else if (!strcmp((char *) node->name, "Value")) {
-                    if (ows_psql_is_geometry_column(o, typename, property_name)) {
-                        elemt = node->children;
-
-                        /* jump to the next element if there are spaces */
-                        while (elemt->type != XML_ELEMENT_NODE) elemt = elemt->next;
-
-                        if (!strcmp((char *) elemt->name, "Box") ||
-			    !strcmp((char *) elemt->name, "Envelope")) {
-
-                            fe = filter_encoding_init();
-                            fe->sql = buffer_init();
-                            fe->sql = fe_envelope(o, typename, fe, fe->sql, elemt);
-
-                	    if (fe->error_code != FE_NO_ERROR) {
-                    		result = fill_fe_error(o, fe);
-                   		buffer_free(values);
-                   		buffer_free(sql);
-                   		buffer_free(typename);
-                		buffer_free(property_name);
-                            	filter_encoding_free(fe);
-                    		return result;
-               		    }
-
-                            filter_encoding_free(fe);
-                            buffer_copy(values, fe->sql);
-
-                        } else if (!strcmp((char *) elemt->name, "Null")) {
-                            buffer_add_str(values, "''");
-                        } else {
-                            gml = ows_psql_gml_to_sql(o, elemt, srid_root);
-                            if (gml) {
-                                buffer_add_str(values, "'");
-                                buffer_copy(values, gml);
-                                buffer_add_str(values, "'");
-                                buffer_free(gml);
-                            } else {
-                   		buffer_free(values);
-                   		buffer_free(typename);
-                		buffer_free(property_name);
-                   		buffer_free(sql);
-                    		result = buffer_from_str("Invalid GML Geometry");
-				return result;
-                            }
-			}
-                    } else values = wfs_retrieve_value(o, wr, values, xmldoc, node);
-
-                    buffer_copy(sql, values);
-                }
+  buffer_add_str(sql, " SET ");
+
+  /* write the fields and the new values of the features to update */
+  for (; n; n = n->next) {
+    values = buffer_init();
+
+    if (n->type == XML_ELEMENT_NODE) {
+      if (!strcmp((char *) n->name, "Property")) {
+        node = n->children;
+
+        while (node->type != XML_ELEMENT_NODE) node = node->next;
+
+        /* We have to ignore if not present in database,
+           gml elements (name, description, boundedBy) */
+        if (    !strcmp("http://www.opengis.net/gml", (char *) node->ns->href)
+             || !strcmp("http://www.opengis.net/gml/3.2", (char *) node->ns->href)) {
+          table = ows_psql_describe_table(o, layer_name);
+          if (!array_is_key(table, (char *) node->name)) continue;
+        }
+
+        property_name = buffer_init();
+
+        /* property name to update */
+        if (!strcmp((char *) node->name, "Name")) {
+          content = xmlNodeGetContent(node);
+          buffer_add_str(property_name, (char *) content);
+          xmlFree(content);
+          buffer_add_str(sql, "\"");
+          l = list_init();
+          list_add_by_copy(l, layer_name);
+          property_name =  wfs_request_remove_prop_ns_prefix(o, property_name, l);
+          list_free(l);
+          escaped = ows_psql_escape_string(o, property_name->buf);
+          if (escaped) {
+            buffer_add_str(sql, escaped);
+            free(escaped);
+          }
+          buffer_add_str(sql, "\"");
+        }
+
+        buffer_add_str(sql, " = ");
+        node = node->next;
+
+        /* jump to the next element if there are spaces */
+        if (node && node->type != XML_ELEMENT_NODE) node = node->next;
+
+        /* replacement value is optional, set to NULL if not defined */
+        if (!node) buffer_add_str(sql, "NULL");
+        else if (!strcmp((char *) node->name, "Value")) {
+          if (ows_psql_is_geometry_column(o, layer_name, property_name)) {
+            elemt = node->children;
+
+            /* jump to the next element if there are spaces */
+            while (elemt->type != XML_ELEMENT_NODE) elemt = elemt->next;
+
+            if (!strcmp((char *) elemt->name, "Box") ||
+                !strcmp((char *) elemt->name, "Envelope")) {
+
+              fe = filter_encoding_init();
+              fe->sql = buffer_init();
+              fe->sql = fe_envelope(o, typename, fe, fe->sql, elemt);
+
+              if (fe->error_code != FE_NO_ERROR) {
+                result = fill_fe_error(o, fe);
+                buffer_free(values);
+                buffer_free(sql);
+                buffer_free(typename);
                 buffer_free(property_name);
-            }
+                filter_encoding_free(fe);
+                return result;
+              }
+
+              filter_encoding_free(fe);
+              buffer_copy(values, fe->sql);
 
-            if (!strcmp((char *) n->name, "Filter")) {
-                buffer_add_str(sql, " WHERE ");
-                xmlstring = buffer_init();
-                xmlstring = cgi_add_xml_into_buffer(xmlstring, n);
-
-                filter = filter_encoding_init();
-                filter = fe_filter(o, filter, typename, xmlstring);
-
-                /* check if filter returned an error */
-                if (filter->error_code != FE_NO_ERROR) {
-                    result = fill_fe_error(o, filter);
-                    buffer_free(xmlstring);
-                    filter_encoding_free(filter);
-                    buffer_free(values);
-                    buffer_free(sql);
-                    buffer_free(typename);
-                    return result;
-
-                } else {
-                    buffer_copy(sql, filter->sql);
-                    buffer_free(xmlstring);
-                    filter_encoding_free(filter);
-                }
+            } else if (!strcmp((char *) elemt->name, "Null")) {
+              buffer_add_str(values, "''");
+            } else {
+              gml = ows_psql_gml_to_sql(o, elemt, srid_root);
+              if (gml) {
+                buffer_add_str(values, "'");
+                buffer_copy(values, gml);
+                buffer_add_str(values, "'");
+                buffer_free(gml);
+              } else {
+                buffer_free(values);
+                buffer_free(typename);
+                buffer_free(property_name);
+                buffer_free(sql);
+                result = buffer_from_str("Invalid GML Geometry");
+                return result;
+              }
             }
+          } else values = wfs_retrieve_value(o, wr, values, xmldoc, node);
+
+          buffer_copy(sql, values);
+        }
+        buffer_free(property_name);
+      }
+
+      if (!strcmp((char *) n->name, "Filter")) {
+        buffer_add_str(sql, " WHERE ");
+        xmlstring = buffer_init();
+        xmlstring = cgi_add_xml_into_buffer(xmlstring, n);
+
+        filter = filter_encoding_init();
+        filter = fe_filter(o, filter, typename, xmlstring);
+
+        /* check if filter returned an error */
+        if (filter->error_code != FE_NO_ERROR) {
+          result = fill_fe_error(o, filter);
+          buffer_free(xmlstring);
+          filter_encoding_free(filter);
+          buffer_free(values);
+          buffer_free(sql);
+          buffer_free(typename);
+          return result;
+
+        } else {
+          buffer_copy(sql, filter->sql);
+          buffer_free(xmlstring);
+          filter_encoding_free(filter);
         }
+      }
+    }
 
-        if (n->next && !strcmp((char *) n->next->name, "Property")) buffer_add_str(sql, ",");
+    if (n->next && !strcmp((char *) n->next->name, "Property")) buffer_add_str(sql, ",");
 
-        buffer_free(values);
-    }
+    buffer_free(values);
+  }
 
-    buffer_add_str(sql, "; ");
-    /* run the request to update the specified features */
-    result = wfs_execute_transaction_request(o, wr, sql);
+  buffer_add_str(sql, "; ");
+  /* run the request to update the specified features */
+  result = wfs_execute_transaction_request(o, wr, sql);
 
-    buffer_free(typename);
-    buffer_free(sql);
+  buffer_free(typename);
+  buffer_free(sql);
 
-    return result;
+  return result;
 }
 
 
@@ -1019,93 +1032,88 @@ static buffer *wfs_update_xml(ows * o, wfs_request * wr, xmlDocPtr xmldoc, xmlNo
  */
 void wfs_parse_operation(ows * o, wfs_request * wr, buffer * op)
 {
-    xmlDocPtr xmldoc;
-    xmlNodePtr n;
-    xmlAttr *att;
-    xmlChar *content;
+  xmlDocPtr xmldoc;
+  xmlNodePtr n;
+  xmlAttr *att;
+  xmlChar *content;
 
-    buffer *sql, *result, *end_transaction, *locator;
+  buffer *sql, *result, *end_transaction, *locator;
 
-    assert(o);
-    assert(wr);
-    assert(op);
+  assert(o);
+  assert(wr);
+  assert(op);
 
-    sql = buffer_init();
-    locator = buffer_init();
-    wr->insert_results = alist_init();
-    content = NULL;
+  sql = buffer_init();
+  locator = buffer_init();
+  wr->insert_results = alist_init();
+  content = NULL;
 
-    xmldoc = xmlParseMemory(op->buf, op->use);
+  xmldoc = xmlParseMemory(op->buf, op->use);
 
-    if (!xmldoc) {
-        xmlFreeDoc(xmldoc);
-        wfs_error(o, wr, WFS_ERROR_NO_MATCHING, "xml isn't valid", "transaction");
-        return;
+  if (!xmldoc) {
+    xmlFreeDoc(xmldoc);
+    wfs_error(o, wr, WFS_ERROR_NO_MATCHING, "xml isn't valid", "transaction");
+    return;
+  }
+
+  /* jump to the next element if there are spaces */
+  n = xmldoc->children;
+  while (n->type != XML_ELEMENT_NODE) n = n->next;
+  n = n->children;
+  while (n->type != XML_ELEMENT_NODE) n = n->next; /* FIXME really ? */
+
+  /* initialize the transaction inside postgresql */
+  buffer_add_str(sql, "BEGIN;");
+  result = wfs_execute_transaction_request(o, wr, sql);
+
+  buffer_empty(result);
+  buffer_add_str(result, "PGRES_COMMAND_OK");
+  buffer_empty(sql);
+
+  /* go through the operations while transaction is successful */
+  for ( /* empty */ ; n && (buffer_cmp(result, "PGRES_COMMAND_OK")) ; n = n->next) {
+    if (n->type != XML_ELEMENT_NODE) continue;
+
+    if (!strcmp((char *) n->name, "Insert")) {
+      buffer_free(result);
+      result = wfs_insert_xml(o, wr, xmldoc, n);
+    } else if (!strcmp((char *) n->name, "Delete")) {
+      buffer_free(result);
+      result = wfs_delete_xml(o, wr, n);
+    } else if (!strcmp((char *) n->name, "Update")) {
+      buffer_free(result);
+      result = wfs_update_xml(o, wr, xmldoc, n);
     }
 
-    /* jump to the next element if there are spaces */
-    n = xmldoc->children;
-    while (n->type != XML_ELEMENT_NODE) n = n->next;
-    n = n->children;
-    while (n->type != XML_ELEMENT_NODE) n = n->next; /* FIXME really ? */
-
-    /* initialize the transaction inside postgresql */
-    buffer_add_str(sql, "BEGIN;");
-    result = wfs_execute_transaction_request(o, wr, sql);
-
-    buffer_empty(result);
-    buffer_add_str(result, "PGRES_COMMAND_OK");
-    buffer_empty(sql);
-
-    /* go through the operations while transaction is successful */
-    for ( /* empty */ ; n && (buffer_cmp(result, "PGRES_COMMAND_OK")) ; n = n->next) {
-        if (n->type != XML_ELEMENT_NODE) continue;
-
-             if (!strcmp((char *) n->name, "Insert")) {
-            buffer_free(result);
-            result = wfs_insert_xml(o, wr, xmldoc, n);
-        } else if (!strcmp((char *) n->name, "Delete")) {
-            buffer_free(result);
-            result = wfs_delete_xml(o, wr, n);
-        } else if (!strcmp((char *) n->name, "Update")) {
-            buffer_free(result);
-            result = wfs_update_xml(o, wr, xmldoc, n);
-        }
-
-        /* fill locator only if transaction failed */
-        if (!buffer_cmp(result, "PGRES_COMMAND_OK")) {
-            /* fill locator with  handle attribute if specified
-               else with transaction name */
-            if (n->properties) {
-                att = n->properties;
-
-                if (!strcmp((char *) att->name, "handle")) {
-                    content = xmlNodeGetContent(att->children);
-                    buffer_add_str(locator, (char *) content);
-                    xmlFree(content);
-                } else buffer_add_str(locator, (char *) n->name);
-            } else     buffer_add_str(locator, (char *) n->name);
-        }
+    /* fill locator only if transaction failed */
+    if (!buffer_cmp(result, "PGRES_COMMAND_OK")) {
+      /* fill locator with  handle attribute if specified
+         else with transaction name */
+      if (n->properties) {
+        att = n->properties;
+
+        if (!strcmp((char *) att->name, "handle")) {
+          content = xmlNodeGetContent(att->children);
+          buffer_add_str(locator, (char *) content);
+          xmlFree(content);
+        } else buffer_add_str(locator, (char *) n->name);
+      } else     buffer_add_str(locator, (char *) n->name);
     }
+  }
 
-    /* end the transaction according to the result */
-    if (buffer_cmp(result, "PGRES_COMMAND_OK")) buffer_add_str(sql, "COMMIT;");
-    else                                        buffer_add_str(sql, "ROLLBACK;");
+  /* end the transaction according to the result */
+  if (buffer_cmp(result, "PGRES_COMMAND_OK")) buffer_add_str(sql, "COMMIT;");
+  else                                        buffer_add_str(sql, "ROLLBACK;");
 
-    end_transaction = wfs_execute_transaction_request(o, wr, sql);
-    buffer_free(end_transaction);
+  end_transaction = wfs_execute_transaction_request(o, wr, sql);
+  buffer_free(end_transaction);
 
-    /* display the xml transaction response */
-    wfs_transaction_response(o, wr, result, locator);
+  /* display the xml transaction response */
+  wfs_transaction_response(o, wr, result, locator);
 
-    buffer_free(sql);
-    buffer_free(result);
-    buffer_free(locator);
+  buffer_free(sql);
+  buffer_free(result);
+  buffer_free(locator);
 
-    xmlFreeDoc(xmldoc);
+  xmlFreeDoc(xmldoc);
 }
-
-
-/*
- * vim: expandtab sw=4 ts=4
- */
diff --git a/src/wms/wms_error.c b/src/wms/wms_error.c
deleted file mode 100644
index 6e270bc..0000000
--- a/src/wms/wms_error.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
-  Copyright (c) <2007-2009> <Barbara Philippot - Olivier Courtin>
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy
-  of this software and associated documentation files (the "Software"), to deal
-  in the Software without restriction, including without limitation the rights
-  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-  copies of the Software, and to permit persons to whom the Software is
-  furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in
-  all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-  IN THE SOFTWARE.
-*/
-
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <assert.h>
-
-#include "../ows/ows.h"
-
-
-static char *wms_error_code_string(enum wms_error_code code)
-{
-    switch (code) {
-        case WMS_ERROR_INVALID_FORMAT:
-            return "InvalidFormat";
-        case WMS_ERROR_INVALID_CRS:
-            return "InvalidCRS";
-        case WMS_ERROR_LAYER_NOT_DEFINED:
-            return "LayerNotDefined";
-        case WMS_ERROR_STYLE_NOT_DEFINED:
-            return "StyleNotDefined";
-        case WMS_ERROR_LAYER_NOT_QUERYABLE:
-            return "LayerNotQueryable";
-        case WMS_ERROR_INVALID_POINT:
-            return "InvalidPoint";
-        case WMS_ERROR_CURRENT_UPDATE_SEQUENCE:
-            return "CurrentUpdateSequence";
-        case WMS_ERROR_INVALID_UPDATE_SEQUENCE:
-            return "InvalidUpdateSequence";
-        case WMS_ERROR_MISSING_DIMENSION_VALUE:
-            return "MissingDimensionValue";
-        case WMS_ERROR_INVALID_DIMENSION_VALUE:
-            return "InvalidDimensionValue";
-        case WMS_ERROR_OPERATION_NOT_SUPPORTED:
-            return "OperationNotSupported";
-        case WMS_ERROR_INVALID_VERSION:
-            return "InvalidVersion";
-        case WMS_ERROR_INVALID_BBOX:
-            return "InvalidBbox";
-        case WMS_ERROR_INVALID_WIDTH:
-            return "InvalidWidth";
-        case WMS_ERROR_INVALID_HEIGHT:
-            return "InvalidHeight";
-    }
-
-    return "";                  /* Only to avoid gcc warning */
-}
-
-
-/* TODO what about 1.1.1 exception ? */
-static void wms_error_xml(ows * o, enum wms_error_code code, char *message)
-{
-
-    fprintf(o->output, "<?xml version='1.0' encoding='UTF-8'?>\n");
-    fprintf(o->output, "<ServiceExceptionReport version='1.3.0'\n");
-    fprintf(o->output, " xmlns='http://www.opengis.net/ogc'\n");
-    fprintf(o->output,
-            " xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'\n");
-    fprintf(o->output, " xsi:schemaLocation='http://www.opengis.net/ogc");
-    printf
-    (" http://schemas.opengis.net/wms/1.3.0/exceptions_1_3_0.xsd'>\n");
-    fprintf(o->output,
-            " <ServiceException code='%s'>%s</ServiceException>\n",
-            wms_error_code_string(code), message);
-    fprintf(o->output, "</ServiceExceptionReport>\n");
-}
-
-
-static void wms_error_inimage(ows * o, wms_request * wr, char *message)
-{
-    /* TODO */
-}
-
-
-static void wms_error_blank(ows * o, wms_request * wr)
-{
-    /* TODO */
-}
-
-
-void wms_error(ows * o, wms_request * wr, enum wms_error_code code,
-               char *message)
-{
-    switch (wr->exception) {
-
-        case WMS_EXCEPTION_UNKNOWN:
-        case WMS_EXCEPTION_XML:
-            wms_error_xml(o, code, message);
-            break;
-        case WMS_EXCEPTION_INIMAGE:
-            wms_error_inimage(o, wr, message);
-            break;
-        case WMS_EXCEPTION_BLANK:
-            wms_error_blank(o, wr);
-            break;
-    }
-
-    wms_request_free(wr);
-    ows_free(o);
-
-    exit(EXIT_SUCCESS);
-}
-
-
-/*
- * vim: expandtab sw=4 ts=4
- */
diff --git a/src/wms/wms_get_capabilities.c b/src/wms/wms_get_capabilities.c
deleted file mode 100644
index 72d1907..0000000
--- a/src/wms/wms_get_capabilities.c
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
-  Copyright (c) <2007-2009> <Barbara Philippot - Olivier Courtin>
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy
-  of this software and associated documentation files (the "Software"), to deal
-  in the Software without restriction, including without limitation the rights
-  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-  copies of the Software, and to permit persons to whom the Software is
-  furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in
-  all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-  IN THE SOFTWARE.
-*/
-
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <assert.h>
-
-#include "../ows/ows.h"
-
-
-static void wms_get_capabilities_dcpt(const ows * o)
-{
-    fprintf(o->output, "    <DCPType>\n");
-    fprintf(o->output, "     <HTTP>\n");
-    fprintf(o->output, "      <Get>\n");
-    fprintf(o->output, "       <OnlineRessource>\n");
-    /* FIXME onlineressource */
-    fprintf(o->output, "       </OnlineRessource>\n");
-    fprintf(o->output, "      </Get>\n");
-    fprintf(o->output, "     </HTTP>\n");
-    fprintf(o->output, "    </DCPType>\n");
-}
-
-
-static void wms_get_capabilities_111(ows * o, const wms_request * wr)
-{
-}
-
-
-static void wms_get_capabilities_130(ows * o, const wms_request * wr)
-{
-    ows_layer_node *ln;
-    ows_bbox *bb;
-    list *srid = NULL;
-    list_node *lns;
-    int depth;
-    int i;
-    int s;
-
-    fprintf(o->output, "<WMS_Capabilities>\n");
-
-    fprintf(o->output, " <Service>\n");
-    fprintf(o->output, "  <Name>WMS</Name>\n");
-    /* FIXME Title, abstract, keywordlist, onlineresource */
-    /* FIXME Contactinforamtion, Fees, Accessconstraint */
-    fprintf(o->output, "  <LayerLimit>%i</LayerLimit>\n", o->max_layers);
-    fprintf(o->output, "  <MaxWidth>%i</MaxWidth>\n", o->max_width);
-    fprintf(o->output, "  <MaxHeight>%i</MaxHeight>\n", o->max_height);
-    fprintf(o->output, " </Service>\n");
-
-    fprintf(o->output, " <Capability>\n");
-    fprintf(o->output, "  <Request>\n");
-    fprintf(o->output, "   <GetCapabilities>\n");
-    fprintf(o->output, "    <Format>text/xml</Format>\n");
-    wms_get_capabilities_dcpt(o);
-    fprintf(o->output, "   </GetCapabilities>\n");
-    fprintf(o->output, "   <GetMap>\n");
-    fprintf(o->output, "    <Format>image/svg+xml</Format>\n");
-    wms_get_capabilities_dcpt(o);
-    fprintf(o->output, "   </GetMap>\n");
-    fprintf(o->output, "  </Request>\n");
-    fprintf(o->output, " </Capability>\n");
-
-    fprintf(o->output, " <Exception>\n");
-    fprintf(o->output, "  <Format>XML</Format>\n");
-    fprintf(o->output, "  <Format>INIMAGE</Format>\n");
-    fprintf(o->output, "  <Format>BLANK</Format>\n");
-    fprintf(o->output, " </Exception>\n");
-
-
-    for (depth = -1, ln = o->layers->first; ln != NULL; ln = ln->next) {
-
-        if (depth == ln->layer->depth) {
-            for (s = 0; s < ln->layer->depth; s++)
-                fprintf(o->output, " ");
-
-            fprintf(o->output, "</Layer>\n");
-        } else if (depth > ln->layer->depth) {
-            for (i = depth; i >= ln->layer->depth; i--) {
-                for (s = 0; s < i; s++)
-                    fprintf(o->output, " ");
-
-                fprintf(o->output, "</Layer>\n");
-            }
-        }
-
-        for (s = 0; s < ln->layer->depth; s++)
-            fprintf(o->output, " ");
-
-        fprintf(o->output, "<Layer");
-
-        if (ln->layer->queryable)
-            fprintf(o->output, " queryable='1'");
-
-        if (ln->layer->opaque)
-            fprintf(o->output, " opaque='1'");
-
-        /*TODO nosubset, fixedheight, fixedwidth, cascaded missing */
-        fprintf(o->output, ">\n");
-
-
-        if (ln->layer->title != NULL) {
-            for (s = 0; s < ln->layer->depth; s++)
-                fprintf(o->output, " ");
-
-            fprintf(o->output, " <title>");
-            buffer_flush(ln->layer->title, o->output);
-            fprintf(o->output, "</title>\n");
-        }
-
-        if (ln->layer->name != NULL) {
-            for (s = 0; s < ln->layer->depth; s++)
-                fprintf(o->output, " ");
-
-            fprintf(o->output, " <name>");
-            buffer_flush(ln->layer->name, o->output);
-            fprintf(o->output, "</name>\n");
-
-            if (ln->layer->geobbox == NULL)
-                ln->layer->geobbox =
-                    ows_geobbox_compute(o, ln->layer->name);
-
-            if (ln->layer->geobbox != NULL) {
-                for (s = 0; s < ln->layer->depth; s++)
-                    fprintf(o->output, " ");
-
-                fprintf(o->output, " <Ex_GeographicBoudingBox>\n");
-
-                for (s = 0; s < ln->layer->depth; s++)
-                    fprintf(o->output, " ");
-
-                fprintf(o->output,
-                        "  <westBoundLongitude>%f</westBoundLongitude>\n",
-                        ln->layer->geobbox->west);
-
-                for (s = 0; s < ln->layer->depth; s++)
-                    fprintf(o->output, " ");
-
-                fprintf(o->output,
-                        "  <eastBoundLongitude>%f</eastBoundLongitude>\n",
-                        ln->layer->geobbox->east);
-
-                for (s = 0; s < ln->layer->depth; s++)
-                    fprintf(o->output, " ");
-
-                fprintf(o->output,
-                        "  <southBoundLongitude>%f</southBoundLongitude>\n",
-                        ln->layer->geobbox->south);
-
-                for (s = 0; s < ln->layer->depth; s++)
-                    fprintf(o->output, " ");
-
-                fprintf(o->output,
-                        "  <northBoundLongitude>%f</northBoundLongitude>\n",
-                        ln->layer->geobbox->north);
-
-                for (s = 0; s < ln->layer->depth; s++)
-                    fprintf(o->output, " ");
-
-                fprintf(o->output, " </Ex_GeographicBoudingBox>\n");
-            }
-        }
-
-
-        if (ln->layer->srid != NULL) {
-            srid = ows_srs_get_from_srid(o, ln->layer->srid);
-
-            if (srid->first != NULL) {
-
-                for (lns = srid->first; lns != NULL; lns = lns->next) {
-                    for (s = 0; s < ln->layer->depth; s++)
-                        fprintf(o->output, " ");
-
-                    fprintf(o->output, " <CRS>");
-                    buffer_flush(lns->value, o->output);
-                    fprintf(o->output, "</CRS>\n");
-                }
-
-                if (ln->layer->geobbox != NULL) {
-                    bb = ows_bbox_init();
-                    ows_bbox_set_from_geobbox(o, bb, ln->layer->geobbox);
-
-                    for (lns = srid->first; lns != NULL; lns = lns->next) {
-                        for (s = 0; s < ln->layer->depth; s++)
-                            fprintf(o->output, " ");
-
-                        fprintf(o->output, " <BoundingBox CRS='");
-                        buffer_flush(lns->value, o->output);
-                        fprintf(o->output, "' minx='%f'", bb->xmin);
-                        fprintf(o->output, " miny='%f'", bb->ymin);
-                        fprintf(o->output, " maxx='%f'", bb->xmax);
-                        fprintf(o->output, " maxy='%f'", bb->ymax);
-                        /*TODO what about resx and resy ??? */
-                        fprintf(o->output, "/>\n");
-                    }
-
-                    ows_bbox_free(bb);
-                }
-
-            }
-
-            list_free(srid);
-        }
-
-        depth = ln->layer->depth;
-
-    }
-
-    for (i = depth; i > 0; i--) {
-        for (s = 0; s < i; s++)
-            fprintf(o->output, " ");
-
-        fprintf(o->output, "</Layer>\n");
-    }
-
-    fprintf(o->output, "</WMS_Capabilities>\n");
-
-}
-
-
-void wms_get_capabilities(ows * o, const wms_request * wr)
-{
-
-    int version;
-
-    version = ows_version_get(wr->version);
-
-    switch (version) {
-        case 111:
-            wms_get_capabilities_111(o, wr);
-            break;
-        case 130:
-            wms_get_capabilities_130(o, wr);
-            break;
-    }
-}
-
-
-/*
- * vim: expandtab sw=4 ts=4
- */
diff --git a/src/wms/wms_get_map.c b/src/wms/wms_get_map.c
deleted file mode 100644
index 28570f1..0000000
--- a/src/wms/wms_get_map.c
+++ /dev/null
@@ -1,117 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <assert.h>
-#include <string.h>
-#include <ctype.h>
-
-#include <libpq-fe.h>
-
-#include "../ows/ows.h"
-
-
-/*
-Copyright (c) <2007-2009> <Barbara Philippot - Olivier Courtin>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.
-*/
-
-
-/* problem with content type already defined */
-static void wms_svg_header(ows * o, wms_request * wr)
-{
-    fprintf(o->output, "Content-Type: image/svg+xml\n\n");
-    fprintf(o->output,
-            "<?xml version='1.0' encoding='utf-8' standalone='no'?>\n");
-    fprintf(o->output, "<svg xmlns:svg='http://www.w3.org/2000/svg'\n");
-    fprintf(o->output, "     xmlns='http://www.w3.org/2000/svg'\n");
-    fprintf(o->output, "     preserveAspectRatio='xMidYmid meet'\n");
-    fprintf(o->output,
-            "     width='%i' height='%i' viewBox='%f %f %f %f'>\n", wr->width,
-            wr->height, wr->bbox->xmin, wr->bbox->ymax * -1,
-            wr->bbox->xmax - wr->bbox->xmin, wr->bbox->ymax - wr->bbox->ymin);
-
-    if (wr->bgcolor != NULL)
-        fprintf
-        (o->output,
-         " <rect x='%f' y='%f' width='%f' height='%f' fill='#%s' />\n",
-         wr->bbox->xmin, wr->bbox->ymax * -1,
-         wr->bbox->xmax - wr->bbox->xmin,
-         wr->bbox->ymax - wr->bbox->ymin, wr->bgcolor->buf);
-}
-
-
-void wms_get_map(ows * o, wms_request * wr)
-{
-    PGresult *res;
-    list_node *ln;
-    int i;
-    buffer *sql;
-
-    wms_svg_header(o, wr);
-    sql = buffer_init();
-
-    for (ln = wr->layers->first; ln != NULL; ln = ln->next) {
-        fprintf(o->output, " <g fill='#00cc00'>\n");
-
-        /* transform() won't take time if uneeded... */
-        /* Simplify won't work well in 4326 what about snaptogrid ? */
-        buffer_add_str(sql, "SELECT assvg(simplify(transform(the_geom,");
-        buffer_add_int(sql, wr->srs->srid);
-        buffer_add_str(sql, "), 5), 1, 0) FROM ");
-
-        buffer_copy(sql, ln->value);
-        buffer_add_str(sql, " WHERE the_geom && BOX('");
-        buffer_add_double(sql, wr->bbox->xmin);
-        buffer_add(sql, ',');
-        buffer_add_double(sql, wr->bbox->ymin);
-        buffer_add(sql, ',');
-        buffer_add_double(sql, wr->bbox->xmax);
-        buffer_add(sql, ',');
-        buffer_add_double(sql, wr->bbox->ymax);
-        buffer_add_str(sql, "');");
-
-        /* FIXME use escape string SQL to prevent SQL injection */
-        res = PQexec(o->pg, sql->buf);
-
-        if (PQresultStatus(res) != PGRES_TUPLES_OK) {
-            buffer_free(sql);
-            ows_error(o, OWS_ERROR_REQUEST_SQL_FAILED,
-                      PQerrorMessage(o->pg), "GetMap");
-        }
-
-        for (i = 0; i < PQntuples(res); i++) {
-            fprintf(o->output, "  <path d='%sz'/>\n", PQgetvalue(res, i,
-                    0));
-        }
-
-        fprintf(o->output, " </g>\n");
-
-        PQclear(res);
-        buffer_empty(sql);
-    }
-
-    buffer_free(sql);
-
-    fprintf(o->output, "</svg>\n");
-}
-
-
-/*
- * vim: expandtab sw=4 ts=4
- */
diff --git a/src/wms/wms_request.c b/src/wms/wms_request.c
deleted file mode 100644
index abad5ce..0000000
--- a/src/wms/wms_request.c
+++ /dev/null
@@ -1,465 +0,0 @@
-/*
-  Copyright (c) <2007-2009> <Barbara Philippot - Olivier Courtin>
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy
-  of this software and associated documentation files (the "Software"), to deal
-  in the Software without restriction, including without limitation the rights
-  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-  copies of the Software, and to permit persons to whom the Software is
-  furnished to do so, subject to the following conditions:
-
-  The above copyright notice and this permission notice shall be included in
-  all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-  IN THE SOFTWARE.
-*/
-
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <assert.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "../ows/ows.h"
-
-
-/*
- * FIXME version and service --> ows_request !!!
- */
-
-
-/*
- * Initialize wms_request struct
- */
-wms_request *wms_request_init()
-{
-    wms_request *wr;
-
-    wr = malloc(sizeof(wms_request));
-    assert(wr != NULL);
-
-    wr->request = WMS_REQUEST_UNKNOWN;
-    wr->width = 0;
-    wr->height = 0;
-    wr->format = WMS_FORMAT_UNKNOWN;
-    wr->exception = WMS_EXCEPTION_XML;
-    wr->layers = NULL;
-    wr->styles = NULL;
-    wr->bbox = NULL;
-    wr->srs = NULL;
-    wr->request_i = 0;
-    wr->request_j = 0;
-    wr->feature_count = 0;
-    wr->transparent = false;
-    wr->bgcolor = NULL;
-
-    return wr;
-}
-
-
-#ifdef OWS_DEBUG
-void wms_request_flush(wms_request * wr, FILE * output)
-{
-    fprintf(output, "[\n");
-
-    fprintf(output, " request -> %i\n", wr->request);
-    fprintf(output, " width -> %i\n", wr->width);
-    fprintf(output, " height -> %i\n", wr->height);
-    fprintf(output, " format -> %i\n", wr->format);
-    fprintf(output, " exception -> %i\n", wr->exception);
-
-    if (wr->layers != NULL) {
-        fprintf(output, " layers -> ");
-        list_flush(wr->layers, output);
-        fprintf(output, "\n");
-    }
-
-    if (wr->styles != NULL) {
-        fprintf(output, "styles -> ");
-        list_flush(wr->styles, output);
-        fprintf(output, "\n");
-    }
-
-    if (wr->bbox != NULL) {
-        fprintf(output, "bbox -> ");
-        ows_bbox_flush(wr->bbox, output);
-        fprintf(output, "\n");
-    }
-
-    if (wr->srs != NULL) {
-        fprintf(output, "srs -> ");
-        ows_srs_flush(wr->srs, output);
-        fprintf(output, "\n");
-    }
-
-    fprintf(output, " request_i -> %i\n", wr->request_i);
-    fprintf(output, " request_j -> %i\n", wr->request_j);
-    fprintf(output, " feature_count -> %i\n", wr->feature_count);
-    fprintf(output, " transparent -> %i\n", wr->transparent ? 1 : 0);
-
-    if (wr->bgcolor != NULL) {
-        fprintf(output, " bgcolor -> ");
-        buffer_flush(wr->bgcolor, output);
-        fprintf(output, "\n");
-    }
-
-    fprintf(output, "]\n");
-}
-#endif
-
-
-/*
- * Release wms_request struct
- */
-void wms_request_free(wms_request * wr)
-{
-    assert(wr != NULL);
-
-    if (wr->layers != NULL)
-        list_free(wr->layers);
-
-    if (wr->styles != NULL)
-        list_free(wr->styles);
-
-    if (wr->bbox != NULL)
-        ows_bbox_free(wr->bbox);
-
-    if (wr->srs != NULL)
-        ows_srs_free(wr->srs);
-
-    if (wr->bgcolor != NULL)
-        buffer_free(wr->bgcolor);
-
-    free(wr);
-    wr = NULL;
-}
-
-
-/*
- * Check version is 1.3.0 or 1.1.0
- */
-static ows_version *wms_request_check_version(ows * o, wms_request * wr,
-        const array * cgi)
-{
-    if (ows_version_get(wr->version) != 111
-            && ows_version_get(wr->version) != 130)
-        wms_error(o, wr, WMS_ERROR_INVALID_VERSION,
-                  "VERSION parameter is not valid (use 1.3.0 or 1.1.1)");
-
-    return wr->version;
-}
-
-
-/*
- * Check and fill all WMS get_capabilities parameter
- */
-static void wms_request_check_get_capabilities(ows * o, wms_request * wr,
-        const array * cgi)
-{
-    /*if key version is not set, version = higher version */
-    if (!array_is_key(cgi, "version")) {
-        ows_version_set(wr->version, 1, 3, 0);
-    } else {
-        if (ows_version_get(wr->version) < 130)
-            ows_version_set(wr->version, 1, 1, 1);
-
-        if (ows_version_get(wr->version) > 130)
-            ows_version_set(wr->version, 1, 3, 0);
-    }
-
-    /* FIXME handle UPDATESEQUENCE */
-}
-
-
-/*
- * Check and fill all WMS get_map parameter
- * (See 7.3.2 in WMS 1.3.0)
- * (Assume SERVICE, VERSION and REQUEST already rightly set)
- */
-static void wms_request_check_get_map(ows * o, wms_request * wr,
-                                      const array * cgi)
-{
-    buffer *b;
-    list *l;
-    int i;
-
-    assert(o != NULL);
-    assert(wr != NULL);
-    assert(cgi != NULL);
-
-
-    /* exceptions (optional) (default is WMS_EXCEPTION_XML) */
-
-    /* We check it first, so if something wrong later exception
-     * format asked by client could be used... */
-    if (array_is_key(cgi, "exceptions")) {
-        b = array_get(cgi, "exceptions");
-
-        if (buffer_cmp(b, "application/vnd.ogc.se_inimage"))
-            wr->exception = WMS_EXCEPTION_INIMAGE;
-        else if (buffer_cmp(b, "application/vnd.ogc.se_blank"))
-            wr->exception = WMS_EXCEPTION_BLANK;
-    }
-
-
-    /* layers */
-    if (!array_is_key(cgi, "layers"))
-        wms_error(o, wr, WMS_ERROR_LAYER_NOT_DEFINED,
-                  "LAYERS parameter is not set");
-
-    b = array_get(cgi, "layers");
-    l = list_explode(',', b);
-
-    if (l->size == 0) {
-        list_free(l);
-        wms_error(o, wr, WMS_ERROR_LAYER_NOT_DEFINED,
-                  "LAYERS parameter is empty");
-    }
-
-    if (!ows_layer_list_in_list(o->layers, l)) {
-        list_free(l);
-        wms_error(o, wr, WMS_ERROR_LAYER_NOT_DEFINED,
-                  "LAYERS parameter contains unknown(s) layer(s)");
-    }
-
-    wr->layers = l;
-
-
-    /* styles */
-    if (!array_is_key(cgi, "styles"))
-        wms_error(o, wr, WMS_ERROR_STYLE_NOT_DEFINED,
-                  "STYLES parameter is not set");
-
-    b = array_get(cgi, "styles");
-    l = list_explode(',', b);
-
-    if (l->size > 0 && l->size != wr->layers->size) {
-        list_free(l);
-        wms_error(o, wr, WMS_ERROR_STYLE_NOT_DEFINED,
-                  "STYLES parameter not follow LAYERS setting");
-    }
-
-    /* FIXME add a check to valid all styles against conf setting */
-
-    wr->styles = l;
-
-
-    /* crs | srs */
-    if (ows_version_get(wr->version) == 130) {
-        if (!array_is_key(cgi, "crs"))
-            wms_error(o, wr, WMS_ERROR_INVALID_CRS,
-                      "CRS parameter is not set");
-
-        b = array_get(cgi, "crs");
-        l = list_explode(':', b);
-
-        if (l->size != 2) {
-            list_free(l);
-            wms_error(o, wr, WMS_ERROR_INVALID_CRS,
-                      "CRS parameter value is not valid");
-        }
-
-        /* FIXME add a check to valid if first is alpha and second is int */
-        wr->srs = ows_srs_init();
-
-        if (!ows_srs_set(o, wr->srs, l->first->value,
-                         atoi(l->last->value->buf))) {
-            list_free(l);
-            wms_error(o, wr, WMS_ERROR_INVALID_CRS,
-                      "CRS parameter value is not valid");
-        }
-
-        list_free(l);
-
-    } else if (ows_version_get(wr->version) == 111) {
-        if (!array_is_key(cgi, "srs"))
-            wms_error(o, wr, WMS_ERROR_INVALID_CRS,
-                      "SRS parameter is not set");
-
-        b = array_get(cgi, "srs");
-        l = list_explode(':', b);
-
-        if (l->size != 2) {
-            list_free(l);
-            wms_error(o, wr, WMS_ERROR_INVALID_CRS,
-                      "SRS parameter value is not valid");
-        }
-
-        /* FIXME add a check to valid if first is alpha and second is int */
-        wr->srs = ows_srs_init();
-
-        if (!ows_srs_set(o, wr->srs, l->first->value,
-                         atoi(l->last->value->buf))) {
-            list_free(l);
-            wms_error(o, wr, WMS_ERROR_INVALID_CRS,
-                      "SRS parameter value is not valid");
-        }
-
-        list_free(l);
-    }
-
-
-    /* bbox */
-    if (!array_is_key(cgi, "bbox"))
-        wms_error(o, wr, WMS_ERROR_INVALID_BBOX,
-                  "BBOX parameter is not set");
-
-    b = array_get(cgi, "bbox");
-    l = list_explode(',', b);
-
-    if (l->size != 4) {
-        list_free(l);
-        wms_error(o, wr, WMS_ERROR_INVALID_BBOX,
-                  "BBOX parameter is not valid, must be : xmin, ymin, xmax, ymax");
-    }
-
-    /* FIXME Add a check to be sure values are all float */
-
-    wr->bbox = ows_bbox_init();
-
-    if (!ows_bbox_set(o, wr->bbox,
-                      atof(l->first->value->buf),
-                      atof(l->first->next->value->buf),
-                      atof(l->first->next->next->value->buf),
-                      atof(l->first->next->next->next->value->buf), wr->srs->srid)) {
-        list_free(l);
-        wms_request_free(wr);
-        ows_error(o, OWS_ERROR_INVALID_PARAMETER_VALUE,
-                  "Bad parameters for Bbox, must be Xmin,Ymin,Xmax,Ymax", "NULL");
-    }
-
-    list_free(l);
-
-
-    /* width */
-    if (!array_is_key(cgi, "width"))
-        wms_error(o, wr, WMS_ERROR_INVALID_WIDTH,
-                  "WIDTH parameter is not set");
-
-    /* FIXME Add a check to be sure value is an int */
-
-    b = array_get(cgi, "width");
-    i = atoi(b->buf);
-
-    if (i <= 0)
-        wms_error(o, wr, WMS_ERROR_INVALID_WIDTH,
-                  "WIDTH parameter is not valid");
-
-    wr->width = i;
-
-
-    /* height */
-    if (!array_is_key(cgi, "height"))
-        wms_error(o, wr, WMS_ERROR_INVALID_HEIGHT,
-                  "HEIGHT parameter is not set");
-
-    /* FIXME Add a check to be sure value is an int */
-
-    b = array_get(cgi, "height");
-    i = atoi(b->buf);
-
-    if (i <= 0)
-        wms_error(o, wr, WMS_ERROR_INVALID_HEIGHT,
-                  "HEIGHT parameter is not valid");
-
-    wr->height = i;
-
-
-    /* format */
-    if (!array_is_key(cgi, "format"))
-        wms_error(o, wr, WMS_ERROR_INVALID_FORMAT,
-                  "FORMAT parameter is not set");
-
-    b = array_get(cgi, "format");
-
-    if (buffer_cmp(b, "image/svg+xml"))
-        wr->format = WMS_FORMAT_SVG;
-    else
-        wms_error(o, wr, WMS_ERROR_INVALID_FORMAT,
-                  "Format parameter is not supported");
-
-
-    /* transparent (optional) (default is false) */
-    if (array_is_key(cgi, "transparent")) {
-        b = array_get(cgi, "transparent");
-
-        if (buffer_case_cmp(b, "true"))
-            wr->transparent = true;
-
-    }
-
-
-    /* bgcolor (optional) (default is ffffff) */
-    if (array_is_key(cgi, "bgcolor")) {
-        b = array_get(cgi, "bgcolor");
-
-        /* FIXME add a check to rightful pattern 0x[0-9a-f]{6} */
-        if (b->use == 8) {
-            wr->bgcolor = buffer_init();
-            buffer_copy(wr->bgcolor, b);
-            buffer_shift(wr->bgcolor, 2);   /* remove 0x prefix */
-        }
-    }
-
-
-    /* TODO time (optional) */
-    /* TODO elevation (optional) */
-    /* TODO other sample dimensions (optional) */
-
-}
-
-
-void wms_request_check(ows * o, wms_request * wr, const array * cgi)
-{
-    buffer *b;
-
-    assert(o != NULL);
-    assert(cgi != NULL);
-
-    b = array_get(cgi, "request");
-
-    if (buffer_cmp(b, "GetCapabilities")) {
-        wr->request = WMS_GET_CAPABILITIES;
-        wms_request_check_get_capabilities(o, wr, cgi);
-
-    } else if (buffer_cmp(b, "GetMap")) {
-        wr->request = WMS_GET_MAP;
-        wr->version = wms_request_check_version(o, wr, cgi);
-        wms_request_check_get_map(o, wr, cgi);
-
-    } else {
-        wms_error(o, wr, WMS_ERROR_OPERATION_NOT_SUPPORTED,
-                  "REQUEST is not supported");
-    }
-
-}
-
-
-void wms(ows * o, wms_request * wr)
-{
-    assert(o != NULL);
-    assert(wr != NULL);
-
-    switch (wr->request) {
-        case WMS_GET_MAP:
-            wms_get_map(o, wr);
-            break;
-        case WMS_GET_CAPABILITIES:
-            wms_get_capabilities(o, wr);
-            break;
-        default:
-            assert(0);              /* Should not happen */
-    }
-}
-
-
-/*
- * vim: expandtab sw=4 ts=4
- */
diff --git a/test/README b/test/README
deleted file mode 100644
index f2aa2f6..0000000
--- a/test/README
+++ /dev/null
@@ -1,16 +0,0 @@
-To be able to launch unit test 
-
-1) Launch in TinyOWS root dir
-   # make install-test
-
-2) Check TinyOWS config file values
-   Check PostgreSQL connection parameter, online_resource 
-   and schema_dir values
-
-   (online_resource must use a Public URL or IP
-   if you want to use OGC CITE Unit Test)
-
-4) Install valgrind if not yet been done
-
-5) Play with tests:
-   $ make test-valgrind
diff --git a/test/config.xml.in b/test/config.xml.in
deleted file mode 100644
index 5ad07ac..0000000
--- a/test/config.xml.in
+++ /dev/null
@@ -1,62 +0,0 @@
-<!-- TinyOWS WFS OGC TEST configuration -->
-
-<!-- BEGIN configuration -->
-<tinyows
-  online_resource="http://127.0.0.1/cgi-bin/tinyows"
-  schema_dir="@prefix@/tinyows/schema/">
-
-  <pg 
-    host="127.0.0.1" 
-    user="postgres" 
-    password="postgres" 
-    dbname="tinyows_test" 
-    port="5432" />
-<!-- END configuration -->
-
-<!-- Don't need to change anything below this point -->
-  <metadata
-    name="TinyOWS-OGC-CITE"
-    title="TinyOWS - OGC CITE Test">
-    <contact
-      name="TinyOWS Team"
-      site="http://www.tinyows.org"
-      email="tinyows-dev at lists.maptools.org" />
-  </metadata>
-
-  <layer name="root" title="root" srid="4326" 
-         queryable="1" retrievable="1" writable="1">
-
-     <layer name="SimpleFeatures" title="features110" prefix="sf" 
-           server="http://cite.opengeospatial.org/gmlsf" >
-          <layer name="AggregateGeoFeature" title="AggregateGeoFeature" />
-          <layer name="EntitéGénérique" title="EntitéGénérique" />
-          <layer name="PrimitiveGeoFeature" title="PrimitiveGeoFeature" />
-     </layer>
-
-
-     <!--
-     <layer name="OGCfeatures" title="OGCfeatures" prefix="cdf"
-          server="http://www.opengis.net/cite/data" srid="32615">
-          <layer name="Nulls" title="Nulls" />
-          <layer name="Seven" title="Seven" />
-          <layer name="Fifteen" title="Fifteen" />
-          <layer name="Other" title="Other" />
-          <layer name="Inserts" title="Inserts" />
-          <layer name="Updates" title="Updates" />
-          <layer name="Deletes" title="Deletes" />
-          <layer name="Locks" title="Locks" />
-      </layer>
-
-      <layer name="OGCgeometries" title="OGCgeometries" prefix="cgf"
-              server="http://www.opengis.net/cite/geometry" srid="32615" >
-          <layer name="Points" title="Points" />
-          <layer name="Lines" title="Lines" />
-          <layer name="Polygons" title="Polygons" />
-          <layer name="MPoints" title="MPoints" />
-          <layer name="MLines" title="MLines" />
-          <layer name="MPolygons" title="MPolygons" />
-      </layer>
-      -->
-  </layer>
-
-</tinyows>
diff --git a/test/install.sh.in b/test/install.sh.in
deleted file mode 100755
index 316bb70..0000000
--- a/test/install.sh.in
+++ /dev/null
@@ -1,17 +0,0 @@
-#/bin/sh
-
-# don't launch directly this script
-# use 'make install-test' to do so
-
-PG_BIN=@POSTGIS_BIN@
-PG_SHARE=@POSTGIS_SHARE@/contrib/postgis-2.0
-PG_USER=postgres
-DB=tinyows_test
-
-echo "Create Spatial Database: $DB"
-su $PG_USER -c "$PG_BIN/dropdb $DB > /dev/null 2> /dev/null"
-su $PG_USER -c "$PG_BIN/createdb $DB"
-su $PG_USER -c "$PG_BIN/createlang plpgsql $DB"
-su $PG_USER -c "$PG_BIN/psql $DB < $PG_SHARE/postgis.sql"
-su $PG_USER -c "$PG_BIN/psql $DB < $PG_SHARE/spatial_ref_sys.sql"
-su $PG_USER -c "$PG_BIN/psql $DB < test/ogc_wfs_data_110.sql"
diff --git a/test/ogc_wfs_data_100.sql b/test/ogc_wfs_data_100.sql
deleted file mode 100644
index aedff26..0000000
--- a/test/ogc_wfs_data_100.sql
+++ /dev/null
@@ -1,563 +0,0 @@
--- This file inserts all the appropriate cite data into postgis to run with
--- WFS 1.0.0 Cite Unit test
-
--- This file is heavily inspired from GeoServer distribution one
-
-drop table "Nulls";
-drop table "Points";
-drop table "Other";
-drop table "Lines";
-drop table "Polygons";
-drop table "MLines";
-drop table "MPolygons";
-drop table "MPoints";
-drop table "Seven";
-drop table "Fifteen";
-drop table "Updates";
-drop table "Inserts";
-drop table "Deletes";
-drop table "Locks";
-delete from "geometry_columns" where srid=32615;
-
-
-
---
--- TOC Entry ID 23 (OID 312261)
---
--- Name: SevenFeature Type: TABLE Owner: ciesin
---
-
-CREATE TABLE "Seven" (
-	"boundedBy" geometry,
-	"pointProperty" geometry,
-	CHECK ((srid("pointProperty") = 32615)),
-	CHECK (((geometrytype("pointProperty") = 'POINT'::text) OR ("pointProperty" IS NULL))),
-	CHECK ((srid("boundedBy") = 32615)),
-	CHECK (((geometrytype("boundedBy") = 'POLYGON'::text) OR ("boundedBy" IS NULL)))
-) WITH OIDS;
-
-
---
--- TOC Entry ID 24 (OID 312275)
---
--- Name: NullFeature Type: TABLE Owner: cite
---
-
-CREATE TABLE "Nulls" (
-	"description" character varying,
-	"name" character varying,
-	"boundedBy" geometry,
-	"integers" integer,
-	"dates" date,
-	"pointProperty" geometry,
-	CHECK ((srid("pointProperty") = 32615)),
-	CHECK (((geometrytype("pointProperty") = 'POINT'::text) OR ("pointProperty" IS NULL))),
-	CHECK ((srid("boundedBy") = 32615)),
-	CHECK (((geometrytype("boundedBy") = 'POLYGON'::text) OR ("boundedBy" IS NULL)))
-) WITH OIDS;
-
---
--- TOC Entry ID 25 (OID 312300)
---
--- Name: DeleteFeature Type: TABLE Owner: cite
---
-
-CREATE TABLE "Deletes" (
-	"boundedBy" geometry,
-	"id" character varying,
-	"pointProperty" geometry,
-	CHECK ((srid("pointProperty") = 32615)),
-	CHECK (((geometrytype("pointProperty") = 'POINT'::text) OR ("pointProperty" IS NULL))),
-	CHECK ((srid("boundedBy") = 32615)),
-	CHECK (((geometrytype("boundedBy") = 'POLYGON'::text) OR ("boundedBy" IS NULL)))
-
-) WITH OIDS;
-
---
--- TOC Entry ID 26 (OID 312305)
---
--- Name: InsertFeature Type: TABLE Owner: cite
---
-
-CREATE TABLE "Inserts" (
-	"boundedBy" geometry,
-	"id" character varying,
-	"pointProperty" geometry,
-	CHECK ((srid("pointProperty") = 32615)),
-	CHECK (((geometrytype("pointProperty") = 'POINT'::text) OR ("pointProperty" IS NULL))),
-	CHECK ((srid("boundedBy") = 32615)),
-	CHECK (((geometrytype("boundedBy") = 'POLYGON'::text) OR ("boundedBy" IS NULL)))
-) WITH OIDS;
-
-
---
--- TOC Entry ID 27 (OID 312310)
---
--- Name: UpdateFeature Type: TABLE Owner: cite
---
-
-CREATE TABLE "Updates" (
-	"boundedBy" geometry,
-	"id" character varying,
-	"pointProperty" geometry,
-	CHECK ((srid("pointProperty") = 32615)),
-	CHECK (((geometrytype("pointProperty") = 'POINT'::text) OR ("pointProperty" IS NULL))),
-	CHECK ((srid("boundedBy") = 32615)),
-	CHECK (((geometrytype("boundedBy") = 'POLYGON'::text) OR ("boundedBy" IS NULL)))
-) WITH OIDS;
-
---
--- TOC Entry ID 28 (OID 312315)
---
--- Name: PointFeature Type: TABLE Owner: cite
---
-
-CREATE TABLE "Points" (
-	"id" character varying,
-	"pointProperty" geometry,
-	CHECK ((srid("pointProperty") = 32615)),
-	CHECK (((geometrytype("pointProperty") = 'POINT'::text) OR ("pointProperty" IS NULL)))
-) WITH OIDS;
-
---
--- TOC Entry ID 29 (OID 312322)
---
--- Name: LineStringFeature Type: TABLE Owner: cite
---
-
-CREATE TABLE "Lines" (
-	"id" character varying,
-	"lineStringProperty" geometry,
-	CHECK ((srid("lineStringProperty") = 32615)),
-	CHECK (((geometrytype("lineStringProperty") = 'LINESTRING'::text) OR ("lineStringProperty" IS NULL)))
-) WITH OIDS;
-
---
--- TOC Entry ID 30 (OID 312329)
---
--- Name: PolygonFeature Type: TABLE Owner: cite
---
-
-CREATE TABLE "Polygons" (
-	"id" character varying,
-	"polygonProperty" geometry,
-	CHECK ((srid("polygonProperty") = 32615)),
-	CHECK (((geometrytype("polygonProperty") = 'POLYGON'::text) OR ("polygonProperty" IS NULL)))
-) WITH OIDS;
-
---
--- TOC Entry ID 31 (OID 312335)
---
--- Name: MultiPointFeature Type: TABLE Owner: cite
---
-
-CREATE TABLE "MPoints" (
-	"id" character varying,
-	"multiPointProperty" geometry,
-	CHECK ((srid("multiPointProperty") = 32615)),
-	CHECK (((geometrytype("multiPointProperty") = 'MULTIPOINT'::text) OR ("multiPointProperty" IS NULL)))
-) WITH OIDS;
-
---
--- TOC Entry ID 32 (OID 312341)
---
--- Name: MultiLineStringFeature Type: TABLE Owner: cite
---
-
-CREATE TABLE "MLines" (
-	"id" character varying,
-	"multiLineStringProperty" geometry,
-	CHECK ((srid("multiLineStringProperty") = 32615)),
-	CHECK (((geometrytype("multiLineStringProperty") = 'MULTILINESTRING'::text) OR ("multiLineStringProperty" IS NULL)))
-) WITH OIDS;
-
---
--- TOC Entry ID 33 (OID 312348)
---
--- Name: MultiPolygonFeature Type: TABLE Owner: cite
---
-
-CREATE TABLE "MPolygons" (
-	"id" character varying,
-	"multiPolygonProperty" geometry,
-	CHECK ((srid("multiPolygonProperty") = 32615)),
-	CHECK (((geometrytype("multiPolygonProperty") = 'MULTIPOLYGON'::text) OR ("multiPolygonProperty" IS NULL)))
-) WITH OIDS;
-
---
--- TOC Entry ID 34 (OID 312391)
---
--- Name: FifteenFeature Type: TABLE Owner: cite
---
-
-CREATE TABLE "Fifteen" (
-	"boundedBy" geometry,
-	"pointProperty" geometry,
-	CHECK ((srid("pointProperty") = 32615)),
-	CHECK (((geometrytype("pointProperty") = 'POINT'::text) OR ("pointProperty" IS NULL))),
-	CHECK ((srid("boundedBy") = 32615)),
-	CHECK (((geometrytype("boundedBy") = 'POLYGON'::text) OR ("boundedBy" IS NULL)))
-) WITH OIDS;
-
---
--- TOC Entry ID 35 (OID 312430)
---
--- Name: LockFeature Type: TABLE Owner: cite
---
-
-CREATE TABLE "Locks" (
-	"boundedBy" geometry,
-	"id" character varying, 
-	"pointProperty" geometry,
-	CHECK ((srid("pointProperty") = 32615)),
-	CHECK (((geometrytype("pointProperty") = 'POINT'::text) OR ("pointProperty" IS NULL))),
-	CHECK ((srid("boundedBy") = 32615)),
-	CHECK (((geometrytype("boundedBy") = 'POLYGON'::text) OR ("boundedBy" IS NULL)))
-) WITH OIDS;
-
---
--- TOC Entry ID 36 (OID 312570)
---
--- Name: OtherFeature Type: TABLE Owner: cite
---
-
-CREATE TABLE "Other" (
-	"description" character varying,
-	"name" character varying,
-	"boundedBy" geometry,
-	"pointProperty" geometry,
-	"string1" character varying NOT NULL,
-	"string2" character varying,
-	"integers" integer,
-	"dates" date,
-	CHECK ((srid("pointProperty") = 32615)),
-	CHECK (((geometrytype("pointProperty") = 'POINT'::text) OR ("pointProperty" IS NULL))),
-	CHECK ((srid("boundedBy") = 32615)),
-	CHECK (((geometrytype("boundedBy") = 'POLYGON'::text) OR ("boundedBy" IS NULL)))
-) WITH OIDS;
-
---
--- Data for TOC Entry ID 37 (OID 16560)
---
-
-COPY "geometry_columns" FROM stdin;
-	public	Nulls	pointProperty	2	32615	POINT
- 	public	Nulls	boundedBy	2	32615	POLYGON
- 	public	Points	pointProperty	2	32615	POINT
- 	public	Other	pointProperty	2	32615	POINT
-	public	Lines	lineStringProperty	2	32615	LINESTRING
- 	public	Polygons	polygonProperty	2	32615	POLYGON
-	public	MPolygons	multiPolygonProperty	2	32615	MULTIPOLYGON
-	public	MPoints	multiPointProperty	2	32615	MULTIPOINT
-	public	MLines	multiLineStringProperty	2	32615	MULTILINESTRING
- 	public	Other	boundedBy	2	32615	POLYGON
- 	public	Seven	pointProperty	2	32615	POINT
- 	public	Seven	boundedBy	2	32615	POLYGON
- 	public	Fifteen	pointProperty	2	32615	POINT
- 	public	Fifteen	boundedBy	2	32615	POLYGON
- 	public	Updates	pointProperty	2	32615	POINT
- 	public	Updates	boundedBy	2	32615	POLYGON
- 	public	Inserts	pointProperty	2	32615	POINT
- 	public	Inserts	boundedBy	2	32615	POLYGON
- 	public	Deletes	pointProperty	2	32615	POINT
- 	public	Deletes	boundedBy	2	32615	POLYGON
- 	public	Locks	pointProperty	2	32615	POINT
- 	public	Locks	boundedBy	2	32615	POLYGON
-\.
---
--- Data for TOC Entry ID 39 (OID 113496)
---
--- Name: county Type: TABLE DATA Owner: public
---
-
-
- 
-
-COPY "Seven" FROM stdin;
-SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	SRID=32615;POINT(500050 500050)
-SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	SRID=32615;POINT(500050 500050)
-SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	SRID=32615;POINT(500050 500050)
-SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	SRID=32615;POINT(500050 500050)
-SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	SRID=32615;POINT(500050 500050)
-SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	SRID=32615;POINT(500050 500050)
-SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	SRID=32615;POINT(500050 500050)
-\.
---
--- Data for TOC Entry ID 59 (OID 312275)
---
--- Name: NullFeature Type: TABLE DATA Owner: public
---
-
-
-COPY "Nulls" FROM stdin;
-nullFeature	\N	SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	\N	\N	\N
-\.
---
--- Data for TOC Entry ID 60 (OID 312300)
---
--- Name: DeleteFeature Type: TABLE DATA Owner: public
---
-
-
-COPY "Deletes" FROM stdin;
-SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	td0001	SRID=32615;POINT(500050 500050)
-SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	td0002	SRID=32615;POINT(500050 500050)
-SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	td0003	SRID=32615;POINT(500050 500050)
-\.
---
--- Data for TOC Entry ID 61 (OID 312305)
---
--- Name: InsertFeature Type: TABLE DATA Owner: public
---
-
-
-COPY "Inserts" FROM stdin;
-\.
---
--- Data for TOC Entry ID 62 (OID 312310)
---
--- Name: UpdateFeature Type: TABLE DATA Owner: public
---
-
-
-COPY "Updates" FROM stdin;
-SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	tu0001	SRID=32615;POINT(500050 500050)
-SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	tu0002	SRID=32615;POINT(500050 500050)
-SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	tu0003	SRID=32615;POINT(500050 500050)
-SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	tu0004	SRID=32615;POINT(500050 500050)
-\.
---
--- Data for TOC Entry ID 63 (OID 312315)
---
--- Name: PointFeature Type: TABLE DATA Owner: public
---
-
-
-COPY "Points" FROM stdin;
-t0000	SRID=32615;POINT(500050 500050)
-\.
---
--- Data for TOC Entry ID 64 (OID 312322)
---
--- Name: LineStringFeature Type: TABLE DATA Owner: public
---
-
-
-COPY "Lines" FROM stdin;
-t0001	SRID=32615;LINESTRING(500125 500025,500175 500075)
-\.
---
--- Data for TOC Entry ID 65 (OID 312329)
---
--- Name: PolygonFeature Type: TABLE DATA Owner: public
---
-
-
-COPY "Polygons" FROM stdin;
-t0002	SRID=32615;POLYGON((500225 500025,500225 500075,500275 500050,500275 500025,500225 500025))
-\.
---
--- Data for TOC Entry ID 66 (OID 312335)
---
--- Name: MultiPointFeature Type: TABLE DATA Owner: public
---
-
-
-COPY "MPoints" FROM stdin;
-t0003	SRID=32615;MULTIPOINT(500325 500025,500375 500075)
-\.
---
--- Data for TOC Entry ID 67 (OID 312341)
---
--- Name: MultiLineStringFeature Type: TABLE DATA Owner: public
---
-
-
-COPY "MLines" FROM stdin;
-t0004	SRID=32615;MULTILINESTRING((500425 500025,500475 500075),(500425 500075,500475 500025))
-\.
---
--- Data for TOC Entry ID 68 (OID 312348)
---
--- Name: MultiPolygonFeature Type: TABLE DATA Owner: public
---
-
-
-COPY "MPolygons" FROM stdin;
-t0005	SRID=32615;MULTIPOLYGON(((500525 500025,500550 500050,500575 500025,500525 500025)),((500525 500050,500525 500075,500550 500075,500550 500050,500525 500050)))
-\.
---
--- Data for TOC Entry ID 69 (OID 312391)
---
--- Name: FifteenFeature Type: TABLE DATA Owner: public
---
-
-
-COPY "Fifteen" FROM stdin;
-SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	SRID=32615;POINT(500050 500050)
-SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	SRID=32615;POINT(500050 500050)
-SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	SRID=32615;POINT(500050 500050)
-SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	SRID=32615;POINT(500050 500050)
-SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	SRID=32615;POINT(500050 500050)
-SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	SRID=32615;POINT(500050 500050)
-SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	SRID=32615;POINT(500050 500050)
-SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	SRID=32615;POINT(500050 500050)
-SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	SRID=32615;POINT(500050 500050)
-SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	SRID=32615;POINT(500050 500050)
-SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	SRID=32615;POINT(500050 500050)
-SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	SRID=32615;POINT(500050 500050)
-SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	SRID=32615;POINT(500050 500050)
-SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	SRID=32615;POINT(500050 500050)
-SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	SRID=32615;POINT(500050 500050)
-\.
---
--- Data for TOC Entry ID 70 (OID 312430)
---
--- Name: LockFeature Type: TABLE DATA Owner: public
---
-
-
-COPY "Locks" FROM stdin;
-\N	lfla0001	\N
-\N	lfla0002	\N
-\N	lfla0003	\N
-\N	lfla0004	\N
-\N	gfwlla0001	\N
-\N	gfwlla0002	\N
-\N	gfwlla0003	\N
-\N	gfwlla0004	\N
-\N	lfbt0001	\N
-\N	lfbt0002	\N
-\N	lfbt0003	\N
-\N	lfbt0004	\N
-\N	lfbt0005	\N
-\N	lfbt0006	\N
-\N	gfwlbt0001	\N
-\N	gfwlbt0002	\N
-\N	gfwlbt0003	\N
-\N	gfwlbt0004	\N
-\N	gfwlbt0005	\N
-\N	gfwlbt0006	\N
-\N	lfe0001	\N
-\N	lfe0002	\N
-\N	lfe0003	\N
-\N	lfe0004	\N
-\N	gfwle0001	\N
-\N	gfwle0002	\N
-\N	gfwle0003	\N
-\N	gfwle0004	\N
-\N	lfra0001	\N
-\N	lfra0002	\N
-\N	lfra0003	\N
-\N	lfra0004	\N
-\N	lfra0005	\N
-\N	lfra0006	\N
-\N	lfra0007	\N
-\N	lfra0008	\N
-\N	lfra0009	\N
-\N	lfra0010	\N
-\N	gfwlra0001	\N
-\N	gfwlra0002	\N
-\N	gfwlra0003	\N
-\N	gfwlra0004	\N
-\N	gfwlra0005	\N
-\N	gfwlra0006	\N
-\N	gfwlra0007	\N
-\N	gfwlra0008	\N
-\N	gfwlra0009	\N
-\N	gfwlra0010	\N
-\N	lfrs0001	\N
-\N	lfrs0002	\N
-\N	lfrs0003	\N
-\N	lfrs0004	\N
-\N	lfrs0005	\N
-\N	lfrs0006	\N
-\N	lfrs0007	\N
-\N	lfrs0008	\N
-\N	lfrs0009	\N
-\N	lfrs0010	\N
-\N	gfwlrs0001	\N
-\N	gfwlrs0002	\N
-\N	gfwlrs0003	\N
-\N	gfwlrs0004	\N
-\N	gfwlrs0005	\N
-\N	gfwlrs0006	\N
-\N	gfwlrs0007	\N
-\N	gfwlrs0008	\N
-\N	gfwlrs0009	\N
-\N	gfwlrs0010	\N
-\.
-
-UPDATE "Locks" SET "boundedBy" = GeometryFromText('POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))', 32615) WHERE TRUE;
-UPDATE "Locks" SET "pointProperty" = GeometryFromText('POINT(500050 500050)', 32615) WHERE TRUE;
-
---
--- Data for TOC Entry ID 71 (OID 312570)
---
--- Name: OtherFeature Type: TABLE DATA Owner: public
---
-
-
-COPY "Other" FROM stdin;
-A Single Feature used to test returning of properties	singleFeature	SRID=32615;POLYGON((500000 500000,500000 500100,500100 500100,500100 500000,500000 500000))	SRID=32615;POINT(500050 500050)	always	sometimes	7	2002-12-02
-\.
-
---
--- Fixes to have primary keys and no oids
---
-alter table "Deletes" add column pkey serial;
-alter table "Deletes" add primary key (pkey);
-alter table "Deletes" set without oids;
-
-alter table "Fifteen" add column pkey serial;
-alter table "Fifteen" add primary key (pkey);
-alter table "Fifteen" set without oids;
-
-alter table "Inserts" add column pkey serial;
-alter table "Inserts" add primary key (pkey);
-alter table "Inserts" set without oids;
-
-alter table "Lines" add column pkey serial;
-alter table "Lines" add primary key (pkey);
-alter table "Lines" set without oids;
-
-alter table "Locks" add column pkey serial;
-alter table "Locks" add primary key (pkey);
-alter table "Locks" set without oids;
-
-alter table "MLines" add column pkey serial;
-alter table "MLines" add primary key (pkey);
-alter table "MLines" set without oids;
-
-alter table "MPoints" add column pkey serial;
-alter table "MPoints" add primary key (pkey);
-alter table "MPoints" set without oids;
-
-alter table "MPolygons" add column pkey serial;
-alter table "MPolygons" add primary key (pkey);
-alter table "MPolygons" set without oids;
-
-alter table "Nulls" add column pkey serial;
-alter table "Nulls" add primary key (pkey);
-alter table "Nulls" set without oids;
-
-alter table "Other" add column pkey serial;
-alter table "Other" add primary key (pkey);
-alter table "Other" set without oids;
-
-alter table "Points" add column pkey serial;
-alter table "Points" add primary key (pkey);
-alter table "Points" set without oids;
-
-alter table "Polygons" add column pkey serial;
-alter table "Polygons" add primary key (pkey);
-alter table "Polygons" set without oids;
-
-alter table "Seven" add column pkey serial;
-alter table "Seven" add primary key (pkey);
-alter table "Seven" set without oids;
-
-alter table "Updates" add column pkey serial;
-alter table "Updates" add primary key (pkey);
-alter table "Updates" set without oids;
-
diff --git a/test/ogc_wfs_data_110.sql b/test/ogc_wfs_data_110.sql
deleted file mode 100644
index e648784..0000000
--- a/test/ogc_wfs_data_110.sql
+++ /dev/null
@@ -1,69 +0,0 @@
--- PostGIS setup script for wfs 1.1 sf0 cite dataset
--- 
--- Copyright: GeoServer Project
--- <https://svn.codehaus.org/geoserver/trunk/data/citewfs-1.1/>
---
---SET client_encoding = 'UTF8';
-
-delete from geometry_columns where f_table_name = 'PrimitiveGeoFeature' ;
-delete from geometry_columns where f_table_name = 'AggregateGeoFeature' ;
-delete from geometry_columns where f_table_name = 'EntitéGénérique' ;
-
-drop table "PrimitiveGeoFeature";
-create table "PrimitiveGeoFeature" ( description varchar, name varchar );
-
-select addgeometrycolumn( 'public', 'PrimitiveGeoFeature', 'surfaceProperty', 4326, 'POLYGON', 2 );
-select addgeometrycolumn( 'public', 'PrimitiveGeoFeature', 'pointProperty', 4326, 'POINT', 2 );
-select addgeometrycolumn( 'public', 'PrimitiveGeoFeature', 'curveProperty', 4326, 'LINESTRING', 2 );
-
-alter table "PrimitiveGeoFeature" add  "intProperty" int not null;
-alter table "PrimitiveGeoFeature" add  "uriProperty" varchar;
-alter table "PrimitiveGeoFeature" add measurand float not null;
-alter table "PrimitiveGeoFeature" add "dateTimeProperty" timestamp with time zone;
-alter table "PrimitiveGeoFeature" add "dateProperty" date;
---alter table "PrimitiveGeoFeature" add "dateProperty" timestamp with time zone;
-alter table "PrimitiveGeoFeature" add "decimalProperty" float not null;
-alter table "PrimitiveGeoFeature" add id varchar; 
-alter table "PrimitiveGeoFeature" add primary key ( id );
-
-INSERT INTO "PrimitiveGeoFeature" VALUES ('description-f001', 'name-f001', NULL, geometryfromtext('POINT(2.00342 39.73245)',4326), NULL, 155, 'http://www.opengeospatial.org/', 12765, NULL, '2006-10-25Z', 5.03, 'f001');
-INSERT INTO "PrimitiveGeoFeature" VALUES ('description-f002', 'name-f002', NULL, geometryfromtext('POINT(0.22601 59.41276)',4326), NULL, 154, 'http://www.opengeospatial.org/', 12769, NULL, '2006-10-23Z', 4.02, 'f002');
-INSERT INTO "PrimitiveGeoFeature" VALUES ('description-f003', 'name-f003',  NULL, NULL, geometryfromtext('LINESTRING(9.799 46.074,10.466 46.652,11.021 47.114)',4326) , 180, NULL, 672.1, NULL, '2006-09-01Z', 12.92, 'f003');
-INSERT INTO "PrimitiveGeoFeature" VALUES ('description-f008', 'name-f008',  geometryfromtext('POLYGON((30.899 45.174,30.466 45.652,30.466 45.891,30.899 45.174))',4326) , NULL, NULL, 300, NULL, 783.5, '2006-06-28T07:08:00+02:00', '2006-12-12Z', 18.92, 'f008');
-INSERT INTO "PrimitiveGeoFeature" VALUES (NULL, 'name-f015',  NULL, geometryfromtext('POINT(-10.52 34.94)',4326), NULL, -900, NULL, 2.4, NULL, NULL, 7.90, 'f015');
-
-
-drop table "AggregateGeoFeature";
-create table "AggregateGeoFeature" ( description varchar, name varchar );
-
-select addgeometrycolumn( 'public', 'AggregateGeoFeature', 'multiPointProperty', 4326, 'MULTIPOINT', 2 );
-select addgeometrycolumn( 'public', 'AggregateGeoFeature', 'multiCurveProperty', 4326, 'MULTILINESTRING', 2 );
-select addgeometrycolumn( 'public', 'AggregateGeoFeature', 'multiSurfaceProperty', 4326, 'MULTIPOLYGON', 2 );
-
-alter table "AggregateGeoFeature" add  "doubleProperty" float not null;
-alter table "AggregateGeoFeature" add  "intRangeProperty" varchar;
-alter table "AggregateGeoFeature" add  "strProperty" varchar not null;
-alter table "AggregateGeoFeature" add  "featureCode" varchar not null;
-alter table "AggregateGeoFeature" add id varchar; 
-alter table "AggregateGeoFeature" add primary key ( id );
-
-INSERT INTO "AggregateGeoFeature" VALUES ('description-f005','name-f005',geometryfromtext('MULTIPOINT((29.86 70.83),(31.08 68.87),(32.19 71.96))',4326),NULL,NULL,2012.78,NULL,'Ma quande lingues coalesce, li grammatica del resultant lingue es plu simplic e regulari quam ti del coalescent lingues. Li nov lingua franca va esser plu simplic e regulari quam li existent Europan lingues.','BK030','f005');
-INSERT INTO "AggregateGeoFeature" VALUES ('description-f009','name-f009',NULL,geometryfromtext('MULTILINESTRING((-5.899 55.174,-5.466 55.652,-5.899 55.891,-5.899 58.174,-5.466 58.652,-5.899 58.891),(-5.188 53.265,-4.775 54.354,-4.288 52.702,-4.107 53.611,-4.010 55.823))',4326),NULL,20.01,NULL,'Ma quande lingues coalesce, li grammatica del resultant.','GB007','f009');
-INSERT INTO "AggregateGeoFeature" VALUES ('description-f010','name-f010',NULL,NULL,geometryfromtext('MULTIPOLYGON(((20 50,19 54,20 55,30 60,28 52,27 51,29 49,27 47,20 50),(25 55,25.2 56,25.1 56,25 55)),((20.0 35.5,24.0 35.0,28.0 35.0,27.5 39.0,22.0 37.0,20.0 35.5),(26.0 36.0,25.0 37.0,27.0 36.8,26.0 36.0)))',4326),24510,NULL,' Ma quande lingues coalesce, li grammatica del resultant lingue es plu simplic e regulari quam ti del coalescent lingues. Li nov lingua franca va esser plu simplic e regulari quam li existent Europan lingues.','AK020','f010');
-INSERT INTO "AggregateGeoFeature" VALUES (NULL,'name-f016',NULL,NULL,geometryfromtext('MULTIPOLYGON(((6.0 57.5, 8.0 57.5, 8.0 60.0, 9.0 62.5, 5.0 62.5,6.0 60.0,6.0 57.5),(6.5 58.0,6.5 59.0,7.0 59.0,6.5 58.0)))',4326),-182.9,NULL,'In rhoncus nisl sit amet sem.','EE010','f016');
-
-
-drop table "EntitéGénérique";
-create table "EntitéGénérique" ( description varchar, name varchar );
-
-select addgeometrycolumn( 'public', 'EntitéGénérique', 'attribut.Géométrie', 4326, 'GEOMETRY', 2 );
-
-alter table "EntitéGénérique" add  "boolProperty" boolean not null;
-alter table "EntitéGénérique" add  "str4Property" varchar not null;
-alter table "EntitéGénérique" add  "featureRef" varchar;
-alter table "EntitéGénérique" add id varchar; 
-alter table "EntitéGénérique" add primary key ( id );
-
-INSERT INTO "EntitéGénérique" VALUES ('description-f004','name-f004',geometryfromtext('POLYGON((0 60.5,0 64,6.25 64,6.25 60.5,0 60.5),(2 61.5,2 62.5,4 62,2 61.5))',4326),true,'abc3','name-f003', 'f004');
-INSERT INTO "EntitéGénérique" VALUES ('description-f007','name-f007',geometryfromtext('POLYGON((15 35,16 40,20 39,22.5 37,18 36,15 35),(17.5 37.1,17.6 37.2,17.7 37.3,17.8 37.4,17.9 37.5,17.9 37,17.5 37.1))',4326),false,'def4',NULL,'f007');
-INSERT INTO "EntitéGénérique" VALUES ('description-f017','name-f017',geometryfromtext('LINESTRING(4.899 50.174,5.466 52.652,6.899 53.891,7.780 54.382,8.879 54.982)',4326),false,'qrst','name-f015','f017');
diff --git a/test/regress/config.xml.in b/test/regress/config.xml.in
deleted file mode 100644
index 5c9adfc..0000000
--- a/test/regress/config.xml.in
+++ /dev/null
@@ -1,38 +0,0 @@
-<!-- TinyOWS WFS 1.1.0 OGC CITE configuration -->
-
-<!-- BEGIN configuration -->
-<tinyows
-  online_resource="http://127.0.0.1/cgi-bin/tinyows"
-  schema_dir="@prefix@/share/tinyows/schema/" >
-
-  <pg 
-    host="127.0.0.1" 
-    user="postgres" 
-    password="postgres" 
-    dbname="tinyows_test" 
-    port="5432" />
-<!-- END configuration -->
-
-<!-- Don't need to change anything below this point -->
-  <metadata
-    name="TinyOWS-OGC-CITE"
-    title="TinyOWS - OGC CITE Test">
-  </metadata>
-
-  <contact name="TinyOWS Server"
-           site="http://www.tinyows.org/"
-           email="tinyows-users at lists.maptools.org" />
-
-  <layer name="eastern_point" title="eastern" 
-         ns_prefix="tows" ns_uri="http://www.tinyows.org/"
-         retrievable="1" srid="4326,2393,32631" />
-
-  <layer name="wgs84_point" title="wgs84"
-         ns_prefix="tows" ns_uri="http://www.tinyows.org/"
-         retrievable="1" srid="4326,2393,32631" />
-
-  <layer name="utm_point" title="utm"
-         ns_prefix="tows" ns_uri="http://www.tinyows.org/"
-         retrievable="1" srid="4326,2393,32631" />
-
-</tinyows>
diff --git a/test/regress/data.sql b/test/regress/data.sql
deleted file mode 100644
index 9c08a92..0000000
--- a/test/regress/data.sql
+++ /dev/null
@@ -1,14 +0,0 @@
-DROP TABLE eastern_point;
-CREATE TABLE eastern_point (id int NOT NULL PRIMARY KEY);
-SELECT AddGeometryColumn('eastern_point', 'the_geom', 2393, 'POINT', 2);
-INSERT INTO eastern_point VALUES (1, 'SRID=2393;POINT(3449686 7674378)'::geometry);
-
-DROP TABLE wgs84_point;
-CREATE TABLE wgs84_point (id int NOT NULL PRIMARY KEY);
-SELECT AddGeometryColumn('wgs84_point', 'the_geom', 4326, 'POINT', 2);
-INSERT INTO wgs84_point VALUES (1, 'SRID=4326;POINT(25.734088 69.145507)'::geometry);
-
-DROP TABLE utm_point;
-CREATE TABLE utm_point (id int NOT NULL PRIMARY KEY);
-SELECT AddGeometryColumn('utm_point', 'the_geom', 32631, 'POINT', 2);
-INSERT INTO utm_point VALUES (1, 'SRID=32631;POINT(1385320.39262836 7837461.35472656)'::geometry);
diff --git a/test/regress/install.sh.in b/test/regress/install.sh.in
deleted file mode 100755
index 769864d..0000000
--- a/test/regress/install.sh.in
+++ /dev/null
@@ -1,17 +0,0 @@
-#/bin/sh
-
-# don't launch directly this script
-# use 'make install-regress' to do so
-
-PGBIN=@POSTGIS_BIN@
-PGSHARE=@POSTGIS_SHARE@/contrib/postgis-2.0
-PGUSER=postgres
-DB=tinyows_test
-
-echo "Create Spatial Database: $DB"
-su $PGUSER -c "$PGBIN/dropdb $DB > /dev/null"
-su $PGUSER -c "$PGBIN/createdb $DB"
-su $PGUSER -c "$PGBIN/createlang plpgsql $DB"
-su $PGUSER -c "$PGBIN/psql $DB < $PGSHARE/postgis.sql"
-su $PGUSER -c "$PGBIN/psql $DB < $PGSHARE/spatial_ref_sys.sql"
-su $PGUSER -c "$PGBIN/psql $DB < test/regress/data.sql"
diff --git a/test/regress/lonlat/110A01 b/test/regress/lonlat/110A01
deleted file mode 100644
index 65b29cc..0000000
--- a/test/regress/lonlat/110A01
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=wgs84_point&srsName=EPSG:4326
diff --git a/test/regress/lonlat/110A01.out b/test/regress/lonlat/110A01.out
deleted file mode 100644
index 05f2db7..0000000
--- a/test/regress/lonlat/110A01.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:wgs84_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="EPSG:4326"><gml:lowerCorner>25.734088 69.145507</gml:lowerCorner><gml:upperCorner>25.734088 69.145507</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:wgs84_point gml:id="wgs84_point.1">
-   <tows:the_geom><gml:Point srsName="EPSG:4326"><gml:pos>25.734088 69.145507</gml:pos></gml:Point></tows:the_geom>
-   </tows:wgs84_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110A02 b/test/regress/lonlat/110A02
deleted file mode 100644
index f21fca7..0000000
--- a/test/regress/lonlat/110A02
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=wgs84_point&srsName=urn:ogc:def:crs:EPSG::4326
diff --git a/test/regress/lonlat/110A02.out b/test/regress/lonlat/110A02.out
deleted file mode 100644
index 1a981f3..0000000
--- a/test/regress/lonlat/110A02.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:wgs84_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="urn:ogc:def:crs:EPSG::4326"><gml:lowerCorner>69.145507 25.734088</gml:lowerCorner><gml:upperCorner>69.145507 25.734088</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:wgs84_point gml:id="wgs84_point.1">
-   <tows:the_geom><gml:Point srsName="urn:ogc:def:crs:EPSG::4326"><gml:pos>69.145507 25.734088</gml:pos></gml:Point></tows:the_geom>
-   </tows:wgs84_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110A03 b/test/regress/lonlat/110A03
deleted file mode 100644
index 6ea1cab..0000000
--- a/test/regress/lonlat/110A03
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=utm_point&srsName=EPSG:32631
diff --git a/test/regress/lonlat/110A03.out b/test/regress/lonlat/110A03.out
deleted file mode 100644
index e0709b9..0000000
--- a/test/regress/lonlat/110A03.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:utm_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="EPSG:32631"><gml:lowerCorner>1385320 7837461</gml:lowerCorner><gml:upperCorner>1385320 7837461</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:utm_point gml:id="utm_point.1">
-   <tows:the_geom><gml:Point srsName="EPSG:32631"><gml:pos>1385320 7837461</gml:pos></gml:Point></tows:the_geom>
-   </tows:utm_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110A04 b/test/regress/lonlat/110A04
deleted file mode 100644
index 5b8a4c6..0000000
--- a/test/regress/lonlat/110A04
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=utm_point&srsName=urn:ogc:def:crs:EPSG::32631
diff --git a/test/regress/lonlat/110A04.out b/test/regress/lonlat/110A04.out
deleted file mode 100644
index 5944b12..0000000
--- a/test/regress/lonlat/110A04.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:utm_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="urn:ogc:def:crs:EPSG::32631"><gml:lowerCorner>7837461 1385320</gml:lowerCorner><gml:upperCorner>7837461 1385320</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:utm_point gml:id="utm_point.1">
-   <tows:the_geom><gml:Point srsName="urn:ogc:def:crs:EPSG::32631"><gml:pos>7837461 1385320</gml:pos></gml:Point></tows:the_geom>
-   </tows:utm_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110A05 b/test/regress/lonlat/110A05
deleted file mode 100644
index 0615b09..0000000
--- a/test/regress/lonlat/110A05
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=eastern_point&srsName=EPSG:2393
diff --git a/test/regress/lonlat/110A05.out b/test/regress/lonlat/110A05.out
deleted file mode 100644
index 9f0578e..0000000
--- a/test/regress/lonlat/110A05.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:eastern_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="EPSG:2393"><gml:lowerCorner>3449686 7674378</gml:lowerCorner><gml:upperCorner>3449686 7674378</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:eastern_point gml:id="eastern_point.1">
-   <tows:the_geom><gml:Point srsName="EPSG:2393"><gml:pos>3449686 7674378</gml:pos></gml:Point></tows:the_geom>
-   </tows:eastern_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110A06 b/test/regress/lonlat/110A06
deleted file mode 100644
index 8c4d644..0000000
--- a/test/regress/lonlat/110A06
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=eastern_point&srsName=urn:ogc:def:crs:EPSG::2393
diff --git a/test/regress/lonlat/110A06.out b/test/regress/lonlat/110A06.out
deleted file mode 100644
index aea845a..0000000
--- a/test/regress/lonlat/110A06.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:eastern_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="urn:ogc:def:crs:EPSG::2393"><gml:lowerCorner>3449686 7674378</gml:lowerCorner><gml:upperCorner>3449686 7674378</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:eastern_point gml:id="eastern_point.1">
-   <tows:the_geom><gml:Point srsName="urn:ogc:def:crs:EPSG::2393"><gml:pos>3449686 7674378</gml:pos></gml:Point></tows:the_geom>
-   </tows:eastern_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110B01 b/test/regress/lonlat/110B01
deleted file mode 100644
index 40a08c5..0000000
--- a/test/regress/lonlat/110B01
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=wgs84_point&bbox=68.7,25.2,69.7,26.2
diff --git a/test/regress/lonlat/110B01.out b/test/regress/lonlat/110B01.out
deleted file mode 100644
index 1a981f3..0000000
--- a/test/regress/lonlat/110B01.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:wgs84_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="urn:ogc:def:crs:EPSG::4326"><gml:lowerCorner>69.145507 25.734088</gml:lowerCorner><gml:upperCorner>69.145507 25.734088</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:wgs84_point gml:id="wgs84_point.1">
-   <tows:the_geom><gml:Point srsName="urn:ogc:def:crs:EPSG::4326"><gml:pos>69.145507 25.734088</gml:pos></gml:Point></tows:the_geom>
-   </tows:wgs84_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110B02 b/test/regress/lonlat/110B02
deleted file mode 100644
index ce5951c..0000000
--- a/test/regress/lonlat/110B02
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=wgs84_point&bbox=25.2,68.7,26.2,69.7,EPSG:4326
diff --git a/test/regress/lonlat/110B02.out b/test/regress/lonlat/110B02.out
deleted file mode 100644
index 1a981f3..0000000
--- a/test/regress/lonlat/110B02.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:wgs84_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="urn:ogc:def:crs:EPSG::4326"><gml:lowerCorner>69.145507 25.734088</gml:lowerCorner><gml:upperCorner>69.145507 25.734088</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:wgs84_point gml:id="wgs84_point.1">
-   <tows:the_geom><gml:Point srsName="urn:ogc:def:crs:EPSG::4326"><gml:pos>69.145507 25.734088</gml:pos></gml:Point></tows:the_geom>
-   </tows:wgs84_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110B03 b/test/regress/lonlat/110B03
deleted file mode 100644
index 55a336f..0000000
--- a/test/regress/lonlat/110B03
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=wgs84_point&bbox=68.7,25.2,69.7,26.2,urn:ogc:def:crs:EPSG::4326
diff --git a/test/regress/lonlat/110B03.out b/test/regress/lonlat/110B03.out
deleted file mode 100644
index 1a981f3..0000000
--- a/test/regress/lonlat/110B03.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:wgs84_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="urn:ogc:def:crs:EPSG::4326"><gml:lowerCorner>69.145507 25.734088</gml:lowerCorner><gml:upperCorner>69.145507 25.734088</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:wgs84_point gml:id="wgs84_point.1">
-   <tows:the_geom><gml:Point srsName="urn:ogc:def:crs:EPSG::4326"><gml:pos>69.145507 25.734088</gml:pos></gml:Point></tows:the_geom>
-   </tows:wgs84_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110B04 b/test/regress/lonlat/110B04
deleted file mode 100644
index dceb94d..0000000
--- a/test/regress/lonlat/110B04
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=wgs84_point&bbox=8.7,5.2,9.7,6.2
diff --git a/test/regress/lonlat/110B04.out b/test/regress/lonlat/110B04.out
deleted file mode 100644
index db33e1f..0000000
--- a/test/regress/lonlat/110B04.out
+++ /dev/null
@@ -1,19 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:wgs84_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110B05 b/test/regress/lonlat/110B05
deleted file mode 100644
index 29ff15f..0000000
--- a/test/regress/lonlat/110B05
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=wgs84_point&bbox=5.2,8.7,6.2,9.7,EPSG:4326
diff --git a/test/regress/lonlat/110B05.out b/test/regress/lonlat/110B05.out
deleted file mode 100644
index db33e1f..0000000
--- a/test/regress/lonlat/110B05.out
+++ /dev/null
@@ -1,19 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:wgs84_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110B06 b/test/regress/lonlat/110B06
deleted file mode 100644
index e2a58c1..0000000
--- a/test/regress/lonlat/110B06
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=wgs84_point&bbox=8.7,5.2,9.7,6.2,urn:ogc:def:crs:EPSG::4326
diff --git a/test/regress/lonlat/110B06.out b/test/regress/lonlat/110B06.out
deleted file mode 100644
index db33e1f..0000000
--- a/test/regress/lonlat/110B06.out
+++ /dev/null
@@ -1,19 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:wgs84_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110B07 b/test/regress/lonlat/110B07
deleted file mode 100644
index 4fd98f5..0000000
--- a/test/regress/lonlat/110B07
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=wgs84_point&bbox=25.2,68.7,26.2,69.7
diff --git a/test/regress/lonlat/110B07.out b/test/regress/lonlat/110B07.out
deleted file mode 100644
index db33e1f..0000000
--- a/test/regress/lonlat/110B07.out
+++ /dev/null
@@ -1,19 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:wgs84_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110B08 b/test/regress/lonlat/110B08
deleted file mode 100644
index 43a2388..0000000
--- a/test/regress/lonlat/110B08
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=wgs84_point&bbox=68.7,25.2,69.7,26.2,EPSG:4326
diff --git a/test/regress/lonlat/110B08.out b/test/regress/lonlat/110B08.out
deleted file mode 100644
index db33e1f..0000000
--- a/test/regress/lonlat/110B08.out
+++ /dev/null
@@ -1,19 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:wgs84_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110B09 b/test/regress/lonlat/110B09
deleted file mode 100644
index 1552724..0000000
--- a/test/regress/lonlat/110B09
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=wgs84_point&bbox=25.2,68.7,26.2,69.7,urn:ogc:def:crs:EPSG::4326
diff --git a/test/regress/lonlat/110B09.out b/test/regress/lonlat/110B09.out
deleted file mode 100644
index db33e1f..0000000
--- a/test/regress/lonlat/110B09.out
+++ /dev/null
@@ -1,19 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:wgs84_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110B21 b/test/regress/lonlat/110B21
deleted file mode 100644
index 780f911..0000000
--- a/test/regress/lonlat/110B21
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=utm_point&bbox=1380000,7830000,1390000,7840000
diff --git a/test/regress/lonlat/110B21.out b/test/regress/lonlat/110B21.out
deleted file mode 100644
index f29aac6..0000000
--- a/test/regress/lonlat/110B21.out
+++ /dev/null
@@ -1,19 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:utm_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110B22 b/test/regress/lonlat/110B22
deleted file mode 100644
index 82c333c..0000000
--- a/test/regress/lonlat/110B22
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=utm_point&bbox=7830000,1380000,7840000,1390000,EPSG:32631
diff --git a/test/regress/lonlat/110B22.out b/test/regress/lonlat/110B22.out
deleted file mode 100644
index 0b40ee6..0000000
--- a/test/regress/lonlat/110B22.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:utm_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="urn:ogc:def:crs:EPSG::32631"><gml:lowerCorner>1385320 7837461</gml:lowerCorner><gml:upperCorner>1385320 7837461</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:utm_point gml:id="utm_point.1">
-   <tows:the_geom><gml:Point srsName="urn:ogc:def:crs:EPSG::32631"><gml:pos>7837461 1385320</gml:pos></gml:Point></tows:the_geom>
-   </tows:utm_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110B23 b/test/regress/lonlat/110B23
deleted file mode 100644
index 3df9d9d..0000000
--- a/test/regress/lonlat/110B23
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=utm_point&bbox=1380000,7830000,1390000,7840000,urn:ogc:def:crs:EPSG::32631
diff --git a/test/regress/lonlat/110B23.out b/test/regress/lonlat/110B23.out
deleted file mode 100644
index 0b40ee6..0000000
--- a/test/regress/lonlat/110B23.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:utm_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="urn:ogc:def:crs:EPSG::32631"><gml:lowerCorner>1385320 7837461</gml:lowerCorner><gml:upperCorner>1385320 7837461</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:utm_point gml:id="utm_point.1">
-   <tows:the_geom><gml:Point srsName="urn:ogc:def:crs:EPSG::32631"><gml:pos>7837461 1385320</gml:pos></gml:Point></tows:the_geom>
-   </tows:utm_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110B24 b/test/regress/lonlat/110B24
deleted file mode 100644
index 0e172e4..0000000
--- a/test/regress/lonlat/110B24
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=utm_point&bbox=380000,830000,390000,840000
diff --git a/test/regress/lonlat/110B24.out b/test/regress/lonlat/110B24.out
deleted file mode 100644
index f29aac6..0000000
--- a/test/regress/lonlat/110B24.out
+++ /dev/null
@@ -1,19 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:utm_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110B25 b/test/regress/lonlat/110B25
deleted file mode 100644
index ec1115e..0000000
--- a/test/regress/lonlat/110B25
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=utm_point&bbox=830000,380000,840000,390000,EPSG:32631
diff --git a/test/regress/lonlat/110B25.out b/test/regress/lonlat/110B25.out
deleted file mode 100644
index f29aac6..0000000
--- a/test/regress/lonlat/110B25.out
+++ /dev/null
@@ -1,19 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:utm_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110B26 b/test/regress/lonlat/110B26
deleted file mode 100644
index 57241e4..0000000
--- a/test/regress/lonlat/110B26
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=utm_point&bbox=380000,830000,390000,840000,urn:ogc:def:crs:EPSG::32631
diff --git a/test/regress/lonlat/110B26.out b/test/regress/lonlat/110B26.out
deleted file mode 100644
index f29aac6..0000000
--- a/test/regress/lonlat/110B26.out
+++ /dev/null
@@ -1,19 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:utm_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110B27 b/test/regress/lonlat/110B27
deleted file mode 100644
index 3c5efdc..0000000
--- a/test/regress/lonlat/110B27
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=utm_point&bbox=7830000,1380000,7840000,1390000
diff --git a/test/regress/lonlat/110B27.out b/test/regress/lonlat/110B27.out
deleted file mode 100644
index f29aac6..0000000
--- a/test/regress/lonlat/110B27.out
+++ /dev/null
@@ -1,19 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:utm_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110B28 b/test/regress/lonlat/110B28
deleted file mode 100644
index 391034d..0000000
--- a/test/regress/lonlat/110B28
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=utm_point&bbox=1380000,7830000,1390000,7840000,EPSG:32631
diff --git a/test/regress/lonlat/110B28.out b/test/regress/lonlat/110B28.out
deleted file mode 100644
index f29aac6..0000000
--- a/test/regress/lonlat/110B28.out
+++ /dev/null
@@ -1,19 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:utm_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110B29 b/test/regress/lonlat/110B29
deleted file mode 100644
index 39af250..0000000
--- a/test/regress/lonlat/110B29
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=utm_point&bbox=7830000,1380000,7840000,1390000,urn:ogc:def:crs:EPSG::32631
diff --git a/test/regress/lonlat/110B29.out b/test/regress/lonlat/110B29.out
deleted file mode 100644
index f29aac6..0000000
--- a/test/regress/lonlat/110B29.out
+++ /dev/null
@@ -1,19 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:utm_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110B41 b/test/regress/lonlat/110B41
deleted file mode 100644
index 54e34bc..0000000
--- a/test/regress/lonlat/110B41
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=eastern_point&bbox=7670000,3440000,7680000,3450000
diff --git a/test/regress/lonlat/110B41.out b/test/regress/lonlat/110B41.out
deleted file mode 100644
index 39c0450..0000000
--- a/test/regress/lonlat/110B41.out
+++ /dev/null
@@ -1,19 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:eastern_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110B42 b/test/regress/lonlat/110B42
deleted file mode 100644
index f4ae86f..0000000
--- a/test/regress/lonlat/110B42
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=eastern_point&bbox=3440000,7670000,3450000,7680000,EPSG:2393
diff --git a/test/regress/lonlat/110B42.out b/test/regress/lonlat/110B42.out
deleted file mode 100644
index aea845a..0000000
--- a/test/regress/lonlat/110B42.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:eastern_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="urn:ogc:def:crs:EPSG::2393"><gml:lowerCorner>3449686 7674378</gml:lowerCorner><gml:upperCorner>3449686 7674378</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:eastern_point gml:id="eastern_point.1">
-   <tows:the_geom><gml:Point srsName="urn:ogc:def:crs:EPSG::2393"><gml:pos>3449686 7674378</gml:pos></gml:Point></tows:the_geom>
-   </tows:eastern_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110B43 b/test/regress/lonlat/110B43
deleted file mode 100644
index 35da20c..0000000
--- a/test/regress/lonlat/110B43
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=eastern_point&bbox=3440000,7670000,3450000,7680000,urn:ogc:def:crs:EPSG::2393
diff --git a/test/regress/lonlat/110B43.out b/test/regress/lonlat/110B43.out
deleted file mode 100644
index aea845a..0000000
--- a/test/regress/lonlat/110B43.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:eastern_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="urn:ogc:def:crs:EPSG::2393"><gml:lowerCorner>3449686 7674378</gml:lowerCorner><gml:upperCorner>3449686 7674378</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:eastern_point gml:id="eastern_point.1">
-   <tows:the_geom><gml:Point srsName="urn:ogc:def:crs:EPSG::2393"><gml:pos>3449686 7674378</gml:pos></gml:Point></tows:the_geom>
-   </tows:eastern_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110B44 b/test/regress/lonlat/110B44
deleted file mode 100644
index 8e5d58d..0000000
--- a/test/regress/lonlat/110B44
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=eastern_point&bbox=670000,440000,680000,450000
diff --git a/test/regress/lonlat/110B44.out b/test/regress/lonlat/110B44.out
deleted file mode 100644
index 39c0450..0000000
--- a/test/regress/lonlat/110B44.out
+++ /dev/null
@@ -1,19 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:eastern_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110B45 b/test/regress/lonlat/110B45
deleted file mode 100644
index 8e5d58d..0000000
--- a/test/regress/lonlat/110B45
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=eastern_point&bbox=670000,440000,680000,450000
diff --git a/test/regress/lonlat/110B45.out b/test/regress/lonlat/110B45.out
deleted file mode 100644
index 39c0450..0000000
--- a/test/regress/lonlat/110B45.out
+++ /dev/null
@@ -1,19 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:eastern_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110B46 b/test/regress/lonlat/110B46
deleted file mode 100644
index db697da..0000000
--- a/test/regress/lonlat/110B46
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=eastern_point&bbox=440000,670000,450000,680000,EPSG:2393
diff --git a/test/regress/lonlat/110B46.out b/test/regress/lonlat/110B46.out
deleted file mode 100644
index 39c0450..0000000
--- a/test/regress/lonlat/110B46.out
+++ /dev/null
@@ -1,19 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:eastern_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110B47 b/test/regress/lonlat/110B47
deleted file mode 100644
index 54e34bc..0000000
--- a/test/regress/lonlat/110B47
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=eastern_point&bbox=7670000,3440000,7680000,3450000
diff --git a/test/regress/lonlat/110B47.out b/test/regress/lonlat/110B47.out
deleted file mode 100644
index 39c0450..0000000
--- a/test/regress/lonlat/110B47.out
+++ /dev/null
@@ -1,19 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:eastern_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110B48 b/test/regress/lonlat/110B48
deleted file mode 100644
index 8e36589..0000000
--- a/test/regress/lonlat/110B48
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=eastern_point&bbox=7670000,3440000,7680000,3450000,EPSG:2393
diff --git a/test/regress/lonlat/110B48.out b/test/regress/lonlat/110B48.out
deleted file mode 100644
index 39c0450..0000000
--- a/test/regress/lonlat/110B48.out
+++ /dev/null
@@ -1,19 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:eastern_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110B49 b/test/regress/lonlat/110B49
deleted file mode 100644
index 860c5df..0000000
--- a/test/regress/lonlat/110B49
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=eastern_point&bbox=7670000,3440000,7680000,3450000,urn:ogc:def:crs:EPSG::2393
diff --git a/test/regress/lonlat/110B49.out b/test/regress/lonlat/110B49.out
deleted file mode 100644
index 39c0450..0000000
--- a/test/regress/lonlat/110B49.out
+++ /dev/null
@@ -1,19 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:eastern_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110C01 b/test/regress/lonlat/110C01
deleted file mode 100644
index 0ef42d1..0000000
--- a/test/regress/lonlat/110C01
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=utm_point&srsName=EPSG:4326
diff --git a/test/regress/lonlat/110C01.out b/test/regress/lonlat/110C01.out
deleted file mode 100644
index 973f95f..0000000
--- a/test/regress/lonlat/110C01.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:utm_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="EPSG:4326"><gml:lowerCorner>25.732261 69.145566</gml:lowerCorner><gml:upperCorner>25.732261 69.145566</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:utm_point gml:id="utm_point.1">
-   <tows:the_geom><gml:Point srsName="EPSG:4326"><gml:pos>25.732261 69.145566</gml:pos></gml:Point></tows:the_geom>
-   </tows:utm_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110C02 b/test/regress/lonlat/110C02
deleted file mode 100644
index 9eee9b9..0000000
--- a/test/regress/lonlat/110C02
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=utm_point&srsName=urn:ogc:def:crs:EPSG::4326
diff --git a/test/regress/lonlat/110C02.out b/test/regress/lonlat/110C02.out
deleted file mode 100644
index 9f6d592..0000000
--- a/test/regress/lonlat/110C02.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:utm_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="urn:ogc:def:crs:EPSG::4326"><gml:lowerCorner>69.145566 25.732261</gml:lowerCorner><gml:upperCorner>69.145566 25.732261</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:utm_point gml:id="utm_point.1">
-   <tows:the_geom><gml:Point srsName="urn:ogc:def:crs:EPSG::4326"><gml:pos>69.145566 25.732261</gml:pos></gml:Point></tows:the_geom>
-   </tows:utm_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110C03 b/test/regress/lonlat/110C03
deleted file mode 100644
index 7e29957..0000000
--- a/test/regress/lonlat/110C03
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=eastern_point&srsName=EPSG:4326
diff --git a/test/regress/lonlat/110C03.out b/test/regress/lonlat/110C03.out
deleted file mode 100644
index b091c47..0000000
--- a/test/regress/lonlat/110C03.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:eastern_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="EPSG:4326"><gml:lowerCorner>25.734088 69.145507</gml:lowerCorner><gml:upperCorner>25.734088 69.145507</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:eastern_point gml:id="eastern_point.1">
-   <tows:the_geom><gml:Point srsName="EPSG:4326"><gml:pos>25.734088 69.145507</gml:pos></gml:Point></tows:the_geom>
-   </tows:eastern_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110C04 b/test/regress/lonlat/110C04
deleted file mode 100644
index b608921..0000000
--- a/test/regress/lonlat/110C04
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=eastern_point&srsName=urn:ogc:def:crs:EPSG::4326
diff --git a/test/regress/lonlat/110C04.out b/test/regress/lonlat/110C04.out
deleted file mode 100644
index 0ce0204..0000000
--- a/test/regress/lonlat/110C04.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:eastern_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="urn:ogc:def:crs:EPSG::4326"><gml:lowerCorner>69.145507 25.734088</gml:lowerCorner><gml:upperCorner>69.145507 25.734088</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:eastern_point gml:id="eastern_point.1">
-   <tows:the_geom><gml:Point srsName="urn:ogc:def:crs:EPSG::4326"><gml:pos>69.145507 25.734088</gml:pos></gml:Point></tows:the_geom>
-   </tows:eastern_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110C11 b/test/regress/lonlat/110C11
deleted file mode 100644
index 0348140..0000000
--- a/test/regress/lonlat/110C11
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=wgs84_point&srsName=EPSG:32631
diff --git a/test/regress/lonlat/110C11.out b/test/regress/lonlat/110C11.out
deleted file mode 100644
index 18cbdb9..0000000
--- a/test/regress/lonlat/110C11.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:wgs84_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="EPSG:32631"><gml:lowerCorner>1385320 7837461</gml:lowerCorner><gml:upperCorner>1385320 7837461</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:wgs84_point gml:id="wgs84_point.1">
-   <tows:the_geom><gml:Point srsName="EPSG:32631"><gml:pos>1385320 7837461</gml:pos></gml:Point></tows:the_geom>
-   </tows:wgs84_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110C12 b/test/regress/lonlat/110C12
deleted file mode 100644
index f44bfa2..0000000
--- a/test/regress/lonlat/110C12
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=wgs84_point&srsName=urn:ogc:def:crs:EPSG::32631
diff --git a/test/regress/lonlat/110C12.out b/test/regress/lonlat/110C12.out
deleted file mode 100644
index 701bb75..0000000
--- a/test/regress/lonlat/110C12.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:wgs84_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="urn:ogc:def:crs:EPSG::32631"><gml:lowerCorner>7837461 1385320</gml:lowerCorner><gml:upperCorner>7837461 1385320</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:wgs84_point gml:id="wgs84_point.1">
-   <tows:the_geom><gml:Point srsName="urn:ogc:def:crs:EPSG::32631"><gml:pos>7837461 1385320</gml:pos></gml:Point></tows:the_geom>
-   </tows:wgs84_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110C13 b/test/regress/lonlat/110C13
deleted file mode 100644
index c3288f2..0000000
--- a/test/regress/lonlat/110C13
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=eastern_point&srsName=EPSG:32631
diff --git a/test/regress/lonlat/110C13.out b/test/regress/lonlat/110C13.out
deleted file mode 100644
index 388b113..0000000
--- a/test/regress/lonlat/110C13.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:eastern_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="EPSG:32631"><gml:lowerCorner>1385320 7837461</gml:lowerCorner><gml:upperCorner>1385320 7837461</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:eastern_point gml:id="eastern_point.1">
-   <tows:the_geom><gml:Point srsName="EPSG:32631"><gml:pos>1385320 7837461</gml:pos></gml:Point></tows:the_geom>
-   </tows:eastern_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110C14 b/test/regress/lonlat/110C14
deleted file mode 100644
index cebcc52..0000000
--- a/test/regress/lonlat/110C14
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=eastern_point&srsName=urn:ogc:def:crs:EPSG::32631
diff --git a/test/regress/lonlat/110C14.out b/test/regress/lonlat/110C14.out
deleted file mode 100644
index 30a2bf0..0000000
--- a/test/regress/lonlat/110C14.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:eastern_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="urn:ogc:def:crs:EPSG::32631"><gml:lowerCorner>7837461 1385320</gml:lowerCorner><gml:upperCorner>7837461 1385320</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:eastern_point gml:id="eastern_point.1">
-   <tows:the_geom><gml:Point srsName="urn:ogc:def:crs:EPSG::32631"><gml:pos>7837461 1385320</gml:pos></gml:Point></tows:the_geom>
-   </tows:eastern_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110C21 b/test/regress/lonlat/110C21
deleted file mode 100644
index fbc1d44..0000000
--- a/test/regress/lonlat/110C21
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=wgs84_point&srsName=EPSG:2393
diff --git a/test/regress/lonlat/110C21.out b/test/regress/lonlat/110C21.out
deleted file mode 100644
index 3822f20..0000000
--- a/test/regress/lonlat/110C21.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:wgs84_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="EPSG:2393"><gml:lowerCorner>3449686 7674378</gml:lowerCorner><gml:upperCorner>3449686 7674378</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:wgs84_point gml:id="wgs84_point.1">
-   <tows:the_geom><gml:Point srsName="EPSG:2393"><gml:pos>3449686 7674378</gml:pos></gml:Point></tows:the_geom>
-   </tows:wgs84_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110C22 b/test/regress/lonlat/110C22
deleted file mode 100644
index 49641a6..0000000
--- a/test/regress/lonlat/110C22
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=wgs84_point&srsName=urn:ogc:def:crs:EPSG::2393
diff --git a/test/regress/lonlat/110C22.out b/test/regress/lonlat/110C22.out
deleted file mode 100644
index e1fae2c..0000000
--- a/test/regress/lonlat/110C22.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:wgs84_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="urn:ogc:def:crs:EPSG::2393"><gml:lowerCorner>3449686 7674378</gml:lowerCorner><gml:upperCorner>3449686 7674378</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:wgs84_point gml:id="wgs84_point.1">
-   <tows:the_geom><gml:Point srsName="urn:ogc:def:crs:EPSG::2393"><gml:pos>3449686 7674378</gml:pos></gml:Point></tows:the_geom>
-   </tows:wgs84_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110C23 b/test/regress/lonlat/110C23
deleted file mode 100644
index 0615b09..0000000
--- a/test/regress/lonlat/110C23
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=eastern_point&srsName=EPSG:2393
diff --git a/test/regress/lonlat/110C23.out b/test/regress/lonlat/110C23.out
deleted file mode 100644
index 9f0578e..0000000
--- a/test/regress/lonlat/110C23.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:eastern_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="EPSG:2393"><gml:lowerCorner>3449686 7674378</gml:lowerCorner><gml:upperCorner>3449686 7674378</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:eastern_point gml:id="eastern_point.1">
-   <tows:the_geom><gml:Point srsName="EPSG:2393"><gml:pos>3449686 7674378</gml:pos></gml:Point></tows:the_geom>
-   </tows:eastern_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110C24 b/test/regress/lonlat/110C24
deleted file mode 100644
index 8c4d644..0000000
--- a/test/regress/lonlat/110C24
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=eastern_point&srsName=urn:ogc:def:crs:EPSG::2393
diff --git a/test/regress/lonlat/110C24.out b/test/regress/lonlat/110C24.out
deleted file mode 100644
index aea845a..0000000
--- a/test/regress/lonlat/110C24.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:eastern_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="urn:ogc:def:crs:EPSG::2393"><gml:lowerCorner>3449686 7674378</gml:lowerCorner><gml:upperCorner>3449686 7674378</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:eastern_point gml:id="eastern_point.1">
-   <tows:the_geom><gml:Point srsName="urn:ogc:def:crs:EPSG::2393"><gml:pos>3449686 7674378</gml:pos></gml:Point></tows:the_geom>
-   </tows:eastern_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110D01 b/test/regress/lonlat/110D01
deleted file mode 100644
index ca66a1f..0000000
--- a/test/regress/lonlat/110D01
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=wgs84_point&bbox=68.7,25.2,69.7,26.2&srsName=EPSG:32631
diff --git a/test/regress/lonlat/110D01.out b/test/regress/lonlat/110D01.out
deleted file mode 100644
index 18cbdb9..0000000
--- a/test/regress/lonlat/110D01.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:wgs84_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="EPSG:32631"><gml:lowerCorner>1385320 7837461</gml:lowerCorner><gml:upperCorner>1385320 7837461</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:wgs84_point gml:id="wgs84_point.1">
-   <tows:the_geom><gml:Point srsName="EPSG:32631"><gml:pos>1385320 7837461</gml:pos></gml:Point></tows:the_geom>
-   </tows:wgs84_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110D02 b/test/regress/lonlat/110D02
deleted file mode 100644
index b93960c..0000000
--- a/test/regress/lonlat/110D02
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=wgs84_point&bbox=68.7,25.2,69.7,26.2&srsName=urn:ogc:def:crs:EPSG::32631
diff --git a/test/regress/lonlat/110D02.out b/test/regress/lonlat/110D02.out
deleted file mode 100644
index 701bb75..0000000
--- a/test/regress/lonlat/110D02.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:wgs84_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="urn:ogc:def:crs:EPSG::32631"><gml:lowerCorner>7837461 1385320</gml:lowerCorner><gml:upperCorner>7837461 1385320</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:wgs84_point gml:id="wgs84_point.1">
-   <tows:the_geom><gml:Point srsName="urn:ogc:def:crs:EPSG::32631"><gml:pos>7837461 1385320</gml:pos></gml:Point></tows:the_geom>
-   </tows:wgs84_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110D03 b/test/regress/lonlat/110D03
deleted file mode 100644
index 96bc08b..0000000
--- a/test/regress/lonlat/110D03
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=wgs84_point&bbox=68.7,25.2,69.7,26.2&srsName=EPSG:2393
diff --git a/test/regress/lonlat/110D03.out b/test/regress/lonlat/110D03.out
deleted file mode 100644
index 3822f20..0000000
--- a/test/regress/lonlat/110D03.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:wgs84_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="EPSG:2393"><gml:lowerCorner>3449686 7674378</gml:lowerCorner><gml:upperCorner>3449686 7674378</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:wgs84_point gml:id="wgs84_point.1">
-   <tows:the_geom><gml:Point srsName="EPSG:2393"><gml:pos>3449686 7674378</gml:pos></gml:Point></tows:the_geom>
-   </tows:wgs84_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110D04 b/test/regress/lonlat/110D04
deleted file mode 100644
index 4790d8a..0000000
--- a/test/regress/lonlat/110D04
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=wgs84_point&bbox=68.7,25.2,69.7,26.2&srsName=urn:ogc:def:crs:EPSG::2393
diff --git a/test/regress/lonlat/110D04.out b/test/regress/lonlat/110D04.out
deleted file mode 100644
index e1fae2c..0000000
--- a/test/regress/lonlat/110D04.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:wgs84_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="urn:ogc:def:crs:EPSG::2393"><gml:lowerCorner>3449686 7674378</gml:lowerCorner><gml:upperCorner>3449686 7674378</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:wgs84_point gml:id="wgs84_point.1">
-   <tows:the_geom><gml:Point srsName="urn:ogc:def:crs:EPSG::2393"><gml:pos>3449686 7674378</gml:pos></gml:Point></tows:the_geom>
-   </tows:wgs84_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110D05 b/test/regress/lonlat/110D05
deleted file mode 100644
index 78e0b8c..0000000
--- a/test/regress/lonlat/110D05
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=utm_point&bbox=1380000,7830000,1390000,7840000&srsname=EPSG:4326
diff --git a/test/regress/lonlat/110D05.out b/test/regress/lonlat/110D05.out
deleted file mode 100644
index f29aac6..0000000
--- a/test/regress/lonlat/110D05.out
+++ /dev/null
@@ -1,19 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:utm_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110D06 b/test/regress/lonlat/110D06
deleted file mode 100644
index 5117c37..0000000
--- a/test/regress/lonlat/110D06
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=utm_point&bbox=1380000,7830000,1390000,7840000&srsName=urn:ogc:def:crs:EPSG::4326
diff --git a/test/regress/lonlat/110D06.out b/test/regress/lonlat/110D06.out
deleted file mode 100644
index f29aac6..0000000
--- a/test/regress/lonlat/110D06.out
+++ /dev/null
@@ -1,19 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:utm_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110D07 b/test/regress/lonlat/110D07
deleted file mode 100644
index dfa2cf6..0000000
--- a/test/regress/lonlat/110D07
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=utm_point&bbox=1380000,7830000,1390000,7840000&srsname=EPSG:2393
diff --git a/test/regress/lonlat/110D07.out b/test/regress/lonlat/110D07.out
deleted file mode 100644
index f29aac6..0000000
--- a/test/regress/lonlat/110D07.out
+++ /dev/null
@@ -1,19 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:utm_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110D08 b/test/regress/lonlat/110D08
deleted file mode 100644
index fa12d03..0000000
--- a/test/regress/lonlat/110D08
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=utm_point&bbox=1380000,7830000,1390000,7840000&srsName=urn:ogc:def:crs:EPSG::2393
diff --git a/test/regress/lonlat/110D08.out b/test/regress/lonlat/110D08.out
deleted file mode 100644
index f29aac6..0000000
--- a/test/regress/lonlat/110D08.out
+++ /dev/null
@@ -1,19 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:utm_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110D09 b/test/regress/lonlat/110D09
deleted file mode 100644
index 8cc03f4..0000000
--- a/test/regress/lonlat/110D09
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=eastern_point&bbox=3440000,7670000,3450000,7680000&srsName=EPSG:4326
diff --git a/test/regress/lonlat/110D09.out b/test/regress/lonlat/110D09.out
deleted file mode 100644
index f29aac6..0000000
--- a/test/regress/lonlat/110D09.out
+++ /dev/null
@@ -1,19 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:utm_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110D10 b/test/regress/lonlat/110D10
deleted file mode 100644
index 4ce0389..0000000
--- a/test/regress/lonlat/110D10
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=eastern_point&bbox=3440000,7670000,3450000,7680000&srsName=urn:ogc:def:crs:EPSG::4326
diff --git a/test/regress/lonlat/110D10.out b/test/regress/lonlat/110D10.out
deleted file mode 100644
index f29aac6..0000000
--- a/test/regress/lonlat/110D10.out
+++ /dev/null
@@ -1,19 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:utm_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110D11 b/test/regress/lonlat/110D11
deleted file mode 100644
index 9347d27..0000000
--- a/test/regress/lonlat/110D11
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=eastern_point&bbox=3440000,7670000,3450000,7680000&srsName=EPSG:2393
diff --git a/test/regress/lonlat/110D11.out b/test/regress/lonlat/110D11.out
deleted file mode 100644
index f29aac6..0000000
--- a/test/regress/lonlat/110D11.out
+++ /dev/null
@@ -1,19 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:utm_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110D12 b/test/regress/lonlat/110D12
deleted file mode 100644
index 2254793..0000000
--- a/test/regress/lonlat/110D12
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=eastern_point&bbox=3440000,7670000,3450000,7680000&srsName=urn:ogc:def:crs:EPSG::2393
diff --git a/test/regress/lonlat/110D12.out b/test/regress/lonlat/110D12.out
deleted file mode 100644
index f29aac6..0000000
--- a/test/regress/lonlat/110D12.out
+++ /dev/null
@@ -1,19 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:utm_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110D21 b/test/regress/lonlat/110D21
deleted file mode 100644
index cf78037..0000000
--- a/test/regress/lonlat/110D21
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=wgs84&bbox=7830000,1380000,7840000,1390000,EPSG:32631&srsName=EPSG:32631
diff --git a/test/regress/lonlat/110D21.out b/test/regress/lonlat/110D21.out
deleted file mode 100644
index 18cbdb9..0000000
--- a/test/regress/lonlat/110D21.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:wgs84_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="EPSG:32631"><gml:lowerCorner>1385320 7837461</gml:lowerCorner><gml:upperCorner>1385320 7837461</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:wgs84_point gml:id="wgs84_point.1">
-   <tows:the_geom><gml:Point srsName="EPSG:32631"><gml:pos>1385320 7837461</gml:pos></gml:Point></tows:the_geom>
-   </tows:wgs84_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110D22 b/test/regress/lonlat/110D22
deleted file mode 100644
index c1dfd2b..0000000
--- a/test/regress/lonlat/110D22
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=wgs84&bbox=7830000,1380000,7840000,1390000,EPSG:32631&srsName=urn:ogc:def:crs:EPSG::32631
diff --git a/test/regress/lonlat/110D22.out b/test/regress/lonlat/110D22.out
deleted file mode 100644
index 701bb75..0000000
--- a/test/regress/lonlat/110D22.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:wgs84_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="urn:ogc:def:crs:EPSG::32631"><gml:lowerCorner>7837461 1385320</gml:lowerCorner><gml:upperCorner>7837461 1385320</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:wgs84_point gml:id="wgs84_point.1">
-   <tows:the_geom><gml:Point srsName="urn:ogc:def:crs:EPSG::32631"><gml:pos>7837461 1385320</gml:pos></gml:Point></tows:the_geom>
-   </tows:wgs84_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110D23 b/test/regress/lonlat/110D23
deleted file mode 100644
index 39a1653..0000000
--- a/test/regress/lonlat/110D23
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=wgs84_point&bbox=3440000,7670000,3450000,7680000,EPSG:2393&srsName=EPSG:2393
diff --git a/test/regress/lonlat/110D23.out b/test/regress/lonlat/110D23.out
deleted file mode 100644
index 3822f20..0000000
--- a/test/regress/lonlat/110D23.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:wgs84_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="EPSG:2393"><gml:lowerCorner>3449686 7674378</gml:lowerCorner><gml:upperCorner>3449686 7674378</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:wgs84_point gml:id="wgs84_point.1">
-   <tows:the_geom><gml:Point srsName="EPSG:2393"><gml:pos>3449686 7674378</gml:pos></gml:Point></tows:the_geom>
-   </tows:wgs84_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110D24 b/test/regress/lonlat/110D24
deleted file mode 100644
index 71649b8..0000000
--- a/test/regress/lonlat/110D24
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=wgs84_point&bbox=3440000,7670000,3450000,7680000,EPSG:2393&srsName=urn:ogc:def:crs:EPSG::2393
diff --git a/test/regress/lonlat/110D24.out b/test/regress/lonlat/110D24.out
deleted file mode 100644
index e1fae2c..0000000
--- a/test/regress/lonlat/110D24.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:wgs84_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="urn:ogc:def:crs:EPSG::2393"><gml:lowerCorner>3449686 7674378</gml:lowerCorner><gml:upperCorner>3449686 7674378</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:wgs84_point gml:id="wgs84_point.1">
-   <tows:the_geom><gml:Point srsName="urn:ogc:def:crs:EPSG::2393"><gml:pos>3449686 7674378</gml:pos></gml:Point></tows:the_geom>
-   </tows:wgs84_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110D25 b/test/regress/lonlat/110D25
deleted file mode 100644
index a1fb9df..0000000
--- a/test/regress/lonlat/110D25
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=wgs84_point&bbox=7830000,1380000,7840000,1390000,EPSG:32631&srsName=EPSG:32631
diff --git a/test/regress/lonlat/110D25.out b/test/regress/lonlat/110D25.out
deleted file mode 100644
index 18cbdb9..0000000
--- a/test/regress/lonlat/110D25.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:wgs84_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="EPSG:32631"><gml:lowerCorner>1385320 7837461</gml:lowerCorner><gml:upperCorner>1385320 7837461</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:wgs84_point gml:id="wgs84_point.1">
-   <tows:the_geom><gml:Point srsName="EPSG:32631"><gml:pos>1385320 7837461</gml:pos></gml:Point></tows:the_geom>
-   </tows:wgs84_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110D26 b/test/regress/lonlat/110D26
deleted file mode 100644
index cec2a09..0000000
--- a/test/regress/lonlat/110D26
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=wgs84_point&bbox=7830000,1380000,7840000,1390000,EPSG:32631&srsName=urn:ogc:def:crs:EPSG::32631
diff --git a/test/regress/lonlat/110D26.out b/test/regress/lonlat/110D26.out
deleted file mode 100644
index 701bb75..0000000
--- a/test/regress/lonlat/110D26.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:wgs84_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="urn:ogc:def:crs:EPSG::32631"><gml:lowerCorner>7837461 1385320</gml:lowerCorner><gml:upperCorner>7837461 1385320</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:wgs84_point gml:id="wgs84_point.1">
-   <tows:the_geom><gml:Point srsName="urn:ogc:def:crs:EPSG::32631"><gml:pos>7837461 1385320</gml:pos></gml:Point></tows:the_geom>
-   </tows:wgs84_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110D27 b/test/regress/lonlat/110D27
deleted file mode 100644
index 8984f13..0000000
--- a/test/regress/lonlat/110D27
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=utm_point&bbox=3440000,7670000,3450000,7680000,EPSG:2393&srsName=EPSG:2393
diff --git a/test/regress/lonlat/110D27.out b/test/regress/lonlat/110D27.out
deleted file mode 100644
index 9f0578e..0000000
--- a/test/regress/lonlat/110D27.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:eastern_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="EPSG:2393"><gml:lowerCorner>3449686 7674378</gml:lowerCorner><gml:upperCorner>3449686 7674378</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:eastern_point gml:id="eastern_point.1">
-   <tows:the_geom><gml:Point srsName="EPSG:2393"><gml:pos>3449686 7674378</gml:pos></gml:Point></tows:the_geom>
-   </tows:eastern_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110D28 b/test/regress/lonlat/110D28
deleted file mode 100644
index c712207..0000000
--- a/test/regress/lonlat/110D28
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=utm_point&bbox=3440000,7670000,3450000,7680000,EPSG:2393&srsName=urn:ogc:def:crs:EPSG::2393
diff --git a/test/regress/lonlat/110D28.out b/test/regress/lonlat/110D28.out
deleted file mode 100644
index aea845a..0000000
--- a/test/regress/lonlat/110D28.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:eastern_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="urn:ogc:def:crs:EPSG::2393"><gml:lowerCorner>3449686 7674378</gml:lowerCorner><gml:upperCorner>3449686 7674378</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:eastern_point gml:id="eastern_point.1">
-   <tows:the_geom><gml:Point srsName="urn:ogc:def:crs:EPSG::2393"><gml:pos>3449686 7674378</gml:pos></gml:Point></tows:the_geom>
-   </tows:eastern_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110D29 b/test/regress/lonlat/110D29
deleted file mode 100644
index 6617794..0000000
--- a/test/regress/lonlat/110D29
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=eastern_point&bbox=25.2,68.7,26.2,69.7,EPSG:4326&srsName=ESPG:4326
diff --git a/test/regress/lonlat/110D29.out b/test/regress/lonlat/110D29.out
deleted file mode 100644
index b091c47..0000000
--- a/test/regress/lonlat/110D29.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:eastern_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="EPSG:4326"><gml:lowerCorner>25.734088 69.145507</gml:lowerCorner><gml:upperCorner>25.734088 69.145507</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:eastern_point gml:id="eastern_point.1">
-   <tows:the_geom><gml:Point srsName="EPSG:4326"><gml:pos>25.734088 69.145507</gml:pos></gml:Point></tows:the_geom>
-   </tows:eastern_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110D30 b/test/regress/lonlat/110D30
deleted file mode 100644
index 5510af2..0000000
--- a/test/regress/lonlat/110D30
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=eastern_point&bbox=25.2,68.7,26.2,69.7,EPSG:4326&srsName=urn:ogc:def:crs:EPSG::4326
diff --git a/test/regress/lonlat/110D30.out b/test/regress/lonlat/110D30.out
deleted file mode 100644
index 0ce0204..0000000
--- a/test/regress/lonlat/110D30.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:eastern_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="urn:ogc:def:crs:EPSG::4326"><gml:lowerCorner>69.145507 25.734088</gml:lowerCorner><gml:upperCorner>69.145507 25.734088</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:eastern_point gml:id="eastern_point.1">
-   <tows:the_geom><gml:Point srsName="urn:ogc:def:crs:EPSG::4326"><gml:pos>69.145507 25.734088</gml:pos></gml:Point></tows:the_geom>
-   </tows:eastern_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110D31 b/test/regress/lonlat/110D31
deleted file mode 100644
index e1d94d4..0000000
--- a/test/regress/lonlat/110D31
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=eastern_point&bbox=25.2,68.7,26.2,69.7,EPSG:4326&srsName=ESPG:32631
diff --git a/test/regress/lonlat/110D31.out b/test/regress/lonlat/110D31.out
deleted file mode 100644
index 388b113..0000000
--- a/test/regress/lonlat/110D31.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:eastern_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="EPSG:32631"><gml:lowerCorner>1385320 7837461</gml:lowerCorner><gml:upperCorner>1385320 7837461</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:eastern_point gml:id="eastern_point.1">
-   <tows:the_geom><gml:Point srsName="EPSG:32631"><gml:pos>1385320 7837461</gml:pos></gml:Point></tows:the_geom>
-   </tows:eastern_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/110D32 b/test/regress/lonlat/110D32
deleted file mode 100644
index f14becc..0000000
--- a/test/regress/lonlat/110D32
+++ /dev/null
@@ -1 +0,0 @@
-service=wfs&version=1.1.0&request=GetFeature&typename=eastern_point&bbox=25.2,68.7,26.2,69.7,EPSG:4326&srsName=urn:ogc:def:crs:EPSG::32631
diff --git a/test/regress/lonlat/110D32.out b/test/regress/lonlat/110D32.out
deleted file mode 100644
index 30a2bf0..0000000
--- a/test/regress/lonlat/110D32.out
+++ /dev/null
@@ -1,27 +0,0 @@
-Content-Type: text/xml; subtype=gml/3.1.1
-
-<?xml version='1.0' encoding='UTF-8'?>
-<wfs:FeatureCollection
- xmlns:tows='http://www.tinyows.org/'
- xmlns:wfs='http://www.opengis.net/wfs'
- xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
- xmlns:gml='http://www.opengis.net/gml'
- xmlns:xsd='http://www.w3.org/2001/XMLSchema'
- xmlns:ogc='http://www.opengis.net/ogc'
- xmlns:xlink='http://www.w3.org/1999/xlink'
- xmlns:ows='http://www.opengis.net/ows'
- xsi:schemaLocation='http://www.tinyows.org/
-    http://127.0.0.1/cgi-bin/tinyows?service=WFS&version=1.1.0&request=DescribeFeatureType&Typename=tows:eastern_point   http://www.opengis.net/wfs
-   http://schemas.opengis.net/wfs/1.1.0/wfs.xsd
-   http://www.opengis.net/gml
-   http://schemas.opengis.net/gml/3.1.1/base/gml.xsd'
->
-<gml:boundedBy>
-  <gml:Envelope srsName="urn:ogc:def:crs:EPSG::32631"><gml:lowerCorner>7837461 1385320</gml:lowerCorner><gml:upperCorner>7837461 1385320</gml:upperCorner></gml:Envelope>
-</gml:boundedBy>
-  <gml:featureMember>
-   <tows:eastern_point gml:id="eastern_point.1">
-   <tows:the_geom><gml:Point srsName="urn:ogc:def:crs:EPSG::32631"><gml:pos>7837461 1385320</gml:pos></gml:Point></tows:the_geom>
-   </tows:eastern_point>
-  </gml:featureMember>
-</wfs:FeatureCollection>
diff --git a/test/regress/lonlat/LIST b/test/regress/lonlat/LIST
deleted file mode 100644
index 0b3aae9..0000000
--- a/test/regress/lonlat/LIST
+++ /dev/null
@@ -1,148 +0,0 @@
-- WFS 100
-  - bbox with crsuri -> ERROR
-  - srsName different than layer one ?
-  - bbox and srsname different -> ERROR
-  - eastern 
-  - no revert if long crsuri
-
-
-- WFS 110 
-  - GetFeature - No Bbox - srsName 
-    - No reprojection (same srsName than the data stored)
-      - WGS84
-        - Short srs -> 110A01
-        - Long srs  -> 110A02
-      - UTM  
-        - Short srs -> 110A03
-        - Long srs  -> 110A04
-      - Eastern
-        - Short srs -> 110A05 
-        - Long srs  -> 110A06
-
-  - GetFeature - Bbox - No srsName
-    - WGS84 
-      - Bbox IN
-        - No crsuri    -> 110B01
-        - Short crsuri -> 110B02
-        - Long crsuri  -> 100B03 
-      - Bbox OUT
-        - No crsuri    -> 110B04
-        - Short crsuri -> 110B05
-        - Long crsuri  -> 100B06 
-      - Bbox reversed axis (so OUT) 
-        - No crsuri    -> 110B07
-        - Short crsuri -> 110B08
-        - Long crsuri  -> 100B09 
-          
-    - UTM  
-      - Bbox IN
-        - No crsuri    -> 110B21   (so OUT)
-        - Short crsuri -> 110B22 
-        - Long crsuri  -> 100B23 
-      - Bbox OUT
-        - No crsuri    -> 110B24
-        - Short crsuri -> 110B25
-        - Long crsuri  -> 100B26 
-      - Bbox reversed axis (so OUT) 
-        - No crsuri    -> 110B27
-        - Short crsuri -> 110B28
-        - Long crsuri  -> 100B29 
-
-    - Eastern  
-      - Bbox IN
-        - No crsuri    -> 110B41   (so OUT)
-        - Short crsuri -> 110B42
-        - Long crsuri  -> 100B43 
-      - Bbox OUT
-        - No crsuri    -> 110B44
-        - Short crsuri -> 110B45
-        - Long crsuri  -> 100B46 
-      - Bbox reversed axis (so OUT) 
-        - No crsuri    -> 110B47
-        - Short crsuri -> 110B48
-        - Long crsuri  -> 100B49 
-
-  - GetFeature - No Bbox - srsName 
-    - Reprojection to WGS84
-      - UTM  
-        - Short srs -> 110C01
-        - Long srs  -> 110C02
-      - Eastern
-        - Short srs -> 110C03 
-        - Long srs  -> 110C04
-
-    - Reprojection to UTM
-      - WGS84  
-        - Short srs -> 110C11
-        - Long srs  -> 110C12
-      - Eastern
-        - Short srs -> 110C13 
-        - Long srs  -> 110C14
-
-    - Reprojection to Eastern
-      - WGS84  
-        - Short srs -> 110C21
-        - Long srs  -> 110C22
-      - UTM
-        - Short srs -> 110C23 
-        - Long srs  -> 110C24
-
-  - GetFeature - Bbox (no crsuri) same than data srs - srsName with reprojection 
-      - WGS84 - BBOX IN - TO UTM
-        - Short srs -> 110D01
-        - Long srs  -> 110D02
-      - WGS84 - BBOX IN - TO Eastern
-        - Short srs -> 110D03
-        - Long srs  -> 110D04
-      - UTM - BBOX IN (but OUT as no crsuri) TO WGS84
-        - Short srs -> 110D05
-        - Long srs  -> 110D06
-      - UTM - BBOX IN (but OUT as no crsuri) TO Eastern
-        - Short srs -> 110D07
-        - Long srs  -> 110D08
-      - Eastern - BBOX IN (but OUT as no crsuri) TO WGS84
-        - Short srs -> 110D09
-        - Long srs  -> 110D10
-      - Eastern - BBOX IN (but OUT as no crsuri) TO UTM
-        - Short srs -> 110D11
-        - Long srs  -> 110D12
-          
-  - GetFeature - Bbox (crsuri) - srsName with reprojection (same than crsuri)
-      - WGS84 - BBOX IN and srsName in UTM
-        - Short srs -> 110D21
-        - Long srs  -> 110D22
-      - WGS84 - BBOX IN and srsName in Eastern
-        - Short srs -> 110D23
-        - Long srs  -> 110D24
-      - UTM - BBOX IN and srsName in WGS84
-        - Short srs -> 110D25
-        - Long srs  -> 110D26
-      - UTM - BBOX IN and srsName in Eastern
-        - Short srs -> 110D27
-        - Long srs  -> 110D28
-      - Eastern - BBOX IN and srsName in WGS84
-        - Short srs -> 110D29
-        - Long srs  -> 110D30
-      - Eastern - BBOX IN and srsName in UTM
-        - Short srs -> 110D31
-        - Long srs  -> 110D32
-
-  - GetFeature - Bbox (crsuri) - srsName with reprojection (different from crsuri)
-      - WGS84 - BBOX IN UTM TO Eastern 
-        - Short srs -> 110D41
-        - Long srs  -> 110D42
-      - WGS84 - BBOX IN Eastern TO UTM
-        - Short srs -> 110D43
-        - Long srs  -> 110D44
-      - UTM - BBOX IN WGS84 TO Eastern
-        - Short srs -> 110D45
-        - Long srs  -> 110D46
-      - UTM - BBOX IN Eastern TO UTM
-        - Short srs -> 110D47
-        - Long srs  -> 110D48
-      - Eastern - BBOX IN WGS84 TO UTM
-        - Short srs -> 110D49
-        - Long srs  -> 110D50
-      - Eastern - BBOX IN UTM TO WGS84
-        - Short srs -> 110D51
-        - Long srs  -> 110D52
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0001 b/test/wfs/cite_wfs_1_1_0-sf0/0001
deleted file mode 100644
index 3e23817..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0001
+++ /dev/null
@@ -1 +0,0 @@
-request=getCapabilities&version=1.1.0&SERVICE=WFS
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0002 b/test/wfs/cite_wfs_1_1_0-sf0/0002
deleted file mode 100644
index 878b6af..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0002
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetCapabilities
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0003 b/test/wfs/cite_wfs_1_1_0-sf0/0003
deleted file mode 100644
index c935041..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0003
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:PrimitiveGeoFeature"/></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0004 b/test/wfs/cite_wfs_1_1_0-sf0/0004
deleted file mode 100644
index 878b6af..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0004
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetCapabilities
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0005 b/test/wfs/cite_wfs_1_1_0-sf0/0005
deleted file mode 100644
index 878b6af..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0005
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetCapabilities
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0006 b/test/wfs/cite_wfs_1_1_0-sf0/0006
deleted file mode 100644
index 878b6af..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0006
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetCapabilities
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0007 b/test/wfs/cite_wfs_1_1_0-sf0/0007
deleted file mode 100644
index 878b6af..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0007
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetCapabilities
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0008 b/test/wfs/cite_wfs_1_1_0-sf0/0008
deleted file mode 100644
index 878b6af..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0008
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetCapabilities
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0009 b/test/wfs/cite_wfs_1_1_0-sf0/0009
deleted file mode 100644
index 878b6af..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0009
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetCapabilities
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0010 b/test/wfs/cite_wfs_1_1_0-sf0/0010
deleted file mode 100644
index 878b6af..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0010
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetCapabilities
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0011 b/test/wfs/cite_wfs_1_1_0-sf0/0011
deleted file mode 100644
index d1e0bd9..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0011
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&versionXXX=x.x.x,x.y.z&request=GetCapabilities&ASDF=asdf:asdf
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0012 b/test/wfs/cite_wfs_1_1_0-sf0/0012
deleted file mode 100644
index 878b6af..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0012
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetCapabilities
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0013 b/test/wfs/cite_wfs_1_1_0-sf0/0013
deleted file mode 100644
index 5af5878..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0013
+++ /dev/null
@@ -1 +0,0 @@
-&request=GetCapabilities&version=1.1.0&service=WFS
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0014 b/test/wfs/cite_wfs_1_1_0-sf0/0014
deleted file mode 100644
index 878b6af..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0014
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetCapabilities
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0015 b/test/wfs/cite_wfs_1_1_0-sf0/0015
deleted file mode 100644
index 8b13789..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0015
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0016 b/test/wfs/cite_wfs_1_1_0-sf0/0016
deleted file mode 100644
index 31e67c2..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0016
+++ /dev/null
@@ -1 +0,0 @@
-&SERVICE=WFS&VERSION=1.1.0&REQUEST=GetCapabilities
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0017 b/test/wfs/cite_wfs_1_1_0-sf0/0017
deleted file mode 100644
index 0f7bccd..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0017
+++ /dev/null
@@ -1 +0,0 @@
-&SeRvIcE=WFS&vErSiOn=1.1.0&RequesT=GetCapabilities
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0018 b/test/wfs/cite_wfs_1_1_0-sf0/0018
deleted file mode 100644
index 878b6af..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0018
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetCapabilities
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0019 b/test/wfs/cite_wfs_1_1_0-sf0/0019
deleted file mode 100644
index 878b6af..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0019
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetCapabilities
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0020 b/test/wfs/cite_wfs_1_1_0-sf0/0020
deleted file mode 100644
index 878b6af..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0020
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetCapabilities
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0021 b/test/wfs/cite_wfs_1_1_0-sf0/0021
deleted file mode 100644
index 9b6bc51..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0021
+++ /dev/null
@@ -1 +0,0 @@
-&request=GetCapabilities&service=WFS&version=1.1.0
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0022 b/test/wfs/cite_wfs_1_1_0-sf0/0022
deleted file mode 100644
index 3d56a31..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0022
+++ /dev/null
@@ -1 +0,0 @@
-&request=GetCapabilities&version=1.1.0
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0023 b/test/wfs/cite_wfs_1_1_0-sf0/0023
deleted file mode 100644
index 82f8ac5..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0023
+++ /dev/null
@@ -1 +0,0 @@
-&request=GetCapabilities&service=WFS
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0024 b/test/wfs/cite_wfs_1_1_0-sf0/0024
deleted file mode 100644
index 399a59b..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0024
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&request=GetCapabilities
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0025 b/test/wfs/cite_wfs_1_1_0-sf0/0025
deleted file mode 100644
index 7f7f86d..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0025
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&request=GetCapabilities&acceptversions=1.1.0,1.0.0
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0026 b/test/wfs/cite_wfs_1_1_0-sf0/0026
deleted file mode 100644
index 57124b4..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0026
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&request=GetCapabilities&acceptversions=2006.10.25
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0027 b/test/wfs/cite_wfs_1_1_0-sf0/0027
deleted file mode 100644
index 332b590..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0027
+++ /dev/null
@@ -1 +0,0 @@
-&version=1.1.0&request=GetCapabilities
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0028 b/test/wfs/cite_wfs_1_1_0-sf0/0028
deleted file mode 100644
index 453faea..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0028
+++ /dev/null
@@ -1 +0,0 @@
-&service=ASDF&version=1.1.0&request=GetCapabilities
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0029 b/test/wfs/cite_wfs_1_1_0-sf0/0029
deleted file mode 100644
index 06eacd0..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0029
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&request=GetCapabilities&acceptversions=2006-10-26
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0030 b/test/wfs/cite_wfs_1_1_0-sf0/0030
deleted file mode 100644
index f9f1b1f..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0030
+++ /dev/null
@@ -1 +0,0 @@
-?request~GetCapabilities!service~WFS!version~1.1.0
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0031 b/test/wfs/cite_wfs_1_1_0-sf0/0031
deleted file mode 100644
index 878b6af..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0031
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetCapabilities
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0032 b/test/wfs/cite_wfs_1_1_0-sf0/0032
deleted file mode 100644
index 878b6af..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0032
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetCapabilities
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0033 b/test/wfs/cite_wfs_1_1_0-sf0/0033
deleted file mode 100644
index 72714a8..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0033
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetCapabilities&updatesequence=9999999999
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0034 b/test/wfs/cite_wfs_1_1_0-sf0/0034
deleted file mode 100644
index b530f96..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0034
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&request=GetCapabilities&sections=
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0035 b/test/wfs/cite_wfs_1_1_0-sf0/0035
deleted file mode 100644
index ddebd05..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0035
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&request=GetCapabilities&version=1.1.0&sections=OperationsMetadata,FeatureTypeList
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0036 b/test/wfs/cite_wfs_1_1_0-sf0/0036
deleted file mode 100644
index 946b807..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0036
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&request=GetCapabilities&acceptformats=text/xml
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0037 b/test/wfs/cite_wfs_1_1_0-sf0/0037
deleted file mode 100644
index a99483d..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0037
+++ /dev/null
@@ -1 +0,0 @@
-service=WFS&version=1.1.0&request=DescribeFeatureType&typename=sf:PrimitiveGeoFeature&namespace=xmlns(sf=http://cite.opengeospatial.org/gmlsf)
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0038 b/test/wfs/cite_wfs_1_1_0-sf0/0038
deleted file mode 100644
index b9c2f81..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0038
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:DescribeFeatureType xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="" version="1.1.0"><wfs:TypeName>sf:PrimitiveGeoFeature</wfs:TypeName></wfs:DescribeFeatureType>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0039 b/test/wfs/cite_wfs_1_1_0-sf0/0039
deleted file mode 100644
index 2632c7b..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0039
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:DescribeFeatureType xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" version="1.1.0"><wfs:TypeName>sf:PrimitiveGeoFeature</wfs:TypeName></wfs:DescribeFeatureType>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0040 b/test/wfs/cite_wfs_1_1_0-sf0/0040
deleted file mode 100644
index b9c2f81..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0040
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:DescribeFeatureType xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="" version="1.1.0"><wfs:TypeName>sf:PrimitiveGeoFeature</wfs:TypeName></wfs:DescribeFeatureType>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0041 b/test/wfs/cite_wfs_1_1_0-sf0/0041
deleted file mode 100644
index 735c392..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0041
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:DescribeFeatureType xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version=""><wfs:TypeName>sf:PrimitiveGeoFeature</wfs:TypeName></wfs:DescribeFeatureType>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0042 b/test/wfs/cite_wfs_1_1_0-sf0/0042
deleted file mode 100644
index acd7fb4..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0042
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:DescribeFeatureType xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="FOO" version="1.1.0"><wfs:TypeName>sf:PrimitiveGeoFeature</wfs:TypeName></wfs:DescribeFeatureType>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0043 b/test/wfs/cite_wfs_1_1_0-sf0/0043
deleted file mode 100644
index b8ed4ab..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0043
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:DescribeFeatureType xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="2.0.0"><wfs:TypeName>sf:PrimitiveGeoFeature</wfs:TypeName></wfs:DescribeFeatureType>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0044 b/test/wfs/cite_wfs_1_1_0-sf0/0044
deleted file mode 100644
index 9e0046d..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0044
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><foo:DescribeFeatureType xmlns:foo="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" xmlns:wfs="http://www.opengis.net/wfs" service="WFS" version="1.1.0"/>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0045 b/test/wfs/cite_wfs_1_1_0-sf0/0045
deleted file mode 100644
index 37d0c06..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0045
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:DescribeFeatureType xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:TypeName>sf:PrimitiveGeoFeature</wfs:TypeName></wfs:DescribeFeatureType>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0046 b/test/wfs/cite_wfs_1_1_0-sf0/0046
deleted file mode 100644
index 37d0c06..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0046
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:DescribeFeatureType xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:TypeName>sf:PrimitiveGeoFeature</wfs:TypeName></wfs:DescribeFeatureType>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0047 b/test/wfs/cite_wfs_1_1_0-sf0/0047
deleted file mode 100644
index 988f865..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0047
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:DescribeFeatureType xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"/>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0048 b/test/wfs/cite_wfs_1_1_0-sf0/0048
deleted file mode 100644
index a9a76a8..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0048
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=DescribeFeatureType&typename=sf:PrimitiveGeoFeature&namespace=xmlns(sf=http://cite.opengeospatial.org/gmlsf)
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0049 b/test/wfs/cite_wfs_1_1_0-sf0/0049
deleted file mode 100644
index a9a76a8..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0049
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=DescribeFeatureType&typename=sf:PrimitiveGeoFeature&namespace=xmlns(sf=http://cite.opengeospatial.org/gmlsf)
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0050 b/test/wfs/cite_wfs_1_1_0-sf0/0050
deleted file mode 100644
index 28c7493..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0050
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&typename=sf:PrimitiveGeoFeature&namespace=xmlns(sf=http://cite.opengeospatial.org/gmlsf)
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0051 b/test/wfs/cite_wfs_1_1_0-sf0/0051
deleted file mode 100644
index f207f1e..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0051
+++ /dev/null
@@ -1 +0,0 @@
-&request=DescribeFeatureType&version=1.1.0&typename=sf:PrimitiveGeoFeature&namespace=xmlns(sf=http://cite.opengeospatial.org/gmlsf)
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0052 b/test/wfs/cite_wfs_1_1_0-sf0/0052
deleted file mode 100644
index 6422d79..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0052
+++ /dev/null
@@ -1 +0,0 @@
-&request=DescribeFeatureType&service=WFS&typename=sf:PrimitiveGeoFeature&namespace=xmlns(sf=http://cite.opengeospatial.org/gmlsf)
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0053 b/test/wfs/cite_wfs_1_1_0-sf0/0053
deleted file mode 100644
index cddc125..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0053
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=DescribeFeatureType&typename=sf:PrimitiveGeoFeature,sf:AggregateGeoFeature&namespace=xmlns(sf=http://cite.opengeospatial.org/gmlsf)
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0054 b/test/wfs/cite_wfs_1_1_0-sf0/0054
deleted file mode 100644
index a9a76a8..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0054
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=DescribeFeatureType&typename=sf:PrimitiveGeoFeature&namespace=xmlns(sf=http://cite.opengeospatial.org/gmlsf)
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0055 b/test/wfs/cite_wfs_1_1_0-sf0/0055
deleted file mode 100644
index a9a76a8..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0055
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=DescribeFeatureType&typename=sf:PrimitiveGeoFeature&namespace=xmlns(sf=http://cite.opengeospatial.org/gmlsf)
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0056 b/test/wfs/cite_wfs_1_1_0-sf0/0056
deleted file mode 100644
index 5ab0a74..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0056
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=DescribeFeatureType
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0057 b/test/wfs/cite_wfs_1_1_0-sf0/0057
deleted file mode 100644
index 0b27434..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0057
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"/></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0058 b/test/wfs/cite_wfs_1_1_0-sf0/0058
deleted file mode 100644
index 72146eb..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0058
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" resultType="hits" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"/></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0059 b/test/wfs/cite_wfs_1_1_0-sf0/0059
deleted file mode 100644
index 3cc4454..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0059
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" maxFeatures="2" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"/></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0060 b/test/wfs/cite_wfs_1_1_0-sf0/0060
deleted file mode 100644
index bdf9b57..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0060
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" traverseXlinkDepth="*" traverseXlinkExpiry="3" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"/></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0061 b/test/wfs/cite_wfs_1_1_0-sf0/0061
deleted file mode 100644
index 4d91460..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0061
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><foo:GetFeature xmlns:foo="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" xmlns:wfs="http://www.opengis.net/wfs" service="WFS" version="1.1.0"><foo:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"/></foo:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0062 b/test/wfs/cite_wfs_1_1_0-sf0/0062
deleted file mode 100644
index 746c13b..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0062
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><foo:GetFeature xmlns:foo="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" xmlns:wfs="http://www.opengis.net/wfs" service="WFS" version="1.1.0"><foo:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><foo:PropertyName>sf:dateProperty</foo:PropertyName></foo:Query></foo:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0063 b/test/wfs/cite_wfs_1_1_0-sf0/0063
deleted file mode 100644
index 868ccf9..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0063
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><wfs:PropertyName>sf:measurand</wfs:PropertyName><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>name-f001</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0064 b/test/wfs/cite_wfs_1_1_0-sf0/0064
deleted file mode 100644
index 0b27434..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0064
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"/></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0065 b/test/wfs/cite_wfs_1_1_0-sf0/0065
deleted file mode 100644
index 0cdf0a9..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0065
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query featureVersion="ALL" srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"/></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0066 b/test/wfs/cite_wfs_1_1_0-sf0/0066
deleted file mode 100644
index e715608..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0066
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:Asdf"/></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0067 b/test/wfs/cite_wfs_1_1_0-sf0/0067
deleted file mode 100644
index 4682471..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0067
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><wfs:PropertyName>sf:asdfProperty</wfs:PropertyName></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0068 b/test/wfs/cite_wfs_1_1_0-sf0/0068
deleted file mode 100644
index 7905e5b..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0068
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"/></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0069 b/test/wfs/cite_wfs_1_1_0-sf0/0069
deleted file mode 100644
index 4664385..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0069
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"/></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0070 b/test/wfs/cite_wfs_1_1_0-sf0/0070
deleted file mode 100644
index 21d9ca8..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0070
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"/></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0071 b/test/wfs/cite_wfs_1_1_0-sf0/0071
deleted file mode 100644
index 3ad2d36..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0071
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version=""><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"/></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0072 b/test/wfs/cite_wfs_1_1_0-sf0/0072
deleted file mode 100644
index 9592d90..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0072
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="FOO" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"/></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0073 b/test/wfs/cite_wfs_1_1_0-sf0/0073
deleted file mode 100644
index ef763d8..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0073
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="2.0.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"/></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0074 b/test/wfs/cite_wfs_1_1_0-sf0/0074
deleted file mode 100644
index 0b27434..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0074
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"/></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0075 b/test/wfs/cite_wfs_1_1_0-sf0/0075
deleted file mode 100644
index 0b27434..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0075
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"/></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0076 b/test/wfs/cite_wfs_1_1_0-sf0/0076
deleted file mode 100644
index 5790df9..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0076
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query xmlns:sf="http://www.opengis.net/ASDF" srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:Asdf"/></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0077 b/test/wfs/cite_wfs_1_1_0-sf0/0077
deleted file mode 100644
index 0b27434..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0077
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"/></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0078 b/test/wfs/cite_wfs_1_1_0-sf0/0078
deleted file mode 100644
index 84c3135..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0078
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:9.99.9:99999" typeName="sf:PrimitiveGeoFeature"/></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0079 b/test/wfs/cite_wfs_1_1_0-sf0/0079
deleted file mode 100644
index 013a7a7..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0079
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>name-f002</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0080 b/test/wfs/cite_wfs_1_1_0-sf0/0080
deleted file mode 100644
index e016177..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0080
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><wfs:PropertyName>sf:dateProperty</wfs:PropertyName><wfs:PropertyName>sf:dateTimeProperty</wfs:PropertyName></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0081 b/test/wfs/cite_wfs_1_1_0-sf0/0081
deleted file mode 100644
index 5ea0673..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0081
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"/><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:EntitéGénérique"/></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0082 b/test/wfs/cite_wfs_1_1_0-sf0/0082
deleted file mode 100644
index c9f3fef..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0082
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="11-02-2006"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"/></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0083 b/test/wfs/cite_wfs_1_1_0-sf0/0083
deleted file mode 100644
index d2fb8ba..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0083
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeatureLOL xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"/></wfs:GetFeatureLOL>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0084 b/test/wfs/cite_wfs_1_1_0-sf0/0084
deleted file mode 100644
index c047c75..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0084
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><sf:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"/></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0085 b/test/wfs/cite_wfs_1_1_0-sf0/0085
deleted file mode 100644
index b96dfd4..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0085
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"/><wfs:Smuery srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"/></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0086 b/test/wfs/cite_wfs_1_1_0-sf0/0086
deleted file mode 100644
index 0b27434..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0086
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"/></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0087 b/test/wfs/cite_wfs_1_1_0-sf0/0087
deleted file mode 100644
index 4a45f99..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0087
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="http://www.epsg.org/6.11.2/4326" typeName="sf:PrimitiveGeoFeature"/></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0088 b/test/wfs/cite_wfs_1_1_0-sf0/0088
deleted file mode 100644
index 381acf5..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0088
+++ /dev/null
@@ -1 +0,0 @@
-service=WFS&version=1.1.0&request=GetFeature&typename=sf:PrimitiveGeoFeature&namespace=xmlns(sf=http://cite.opengeospatial.org/gmlsf)
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0089 b/test/wfs/cite_wfs_1_1_0-sf0/0089
deleted file mode 100644
index 7f0eaa2..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0089
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>name-f003</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0090 b/test/wfs/cite_wfs_1_1_0-sf0/0090
deleted file mode 100644
index 69a96f1..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0090
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName xmlns:gml="http://www.opengis.net/ASDF">gml:name</ogc:PropertyName><ogc:Literal>name-f003</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0091 b/test/wfs/cite_wfs_1_1_0-sf0/0091
deleted file mode 100644
index bcfc5e9..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0091
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsGreaterThan><ogc:PropertyName>sf:intProperty</ogc:PropertyName><ogc:Literal>100</ogc:Literal></ogc:PropertyIsGreaterThan></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0092 b/test/wfs/cite_wfs_1_1_0-sf0/0092
deleted file mode 100644
index 57c51da..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0092
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>//gml:description</ogc:PropertyName><ogc:Literal>description-f008</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0093 b/test/wfs/cite_wfs_1_1_0-sf0/0093
deleted file mode 100644
index e14a899..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0093
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>*[1]</ogc:PropertyName><ogc:Literal>description-f001</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0094 b/test/wfs/cite_wfs_1_1_0-sf0/0094
deleted file mode 100644
index 7081599..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0094
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>*[position()=1]</ogc:PropertyName><ogc:Literal>description-f001</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0095 b/test/wfs/cite_wfs_1_1_0-sf0/0095
deleted file mode 100644
index 013a7a7..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0095
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>name-f002</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0096 b/test/wfs/cite_wfs_1_1_0-sf0/0096
deleted file mode 100644
index 14b77a7..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0096
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal><wfs:Native safeToIgnore="true" vendorId="ASDF"/></ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0097 b/test/wfs/cite_wfs_1_1_0-sf0/0097
deleted file mode 100644
index 2885541..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0097
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:BBOX><ogc:PropertyName>sf:pointProperty</ogc:PropertyName><gml:Envelope srsName="urn:x-ogc:def:crs:ASDF:9.99:9999"><gml:lowerCorner>47.0 -4.5</gml:lowerCorner><gml:upperCorner>52.0 1.0</gml:upperCorner></gml:Envelope></ogc:BBOX></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0098 b/test/wfs/cite_wfs_1_1_0-sf0/0098
deleted file mode 100644
index 95a1ad6..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0098
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:BBOX><ogc:PropertyName>sf:pointProperty</ogc:PropertyName><gml:Envelope srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:lowerCorner>57.0 -4.5</gml:lowerCorner><gml:upperCorner>62.0 1.0</gml:upperCorner></gml:Envelope></ogc:BBOX></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0099 b/test/wfs/cite_wfs_1_1_0-sf0/0099
deleted file mode 100644
index 948d56d..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0099
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:BBOX><ogc:PropertyName>sf:intProperty</ogc:PropertyName><gml:Envelope srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:lowerCorner>47.0 -4.5</gml:lowerCorner><gml:upperCorner>52.0 1.0</gml:upperCorner></gml:Envelope></ogc:BBOX></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0100 b/test/wfs/cite_wfs_1_1_0-sf0/0100
deleted file mode 100644
index 707b36f..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0100
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:BBOX><ogc:PropertyName>sf:pointProperty</ogc:PropertyName><gml:Envelope><gml:lowerCorner>37.0 -2.5</gml:lowerCorner><gml:upperCorner>42.0 2.5</gml:upperCorner></gml:Envelope></ogc:BBOX></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0101 b/test/wfs/cite_wfs_1_1_0-sf0/0101
deleted file mode 100644
index 4b81464..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0101
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:BBOX><ogc:PropertyName>sf:pointProperty</ogc:PropertyName><gml:Envelope srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:lowerCorner>39.63245 1.90342</gml:lowerCorner><gml:upperCorner>39.83245 2.10342</gml:upperCorner></gml:Envelope></ogc:BBOX></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0102 b/test/wfs/cite_wfs_1_1_0-sf0/0102
deleted file mode 100644
index a18c174..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0102
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:BBOX><ogc:PropertyName>sf:pointProperty</ogc:PropertyName><gml:Envelope srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:lowerCorner>39.63245 1.90342</gml:lowerCorner><gml:upperCorner>39.73245 2.00342</gml:upperCorner></gml:Envelope></ogc:BBOX></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0103 b/test/wfs/cite_wfs_1_1_0-sf0/0103
deleted file mode 100644
index 4e3978f..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0103
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:BBOX><ogc:PropertyName>sf:pointProperty</ogc:PropertyName><gml:Envelope srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:lowerCorner>0 0</gml:lowerCorner><gml:upperCorner>0.01 0.01</gml:upperCorner></gml:Envelope></ogc:BBOX></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0104 b/test/wfs/cite_wfs_1_1_0-sf0/0104
deleted file mode 100644
index 6b112bc..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0104
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:BBOX><ogc:PropertyName>sf:pointProperty</ogc:PropertyName><gml:Envelope srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:lowerCorner>50 -15</gml:lowerCorner><gml:upperCorner>72 5</gml:upperCorner></gml:Envelope></ogc:BBOX></ogc:Filter></wfs:Query><wfs:Query typeName="sf:EntitéGénérique"><ogc:Filter><ogc:BBOX><ogc:PropertyName>sf:attribut.Géométrie</ogc:PropertyName><gml:Envelope srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:lowerCorner>50 -15</gml:lowerCorner><gml:upperCorner>72 5</gml:upperCorner></gml:Envelope></ogc:BBOX></ogc:Filter></wfs:Query><wfs:Query typeName="sf:AggregateGeoFeature"><ogc:Filter><ogc:BBOX><ogc:PropertyName>sf:multiCurveProperty</ogc:PropertyName><gml:Envelope srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:lowerCorner>50 -15</gml:lowerCorner><gml:upperCorner>72 5</gml:upperCorner></gml:Envelope></ogc:BBOX></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0105 b/test/wfs/cite_wfs_1_1_0-sf0/0105
deleted file mode 100644
index 0b27434..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0105
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"/></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0106 b/test/wfs/cite_wfs_1_1_0-sf0/0106
deleted file mode 100644
index 024da46..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0106
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:GmlObjectId gml:id="PrimitiveGeoFeature.f001"/></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0107 b/test/wfs/cite_wfs_1_1_0-sf0/0107
deleted file mode 100644
index e7cfa29..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0107
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:GmlObjectId gml:id="f001"/><ogc:FeatureId fid="f002"/></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0108 b/test/wfs/cite_wfs_1_1_0-sf0/0108
deleted file mode 100644
index a2fa29e..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0108
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:AggregateGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>sf:strProperty</ogc:PropertyName><ogc:Literal>Ma quande lingues coalesce, li grammatica del resultant.</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0109 b/test/wfs/cite_wfs_1_1_0-sf0/0109
deleted file mode 100644
index 8b7ed60..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0109
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:AggregateGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo matchCase="false"><ogc:PropertyName>sf:strProperty</ogc:PropertyName><ogc:Literal>mA quANde lIngues COALEsce, li graMMatiCa dEl reSULtAnt.</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0110 b/test/wfs/cite_wfs_1_1_0-sf0/0110
deleted file mode 100644
index 1012001..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0110
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>sf:intProperty</ogc:PropertyName><ogc:Literal>300</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0111 b/test/wfs/cite_wfs_1_1_0-sf0/0111
deleted file mode 100644
index e38fee1..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0111
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:EntitéGénérique"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>sf:boolProperty</ogc:PropertyName><ogc:Literal>1</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0112 b/test/wfs/cite_wfs_1_1_0-sf0/0112
deleted file mode 100644
index b428fd2..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0112
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>sf:dateProperty</ogc:PropertyName><ogc:Literal>2006-12-12Z</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0113 b/test/wfs/cite_wfs_1_1_0-sf0/0113
deleted file mode 100644
index 3972191..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0113
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>sf:dateProperty</ogc:PropertyName><ogc:Literal>2999-12-12</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0114 b/test/wfs/cite_wfs_1_1_0-sf0/0114
deleted file mode 100644
index 2c3559e..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0114
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:EntitéGénérique"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>gml:description</ogc:PropertyName><ogc:Literal>description-f004</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0115 b/test/wfs/cite_wfs_1_1_0-sf0/0115
deleted file mode 100644
index 23bf2eb..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0115
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsNotEqualTo><ogc:PropertyName>gml:description</ogc:PropertyName><ogc:Literal>description-f003</ogc:Literal></ogc:PropertyIsNotEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0116 b/test/wfs/cite_wfs_1_1_0-sf0/0116
deleted file mode 100644
index 3121e7e..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0116
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsNotEqualTo matchCase="false"><ogc:PropertyName>gml:description</ogc:PropertyName><ogc:Literal>deSCRIption-F003</ogc:Literal></ogc:PropertyIsNotEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0117 b/test/wfs/cite_wfs_1_1_0-sf0/0117
deleted file mode 100644
index e750eec..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0117
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsNotEqualTo><ogc:PropertyName>sf:intProperty</ogc:PropertyName><ogc:Literal>300</ogc:Literal></ogc:PropertyIsNotEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0118 b/test/wfs/cite_wfs_1_1_0-sf0/0118
deleted file mode 100644
index 43e6adf..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0118
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:EntitéGénérique"><ogc:Filter><ogc:PropertyIsNotEqualTo><ogc:PropertyName>sf:boolProperty</ogc:PropertyName><ogc:Literal>0</ogc:Literal></ogc:PropertyIsNotEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0119 b/test/wfs/cite_wfs_1_1_0-sf0/0119
deleted file mode 100644
index e1854fa..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0119
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsNotEqualTo><ogc:PropertyName>sf:dateProperty</ogc:PropertyName><ogc:Literal>2006-12-12Z</ogc:Literal></ogc:PropertyIsNotEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0120 b/test/wfs/cite_wfs_1_1_0-sf0/0120
deleted file mode 100644
index 665b531..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0120
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsLessThan><ogc:PropertyName>sf:decimalProperty</ogc:PropertyName><ogc:Literal>15</ogc:Literal></ogc:PropertyIsLessThan></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0121 b/test/wfs/cite_wfs_1_1_0-sf0/0121
deleted file mode 100644
index 5138c31..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0121
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:AggregateGeoFeature"><ogc:Filter><ogc:PropertyIsLessThan><ogc:PropertyName>sf:doubleProperty</ogc:PropertyName><ogc:Literal>2200.11</ogc:Literal></ogc:PropertyIsLessThan></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0122 b/test/wfs/cite_wfs_1_1_0-sf0/0122
deleted file mode 100644
index 67578a0..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0122
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsLessThan><ogc:PropertyName>sf:intProperty</ogc:PropertyName><ogc:Literal>100</ogc:Literal></ogc:PropertyIsLessThan></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0123 b/test/wfs/cite_wfs_1_1_0-sf0/0123
deleted file mode 100644
index 3bebe38..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0123
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsLessThan><ogc:PropertyName>sf:dateProperty</ogc:PropertyName><ogc:Literal>2006-10-23Z</ogc:Literal></ogc:PropertyIsLessThan></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0124 b/test/wfs/cite_wfs_1_1_0-sf0/0124
deleted file mode 100644
index 9ab1e22..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0124
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsGreaterThan><ogc:PropertyName>sf:decimalProperty</ogc:PropertyName><ogc:Literal>12.5</ogc:Literal></ogc:PropertyIsGreaterThan></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0125 b/test/wfs/cite_wfs_1_1_0-sf0/0125
deleted file mode 100644
index 71cac14..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0125
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:AggregateGeoFeature"><ogc:Filter><ogc:PropertyIsGreaterThan><ogc:PropertyName>sf:doubleProperty</ogc:PropertyName><ogc:Literal>2012.78</ogc:Literal></ogc:PropertyIsGreaterThan></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0126 b/test/wfs/cite_wfs_1_1_0-sf0/0126
deleted file mode 100644
index f233d21..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0126
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsGreaterThan><ogc:PropertyName>sf:dateProperty</ogc:PropertyName><ogc:Literal>2006-10-22Z</ogc:Literal></ogc:PropertyIsGreaterThan></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0127 b/test/wfs/cite_wfs_1_1_0-sf0/0127
deleted file mode 100644
index 691a46a..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0127
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsGreaterThan><ogc:PropertyName>sf:dateTimeProperty</ogc:PropertyName><ogc:Literal>2006-06-28T19:08:00+02:00</ogc:Literal></ogc:PropertyIsGreaterThan></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0128 b/test/wfs/cite_wfs_1_1_0-sf0/0128
deleted file mode 100644
index 5009778..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0128
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsLessThanOrEqualTo><ogc:PropertyName>sf:decimalProperty</ogc:PropertyName><ogc:Literal>5.03</ogc:Literal></ogc:PropertyIsLessThanOrEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0129 b/test/wfs/cite_wfs_1_1_0-sf0/0129
deleted file mode 100644
index ddca053..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0129
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:AggregateGeoFeature"><ogc:Filter><ogc:PropertyIsLessThanOrEqualTo><ogc:PropertyName>sf:doubleProperty</ogc:PropertyName><ogc:Literal>-200.009</ogc:Literal></ogc:PropertyIsLessThanOrEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0130 b/test/wfs/cite_wfs_1_1_0-sf0/0130
deleted file mode 100644
index 21ecac0..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0130
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsLessThanOrEqualTo><ogc:PropertyName>sf:intProperty</ogc:PropertyName><ogc:Literal>180</ogc:Literal></ogc:PropertyIsLessThanOrEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0131 b/test/wfs/cite_wfs_1_1_0-sf0/0131
deleted file mode 100644
index f4dae29..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0131
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsLessThanOrEqualTo><ogc:PropertyName>sf:dateTimeProperty</ogc:PropertyName><ogc:Literal>2006-06-28T19:08:00+02:00</ogc:Literal></ogc:PropertyIsLessThanOrEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0132 b/test/wfs/cite_wfs_1_1_0-sf0/0132
deleted file mode 100644
index 560cb23..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0132
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsGreaterThanOrEqualTo><ogc:PropertyName>sf:decimalProperty</ogc:PropertyName><ogc:Literal>12.5</ogc:Literal></ogc:PropertyIsGreaterThanOrEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0133 b/test/wfs/cite_wfs_1_1_0-sf0/0133
deleted file mode 100644
index 2929a11..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0133
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:AggregateGeoFeature"><ogc:Filter><ogc:PropertyIsGreaterThanOrEqualTo><ogc:PropertyName>sf:doubleProperty</ogc:PropertyName><ogc:Literal>2012.78</ogc:Literal></ogc:PropertyIsGreaterThanOrEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0134 b/test/wfs/cite_wfs_1_1_0-sf0/0134
deleted file mode 100644
index a8f1fe5..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0134
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsGreaterThanOrEqualTo><ogc:PropertyName>sf:dateProperty</ogc:PropertyName><ogc:Literal>2999-10-22</ogc:Literal></ogc:PropertyIsGreaterThanOrEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0135 b/test/wfs/cite_wfs_1_1_0-sf0/0135
deleted file mode 100644
index 0d4a6cb..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0135
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsGreaterThanOrEqualTo><ogc:PropertyName>sf:dateTimeProperty</ogc:PropertyName><ogc:Literal>2006-06-28T07:06:00+02:00</ogc:Literal></ogc:PropertyIsGreaterThanOrEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0136 b/test/wfs/cite_wfs_1_1_0-sf0/0136
deleted file mode 100644
index dd04e68..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0136
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsBetween><ogc:PropertyName>sf:decimalProperty</ogc:PropertyName><ogc:LowerBoundary><ogc:Literal>10</ogc:Literal></ogc:LowerBoundary><ogc:UpperBoundary><ogc:Literal>20</ogc:Literal></ogc:UpperBoundary></ogc:PropertyIsBetween></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0137 b/test/wfs/cite_wfs_1_1_0-sf0/0137
deleted file mode 100644
index 5155d59..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0137
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:AggregateGeoFeature"><ogc:Filter><ogc:PropertyIsBetween><ogc:PropertyName>sf:doubleProperty</ogc:PropertyName><ogc:LowerBoundary><ogc:Literal>20.1</ogc:Literal></ogc:LowerBoundary><ogc:UpperBoundary><ogc:Literal>24509.5</ogc:Literal></ogc:UpperBoundary></ogc:PropertyIsBetween></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0138 b/test/wfs/cite_wfs_1_1_0-sf0/0138
deleted file mode 100644
index 471b63a..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0138
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsBetween><ogc:PropertyName>sf:dateProperty</ogc:PropertyName><ogc:LowerBoundary><ogc:Literal>2006-09-01Z</ogc:Literal></ogc:LowerBoundary><ogc:UpperBoundary><ogc:Literal>2006-11-01Z</ogc:Literal></ogc:UpperBoundary></ogc:PropertyIsBetween></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0139 b/test/wfs/cite_wfs_1_1_0-sf0/0139
deleted file mode 100644
index 7bed6e3..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0139
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsBetween><ogc:PropertyName>sf:dateProperty</ogc:PropertyName><ogc:LowerBoundary><ogc:Literal>2999-09-01</ogc:Literal></ogc:LowerBoundary><ogc:UpperBoundary><ogc:Literal>2999-11-01</ogc:Literal></ogc:UpperBoundary></ogc:PropertyIsBetween></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0140 b/test/wfs/cite_wfs_1_1_0-sf0/0140
deleted file mode 100644
index a83dd8b..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0140
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:EntitéGénérique"/></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0141 b/test/wfs/cite_wfs_1_1_0-sf0/0141
deleted file mode 100644
index e2160d2..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0141
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:EntitéGénérique"><ogc:Filter><ogc:GmlObjectId gml:id="EntitéGénérique.f004"/><ogc:GmlObjectId gml:id=""/></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0142 b/test/wfs/cite_wfs_1_1_0-sf0/0142
deleted file mode 100644
index 1472140..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0142
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:BBOX><ogc:PropertyName>sf:pointProperty</ogc:PropertyName><gml:Envelope><gml:lowerCorner>37.0 -2.5</gml:lowerCorner><gml:upperCorner>42.0 2.5</gml:upperCorner></gml:Envelope></ogc:BBOX></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0143 b/test/wfs/cite_wfs_1_1_0-sf0/0143
deleted file mode 100644
index 62bca8d..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0143
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:SortBy><ogc:SortProperty><ogc:PropertyName>sf:intProperty</ogc:PropertyName><ogc:SortOrder>ASC</ogc:SortOrder></ogc:SortProperty></ogc:SortBy></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0144 b/test/wfs/cite_wfs_1_1_0-sf0/0144
deleted file mode 100644
index b96d738..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0144
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:SortBy><ogc:SortProperty><ogc:PropertyName>sf:intProperty</ogc:PropertyName><ogc:SortOrder>DESC</ogc:SortOrder></ogc:SortProperty></ogc:SortBy></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0145 b/test/wfs/cite_wfs_1_1_0-sf0/0145
deleted file mode 100644
index 5818392..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0145
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:AggregateGeoFeature"><ogc:SortBy><ogc:SortProperty><ogc:PropertyName>sf:featureCode</ogc:PropertyName><ogc:SortOrder>ASC</ogc:SortOrder></ogc:SortProperty></ogc:SortBy></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0146 b/test/wfs/cite_wfs_1_1_0-sf0/0146
deleted file mode 100644
index 883914a..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0146
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:AggregateGeoFeature"><ogc:SortBy><ogc:SortProperty><ogc:PropertyName>sf:featureCode</ogc:PropertyName><ogc:SortOrder>DESC</ogc:SortOrder></ogc:SortProperty></ogc:SortBy></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0147 b/test/wfs/cite_wfs_1_1_0-sf0/0147
deleted file mode 100644
index ef91e41..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0147
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:SortBy><ogc:SortProperty><ogc:PropertyName>sf:dateProperty</ogc:PropertyName><ogc:SortOrder>ASC</ogc:SortOrder></ogc:SortProperty></ogc:SortBy></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0148 b/test/wfs/cite_wfs_1_1_0-sf0/0148
deleted file mode 100644
index fba1e22..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0148
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:SortBy><ogc:SortProperty><ogc:PropertyName>sf:dateProperty</ogc:PropertyName><ogc:SortOrder>DESC</ogc:SortOrder></ogc:SortProperty></ogc:SortBy></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0149 b/test/wfs/cite_wfs_1_1_0-sf0/0149
deleted file mode 100644
index 63f00f5..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0149
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:AggregateGeoFeature"><ogc:Filter><ogc:PropertyIsLike escapeChar="\" singleChar="?" wildCard="*"><ogc:PropertyName>sf:strProperty</ogc:PropertyName><ogc:Literal>*Ma quande lingues coalesce*</ogc:Literal></ogc:PropertyIsLike></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0150 b/test/wfs/cite_wfs_1_1_0-sf0/0150
deleted file mode 100644
index 5a68d89..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0150
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsLike escapeChar="\" singleChar="?" wildCard="*"><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>name-f01?</ogc:Literal></ogc:PropertyIsLike></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0151 b/test/wfs/cite_wfs_1_1_0-sf0/0151
deleted file mode 100644
index 42e0b53..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0151
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsLike escapeChar="\" singleChar="?" wildCard="*"><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>nam??-f00?</ogc:Literal></ogc:PropertyIsLike></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0152 b/test/wfs/cite_wfs_1_1_0-sf0/0152
deleted file mode 100644
index 192109e..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0152
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsLike escapeChar="\" singleChar="?" wildCard="*"><ogc:PropertyName>sf:dateProperty</ogc:PropertyName><ogc:Literal>20*-10-??</ogc:Literal></ogc:PropertyIsLike></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0153 b/test/wfs/cite_wfs_1_1_0-sf0/0153
deleted file mode 100644
index e3c22c8..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0153
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:PrimitiveGeoFeature"><wfs:PropertyName>sf:uriProperty</wfs:PropertyName><ogc:Filter><ogc:PropertyIsNull><ogc:PropertyName>sf:uriProperty</ogc:PropertyName></ogc:PropertyIsNull></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0154 b/test/wfs/cite_wfs_1_1_0-sf0/0154
deleted file mode 100644
index 36b4437..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0154
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsNull><ogc:PropertyName>sf:intProperty</ogc:PropertyName></ogc:PropertyIsNull></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0155 b/test/wfs/cite_wfs_1_1_0-sf0/0155
deleted file mode 100644
index 0de287a..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0155
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:AggregateGeoFeature"><ogc:Filter><ogc:PropertyIsNull><ogc:PropertyName>sf:multiCurveProperty</ogc:PropertyName></ogc:PropertyIsNull></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0156 b/test/wfs/cite_wfs_1_1_0-sf0/0156
deleted file mode 100644
index 432ff74..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0156
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:AggregateGeoFeature"><ogc:Filter><ogc:Not><ogc:PropertyIsBetween><ogc:PropertyName>sf:doubleProperty</ogc:PropertyName><ogc:LowerBoundary><ogc:Literal>20.0</ogc:Literal></ogc:LowerBoundary><ogc:UpperBoundary><ogc:Literal>100.0</ogc:Literal></ogc:UpperBoundary></ogc:PropertyIsBetween></ogc:Not></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0157 b/test/wfs/cite_wfs_1_1_0-sf0/0157
deleted file mode 100644
index 33a86a8..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0157
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:EntitéGénérique"><ogc:Filter><ogc:Not><ogc:BBOX><ogc:PropertyName>attribut.Géométrie</ogc:PropertyName><gml:Envelope srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:lowerCorner>34.0 16.0</gml:lowerCorner><gml:upperCorner>40.0 19.0</gml:upperCorner></gml:Envelope></ogc:BBOX></ogc:Not></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0158 b/test/wfs/cite_wfs_1_1_0-sf0/0158
deleted file mode 100644
index 334002b..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0158
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:EntitéGénérique"><ogc:Filter><ogc:Not><ogc:Not><ogc:BBOX><ogc:PropertyName>attribut.Géométrie</ogc:PropertyName><gml:Envelope srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:lowerCorner>55.0 -2.5</gml:lowerCorner><gml:upperCorner>65.0 2.5</gml:upperCorner></gml:Envelope></ogc:BBOX></ogc:Not></ogc:Not></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0159 b/test/wfs/cite_wfs_1_1_0-sf0/0159
deleted file mode 100644
index 8a78b06..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0159
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:And><ogc:BBOX><ogc:PropertyName>sf:pointProperty</ogc:PropertyName><gml:Envelope srsName="urn:x-ogc:def:crs:EPSG:6.11:4326"><gml:lowerCorner>36.0 -1.0</gml:lowerCorner><gml:upperCorner>42.0 4.0</gml:upperCorner></gml:Envelope></ogc:BBOX><ogc:PropertyIsGreaterThan><ogc:PropertyName>sf:dateProperty</ogc:PropertyName><ogc:Literal>2006-10-01Z</ogc:Literal></ogc:PropertyIsGreaterThan></ogc:And></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0160 b/test/wfs/cite_wfs_1_1_0-sf0/0160
deleted file mode 100644
index eece762..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0160
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:AggregateGeoFeature"><ogc:Filter><ogc:And><ogc:PropertyIsGreaterThanOrEqualTo><ogc:PropertyName>sf:doubleProperty</ogc:PropertyName><ogc:Literal>24510</ogc:Literal></ogc:PropertyIsGreaterThanOrEqualTo><ogc:PropertyIsEqualTo matchCase="false"><ogc:PropertyName>sf:featureCode</ogc:PropertyName><ogc:Literal>ak020</ogc:Literal></ogc:PropertyIsEqualTo></ogc:And></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0161 b/test/wfs/cite_wfs_1_1_0-sf0/0161
deleted file mode 100644
index 444cfcf..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0161
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:AggregateGeoFeature"><ogc:Filter><ogc:And><ogc:Not><ogc:BBOX><ogc:PropertyName/><gml:Envelope srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:lowerCorner>40.0 -5.0</gml:lowerCorner><gml:upperCorner>50.0 -1.0</gml:upperCorner></gml:Envelope></ogc:BBOX></ogc:Not><ogc:PropertyIsGreaterThan><ogc:PropertyName>sf:doubleProperty</ogc:PropertyName><ogc:Literal>20.0</ogc:Literal></ogc:PropertyIsGreaterThan></ogc:And></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0162 b/test/wfs/cite_wfs_1_1_0-sf0/0162
deleted file mode 100644
index 508d35f..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0162
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:EntitéGénérique"><ogc:Filter><ogc:Or><ogc:PropertyIsEqualTo><ogc:PropertyName>sf:str4Property</ogc:PropertyName><ogc:Literal>abc3</ogc:Literal></ogc:PropertyIsEqualTo><ogc:BBOX><ogc:PropertyName>sf:attribut.Géométrie</ogc:PropertyName><gml:Envelope srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:lowerCorner>34.0 15.0</gml:lowerCorner><gml:upperCorner>40.0 19.0</gml:upperCorner></gml:Envelope></ogc:BBOX></ogc:Or></ogc:Filter><ogc:SortBy><ogc:SortProperty><ogc:PropertyName>sf:str4Property</ogc:PropertyName><ogc:SortOrder>ASC</ogc:SortOrder></ogc:SortProperty></ogc:SortBy></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0163 b/test/wfs/cite_wfs_1_1_0-sf0/0163
deleted file mode 100644
index c0798a6..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0163
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:Or><ogc:PropertyIsNotEqualTo><ogc:PropertyName>sf:intProperty</ogc:PropertyName><ogc:Literal>155</ogc:Literal></ogc:PropertyIsNotEqualTo><ogc:PropertyIsBetween><ogc:PropertyName>sf:decimalProperty</ogc:PropertyName><ogc:LowerBoundary><ogc:Literal>10.00</ogc:Literal></ogc:LowerBoundary><ogc:UpperBoundary><ogc:Literal>20.00</ogc:Literal></ogc:UpperBoundary></ogc:PropertyIsBetween></ogc:Or></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0164 b/test/wfs/cite_wfs_1_1_0-sf0/0164
deleted file mode 100644
index f8157a1..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0164
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:Disjoint><ogc:PropertyName>sf:surfaceProperty</ogc:PropertyName><gml:LineString srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:posList>45.017 30.422 45.208 30.603 45.757 30.812 45.957 30.926</gml:posList></gml:LineString></ogc:Disjoint></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0165 b/test/wfs/cite_wfs_1_1_0-sf0/0165
deleted file mode 100644
index 21c226e..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0165
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:EntitéGénérique"><ogc:Filter><ogc:BBOX><ogc:PropertyName/><gml:Envelope srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:lowerCorner>34 14</gml:lowerCorner><gml:upperCorner>41 23</gml:upperCorner></gml:Envelope></ogc:BBOX></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0166 b/test/wfs/cite_wfs_1_1_0-sf0/0166
deleted file mode 100644
index f17420b..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0166
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:AggregateGeoFeature"><ogc:Filter><ogc:Disjoint><ogc:PropertyName>sf:multiSurfaceProperty</ogc:PropertyName><gml:Envelope srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:lowerCorner>48.0 18.0</gml:lowerCorner><gml:upperCorner>52.0 21.0</gml:upperCorner></gml:Envelope></ogc:Disjoint></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0167 b/test/wfs/cite_wfs_1_1_0-sf0/0167
deleted file mode 100644
index 9d84000..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0167
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:AggregateGeoFeature"><ogc:Filter><ogc:Disjoint><ogc:PropertyName>sf:multiCurveProperty</ogc:PropertyName><gml:Curve srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:segments><gml:Circle interpolation="circularArc3Points"><gml:posList>57.5 19.0 57.0 20.0 57.5 21.0</gml:posList></gml:Circle></gml:segments></gml:Curve></ogc:Disjoint></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0168 b/test/wfs/cite_wfs_1_1_0-sf0/0168
deleted file mode 100644
index 07b5af0..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0168
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:Intersects><ogc:PropertyName>sf:pointProperty</ogc:PropertyName><gml:Polygon srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:exterior><gml:LinearRing><gml:posList>34.0 -12.0 34.0 4.0 42.0 4.0 42.0 -12.0 34.0 -12.0</gml:posList></gml:LinearRing></gml:exterior></gml:Polygon></ogc:Intersects></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0169 b/test/wfs/cite_wfs_1_1_0-sf0/0169
deleted file mode 100644
index ae2537f..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0169
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:EntitéGénérique"><ogc:Filter><ogc:Intersects><ogc:PropertyName>sf:attribut.Géométrie</ogc:PropertyName><gml:MultiPoint srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:pointMember><gml:Point><gml:pos>38.83 16.22</gml:pos></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:pos>62.07 2.48</gml:pos></gml:Point></gml:pointMember></gml:MultiPoint></ogc:Intersects></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0170 b/test/wfs/cite_wfs_1_1_0-sf0/0170
deleted file mode 100644
index d03ef32..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0170
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:AggregateGeoFeature"><ogc:Filter><ogc:Intersects><ogc:PropertyName>sf:multiSurfaceProperty</ogc:PropertyName><gml:LinearRing srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:posList>57.0 7.5 57.0 8.5 58.0 8.5 58.0 7.5 57.0 7.5</gml:posList></gml:LinearRing></ogc:Intersects></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0171 b/test/wfs/cite_wfs_1_1_0-sf0/0171
deleted file mode 100644
index 59a8893..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0171
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:AggregateGeoFeature"><ogc:Filter><ogc:Intersects><ogc:PropertyName>sf:curveProperty</ogc:PropertyName><gml:Envelope srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:lowerCorner>56.0 -8.0</gml:lowerCorner><gml:upperCorner>60.0 -2.0</gml:upperCorner></gml:Envelope></ogc:Intersects></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0172 b/test/wfs/cite_wfs_1_1_0-sf0/0172
deleted file mode 100644
index 229e012..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0172
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:Within><ogc:PropertyName>sf:curveProperty</ogc:PropertyName><gml:Envelope srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:lowerCorner>45.050 8.800</gml:lowerCorner><gml:upperCorner>47.114 11.021</gml:upperCorner></gml:Envelope></ogc:Within></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0173 b/test/wfs/cite_wfs_1_1_0-sf0/0173
deleted file mode 100644
index c347996..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0173
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:Within><ogc:PropertyName>sf:pointProperty</ogc:PropertyName><gml:Polygon srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:exterior><gml:LinearRing><gml:posList>38.0 0.0 38.0 6.0 43.0 0.0 38.0 0.0</gml:posList></gml:LinearRing></gml:exterior></gml:Polygon></ogc:Within></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0174 b/test/wfs/cite_wfs_1_1_0-sf0/0174
deleted file mode 100644
index 0d8ee21..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0174
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:EntitéGénérique"><ogc:Filter><ogc:Within><ogc:PropertyName/><gml:Polygon srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:exterior><gml:LinearRing><gml:posList>55.1 -8.0 55.1 -5.4 60.0 -5.4 60.0 -8.0 55.1 -8.0</gml:posList></gml:LinearRing></gml:exterior></gml:Polygon></ogc:Within></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0175 b/test/wfs/cite_wfs_1_1_0-sf0/0175
deleted file mode 100644
index 44fad55..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0175
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:EntitéGénérique"><ogc:Filter><ogc:Overlaps><ogc:PropertyName>sf:attribut.Géométrie</ogc:PropertyName><gml:Envelope srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:lowerCorner>56.05 -2.00</gml:lowerCorner><gml:upperCorner>62.11 2.02</gml:upperCorner></gml:Envelope></ogc:Overlaps></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0176 b/test/wfs/cite_wfs_1_1_0-sf0/0176
deleted file mode 100644
index bd42494..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0176
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:AggregateGeoFeature"><ogc:Filter><ogc:Overlaps><ogc:PropertyName>sf:multiSurfaceProperty</ogc:PropertyName><gml:MultiSurface srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:surfaceMember><gml:Polygon><gml:exterior><gml:LinearRing><gml:posList>48.0 18.0 48.0 23.0 54.0 23.0 54.0 18.0 48.0 18.0</gml:posList></gml:LinearRing></gml:exterior></gml:Polygon></gml:surfaceMember><gml:surfaceMember><gml:Polygon><gml:exterior><gml:LinearRing><gml:posList>59.0 4.0 55.0 8.0 59.0 12.0 59.0 4.0</gml:posList></gml:LinearRing></gml:exterior></gml:Polygon></gml:surfaceMember></gml:MultiSurface></ogc:Overlaps></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0177 b/test/wfs/cite_wfs_1_1_0-sf0/0177
deleted file mode 100644
index 5008174..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0177
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:Overlaps><ogc:PropertyName>sf:curveProperty</ogc:PropertyName><gml:LineString srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:posList>46.652 10.466 47.114 11.021 46.114 12.114 45.725 12.523</gml:posList></gml:LineString></ogc:Overlaps></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0178 b/test/wfs/cite_wfs_1_1_0-sf0/0178
deleted file mode 100644
index f7c7a3f..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0178
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:Overlaps><ogc:PropertyName>sf:surfaceProperty</ogc:PropertyName><gml:LineString srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:posList>44.80 30.75 46.50 30.75 48.00 31.25</gml:posList></gml:LineString></ogc:Overlaps></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0179 b/test/wfs/cite_wfs_1_1_0-sf0/0179
deleted file mode 100644
index 9c89951..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0179
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:AggregateGeoFeature"><ogc:Filter><ogc:Equals><ogc:PropertyName>sf:multiPointProperty</ogc:PropertyName><gml:MultiPoint srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:pointMember><gml:Point><gml:pos>70.83 29.86</gml:pos></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:pos>68.87 31.08</gml:pos></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:pos>71.96 32.19</gml:pos></gml:Point></gml:pointMember></gml:MultiPoint></ogc:Equals></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0180 b/test/wfs/cite_wfs_1_1_0-sf0/0180
deleted file mode 100644
index b410978..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0180
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:AggregateGeoFeature"><ogc:Filter><ogc:Equals><ogc:PropertyName>sf:pointProperty</ogc:PropertyName><gml:Point srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:pos>59.41276 0.22601</gml:pos></gml:Point></ogc:Equals></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0181 b/test/wfs/cite_wfs_1_1_0-sf0/0181
deleted file mode 100644
index 2a4dcb0..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0181
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:EntitéGénérique"><ogc:Filter><ogc:Equals><ogc:PropertyName>sf:attribut.Géométrie</ogc:PropertyName><gml:Polygon srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:exterior><gml:LinearRing><gml:posList>60.5 0 64 0 64 6.25 60.5 6.25 60.5 0</gml:posList></gml:LinearRing></gml:exterior><gml:interior><gml:LinearRing><gml:posList>61.5 2 62.5 2 62 4 61.5 2</gml:posList></gml:LinearRing></gml:interior></gml:Polygon></ogc:Equals></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0182 b/test/wfs/cite_wfs_1_1_0-sf0/0182
deleted file mode 100644
index a340cb8..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0182
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:Contains><ogc:PropertyName>sf:curveProperty</ogc:PropertyName><gml:LineString srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:posList>46.074 9.799 46.652 10.466</gml:posList></gml:LineString></ogc:Contains></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0183 b/test/wfs/cite_wfs_1_1_0-sf0/0183
deleted file mode 100644
index 14ceee9..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0183
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:EntitéGénérique"><ogc:Filter><ogc:Contains><ogc:PropertyName>sf:attribut.Géométrie</ogc:PropertyName><gml:Point srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:pos>63.123 5.321</gml:pos></gml:Point></ogc:Contains></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0184 b/test/wfs/cite_wfs_1_1_0-sf0/0184
deleted file mode 100644
index db846f1..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0184
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:AggregateGeoFeature"><ogc:Filter><ogc:Contains><ogc:PropertyName>sf:multiSurfaceProperty</ogc:PropertyName><gml:Polygon srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:exterior><gml:LinearRing><gml:posList>35.1 -8.0 35.1 -8.4 35.2 -8.4 35.2 -8.0 35.1 -8.0</gml:posList></gml:LinearRing></gml:exterior></gml:Polygon></ogc:Contains></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0185 b/test/wfs/cite_wfs_1_1_0-sf0/0185
deleted file mode 100644
index d90f292..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0185
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:Touches><ogc:PropertyName>sf:surfaceProperty</ogc:PropertyName><gml:Envelope srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:lowerCorner>0.1 -1.0</gml:lowerCorner><gml:upperCorner>0.2 -0.9</gml:upperCorner></gml:Envelope></ogc:Touches></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0186 b/test/wfs/cite_wfs_1_1_0-sf0/0186
deleted file mode 100644
index 195acfa..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0186
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:AggregateGeoFeature"><ogc:Filter><ogc:Touches><ogc:PropertyName>sf:multiCurveProperty</ogc:PropertyName><gml:Point srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:pos>55.174 -5.899</gml:pos></gml:Point></ogc:Touches></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0187 b/test/wfs/cite_wfs_1_1_0-sf0/0187
deleted file mode 100644
index d479624..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0187
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:AggregateGeoFeature"><ogc:Filter><ogc:Touches><ogc:PropertyName>sf:multiSurfaceProperty</ogc:PropertyName><gml:LineString srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:posList>54 19 54 18 54 17</gml:posList></gml:LineString></ogc:Touches></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0188 b/test/wfs/cite_wfs_1_1_0-sf0/0188
deleted file mode 100644
index 89d9c0c..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0188
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:Crosses><ogc:PropertyName>sf:surfaceProperty</ogc:PropertyName><gml:LineString srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:posList>0 0 1 1 2 2</gml:posList></gml:LineString></ogc:Crosses></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0189 b/test/wfs/cite_wfs_1_1_0-sf0/0189
deleted file mode 100644
index 922e524..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0189
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:Crosses><ogc:PropertyName>sf:curveProperty</ogc:PropertyName><gml:LineString srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:posList>47.1 9.8 46.1 11.0</gml:posList></gml:LineString></ogc:Crosses></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0190 b/test/wfs/cite_wfs_1_1_0-sf0/0190
deleted file mode 100644
index 22c7cc5..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0190
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query typeName="sf:AggregateGeoFeature"><ogc:Filter><ogc:Crosses><ogc:PropertyName>sf:multiSurfaceProperty</ogc:PropertyName><gml:LineString srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:posList>53 22 54 21 54 20 54 19 54 18 54 17</gml:posList></gml:LineString></ogc:Crosses></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0191 b/test/wfs/cite_wfs_1_1_0-sf0/0191
deleted file mode 100644
index 9910d8a..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0191
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>sf:intProperty</ogc:PropertyName><ogc:Add><ogc:PropertyName>sf:decimalProperty</ogc:PropertyName><ogc:Literal>149.97</ogc:Literal></ogc:Add></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0192 b/test/wfs/cite_wfs_1_1_0-sf0/0192
deleted file mode 100644
index 75d6f93..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0192
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsGreaterThan><ogc:PropertyName>sf:intProperty</ogc:PropertyName><ogc:Add><ogc:PropertyName>sf:decimalProperty</ogc:PropertyName><ogc:Literal>1</ogc:Literal></ogc:Add></ogc:PropertyIsGreaterThan></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0193 b/test/wfs/cite_wfs_1_1_0-sf0/0193
deleted file mode 100644
index aead4ad..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0193
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:Function name="ASDF"><ogc:PropertyName>sf:intProperty</ogc:PropertyName></ogc:Function><ogc:Literal>1</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0194 b/test/wfs/cite_wfs_1_1_0-sf0/0194
deleted file mode 100644
index 301aa62..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0194
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>sf:decimalProperty</ogc:PropertyName><ogc:Sub><ogc:PropertyName>sf:intProperty</ogc:PropertyName><ogc:Literal>149.98</ogc:Literal></ogc:Sub></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0195 b/test/wfs/cite_wfs_1_1_0-sf0/0195
deleted file mode 100644
index f449af8..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0195
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsLessThan><ogc:PropertyName>sf:decimalProperty</ogc:PropertyName><ogc:Sub><ogc:PropertyName>sf:intProperty</ogc:PropertyName><ogc:Literal>10</ogc:Literal></ogc:Sub></ogc:PropertyIsLessThan></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0196 b/test/wfs/cite_wfs_1_1_0-sf0/0196
deleted file mode 100644
index 70ef4d6..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0196
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsGreaterThan><ogc:PropertyName>sf:intProperty</ogc:PropertyName><ogc:Mul><ogc:PropertyName>sf:decimalProperty</ogc:PropertyName><ogc:Literal>2</ogc:Literal></ogc:Mul></ogc:PropertyIsGreaterThan></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0197 b/test/wfs/cite_wfs_1_1_0-sf0/0197
deleted file mode 100644
index 2d268e6..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0197
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsLessThanOrEqualTo><ogc:PropertyName>sf:intProperty</ogc:PropertyName><ogc:Mul><ogc:PropertyName>sf:decimalProperty</ogc:PropertyName><ogc:Literal>-1</ogc:Literal></ogc:Mul></ogc:PropertyIsLessThanOrEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0198 b/test/wfs/cite_wfs_1_1_0-sf0/0198
deleted file mode 100644
index f74fc7e..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0198
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:AggregateGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>sf:doubleProperty</ogc:PropertyName><ogc:Div><ogc:PropertyName>sf:doubleProperty</ogc:PropertyName><ogc:Literal>9999</ogc:Literal></ogc:Div></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0199 b/test/wfs/cite_wfs_1_1_0-sf0/0199
deleted file mode 100644
index f157ef5..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0199
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetFeature xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Query srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsGreaterThan><ogc:PropertyName>sf:decimalProperty</ogc:PropertyName><ogc:Div><ogc:PropertyName>sf:intProperty</ogc:PropertyName><ogc:Literal>2</ogc:Literal></ogc:Div></ogc:PropertyIsGreaterThan></ogc:Filter></wfs:Query></wfs:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0200 b/test/wfs/cite_wfs_1_1_0-sf0/0200
deleted file mode 100644
index 08aa187..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0200
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetFeature&typename=sf:PrimitiveGeoFeature&bbox=34.94,-10.52,71.96,32.19,urn:x-ogc:def:crs:EPSG:6.11.2:4326&namespace=xmlns(sf=http://cite.opengeospatial.org/gmlsf)
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0201 b/test/wfs/cite_wfs_1_1_0-sf0/0201
deleted file mode 100644
index b3ccb13..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0201
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetFeature&typename=sf:PrimitiveGeoFeature&bbox=34.94,-10.52,71.96,32.19&namespace=xmlns(sf=http://cite.opengeospatial.org/gmlsf)
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0202 b/test/wfs/cite_wfs_1_1_0-sf0/0202
deleted file mode 100644
index 9688ae9..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0202
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetFeature&typename=sf:PrimitiveGeoFeature&bbox=0,0,0.01,0.01&namespace=xmlns(sf=http://cite.opengeospatial.org/gmlsf)
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0203 b/test/wfs/cite_wfs_1_1_0-sf0/0203
deleted file mode 100644
index df99762..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0203
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetFeature&typename=sf:PrimitiveGeoFeature&namespace=xmlns(sf=http://cite.opengeospatial.org/gmlsf)
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0204 b/test/wfs/cite_wfs_1_1_0-sf0/0204
deleted file mode 100644
index ea522c8..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0204
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=&request=GetFeature&typename=sf:PrimitiveGeoFeature&namespace=xmlns(sf=http://cite.opengeospatial.org/gmlsf)
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0205 b/test/wfs/cite_wfs_1_1_0-sf0/0205
deleted file mode 100644
index 28c7493..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0205
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&typename=sf:PrimitiveGeoFeature&namespace=xmlns(sf=http://cite.opengeospatial.org/gmlsf)
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0206 b/test/wfs/cite_wfs_1_1_0-sf0/0206
deleted file mode 100644
index 3676c10..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0206
+++ /dev/null
@@ -1 +0,0 @@
-&request=GetFeature&version=1.1.0&typename=sf:PrimitiveGeoFeature&namespace=xmlns(sf=http://cite.opengeospatial.org/gmlsf)
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0207 b/test/wfs/cite_wfs_1_1_0-sf0/0207
deleted file mode 100644
index 5e1a7dd..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0207
+++ /dev/null
@@ -1 +0,0 @@
-&request=GetFeature&service=WFS&typename=sf:PrimitiveGeoFeature&namespace=xmlns(sf=http://cite.opengeospatial.org/gmlsf)
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0208 b/test/wfs/cite_wfs_1_1_0-sf0/0208
deleted file mode 100644
index f749333..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0208
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetFeature&typename=sf:PrimitiveGeoFeature,sf:AggregateGeoFeature&namespace=xmlns(sf=http://cite.opengeospatial.org/gmlsf)
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0209 b/test/wfs/cite_wfs_1_1_0-sf0/0209
deleted file mode 100644
index b2e5e03..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0209
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetFeature&typename=sf:PrimitiveGeoFeature&namespace=xmlns(sf=http://cite.opengeospatial.org/gmlsf)&filter=<ogc:Filter                   emlns:gml="http://www.opengis.net/gml"             80700a0mlns:ogc="http://www.opengis.net/ogc"><ogc:PropertyIsEqualTo><ogc:PropertyName>//gml:description</ogc:PropertyName><ogc:Literal>description-f008</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0210 b/test/wfs/cite_wfs_1_1_0-sf0/0210
deleted file mode 100644
index 072aa13..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0210
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetFeature&typename=sf:PrimitiveGeoFeature&namespace=xmlns(sf=http://cite.opengeospatial.org/gmlsf)&filter=<ogc:Filter                   emlns:ogc="http://www.opengis.net/ogc"><ogc:PropertyIsEqualTo><ogc:PropertyName>*[1]</ogc:PropertyName><ogc:Literal>description-f001</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0211 b/test/wfs/cite_wfs_1_1_0-sf0/0211
deleted file mode 100644
index a43553e..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0211
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetFeature&typename=sf:PrimitiveGeoFeature&namespace=xmlns(sf=http://cite.opengeospatial.org/gmlsf)&filter=<ogc:Filter                   emlns:sf="http://cite.opengeospatial.org/gmlsf"             80700a0mlns:ogc="http://www.opengis.net/ogc"><ogc:PropertyIsGreaterThan><ogc:PropertyName>sf:intProperty</ogc:PropertyName><ogc:Literal>100</ogc:Literal></ogc:PropertyIsGreaterThan></ogc:Filter>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0212 b/test/wfs/cite_wfs_1_1_0-sf0/0212
deleted file mode 100644
index c8eb97f..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0212
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetFeature&typename=sf:PrimitiveGeoFeature&namespace=xmlns(sf=http://cite.opengeospatial.org/gmlsf)&filter=<ogc:Filter                   emlns:gml="http://www.opengis.net/gml"             80700a0mlns:ogc="http://www.opengis.net/ogc"><ogc:PropertyIsEqualTo><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>name-f002</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0213 b/test/wfs/cite_wfs_1_1_0-sf0/0213
deleted file mode 100644
index b6b5dee..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0213
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&request=GetFeature&typename=sf:PrimitiveGeoFeature&namespace=xmlns(sf=http://cite.opengeospatial.org/gmlsf)
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0214 b/test/wfs/cite_wfs_1_1_0-sf0/0214
deleted file mode 100644
index dcfa3da..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0214
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=2006-11-14&request=GetFeature&typename=sf:PrimitiveGeoFeature&namespace=xmlns(sf=http://cite.opengeospatial.org/gmlsf)
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0215 b/test/wfs/cite_wfs_1_1_0-sf0/0215
deleted file mode 100644
index b02dd4c..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0215
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetFeature&typename=sf:Entit3-0X1.F5FF4080700AP-1309G
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0216 b/test/wfs/cite_wfs_1_1_0-sf0/0216
deleted file mode 100644
index f1f8ce6..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0216
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetFeature&typename=sf:Asdf&namespace=xmlns(sf=http://cite.opengeospatial.org/gmlsf)
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0217 b/test/wfs/cite_wfs_1_1_0-sf0/0217
deleted file mode 100644
index d28d09d..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0217
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetFeature&typename=sf:PrimitiveGeoFeature&propertyname=sf:asdfProperty&namespace=xmlns(sf=http://cite.opengeospatial.org/gmlsf)
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0218 b/test/wfs/cite_wfs_1_1_0-sf0/0218
deleted file mode 100644
index 8ac4642..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0218
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetFeature&typename=sf:Entit3-0X1.40FF4080700AP-1299G
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0219 b/test/wfs/cite_wfs_1_1_0-sf0/0219
deleted file mode 100644
index c2359ad..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0219
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetFeature&featureid=Entit3-0X1.2EFF4080700AP-1299G
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0220 b/test/wfs/cite_wfs_1_1_0-sf0/0220
deleted file mode 100644
index 1124fb5..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0220
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetFeature&typename=sf:PrimitiveGeoFeature&sortby=sf0X1.700A00000000EP-895intProperty&namespace=xmlns(sf=http://cite.opengeospatial.org/gmlsf)
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0221 b/test/wfs/cite_wfs_1_1_0-sf0/0221
deleted file mode 100644
index 1e72c73..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0221
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetFeature&typename=sf:PrimitiveGeoFeature&sortby=sf0X1.700A00000000EP-895intProperty%20D&namespace=xmlns(sf=http://cite.opengeospatial.org/gmlsf)
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0222 b/test/wfs/cite_wfs_1_1_0-sf0/0222
deleted file mode 100644
index 32b01bf..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0222
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><foo:GetCapabilities xmlns:foo="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" xmlns:wfs="http://www.opengis.net/wfs" service="WFS"/>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0223 b/test/wfs/cite_wfs_1_1_0-sf0/0223
deleted file mode 100644
index cbbc366..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0223
+++ /dev/null
@@ -1 +0,0 @@
-request=GetCapabilities&service=WFS&version=1.1.0
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0224 b/test/wfs/cite_wfs_1_1_0-sf0/0224
deleted file mode 100644
index 8284617..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0224
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetCapabilities xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS"/>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0225 b/test/wfs/cite_wfs_1_1_0-sf0/0225
deleted file mode 100644
index 8284617..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0225
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:GetCapabilities xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS"/>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0226 b/test/wfs/cite_wfs_1_1_0-sf0/0226
deleted file mode 100644
index 463b9f4..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0226
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Insert handle="insert-1"><sf:PrimitiveGeoFeature gml:id="cite.gmlsf0-f01"><gml:description>
-         Fusce tellus ante, tempus nonummy, ornare sed, accumsan nec, leo. 
-         Vivamus pulvinar molestie nisl.
-         </gml:description><gml:name codeSpace="http://cite.opengeospatial.org/gmlsf">cite.gmlsf0-f01</gml:name><sf:curveProperty><gml:LineString gml:id="cite.gmlsf0-g01" srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:posList>47.608284 19.034142 51.286873 16.7836 49.849854 15.764992</gml:posList></gml:LineString></sf:curveProperty><sf:intProperty>1025</sf:intProperty><sf:measurand>7.405E2</sf:measurand><sf:dateTimeProperty>2006-06-23T12:43:12+01:00</sf:dateTimeProperty><sf:decimalProperty>90.62</sf:decimalProperty></sf:PrimitiveGeoFeature></wfs:Insert><wfs:Insert handle="insert-2"><sf:AggregateGeoFeature gml:id="cite.gmlsf0-f02"><gml:description>
-         Duis nulla nisi, molestie vel, rhoncus a, ullamcorper eu, justo. Sed bibendum. 
-         Ut sem. Mauris nec nunc a eros aliquet pharetra. Mauris nonummy, pede et 
-         tincidunt ultrices, mauris lectus fermentum massa, in ullamcorper lectus 
-         felis vitae metus. Quisqué viverra.
-         </gml:description><gml:name codeSpace="http://cite.opengeospatial.org/gmlsf">cite.gmlsf0-f02</gml:name><gml:boundedBy><gml:Envelope srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:lowerCorner>36.1 8.0</gml:lowerCorner><gml:upperCorner>52.0 21.1</gml:upperCorner></gml:Envelope></gml:boundedBy><sf:multiPointProperty><gml:MultiPoint srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:pointMember><gml:Point><gml:pos>49.325176 21.036873</gml:pos></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:pos>36.142586 13.56189</gml:pos></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:pos>51.920937 8.014193</gml:pos></gml:Point></gml:pointMember></gml:MultiPoint></sf:multiPointProperty><sf:doubleProperty>2012.78</sf:doubleProperty><sf:intRangeProperty>43</sf:intRangeProperty><sf:strProperty>
-         Donec ligulä pede, sodales iń, vehicula eu, sodales et, lêo.
-         </sf:strProperty><sf:featureCode>AK121</sf:featureCode></sf:AggregateGeoFeature><sf:EntitéGénérique gml:id="cite.gmlsf0-f03"><gml:description>
-         Suspendisse in odio sit amet lorem dictum semper. Integer ultrices purus 
-         vel orci. Donec felis massa, suscipit a, lacinia nec, rhoncus vulputate, 
-         tellus.
-         </gml:description><gml:name codeSpace="http://cite.opengeospatial.org/gmlsf">cite.gmlsf0-f03</gml:name><sf:attribut.Géométrie><gml:LineString gml:id="cite.gmlsf0-g04" srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:description>Curabitur ut enim at metus vehicula</gml:description><gml:posList>47.35948 0.06282902 45.62291 -0.6651201 44.34261 -2.341187 45.08817 -2.696537 45.953514 -3.793995 47.21312 -2.773082 48.644974 -3.131115</gml:posList></gml:LineString></sf:attribut.Géométrie><sf:boolProperty>true</sf:boolProperty><sf:str4Property>ghij</sf:str4Property><sf:featureRef>cite.gmlsf0-f01</sf:featureRef></sf:EntitéGénérique></wfs:Insert></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0227 b/test/wfs/cite_wfs_1_1_0-sf0/0227
deleted file mode 100644
index 20b7b4c..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0227
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Insert handle="insert-1" srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><sf:PrimitiveGeoFeature gml:id="cite.gmlsf0-f04"><gml:description>
-         Cras vehicula, ligula vel tincidunt imperdiet, ligula arcu convallis 
-         dolor, sed convallis diam dolor vitae urna. Mauris quis risus at urna 
-         interdum porttitor.
-         </gml:description><gml:name codeSpace="http://cite.opengeospatial.org/gmlsf">cite.gmlsf0-f04</gml:name><sf:surfaceProperty><gml:Polygon><gml:exterior><gml:LinearRing><gml:posList>52.234646 11.661083 48.222664 21.77039 53.234585 29.490486 58.224674 22.1420336 52.234646 11.661083</gml:posList></gml:LinearRing></gml:exterior><gml:interior><gml:LinearRing><gml:posList>54.78090 20.804808 53.01941 22.17321 54.02851 23.28652 54.78090 20.804808</gml:posList></gml:LinearRing></gml:interior></gml:Polygon></sf:surfaceProperty><sf:pointProperty><gml:Point><gml:pos>53.11942 22.27320</gml:pos></gml:Point></sf:pointProperty><sf:intProperty>10257</sf:intProperty><sf:uriProperty>ftp://ftp.irisa.fr/pub/gnu/</sf:uriProperty><sf:measurand>219.1</sf:measurand><sf:dateProperty>2006-02-09</sf:dateProperty><sf:decimalProperty>120.2</sf:decimalProperty></sf:PrimitiveGeoFeature></wfs:Insert></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0228 b/test/wfs/cite_wfs_1_1_0-sf0/0228
deleted file mode 100644
index 504768d..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0228
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetFeature&featureid=
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0229 b/test/wfs/cite_wfs_1_1_0-sf0/0229
deleted file mode 100644
index b456e29..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0229
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Insert handle="insert-tc2.2" srsName="urn:x-ogc:def:crs:FOO:6.11.2:9999"><sf:PrimitiveGeoFeature gml:id="cite.gmlsf0-f94"><gml:name codeSpace="http://cite.opengeospatial.org/gmlsf">cite.gmlsf0-f94</gml:name><sf:pointProperty><gml:Point><gml:pos>5311942 2227320</gml:pos></gml:Point></sf:pointProperty><sf:intProperty>10257</sf:intProperty><sf:uriProperty>ftp://ftp.irisa.fr/pub/gnu/</sf:uriProperty><sf:measurand>219.1</sf:measurand><sf:dateProperty>2006-02-09</sf:dateProperty><sf:decimalProperty>120.2</sf:decimalProperty></sf:PrimitiveGeoFeature></wfs:Insert></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0230 b/test/wfs/cite_wfs_1_1_0-sf0/0230
deleted file mode 100644
index ba846c8..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0230
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Insert handle="insert-1"><sf:PrimitiveGeoFeature gml:id="cite.gmlsf0-f05"><sf:pointProperty><gml:Point srsName="urn:x-ogc:def:crs:FOO:2006.10:9999"><gml:pos>5311942 2227320</gml:pos></gml:Point></sf:pointProperty><sf:intProperty>9999</sf:intProperty><sf:measurand>283.5</sf:measurand><sf:decimalProperty>12.18</sf:decimalProperty></sf:PrimitiveGeoFeature></wfs:Insert><wfs:Insert handle="insert-2"><sf:EntitéGénérique gml:id="cite.gmlsf0-f06"><gml:description>Curabitur auctor ipsum condimentum tortor lacinia auctor.</gml:description><gml:name codeSpace="http://cite.opengeospatial.org/gmlsf">cite.gmlsf0-f06</gml:name><sf:attribut.Géométrie><gml:MultiCurve gml:id="cite.gmlsf0-g04" srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:name>Sed magna</gml:name><gml:curveMember><gml:LineString><gml:posList>56.913918 4.5407763 56.09126 9.26674 53.98543 12.45352 52.68249 13.9302635</gml:posList></gml:LineString></gml:curveMember><gml:curveMember><gml:LineString><gml:posList>35.285793 9.72645 36.75665 1.05434 38.630505 -5.7180705</gml:posList></gml:LineString></gml:curveMember></gml:MultiCurve></sf:attribut.Géométrie><sf:boolProperty>true</sf:boolProperty><sf:str4Property>ijk8</sf:str4Property></sf:EntitéGénérique></wfs:Insert></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0231 b/test/wfs/cite_wfs_1_1_0-sf0/0231
deleted file mode 100644
index c8c5668..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0231
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Insert handle="ins-1"><sf:PrimitiveGeoFeature gml:id="cite.gmlsf0-f07"><gml:name codeSpace="http://cite.opengeospatial.org/gmlsf">cite.gmlsf0-f07</gml:name><sf:surfaceProperty><gml:Polygon srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:exterior><gml:LinearRing><gml:posList>57.28665 21.368711 56.118668 22.280576 56.407759 23.579485 57.39861 22.919643 58.49861 22.756339 57.79861 21.919643 57.28665 21.368711</gml:posList></gml:LinearRing></gml:exterior><gml:interior><gml:LinearRing><gml:posList>57.06574 22.079622 57.06574 22.660713 57.34563 22.950624 57.06574 22.079622</gml:posList></gml:LinearRing></gml:interior></gml:Polygon></sf:surfaceProperty><sf:intProperty>1234567890</sf:intProperty><sf:measurand>285.1</sf:measurand><sf:decimalProperty>22.71</sf:decimalProperty></sf:PrimitiveGeoFeature></wfs:Insert><wfs:Delete handle="del-1" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsGreaterThanOrEqualTo><ogc:PropertyName>sf:intProperty</ogc:PropertyName><ogc:Literal>1234567890</ogc:Literal></ogc:PropertyIsGreaterThanOrEqualTo></ogc:Filter></wfs:Delete><wfs:Update handle="upd-1" typeName="sf:PrimitiveGeoFeature"><wfs:Property><wfs:Name>sf:measurand</wfs:Name><wfs:Value>286.0</wfs:Value></wfs:Property><ogc:Filter><ogc:PropertyIsEqualTo matchCase="false"><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>cite.gmlsf0-f07</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Update></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0232 b/test/wfs/cite_wfs_1_1_0-sf0/0232
deleted file mode 100644
index 504768d..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0232
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetFeature&featureid=
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0233 b/test/wfs/cite_wfs_1_1_0-sf0/0233
deleted file mode 100644
index 80049d0..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0233
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><foo:GetFeature xmlns:foo="http://www.opengis.net/wfs" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" xmlns:wfs="http://www.opengis.net/wfs" service="WFS" version="1.1.0"><foo:Query typeName="sf:PrimitiveGeoFeature"><ogc:Filter xmlns:ogc="http://www.opengis.net/ogc"><ogc:PropertyIsEqualTo><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>cite.gmlsf0-f07</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></foo:Query></foo:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0234 b/test/wfs/cite_wfs_1_1_0-sf0/0234
deleted file mode 100644
index 0e4a1ce..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0234
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Insert handle="ins-1"><sf:AggregateGeoFeature gml:id="cite.gmlsf0-f26"><gml:description>Curabitur auctor ipsum condimentum tortor lacinia auctor.</gml:description><gml:name codeSpace="http://cite.opengeospatial.org/gmlsf">cite.gmlsf0-f26</gml:name><sf:multiSurfaceProperty><gml:MultiSurface gml:id="cite.gmlsf0-g05" srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:surfaceMember><gml:Polygon><gml:exterior><gml:LinearRing><gml:posList>41.929283 4.3031006 62.029465 16.708838 37.929283 10.3022007 41.929283 4.3031006</gml:posList></gml:LinearRing></gml:exterior></gml:Polygon></gml:surfaceMember><gml:surfaceMember><gml:Polygon><gml:exterior><gml:LinearRing><gml:posList>54.84978 -5.3175583 60.65348 -1.426458 50.93067 0.5084481 47.445404 -2.7623253 48.545404 -4.9623253 54.84978 -5.3175583</gml:posList></gml:LinearRing></gml:exterior><gml:interior><gml:LinearRing><gml:posList>51.913918 -4.0407763 52.09126 -3.26674 50.08543 -3.45352 51.913918 -4.0407763</gml:posList></gml:LinearRing></gml:interior><gml:interior><gml:LinearRing><gml:posList>55.922027 -2.1316851 58.18017 -1.46574 52.17441 -1.14361 55.922027 -2.1316851</gml:posList></gml:LinearRing></gml:interior></gml:Polygon></gml:surfaceMember></gml:MultiSurface></sf:multiSurfaceProperty><sf:doubleProperty>1267.09343</sf:doubleProperty><sf:strProperty>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</sf:strProperty><sf:featureCode>EA050</sf:featureCode></sf:AggregateGeoFeature></wfs:Insert><wfs:Update handle="upd-1" typeName="sf:AggregateGeoFeature"><wfs:Property><wfs:Name>gml:name</wfs:Name><wfs:Value>cite.gmlsf0-f26bis</wfs:Value></wfs:Property><ogc:Filter><ogc:PropertyIsEqualTo matchCase="false"><ogc:PropertyName>sf:featureCode</ogc:PropertyName><ogc:Literal>ea050</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Update></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0235 b/test/wfs/cite_wfs_1_1_0-sf0/0235
deleted file mode 100644
index 82e59dd..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0235
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><foo:GetFeature xmlns:foo="http://www.opengis.net/wfs" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" xmlns:wfs="http://www.opengis.net/wfs" service="WFS" version="1.1.0"><foo:Query typeName="sf:AggregateGeoFeature"><ogc:Filter xmlns:ogc="http://www.opengis.net/ogc"><ogc:PropertyIsEqualTo><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>cite.gmlsf0-f26bis</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></foo:Query></foo:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0236 b/test/wfs/cite_wfs_1_1_0-sf0/0236
deleted file mode 100644
index 2b26a3b..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0236
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Native safeToIgnore="false" vendorId="cite.wfs.foo"/></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0237 b/test/wfs/cite_wfs_1_1_0-sf0/0237
deleted file mode 100644
index 082443d..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0237
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Insert handle="ins-1"><sf:EntitéGénérique gml:id="cite.gmlsf0-f08"><gml:description>
-         Maecenas nisi. Cum sociis natoque penatibus et magnis dis parturient montes, 
-         nascetur ridiculus mŭs. Fuscè condimentum cursus ipsum. Proin at nisl quis 
-         massa accumsan aliquam. Aliquam erat volutpat. Morbi volutpat tempor mi. 
-         Ut eget libero in lacus aliquam dignissim. Vivamus aliquam odio ut libero. 
-         Ćurabitur bibendum felis vitae tellus
-         </gml:description><gml:name codeSpace="http://cite.opengeospatial.org/gmlsf">cite.gmlsf0-f08</gml:name><sf:attribut.Géométrie><gml:Polygon gml:id="cite.gmlsf0-g08" srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:exterior><gml:LinearRing><gml:posList>65.52752 20.989298 52.09453 19.720014 49.102436 14.609264 60.92411 11.851856 60.04618 16.19630 65.52752 20.989298</gml:posList></gml:LinearRing></gml:exterior></gml:Polygon></sf:attribut.Géométrie><sf:boolProperty>false</sf:boolProperty><sf:str4Property>tuv7</sf:str4Property></sf:EntitéGénérique></wfs:Insert><wfs:Update handle="upd-1" typeName="sf:EntitéGénérique"><wfs:Property><wfs:Name>sf:attribut.Géométrie</wfs:Name><wfs:Value><gml:MultiSurface gml:id="cite.gmlsf0-g09" srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:surfaceMember><gml:Polygon><gml:exterior><gml:LinearRing><gml:posList>65.52752 20.989298 52.09453 19.720014 49.102436 14.609264 60.92411 11.851856 60.04618 16.19630 65.52752 20.989298</gml:posList></gml:LinearRing></gml:exterior></gml:Polygon></gml:surfaceMember><gml:surfaceMember><gml:Polygon><gml:exterior><gml:LinearRing><gml:posList>48.41841 12.878309 42.19452 14.521905 39.102436 10.204653 45.82511 10.051956 48.41841 12.878309</gml:posList></gml:LinearRing></gml:exterior></gml:Polygon></gml:surfaceMember></gml:MultiSurface></wfs:Value></wfs:Property><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>sf:str4Property</ogc:PropertyName><ogc:Literal>tuv7</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Update></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0238 b/test/wfs/cite_wfs_1_1_0-sf0/0238
deleted file mode 100644
index 504768d..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0238
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetFeature&featureid=
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0239 b/test/wfs/cite_wfs_1_1_0-sf0/0239
deleted file mode 100644
index a7c9d74..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0239
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Insert handle="ins-1"><sf:PrimitiveGeoFeature gml:id="cite.gmlsf0-f10"><sf:pointProperty><gml:Point srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:pos>70.823555 -7.735101</gml:pos></gml:Point></sf:pointProperty><sf:intProperty>987654321</sf:intProperty><sf:measurand>270.6</sf:measurand><sf:decimalProperty>2.71</sf:decimalProperty></sf:PrimitiveGeoFeature></wfs:Insert><wfs:Update handle="upd-1" typeName="sf:PrimitiveGeoFeature"><wfs:Property><wfs:Name>sf:pointProperty</wfs:Name><wfs:Value><gml:Point><gml:pos>5311942 2227320 12.34</gml:pos></gml:Point></wfs:Value></wfs:Property><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>sf:intProperty</ogc:PropertyName><ogc:Literal>987654321</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Update></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0240 b/test/wfs/cite_wfs_1_1_0-sf0/0240
deleted file mode 100644
index 4fe6b80..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0240
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Insert handle="ins-1"><sf:PrimitiveGeoFeature gml:id="cite.gmlsf0-f13"><gml:name codeSpace="http://cite.opengeospatial.org/gmlsf">cite.gmlsf0-f13</gml:name><sf:pointProperty><gml:Point srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:pos>62.12409 12.19653797</gml:pos></gml:Point></sf:pointProperty><sf:intProperty>235711</sf:intProperty><sf:measurand>6.12</sf:measurand><sf:decimalProperty>10.16</sf:decimalProperty></sf:PrimitiveGeoFeature></wfs:Insert></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0241 b/test/wfs/cite_wfs_1_1_0-sf0/0241
deleted file mode 100644
index ba183b4..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0241
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Update handle="upd-1" typeName="sf:PrimitiveGeoFeature"><wfs:Property><wfs:Name>sf:measurand</wfs:Name><wfs:Value>6.24</wfs:Value></wfs:Property><wfs:Property><wfs:Name>gml:name</wfs:Name><wfs:Value>cite.gmlsf0-f13bis</wfs:Value></wfs:Property><ogc:Filter><ogc:GmlObjectId gml:id=""/></ogc:Filter></wfs:Update></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0242 b/test/wfs/cite_wfs_1_1_0-sf0/0242
deleted file mode 100644
index 519ab8a..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0242
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><foo:GetFeature xmlns:foo="http://www.opengis.net/wfs" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" xmlns:wfs="http://www.opengis.net/wfs" service="WFS" version="1.1.0"><foo:Query typeName="sf:PrimitiveGeoFeature"><ogc:Filter xmlns:ogc="http://www.opengis.net/ogc"><ogc:PropertyIsEqualTo><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>cite.gmlsf0-f13bis</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></foo:Query></foo:GetFeature>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0243 b/test/wfs/cite_wfs_1_1_0-sf0/0243
deleted file mode 100644
index 6e1a999..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0243
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Insert handle="ins-1"><sf:AggregateGeoFeature gml:id="cite.gmlsf0-f12"><gml:description>
-         Maecenas fermentum, massa ac ornare tristique, sem est tempus justo, 
-         sed euismod urna ante ut pede. Nam condimentum sapien ut quam.
-         </gml:description><gml:name codeSpace="http://cite.opengeospatial.org/gmlsf">cite.gmlsf0-f12</gml:name><gml:boundedBy><gml:Envelope srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:lowerCorner>35.84 0.14</gml:lowerCorner><gml:upperCorner>56.54 12.37</gml:upperCorner></gml:Envelope></gml:boundedBy><sf:multiCurveProperty><gml:MultiCurve srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:description>Aenean convallis pede non quam</gml:description><gml:curveMember><gml:LineString><gml:posList>35.840973 0.14967346 44.11891 3.6755037 48.36785 9.001808 39.459682 9.716776</gml:posList></gml:LineString></gml:curveMember><gml:curveMember><gml:LineString><gml:posList>51.174034 12.365124 55.288635 7.583888 56.534782 4.1457024</gml:posList></gml:LineString></gml:curveMember></gml:MultiCurve></sf:multiCurveProperty><sf:doubleProperty>2.4510E4</sf:doubleProperty><sf:intRangeProperty>99</sf:intRangeProperty><sf:strProperty>Fusce turpis est, ultricies sed, luctus quis, blandit ac, massa</sf:strProperty><sf:featureCode>AT030</sf:featureCode></sf:AggregateGeoFeature></wfs:Insert></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0244 b/test/wfs/cite_wfs_1_1_0-sf0/0244
deleted file mode 100644
index cae0cdf..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0244
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Update handle="upd-1" typeName="sf:AggregateGeoFeature"><wfs:Property><wfs:Name>sf:doubleProperty</wfs:Name></wfs:Property><ogc:Filter><ogc:GmlObjectId gml:id=""/></ogc:Filter></wfs:Update></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0245 b/test/wfs/cite_wfs_1_1_0-sf0/0245
deleted file mode 100644
index 504768d..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0245
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetFeature&featureid=
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0246 b/test/wfs/cite_wfs_1_1_0-sf0/0246
deleted file mode 100644
index e067aee..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0246
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Insert handle="ins-1"><sf:PrimitiveGeoFeature gml:id="cite.gmlsf0-f13"><gml:description>
-         Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere 
-         cubilia Curae; maecenas elu dictum.
-         </gml:description><sf:surfaceProperty><gml:Polygon srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:description>Aenean convallis pede non quam</gml:description><gml:exterior><gml:LinearRing><gml:posList>65.86066 -6.802099 60.43201 -3.398107 49.62552 -4.018872 52.680374 -6.822956 65.86066 -6.802099</gml:posList></gml:LinearRing></gml:exterior></gml:Polygon></sf:surfaceProperty><sf:intProperty>111222</sf:intProperty><sf:uriProperty>ldap://ldap.ufoo.edu/o=University                  16f           -0.000000oo,c=NN</sf:uriProperty><sf:measurand>3731</sf:measurand><sf:dateProperty>2006-05-07</sf:dateProperty><sf:decimalProperty>0.98</sf:decimalProperty></sf:PrimitiveGeoFeature></wfs:Insert></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0247 b/test/wfs/cite_wfs_1_1_0-sf0/0247
deleted file mode 100644
index d03c7c2..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0247
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Update handle="upd-1" typeName="sf:PrimitiveGeoFeature"><wfs:Property><wfs:Name>sf:surfaceProperty</wfs:Name><wfs:Value><gml:MultiCurve srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:curveMember><gml:LineString><gml:posList>35.840973 0.14967346 44.11891 3.6755037 48.36785 9.001808 39.459682 9.716776</gml:posList></gml:LineString></gml:curveMember><gml:curveMember><gml:LineString><gml:posList>51.174034 12.365124 55.288635 7.583888 56.534782 4.1457024</gml:posList></gml:LineString></gml:curveMember></gml:MultiCurve></wfs:Value></wfs:Property><ogc:Filter><ogc:GmlObjectId gml:id=""/></ogc:Filter></wfs:Update><wfs:Update handle="upd-2" typeName="sf:PrimitiveGeoFeature"><wfs:Property><wfs:Name>sf:dateProperty</wfs:Name><wfs:Value>2006-05-07T12:51:00Z</wfs:Value></wfs:Property><ogc:Filter><ogc:GmlObjectId gml:id=""/></ogc:Filter></wfs:Update></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0248 b/test/wfs/cite_wfs_1_1_0-sf0/0248
deleted file mode 100644
index 83791ea..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0248
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Insert handle="ins-1"><sf:PrimitiveGeoFeature gml:id="cite.gmlsf0-f14"><gml:name codeSpace="http://cite.opengeospatial.org/gmlsf">cite.gmlsf0-f14</gml:name><sf:pointProperty><gml:Point srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:pos>69.21915 19.314623</gml:pos></gml:Point></sf:pointProperty><sf:intProperty>71921</sf:intProperty><sf:measurand>94.6</sf:measurand><sf:decimalProperty>9.02</sf:decimalProperty></sf:PrimitiveGeoFeature></wfs:Insert></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0249 b/test/wfs/cite_wfs_1_1_0-sf0/0249
deleted file mode 100644
index b35abd1..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0249
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Update handle="upd-1" typeName="sf:PrimitiveGeoFeature"><wfs:Property><wfs:Name>gml:name</wfs:Name></wfs:Property><ogc:Filter><ogc:GmlObjectId gml:id=""/></ogc:Filter></wfs:Update></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0250 b/test/wfs/cite_wfs_1_1_0-sf0/0250
deleted file mode 100644
index 504768d..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0250
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetFeature&featureid=
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0251 b/test/wfs/cite_wfs_1_1_0-sf0/0251
deleted file mode 100644
index 0d8a44b..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0251
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Delete handle="del-1" typeName="sf:PrimitiveGeoFeature"/></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0252 b/test/wfs/cite_wfs_1_1_0-sf0/0252
deleted file mode 100644
index c481117..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0252
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Insert handle="ins-1"><sf:PrimitiveGeoFeature gml:id="cite.gmlsf0-f16"><gml:name codeSpace="http://cite.opengeospatial.org/gmlsf">cite.gmlsf0-f16</gml:name><sf:curveProperty><gml:LineString srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:posList>48.76926 27.590446 46.54372 24.856320 42.89878 20.067233 42.414574 15.148127</gml:posList></gml:LineString></sf:curveProperty><sf:intProperty>76512</sf:intProperty><sf:measurand>8000</sf:measurand><sf:dateTimeProperty>2006-07-30T08:34:12+01:00</sf:dateTimeProperty><sf:decimalProperty>75.12</sf:decimalProperty></sf:PrimitiveGeoFeature><sf:PrimitiveGeoFeature gml:id="cite.gmlsf0-f17"><gml:name codeSpace="http://cite.opengeospatial.org/gmlsf">cite.gmlsf0-f17</gml:name><sf:curveProperty><gml:LineString srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:posList>46.76926 25.590446 45.54372 22.856320 41.89878 18.067233 41.414574 13.148127 39.414574 9.148127</gml:posList></gml:LineString></sf:curveProperty><sf:intProperty>111222</sf:intProperty><sf:measurand>450</sf:measurand><sf:dateTimeProperty>2005-11-22T11:51:43+02:00</sf:dateTimeProperty><sf:decimalProperty>15.12</sf:decimalProperty></sf:PrimitiveGeoFeature><sf:EntitéGénérique gml:id="cite.gmlsf0-f18"><gml:description>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</gml:description><gml:name codeSpace="http://cite.opengeospatial.org/gmlsf">cite.gmlsf0-f18</gml:name><sf:attribut.Géométrie><gml:LineString srsName="urn:x-ogc:def:crs:EPSG:6.11.2:4326"><gml:posList>52.68416 0.826830 50.19039 3.537679 53.00112 5.850914 54.53406 13.099472 54.400627 18.411608</gml:posList></gml:LineString></sf:attribut.Géométrie><sf:boolProperty>true</sf:boolProperty><sf:str4Property>wxÿz</sf:str4Property><sf:featureRef>cite.gmlsf0-f16</sf:featureRef></sf:EntitéGénérique></wfs:Insert></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0253 b/test/wfs/cite_wfs_1_1_0-sf0/0253
deleted file mode 100644
index 45e41d1..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0253
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Delete handle="del-1" typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:GmlObjectId gml:id=""/><ogc:GmlObjectId gml:id=""/></ogc:Filter></wfs:Delete><wfs:Delete handle="del-2" typeName="sf:EntitéGénérique"><ogc:Filter><ogc:GmlObjectId gml:id=""/></ogc:Filter></wfs:Delete></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0254 b/test/wfs/cite_wfs_1_1_0-sf0/0254
deleted file mode 100644
index 504768d..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0254
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetFeature&featureid=
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0255 b/test/wfs/cite_wfs_1_1_0-sf0/0255
deleted file mode 100644
index 504768d..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0255
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetFeature&featureid=
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0256 b/test/wfs/cite_wfs_1_1_0-sf0/0256
deleted file mode 100644
index 504768d..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0256
+++ /dev/null
@@ -1 +0,0 @@
-&service=WFS&version=1.1.0&request=GetFeature&featureid=
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0257 b/test/wfs/cite_wfs_1_1_0-sf0/0257
deleted file mode 100644
index 885368f..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0257
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Delete typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>cite.gmlsf0-f01</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Delete></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0258 b/test/wfs/cite_wfs_1_1_0-sf0/0258
deleted file mode 100644
index fefd300..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0258
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Delete typeName="sf:AggregateGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>cite.gmlsf0-f02</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Delete></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0259 b/test/wfs/cite_wfs_1_1_0-sf0/0259
deleted file mode 100644
index f25cd32..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0259
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Delete typeName="sf:EntitéGénérique"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>cite.gmlsf0-f03</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Delete></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0260 b/test/wfs/cite_wfs_1_1_0-sf0/0260
deleted file mode 100644
index 464bc95..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0260
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Delete typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>cite.gmlsf0-f04</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Delete></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0261 b/test/wfs/cite_wfs_1_1_0-sf0/0261
deleted file mode 100644
index cb76ef9..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0261
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Delete typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>cite.gmlsf0-f05</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Delete></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0262 b/test/wfs/cite_wfs_1_1_0-sf0/0262
deleted file mode 100644
index 1800b4b..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0262
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Delete typeName="sf:EntitéGénérique"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>cite.gmlsf0-f06</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Delete></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0263 b/test/wfs/cite_wfs_1_1_0-sf0/0263
deleted file mode 100644
index 7c0a954..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0263
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Delete typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>cite.gmlsf0-f07</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Delete></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0264 b/test/wfs/cite_wfs_1_1_0-sf0/0264
deleted file mode 100644
index 6bd16a8..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0264
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Delete typeName="sf:AggregateGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>cite.gmlsf0-f26</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Delete></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0265 b/test/wfs/cite_wfs_1_1_0-sf0/0265
deleted file mode 100644
index 5b858a5..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0265
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Delete typeName="sf:AggregateGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>cite.gmlsf0-f26bis</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Delete></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0266 b/test/wfs/cite_wfs_1_1_0-sf0/0266
deleted file mode 100644
index 63960b4..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0266
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Delete typeName="sf:EntitéGénérique"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>cite.gmlsf0-f08</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Delete></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0267 b/test/wfs/cite_wfs_1_1_0-sf0/0267
deleted file mode 100644
index 3341695..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0267
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Delete typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>cite.gmlsf0-f94</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Delete></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0268 b/test/wfs/cite_wfs_1_1_0-sf0/0268
deleted file mode 100644
index 71714c1..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0268
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Delete typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>cite.gmlsf0-f10</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Delete></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0269 b/test/wfs/cite_wfs_1_1_0-sf0/0269
deleted file mode 100644
index 3bf43f7..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0269
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Delete typeName="sf:AggregateGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>cite.gmlsf0-f12</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Delete></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0270 b/test/wfs/cite_wfs_1_1_0-sf0/0270
deleted file mode 100644
index 4e0043c..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0270
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Delete typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>cite.gmlsf0-f13</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Delete></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0271 b/test/wfs/cite_wfs_1_1_0-sf0/0271
deleted file mode 100644
index 9c1357b..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0271
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Delete typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>cite.gmlsf0-f13bis</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Delete></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0272 b/test/wfs/cite_wfs_1_1_0-sf0/0272
deleted file mode 100644
index 7ab1624..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0272
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Delete typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>cite.gmlsf0-f14</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Delete></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0273 b/test/wfs/cite_wfs_1_1_0-sf0/0273
deleted file mode 100644
index 6a59176..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0273
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Delete typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>cite.gmlsf0-f16</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Delete></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0274 b/test/wfs/cite_wfs_1_1_0-sf0/0274
deleted file mode 100644
index ffefda0..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0274
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Delete typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>cite.gmlsf0-f17</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Delete></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0275 b/test/wfs/cite_wfs_1_1_0-sf0/0275
deleted file mode 100644
index b96a2d5..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0275
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Delete typeName="sf:EntitéGénérique"><ogc:Filter><ogc:PropertyIsEqualTo><ogc:PropertyName>gml:name</ogc:PropertyName><ogc:Literal>cite.gmlsf0-f18</ogc:Literal></ogc:PropertyIsEqualTo></ogc:Filter></wfs:Delete></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0276 b/test/wfs/cite_wfs_1_1_0-sf0/0276
deleted file mode 100644
index 266d5b9..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0276
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Delete typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:And><ogc:PropertyIsEqualTo><ogc:PropertyName>sf:measurand</ogc:PropertyName><ogc:Literal>270.6</ogc:Literal></ogc:PropertyIsEqualTo><ogc:PropertyIsEqualTo><ogc:PropertyName>sf:intProperty</ogc:PropertyName><ogc:Literal>987654321</ogc:Literal></ogc:PropertyIsEqualTo></ogc:And></ogc:Filter></wfs:Delete></wfs:Transaction>
diff --git a/test/wfs/cite_wfs_1_1_0-sf0/0277 b/test/wfs/cite_wfs_1_1_0-sf0/0277
deleted file mode 100644
index 297e786..0000000
--- a/test/wfs/cite_wfs_1_1_0-sf0/0277
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" xmlns="http://www.occamlab.com/ctl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sf="http://cite.opengeospatial.org/gmlsf" xmlns:ogc="http://www.opengis.net/ogc" xmlns:saxon="http://saxon.sf.net/" xmlns:p="http://teamengine.sourceforge.net/parsers" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:ows="http://www.opengis.net/ows" xmlns:ctl="http://www.occamlab.com/ctl" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:te="java:com.occamlab.te.TECore" xmlns:parsers="http://www.occamlab.com/te/parsers" xmlns:myparsers="http://teamengine.sourceforge.net/parsers" service="WFS" version="1.1.0"><wfs:Delete typeName="sf:PrimitiveGeoFeature"><ogc:Filter><ogc:And><ogc:PropertyIsEqualTo><ogc:PropertyName>sf:measurand</ogc:PropertyName><ogc:Literal>94.6</ogc:Literal></ogc:PropertyIsEqualTo><ogc:PropertyIsEqualTo><ogc:PropertyName>sf:intProperty</ogc:PropertyName><ogc:Literal>71921</ogc:Literal></ogc:PropertyIsEqualTo></ogc:And></ogc:Filter></wfs:Delete></wfs:Transaction>
diff --git a/test/wfs_100/ogc_wfs_sf0.sql b/test/wfs_100/ogc_wfs_sf0.sql
index 602a5a7..57e75a7 100644
--- a/test/wfs_100/ogc_wfs_sf0.sql
+++ b/test/wfs_100/ogc_wfs_sf0.sql
@@ -128,6 +128,51 @@ ALTER TABLE "Other" ADD COLUMN "integers" integer;
 ALTER TABLE "Other" ADD COLUMN "dates" date;
 
 --
+-- Add/Drop foo column
+--
+alter table "Deletes" add column "foo" integer;
+alter table "Deletes" drop column "foo";
+
+alter table "Fifteen" add column "foo" integer;
+alter table "Fifteen" drop column "foo";
+
+alter table "Inserts" add column "foo" integer;
+alter table "Inserts" drop column "foo";
+
+alter table "Lines" add column "foo" integer;
+alter table "Lines" drop column "foo";
+
+alter table "Locks" add column "foo" integer;
+alter table "Locks" drop column "foo";
+
+alter table "MLines" add column "foo" integer;
+alter table "MLines" drop column "foo";
+
+alter table "MPoints" add column "foo" integer;
+alter table "MPoints" drop column "foo";
+
+alter table "MPolygons" add column "foo" integer;
+alter table "MPolygons" drop column "foo";
+
+alter table "Nulls" add column "foo" integer;
+alter table "Nulls" drop column "foo";
+
+alter table "Other" add column "foo" integer;
+alter table "Other" drop column "foo";
+
+alter table "Points" add column "foo" integer;
+alter table "Points" drop column "foo";
+
+alter table "Polygons" add column "foo" integer;
+alter table "Polygons" drop column "foo";
+
+alter table "Seven" add column "foo" integer;
+alter table "Seven" drop column "foo";
+
+alter table "Updates" add column "foo" integer;
+alter table "Updates" drop column "foo";
+
+--
 -- Add Primary keys
 --
 alter table "Deletes" add column pkey serial;
diff --git a/test/wfs_110/config_wfs_110.xml.in b/test/wfs_110/config_wfs_110.xml.in
index c265ef2..6aac962 100644
--- a/test/wfs_110/config_wfs_110.xml.in
+++ b/test/wfs_110/config_wfs_110.xml.in
@@ -12,7 +12,7 @@
     password="postgres" 
     dbname="tinyows_test" 
     port="5432" 
-    encoding="LATIN1"/>
+    encoding="UTF-8"/>
 <!-- END configuration -->
 
 <!-- Don't need to change anything below this point -->
diff --git a/test/wfs_110/ogc_wfs_sf0.sql b/test/wfs_110/ogc_wfs_sf0.sql
index ff0304d..79426ce 100644
--- a/test/wfs_110/ogc_wfs_sf0.sql
+++ b/test/wfs_110/ogc_wfs_sf0.sql
@@ -5,7 +5,7 @@
 --
 -- NOTA: Datas are based on a PostGIS 2.0 dump.
 --
---SET client_encoding = 'UTF8';
+SET client_encoding = 'UTF8';
 
 delete from geometry_columns where f_table_name = 'PrimitiveGeoFeature' ;
 delete from geometry_columns where f_table_name = 'AggregateGeoFeature' ;

-- 
A simple WFS-T server



More information about the Pkg-grass-devel mailing list