[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§ions=
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§ions=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