diff -Nru mapserver-7.0.7/apache/mod_mapserver.c mapserver-7.2.2/apache/mod_mapserver.c --- mapserver-7.0.7/apache/mod_mapserver.c 2017-11-15 19:24:35.000000000 +0000 +++ mapserver-7.2.2/apache/mod_mapserver.c 2019-02-19 15:47:37.000000000 +0000 @@ -40,7 +40,7 @@ msIO_apacheError (void *cbData, void *data, int byteCount) { /* error reporting is done through the log file... */ - ap_log_error (APLOG_MARK, APLOG_ERR, 0, NULL, (char*) data); + ap_log_error (APLOG_MARK, APLOG_ERR, 0, NULL, "%s", (char*) data); return strlen ((char*) data); } diff -Nru mapserver-7.0.7/cmake/FindProtobufC.cmake mapserver-7.2.2/cmake/FindProtobufC.cmake --- mapserver-7.0.7/cmake/FindProtobufC.cmake 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.2.2/cmake/FindProtobufC.cmake 2019-02-19 15:47:37.000000000 +0000 @@ -0,0 +1,111 @@ +# - Find protobuf-c +# Find protobuf c implementation libraries, includes and the protoc-c compiler +# FindProtobufC was loosely based on FindProtobuf that is shipped with cmake +# +# Module defines: +# PROTOBUFC_FOUND - library, includes and compiler where found +# PROTOBUFC_INCLUDE_DIRS - include directories +# PROTOBUFC_LIBRARIES - protobuf-c libraries +# PROTOBUFC_EXECUTEABLE - protobuf-c compiler +# +# Environment variables: +# PROTOBUFC_ROOTDIR - optional - rootdir of protobuf-c installation +# +# Cache entries: +# PROTOBUFC_LIBRARY - detected protobuf-c library +# PROTOBUF_INCLUDE_DIR - detected protobuf-c include dir(s) +# PROTOBUF_COMPILER - detected protobuf-c compiler +# +#### +# +# ==================================================================== +# Example: +# +# find_package(ProtobufC REQUIRED) +# include_directories(${PROTOBUFC_INCLUDE_DIRS}) +# include_directories(${CMAKE_CURRENT_BINARY_DIR}) +# PROTOBUFC_GENERATE_C(PROTO_SOURCES PROTO_HEADERS protobuf.proto) +# add_executable(bar bar.c ${PROTO_SRCn} ${PROTO_HDRS}) +# target_link_libraries(bar ${PROTOBUF_LIBRARIES}) +# +# NOTE: You may need to link against pthreads, depending +# on the platform. +# +# NOTE: The PROTOBUF_GENERATE_CPP macro & add_executable() or add_library() +# calls only work properly within the same directory. +# +# ==================================================================== + +#============================================================================= +# Copyright 2013 Thinstuff Technologies GmbH +# Copyright 2013 Bernhard Miklautz +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#============================================================================= + +set(PROTBUFC_SOURCE_EXTENSION "pb-c.c") +set(PROTBUFC_HEADER_EXTENSION "pb-c.h") +function(PROTOBUFC_GENERATE_C SOURCES HEADERS) + if(NOT ARGN) + message(SEND_ERROR "Error: PROTOBUFC_GENERATE_C() called without any proto files") + return() + endif(NOT ARGN) + + foreach(FIL ${ARGN}) + get_filename_component(ABS_FIL ${FIL} ABSOLUTE) + get_filename_component(FIL_WE ${FIL} NAME_WE) + get_filename_component(FIL_PATH ${ABS_FIL} PATH) + + list(APPEND ${SOURCES} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.${PROTBUFC_SOURCE_EXTENSION}") + list(APPEND ${HEADERS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.${PROTBUFC_HEADER_EXTENSION}") + + add_custom_command( + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.${PROTBUFC_SOURCE_EXTENSION}" + "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.${PROTBUFC_HEADER_EXTENSION}" + COMMAND ${PROTOBUFC_COMPILER} + ARGS --c_out ${CMAKE_CURRENT_BINARY_DIR} -I ${CMAKE_CURRENT_SOURCE_DIR} -I ${FIL_PATH} ${ABS_FIL} + DEPENDS ${ABS_FIL} + COMMENT "Running protobuf-c compiler on ${FIL}" + VERBATIM ) + endforeach() + set_source_files_properties(${${SOURCES}} ${${HEADERS}} PROPERTIES GENERATED TRUE) + set(${SOURCES} ${${SOURCES}} PARENT_SCOPE) + set(${HEADERS} ${${HEADERS}} PARENT_SCOPE) +endfunction() + +find_library(PROTOBUFC_LIBRARY + NAMES "protobuf-c" + PATHS "/usr" "/usr/local" "/opt" ENV PROTOBUFC_ROOTDIR + PATH_SUFFIXES "lib") +mark_as_advanced(PROTOBUFC_LIBRARY) + +find_path(PROTOBUFC_INCLUDE_DIR + NAMES "google/protobuf-c/protobuf-c.h" + PATHS "/usr" "/usr/local" "/opt" ENV PROTOBUFC_ROOTDIR + PATH_SUFFIXES "include") +mark_as_advanced(PROTOBUFC_INCLUDE_DIR) + +find_program(PROTOBUFC_COMPILER + NAMES "protoc-c" + PATHS "/usr" "/usr/local" "/opt" ENV PROTOBUFC_ROOTDIR + PATH_SUFFIXES "bin") +mark_as_advanced(PROTOBUFC_COMPILER) + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(ProtobufC DEFAULT_MSG PROTOBUFC_LIBRARY PROTOBUFC_COMPILER PROTOBUFC_INCLUDE_DIR ) + +if (PROTOBUFC_FOUND) + set(PROTOBUFC_LIBRARIES ${PROTOBUFC_LIBRARY}) + set(PROTOBUFC_INCLUDE_DIRS ${PROTOBUFC_INCLUDE_DIR}) + set(PROTOBUFC_EXECUTEABLE ${PROTOBUFC_COMPILER}) +endif(PROTOBUFC_FOUND) diff -Nru mapserver-7.0.7/CMakeLists.txt mapserver-7.2.2/CMakeLists.txt --- mapserver-7.0.7/CMakeLists.txt 2017-11-15 19:24:35.000000000 +0000 +++ mapserver-7.2.2/CMakeLists.txt 2019-02-19 15:47:37.000000000 +0000 @@ -16,8 +16,8 @@ set (MapServer_VERSION_MAJOR 7) -set (MapServer_VERSION_MINOR 0) -set (MapServer_VERSION_REVISION 7) +set (MapServer_VERSION_MINOR 2) +set (MapServer_VERSION_REVISION 2) set (MapServer_VERSION_SUFFIX "") set(TARGET_VERSION_MAJOR ${MapServer_VERSION_MAJOR}) @@ -92,7 +92,6 @@ check_function_exists("strrstr" HAVE_STRRSTR) check_function_exists("strcasecmp" HAVE_STRCASECMP) check_function_exists("strcasestr" HAVE_STRCASESTR) -check_function_exists("strdup" HAVE_STRDUP) check_function_exists("strlcat" HAVE_STRLCAT) check_function_exists("strlcpy" HAVE_STRLCPY) check_function_exists("strlen" HAVE_STRLEN) @@ -117,6 +116,7 @@ #options suported by the cmake builder option(WITH_PROJ "Choose if reprojection support should be built in" ON) +option(WITH_PROTOBUFC "Choose if protocol buffers support should be built in (required for vector tiles)" ON) option(WITH_KML "Enable native KML output support (requires libxml2 support)" OFF) option(WITH_SOS "Enable SOS Server support (requires PROJ and libxml2 support)" OFF) option(WITH_WMS "Enable WMS Server support (requires proj support)" ON) @@ -166,8 +166,8 @@ # Add compiler flags for warnings if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCC) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wdeclaration-after-statement") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror=format-security -Wdeclaration-after-statement") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Werror=format-security") endif() if(NOT DEFINED CMAKE_INSTALL_LIBDIR) @@ -258,11 +258,12 @@ mapdraw.c maplibxml2.c mapquery.c maputil.c strptime.c mapdrawgdal.c mapraster.c mapuvraster.c mapdummyrenderer.c mapobject.c maprasterquery.c mapwcs.c maperror.c mapogcfilter.c mapregex.c mapwcs11.c mapfile.c -mapogcfiltercommon.c maprendering.c mapwcs20.c mapogcsld.c +mapogcfiltercommon.c maprendering.c mapwcs20.c mapogcsld.c mapmetadata.c mapresample.c mapwfs.c mapgdal.c mapogcsos.c mapscale.c mapwfs11.c mapwfs20.c mapgeomtransform.c mapogroutput.c mapwfslayer.c mapagg.cpp mapkml.cpp mapgeomutil.cpp mapkmlrenderer.cpp fontcache.c textlayout.c maputfgrid.cpp -mapogr.cpp mapcontour.c mapsmoothing.c mapv8.cpp ${REGEX_SOURCES} kerneldensity.c) +mapogr.cpp mapcontour.c mapsmoothing.c mapv8.cpp ${REGEX_SOURCES} kerneldensity.c +mapcompositingfilter.c mapmvt.c) set(mapserver_HEADERS cgiutil.h dejavu-sans-condensed.h dxfcolor.h fontcache.h hittest.h mapagg.h @@ -273,8 +274,39 @@ mapserver-api.h mapserver.h mapserv.h mapshape.h mapsymbol.h maptemplate.h mapthread.h maptile.h maptime.h maptree.h maputfgrid.h mapwcs.h uthash.h) +if(WIN32) + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/version.rc.in + ${CMAKE_CURRENT_BINARY_DIR}/version.rc + @ONLY) + set(mapserver_SOURCES ${mapserver_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/version.rc) +endif(WIN32) + +if(WITH_PROTOBUFC) + find_package(ProtobufC) + if(NOT PROTOBUFC_FOUND) + report_optional_not_found(PROTOBUFC) + else(NOT PROTOBUFC_FOUND) + list(APPEND ALL_INCLUDE_DIRS ${PROTOBUFC_INCLUDE_DIR}) + + FILE(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/renderers/mvt) + # Create custom command for protoc-c + ADD_CUSTOM_COMMAND( + COMMAND ${PROTOBUFC_COMPILER} + ARGS --c_out=${PROJECT_BINARY_DIR}/renderers/mvt --proto_path=${PROJECT_SOURCE_DIR}/renderers/mvt ${PROJECT_SOURCE_DIR}/renderers/mvt/vector_tile.proto + OUTPUT ${PROJECT_BINARY_DIR}/renderers/mvt/vector_tile.pb-c.c ${PROJECT_BINARY_DIR}/renderers/mvt/vector_tile.pb-c.h + ) + + SET_SOURCE_FILES_PROPERTIES(${PROJECT_BINARY_DIR}/renderers/mvt/vector_tile.pb-c.h ${PROJECT_BINARY_DIR}/renderers/mvt/vector_tile.pb-c.c GENERATED) + set (vectortile_SOURCES ${PROJECT_BINARY_DIR}/renderers/mvt/vector_tile.pb-c.c) + + set (USE_PBF 1) + endif(NOT PROTOBUFC_FOUND) +endif (WITH_PROTOBUFC) + + if(BUILD_DYNAMIC) - add_library(mapserver SHARED ${mapserver_SOURCES} ${agg_SOURCES} ${v8_SOURCES}) + add_library(mapserver SHARED ${vectortile_SOURCES} ${mapserver_SOURCES} ${agg_SOURCES} ${v8_SOURCES}) set_target_properties( mapserver PROPERTIES VERSION ${MapServer_VERSION_STRING} SOVERSION 2 @@ -282,7 +314,7 @@ endif(BUILD_DYNAMIC) if(BUILD_STATIC) - add_library(mapserver_static STATIC ${mapserver_SOURCES} ${agg_SOURCES} ${v8_SOURCES}) + add_library(mapserver_static STATIC ${vectortile_SOURCES} ${mapserver_SOURCES} ${agg_SOURCES} ${v8_SOURCES}) set_target_properties( mapserver_static PROPERTIES VERSION ${MapServer_VERSION_STRING} SOVERSION 2 @@ -363,6 +395,12 @@ endif(NOT PROJ_FOUND) endif (WITH_PROJ) +if(USE_PBF) + include_directories(${PROJECT_BINARY_DIR}/renderers/mvt) + include_directories(${PROTOBUFC_INCLUDE_DIR}) + ms_link_libraries( ${PROTOBUFC_LIBRARY}) +endif() + if(WITH_PIXMAN) find_package(Pixman) if(PIXMAN_FOUND) @@ -914,6 +952,7 @@ status_optional_component("POSTGIS" "${USE_POSTGIS}" "${POSTGRESQL_LIBRARY}") status_optional_component("GEOS" "${USE_GEOS}" "${GEOS_LIBRARY}") status_optional_component("FastCGI" "${USE_FASTCGI}" "${FCGI_LIBRARY}") +status_optional_component("PROTOBUFC" "${USE_PBF}" "${PROTOBUFC_LIBRARY}") if(USE_ORACLESPATIAL OR USE_ORACLE_PLUGIN) if(USE_ORACLESPATIAL) status_optional_component("Oracle Spatial" "${USE_ORACLESPATIAL}" "${ORACLE_LIBRARY}") diff -Nru mapserver-7.0.7/CONTRIBUTING.md mapserver-7.2.2/CONTRIBUTING.md --- mapserver-7.0.7/CONTRIBUTING.md 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.2.2/CONTRIBUTING.md 2019-02-19 15:47:37.000000000 +0000 @@ -0,0 +1,32 @@ +# How to contribute to MapServer + +Contributions to the MapServer project are most welcome, and can take many forms such as detailed bug reports, documentation, +tests, features, and patches. Note that all contributions are managed by the MapServer [Project Steering Committee](https://mapserver.org/psc.html). + +## Bugs and Help + +GitHub issues should only be created to log bugs. For general help and support the MapServer [mailing lists](http://mapserver.org/community/lists.html) +should be used. If you are unsure if you have discovered a bug, or may need help with configuring MapServer please +post to the [mapserver-users list](http://lists.osgeo.org/mailman/listinfo/mapserver-users). There is also +a [MapServer FAQ](http://www.mapserver.org/faq.html) which may have a solution to your problem. + +If you have discovered a bug, please refer to the [Bug Submission page](http://mapserver.org/development/bugs.html) for +guidelines on creating an issue on GitHub. Please also search the existing issues to see if the bug has already been reported, and +add any further details to the existing issue. + +For professional support please see the [MapServer Service Providers page](http://mapserver.org/community/service_providers.html). + +## Development + +A separate [mapserver-dev mailing list](http://lists.osgeo.org/mailman/listinfo/mapserver-dev) is available for developers +working on the MapServer code. + +Details on using GitHub can be found on the [MapServer GitHub page](http://mapserver.org/development/git.html) + +Additional developer notes can be found in the [MapServer wiki](https://github.com/mapserver/mapserver/wiki#developer-notes), including +coding style and guidelines, memory management, and working with Git. + +## Documentation + +The MapServer documentation is stored in a [separate repository](https://github.com/mapserver/docs). Please submit any documentation +issues or changes there. See the [Documentation Development Guide](http://mapserver.org/development/documentation.html) for further details. diff -Nru mapserver-7.0.7/debian/cgi-mapserver.install mapserver-7.2.2/debian/cgi-mapserver.install --- mapserver-7.0.7/debian/cgi-mapserver.install 2017-01-16 21:41:00.000000000 +0000 +++ mapserver-7.2.2/debian/cgi-mapserver.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -usr/lib/cgi-bin/mapserv diff -Nru mapserver-7.0.7/debian/cgi-mapserver.links mapserver-7.2.2/debian/cgi-mapserver.links --- mapserver-7.0.7/debian/cgi-mapserver.links 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.2.2/debian/cgi-mapserver.links 2018-07-27 04:56:08.000000000 +0000 @@ -0,0 +1 @@ +usr/bin/mapserv usr/lib/cgi-bin/mapserv diff -Nru mapserver-7.0.7/debian/changelog mapserver-7.2.2/debian/changelog --- mapserver-7.0.7/debian/changelog 2018-03-01 09:35:17.000000000 +0000 +++ mapserver-7.2.2/debian/changelog 2019-02-27 19:00:00.000000000 +0000 @@ -1,14 +1,102 @@ -mapserver (7.0.7-1build2) bionic; urgency=high +mapserver (7.2.2-1~bionic0) bionic; urgency=medium + + * No change rebuild for Bionic. - * No change rebuild against ruby-defaults without ruby2.3 support. + -- Angelos Tzotsos Wed, 27 Feb 2019 21:00:00 +0200 - -- Dimitri John Ledkov Thu, 01 Mar 2018 09:35:17 +0000 +mapserver (7.2.2-1) unstable; urgency=medium -mapserver (7.0.7-1build1) bionic; urgency=medium + * Update symbols for other architectures. + * Move from experimental to unstable. + + -- Bas Couwenberg Wed, 20 Feb 2019 05:43:10 +0100 + +mapserver (7.2.2-1~exp1) experimental; urgency=medium + + * New upstream release. + * Add Build-Depends-Package field to symbols file. + * Bump Standards-Version to 4.3.0, no changes. + * Refresh patches. + * Update copyright years for Open Source Geospatial Foundation. + * Update symbols for amd64. + * Add lintian overrides for file-references-package-build-path. + + -- Bas Couwenberg Tue, 19 Feb 2019 18:07:57 +0100 + +mapserver (7.2.1-1) unstable; urgency=medium + + * New upstream release. + * Bump Standards-Version to 4.2.1, no changes. + * Drop patches applied upstream. Refresh remaining patches. + * Fix docs install for README rename. + + -- Bas Couwenberg Tue, 02 Oct 2018 07:11:40 +0200 + +mapserver (7.2.0-5) unstable; urgency=medium + + * Bump Standards-Version to 4.2.0, no changes. + * Add patch to fix FTBFS with CMake 3.12.x. + (closes: #906605) + + -- Bas Couwenberg Sun, 19 Aug 2018 09:45:57 +0200 + +mapserver (7.2.0-4) unstable; urgency=medium + + * Drop autopkgtest to test installability. + * Add lintian override for testsuite-autopkgtest-missing. + + -- Bas Couwenberg Tue, 31 Jul 2018 21:45:41 +0200 + +mapserver (7.2.0-3) unstable; urgency=medium + + * Add upstream patch to update HISTORY.TXT for 7.2.0 release. + * Update symbols for mipsel. + + -- Bas Couwenberg Tue, 24 Jul 2018 20:02:20 +0200 - * No-change rebuild for ruby2.5 update. +mapserver (7.2.0-2) unstable; urgency=medium - -- Matthias Klose Thu, 01 Feb 2018 19:13:52 +0000 + * Add patch to remove -beta2 version suffix. + * Update symbols for other architectures. + + -- Bas Couwenberg Tue, 24 Jul 2018 14:11:34 +0200 + +mapserver (7.2.0-1) unstable; urgency=medium + + * New upstream release. + * Bump Standards-Version to 4.1.5, no changes. + * Update symbols for amd64. + * Strip pre-releases from symbols version. + * Move from experimental to unstable. + + -- Bas Couwenberg Tue, 24 Jul 2018 08:08:43 +0200 + +mapserver (7.2.0~beta2-1~exp1) experimental; urgency=medium + + * New upstream beta release. + * Update symbols for other architectures. + + -- Bas Couwenberg Wed, 13 Jun 2018 18:15:40 +0200 + +mapserver (7.2.0~beta1-1~exp1) experimental; urgency=medium + + * New upstream beta release. + * Update copyright-format URL to use HTTPS. + * Bump Standards-Version to 4.1.4, no changes. + * Fix deprecated source override location. + * Update watch file to use HTTPS. + * Update Vcs-* URLs for Salsa. + * Strip trailing whitespace from control & rules files. + * Update copyright file, changes: + - Update copyright years for existing copyright holders + - Update license for Bison files + - Drop license & copyright for pygdioctx, removed upstream + * Add protobuf build dependencies for MVT support. + * Drop obsolete dbg package. + * Replace /usr/lib/cgi-bin/mapserv with symlink to /usr/bin/mapserv. + * Update symbols for amd64. + + -- Bas Couwenberg Wed, 09 May 2018 22:21:12 +0200 mapserver (7.0.7-1) unstable; urgency=medium @@ -509,7 +597,7 @@ -- Francesco Paolo Lovergine Fri, 23 Dec 2011 14:02:06 +0100 mapserver (6.0.1-1) unstable; urgency=low - + [ Alan Boudreault ] * New upstream release. @@ -558,7 +646,7 @@ * Fix Validation of symbol index values (CVE-2010-1678) [http://trac.osgeo.org/mapserver/ticket/3641] - + -- Alan Boudreault Thu, 06 Jan 2011 11:18:29 -0500 mapserver (5.6.5-1.1) unstable; urgency=low @@ -624,7 +712,7 @@ * New upstream release, with a few important bug fixes. * Modified ruby mapscript package to use ruby 1.9.1 instead of 1.9.0. (closes: #565831) - + [ Francesco Paolo Lovergine ] * Removed Fabio Tranchitella from Uploaders. diff -Nru mapserver-7.0.7/debian/control mapserver-7.2.2/debian/control --- mapserver-7.0.7/debian/control 2018-03-01 09:35:17.000000000 +0000 +++ mapserver-7.2.2/debian/control 2018-12-25 21:37:35.000000000 +0000 @@ -1,12 +1,11 @@ Source: mapserver -Maintainer: Ubuntu Developers -XSBC-Original-Maintainer: Debian GIS Project +Maintainer: Debian GIS Project Uploaders: Francesco Paolo Lovergine , Alan Boudreault , Bas Couwenberg Section: devel Priority: optional -Build-Depends: debhelper (>= 9), +Build-Depends: debhelper (>= 9.20160114), # dh-php, dh-python, dpkg-dev (>= 1.16.1.1), @@ -26,6 +25,7 @@ libjpeg-dev, libperl-dev, libpng-dev, + libprotobuf-c-dev, libpq-dev, libproj-dev, librsvg2-dev, @@ -35,6 +35,7 @@ # php-dev, pkg-config, pkg-kde-tools, + protobuf-c-compiler, python-all (>= 2.6.6-3~), python-all-dev (>= 2.6.6-3~), ruby, @@ -46,9 +47,9 @@ docbook-xml, xsltproc Build-Conflicts: libcurl3-openssl-dev -Standards-Version: 4.1.1 -Vcs-Browser: https://anonscm.debian.org/cgit/pkg-grass/mapserver.git -Vcs-Git: https://anonscm.debian.org/git/pkg-grass/mapserver.git +Standards-Version: 4.3.0 +Vcs-Browser: https://salsa.debian.org/debian-gis-team/mapserver +Vcs-Git: https://salsa.debian.org/debian-gis-team/mapserver.git Homepage: http://www.mapserver.org XS-Ruby-Versions: all @@ -73,21 +74,6 @@ functionality in MapScript is provided by the suggested mapscript library packages. -Package: libmapserver-dbg -Architecture: any -Section: debug -Depends: libmapserver2 (= ${binary:Version}), - ${misc:Depends} -Breaks: libmapserver1-dbg (<< 7.0.0~) -Replaces: libmapserver1-dbg (<< 7.0.0~) -Description: Debugging symbols for libmapserver - MapServer is a CGI-based framework for Internet map services which - supports Open Geospatial Consortium (OGC) standards. Scripting - functionality in MapScript is provided by the suggested mapscript - library packages. - . - This package contains the debugging symbols for libmapserver. - Package: libmapserver-dev Architecture: any Section: libdevel @@ -115,10 +101,10 @@ Package: cgi-mapserver Architecture: any Section: web -Depends: ${shlibs:Depends}, +Depends: mapserver-bin, + ${shlibs:Depends}, ${misc:Depends} -Suggests: mapserver-bin, - mapserver-doc, +Suggests: mapserver-doc, libmapscript-perl, # php-mapscript, python-mapscript, @@ -254,4 +240,3 @@ . MapServer is a CGI-based framework for Internet map services which supports Open Geospatial Consortium (OGC) standards. - diff -Nru mapserver-7.0.7/debian/copyright mapserver-7.2.2/debian/copyright --- mapserver-7.0.7/debian/copyright 2017-05-09 20:13:10.000000000 +0000 +++ mapserver-7.2.2/debian/copyright 2019-02-19 17:07:33.000000000 +0000 @@ -1,11 +1,12 @@ -Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: MapServer Upstream-Contact: The MapServer team Source: https://github.com/mapserver/mapserver Files: * -Copyright: 2008-2017, Open Source Geospatial Foundation. - 1996-2014, Regents of the University of Minnesota. +Copyright: 2008-2019, Open Source Geospatial Foundation. + 2006-2007, 2017, Tom Kralidis + 1996-2015, Regents of the University of Minnesota. 2011, 2013, Alan Boudreault, MapGears 2013, Even Rouault 2010-2011, EOX IT Services GmbH, Austria @@ -14,7 +15,6 @@ 2008, 2010, Paul Ramsey 2009-2010, Thomas Bonfort 2000-2006, 2008, Y. Assefa, DM Solutions Group inc. - 2006-2007, Tom Kralidis 2007, IS Consulting (www.mapdotnet.com) 2000-2005, DM Solutions Group 2004-2005, Sean Gillies @@ -63,18 +63,13 @@ Files: mapparser.c mapparser.h -Copyright: 1984, 1989-1990, 2000-2006, Free Software Foundation, Inc. -License: GPL-2+ with Bison exception +Copyright: 1984, 1989-1990, 2000-2011, Free Software Foundation, Inc. +License: GPL-3+ with Bison exception Files: uthash.h Copyright: 2003-2013, Troy D. Hanson License: BSD-1-clause -Files: mapscript/python/pygdioctx/pygdioctx.c - mapscript/python/pygdioctx/pygdioctx.h -Copyright: 1995, Richard Jones, Bureau of Meteorology Australia -License: BSD-3-clause-GDMODULE-LICENSE - Files: opengl/glext.h Copyright: 1991-2004, Silicon Graphics, Inc 2005, NVIDIA Corporation @@ -343,35 +338,6 @@ OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -License: BSD-3-clause-GDMODULE-LICENSE - All rights reserved. - . - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - . - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. Neither the name of the Bureau of Meteorology - Australia nor the names of its contributors may be used to endorse - or promote products derived from this software without specific - prior written permission. - . - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - License: BSD-1-clause Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: @@ -487,11 +453,11 @@ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -License: GPL-2+ with Bison exception +License: GPL-3+ with Bison exception This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + the Free Software Foundation; either version 3 of the license, or + (at your option) any later version. . This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -499,9 +465,7 @@ GNU General Public License for more details. . You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ + along with this program; if not, see . As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -517,8 +481,8 @@ version 2.2 of Bison. . On Debian systems, the full text of the GNU General Public - License version 2 can be found in the file - `/usr/share/common-licenses/GPL-2'. + License version 3 can be found in the file + `/usr/share/common-licenses/GPL-3'. License: SGI-B-1.1 License Applicability. Except to the extent portions of this file are diff -Nru mapserver-7.0.7/debian/libmapscript-java.lintian-overrides mapserver-7.2.2/debian/libmapscript-java.lintian-overrides --- mapserver-7.0.7/debian/libmapscript-java.lintian-overrides 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.2.2/debian/libmapscript-java.lintian-overrides 2019-02-19 18:18:34.000000000 +0000 @@ -0,0 +1,3 @@ +# https://github.com/mapserver/mapserver/issues/5746 +file-references-package-build-path * + diff -Nru mapserver-7.0.7/debian/libmapscript-perl.lintian-overrides mapserver-7.2.2/debian/libmapscript-perl.lintian-overrides --- mapserver-7.0.7/debian/libmapscript-perl.lintian-overrides 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.2.2/debian/libmapscript-perl.lintian-overrides 2019-02-19 18:18:34.000000000 +0000 @@ -0,0 +1,3 @@ +# https://github.com/mapserver/mapserver/issues/5746 +file-references-package-build-path * + diff -Nru mapserver-7.0.7/debian/libmapserver2.lintian-overrides mapserver-7.2.2/debian/libmapserver2.lintian-overrides --- mapserver-7.0.7/debian/libmapserver2.lintian-overrides 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.2.2/debian/libmapserver2.lintian-overrides 2019-02-19 18:18:34.000000000 +0000 @@ -0,0 +1,3 @@ +# https://github.com/mapserver/mapserver/issues/5746 +file-references-package-build-path * + diff -Nru mapserver-7.0.7/debian/libmapserver2.symbols mapserver-7.2.2/debian/libmapserver2.symbols --- mapserver-7.0.7/debian/libmapserver2.symbols 2017-11-15 20:00:35.000000000 +0000 +++ mapserver-7.2.2/debian/libmapserver2.symbols 2019-02-20 04:42:33.000000000 +0000 @@ -1,5 +1,6 @@ -# SymbolsHelper-Confirmed: 7.0.7 amd64 +# SymbolsHelper-Confirmed: 7.2.2 amd64 arm64 armel armhf i386 kfreebsd-amd64 kfreebsd-i386 mips powerpc ppc64el s390x libmapserver.so.2 #PACKAGE# #MINVER# +* Build-Depends-Package: libmapserver-dev BuildExpressionTree@Base 6.2.1 CleanVSIDir@Base 6.2.1 CompareEllipseRegion@Base 6.2.1 @@ -69,6 +70,7 @@ FLTPreParseFilterForAliasAndGroup@Base 7.0.0 FLTProcessPropertyIsNull@Base 7.0.3 FLTSimplify@Base 7.0.0 + FLTSplitFilters@Base 7.2.0 FLTValidFilterNode@Base 6.2.1 FLTValidForBBoxFilter@Base 6.2.1 FLTogrConvertGeometry@Base 6.2.1 @@ -87,6 +89,7 @@ LayerDefaultGetItems@Base 6.2.1 LayerDefaultGetNumFeatures@Base 6.2.1 LayerDefaultGetShape@Base 6.2.1 + LayerDefaultGetShapeCount@Base 7.2.0 LayerDefaultInitItemInfo@Base 6.2.1 LayerDefaultIsOpen@Base 6.2.1 LayerDefaultNextShape@Base 6.2.1 @@ -143,6 +146,7 @@ _Z23msOGREscapePropertyNameP8layerObjPKc@Base 6.2.1 _Z24aggCompositeRasterBufferP8imageObjP15rasterBufferObj20CompositingOperationi@Base 7.0.0 _Z24aggGetRasterBufferHandleP8imageObjP15rasterBufferObj@Base 6.2.1 + _Z24msOGRLayerGetNumFeaturesP8layerObj@Base 7.2.0 _Z25aggInitializeRasterBufferP15rasterBufferObjiii@Base 6.2.1 _Z25utfgridRenderPixmapSymbolP8imageObjddP9symbolObjP14symbolStyleObj@Base 7.0.0 _Z25utfgridRenderVectorSymbolP8imageObjddP9symbolObjP14symbolStyleObj@Base 7.0.0 @@ -192,6 +196,7 @@ _ZN10ClipperLib17E2InsertsBeforeE1ERNS_5TEdgeES1_@Base 6.2.1 _ZN10ClipperLib17FindAppendLinkEndEPNS_6OutRecE@Base 6.2.1 _ZN10ClipperLib17GetOverlapSegmentENS_8IntPointES0_S0_S0_RS0_S1_@Base 6.2.1 + (arch=armel armhf i386 kfreebsd-i386 m68k mips mipsel powerpc powerpcspe)_ZN10ClipperLib17PolyOffsetBuilder8DoSquareEd@Base 7.2.2 _ZN10ClipperLib17PolyOffsetBuilderC1ERKSt6vectorIS1_INS_8IntPointESaIS2_EESaIS4_EERS6_dNS_8JoinTypeEd@Base 6.2.1 _ZN10ClipperLib17PolyOffsetBuilderC2ERKSt6vectorIS1_INS_8IntPointESaIS2_EESaIS4_EERS6_dNS_8JoinTypeEd@Base 6.2.1 _ZN10ClipperLib18GetNextNonDupOutPtEPNS_5OutPtERS1_@Base 6.2.1 @@ -205,8 +210,7 @@ _ZN10ClipperLib4TopXERNS_5TEdgeEx@Base 6.2.1 _ZN10ClipperLib5GetDxENS_8IntPointES0_@Base 6.2.1 _ZN10ClipperLib5SetDxERNS_5TEdgeE@Base 6.2.1 - (arch=i386 m68k mips mipsel powerpc)_ZN10ClipperLib6Int128C1Ex@Base 7.0.6 - (arch=i386 m68k mips mipsel powerpc)_ZN10ClipperLib6Int128C2Ex@Base 7.0.6 + (arch=armel armhf i386 kfreebsd-i386 m68k mips mipsel powerpc powerpcspe)_ZN10ClipperLib6Int1286NegateERS0_@Base 7.2.2 _ZN10ClipperLib7Clipper10ClearJoinsEv@Base 6.2.1 _ZN10ClipperLib7Clipper11AddHorzJoinEPNS_5TEdgeEi@Base 6.2.1 _ZN10ClipperLib7Clipper11BuildResultERSt6vectorIS1_INS_8IntPointESaIS2_EESaIS4_EE@Base 6.2.1 @@ -220,8 +224,8 @@ _ZN10ClipperLib7Clipper13BuildResultExERSt6vectorINS_9ExPolygonESaIS2_EE@Base 6.2.1 _ZN10ClipperLib7Clipper13DeleteFromAELEPNS_5TEdgeE@Base 6.2.1 _ZN10ClipperLib7Clipper13DeleteFromSELEPNS_5TEdgeE@Base 6.2.1 - (arch=armel armhf hppa hurd-i386 i386 kfreebsd-i386 m68k mips mipsel powerpc powerpcspe sparc x32)_ZN10ClipperLib7Clipper13DisposeOutRecEjb@Base 7.0.6 - (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el s390 s390x sparc64)_ZN10ClipperLib7Clipper13DisposeOutRecEmb@Base 7.0.1 + (arch=armel armhf hppa hurd-i386 i386 kfreebsd-i386 m68k mips mipsel powerpc powerpcspe sh4 sparc x32)_ZN10ClipperLib7Clipper13DisposeOutRecEjb@Base 7.2.0 + (arch=alpha amd64 arm64 ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390 s390x sparc64)_ZN10ClipperLib7Clipper13DisposeOutRecEmb@Base 7.2.0 _ZN10ClipperLib7Clipper14ClearHorzJoinsEv@Base 6.2.1 _ZN10ClipperLib7Clipper14FixHoleLinkageEPNS_6OutRecE@Base 6.2.1 _ZN10ClipperLib7Clipper14InsertScanbeamEx@Base 6.2.1 @@ -315,8 +319,8 @@ _ZN11KmlRendererD0Ev@Base 6.4.0 _ZN11KmlRendererD1Ev@Base 6.4.0 _ZN11KmlRendererD2Ev@Base 6.4.0 - (arch=!amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64el !s390x !sparc64)_ZN12AGG2RendererD1Ev@Base 7.0.1 - (arch=!amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64el !s390x !sparc64)_ZN12AGG2RendererD2Ev@Base 7.0.1 + (arch=!amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN12AGG2RendererD1Ev@Base 7.2.2 + (arch=!amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN12AGG2RendererD2Ev@Base 7.2.2 _ZN12line_adaptor6vertexEPdS0_@Base 6.2.1 _ZN12line_adaptorD0Ev@Base 6.2.1 _ZN12line_adaptorD1Ev@Base 6.2.1 @@ -333,8 +337,8 @@ _ZN19polygon_adaptor_utfD0Ev@Base 7.0.0 _ZN19polygon_adaptor_utfD1Ev@Base 7.0.0 _ZN19polygon_adaptor_utfD2Ev@Base 7.0.0 - (optional=templinst|arch=alpha amd64 arm64 hppa ia64 kfreebsd-amd64 mips64el ppc64 ppc64el s390 s390x sparc sparc64 x32)_ZN9mapserver10conv_curveINS_20path_storage_integerIiLj6EEENS_6curve3ENS_6curve4EE6vertexEPdS6_@Base 6.4.0 - (optional=templinst|arch=alpha amd64 arm64 hppa ia64 kfreebsd-amd64 mips64el ppc64 ppc64el s390 s390x sparc sparc64 x32)_ZN9mapserver10conv_curveINS_20path_storage_integerIsLj6EEENS_6curve3ENS_6curve4EE6vertexEPdS6_@Base 6.4.0 + (optional=templinst|arch=alpha amd64 arm64 hppa ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390 s390x sh4 sparc sparc64 x32)_ZN9mapserver10conv_curveINS_20path_storage_integerIiLj6EEENS_6curve3ENS_6curve4EE6vertexEPdS6_@Base 6.4.0 + (optional=templinst|arch=alpha amd64 arm64 hppa ia64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390 s390x sh4 sparc sparc64 x32)_ZN9mapserver10conv_curveINS_20path_storage_integerIsLj6EEENS_6curve3ENS_6curve4EE6vertexEPdS6_@Base 6.4.0 (optional=templinst|arch=sparc)_ZN9mapserver10conv_curveINS_31serialized_integer_path_adaptorIsLj6EEENS_6curve3ENS_6curve4EED1Ev@Base 6.4.1 (optional=templinst|arch=sparc)_ZN9mapserver10conv_curveINS_31serialized_integer_path_adaptorIsLj6EEENS_6curve3ENS_6curve4EED2Ev@Base 6.4.1 (optional=templinst)_ZN9mapserver10conv_curveINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_6curve3ENS_6curve4EE6vertexEPdS8_@Base 7.0.0 @@ -369,10 +373,10 @@ (optional=templinst)_ZN9mapserver11math_strokeINS_11pod_bvectorINS_10point_baseIdEELj6EEEE8calc_arcERS4_dddddd@Base 6.2.1 (optional=templinst)_ZN9mapserver11math_strokeINS_11pod_bvectorINS_10point_baseIdEELj6EEEE8calc_capERS4_RKNS_11vertex_distES9_d@Base 6.2.1 (optional=templinst)_ZN9mapserver11math_strokeINS_11pod_bvectorINS_10point_baseIdEELj6EEEE9calc_joinERS4_RKNS_11vertex_distES9_S9_dd@Base 6.2.1 - (optional=templinst|arch=alpha amd64 arm64 hppa kfreebsd-amd64 mips64el ppc64 ppc64el s390x sparc64 x32)_ZN9mapserver11pod_bvectorIN10ClipperLib8IntPointELj8EE14allocate_blockEj@Base 6.4.0 + (optional=templinst|arch=alpha amd64 arm64 hppa kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sh4 sparc64 x32)_ZN9mapserver11pod_bvectorIN10ClipperLib8IntPointELj8EE14allocate_blockEj@Base 6.4.0 (optional=templinst)_ZN9mapserver11pod_bvectorIN10ClipperLib8IntPointELj8EED1Ev@Base 6.2.1 (optional=templinst)_ZN9mapserver11pod_bvectorIN10ClipperLib8IntPointELj8EED2Ev@Base 6.2.1 - (optional=templinst|arch=alpha amd64 arm64 hppa kfreebsd-amd64 mips64el ppc64 ppc64el s390x sparc64 x32)_ZN9mapserver11pod_bvectorINS_10point_baseIdEELj6EE14allocate_blockEj@Base 7.0.0 + (optional=templinst|arch=alpha amd64 arm64 hppa kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sh4 sparc64 x32)_ZN9mapserver11pod_bvectorINS_10point_baseIdEELj6EE14allocate_blockEj@Base 7.0.0 (optional=templinst)_ZN9mapserver11pod_bvectorINS_10point_baseIdEELj6EED1Ev@Base 6.2.1 (optional=templinst)_ZN9mapserver11pod_bvectorINS_10point_baseIdEELj6EED2Ev@Base 6.2.1 (optional=templinst)_ZN9mapserver11pod_bvectorINS_11vertex_distELj6EED1Ev@Base 6.2.1 @@ -399,13 +403,15 @@ (optional=templinst)_ZN9mapserver11pod_bvectorIhLj12EED1Ev@Base 7.0.2 (optional=templinst)_ZN9mapserver11pod_bvectorIhLj12EED2Ev@Base 7.0.2 (optional=templinst)_ZN9mapserver11qsort_cellsINS_7cell_aaEEEvPPT_j@Base 6.2.1 - (optional=templinst|arch=!amd64 !arm64 !hppa !mips64el !ppc64el !s390x !sparc64)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9conv_dashINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEES8_EEE11end_contourERSt6vectorISC_IN10ClipperLib8IntPointESaISE_EESaISG_EE@Base 7.0.2 + (optional=templinst)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9conv_dashINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEES8_EEE11add_vertex_ERdSC_@Base 7.2.0 + (optional=templinst|arch=!amd64 !arm64 !hppa !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sh4 !sparc64)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9conv_dashINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEES8_EEE11end_contourERSt6vectorISC_IN10ClipperLib8IntPointESaISE_EESaISG_EE@Base 7.0.2 (optional=templinst)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9conv_dashINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEES8_EEE11next_vertexEPdSC_@Base 6.4.0 (optional=templinst)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9conv_dashINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEES8_EEE6rewindEj@Base 6.2.1 (optional=templinst)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9conv_dashINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEES8_EEE6vertexEPdSC_@Base 6.4.1 (optional=templinst)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9conv_dashINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEES8_EEED1Ev@Base 6.2.1 (optional=templinst)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9conv_dashINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEES8_EEED2Ev@Base 6.2.1 - (optional=templinst|arch=!amd64 !arm64 !hppa !mips64el !ppc64el !s390x !sparc64)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEEE11end_contourERSt6vectorISA_IN10ClipperLib8IntPointESaISC_EESaISE_EE@Base 7.0.2 + (optional=templinst)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEEE11add_vertex_ERdSA_@Base 7.2.0 + (optional=templinst|arch=!amd64 !arm64 !hppa !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sh4 !sparc64)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEEE11end_contourERSt6vectorISA_IN10ClipperLib8IntPointESaISC_EESaISE_EE@Base 7.0.2 (optional=templinst)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEEE11next_vertexEPdSA_@Base 6.4.0 (optional=templinst)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEEE6rewindEj@Base 6.2.1 (optional=templinst)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEEE6vertexEPdSA_@Base 6.4.1 @@ -460,7 +466,7 @@ (optional=templinst)_ZN9mapserver16comp_op_rgba_xorINS_5rgba8ENS_10order_bgraEE9blend_pixEPhjjjjj@Base 7.0.0 _ZN9mapserver16mcs7x12_mono_lowE@Base 6.2.1 (optional=templinst)_ZN9mapserver16render_scanlinesINS_22rasterizer_scanline_aaINS_18rasterizer_sl_clipINS_12ras_conv_intEEEEENS_11scanline_p8ENS_26renderer_scanline_aa_solidINS_13renderer_baseINS_23pixfmt_alpha_blend_rgbaINS_16blender_rgba_preINS_5rgba8ENS_10order_bgraEEENS_12row_accessorIhEEjEEEEEEEEvRT_RT0_RT1_@Base 6.2.1 - (optional=templinst)_ZN9mapserver16render_scanlinesINS_22rasterizer_scanline_aaINS_18rasterizer_sl_clipINS_12ras_conv_intEEEEENS_11scanline_u8ENS_19scanline_storage_aaIhEEEEvRT_RT0_RT1_@Base 6.2.1 + (optional=templinst)_ZN9mapserver16render_scanlinesINS_22rasterizer_scanline_aaINS_18rasterizer_sl_clipINS_12ras_conv_intEEEEENS_11scanline_u8ENS_19scanline_storage_aaIhEEEEvRT_RT0_RT1_@Base 7.2.0 (optional=templinst)_ZN9mapserver16render_scanlinesINS_22rasterizer_scanline_aaINS_18rasterizer_sl_clipINS_12ras_conv_intEEEEENS_11scanline_u8ENS_26renderer_scanline_aa_solidINS_13renderer_baseINS_23pixfmt_alpha_blend_rgbaINS_16blender_rgba_preINS_5rgba8ENS_10order_bgraEEENS_12row_accessorIhEEjEEEEEEEEvRT_RT0_RT1_@Base 6.2.1 (optional=templinst)_ZN9mapserver16render_scanlinesINS_22rasterizer_scanline_aaINS_18rasterizer_sl_clipINS_12ras_conv_intEEEEENS_12scanline_binENS_20scanline_storage_binEEEvRT_RT0_RT1_@Base 6.2.1 (optional=templinst)_ZN9mapserver16render_scanlinesINS_22rasterizer_scanline_aaINS_18rasterizer_sl_clipINS_12ras_conv_intEEEEENS_12scanline_binENS_27renderer_scanline_bin_solidINS_13renderer_baseI10pixfmt_utfI8utfpix32NS_13row_ptr_cacheIjEELj1ELj0EEEEEEEEvRT_RT0_RT1_@Base 7.0.0 @@ -474,8 +480,8 @@ (optional=templinst)_ZN9mapserver18comp_op_rgba_minusINS_5rgba8ENS_10order_bgraEE9blend_pixEPhjjjjj@Base 7.0.0 _ZN9mapserver18comp_op_table_rgbaINS_5rgba8ENS_10order_bgraEE14g_comp_op_funcE@Base 7.0.1 (optional=templinst)_ZN9mapserver18conv_adaptor_vcgenI12line_adaptorNS_10vcgen_dashENS_12null_markersEE6vertexEPdS5_@Base 6.2.1 - (optional=templinst|arch=alpha amd64 arm64 hppa kfreebsd-amd64 mips64el ppc64 ppc64el s390x sparc64 x32)_ZN9mapserver18conv_adaptor_vcgenI12line_adaptorNS_12vcgen_strokeENS_12null_markersEE6vertexEPdS5_@Base 6.4.0 - (optional=templinst|arch=alpha amd64 arm64 hppa kfreebsd-amd64 mips64el ppc64 ppc64el s390x sparc64 x32)_ZN9mapserver18conv_adaptor_vcgenI16line_adaptor_utfNS_12vcgen_strokeENS_12null_markersEE6vertexEPdS5_@Base 7.0.0 + (optional=templinst|arch=alpha amd64 arm64 hppa kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sh4 sparc64 x32)_ZN9mapserver18conv_adaptor_vcgenI12line_adaptorNS_12vcgen_strokeENS_12null_markersEE6vertexEPdS5_@Base 6.4.0 + (optional=templinst|arch=alpha amd64 arm64 hppa kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sh4 sparc64 x32)_ZN9mapserver18conv_adaptor_vcgenI16line_adaptor_utfNS_12vcgen_strokeENS_12null_markersEE6vertexEPdS5_@Base 7.0.0 (optional=templinst)_ZN9mapserver18conv_adaptor_vcgenINS_9conv_dashINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEENS_12vcgen_strokeES6_E6vertexEPdSA_@Base 6.2.1 (optional=templinst)_ZN9mapserver18conv_adaptor_vcgenINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_10vcgen_dashENS_12null_markersEE6vertexEPdS8_@Base 6.2.1 (optional=templinst)_ZN9mapserver18conv_adaptor_vcgenINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12vcgen_strokeENS_12null_markersEE6vertexEPdS8_@Base 6.2.1 @@ -516,6 +522,7 @@ (optional=templinst|arch=sparc)_ZN9mapserver21rasterizer_outline_aaINS_22renderer_outline_imageINS_13renderer_baseINS_23pixfmt_alpha_blend_rgbaINS_16blender_rgba_preINS_5rgba8ENS_10order_bgraEEENS_12row_accessorIhEEjEEEENS_18line_image_patternINS_28pattern_filter_bilinear_rgbaIS5_EEEEEENS_14line_coord_satEED2Ev@Base 6.4.1 (optional=templinst)_ZN9mapserver22comp_op_rgba_exclusionINS_5rgba8ENS_10order_bgraEE9blend_pixEPhjjjjj@Base 7.0.0 (optional=templinst)_ZN9mapserver22rasterizer_scanline_aaINS_18rasterizer_sl_clipINS_12ras_conv_intEEEE10add_vertexEddj@Base 6.2.1 + (optional=templinst|arch=!amd64 !arm64 !kfreebsd-amd64 !ppc64el !s390x)_ZN9mapserver22rasterizer_scanline_aaINS_18rasterizer_sl_clipINS_12ras_conv_intEEEE14sweep_scanlineINS_11scanline_p8EEEbRT_@Base 7.2.2 (optional=templinst|arch=armel armhf hurd-i386 i386 kfreebsd-i386 m68k mips mipsel powerpc powerpcspe)_ZN9mapserver22rasterizer_scanline_aaINS_18rasterizer_sl_clipINS_12ras_conv_intEEEE8add_pathINS_10conv_curveINS_20path_storage_integerIiLj6EEENS_6curve3ENS_6curve4EEEEEvRT_j@Base 6.2.1 (optional=templinst|arch=armel armhf hurd-i386 i386 kfreebsd-i386 m68k mips mipsel powerpc powerpcspe)_ZN9mapserver22rasterizer_scanline_aaINS_18rasterizer_sl_clipINS_12ras_conv_intEEEE8add_pathINS_10conv_curveINS_20path_storage_integerIsLj6EEENS_6curve3ENS_6curve4EEEEEvRT_j@Base 6.2.1 (optional=templinst)_ZN9mapserver22renderer_outline_imageINS_13renderer_baseINS_23pixfmt_alpha_blend_rgbaINS_16blender_rgba_preINS_5rgba8ENS_10order_bgraEEENS_12row_accessorIhEEjEEEENS_18line_image_patternINS_28pattern_filter_bilinear_rgbaIS4_EEEEE13line3_no_clipERKNS_15line_parametersEiiii@Base 6.2.1 @@ -565,7 +572,6 @@ (optional=templinst|arch=sparc)_ZN9mapserver9path_baseINS_20vertex_block_storageIdLj8ELj256EEEE11concat_pathINS_14conv_transformINS_10conv_curveINS_31serialized_integer_path_adaptorIsLj6EEENS_6curve3ENS_6curve4EEENS_12trans_affineEEEEEvRT_j@Base 6.4.1 (optional=templinst)_ZN9mapserver9path_baseINS_20vertex_block_storageIdLj8ELj256EEEE6curve3Edddd@Base 7.0.0 (optional=templinst)_ZN9mapserver9path_baseINS_20vertex_block_storageIdLj8ELj256EEEE6curve4Edddddd@Base 7.0.0 - (optional=templinst|arch=!amd64)_ZN9mapserver9path_baseINS_20vertex_block_storageIdLj8ELj256EEEE6vertexEPdS4_@Base 7.0.2 _ZN9mapserver9verdana12E@Base 6.2.1 _ZN9mapserver9verdana13E@Base 6.2.1 _ZN9mapserver9verdana14E@Base 6.2.1 @@ -574,7 +580,7 @@ _ZN9mapserver9verdana18E@Base 6.2.1 _ZNK10ClipperLib16clipperException4whatEv@Base 6.2.1 (arch=sparc)_ZNK10ClipperLib6Int128dvERKS0_@Base 6.4.1 - (arch=!amd64 !arm64 !hppa !mips64el !ppc64el !s390x !sparc64)_ZNK10ClipperLib6Int128mlERKS0_@Base 7.0.2 + (arch=!amd64 !arm64 !hppa !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sh4 !sparc64)_ZNK10ClipperLib6Int128mlERKS0_@Base 7.0.2 _ZNK10ClipperLib7Clipper14IsContributingERKNS_5TEdgeE@Base 6.2.1 _ZNK10ClipperLib7Clipper17IsEvenOddFillTypeERKNS_5TEdgeE@Base 6.2.1 _ZNK10ClipperLib7Clipper20IsEvenOddAltFillTypeERKNS_5TEdgeE@Base 6.2.1 @@ -586,41 +592,43 @@ _ZNK9mapserver12trans_affine8is_equalERKS0_d@Base 6.2.1 _ZNK9mapserver12trans_affine8is_validEd@Base 6.2.1 _ZNK9mapserver12trans_affine8rotationEv@Base 6.2.1 - (arch=armel armhf hurd-i386 i386 kfreebsd-i386 m68k mips mipsel powerpc powerpcspe)_ZNK9mapserver12trans_affine9transformEPdS1_@Base 7.0.6 (optional=templinst)_ZNK9mapserver18rasterizer_sl_clipINS_12ras_conv_intEE11line_clip_yINS_19rasterizer_cells_aaINS_7cell_aaEEEEEvRT_iiiijj@Base 6.2.1 _ZNK9mapserver25font_engine_freetype_base14write_glyph_toEPh@Base 6.2.1 _ZNK9mapserver25font_engine_freetype_base8ascenderEv@Base 6.2.1 _ZNK9mapserver25font_engine_freetype_base9descenderEv@Base 6.2.1 _ZNK9mapserver25font_engine_freetype_base9find_faceEPKc@Base 6.2.1 _ZNK9mapserver25font_engine_freetype_base9num_facesEv@Base 6.2.1 - (optional=templinst|arch=!amd64 !arm64 !hppa !mips64el !ppc64el !s390x !sparc64)_ZNSt6vectorIN10ClipperLib11DoublePointESaIS1_EE17_M_default_appendEj@Base 7.0.2 - (optional=templinst|arch=!amd64 !arm64 !mips64el !ppc64el !s390x !sparc64)_ZNSt6vectorIN10ClipperLib8IntPointESaIS1_EE17_M_default_appendEj@Base 7.0.2 - (optional=templinst|arch=amd64 arm64 mips64el ppc64el s390x sparc64)_ZNSt6vectorIN10ClipperLib8IntPointESaIS1_EE17_M_default_appendEm@Base 7.0.2 + (optional=templinst|arch=!amd64 !arm64 !hppa !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNSt6vectorIN10ClipperLib11DoublePointESaIS1_EE17_M_default_appendEj@Base 7.0.2 + (optional=templinst|arch=amd64 arm64 kfreebsd-amd64 ppc64el s390x)_ZNSt6vectorIN10ClipperLib11DoublePointESaIS1_EE17_M_default_appendEm@Base 7.2.0 + (optional=templinst|arch=!amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNSt6vectorIN10ClipperLib8IntPointESaIS1_EE17_M_default_appendEj@Base 7.0.2 + (optional=templinst|arch=amd64 arm64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNSt6vectorIN10ClipperLib8IntPointESaIS1_EE17_M_default_appendEm@Base 7.0.2 (optional=templinst)_ZNSt6vectorIN10ClipperLib8IntPointESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_@Base 7.0.7 (optional=templinst|subst)_ZNSt6vectorIN10ClipperLib8IntPointESaIS1_EE7reserveE{size_t}@Base 6.4.0 (optional=templinst)_ZNSt6vectorIN10ClipperLib8IntPointESaIS1_EEaSERKS3_@Base 6.2.1 - (optional=templinst|arch=!amd64 !arm64 !mips64el !ppc64el !s390x !sparc64)_ZNSt6vectorIN10ClipperLib9ExPolygonESaIS1_EE17_M_default_appendEj@Base 7.0.2 - (optional=templinst|arch=amd64 arm64 mips64el ppc64el s390x sparc64)_ZNSt6vectorIN10ClipperLib9ExPolygonESaIS1_EE17_M_default_appendEm@Base 7.0.2 + (optional=templinst|arch=!amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNSt6vectorIN10ClipperLib9ExPolygonESaIS1_EE17_M_default_appendEj@Base 7.0.2 + (optional=templinst|arch=amd64 arm64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNSt6vectorIN10ClipperLib9ExPolygonESaIS1_EE17_M_default_appendEm@Base 7.0.2 (optional=templinst)_ZNSt6vectorIN10ClipperLib9ExPolygonESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_@Base 7.0.7 (optional=templinst)_ZNSt6vectorIP10msExprNodeSaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_@Base 7.0.7 (optional=templinst)_ZNSt6vectorIP10msExprNodeSaIS1_EE9push_backERKS1_@Base 7.0.5 (optional=templinst)_ZNSt6vectorIP10msExprNodeSaIS1_EEaSERKS3_@Base 7.0.5 - (optional=templinst|arch=!amd64 !arm64 !mips64el !ppc64el !s390x !sparc64)_ZNSt6vectorIPN10ClipperLib11HorzJoinRecESaIS2_EE17_M_default_appendEj@Base 7.0.2 + (optional=templinst|arch=armel armhf i386 kfreebsd-i386 m68k mips mipsel powerpc powerpcspe sh4)_ZNSt6vectorIPN10ClipperLib11HorzJoinRecESaIS2_EE17_M_default_appendEj@Base 7.2.0 + (optional=templinst|arch=amd64 arm64 kfreebsd-amd64 ppc64el s390x)_ZNSt6vectorIPN10ClipperLib11HorzJoinRecESaIS2_EE17_M_default_appendEm@Base 7.2.0 (optional=templinst)_ZNSt6vectorIPN10ClipperLib5TEdgeESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_@Base 7.0.7 (optional=templinst)_ZNSt6vectorIPN10ClipperLib6OutRecESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_@Base 7.0.7 - (optional=templinst|arch=!amd64 !arm64 !mips64el !ppc64el !s390x !sparc64)_ZNSt6vectorIPN10ClipperLib7JoinRecESaIS2_EE17_M_default_appendEj@Base 7.0.2 - (optional=templinst)_ZNSt6vectorIPN10ClipperLib7JoinRecESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_@Base 7.0.7 - (optional=templinst|arch=!amd64 !arm64 !mips64el !ppc64el !s390x !sparc64)_ZNSt6vectorIS_IN10ClipperLib8IntPointESaIS1_EESaIS3_EE17_M_default_appendEj@Base 7.0.2 - (optional=templinst|arch=amd64 arm64 mips64el ppc64el s390x sparc64)_ZNSt6vectorIS_IN10ClipperLib8IntPointESaIS1_EESaIS3_EE17_M_default_appendEm@Base 7.0.2 + (optional=templinst|arch=armel armhf i386 kfreebsd-i386 m68k mips mipsel powerpc powerpcspe sh4)_ZNSt6vectorIPN10ClipperLib7JoinRecESaIS2_EE17_M_default_appendEj@Base 7.2.0 + (optional=templinst|arch=amd64 arm64 kfreebsd-amd64 ppc64el s390x)_ZNSt6vectorIPN10ClipperLib7JoinRecESaIS2_EE17_M_default_appendEm@Base 7.2.0 + (optional=templinst)_ZNSt6vectorIPN10ClipperLib7JoinRecESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_@Base 7.2.0 + (optional=templinst|arch=!amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNSt6vectorIS_IN10ClipperLib8IntPointESaIS1_EESaIS3_EE17_M_default_appendEj@Base 7.0.2 + (optional=templinst|arch=amd64 arm64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZNSt6vectorIS_IN10ClipperLib8IntPointESaIS1_EESaIS3_EE17_M_default_appendEm@Base 7.0.2 (optional=templinst)_ZNSt6vectorIS_IN10ClipperLib8IntPointESaIS1_EESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_@Base 7.0.7 (optional=templinst)_ZNSt6vectorIS_IN10ClipperLib8IntPointESaIS1_EESaIS3_EED1Ev@Base 6.2.1 (optional=templinst)_ZNSt6vectorIS_IN10ClipperLib8IntPointESaIS1_EESaIS3_EED2Ev@Base 6.2.1 (optional=templinst)_ZNSt6vectorIS_IN10ClipperLib8IntPointESaIS1_EESaIS3_EEaSERKS5_@Base 6.2.1 - (optional=templinst|arch=!alpha !amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !s390x !sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEEiS4_NS0_5__ops15_Iter_comp_iterIPFbS4_S4_EEEEvT_T0_SG_T1_T2_@Base 6.4.1 - (optional=templinst|arch=alpha amd64 arm64 kfreebsd-amd64 mips64el ppc64 ppc64el s390x sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEElS4_NS0_5__ops15_Iter_comp_iterIPFbS4_S4_EEEEvT_T0_SG_T1_T2_@Base 6.4.1 + (optional=templinst|arch=!alpha !amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEEiS4_NS0_5__ops15_Iter_comp_iterIPFbS4_S4_EEEEvT_T0_SG_T1_T2_@Base 6.4.1 + (optional=templinst|arch=alpha amd64 arm64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEElS4_NS0_5__ops15_Iter_comp_iterIPFbS4_S4_EEEEvT_T0_SG_T1_T2_@Base 6.4.1 (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterIPFbS4_S4_EEEEvT_SF_T0_@Base 6.4.1 - (optional=templinst|arch=!alpha !amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !s390x !sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEEiNS0_5__ops15_Iter_comp_iterIPFbS4_S4_EEEEvT_SF_T0_T1_@Base 6.4.1 - (optional=templinst|arch=alpha amd64 arm64 kfreebsd-amd64 mips64el ppc64 ppc64el s390x sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEElNS0_5__ops15_Iter_comp_iterIPFbS4_S4_EEEEvT_SF_T0_T1_@Base 6.4.1 + (optional=templinst|arch=!alpha !amd64 !arm64 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEEiNS0_5__ops15_Iter_comp_iterIPFbS4_S4_EEEEvT_SF_T0_T1_@Base 6.4.1 + (optional=templinst|arch=alpha amd64 arm64 kfreebsd-amd64 mips64el ppc64 ppc64el riscv64 s390x sparc64)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEElNS0_5__ops15_Iter_comp_iterIPFbS4_S4_EEEEvT_SF_T0_T1_@Base 6.4.1 (optional=templinst|arch=sparc)_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPPN10ClipperLib6OutRecESt6vectorIS4_SaIS4_EEEEPFbS4_S4_EEvT_SC_T0_@Base 6.4.1 (optional=templinst)_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_@Base 7.0.5 _ZTI11KmlRenderer@Base 6.4.0 @@ -646,6 +654,20 @@ _ZTVN10ClipperLib16clipperExceptionE@Base 6.2.1 _ZTVN10ClipperLib7ClipperE@Base 6.2.1 _get_param_value@Base 7.0.0 + _msMetadataGetCharacterString@Base 7.2.0 + _msMetadataGetCodeList@Base 7.2.0 + _msMetadataGetContact@Base 7.2.0 + _msMetadataGetDate@Base 7.2.0 + _msMetadataGetDecimal@Base 7.2.0 + _msMetadataGetDistributionInfo@Base 7.2.0 + _msMetadataGetExtent@Base 7.2.0 + _msMetadataGetGMLTimePeriod@Base 7.2.0 + _msMetadataGetIdentificationInfo@Base 7.2.0 + _msMetadataGetInteger@Base 7.2.0 + _msMetadataGetOnline@Base 7.2.0 + _msMetadataGetReferenceSystemInfo@Base 7.2.0 + _msMetadataGetSpatialRepresentationInfo@Base 7.2.0 + _msMetadataGetURL@Base 7.2.0 _msSLDParseSizeParameter@Base 6.2.1 _msValidateTime@Base 6.2.1 _ms_script_prefix_am@Base 7.0.0 @@ -705,6 +727,7 @@ circleLayerDrawShape@Base 6.2.1 cleanupCairo@Base 6.2.1 cleanupDummy@Base 6.2.1 + cleanupResultCache@Base 7.2.0 closeLayerRasterCairo@Base 6.2.1 closeLayerVectorCairo@Base 6.2.1 clusterDestroyData@Base 6.2.1 @@ -741,6 +764,7 @@ freeClass@Base 6.2.1 freeClassHitTests@Base 6.4.0 freeCluster@Base 6.2.1 + freeCompositingFilter@Base 7.2.0 freeFeatureList@Base 6.2.1 freeGrid@Base 7.0.0 freeImageCache@Base 6.2.1 @@ -751,7 +775,7 @@ freeLabelHitTests@Base 6.4.0 freeLabelLeader@Base 7.0.0 freeLayer@Base 6.2.1 - freeLayerCompositers@Base 7.0.2 + freeLayerCompositer@Base 7.2.0 freeLayerHitTests@Base 6.4.0 freeLegend@Base 6.2.1 freeMapHitTests@Base 6.4.0 @@ -887,12 +911,17 @@ msAlphaBlendPM@Base 6.2.1 msAppendOutputFormat@Base 6.2.1 msAppendSymbol@Base 6.2.1 + msApplyBlackeningCompositingFilter@Base 7.2.0 + msApplyBlurringCompositingFilter@Base 7.2.0 + msApplyCompositingFilter@Base 7.2.0 msApplyDefaultOutputFormats@Base 6.2.1 msApplyDefaultSubstitutions@Base 6.2.1 - msApplyFilterToRasterBuffer@Base 7.0.0 + msApplyGrayscaleCompositingFilter@Base 7.2.0 msApplyMapConfigOptions@Base 6.2.1 msApplyOutputFormat@Base 6.2.1 msApplySubstitutions@Base 6.2.1 + msApplyTranslationCompositingFilter@Base 7.2.0 + msApplyWhiteningCompositingFilter@Base 7.2.0 msAxisDenormalizePoints@Base 6.2.1 msAxisNormalizePoints@Base 6.2.1 msAxisSwapShape@Base 6.2.1 @@ -1086,6 +1115,10 @@ msDrawRasterLayer@Base 6.2.1 msDrawRasterLayerGDAL@Base 6.2.1 msDrawRasterLayerLow@Base 6.2.1 + msDrawRasterLayerLowCheckIfMustDraw@Base 7.2.0 + msDrawRasterLayerLowCloseDataset@Base 7.2.0 + msDrawRasterLayerLowOpenDataset@Base 7.2.0 + msDrawRasterLayerLowWithDataset@Base 7.2.0 msDrawRasterLoadProjection@Base 6.4.0 msDrawRasterSetupTileLayer@Base 6.4.0 msDrawReferenceMap@Base 6.2.1 @@ -1102,7 +1135,6 @@ msDrawVectorLayer@Base 6.2.1 msDrawWMSLayer@Base 6.2.1 msDrawWMSLayerLow@Base 6.2.1 - msDumpLayer@Base 6.2.1 msDumpResult@Base 6.2.1 msEmbedLegend@Base 6.2.1 msEmbedScalebar@Base 6.2.1 @@ -1261,6 +1293,7 @@ msGetProjectionString@Base 6.2.1 msGetQueryResultBounds@Base 6.2.1 msGetRasterBufferKml@Base 6.4.0 + msGetShapeRAMSize@Base 7.2.0 msGetStringSize@Base 7.0.0 msGetSymbol@Base 6.2.1 msGetSymbolIndex@Base 6.2.1 @@ -1385,6 +1418,7 @@ msIsAxisInverted@Base 6.2.1 msIsAxisInvertedProj@Base 7.0.0 msIsDegenerateShape@Base 6.2.1 + msIsGlyphASpace@Base 7.2.0 msIsLayerQueryable@Base 6.2.1 msIsOuterRing@Base 6.2.1 msIsXMLTagValid@Base 6.2.1 @@ -1420,6 +1454,7 @@ msLayerGetProcessing@Base 6.2.1 msLayerGetProcessingKey@Base 6.2.1 msLayerGetShape@Base 6.2.1 + msLayerGetShapeCount@Base 7.2.0 msLayerInitItemInfo@Base 6.2.1 msLayerIsOpen@Base 6.2.1 msLayerIsVisible@Base 6.2.1 @@ -1444,6 +1479,7 @@ msLegendCalcSize@Base 6.2.1 msLibXml2GenerateList@Base 6.2.1 msLibXml2GetFirstChild@Base 7.0.0 + msLibXml2GetFirstChildElement@Base 7.2.0 msLibXml2GetFirstChildNs@Base 7.0.0 msLibXml2GetXPath@Base 6.2.1 msLibXml2GetXPathTree@Base 6.2.1 @@ -1471,6 +1507,7 @@ msLoadSymbolSet@Base 6.2.1 msLongToString@Base 6.2.1 msLookupHashTable@Base 6.2.1 + msMVTWriteTile@Base 7.2.0 msMapComputeGeotransform@Base 6.2.1 msMapGeorefToPixel@Base 6.2.1 msMapIgnoreMissingData@Base 6.2.1 @@ -1489,6 +1526,13 @@ msMaybeAllocateClassStyle@Base 6.2.1 msMergeRasterBufferKml@Base 6.4.0 msMergeRect@Base 6.2.1 + msMetadataCreateParamsObj@Base 7.2.0 + msMetadataDispatch@Base 7.2.0 + msMetadataFreeParamsObj@Base 7.2.0 + msMetadataGetExceptionReport@Base 7.2.0 + msMetadataGetLayerMetadata@Base 7.2.0 + msMetadataParseRequest@Base 7.2.0 + msMetadataSetGetMetadataURL@Base 7.2.0 msMoveClassDown@Base 6.2.1 msMoveClassUp@Base 6.2.1 msMoveLabelStyleDown@Base 6.2.1 @@ -1552,6 +1596,7 @@ msOWSIpInList@Base 6.4.0 msOWSIpInMetadata@Base 6.4.0 msOWSIpParse@Base 6.4.0 + msOWSLanguageNegotiation@Base 7.2.0 msOWSLookupMetadata2@Base 6.2.1 msOWSLookupMetadata@Base 6.2.1 msOWSLookupMetadataWithLanguage@Base 6.2.1 @@ -1607,6 +1652,7 @@ msOracleSpatialLayerWhichShapes@Base 6.2.1 msOutlineRenderingPrepareStyle@Base 7.0.0 msOutlineRenderingRestoreStyle@Base 7.0.0 + msOutputFormatResolveFromImage@Base 7.2.0 msOutputFormatValidate@Base 6.2.1 msOwsIsOutputFormatValid@Base 6.2.1 msPOSTGRESQLJoinClose@Base 6.2.1 @@ -1629,6 +1675,7 @@ msPopulateRendererVTableCairoRaster@Base 6.2.1 msPopulateRendererVTableCairoSVG@Base 6.2.1 msPopulateRendererVTableKML@Base 6.2.1 + msPopulateRendererVTableMVT@Base 7.2.0 msPopulateRendererVTableOGR@Base 6.2.1 msPopulateRendererVTableUTFGrid@Base 7.0.0 msPopulateTextSymbolForLabelAndString@Base 7.0.0 @@ -1652,7 +1699,9 @@ msPostGISLayerFreeItemInfo@Base 6.2.1 msPostGISLayerGetExtent@Base 7.0.0 msPostGISLayerGetItems@Base 6.2.1 + msPostGISLayerGetNumFeatures@Base 7.2.0 msPostGISLayerGetShape@Base 6.2.1 + msPostGISLayerGetShapeCount@Base 7.2.0 msPostGISLayerInitItemInfo@Base 6.2.1 msPostGISLayerInitializeVirtualTable@Base 6.2.1 msPostGISLayerIsOpen@Base 6.2.1 @@ -1740,7 +1789,6 @@ msReplaceSubstring@Base 6.2.1 msResampleGDALToMap@Base 6.2.1 msResetErrorList@Base 6.2.1 - msRestoreOldFilter@Base 6.2.1 msReturnNestedTemplateQuery@Base 6.2.1 msReturnOpenLayersPage@Base 6.2.1 msReturnPage@Base 6.2.1 @@ -1907,9 +1955,7 @@ msTileIndexAbsoluteDir@Base 6.2.1 msTileSetExtent@Base 6.2.1 msTileSetup@Base 6.2.1 - msTiledSHPClose@Base 6.2.1 msTiledSHPCloseVT@Base 6.2.1 - msTiledSHPGetShape@Base 6.2.1 msTiledSHPLayerFreeItemInfo@Base 6.2.1 msTiledSHPLayerGetExtent@Base 6.2.1 msTiledSHPLayerGetItems@Base 6.2.1 @@ -1917,10 +1963,6 @@ msTiledSHPLayerInitializeVirtualTable@Base 6.2.1 msTiledSHPLayerIsOpen@Base 6.2.1 msTiledSHPLayerSupportsCommonFilters@Base 6.2.1 - msTiledSHPNextShape@Base 6.2.1 - msTiledSHPOpenFile@Base 6.2.1 - msTiledSHPTryOpen@Base 6.2.1 - msTiledSHPWhichShapes@Base 6.2.1 msTimeCleanup@Base 6.2.1 msTimeCompare@Base 6.2.1 msTimeGetResolution@Base 6.2.1 @@ -1954,6 +1996,7 @@ msUVRASTERLayerNextShape@Base 6.2.1 msUVRASTERLayerOpen@Base 6.2.1 msUVRASTERLayerSetTimeFilter@Base 6.2.1 + msUVRASTERLayerUseMapExtentAndProjectionForNextWhichShapes@Base 7.2.0 msUVRASTERLayerWhichShapes@Base 6.2.1 msUnionLayerClose@Base 6.2.1 msUnionLayerCopyVirtualTable@Base 6.2.1 @@ -1984,6 +2027,8 @@ msValidateParameter@Base 6.2.1 msValidateTimeValue@Base 6.2.1 msValueToRange@Base 6.2.1 + msWCSApplyDatasetMetadataAsCreationOptions@Base 7.2.0 + msWCSApplyLayerCreationOptions@Base 7.2.0 msWCSCreateParamsObj20@Base 6.2.1 msWCSDescribeCoverage11@Base 6.2.1 msWCSDescribeCoverage20@Base 6.2.1 @@ -1991,6 +2036,7 @@ msWCSException11@Base 6.2.1 msWCSException20@Base 6.2.1 msWCSException@Base 6.2.1 + msWCSFreeCoverageMetadata@Base 7.2.0 msWCSFreeParams@Base 6.2.1 msWCSFreeParamsObj20@Base 6.2.1 msWCSGetCapabilities11@Base 6.2.1 @@ -2037,6 +2083,7 @@ msWFSUpdateRequestInfo@Base 6.2.1 msWMSApplyDimension@Base 6.2.1 msWMSApplyDimensionLayer@Base 6.2.1 + msWMSApplyFilter@Base 7.2.0 msWMSApplyTime@Base 6.2.1 msWMSDescribeLayer@Base 6.2.1 msWMSDispatch@Base 6.2.1 @@ -2138,6 +2185,7 @@ msyystring_size_tmp@Base 6.2.1 msyytext@Base 6.2.1 msyywrap@Base 6.2.1 + mvtWriteShape@Base 7.2.0 offsetAndTest@Base 6.2.1 ogrEnabled@Base 6.2.1 path@Base 6.2.1 @@ -2208,7 +2256,6 @@ setCoordinate@Base 6.2.1 setExtent@Base 6.2.1 setExtentFromShapes@Base 6.2.1 - sortLayerByMetadata@Base 6.2.1 sortLayerByOrder@Base 6.2.1 startLayerDummy@Base 6.2.1 startLayerRasterCairo@Base 6.2.1 @@ -2219,6 +2266,21 @@ strrstr@Base 6.2.1 unescape_url@Base 6.2.1 unicode_is_latin1@Base 7.0.0 + use_global_ft_cache@Base 7.2.0 + vector_tile__tile__descriptor@Base 7.2.0 + vector_tile__tile__feature__descriptor@Base 7.2.0 + vector_tile__tile__feature__init@Base 7.2.0 + vector_tile__tile__free_unpacked@Base 7.2.0 + vector_tile__tile__geom_type__descriptor@Base 7.2.0 + vector_tile__tile__get_packed_size@Base 7.2.0 + vector_tile__tile__init@Base 7.2.0 + vector_tile__tile__layer__descriptor@Base 7.2.0 + vector_tile__tile__layer__init@Base 7.2.0 + vector_tile__tile__pack@Base 7.2.0 + vector_tile__tile__pack_to_buffer@Base 7.2.0 + vector_tile__tile__unpack@Base 7.2.0 + vector_tile__tile__value__descriptor@Base 7.2.0 + vector_tile__tile__value__init@Base 7.2.0 (c++)"virtual thunk to ClipperLib::Clipper::Clear()@Base" 6.2.1 (c++)"virtual thunk to ClipperLib::Clipper::Reset()@Base" 6.2.1 (c++)"virtual thunk to ClipperLib::Clipper::~Clipper()@Base" 6.2.1 diff -Nru mapserver-7.0.7/debian/mapserver-bin.lintian-overrides mapserver-7.2.2/debian/mapserver-bin.lintian-overrides --- mapserver-7.0.7/debian/mapserver-bin.lintian-overrides 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.2.2/debian/mapserver-bin.lintian-overrides 2019-02-19 18:18:34.000000000 +0000 @@ -0,0 +1,3 @@ +# https://github.com/mapserver/mapserver/issues/5746 +file-references-package-build-path * + diff -Nru mapserver-7.0.7/debian/mapserver-doc.docs mapserver-7.2.2/debian/mapserver-doc.docs --- mapserver-7.0.7/debian/mapserver-doc.docs 2017-05-09 20:13:10.000000000 +0000 +++ mapserver-7.2.2/debian/mapserver-doc.docs 2018-10-07 06:42:45.000000000 +0000 @@ -1,4 +1,4 @@ -README +README.rst fonts symbols MIGRATION_GUIDE.txt diff -Nru mapserver-7.0.7/debian/patches/hardening.patch mapserver-7.2.2/debian/patches/hardening.patch --- mapserver-7.0.7/debian/patches/hardening.patch 2017-03-15 16:06:33.000000000 +0000 +++ mapserver-7.2.2/debian/patches/hardening.patch 2019-02-19 16:59:20.000000000 +0000 @@ -5,9 +5,9 @@ --- a/mapscript/ruby/CMakeLists.txt +++ b/mapscript/ruby/CMakeLists.txt -@@ -7,6 +7,23 @@ include_directories(${PROJECT_SOURCE_DIR - include_directories(${PROJECT_SOURCE_DIR}/mapscript/ruby) - SWIG_ADD_MODULE(rubymapscript ruby ../mapscript.i) +@@ -12,6 +12,23 @@ else () + swig_add_module(rubymapscript ruby ../mapscript.i) + endif () +# Ruby mapscript fails to build with -Werror=format-security + @@ -26,6 +26,6 @@ + set(CMAKE_CPP_FLAGS "${TMP}") +endif(${CMAKE_CPP_FLAGS} MATCHES "-Werror=format-security") + - SWIG_LINK_LIBRARIES(rubymapscript ${RUBY_LIBRARY} ${MAPSERVER_LIBMAPSERVER}) + swig_link_libraries(rubymapscript ${RUBY_LIBRARY} ${MAPSERVER_LIBMAPSERVER}) set_target_properties(${SWIG_MODULE_rubymapscript_REAL_NAME} PROPERTIES PREFIX "") diff -Nru mapserver-7.0.7/debian/patches/java-hardening.patch mapserver-7.2.2/debian/patches/java-hardening.patch --- mapserver-7.0.7/debian/patches/java-hardening.patch 2017-03-15 16:06:33.000000000 +0000 +++ mapserver-7.2.2/debian/patches/java-hardening.patch 2019-02-19 17:04:04.000000000 +0000 @@ -6,9 +6,9 @@ --- a/mapscript/java/CMakeLists.txt +++ b/mapscript/java/CMakeLists.txt -@@ -15,6 +15,23 @@ SET (CMAKE_SWIG_OUTDIR "${CMAKE_CURRENT_ - SET(CMAKE_SWIG_FLAGS -package edu.umn.gis.mapscript) - SWIG_ADD_MODULE(javamapscript java ../mapscript.i) +@@ -20,6 +20,23 @@ else () + swig_add_module(javamapscript java ../mapscript.i) + endif () +# Java mapscript fails to build with -Werror=format-security + @@ -27,14 +27,13 @@ + set(CMAKE_CPP_FLAGS "${TMP}") +endif(${CMAKE_CPP_FLAGS} MATCHES "-Werror=format-security") + - SWIG_LINK_LIBRARIES(javamapscript ${MAPSERVER_LIBMAPSERVER}) + swig_link_libraries(javamapscript ${MAPSERVER_LIBMAPSERVER}) - ADD_CUSTOM_COMMAND(TARGET javamapscript -@@ -26,5 +43,5 @@ ADD_CUSTOM_COMMAND(TARGET javamapscript + add_custom_command(TARGET javamapscript +@@ -31,4 +48,5 @@ add_custom_command(TARGET javamapscript ) - get_target_property(LOC_MAPSCRIPT_LIB ${SWIG_MODULE_javamapscript_REAL_NAME} LOCATION) --install(FILES ${LOC_MAPSCRIPT_LIB} DESTINATION ${CMAKE_INSTALL_LIBDIR}) -- -+install(FILES ${LOC_MAPSCRIPT_LIB} DESTINATION lib/jni) + set(mapscript_files $) +-install(FILES ${mapscript_files} DESTINATION ${CMAKE_INSTALL_LIBDIR}) ++install(FILES ${mapscript_files} DESTINATION lib/jni) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/mapscript.jar DESTINATION share/java) diff -Nru mapserver-7.0.7/debian/patches/perl-mapscript-install.patch mapserver-7.2.2/debian/patches/perl-mapscript-install.patch --- mapserver-7.0.7/debian/patches/perl-mapscript-install.patch 2017-03-15 16:06:33.000000000 +0000 +++ mapserver-7.2.2/debian/patches/perl-mapscript-install.patch 2019-02-19 17:00:40.000000000 +0000 @@ -5,21 +5,20 @@ --- a/mapscript/perl/CMakeLists.txt +++ b/mapscript/perl/CMakeLists.txt -@@ -2,7 +2,7 @@ FIND_PACKAGE(SWIG REQUIRED) - INCLUDE(${SWIG_USE_FILE}) - FIND_PACKAGE(Perl REQUIRED) - FIND_PACKAGE(PerlLibs REQUIRED) +@@ -2,7 +2,7 @@ find_package(SWIG REQUIRED) + include(${SWIG_USE_FILE}) + find_package(Perl REQUIRED) + find_package(PerlLibs REQUIRED) -set(CUSTOM_PERL_SITE_ARCH_DIR ${PERL_SITEARCH} CACHE DIR "Custom installation directory for perl binary extension") +set(CUSTOM_PERL_VENDOR_ARCH_DIR ${PERL_VENDORARCH} CACHE DIR "Custom installation directory for perl binary extension") - INCLUDE_DIRECTORIES(${PERL_INCLUDE_PATH}) + include_directories(${PERL_INCLUDE_PATH}) include_directories(${PROJECT_SOURCE_DIR}/mapscript/swiginc) include_directories(${PROJECT_SOURCE_DIR}/mapscript/) -@@ -20,6 +20,6 @@ endif(APPLE) - - get_target_property(LOC_MAPSCRIPT_LIB ${SWIG_MODULE_perlmapscript_REAL_NAME} LOCATION) - set(mapscript_files ${LOC_MAPSCRIPT_LIB} ${CMAKE_CURRENT_BINARY_DIR}/mapscript.pm) --install(FILES ${LOC_MAPSCRIPT_LIB} DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/auto/mapscript) --install(FILES ${CMAKE_CURRENT_BINARY_DIR}/mapscript.pm DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}) -+install(FILES ${LOC_MAPSCRIPT_LIB} DESTINATION ${CUSTOM_PERL_VENDOR_ARCH_DIR}/auto/mapscript) -+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/mapscript.pm DESTINATION ${CUSTOM_PERL_VENDOR_ARCH_DIR}) +@@ -23,5 +23,5 @@ if(APPLE) + set_target_properties(perlmapscript PROPERTIES SUFFIX ".bundle") + endif(APPLE) +-install(FILES $ DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/auto/mapscript) +-install(FILES $/mapscript.pm DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}) ++install(FILES $ DESTINATION ${CUSTOM_PERL_VENDOR_ARCH_DIR}/auto/mapscript) ++install(FILES $/mapscript.pm DESTINATION ${CUSTOM_PERL_VENDOR_ARCH_DIR}) diff -Nru mapserver-7.0.7/debian/patches/ruby-mapscript-install.patch mapserver-7.2.2/debian/patches/ruby-mapscript-install.patch --- mapserver-7.0.7/debian/patches/ruby-mapscript-install.patch 2017-03-15 16:06:33.000000000 +0000 +++ mapserver-7.2.2/debian/patches/ruby-mapscript-install.patch 2019-02-19 17:01:50.000000000 +0000 @@ -5,11 +5,11 @@ --- a/mapscript/ruby/CMakeLists.txt +++ b/mapscript/ruby/CMakeLists.txt -@@ -33,5 +33,5 @@ if(APPLE) +@@ -39,5 +39,5 @@ if(APPLE) endif(APPLE) - get_target_property(LOC_MAPSCRIPT_LIB ${SWIG_MODULE_rubymapscript_REAL_NAME} LOCATION) + set(mapscript_files $) -execute_process(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG['sitearchdir']" OUTPUT_VARIABLE RUBY_SITEARCHDIR OUTPUT_STRIP_TRAILING_WHITESPACE) --install(FILES ${LOC_MAPSCRIPT_LIB} DESTINATION ${RUBY_SITEARCHDIR}) +-install(FILES ${mapscript_files} DESTINATION ${RUBY_SITEARCHDIR}) +execute_process(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG['vendorarchdir']" OUTPUT_VARIABLE RUBY_VENDORARCHDIR OUTPUT_STRIP_TRAILING_WHITESPACE) -+install(FILES ${LOC_MAPSCRIPT_LIB} DESTINATION ${RUBY_VENDORARCHDIR}) ++install(FILES ${mapscript_files} DESTINATION ${RUBY_VENDORARCHDIR}) diff -Nru mapserver-7.0.7/debian/python-mapscript.lintian-overrides mapserver-7.2.2/debian/python-mapscript.lintian-overrides --- mapserver-7.0.7/debian/python-mapscript.lintian-overrides 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.2.2/debian/python-mapscript.lintian-overrides 2019-02-19 18:18:34.000000000 +0000 @@ -0,0 +1,3 @@ +# https://github.com/mapserver/mapserver/issues/5746 +file-references-package-build-path * + diff -Nru mapserver-7.0.7/debian/ruby-mapscript.lintian-overrides mapserver-7.2.2/debian/ruby-mapscript.lintian-overrides --- mapserver-7.0.7/debian/ruby-mapscript.lintian-overrides 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.2.2/debian/ruby-mapscript.lintian-overrides 2019-02-19 18:18:34.000000000 +0000 @@ -0,0 +1,3 @@ +# https://github.com/mapserver/mapserver/issues/5746 +file-references-package-build-path * + diff -Nru mapserver-7.0.7/debian/rules mapserver-7.2.2/debian/rules --- mapserver-7.0.7/debian/rules 2017-11-15 20:00:35.000000000 +0000 +++ mapserver-7.2.2/debian/rules 2019-02-19 18:16:01.000000000 +0000 @@ -139,10 +139,6 @@ # removing embedded rpath in libraries -find $(CURDIR)/debian/tmp/usr/lib -name "*.so*" -type f -exec chrpath --delete {} \; - # CGI mapserver - -mkdir -p debian/tmp/usr/lib/cgi-bin - install -m755 debian/tmp/usr/bin/mapserv debian/tmp/usr/lib/cgi-bin/mapserv - # TODO: Use dh_php for substvars & mapscript.ini installation # PHP mapscript #echo 'misc:Depends=phpapi-'$(PHPAPI) >> debian/php-mapscript.substvars @@ -177,5 +173,4 @@ dh_java -plibmapscript-java override_dh_strip: - dh_strip --dbg-package=libmapserver-dbg - + dh_strip --dbgsym-migration='libmapserver-dbg (<< 7.2.0~)' diff -Nru mapserver-7.0.7/debian/source/lintian-overrides mapserver-7.2.2/debian/source/lintian-overrides --- mapserver-7.0.7/debian/source/lintian-overrides 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.2.2/debian/source/lintian-overrides 2018-10-07 06:42:45.000000000 +0000 @@ -0,0 +1,6 @@ +# Only a single Python version is supported during the build +mapserver source: python-foo-but-no-python3-foo python-mapscript + +# Not worth the effort +testsuite-autopkgtest-missing + diff -Nru mapserver-7.0.7/debian/source.lintian-overrides mapserver-7.2.2/debian/source.lintian-overrides --- mapserver-7.0.7/debian/source.lintian-overrides 2017-11-15 20:00:35.000000000 +0000 +++ mapserver-7.2.2/debian/source.lintian-overrides 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -# download.osgeo.org is not available via HTTPS -mapserver source: debian-watch-uses-insecure-uri * - -# Only a single Python version is supported during the build -mapserver source: python-foo-but-no-python3-foo python-mapscript - diff -Nru mapserver-7.0.7/debian/tests/control mapserver-7.2.2/debian/tests/control --- mapserver-7.0.7/debian/tests/control 2017-06-21 19:00:55.000000000 +0000 +++ mapserver-7.2.2/debian/tests/control 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -# Test installability -Depends: @ -Test-Command: /bin/true diff -Nru mapserver-7.0.7/debian/watch mapserver-7.2.2/debian/watch --- mapserver-7.0.7/debian/watch 2017-05-09 20:13:10.000000000 +0000 +++ mapserver-7.2.2/debian/watch 2018-07-27 04:56:08.000000000 +0000 @@ -2,5 +2,5 @@ opts=\ dversionmangle=s/\+(debian|dfsg|ds|deb)\d*$//,\ uversionmangle=s/(\d)[_\.\-\+]?((RC|rc|pre|dev|beta|alpha)\d*)$/$1~$2/;s/RC/rc/;s/-/./g \ -http://download.osgeo.org/mapserver/ \ +https://download.osgeo.org/mapserver/ \ (?:.*/)?(?:rel|v|mapserver)[\-\_]?(\d\S+)\.(?:tgz|tbz|txz|(?:tar\.(?:gz|bz2|xz))) diff -Nru mapserver-7.0.7/fontcache.c mapserver-7.2.2/fontcache.c --- mapserver-7.0.7/fontcache.c 2017-11-15 19:24:35.000000000 +0000 +++ mapserver-7.2.2/fontcache.c 2019-02-19 15:47:37.000000000 +0000 @@ -46,6 +46,7 @@ ft_cache cache; }; ft_thread_cache *ft_caches; +int use_global_ft_cache; #else ft_cache global_ft_cache; #endif @@ -102,9 +103,12 @@ #ifndef USE_THREAD return &global_ft_cache; #else - void* nThreadId = msGetThreadId(); + void* nThreadId = 0; ft_thread_cache *prev = NULL, *cur = ft_caches; + if (!use_global_ft_cache) + nThreadId = msGetThreadId(); + if( cur != NULL && cur->thread_id == nThreadId ) return &cur->cache; @@ -155,6 +159,12 @@ ft_cache *c = msGetFontCache(); msInitFontCache(c); #else + char* use_global_cache = getenv("MS_USE_GLOBAL_FT_CACHE"); + if (use_global_cache) + use_global_ft_cache = atoi(use_global_cache); + else + use_global_ft_cache = 0; + ft_caches = NULL; #endif } @@ -202,15 +212,23 @@ if(!key) { key = MS_DEFAULT_FONT_KEY; } +#ifdef USE_THREAD + if (use_global_ft_cache) + msAcquireLock(TLOCK_TTF); +#endif UT_HASH_FIND_STR(cache->face_cache,key,fc); if(!fc) { - char *fontfile = NULL; + const char *fontfile = NULL; fc = msSmallCalloc(1,sizeof(face_element)); if(fontset && strcmp(key,MS_DEFAULT_FONT_KEY)) { fontfile = msLookupHashTable(&(fontset->fonts),key); if(!fontfile) { msSetError(MS_MISCERR, "Could not find font with key \"%s\" in fontset", "msGetFontFace()", key); free(fc); +#ifdef USE_THREAD + if (use_global_ft_cache) + msReleaseLock(TLOCK_TTF); +#endif return NULL; } error = FT_New_Face(cache->library,fontfile,0, &(fc->face)); @@ -220,6 +238,10 @@ if(error) { msSetError(MS_MISCERR, "Freetype was unable to load font file \"%s\" for key \"%s\"", "msGetFontFace()", fontfile, key); free(fc); +#ifdef USE_THREAD + if (use_global_ft_cache) + msReleaseLock(TLOCK_TTF); +#endif return NULL; } if(!fc->face->charmap) { @@ -231,7 +253,10 @@ fc->font = msStrdup(key); UT_HASH_ADD_KEYPTR(hh,cache->face_cache,fc->font, strlen(key), fc); } - +#ifdef USE_THREAD + if (use_global_ft_cache) + msReleaseLock(TLOCK_TTF); +#endif return fc; } @@ -271,6 +296,10 @@ ft_cache *cache = msGetFontCache(); memset(&key,0,sizeof(outline_element_key)); key.glyph = glyph; +#ifdef USE_THREAD + if (use_global_ft_cache) + msAcquireLock(TLOCK_TTF); +#endif UT_HASH_FIND(hh,face->outline_cache,&key, sizeof(outline_element_key),oc); if(!oc) { FT_Matrix matrix; @@ -284,9 +313,13 @@ matrix.xy = matrix.yx = 0x00000L; pen.x = pen.y = 0; FT_Set_Transform(face->face, &matrix, &pen); - error = FT_Load_Glyph(face->face,glyph->key.codepoint,FT_LOAD_DEFAULT/*|FT_LOAD_IGNORE_TRANSFORM*/|FT_LOAD_NO_HINTING|FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH); + error = FT_Load_Glyph(face->face,glyph->key.codepoint,FT_LOAD_DEFAULT|FT_LOAD_NO_BITMAP/*|FT_LOAD_IGNORE_TRANSFORM*/|FT_LOAD_NO_HINTING|FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH); if(error) { msSetError(MS_MISCERR, "unable to load glyph %ud for font \"%s\"", "msGetGlyphByIndex()",glyph->key.codepoint, face->font); +#ifdef USE_THREAD + if (use_global_ft_cache) + msReleaseLock(TLOCK_TTF); +#endif return NULL; } error = FT_Outline_New(cache->library, face->face->glyph->outline.n_points, @@ -295,5 +328,17 @@ oc->key = key; UT_HASH_ADD(hh,face->outline_cache,key,sizeof(outline_element_key), oc); } +#ifdef USE_THREAD + if (use_global_ft_cache) + msReleaseLock(TLOCK_TTF); +#endif return oc; } + +int msIsGlyphASpace(glyphObj *glyph) { + /* space or tab, for now */ + unsigned int space,tab; + space = msGetGlyphIndex(glyph->face,0x20); + tab = msGetGlyphIndex(glyph->face,0x9); + return glyph->glyph->key.codepoint == space || glyph->glyph->key.codepoint == tab; +} diff -Nru mapserver-7.0.7/fontcache.h mapserver-7.2.2/fontcache.h --- mapserver-7.0.7/fontcache.h 2017-11-15 19:24:35.000000000 +0000 +++ mapserver-7.2.2/fontcache.h 2019-02-19 15:47:37.000000000 +0000 @@ -80,6 +80,7 @@ glyph_element* msGetBitmapGlyph(rendererVTableObj *renderer, unsigned int size, unsigned int unicode); unsigned int msGetGlyphIndex(face_element *face, unsigned int unicode); glyph_element* msGetGlyphByIndex(face_element *face, unsigned int size, unsigned int codepoint); +int msIsGlyphASpace(glyphObj *glyph); #ifdef __cplusplus } diff -Nru mapserver-7.0.7/HISTORY.TXT mapserver-7.2.2/HISTORY.TXT --- mapserver-7.0.7/HISTORY.TXT 2017-11-15 19:24:35.000000000 +0000 +++ mapserver-7.2.2/HISTORY.TXT 2019-02-19 15:47:37.000000000 +0000 @@ -12,6 +12,52 @@ details about recent point releases, please see the online changelog at: http://mapserver.org/development/changelog/ +7.2.2 release (2019-2-19) +-------------------------- + +- No major changes, see detailed changelog for bug fixes + +7.2.1 release (2018-10-1) +-------------------------- + +- No major changes, see detailed changelog for bug fixes + +7.2.0 release (2018-07-23) +-------------------------- + +- Fixed issue with ring handling with polygons in MVT support (#5626) +- No other major changes, see detailed changelog for bug fixes + +7.2.0-beta2 release (2018-6-13) + +- Update beta1 release notes to remove reference to PHP7 support +- No other major changes, see detailed changelog for bug fixes + +7.2.0-beta1 release (2018-5-9) +-------------------- + +- Support for Enhanced Layer Metadata Management (RFC82) + +- Calculate MINDISTANCE from label bounds instead of label center (#5369) + +- Reposition follow labels on maxoverlapangle colisions (RFC112) + +- Implement chainable compositing filters (RFC113) + +- Faster retrieval of shape count (RFC114) + +- WMS layer groups are now requestable + +- Support C-style multi-line content types (#5362) + +- Python 3.x support (#5561) + +- Support Vendor-Specific OGC FILTER parameter in WMS requests (RFC118) + +- Mapbox Vector Tile (MVT) Support (RFC119) + +- INSPIRE download service support for WCS 2.0 (RFC120) + 7.0.0 release (2015/07/24) -------------------------- @@ -1630,7 +1676,7 @@ - Fixed a scalebar rounding problem causing to draw zero scalebar width (#2890) -- SLD: if it conatins a Filer Encoding tag, try to always set the +- SLD: if it contains a Filter Encoding tag, try to always set the layer's FILTER element (#2889) - Add support for rendering INLINE layers with layer attributes (items) (#2870) diff -Nru mapserver-7.0.7/kerneldensity.c mapserver-7.2.2/kerneldensity.c --- mapserver-7.0.7/kerneldensity.c 2017-11-15 19:24:35.000000000 +0000 +++ mapserver-7.2.2/kerneldensity.c 2019-02-19 15:47:37.000000000 +0000 @@ -84,7 +84,7 @@ int status,layer_idx, i,j, nclasses=0, have_sample=0; rectObj searchrect; shapeObj shape; - layerObj *layer; + layerObj *layer = NULL; float *values = NULL; int radius = 10, im_width = image->width, im_height = image->height; int expand_searchrect=1; diff -Nru mapserver-7.0.7/mapagg.cpp mapserver-7.2.2/mapagg.cpp --- mapserver-7.0.7/mapagg.cpp 2017-11-15 19:24:35.000000000 +0000 +++ mapserver-7.2.2/mapagg.cpp 2019-02-19 15:47:37.000000000 +0000 @@ -1333,15 +1333,10 @@ #endif } -rasterBufferObj* msApplyFilterToRasterBuffer(const rasterBufferObj *rb, CompositingFilter *filter) { - rasterBufferObj *rbret = (rasterBufferObj*)msSmallCalloc(sizeof(rasterBufferObj),1); - msCopyRasterBuffer(rbret,rb); - rendering_buffer b(rbret->data.rgba.pixels, rbret->width, rbret->height, rbret->data.rgba.row_step); +void msApplyBlurringCompositingFilter(rasterBufferObj *rb, unsigned int radius) { + rendering_buffer b(rb->data.rgba.pixels, rb->width, rb->height, rb->data.rgba.row_step); pixel_format pf(b); - /* for now, we only support a blurring filter */ - int radius = atoi(filter->filter); mapserver::stack_blur_rgba32(pf,radius,radius); - return rbret; } int msPopulateRendererVTableAGG(rendererVTableObj * renderer) diff -Nru mapserver-7.0.7/mapcairo.c mapserver-7.2.2/mapcairo.c --- mapserver-7.0.7/mapcairo.c 2017-11-15 19:24:35.000000000 +0000 +++ mapserver-7.2.2/mapcairo.c 2019-02-19 15:47:37.000000000 +0000 @@ -1017,6 +1017,7 @@ struct svg_symbol_cache *svg_cache; symbolStyleObj pixstyle; symbolObj pixsymbol; + int status; if(MS_SUCCESS != msPreloadSVGSymbol(symbol)) return MS_FAILURE; @@ -1084,10 +1085,9 @@ pixsymbol.pixmap_buffer = svg_cache->pixmap_buffer; pixsymbol.type = MS_SYMBOL_PIXMAP; - if(MS_SUCCESS != MS_IMAGE_RENDERER(img)->renderPixmapSymbol(img,x,y,&pixsymbol,&pixstyle)) - return MS_FAILURE; + status = MS_IMAGE_RENDERER(img)->renderPixmapSymbol(img,x,y,&pixsymbol,&pixstyle); MS_IMAGE_RENDERER(img)->freeSymbol(&pixsymbol); - return MS_SUCCESS; + return status; #else msSetError(MS_MISCERR, "SVG Symbols requested but MapServer is not built with libsvgcairo", "renderSVGSymbolCairo()"); diff -Nru mapserver-7.0.7/mapcluster.c mapserver-7.2.2/mapcluster.c --- mapserver-7.0.7/mapcluster.c 2017-11-15 19:24:35.000000000 +0000 +++ mapserver-7.2.2/mapcluster.c 2019-02-19 15:47:37.000000000 +0000 @@ -64,6 +64,10 @@ #define SPLITRATIO 0.55 #define TREE_MAX_DEPTH 10 +/* cluster algorithm */ +#define MSCLUSTER_ALGORITHM_FULL 0 +#define MSCLUSTER_ALGORITHM_SIMPLE 1 + /* cluster data */ struct cluster_info { double x; /* x position of the current point */ @@ -135,6 +139,8 @@ clusterCompareRegionFunc fnCompare; /* diagnostics */ int depth; + /* processing algorithm */ + int algorithm; }; @@ -438,6 +444,50 @@ } } +/* traverse the quadtree to find the neighbouring clusters and update data on the cluster*/ +static void findRelatedShapes2(msClusterLayerInfo* layerinfo, + clusterTreeNode *node, clusterInfo* current) +{ + int i; + clusterInfo* s; + + /* -------------------------------------------------------------------- */ + /* Does this node overlap the area of interest at all? If not, */ + /* return without adding to the list at all. */ + /* -------------------------------------------------------------------- */ + if(!msRectOverlap(&node->rect, ¤t->bounds)) + return; + + /* Modify the feature count of the related shapes */ + s = node->shapes; + while (s) { + if (layerinfo->fnCompare(s, current)) { + if (layerinfo->rank > 0) { + double r = (current->x - s->x) * (current->x - s->x) + (current->y - s->y) * (current->y - s->y); + if (r < layerinfo->rank) { + layerinfo->current = s; + layerinfo->rank = r; + } + } + else { + /* no rank was specified, return immediately */ + layerinfo->current = s; + return; + } + } + s = s->next; + } + + if (node->subnode[0] == NULL) + return; + + /* Recurse to subnodes if they exist */ + for (i = 0; i < 4; i++) { + if (node->subnode[i]) + findRelatedShapes2(layerinfo, node->subnode[i], current); + } +} + /* traverse the quadtree to find the neighbouring shapes and update some data on the related shapes (when removing a feature) */ static void findRelatedShapesRemove(msClusterLayerInfo* layerinfo, clusterTreeNode *node, clusterInfo* current) @@ -773,6 +823,72 @@ && !node->subnode[2] && !node->subnode[3]); } +/* collecting the cluster shapes, returns true if this subnode must be removed */ +static int collectClusterShapes2(layerObj* layer, msClusterLayerInfo* layerinfo, clusterTreeNode *node) +{ + int i; + clusterInfo* current = NULL; + clusterInfo* s; + + while (node->shapes) { + s = node->shapes; + /* removing from the list */ + node->shapes = s->next; + + InitShapeAttributes(layer, s); + + if (s->filter) { + s->next = layerinfo->finalized; + layerinfo->finalized = s; + ++layerinfo->numFinalized; + } else { + /* this shape is filtered */ + s->next = layerinfo->filtered; + layerinfo->filtered = s; + ++layerinfo->numFiltered; + } + + /* update the parameters of the related shapes if any */ + if (s->siblings) { + current = s->siblings; + while(current) { + UpdateShapeAttributes(layer, s, current); + + /* setting the average position to the cluster position */ + current->avgx = s->x; + current->avgy = s->y; + + if (current->next == NULL) { + if (layerinfo->get_all_shapes == MS_TRUE) { + /* insert the siblings into the finalization list */ + current->next = layerinfo->finalized; + layerinfo->finalized = s->siblings; + s->siblings = NULL; + } + break; + } + + current = current->next; + } + } + } + + /* Recurse to subnodes if they exist */ + for (i = 0; i < 4; i++) { + if (node->subnode[i] && collectClusterShapes2(layer, layerinfo, node->subnode[i])) { + /* placing this empty node to the finalization queue */ + node->subnode[i]->subnode[0] = layerinfo->finalizedNodes; + layerinfo->finalizedNodes = node->subnode[i]; + node->subnode[i] = NULL; + ++layerinfo->numFinalizedNodes; + } + } + + /* returns true is this subnode must be removed */ + return (!node->shapes && !node->subnode[0] && !node->subnode[1] + && !node->subnode[2] && !node->subnode[3]); +} + int selectClusterShape(layerObj* layer, long shapeindex) { int i; @@ -881,6 +997,7 @@ int status; clusterInfo* current; int depth; + char *pszProcessing; #ifdef USE_CLUSTER_EXTERNAL int layerIndex; #endif @@ -904,17 +1021,24 @@ layerinfo->current = layerinfo->finalized; /* restart */ + /* check whether the simplified algorithm was selected */ + pszProcessing = msLayerGetProcessingKey(layer, "CLUSTER_ALGORITHM"); + if(pszProcessing && !strncasecmp(pszProcessing,"SIMPLE",6)) + layerinfo->algorithm = MSCLUSTER_ALGORITHM_SIMPLE; + else + layerinfo->algorithm = MSCLUSTER_ALGORITHM_FULL; + /* check whether all shapes should be returned from a query */ if(msLayerGetProcessingKey(layer, "CLUSTER_GET_ALL_SHAPES") != NULL) layerinfo->get_all_shapes = MS_TRUE; else layerinfo->get_all_shapes = MS_FALSE; - /* check whether the location of the shapes should be preserved (no averaging) */ + /* check whether the location of the shapes should be preserved */ if(msLayerGetProcessingKey(layer, "CLUSTER_KEEP_LOCATIONS") != NULL) layerinfo->keep_locations = MS_TRUE; else - layerinfo->keep_locations = MS_FALSE; + layerinfo->keep_locations = MS_FALSE; /* check whether the maxdistance and the buffer parameters are specified in map units (scale independent clustering) */ @@ -1042,13 +1166,33 @@ if (layer->cluster.group.string) current->group = msClusterGetGroupText(&layer->cluster.group, ¤t->shape); - /*start a query for the related shapes */ - findRelatedShapes(layerinfo, layerinfo->root, current); - - /* add this shape to the tree */ - if (treeNodeAddShape(layerinfo, layerinfo->root, current, depth) != MS_SUCCESS) { - clusterInfoDestroyList(layerinfo, current); - return MS_FAILURE; + if (layerinfo->algorithm == MSCLUSTER_ALGORITHM_FULL) { + /*start a query for the related shapes */ + findRelatedShapes(layerinfo, layerinfo->root, current); + + /* add this shape to the tree */ + if (treeNodeAddShape(layerinfo, layerinfo->root, current, depth) != MS_SUCCESS) { + clusterInfoDestroyList(layerinfo, current); + return MS_FAILURE; + } + } + else if (layerinfo->algorithm == MSCLUSTER_ALGORITHM_SIMPLE) { + /* find a related cluster and try to assign */ + layerinfo->rank = 0; + layerinfo->current = NULL; + findRelatedShapes2(layerinfo, layerinfo->root, current); + if (layerinfo->current) { + /* store these points until all clusters are created */ + current->next = layerinfo->finalizedSiblings; + layerinfo->finalizedSiblings = current; + } + else { + /* if not found add this shape as a new cluster */ + if (treeNodeAddShape(layerinfo, layerinfo->root, current, depth) != MS_SUCCESS) { + clusterInfoDestroyList(layerinfo, current); + return MS_FAILURE; + } + } } if ((current = clusterInfoCreate(layerinfo)) == NULL) { @@ -1059,121 +1203,151 @@ clusterInfoDestroyList(layerinfo, current); - while (layerinfo->root) { + if (layerinfo->algorithm == MSCLUSTER_ALGORITHM_FULL) { + while (layerinfo->root) { #ifdef TESTCOUNT - int n; - double avgx, avgy; + int n; + double avgx, avgy; #endif - /* pick up the best cluster from the tree and do the finalization */ - /* the initial rank must be big enough */ - layerinfo->rank = (searchrect.maxx - searchrect.minx) * (searchrect.maxx - searchrect.minx) + - (searchrect.maxy - searchrect.miny) * (searchrect.maxy - searchrect.miny) + 1; - - layerinfo->current = NULL; - findBestCluster(layer, layerinfo, layerinfo->root); - - if (layerinfo->current == NULL) { - if (layer->debug >= MS_DEBUGLEVEL_VVV) - msDebug("Clustering terminated.\n"); - break; /* completed */ - } - - /* Update the feature count of the shape */ - InitShapeAttributes(layer, layerinfo->current); + /* pick up the best cluster from the tree and do the finalization */ + /* the initial rank must be big enough */ + layerinfo->rank = (searchrect.maxx - searchrect.minx) * (searchrect.maxx - searchrect.minx) + + (searchrect.maxy - searchrect.miny) * (searchrect.maxy - searchrect.miny) + 1; + + layerinfo->current = NULL; + findBestCluster(layer, layerinfo, layerinfo->root); + + if (layerinfo->current == NULL) { + if (layer->debug >= MS_DEBUGLEVEL_VVV) + msDebug("Clustering terminated.\n"); + break; /* completed */ + } - /* collecting the shapes of the cluster */ - collectClusterShapes(layerinfo, layerinfo->root, layerinfo->current); + /* Update the feature count of the shape */ + InitShapeAttributes(layer, layerinfo->current); + + /* collecting the shapes of the cluster */ + collectClusterShapes(layerinfo, layerinfo->root, layerinfo->current); - if (layer->debug >= MS_DEBUGLEVEL_VVV) { - msDebug("processing cluster %p: rank=%lf fcount=%d ncoll=%d nfin=%d nfins=%d nflt=%d bounds={%lf %lf %lf %lf}\n", layerinfo->current, layerinfo->rank, layerinfo->current->numsiblings + 1, + if (layer->debug >= MS_DEBUGLEVEL_VVV) { + msDebug("processing cluster %p: rank=%lf fcount=%d ncoll=%d nfin=%d nfins=%d nflt=%d bounds={%lf %lf %lf %lf}\n", layerinfo->current, layerinfo->rank, layerinfo->current->numsiblings + 1, layerinfo->current->numcollected, layerinfo->numFinalized, layerinfo->numFinalizedSiblings, layerinfo->numFiltered, layerinfo->current->bounds.minx, layerinfo->current->bounds.miny, layerinfo->current->bounds.maxx, layerinfo->current->bounds.maxy); - if (layerinfo->current->node) { - char pszBuffer[TREE_MAX_DEPTH + 1]; - clusterTreeNode* node = layerinfo->current->node; - int position = node->position; - int i = 1; - while (position > 0 && i <= TREE_MAX_DEPTH) { - pszBuffer[TREE_MAX_DEPTH - i] = '0' + (position % 4); - position = position >> 2; - ++i; - } - pszBuffer[TREE_MAX_DEPTH] = 0; - - msDebug(" ->node %p: count=%d index=%d pos=%s subn={%p %p %p %p} rect={%lf %lf %lf %lf}\n", - node, node->numshapes, node->index, pszBuffer + TREE_MAX_DEPTH - i + 1, - node->subnode[0], node->subnode[1], node->subnode[2], node->subnode[3], + if (layerinfo->current->node) { + char pszBuffer[TREE_MAX_DEPTH + 1]; + clusterTreeNode* node = layerinfo->current->node; + int position = node->position; + int i = 1; + while (position > 0 && i <= TREE_MAX_DEPTH) { + pszBuffer[TREE_MAX_DEPTH - i] = '0' + (position % 4); + position = position >> 2; + ++i; + } + pszBuffer[TREE_MAX_DEPTH] = 0; + + msDebug(" ->node %p: count=%d index=%d pos=%s subn={%p %p %p %p} rect={%lf %lf %lf %lf}\n", + node, node->numshapes, node->index, pszBuffer + TREE_MAX_DEPTH - i + 1, + node->subnode[0], node->subnode[1], node->subnode[2], node->subnode[3], node->rect.minx, node->rect.miny, node->rect.maxx, node->rect.maxy); + } } - } #ifdef TESTCOUNT - avgx = layerinfo->current->x; - avgy = layerinfo->current->y; - n = 0; + avgx = layerinfo->current->x; + avgy = layerinfo->current->y; + n = 0; #endif - if (layerinfo->current->numsiblings > 0) { - /* update the parameters due to the shape removal */ - findRelatedShapesRemove(layerinfo, layerinfo->root, layerinfo->current); - - if (layerinfo->current->filter == 0) { - /* filtered shapes has no siblings */ - layerinfo->current->numsiblings = 0; - layerinfo->current->avgx = layerinfo->current->x; - layerinfo->current->avgy = layerinfo->current->y; - } + if (layerinfo->current->numsiblings > 0) { + /* update the parameters due to the shape removal */ + findRelatedShapesRemove(layerinfo, layerinfo->root, layerinfo->current); + + if (layerinfo->current->filter == 0) { + /* filtered shapes has no siblings */ + layerinfo->current->numsiblings = 0; + layerinfo->current->avgx = layerinfo->current->x; + layerinfo->current->avgy = layerinfo->current->y; + } - /* update the parameters of the related shapes if any */ - if (layerinfo->finalizedSiblings) { - current = layerinfo->finalizedSiblings; - while(current) { - /* update the parameters due to the shape removal */ - findRelatedShapesRemove(layerinfo, layerinfo->root, current); - UpdateShapeAttributes(layer, layerinfo->current, current); + /* update the parameters of the related shapes if any */ + if (layerinfo->finalizedSiblings) { + current = layerinfo->finalizedSiblings; + while(current) { + /* update the parameters due to the shape removal */ + findRelatedShapesRemove(layerinfo, layerinfo->root, current); + UpdateShapeAttributes(layer, layerinfo->current, current); #ifdef TESTCOUNT - avgx += current->x; - avgy += current->y; - ++n; + avgx += current->x; + avgy += current->y; + ++n; #endif - /* setting the average position to the same value */ - current->avgx = layerinfo->current->avgx; - current->avgy = layerinfo->current->avgy; - - if (current->next == NULL) { - if (layerinfo->get_all_shapes == MS_TRUE) { - /* insert the siblings into the finalization list */ - current->next = layerinfo->finalized; - layerinfo->finalized = layerinfo->finalizedSiblings; - } else { + /* setting the average position to the same value */ + current->avgx = layerinfo->current->avgx; + current->avgy = layerinfo->current->avgy; + + if (current->next == NULL) { + if (layerinfo->get_all_shapes == MS_TRUE) { + /* insert the siblings into the finalization list */ + current->next = layerinfo->finalized; + layerinfo->finalized = layerinfo->finalizedSiblings; + } else { /* preserve the clustered siblings for later use */ - layerinfo->current->siblings = layerinfo->finalizedSiblings; + layerinfo->current->siblings = layerinfo->finalizedSiblings; + } + break; } - break; + + current = current->next; } - current = current->next; + layerinfo->finalizedSiblings = NULL; } - - layerinfo->finalizedSiblings = NULL; } - } #ifdef TESTCOUNT - avgx /= (n + 1); - avgy /= (n + 1); + avgx /= (n + 1); + avgy /= (n + 1); - if (layerinfo->current->numsiblings != n) - layerinfo->current->numsiblings = n; + if (layerinfo->current->numsiblings != n) + layerinfo->current->numsiblings = n; - if (fabs(layerinfo->current->avgx - avgx) / avgx > 0.000000001 || - fabs(layerinfo->current->avgy - avgy) / avgy > 0.000000001) { - layerinfo->current->avgx = avgx; - layerinfo->current->avgy = avgy; - } + if (fabs(layerinfo->current->avgx - avgx) / avgx > 0.000000001 || + fabs(layerinfo->current->avgy - avgy) / avgy > 0.000000001) { + layerinfo->current->avgx = avgx; + layerinfo->current->avgy = avgy; + } #endif + } + } + else if (layerinfo->algorithm == MSCLUSTER_ALGORITHM_SIMPLE) { + /* assingn stired points to clusters */ + while (layerinfo->finalizedSiblings) { + current = layerinfo->finalizedSiblings; + layerinfo->rank = maxDistanceX * maxDistanceX + maxDistanceY * maxDistanceY; + layerinfo->current = NULL; + findRelatedShapes2(layerinfo, layerinfo->root, current); + if (layerinfo->current) { + clusterInfo* s = layerinfo->current; + /* found a matching cluster */ + ++s->numsiblings; + /* assign to cluster */ + layerinfo->finalizedSiblings = current->next; + current->next = s->siblings; + s->siblings = current; + } + else { + /* this appears to be a bug */ + layerinfo->finalizedSiblings = current->next; + current->next = layerinfo->filtered; + layerinfo->filtered = current; + ++layerinfo->numFiltered; + } + } + + /* collecting the shapes of the cluster */ + collectClusterShapes2(layer, layerinfo, layerinfo->root); } /* set the pointer to the first shape */ @@ -1560,6 +1734,7 @@ vtable->LayerWhichShapes = msClusterLayerWhichShapes; vtable->LayerNextShape = msClusterLayerNextShape; vtable->LayerGetShape = msClusterLayerGetShape; + /* layer->vtable->LayerGetShapeCount, use default */ vtable->LayerClose = msClusterLayerClose; diff -Nru mapserver-7.0.7/mapcompositingfilter.c mapserver-7.2.2/mapcompositingfilter.c --- mapserver-7.0.7/mapcompositingfilter.c 1970-01-01 00:00:00.000000000 +0000 +++ mapserver-7.2.2/mapcompositingfilter.c 2019-02-19 15:47:37.000000000 +0000 @@ -0,0 +1,223 @@ +/****************************************************************************** + * + * Project: MapServer + * Purpose: RFC 113 Layer compositing + * Author: Thomas Bonfort and the MapServer team. + * + ****************************************************************************** + * Copyright (c) 1996-2015 Regents of the University of Minnesota. + * + * 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 of this Software or works derived from this 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 "mapserver.h" +#include +#define pixmove(rb,srcx,srcy,dstx,dsty) \ + memcpy(rb->data.rgba.pixels+dsty*rb->data.rgba.row_step+dstx*4,\ + rb->data.rgba.pixels+srcy*rb->data.rgba.row_step+srcx*4,\ + 4) +#define pixerase(rb,x,y) memset(rb->data.rgba.pixels+y*rb->data.rgba.row_step+x*4,0,4) + +void msApplyTranslationCompositingFilter(rasterBufferObj *rb, int xtrans, int ytrans) { + int src_sx,src_sy,dst_sx,dst_sy,x,y,dst_x,dst_y; + if(abs(xtrans)>=rb->width || abs(ytrans)>=rb->height) { + for(y = 0; yheight; y++) + for(x = 0; xwidth; x++) + pixerase(rb,x,y); + } + if(xtrans == 0 && ytrans == 0) + return; + if(xtrans>=0) { + if(ytrans>=0) { + src_sx = rb->width - xtrans - 1; + src_sy = rb->height - ytrans - 1; + dst_sx = rb->width - 1; + dst_sy = rb->height -1; + for(y = src_sy,dst_y= dst_sy;y>=0;y--,dst_y--) { + for(x = src_sx,dst_x= dst_sx;x>=0;x--,dst_x--) { + pixmove(rb,x,y,dst_x,dst_y); + } + } + for(y=0;ywidth;x++) + pixerase(rb,x,y); + for(y=ytrans;yheight;y++) + for(x=0;xwidth - xtrans - 1; + src_sy = - ytrans; + dst_sx = rb->width - 1; + dst_sy = 0; + for(y = src_sy,dst_y= dst_sy;yheight;y++,dst_y++) { + for(x = src_sx,dst_x= dst_sx;x>=0;x--,dst_x--) { + pixmove(rb,x,y,dst_x,dst_y); + } + } + for(y=0;yheight+ytrans;y++) + for(x=0;xheight+ytrans;yheight;y++) + for(x=0;xwidth;x++) + pixerase(rb,x,y); + } + } else { + if(ytrans>=0) { + src_sx = - xtrans; + src_sy = rb->height - ytrans - 1; + dst_sx = 0; + dst_sy = rb->height -1; + for(y = src_sy,dst_y= dst_sy;y>=0;y--,dst_y--) { + for(x = src_sx,dst_x= dst_sx;xwidth;x++,dst_x++) { + pixmove(rb,x,y,dst_x,dst_y); + } + } + for(y=0;ywidth;x++) + pixerase(rb,x,y); + for(y=ytrans;yheight;y++) + for(x=rb->width+xtrans;xwidth;x++) + pixerase(rb,x,y); + } else { + src_sx = - xtrans; + src_sy = - ytrans; + dst_sx = 0; + dst_sy = 0; + for(y = src_sy,dst_y= dst_sy;yheight;y++,dst_y++) { + for(x = src_sx,dst_x= dst_sx;xwidth;x++,dst_x++) { + pixmove(rb,x,y,dst_x,dst_y); + } + } + for(y=0;yheight+ytrans;y++) + for(x=rb->width+xtrans;xwidth;x++) + pixerase(rb,x,y); + for(y=rb->height+ytrans;yheight;y++) + for(x=0;xwidth;x++) + pixerase(rb,x,y); + } + } +} + +void msApplyBlackeningCompositingFilter(rasterBufferObj *rb) { + int row,col; + unsigned char *r,*g,*b; + for(row=0;rowheight;row++) { + r = rb->data.rgba.r + row*rb->data.rgba.row_step; + g = rb->data.rgba.g + row*rb->data.rgba.row_step; + b = rb->data.rgba.b + row*rb->data.rgba.row_step; + for(col=0;colwidth;col++) { + *r = *g = *b = 0; + r+=4;g+=4;b+=4; + } + } +} + +void msApplyWhiteningCompositingFilter(rasterBufferObj *rb) { + int row,col; + unsigned char *r,*g,*b,*a; + for(row=0;rowheight;row++) { + r = rb->data.rgba.r + row*rb->data.rgba.row_step; + g = rb->data.rgba.g + row*rb->data.rgba.row_step; + b = rb->data.rgba.b + row*rb->data.rgba.row_step; + a = rb->data.rgba.a + row*rb->data.rgba.row_step; + for(col=0;colwidth;col++) { + *r = *g = *b = *a; + r+=4;g+=4;b+=4;a+=4; + } + } +} + +void msApplyGrayscaleCompositingFilter(rasterBufferObj *rb) { + int row,col; + unsigned char *r,*g,*b; + for(row=0;rowheight;row++) { + r = rb->data.rgba.r + row*rb->data.rgba.row_step; + g = rb->data.rgba.g + row*rb->data.rgba.row_step; + b = rb->data.rgba.b + row*rb->data.rgba.row_step; + for(col=0;colwidth;col++) { + unsigned int mix = (unsigned int)*r + (unsigned int)*g + (unsigned int)*b; + mix /=3; + *r = *g = *b = (unsigned char)mix; + r+=4;g+=4;b+=4; + } + } +} + +int msApplyCompositingFilter(mapObj *map, rasterBufferObj *rb, CompositingFilter *filter) { + int rstatus; + regex_t regex; + regmatch_t pmatch[3]; + + /* test for blurring filter */ + regcomp(®ex, "blur\\(([0-9]+)\\)", REG_EXTENDED); + rstatus = regexec(®ex, filter->filter, 2, pmatch, 0); + regfree(®ex); + if(!rstatus) { + char *rad = malloc(pmatch[1].rm_eo - pmatch[1].rm_so + 1); + unsigned int irad; + strncpy(rad,filter->filter+pmatch[1].rm_so,pmatch[1].rm_eo-pmatch[1].rm_so); + rad[pmatch[1].rm_eo - pmatch[1].rm_so]=0; + //msDebug("got blur filter with radius %s\n",rad); + irad = atoi(rad); + free(rad); + irad = MS_NINT(irad*map->resolution/map->defresolution); + msApplyBlurringCompositingFilter(rb,irad); + return MS_SUCCESS; + } + + /* test for translation filter */ + regcomp(®ex, "translate\\((-?[0-9]+),(-?[0-9]+)\\)", REG_EXTENDED); + rstatus = regexec(®ex, filter->filter, 3, pmatch, 0); + regfree(®ex); + if(!rstatus) { + char *num; + int xtrans,ytrans; + num = malloc(pmatch[1].rm_eo - pmatch[1].rm_so + 1); + strncpy(num,filter->filter+pmatch[1].rm_so,pmatch[1].rm_eo-pmatch[1].rm_so); + num[pmatch[1].rm_eo - pmatch[1].rm_so]=0; + xtrans = atoi(num); + free(num); + num = malloc(pmatch[2].rm_eo - pmatch[2].rm_so + 1); + strncpy(num,filter->filter+pmatch[2].rm_so,pmatch[2].rm_eo-pmatch[2].rm_so); + num[pmatch[2].rm_eo - pmatch[2].rm_so]=0; + ytrans = atoi(num); + free(num); + //msDebug("got translation filter of radius %d,%d\n",xtrans,ytrans); + xtrans = MS_NINT(xtrans*map->resolution/map->defresolution); + ytrans = MS_NINT(ytrans*map->resolution/map->defresolution); + msApplyTranslationCompositingFilter(rb,xtrans,ytrans); + return MS_SUCCESS; + } + + /* test for grayscale filter */ + if(!strncmp(filter->filter,"grayscale()",strlen("grayscale()"))) { + msApplyGrayscaleCompositingFilter(rb); + return MS_SUCCESS; + } + if(!strncmp(filter->filter,"blacken()",strlen("blacken()"))) { + msApplyBlackeningCompositingFilter(rb); + return MS_SUCCESS; + } + if(!strncmp(filter->filter,"whiten()",strlen("whiten()"))) { + msApplyWhiteningCompositingFilter(rb); + return MS_SUCCESS; + } + + msSetError(MS_MISCERR,"unknown compositing filter (%s)", "msApplyCompositingFilter()", filter->filter); + return MS_FAILURE; +} diff -Nru mapserver-7.0.7/mapcontext.c mapserver-7.2.2/mapcontext.c --- mapserver-7.0.7/mapcontext.c 2017-11-15 19:24:35.000000000 +0000 +++ mapserver-7.2.2/mapcontext.c 2019-02-19 15:47:37.000000000 +0000 @@ -264,7 +264,8 @@ char *pszXMLName, char *pszMetadataName, char *pszHashDelimiter) { - char *pszHash, *pszXMLValue, *pszMetadata; + const char *pszHash, *pszXMLValue; + char *pszMetadata; if(psRoot == NULL || psRoot->psChild == NULL || metadata == NULL || pszMetadataName == NULL || pszXMLName == NULL) @@ -350,7 +351,9 @@ */ int msLoadMapContextLayerFormat(CPLXMLNode *psFormat, layerObj *layer) { - char *pszValue, *pszValue1, *pszHash; + const char *pszValue; + char *pszValue1; + const char* pszHash; if(psFormat->psChild != NULL && strcasecmp(psFormat->pszValue, "Format") == 0 ) { @@ -442,7 +445,9 @@ int nStyle) { char *pszValue, *pszValue1, *pszValue2; - char *pszHash, *pszStyle=NULL, *pszStyleName; + const char *pszHash; + char* pszStyle=NULL; + char *pszStyleName; CPLXMLNode *psStyleSLDBody; pszStyleName =(char*)CPLGetXMLValue(psStyle,"Name",NULL); @@ -576,7 +581,8 @@ int msLoadMapContextLayerDimension(CPLXMLNode *psDimension, layerObj *layer) { - char *pszValue, *pszHash; + char *pszValue; + const char *pszHash; char *pszDimension=NULL, *pszDimensionName=NULL; pszDimensionName =(char*)CPLGetXMLValue(psDimension,"name",NULL); @@ -805,7 +811,8 @@ { char *pszProj=NULL; char *pszValue; - char *pszHash, *pszName=NULL; + const char *pszHash; + char *pszName=NULL; CPLXMLNode *psFormatList, *psFormat, *psStyleList, *psStyle, *psExtension; CPLXMLNode *psDimensionList, *psDimension; int nStyle; @@ -1302,9 +1309,10 @@ int msWriteMapContext(mapObj *map, FILE *stream) { #if defined(USE_WMS_LYR) && defined(USE_OGR) - const char * version, *value; - char * tabspace=NULL, *pszValue, *pszChar,*pszSLD=NULL,*pszURL,*pszSLD2=NULL; - char *pszStyle, *pszCurrent, *pszStyleItem, *pszSLDBody; + const char * version; + char *pszEPSG; + char * tabspace=NULL, *pszChar,*pszSLD=NULL,*pszURL,*pszSLD2=NULL; + char *pszStyle, *pszStyleItem, *pszSLDBody; char *pszEncodedVal; int i, nValue, nVersion=OWS_VERSION_NOTSET; /* Dimension element */ @@ -1407,18 +1415,19 @@ if(tabspace) free(tabspace); tabspace = msStrdup(" "); - value = msOWSGetEPSGProj(&(map->projection), &(map->web.metadata), "MO", MS_TRUE); + msOWSGetEPSGProj(&(map->projection), &(map->web.metadata), "MO", MS_TRUE, &pszEPSG); msIO_fprintf( stream, "%s\n", tabspace ); - if(!value || (strcasecmp(value, "(null)") == 0)) + if(!pszEPSG || (strcasecmp(pszEPSG, "(null)") == 0)) msIO_fprintf(stream, "\n"); - pszEncodedVal = msEncodeHTMLEntities(value); + pszEncodedVal = msEncodeHTMLEntities(pszEPSG); msIO_fprintf( stream, "%s\n", tabspace, pszEncodedVal, map->extent.minx, map->extent.miny, map->extent.maxx, map->extent.maxy ); msFree(pszEncodedVal); + msFree(pszEPSG); /* Title, name */ if( nVersion >= OWS_0_1_7 && nVersion < OWS_1_0_0 ) { @@ -1441,7 +1450,7 @@ char **papszKeywords; int nKeywords, iKey; - pszValue = msLookupHashTable(&(map->web.metadata), + const char* pszValue = msLookupHashTable(&(map->web.metadata), "wms_keywordlist"); papszKeywords = msStringSplit(pszValue, ',', &nKeywords); if(nKeywords > 0 && papszKeywords) { @@ -1509,6 +1518,9 @@ /* Loop on all layer */ for(i=0; inumlayers; i++) { if(GET_LAYER(map, i)->status != MS_DELETE && GET_LAYER(map, i)->connectiontype == MS_WMS) { + const char* pszValue; + char* pszValueMod; + const char* pszCurrent; if(GET_LAYER(map, i)->status == MS_OFF) nValue = 1; else @@ -1547,21 +1559,21 @@ /* Get base url of the online resource to be the default value */ if(GET_LAYER(map, i)->connection) - pszValue = msStrdup( GET_LAYER(map, i)->connection ); + pszValueMod = msStrdup( GET_LAYER(map, i)->connection ); else - pszValue = msStrdup( "" ); - pszChar = strchr(pszValue, '?'); + pszValueMod = msStrdup( "" ); + pszChar = strchr(pszValueMod, '?'); if( pszChar ) - pszValue[pszChar - pszValue] = '\0'; + pszValueMod[pszChar - pszValueMod] = '\0'; if(msOWSPrintEncodeMetadata(stream, &(GET_LAYER(map, i)->metadata), NULL, "wms_onlineresource", OWS_WARN, " \n", - pszValue) == OWS_WARN) + pszValueMod) == OWS_WARN) msIO_fprintf(stream, "\n"); msIO_fprintf(stream, " \n"); - if(pszValue) - free(pszValue); + if(pszValueMod) + free(pszValueMod); /* */ /* Layer information */ @@ -1625,14 +1637,15 @@ GET_LAYER(map, i)->maxscaledenom); /* Layer SRS */ - pszValue = (char*)msOWSGetEPSGProj(&(GET_LAYER(map, i)->projection), + msOWSGetEPSGProj(&(GET_LAYER(map, i)->projection), &(GET_LAYER(map, i)->metadata), - "MO", MS_FALSE); - if(pszValue && (strcasecmp(pszValue, "(null)") != 0)) { - pszEncodedVal = msEncodeHTMLEntities(pszValue); + "MO", MS_FALSE, &pszEPSG); + if(pszEPSG && (strcasecmp(pszEPSG, "(null)") != 0)) { + pszEncodedVal = msEncodeHTMLEntities(pszEPSG); msIO_fprintf(stream, " %s\n", pszEncodedVal); msFree(pszEncodedVal); } + msFree(pszEPSG); /* Format */ if(msLookupHashTable(&(GET_LAYER(map, i)->metadata),"wms_formatlist")==NULL && @@ -1642,17 +1655,17 @@ pszURL = msStrdup( GET_LAYER(map, i)->connection ); else pszURL = msStrdup( "" ); - pszValue = pszURL; - pszValue = strstr( pszValue, "FORMAT=" ); - if( pszValue ) { - pszValue += 7; - pszChar = strchr(pszValue, '&'); + pszValueMod = pszURL; + pszValueMod = strstr( pszValueMod, "FORMAT=" ); + if( pszValueMod ) { + pszValueMod += 7; + pszChar = strchr(pszValueMod, '&'); if( pszChar ) - pszValue[pszChar - pszValue] = '\0'; - if(strcasecmp(pszValue, "") != 0) { - pszEncodedVal = msEncodeHTMLEntities(pszValue); + pszValueMod[pszChar - pszValueMod] = '\0'; + if(strcasecmp(pszValueMod, "") != 0) { + pszEncodedVal = msEncodeHTMLEntities(pszValueMod); msIO_fprintf( stream, " \n"); - msIO_fprintf(stream," %s\n",pszValue); + msIO_fprintf(stream," %s\n",pszValueMod); msIO_fprintf( stream, " \n"); msFree(pszEncodedVal); } @@ -1695,21 +1708,23 @@ /* First check the stylelist */ pszValue = msLookupHashTable(&(GET_LAYER(map, i)->metadata), "wms_stylelist"); - if(pszValue == NULL || strlen(msStringTrimLeft(pszValue)) < 1) { + while( pszValue && *pszValue == ' ' ) + pszValue ++; + if(pszValue == NULL || strlen(pszValue) < 1) { /* Check if the style is in the connection URL */ pszURL = ""; if(GET_LAYER(map, i)->connection) pszURL = msStrdup( GET_LAYER(map, i)->connection ); else pszURL = msStrdup( "" ); - pszValue = pszURL; + pszValueMod = pszURL; /* Grab the STYLES in the URL */ - pszValue = strstr( pszValue, "STYLES=" ); - if( pszValue ) { - pszValue += 7; - pszChar = strchr(pszValue, '&'); + pszValueMod = strstr( pszValueMod, "STYLES=" ); + if( pszValueMod ) { + pszValueMod += 7; + pszChar = strchr(pszValueMod, '&'); if( pszChar ) - pszValue[pszChar - pszValue] = '\0'; + pszValueMod[pszChar - pszValueMod] = '\0'; /* Check the SLD string from the URL */ if(GET_LAYER(map, i)->connection) @@ -1737,14 +1752,14 @@ pszSLDBody[pszChar - pszSLDBody] = '\0'; pszSLDBody += 9; } - if( (pszValue && (strcasecmp(pszValue, "") != 0)) || + if( (pszValueMod && (strcasecmp(pszValueMod, "") != 0)) || (pszSLD && (strcasecmp(pszSLD, "") != 0)) || (pszSLDBody && (strcasecmp(pszSLDBody, "") != 0))) { /* Write Name and Title */ msIO_fprintf( stream, " \n"); msIO_fprintf( stream, "