diff -Nru mapserver-7.2.1/CMakeLists.txt mapserver-7.2.2/CMakeLists.txt --- mapserver-7.2.1/CMakeLists.txt 2018-10-01 15:11:13.000000000 +0000 +++ mapserver-7.2.2/CMakeLists.txt 2019-02-19 15:47:37.000000000 +0000 @@ -17,7 +17,7 @@ set (MapServer_VERSION_MAJOR 7) set (MapServer_VERSION_MINOR 2) -set (MapServer_VERSION_REVISION 1) +set (MapServer_VERSION_REVISION 2) set (MapServer_VERSION_SUFFIX "") set(TARGET_VERSION_MAJOR ${MapServer_VERSION_MAJOR}) diff -Nru mapserver-7.2.1/debian/changelog mapserver-7.2.2/debian/changelog --- mapserver-7.2.1/debian/changelog 2018-11-17 17:00:00.000000000 +0000 +++ mapserver-7.2.2/debian/changelog 2019-02-27 19:00:00.000000000 +0000 @@ -1,8 +1,27 @@ -mapserver (7.2.1-1~bionic0) bionic; urgency=medium +mapserver (7.2.2-1~bionic0) bionic; urgency=medium * No change rebuild for Bionic. - -- Angelos Tzotsos Sat, 17 Nov 2018 19:00:00 +0200 + -- Angelos Tzotsos Wed, 27 Feb 2019 21:00:00 +0200 + +mapserver (7.2.2-1) unstable; 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 diff -Nru mapserver-7.2.1/debian/control mapserver-7.2.2/debian/control --- mapserver-7.2.1/debian/control 2018-08-28 11:14:29.000000000 +0000 +++ mapserver-7.2.2/debian/control 2018-12-25 21:37:35.000000000 +0000 @@ -47,7 +47,7 @@ docbook-xml, xsltproc Build-Conflicts: libcurl3-openssl-dev -Standards-Version: 4.2.1 +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 diff -Nru mapserver-7.2.1/debian/copyright mapserver-7.2.2/debian/copyright --- mapserver-7.2.1/debian/copyright 2018-07-27 04:56:08.000000000 +0000 +++ mapserver-7.2.2/debian/copyright 2019-02-19 17:07:33.000000000 +0000 @@ -4,7 +4,7 @@ Source: https://github.com/mapserver/mapserver Files: * -Copyright: 2008-2018, Open Source Geospatial Foundation. +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 diff -Nru mapserver-7.2.1/debian/libmapscript-java.lintian-overrides mapserver-7.2.2/debian/libmapscript-java.lintian-overrides --- mapserver-7.2.1/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.2.1/debian/libmapscript-perl.lintian-overrides mapserver-7.2.2/debian/libmapscript-perl.lintian-overrides --- mapserver-7.2.1/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.2.1/debian/libmapserver2.lintian-overrides mapserver-7.2.2/debian/libmapserver2.lintian-overrides --- mapserver-7.2.1/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.2.1/debian/libmapserver2.symbols mapserver-7.2.2/debian/libmapserver2.symbols --- mapserver-7.2.1/debian/libmapserver2.symbols 2018-10-02 05:11:00.000000000 +0000 +++ mapserver-7.2.2/debian/libmapserver2.symbols 2019-02-20 04:42:33.000000000 +0000 @@ -1,5 +1,6 @@ -# SymbolsHelper-Confirmed: 7.2.0 amd64 arm64 armel armhf i386 m68k mips mips64el mipsel powerpc powerpcspe ppc64 ppc64el riscv64 s390x sh4 sparc64 +# 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 @@ -195,7 +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 m68k mips mipsel powerpc powerpcspe)_ZN10ClipperLib17PolyOffsetBuilder8DoSquareEd@Base 7.2.0 + (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 @@ -209,7 +210,7 @@ _ZN10ClipperLib4TopXERNS_5TEdgeEx@Base 6.2.1 _ZN10ClipperLib5GetDxENS_8IntPointES0_@Base 6.2.1 _ZN10ClipperLib5SetDxERNS_5TEdgeE@Base 6.2.1 - (arch=armel armhf i386 m68k mips mipsel powerpc powerpcspe)_ZN10ClipperLib6Int1286NegateERS0_@Base 7.2.0 + (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 @@ -318,8 +319,8 @@ _ZN11KmlRendererD0Ev@Base 6.4.0 _ZN11KmlRendererD1Ev@Base 6.4.0 _ZN11KmlRendererD2Ev@Base 6.4.0 - (arch=!amd64 !arm64 !i386 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN12AGG2RendererD1Ev@Base 7.0.1 - (arch=!amd64 !arm64 !i386 !kfreebsd-amd64 !mips64el !ppc64 !ppc64el !riscv64 !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 @@ -403,14 +404,14 @@ (optional=templinst)_ZN9mapserver11pod_bvectorIhLj12EED2Ev@Base 7.0.2 (optional=templinst)_ZN9mapserver11qsort_cellsINS_7cell_aaEEEvPPT_j@Base 6.2.1 (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 !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|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)_ZN9mapserver12conv_clipperI15polygon_adaptorNS_11conv_strokeINS_9path_baseINS_20vertex_block_storageIdLj8ELj256EEEEENS_12null_markersEEEE11add_vertex_ERdSA_@Base 7.2.0 - (optional=templinst|arch=!amd64 !arm64 !hppa !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|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 @@ -440,7 +441,7 @@ _ZN9mapserver12vcgen_stroke6vertexEPdS1_@Base 6.2.1 _ZN9mapserver12vcgen_strokeC1Ev@Base 6.2.1 _ZN9mapserver12vcgen_strokeC2Ev@Base 6.2.1 - (optional=templinst|arch=!arm64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZN9mapserver13renderer_baseINS_23pixfmt_alpha_blend_rgbaINS_16blender_rgba_preINS_5rgba8ENS_10order_bgraEEENS_12row_accessorIhEEjEEE10blend_fromIS8_EEvRKT_PKNS_9rect_baseIiEEiih@Base 6.2.1 + (optional=templinst)_ZN9mapserver13renderer_baseINS_23pixfmt_alpha_blend_rgbaINS_16blender_rgba_preINS_5rgba8ENS_10order_bgraEEENS_12row_accessorIhEEjEEE10blend_fromIS8_EEvRKT_PKNS_9rect_baseIiEEiih@Base 6.2.1 _ZN9mapserver13vcgen_contour10add_vertexEddj@Base 6.2.1 _ZN9mapserver13vcgen_contour10remove_allEv@Base 6.2.1 _ZN9mapserver13vcgen_contour6rewindEj@Base 6.2.1 @@ -465,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|arch=mips)_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_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 @@ -521,7 +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)_ZN9mapserver22rasterizer_scanline_aaINS_18rasterizer_sl_clipINS_12ras_conv_intEEEE14sweep_scanlineINS_11scanline_p8EEEbRT_@Base 7.2.0 + (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 @@ -579,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 !ppc64 !ppc64el !riscv64 !s390x !sh4 !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 @@ -597,28 +598,28 @@ _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 !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNSt6vectorIN10ClipperLib11DoublePointESaIS1_EE17_M_default_appendEj@Base 7.0.2 - (optional=templinst)_ZNSt6vectorIN10ClipperLib11DoublePointESaIS1_EE17_M_default_appendEm@Base 7.2.0 - (optional=templinst|arch=!amd64 !arm64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNSt6vectorIN10ClipperLib8IntPointESaIS1_EE17_M_default_appendEj@Base 7.0.2 - (optional=templinst|arch=amd64 arm64 mips64el ppc64 ppc64el riscv64 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 !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNSt6vectorIN10ClipperLib9ExPolygonESaIS1_EE17_M_default_appendEj@Base 7.0.2 - (optional=templinst|arch=amd64 arm64 mips64el ppc64 ppc64el riscv64 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=armel armhf i386 m68k mips mipsel powerpc powerpcspe sh4)_ZNSt6vectorIPN10ClipperLib11HorzJoinRecESaIS2_EE17_M_default_appendEj@Base 7.2.0 - (optional=templinst)_ZNSt6vectorIPN10ClipperLib11HorzJoinRecESaIS2_EE17_M_default_appendEm@Base 7.2.0 + (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=armel armhf i386 m68k mips mipsel powerpc powerpcspe sh4)_ZNSt6vectorIPN10ClipperLib7JoinRecESaIS2_EE17_M_default_appendEj@Base 7.2.0 - (optional=templinst)_ZNSt6vectorIPN10ClipperLib7JoinRecESaIS2_EE17_M_default_appendEm@Base 7.2.0 - (optional=templinst|arch=armel armhf i386 m68k mips mipsel powerpc powerpcspe)_ZNSt6vectorIPN10ClipperLib7JoinRecESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_@Base 7.2.0 - (optional=templinst|arch=!amd64 !arm64 !mips64el !ppc64 !ppc64el !riscv64 !s390x !sparc64)_ZNSt6vectorIS_IN10ClipperLib8IntPointESaIS1_EESaIS3_EE17_M_default_appendEj@Base 7.0.2 - (optional=templinst|arch=amd64 arm64 mips64el ppc64 ppc64el riscv64 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 diff -Nru mapserver-7.2.1/debian/mapserver-bin.lintian-overrides mapserver-7.2.2/debian/mapserver-bin.lintian-overrides --- mapserver-7.2.1/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.2.1/debian/patches/cmake-3.12.patch mapserver-7.2.2/debian/patches/cmake-3.12.patch --- mapserver-7.2.1/debian/patches/cmake-3.12.patch 2018-10-02 05:09:02.000000000 +0000 +++ mapserver-7.2.2/debian/patches/cmake-3.12.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,73 +0,0 @@ -Description: Fix errors with CMake 3.12 for get_target_property commands. -Author: Bas Couwenberg -Bug: https://github.com/mapserver/mapserver/issues/5646 -Bug-Debian: https://bugs.debian.org/906605 - ---- a/mapscript/java/CMakeLists.txt -+++ b/mapscript/java/CMakeLists.txt -@@ -42,6 +42,14 @@ ADD_CUSTOM_COMMAND(TARGET javamapscript - COMMENT "Compiling java source files, creating mapscript.jar" - ) - -+# Workaround for CMake 3.12 error: -+# -+# The LOCATION property may not be read from target "foo". Use -+# the target name directly with add_custom_command, or use the generator -+# expression $, as appropriate. -+ -+cmake_policy(SET CMP0026 OLD) -+ - get_target_property(LOC_MAPSCRIPT_LIB ${SWIG_MODULE_javamapscript_REAL_NAME} LOCATION) - install(FILES ${LOC_MAPSCRIPT_LIB} DESTINATION lib/jni) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/mapscript.jar DESTINATION share/java) ---- a/mapscript/perl/CMakeLists.txt -+++ b/mapscript/perl/CMakeLists.txt -@@ -18,6 +18,14 @@ if(APPLE) - set_target_properties(perlmapscript PROPERTIES SUFFIX ".bundle") - endif(APPLE) - -+# Workaround for CMake 3.12 error: -+# -+# The LOCATION property may not be read from target "foo". Use -+# the target name directly with add_custom_command, or use the generator -+# expression $, as appropriate. -+ -+cmake_policy(SET CMP0026 OLD) -+ - 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_VENDOR_ARCH_DIR}/auto/mapscript) ---- a/mapscript/python/CMakeLists.txt -+++ b/mapscript/python/CMakeLists.txt -@@ -46,6 +46,14 @@ execute_process ( COMMAND ${PYTHON_EXECU - # expression $, as appropriate. - cmake_policy(SET CMP0026 OLD) - -+# Workaround for CMake 3.12 error: -+# -+# The LOCATION property may not be read from target "foo". Use -+# the target name directly with add_custom_command, or use the generator -+# expression $, as appropriate. -+ -+cmake_policy(SET CMP0026 OLD) -+ - get_target_property(LOC_MAPSCRIPT_LIB ${SWIG_MODULE_pythonmapscript_REAL_NAME} LOCATION) - set(mapscript_files ${LOC_MAPSCRIPT_LIB} ${CMAKE_CURRENT_BINARY_DIR}/mapscript.py) - install(FILES ${mapscript_files} DESTINATION ${PYTHON_SITE_PACKAGES}) ---- a/mapscript/ruby/CMakeLists.txt -+++ b/mapscript/ruby/CMakeLists.txt -@@ -32,6 +32,14 @@ if(APPLE) - set_target_properties(${SWIG_MODULE_rubymapscript_REAL_NAME} PROPERTIES SUFFIX ".bundle") - endif(APPLE) - -+# Workaround for CMake 3.12 error: -+# -+# The LOCATION property may not be read from target "foo". Use -+# the target name directly with add_custom_command, or use the generator -+# expression $, as appropriate. -+ -+cmake_policy(SET CMP0026 OLD) -+ - get_target_property(LOC_MAPSCRIPT_LIB ${SWIG_MODULE_rubymapscript_REAL_NAME} LOCATION) - 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}) diff -Nru mapserver-7.2.1/debian/patches/hardening.patch mapserver-7.2.2/debian/patches/hardening.patch --- mapserver-7.2.1/debian/patches/hardening.patch 2018-07-24 12:07:29.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.2.1/debian/patches/java-hardening.patch mapserver-7.2.2/debian/patches/java-hardening.patch --- mapserver-7.2.1/debian/patches/java-hardening.patch 2018-07-24 12:07:29.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.2.1/debian/patches/perl-mapscript-install.patch mapserver-7.2.2/debian/patches/perl-mapscript-install.patch --- mapserver-7.2.1/debian/patches/perl-mapscript-install.patch 2018-07-24 12:07:29.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.2.1/debian/patches/ruby-mapscript-install.patch mapserver-7.2.2/debian/patches/ruby-mapscript-install.patch --- mapserver-7.2.1/debian/patches/ruby-mapscript-install.patch 2018-07-24 12:07:29.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.2.1/debian/patches/series mapserver-7.2.2/debian/patches/series --- mapserver-7.2.1/debian/patches/series 2018-10-02 05:08:24.000000000 +0000 +++ mapserver-7.2.2/debian/patches/series 2019-02-19 18:16:01.000000000 +0000 @@ -2,4 +2,3 @@ perl-mapscript-install.patch ruby-mapscript-install.patch java-hardening.patch -cmake-3.12.patch diff -Nru mapserver-7.2.1/debian/python-mapscript.lintian-overrides mapserver-7.2.2/debian/python-mapscript.lintian-overrides --- mapserver-7.2.1/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.2.1/debian/ruby-mapscript.lintian-overrides mapserver-7.2.2/debian/ruby-mapscript.lintian-overrides --- mapserver-7.2.1/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.2.1/HISTORY.TXT mapserver-7.2.2/HISTORY.TXT --- mapserver-7.2.1/HISTORY.TXT 2018-10-01 15:11:13.000000000 +0000 +++ mapserver-7.2.2/HISTORY.TXT 2019-02-19 15:47:37.000000000 +0000 @@ -12,6 +12,11 @@ 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) -------------------------- diff -Nru mapserver-7.2.1/mapfile.c mapserver-7.2.2/mapfile.c --- mapserver-7.2.1/mapfile.c 2018-10-01 15:11:13.000000000 +0000 +++ mapserver-7.2.2/mapfile.c 2019-02-19 15:47:37.000000000 +0000 @@ -525,13 +525,13 @@ va_end(argp); } -static void writeDimension(FILE *stream, int indent, const char *name, int x, int y, char *bind_x, char *bind_y) +static void writeDimension(FILE *stream, int indent, const char *name, double x, double y, char *bind_x, char *bind_y) { writeIndent(stream, ++indent); if(bind_x) msIO_fprintf(stream, "%s [%s] ", name, bind_x); - else msIO_fprintf(stream, "%s %d ", name, x); + else msIO_fprintf(stream, "%s %.15g ", name, x); if(bind_y) msIO_fprintf(stream, "[%s]\n", bind_y); - else msIO_fprintf(stream, "%d\n", y); + else msIO_fprintf(stream, "%.15g\n", y); } static void writeDoubleRange(FILE *stream, int indent, const char *name, double x, double y) diff -Nru mapserver-7.2.1/maplexer.c mapserver-7.2.2/maplexer.c --- mapserver-7.2.1/maplexer.c 2018-10-01 15:11:13.000000000 +0000 +++ mapserver-7.2.2/maplexer.c 2019-02-19 15:47:37.000000000 +0000 @@ -2754,7 +2754,7 @@ case 21: YY_RULE_SETUP #line 188 "maplexer.l" -{ MS_LEXER_RETURN_TOKEN(IN); } +{ MS_LEXER_RETURN_TOKEN(MS_TOKEN_COMPARISON_IN); /* was IN */ } YY_BREAK case 22: YY_RULE_SETUP diff -Nru mapserver-7.2.1/maplexer.l mapserver-7.2.2/maplexer.l --- mapserver-7.2.1/maplexer.l 2018-10-01 15:11:13.000000000 +0000 +++ mapserver-7.2.2/maplexer.l 2019-02-19 15:47:37.000000000 +0000 @@ -185,7 +185,7 @@ =\* { MS_LEXER_RETURN_TOKEN(MS_TOKEN_COMPARISON_IEQ); } ~\* { MS_LEXER_RETURN_TOKEN(MS_TOKEN_COMPARISON_IRE); } -in { MS_LEXER_RETURN_TOKEN(IN); } +in { MS_LEXER_RETURN_TOKEN(MS_TOKEN_COMPARISON_IN); /* was IN */ } area { MS_LEXER_RETURN_TOKEN(MS_TOKEN_FUNCTION_AREA); } length { MS_LEXER_RETURN_TOKEN(MS_TOKEN_FUNCTION_LENGTH); } diff -Nru mapserver-7.2.1/mapmetadata.c mapserver-7.2.2/mapmetadata.c --- mapserver-7.2.1/mapmetadata.c 2018-10-01 15:11:13.000000000 +0000 +++ mapserver-7.2.2/mapmetadata.c 2019-02-19 15:47:37.000000000 +0000 @@ -89,6 +89,7 @@ char *url = NULL; char buffer[32]; char *epsg_str; + char *link_protocol; xmlNodePtr psNode = NULL; xmlNodePtr psORNode = NULL; @@ -108,6 +109,7 @@ url = msStringConcatenate(url, msEncodeHTMLEntities("&crs=")); msOWSGetEPSGProj(&(layer->projection), &(layer->metadata), "MFCSGO", MS_TRUE, &epsg_str); url = msStringConcatenate(url, msEncodeHTMLEntities(epsg_str)); + link_protocol = "WWW:DOWNLOAD-1.0-http-get-map"; status = msLayerGetExtent(layer, &rect); @@ -127,12 +129,14 @@ } } else if (strcasecmp(service, "F") == 0) { + link_protocol = "WWW:DOWNLOAD-1.0-http--download"; url = msStringConcatenate(url, msEncodeHTMLEntities("service=WFS&version=1.1.0&request=GetFeature&typename=")); url = msStringConcatenate(url, msEncodeHTMLEntities(layer->name)); url = msStringConcatenate(url, msEncodeHTMLEntities("&outputformat=")); url = msStringConcatenate(url, msEncodeHTMLEntities(format)); } else if (strcasecmp(service, "C") == 0) { + link_protocol = "WWW:DOWNLOAD-1.0-http--download"; url = msStringConcatenate(url, msEncodeHTMLEntities("service=WCS&version=2.0.1&request=GetCoverage&coverageid=")); url = msStringConcatenate(url, msEncodeHTMLEntities(layer->name)); url = msStringConcatenate(url, msEncodeHTMLEntities("&format=")); @@ -141,7 +145,7 @@ xmlAddChild(psORNode, _msMetadataGetURL(namespace, "linkage", url)); - xmlAddChild(psORNode, _msMetadataGetCharacterString(namespace, "protocol", "WWW:DOWNLOAD-1.0-http--download")); + xmlAddChild(psORNode, _msMetadataGetCharacterString(namespace, "protocol", link_protocol)); xmlAddChild(psORNode, _msMetadataGetCharacterString(namespace, "name", layer->name)); xmlAddChild(psORNode, _msMetadataGetCharacterString(namespace, "description", desc)); @@ -450,12 +454,12 @@ if (value) xmlAddChild(psCIAddressNode, _msMetadataGetCharacterString(namespace, "electronicMailAddress", value)); - psORNode = xmlNewChild(psCINode2, namespace, BAD_CAST "onlineResource", NULL); - psORNode2 = xmlNewChild(psORNode, namespace, BAD_CAST "CI_OnlineResource", NULL); - value = (char *)msOWSLookupMetadata(&(map->web.metadata), "MCFO", "onlineresource"); - if (value) + if (value) { + psORNode = xmlNewChild(psCINode2, namespace, BAD_CAST "onlineResource", NULL); + psORNode2 = xmlNewChild(psORNode, namespace, BAD_CAST "CI_OnlineResource", NULL); xmlAddChild(psORNode2, _msMetadataGetURL(namespace, "linkage", value)); + } xmlAddChild(psCNode, _msMetadataGetCodeList(namespace, "role", "CI_RoleCode", "pointOfContact")); @@ -604,9 +608,7 @@ /* WMS */ xmlAddChild(psDTONode, _msMetadataGetOnline(namespace, layer, "M", "image/png", "PNG Format", url)); - xmlAddChild(psDTONode, _msMetadataGetOnline(namespace, layer, "M", "image/jpeg", "JPEG Format", url)); - xmlAddChild(psDTONode, _msMetadataGetOnline(namespace, layer, "M", "image/gif", "GIF Format", url)); /* WCS */ if (layer->type == MS_LAYER_RASTER) { @@ -892,10 +894,10 @@ pszMetadataURL = msStringConcatenate(pszMetadataURL, lp->name); msInsertHashTable(&(lp->metadata), "ows_metadataurl_href", pszMetadataURL); - msInsertHashTable(&(lp->metadata), "ows_metadataurl_type", "ISOTC211/19115"); + msInsertHashTable(&(lp->metadata), "ows_metadataurl_type", "TC211"); msInsertHashTable(&(lp->metadata), "ows_metadataurl_format", "text/xml"); msInsertHashTable(&(lp->metadata), "ows_metadatalink_href", pszMetadataURL); - msInsertHashTable(&(lp->metadata), "ows_metadatalink_type", "ISOTC211/19115"); + msInsertHashTable(&(lp->metadata), "ows_metadatalink_type", "TC211"); msInsertHashTable(&(lp->metadata), "ows_metadatalink_format", "text/xml"); msFree(pszMetadataURL); } diff -Nru mapserver-7.2.1/mapmssql2008.c mapserver-7.2.2/mapmssql2008.c --- mapserver-7.2.1/mapmssql2008.c 2018-10-01 15:11:13.000000000 +0000 +++ mapserver-7.2.2/mapmssql2008.c 2019-02-19 15:47:37.000000000 +0000 @@ -2,8 +2,9 @@ * $Id$ * * Project: MapServer - * Purpose: MS SQL 2008 (Katmai) Layer Connector + * Purpose: MS SQL Server Layer Connector * Author: Richard Hillman - based on PostGIS and SpatialDB connectors + * Tamas Szekeres - maintenance * ****************************************************************************** * Copyright (c) 2007 IS Consulting (www.mapdotnet.com) @@ -50,7 +51,7 @@ #include #include /* tolower() */ -/* SqlGeometry serialization format +/* SqlGeometry/SqlGeography serialization format Simple Point (SerializationProps & IsSinglePoint) [SRID][0x01][SerializationProps][Point][z][m] @@ -59,9 +60,17 @@ [SRID][0x01][SerializationProps][Point1][Point2][z1][z2][m1][m2] Complex Geometries - [SRID][0x01][SerializationProps][NumPoints][Point1]..[PointN][z1]..[zN][m1]..[mN] + [SRID][VersionAttribute][SerializationProps][NumPoints][Point1]..[PointN][z1]..[zN][m1]..[mN] [NumFigures][Figure]..[Figure][NumShapes][Shape]..[Shape] +Complex Geometries (FigureAttribute == Curve) + [SRID][VersionAttribute][SerializationProps][NumPoints][Point1]..[PointN][z1]..[zN][m1]..[mN] + [NumFigures][Figure]..[Figure][NumShapes][Shape]..[Shape][NumSegments][SegmentType]..[SegmentType] + +VersionAttribute (1 byte) + 0x01 = Katmai (MSSQL2008+) + 0x02 = Denali (MSSQL2012+) + SRID Spatial Reference Id (4 bytes) @@ -71,7 +80,7 @@ 0x04 = IsValid 0x08 = IsSinglePoint 0x10 = IsSingleLineSegment - 0x20 = IsWholeGlobe + 0x20 = IsLargerThanAHemisphere Point (2-4)x8 bytes, size depends on SerializationProps & HasZValues & HasMValues [x][y] - SqlGeometry @@ -80,11 +89,17 @@ Figure [FigureAttribute][PointOffset] -FigureAttribute (1 byte) +FigureAttribute - Katmai (1 byte) 0x00 = Interior Ring 0x01 = Stroke 0x02 = Exterior Ring +FigureAttribute - Denali (1 byte) + 0x00 = None + 0x01 = Line + 0x02 = Arc + 0x03 = Curve + Shape [ParentFigureOffset][FigureOffset][ShapeType] @@ -97,6 +112,17 @@ 0x05 = MultiLineString 0x06 = MultiPolygon 0x07 = GeometryCollection + -- Denali + 0x08 = CircularString + 0x09 = CompoundCurve + 0x0A = CurvePolygon + 0x0B = FullGlobe + +SegmentType (1 byte) + 0x00 = Line + 0x01 = Arc + 0x02 = FirstLine + 0x03 = FirstArc */ @@ -125,7 +151,7 @@ #define SP_ISVALID 4 #define SP_ISSINGLEPOINT 8 #define SP_ISSINGLELINESEGMENT 0x10 -#define SP_ISWHOLEGLOBE 0x20 +#define SP_ISLARGERTHANAHEMISPHERE 0x20 #define ST_UNKNOWN 0 #define ST_POINT 1 @@ -135,6 +161,15 @@ #define ST_MULTILINESTRING 5 #define ST_MULTIPOLYGON 6 #define ST_GEOMETRYCOLLECTION 7 +#define ST_CIRCULARSTRING 8 +#define ST_COMPOUNDCURVE 9 +#define ST_CURVEPOLYGON 10 +#define ST_FULLGLOBE 11 + +#define SMT_LINE 0 +#define SMT_ARC 1 +#define SMT_FIRSTLINE 2 +#define SMT_FIRSTARC 3 #define ReadInt32(nPos) (*((unsigned int*)(gpi->pszData + (nPos)))) @@ -145,6 +180,7 @@ #define ParentOffset(iShape) (ReadInt32(gpi->nShapePos + (iShape) * 9 )) #define FigureOffset(iShape) (ReadInt32(gpi->nShapePos + (iShape) * 9 + 4)) #define ShapeType(iShape) (ReadByte(gpi->nShapePos + (iShape) * 9 + 8)) +#define SegmentType(iSegment) (ReadByte(gpi->nSegmentPos + (iSegment))) #define NextFigureOffset(iShape) (iShape + 1 < gpi->nNumShapes? FigureOffset((iShape) +1) : gpi->nNumFigures) @@ -157,11 +193,17 @@ #define ReadZ(iPoint) (ReadDouble(gpi->nPointPos + 16 * gpi->nNumPoints + 8 * (iPoint))) #define ReadM(iPoint) (ReadDouble(gpi->nPointPos + 24 * gpi->nNumPoints + 8 * (iPoint))) +#define FP_EPSILON 1e-12 +#define SEGMENT_ANGLE 5.0 +#define SEGMENT_MINPOINTS 10 + /* Native geometry parser struct */ typedef struct msGeometryParserInfo_t { unsigned char* pszData; int nLen; - /* serialization propeties */ + /* version */ + char chVersion; + /* serialization properties */ char chProps; /* point array */ int nPointSize; @@ -175,6 +217,9 @@ int nShapePos; int nNumShapes; int nSRSId; + /* segment array */ + int nSegmentPos; + int nNumSegments; /* geometry or geography */ int nColType; /* bounds */ @@ -243,11 +288,127 @@ } #ifdef USE_POINT_Z_M - if ( gpi->chProps & SP_HASZVALUES ) + if ((gpi->chProps & SP_HASZVALUES) && (gpi->chProps & SP_HASMVALUES)) + { p->z = ReadZ(iPoint); - if ( gpi->chProps & SP_HASMVALUES ) - p->z = ReadM(iPoint); + p->m = ReadM(iPoint); + } + else if (gpi->chProps & SP_HASZVALUES) + { + p->z = ReadZ(iPoint); + p->m = 0.0; + } + else if (gpi->chProps & SP_HASMVALUES) + { + p->z = 0.0; + p->m = ReadZ(iPoint); + } + else + { + p->z = 0.0; + p->m = 0.0; + } +#endif +} + +int StrokeArcToLine(msGeometryParserInfo* gpi, lineObj* line, int index) +{ + if (index > 1) { + double x, y, x1, y1, x2, y2, x3, y3, dxa, dya, sxa, sya, dxb, dyb; + double d, sxb, syb, ox, oy, a1, a3, sa, da, a, radius; + int numpoints; +#ifdef USE_POINT_Z_M + double z; + z = line->point[index].z; /* must be equal for arc segments */ +#endif + /* first point */ + x1 = line->point[index - 2].x; + y1 = line->point[index - 2].y; + /* second point */ + x2 = line->point[index - 1].x; + y2 = line->point[index - 1].y; + /* third point */ + x3 = line->point[index].x; + y3 = line->point[index].y; + + sxa = (x1 + x2); + sya = (y1 + y2); + dxa = x2 - x1; + dya = y2 - y1; + + sxb = (x2 + x3); + syb = (y2 + y3); + dxb = x3 - x2; + dyb = y3 - y2; + + d = (dxa * dyb - dya * dxb) * 2; + + if (fabs(d) < FP_EPSILON) { + /* points are colinear, nothing to do here */ + return index; + } + + /* calculating the center of circle */ + ox = ((sya - syb) * dya * dyb + sxa * dyb * dxa - sxb * dya * dxb) / d; + oy = ((sxb - sxa) * dxa * dxb + syb * dyb * dxa - sya * dya * dxb) / d; + + radius = sqrt((x1 - ox) * (x1 - ox) + (y1 - oy) * (y1 - oy)); + + /* calculating the angle to be used */ + a1 = atan2(y1 - oy, x1 - ox); + a3 = atan2(y3 - oy, x3 - ox); + + if (d > 0) { + /* draw counterclockwise */ + if (a3 > a1) /* Wrapping past 180? */ + sa = a3 - a1; + else + sa = a3 - a1 + 2.0 * M_PI ; + } + else { + if (a3 > a1) /* Wrapping past 180? */ + sa = a3 - a1 + 2.0 * M_PI; + else + sa = a3 - a1; + } + + numpoints = (int)floor(fabs(sa) * 180 / SEGMENT_ANGLE / M_PI); + if (numpoints < SEGMENT_MINPOINTS) + numpoints = SEGMENT_MINPOINTS; + + da = sa / numpoints; + + /* extend the point array */ + line->numpoints += numpoints - 2; + line->point = msSmallRealloc(line->point, sizeof(pointObj) * line->numpoints); + --index; + + a = a1 + da; + while (numpoints > 1) { + line->point[index].x = x = ox + radius * cos(a); + line->point[index].y = y = oy + radius * sin(a); +#ifdef USE_POINT_Z_M + line->point[index].z = z; +#endif + + /* calculate bounds */ + if (gpi->minx > x) gpi->minx = x; + else if (gpi->maxx < x) gpi->maxx = x; + if (gpi->miny > y) gpi->miny = y; + else if (gpi->maxy < y) gpi->maxy = y; + + a += da; + ++index; + --numpoints; + } + /* set last point */ + line->point[index].x = x3; + line->point[index].y = y3; +#ifdef USE_POINT_Z_M + line->point[index].z = z; #endif + } + return index; } int ParseSqlGeometry(msMSSQL2008LayerInfo* layerinfo, shapeObj *shape) @@ -264,19 +425,22 @@ /* store the SRS id for further use */ gpi->nSRSId = ReadInt32(0); - if ( ReadByte(4) != 1 ) { + gpi->chVersion = ReadByte(4); + + if (gpi->chVersion > 2) { msDebug("ParseSqlGeometry CORRUPT_DATA\n"); return CORRUPT_DATA; } gpi->chProps = ReadByte(5); + gpi->nPointSize = 16; + if ( gpi->chProps & SP_HASMVALUES ) - gpi->nPointSize = 32; - else if ( gpi->chProps & SP_HASZVALUES ) - gpi->nPointSize = 24; - else - gpi->nPointSize = 16; + gpi->nPointSize += 8; + + if ( gpi->chProps & SP_HASZVALUES ) + gpi->nPointSize += 8; if ( gpi->chProps & SP_ISSINGLEPOINT ) { // single point geometry @@ -312,7 +476,7 @@ ReadPoint(gpi, &shape->line[0].point[0], 0); ReadPoint(gpi, &shape->line[0].point[1], 1); } else { - int iShape, iFigure; + int iShape, iFigure, iSegment; // complex geometries gpi->nNumPoints = ReadInt32(6); @@ -368,10 +532,13 @@ if (shapeType == ST_POINT || shapeType == ST_MULTIPOINT) { shape->type = MS_SHAPE_POINT; break; - } else if (shapeType == ST_LINESTRING || shapeType == ST_MULTILINESTRING) { + } else if (shapeType == ST_LINESTRING || shapeType == ST_MULTILINESTRING || + shapeType == ST_CIRCULARSTRING || shapeType == ST_COMPOUNDCURVE) { shape->type = MS_SHAPE_LINE; break; - } else if (shapeType == ST_POLYGON || shapeType == ST_MULTIPOLYGON) { + } else if (shapeType == ST_POLYGON || shapeType == ST_MULTIPOLYGON || + shapeType == ST_CURVEPOLYGON) + { shape->type = MS_SHAPE_POLYGON; break; } @@ -379,6 +546,8 @@ shape->line = (lineObj *) msSmallMalloc(sizeof(lineObj) * gpi->nNumFigures); shape->numlines = gpi->nNumFigures; + gpi->nNumSegments = 0; + // read figures for (iFigure = 0; iFigure < gpi->nNumFigures; iFigure++) { int iPoint, iNextPoint, i; @@ -386,15 +555,61 @@ iNextPoint = NextPointOffset(iFigure); shape->line[iFigure].point = (pointObj *) msSmallMalloc(sizeof(pointObj)*(iNextPoint - iPoint)); - + shape->line[iFigure].numpoints = iNextPoint - iPoint; i = 0; - while (iPoint < iNextPoint) { - ReadPoint(gpi, &shape->line[iFigure].point[i], iPoint); - ++iPoint; - ++i; - } - shape->line[iFigure].numpoints = i; + if (gpi->chVersion == 0x02 && FigureAttribute(iFigure) >= 0x02) { + int nPointPrepared = 0; + lineObj* line = &shape->line[iFigure]; + if (FigureAttribute(iFigure) == 0x03) { + if (gpi->nNumSegments == 0) { + /* position of the segment types */ + gpi->nSegmentPos = gpi->nShapePos + 9 * gpi->nNumShapes + 4; + gpi->nNumSegments = ReadInt32(gpi->nSegmentPos - 4); + if (gpi->nLen < gpi->nSegmentPos + gpi->nNumSegments) { + msDebug("ParseSqlGeometry NOT_ENOUGH_DATA\n"); + return NOT_ENOUGH_DATA; + } + iSegment = 0; + } + + while (iPoint < iNextPoint && iSegment < gpi->nNumSegments) { + ReadPoint(gpi, &line->point[i], iPoint); + ++iPoint; + ++nPointPrepared; + + if (nPointPrepared == 2 && (SegmentType(iSegment) == SMT_FIRSTLINE || SegmentType(iSegment) == SMT_LINE)) { + ++iSegment; + nPointPrepared = 1; + } + else if (nPointPrepared == 3 && (SegmentType(iSegment) == SMT_FIRSTARC || SegmentType(iSegment) == SMT_ARC)) { + i = StrokeArcToLine(gpi, line, i); + ++iSegment; + nPointPrepared = 1; + } + ++i; + } + } + else { + while (iPoint < iNextPoint) { + ReadPoint(gpi, &line->point[i], iPoint); + ++iPoint; + ++nPointPrepared; + if (nPointPrepared == 3) { + i = StrokeArcToLine(gpi, line, i); + nPointPrepared = 1; + } + ++i; + } + } + } + else { + while (iPoint < iNextPoint) { + ReadPoint(gpi, &shape->line[iFigure].point[i], iPoint); + ++iPoint; + ++i; + } + } } } @@ -544,7 +759,8 @@ /* Connect to db */ static msODBCconn * mssql2008Connect(const char * connString) { - SQLCHAR fullConnString[1024]; + SQLCHAR outConnString[1024]; + SQLSMALLINT outConnStringLen; SQLRETURN rc; msODBCconn * conn = msSmallMalloc(sizeof(msODBCconn)); @@ -556,13 +772,17 @@ SQLAllocHandle(SQL_HANDLE_DBC, conn->henv, &conn->hdbc); - snprintf((char*)fullConnString, sizeof(fullConnString), "DRIVER=SQL Server;%s", connString); - + if (strcasestr(connString, "DRIVER=") == 0) { - SQLCHAR outConnString[1024]; - SQLSMALLINT outConnStringLen; + SQLCHAR fullConnString[1024]; + + snprintf((char*)fullConnString, sizeof(fullConnString), "DRIVER={SQL Server};%s", connString); - rc = SQLDriverConnect(conn->hdbc, NULL, fullConnString, SQL_NTS, outConnString, 1024, &outConnStringLen, SQL_DRIVER_NOPROMPT); + rc = SQLDriverConnect(conn->hdbc, NULL, fullConnString, SQL_NTS, outConnString, 1024, &outConnStringLen, SQL_DRIVER_NOPROMPT); + } + else + { + rc = SQLDriverConnect(conn->hdbc, NULL, connString, SQL_NTS, outConnString, 1024, &outConnStringLen, SQL_DRIVER_NOPROMPT); } if (rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) { @@ -1088,10 +1308,9 @@ /* adding items to the select list */ for (t = 0; t < layer->numitems; t++) { #ifdef USE_ICONV - /* no conversion applied at the database */ - query = msStringConcatenate(query, "["); + query = msStringConcatenate(query, "convert(nvarchar(max), ["); query = msStringConcatenate(query, layer->items[t]); - query = msStringConcatenate(query, "],"); + query = msStringConcatenate(query, "]),"); #else query = msStringConcatenate(query, "convert(varchar(max), ["); query = msStringConcatenate(query, layer->items[t]); diff -Nru mapserver-7.2.1/mapmvt.c mapserver-7.2.2/mapmvt.c --- mapserver-7.2.1/mapmvt.c 2018-10-01 15:11:13.000000000 +0000 +++ mapserver-7.2.2/mapmvt.c 2019-02-19 15:47:37.000000000 +0000 @@ -57,6 +57,21 @@ #define COMMAND(id, count) (((id) & 0x7) | ((count) << 3)) #define PARAMETER(n) (((n) << 1) ^ ((n) >> 31)) +static double getTriangleHeight(lineObj *ring) +{ + int i; + double s=0, b=0; + + if(ring->numpoints != 4) return -1; /* not a triangle */ + + for(i=0; inumpoints-1; i++) { + s += (ring->point[i].x*ring->point[i+1].y - ring->point[i+1].x*ring->point[i].y); + b = MS_MAX(b, msDistancePointToPoint(&ring->point[i], &ring->point[i+1])); + } + + return (MS_ABS(s/b)); +} + static enum MS_RING_DIRECTION mvtGetRingDirection(lineObj *ring) { int i, sum=0; @@ -132,6 +147,11 @@ shape->line[i].numpoints = outj; if(layer_type == MS_LAYER_POLYGON) { + if(shape->line[i].numpoints == 4 && getTriangleHeight(&shape->line[i]) < 1) { + shape->line[i].numpoints = 0; /* so it's not considered anymore */ + continue; /* next ring */ + } + ring_direction = mvtGetRingDirection(&shape->line[i]); if(ring_direction == MS_DIRECTION_INVALID_RING) shape->line[i].numpoints = 0; /* so it's not considered anymore */ @@ -355,6 +375,10 @@ VectorTile__Tile mvt_tile = VECTOR_TILE__TILE__INIT; mvt_tile.layers = msSmallCalloc(map->numlayers, sizeof(VectorTile__Tile__Layer*)); + /* make sure we have a scale and cellsize computed */ + map->cellsize = MS_CELLSIZE(map->extent.minx, map->extent.maxx, map->width); + msCalculateScale(map->extent, map->units, map->width, map->height, map->resolution, &map->scaledenom); + /* expand the map->extent so it goes from pixel center (MapServer) to pixel edge (OWS) */ map->extent.minx -= map->cellsize * 0.5; map->extent.maxx += map->cellsize * 0.5; diff -Nru mapserver-7.2.1/mapogcfiltercommon.c mapserver-7.2.2/mapogcfiltercommon.c --- mapserver-7.2.1/mapogcfiltercommon.c 2018-10-01 15:11:13.000000000 +0000 +++ mapserver-7.2.2/mapogcfiltercommon.c 2019-02-19 15:47:37.000000000 +0000 @@ -41,7 +41,7 @@ { const size_t bufferSize = 1024; char szBuffer[1024]; - char szTmp[256]; + char szTmp[512]; char *pszValue = NULL; const char *pszWild = NULL; @@ -52,9 +52,9 @@ int nLength=0, i=0, iTmp=0; - /* From http://www.fon.hum.uva.nl/praat/manual/Regular_expressions_1__Special_characters.html */ + /* From http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap09.html#tag_09_04 */ /* also add double quote because we are within a string */ - const char* pszRegexSpecialCharsAndDoubleQuote = "\\^${}[]().*+?|<>-&\""; + const char* pszRegexSpecialCharsAndDoubleQuote = "\\^${[().*+?|\""; if (!psFilterNode || !psFilterNode->pOther || !psFilterNode->psLeftNode || !psFilterNode->psRightNode || !psFilterNode->psRightNode->pszValue) return NULL; @@ -92,11 +92,12 @@ pszValue = psFilterNode->psRightNode->pszValue; nLength = strlen(pszValue); - if( 1 + 2 * nLength + 1 + 1 >= sizeof(szTmp) ) + /* The 4 factor is in case of \. See below */ + if( 1 + 4 * nLength + 1 + 1 >= sizeof(szTmp) ) return NULL; iTmp =0; - if (nLength > 0 && pszValue[0] != pszWild[0] && pszValue[0] != pszSingle[0] && pszValue[0] != pszEscape[0]) { + if (nLength > 0) { szTmp[iTmp]= '^'; iTmp++; } @@ -106,21 +107,33 @@ iTmp++; szTmp[iTmp] = '\0'; /* The Filter escape character is supposed to only escape the single, wildcard and escape character */ - /* As we replace single and wild by regular expression special characters, we indeed */ - /* need to escape them */ - } else if (pszValue[i] == pszEscape[0] && (pszValue[i+1] == pszSingle[0] || pszValue[i+1] == pszWild[0])) { - szTmp[iTmp] = '\\'; - iTmp++; - szTmp[iTmp] = '\0'; - /* If the Filter escape character is escaped, only regular-expression-escape-it */ - /* if it is indeed a regular expression special character. Otherwise ignore it */ - } else if (pszValue[i] == pszEscape[0] && pszValue[i+1] == pszEscape[0]) { - if( strchr(pszRegexSpecialCharsAndDoubleQuote, pszValue[i]) ) + } else if (pszValue[i] == pszEscape[0] && ( + pszValue[i+1] == pszSingle[0] || + pszValue[i+1] == pszWild[0] || + pszValue[i+1] == pszEscape[0])) { + if( pszValue[i+1] == '\\' ) + { + /* Tricky case: \ must be escaped ncce in the regular expression context + so that the regexp matches it as an ordinary character. + But as \ is also the escape character for MapServer string, we + must escape it again. */ + szTmp[iTmp++] = '\\'; + szTmp[iTmp++] = '\\'; + szTmp[iTmp++] = '\\'; + szTmp[iTmp++] = '\\'; + } + else { - szTmp[iTmp] = '\\'; - iTmp++; - szTmp[iTmp] = '\0'; + /* If the escaped character is itself a regular expression special character */ + /* we need to regular-expression-escape-it ! */ + if( strchr(pszRegexSpecialCharsAndDoubleQuote, pszValue[i+1]) ) + { + szTmp[iTmp++] = '\\'; + } + szTmp[iTmp++] = pszValue[i+1]; } + i++; + szTmp[iTmp] = '\0'; } else if (pszValue[i] == pszWild[0]) { szTmp[iTmp++] = '.'; szTmp[iTmp++] = '*'; @@ -129,10 +142,19 @@ /* Escape regular expressions special characters and double quote */ else if (strchr(pszRegexSpecialCharsAndDoubleQuote, pszValue[i])) { - szTmp[iTmp] = '\\'; - iTmp++; - szTmp[iTmp] = pszValue[i]; - iTmp++; + if( pszValue[i] == '\\' ) + { + /* See above explantation */ + szTmp[iTmp++] = '\\'; + szTmp[iTmp++] = '\\'; + szTmp[iTmp++] = '\\'; + szTmp[iTmp++] = '\\'; + } + else + { + szTmp[iTmp++] = '\\'; + szTmp[iTmp++] = pszValue[i]; + } szTmp[iTmp] = '\0'; } else { @@ -143,7 +165,10 @@ } szTmp[iTmp] = '"'; szTmp[++iTmp] = '\0'; - +#if 0 + msDebug("like: %s\n", pszValue); + msDebug("regexp (with \\ escaping for MapServer use): %s\n", szTmp); +#endif strlcat(szBuffer, szTmp, bufferSize); strlcat(szBuffer, ")", bufferSize); return msStrdup(szBuffer); diff -Nru mapserver-7.2.1/mapparser.c mapserver-7.2.2/mapparser.c --- mapserver-7.2.1/mapparser.c 2018-10-01 15:11:13.000000000 +0000 +++ mapserver-7.2.2/mapparser.c 2019-02-19 15:47:37.000000000 +0000 @@ -1,21 +1,24 @@ -/* A Bison parser, made by GNU Bison 2.5. */ +/* A Bison parser, made by GNU Bison 2.3. */ -/* Bison implementation for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. - - This program is free software: you can redistribute it and/or modify +/* Skeleton implementation for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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 3 of the License, or - (at your option) any later version. - + the Free Software Foundation; either version 2, 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 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 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, see . */ + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -26,7 +29,7 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ @@ -44,7 +47,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.5" +#define YYBISON_VERSION "2.3" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -52,61 +55,11 @@ /* Pure parsers. */ #define YYPURE 1 -/* Push parsers. */ -#define YYPUSH 0 - -/* Pull parsers. */ -#define YYPULL 1 - /* Using locations. */ #define YYLSP_NEEDED 0 -/* Copy the first part of user declarations. */ - -/* Line 268 of yacc.c */ -#line 5 "mapparser.y" - -/* C declarations */ -#include -#include -#include -#include -#include - -#include "mapserver.h" /* for TRUE/FALSE and REGEX includes */ -#include "maptime.h" /* for time comparison routines */ -#include "mapprimitive.h" /* for shapeObj */ - -#include "mapparser.h" /* for YYSTYPE in the function prototype for yylex() */ - -int yylex(YYSTYPE *, parseObj *); /* prototype functions, defined after the grammar */ -int yyerror(parseObj *, const char *); - - -/* Line 268 of yacc.c */ -#line 90 "mapparser.c" - -/* Enabling traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif - -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 0 -#endif - -/* Enabling the token table. */ -#ifndef YYTOKEN_TABLE -# define YYTOKEN_TABLE 0 -#endif - - /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE @@ -210,35 +163,69 @@ +/* Copy the first part of user declarations. */ +#line 5 "mapparser.y" + +/* C declarations */ +#include +#include +#include +#include +#include + +#include "mapserver.h" /* for TRUE/FALSE and REGEX includes */ +#include "maptime.h" /* for time comparison routines */ +#include "mapprimitive.h" /* for shapeObj */ + +#include "mapparser.h" /* for YYSTYPE in the function prototype for yylex() */ + +int yylex(YYSTYPE *, parseObj *); /* prototype functions, defined after the grammar */ +int yyerror(parseObj *, const char *); + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE -{ - -/* Line 293 of yacc.c */ #line 30 "mapparser.y" - +{ double dblval; int intval; char *strval; struct tm tmval; shapeObj *shpval; - - - -/* Line 293 of yacc.c */ -#line 230 "mapparser.c" -} YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 +} +/* Line 193 of yacc.c. */ +#line 216 "/Users/sdlime/mapserver/sdlime/mapserver/mapparser.c" + YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 #endif + /* Copy the second part of user declarations. */ -/* Line 343 of yacc.c */ -#line 242 "mapparser.c" +/* Line 216 of yacc.c. */ +#line 229 "/Users/sdlime/mapserver/sdlime/mapserver/mapparser.c" #ifdef short # undef short @@ -313,14 +300,14 @@ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static int -YYID (int yyi) +YYID (int i) #else static int -YYID (yyi) - int yyi; +YYID (i) + int i; #endif { - return yyi; + return i; } #endif @@ -341,11 +328,11 @@ # define alloca _alloca # else # define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 +# ifndef _STDLIB_H +# define _STDLIB_H 1 # endif # endif # endif @@ -368,24 +355,24 @@ # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif -# if (defined __cplusplus && ! defined EXIT_SUCCESS \ +# if (defined __cplusplus && ! defined _STDLIB_H \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 +# ifndef _STDLIB_H +# define _STDLIB_H 1 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif @@ -401,9 +388,9 @@ /* A type that is properly aligned for any stack member. */ union yyalloc { - yytype_int16 yyss_alloc; - YYSTYPE yyvs_alloc; -}; + yytype_int16 yyss; + YYSTYPE yyvs; + }; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) @@ -414,27 +401,6 @@ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) -# define YYCOPY_NEEDED 1 - -/* Relocate STACK from its old location to the new one. The - local variables YYSIZE and YYSTACKSIZE give the old and new number of - elements in the stack, and YYPTR gives the new location of the - stack. Advance YYPTR to a properly aligned location for the next - stack. */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (YYID (0)) - -#endif - -#if defined YYCOPY_NEEDED && YYCOPY_NEEDED /* Copy COUNT objects from FROM to TO. The source and destination do not overlap. */ # ifndef YYCOPY @@ -452,7 +418,24 @@ while (YYID (0)) # endif # endif -#endif /* !YYCOPY_NEEDED */ + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif /* YYFINAL -- State number of the termination state. */ #define YYFINAL 78 @@ -655,8 +638,8 @@ 6, 4, 4, 4, 4, 4, 1, 3 }; -/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE doesn't specify something else to do. Zero +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ static const yytype_uint8 yydefact[] = { @@ -741,7 +724,8 @@ /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which - number is the opposite. If YYTABLE_NINF, syntax error. */ + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -1 static const yytype_uint16 yytable[] = { @@ -799,12 +783,6 @@ 123 }; -#define yypact_value_is_default(yystate) \ - ((yystate) == (-50)) - -#define yytable_value_is_error(yytable_value) \ - YYID (0) - static const yytype_int16 yycheck[] = { 0, 6, 9, 4, 8, 9, 55, 56, 47, 47, @@ -908,18 +886,9 @@ /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. However, - YYFAIL appears to be in use. Nevertheless, it is formally deprecated - in Bison 2.4.2's NEWS entry, where a plan to phase it out is - discussed. */ + Once GCC version 2 has supplanted version 1, this can go. */ #define YYFAIL goto yyerrlab -#if defined YYFAIL - /* This is here to suppress warnings from the GCC cpp's - -Wunused-macros. Normally we don't worry about that warning, but - some users do, and we want to make it easy for users to remove - YYFAIL uses, which will produce warnings from Bison 2.5. */ -#endif #define YYRECOVERING() (!!yyerrstatus) @@ -929,6 +898,7 @@ { \ yychar = (Token); \ yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ YYPOPSTACK (1); \ goto yybackup; \ } \ @@ -970,10 +940,19 @@ #endif -/* This macro is provided for backward compatibility. */ +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ #ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif #endif @@ -1080,20 +1059,17 @@ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void -yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) #else static void -yy_stack_print (yybottom, yytop) - yytype_int16 *yybottom; - yytype_int16 *yytop; +yy_stack_print (bottom, top) + yytype_int16 *bottom; + yytype_int16 *top; #endif { YYFPRINTF (stderr, "Stack now"); - for (; yybottom <= yytop; yybottom++) - { - int yybot = *yybottom; - YYFPRINTF (stderr, " %d", yybot); - } + for (; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); YYFPRINTF (stderr, "\n"); } @@ -1128,11 +1104,11 @@ /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { - YYFPRINTF (stderr, " $%d = ", yyi + 1); + fprintf (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], &(yyvsp[(yyi + 1) - (yynrhs)]) , p); - YYFPRINTF (stderr, "\n"); + fprintf (stderr, "\n"); } } @@ -1169,6 +1145,7 @@ # define YYMAXDEPTH 10000 #endif + #if YYERROR_VERBOSE @@ -1271,142 +1248,115 @@ } # endif -/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message - about the unexpected token YYTOKEN for the state stack whose top is - YYSSP. - - Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is - not large enough to hold the message. In that case, also set - *YYMSG_ALLOC to the required number of bytes. Return 2 if the - required number of bytes is too large to store. */ -static int -yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, - yytype_int16 *yyssp, int yytoken) +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) { - YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]); - YYSIZE_T yysize = yysize0; - YYSIZE_T yysize1; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - /* Internationalized format string. */ - const char *yyformat = 0; - /* Arguments of yyformat. */ - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Number of reported tokens (one for the "unexpected", one per - "expected"). */ - int yycount = 0; - - /* There are many possibilities here to consider: - - Assume YYFAIL is not used. It's too flawed to consider. See - - for details. YYERROR is fine as it does not invoke this - function. - - If this state is a consistent state with a default action, then - the only way this function was invoked is if the default action - is an error action. In that case, don't check for expected - tokens because there are none. - - The only way there can be no lookahead present (in yychar) is if - this state is a consistent state with a default action. Thus, - detecting the absence of a lookahead is sufficient to determine - that there is no unexpected or expected token to report. In that - case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this state is a - consistent state with a default action. There might have been a - previous inconsistent state, consistent state with a non-default - action, or user semantic action that manipulated yychar. - - Of course, the expected token list depends on states to have - correct lookahead information, and it depends on the parser not - to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state merging - (from LALR or IELR) and default reductions corrupt the expected - token list. However, the list is correct for canonical LR with - one exception: it will still contain any token that will not be - accepted due to an error action in a later state. - */ - if (yytoken != YYEMPTY) - { - int yyn = yypact[*yyssp]; - yyarg[yycount++] = yytname[yytoken]; - if (!yypact_value_is_default (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yyx; - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR - && !yytable_value_is_error (yytable[yyx + yyn])) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - break; - } - yyarg[yycount++] = yytname[yyx]; - yysize1 = yysize + yytnamerr (0, yytname[yyx]); - if (! (yysize <= yysize1 - && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; - } - } - } - - switch (yycount) - { -# define YYCASE_(N, S) \ - case N: \ - yyformat = S; \ - break - YYCASE_(0, YY_("syntax error")); - YYCASE_(1, YY_("syntax error, unexpected %s")); - YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); -# undef YYCASE_ - } - - yysize1 = yysize + yystrlen (yyformat); - if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; - - if (*yymsg_alloc < yysize) - { - *yymsg_alloc = 2 * yysize; - if (! (yysize <= *yymsg_alloc - && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) - *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; - return 1; - } - - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - { - char *yyp = *yymsg; - int yyi = 0; - while ((*yyp = *yyformat) != '\0') - if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyformat += 2; - } - else - { - yyp++; - yyformat++; - } - } - return 0; + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } } #endif /* YYERROR_VERBOSE */ + /*-----------------------------------------------. | Release the memory associated to this symbol. | @@ -1440,9 +1390,10 @@ break; } } - + /* Prevent warnings from -Wmissing-prototypes. */ + #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus int yyparse (void *YYPARSE_PARAM); @@ -1458,6 +1409,10 @@ #endif /* ! YYPARSE_PARAM */ + + + + /*----------. | yyparse. | `----------*/ @@ -1484,46 +1439,22 @@ #endif #endif { -/* The lookahead symbol. */ + /* The look-ahead symbol. */ int yychar; -/* The semantic value of the lookahead symbol. */ +/* The semantic value of the look-ahead symbol. */ YYSTYPE yylval; - /* Number of syntax errors so far. */ - int yynerrs; - - int yystate; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - - /* The stacks and their tools: - `yyss': related to states. - `yyvs': related to semantic values. - - Refer to the stacks thru separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss; - yytype_int16 *yyssp; - - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; - - YYSIZE_T yystacksize; +/* Number of syntax errors so far. */ +int yynerrs; + int yystate; int yyn; int yyresult; - /* Lookahead token as an internal (translated) token number. */ - int yytoken; - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval; - + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; #if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; @@ -1531,28 +1462,51 @@ YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + + #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; - yytoken = 0; - yyss = yyssa; - yyvs = yyvsa; - yystacksize = YYINITDEPTH; - YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ + yychar = YYEMPTY; /* Cause a token to be read. */ /* Initialize stack pointers. Waste one element of value and location stack so that they stay on the same level as the state stack. The wasted elements are never initialized. */ + yyssp = yyss; yyvsp = yyvs; @@ -1582,6 +1536,7 @@ YYSTYPE *yyvs1 = yyvs; yytype_int16 *yyss1 = yyss; + /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might @@ -1589,6 +1544,7 @@ yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), + &yystacksize); yyss = yyss1; @@ -1611,8 +1567,9 @@ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); @@ -1623,6 +1580,7 @@ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; + YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); @@ -1632,9 +1590,6 @@ YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - if (yystate == YYFINAL) - YYACCEPT; - goto yybackup; /*-----------. @@ -1643,16 +1598,16 @@ yybackup: /* Do appropriate processing given the current state. Read a - lookahead token if we need one and don't already have one. */ + look-ahead token if we need one and don't already have one. */ - /* First try to decide what to do without reference to lookahead token. */ + /* First try to decide what to do without reference to look-ahead token. */ yyn = yypact[yystate]; - if (yypact_value_is_default (yyn)) + if (yyn == YYPACT_NINF) goto yydefault; - /* Not known => get a lookahead token if don't already have one. */ + /* Not known => get a look-ahead token if don't already have one. */ - /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); @@ -1678,22 +1633,26 @@ yyn = yytable[yyn]; if (yyn <= 0) { - if (yytable_value_is_error (yyn)) - goto yyerrlab; + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; yyn = -yyn; goto yyreduce; } + if (yyn == YYFINAL) + YYACCEPT; + /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; - /* Shift the lookahead token. */ + /* Shift the look-ahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - /* Discard the shifted token. */ - yychar = YYEMPTY; + /* Discard the shifted token unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; yystate = yyn; *++yyvsp = yylval; @@ -1733,8 +1692,6 @@ switch (yyn) { case 3: - -/* Line 1806 of yacc.c */ #line 69 "mapparser.y" { switch(p->type) { @@ -1752,8 +1709,6 @@ break; case 4: - -/* Line 1806 of yacc.c */ #line 82 "mapparser.y" { switch(p->type) { @@ -1772,8 +1727,6 @@ break; case 5: - -/* Line 1806 of yacc.c */ #line 96 "mapparser.y" { switch(p->type) { @@ -1791,8 +1744,6 @@ break; case 6: - -/* Line 1806 of yacc.c */ #line 109 "mapparser.y" { switch(p->type) { @@ -1805,15 +1756,11 @@ break; case 8: - -/* Line 1806 of yacc.c */ #line 120 "mapparser.y" { (yyval.intval) = (yyvsp[(2) - (3)].intval); } break; case 9: - -/* Line 1806 of yacc.c */ #line 121 "mapparser.y" { (yyval.intval) = MS_FALSE; @@ -1822,8 +1769,6 @@ break; case 10: - -/* Line 1806 of yacc.c */ #line 125 "mapparser.y" { if((yyvsp[(1) - (3)].intval) == MS_TRUE) @@ -1836,8 +1781,6 @@ break; case 11: - -/* Line 1806 of yacc.c */ #line 133 "mapparser.y" { if((yyvsp[(1) - (3)].intval) == MS_TRUE) { @@ -1851,8 +1794,6 @@ break; case 12: - -/* Line 1806 of yacc.c */ #line 142 "mapparser.y" { if((yyvsp[(1) - (3)].intval) == MS_TRUE) @@ -1865,8 +1806,6 @@ break; case 13: - -/* Line 1806 of yacc.c */ #line 150 "mapparser.y" { if((yyvsp[(1) - (3)].intval) == MS_TRUE) { @@ -1880,8 +1819,6 @@ break; case 14: - -/* Line 1806 of yacc.c */ #line 159 "mapparser.y" { if((yyvsp[(1) - (3)].dblval) != 0) @@ -1894,8 +1831,6 @@ break; case 15: - -/* Line 1806 of yacc.c */ #line 167 "mapparser.y" { if((yyvsp[(1) - (3)].dblval) != 0) { @@ -1909,8 +1844,6 @@ break; case 16: - -/* Line 1806 of yacc.c */ #line 176 "mapparser.y" { if((yyvsp[(1) - (3)].dblval) != 0) @@ -1923,8 +1856,6 @@ break; case 17: - -/* Line 1806 of yacc.c */ #line 184 "mapparser.y" { if((yyvsp[(1) - (3)].dblval) != 0) { @@ -1938,22 +1869,16 @@ break; case 18: - -/* Line 1806 of yacc.c */ #line 193 "mapparser.y" { (yyval.intval) = !(yyvsp[(2) - (2)].intval); } break; case 19: - -/* Line 1806 of yacc.c */ #line 194 "mapparser.y" { (yyval.intval) = !(yyvsp[(2) - (2)].dblval); } break; case 20: - -/* Line 1806 of yacc.c */ #line 195 "mapparser.y" { ms_regex_t re; @@ -1978,8 +1903,6 @@ break; case 21: - -/* Line 1806 of yacc.c */ #line 215 "mapparser.y" { ms_regex_t re; @@ -2004,8 +1927,6 @@ break; case 22: - -/* Line 1806 of yacc.c */ #line 235 "mapparser.y" { if((yyvsp[(1) - (3)].dblval) == (yyvsp[(3) - (3)].dblval)) @@ -2016,8 +1937,6 @@ break; case 23: - -/* Line 1806 of yacc.c */ #line 241 "mapparser.y" { if((yyvsp[(1) - (3)].dblval) != (yyvsp[(3) - (3)].dblval)) @@ -2028,8 +1947,6 @@ break; case 24: - -/* Line 1806 of yacc.c */ #line 247 "mapparser.y" { if((yyvsp[(1) - (3)].dblval) > (yyvsp[(3) - (3)].dblval)) @@ -2040,8 +1957,6 @@ break; case 25: - -/* Line 1806 of yacc.c */ #line 253 "mapparser.y" { if((yyvsp[(1) - (3)].dblval) < (yyvsp[(3) - (3)].dblval)) @@ -2052,8 +1967,6 @@ break; case 26: - -/* Line 1806 of yacc.c */ #line 259 "mapparser.y" { if((yyvsp[(1) - (3)].dblval) >= (yyvsp[(3) - (3)].dblval)) @@ -2064,8 +1977,6 @@ break; case 27: - -/* Line 1806 of yacc.c */ #line 265 "mapparser.y" { if((yyvsp[(1) - (3)].dblval) <= (yyvsp[(3) - (3)].dblval)) @@ -2076,8 +1987,6 @@ break; case 28: - -/* Line 1806 of yacc.c */ #line 271 "mapparser.y" { if(strcmp((yyvsp[(1) - (3)].strval), (yyvsp[(3) - (3)].strval)) == 0) @@ -2090,8 +1999,6 @@ break; case 29: - -/* Line 1806 of yacc.c */ #line 279 "mapparser.y" { if(strcmp((yyvsp[(1) - (3)].strval), (yyvsp[(3) - (3)].strval)) != 0) @@ -2104,8 +2011,6 @@ break; case 30: - -/* Line 1806 of yacc.c */ #line 287 "mapparser.y" { if(strcmp((yyvsp[(1) - (3)].strval), (yyvsp[(3) - (3)].strval)) > 0) @@ -2118,8 +2023,6 @@ break; case 31: - -/* Line 1806 of yacc.c */ #line 295 "mapparser.y" { if(strcmp((yyvsp[(1) - (3)].strval), (yyvsp[(3) - (3)].strval)) < 0) @@ -2132,8 +2035,6 @@ break; case 32: - -/* Line 1806 of yacc.c */ #line 303 "mapparser.y" { if(strcmp((yyvsp[(1) - (3)].strval), (yyvsp[(3) - (3)].strval)) >= 0) @@ -2146,8 +2047,6 @@ break; case 33: - -/* Line 1806 of yacc.c */ #line 311 "mapparser.y" { if(strcmp((yyvsp[(1) - (3)].strval), (yyvsp[(3) - (3)].strval)) <= 0) @@ -2160,8 +2059,6 @@ break; case 34: - -/* Line 1806 of yacc.c */ #line 319 "mapparser.y" { if(msTimeCompare(&((yyvsp[(1) - (3)].tmval)), &((yyvsp[(3) - (3)].tmval))) == 0) @@ -2172,8 +2069,6 @@ break; case 35: - -/* Line 1806 of yacc.c */ #line 325 "mapparser.y" { if(msTimeCompare(&((yyvsp[(1) - (3)].tmval)), &((yyvsp[(3) - (3)].tmval))) != 0) @@ -2184,8 +2079,6 @@ break; case 36: - -/* Line 1806 of yacc.c */ #line 331 "mapparser.y" { if(msTimeCompare(&((yyvsp[(1) - (3)].tmval)), &((yyvsp[(3) - (3)].tmval))) > 0) @@ -2196,8 +2089,6 @@ break; case 37: - -/* Line 1806 of yacc.c */ #line 337 "mapparser.y" { if(msTimeCompare(&((yyvsp[(1) - (3)].tmval)), &((yyvsp[(3) - (3)].tmval))) < 0) @@ -2208,8 +2099,6 @@ break; case 38: - -/* Line 1806 of yacc.c */ #line 343 "mapparser.y" { if(msTimeCompare(&((yyvsp[(1) - (3)].tmval)), &((yyvsp[(3) - (3)].tmval))) >= 0) @@ -2220,8 +2109,6 @@ break; case 39: - -/* Line 1806 of yacc.c */ #line 349 "mapparser.y" { if(msTimeCompare(&((yyvsp[(1) - (3)].tmval)), &((yyvsp[(3) - (3)].tmval))) <= 0) @@ -2232,8 +2119,6 @@ break; case 40: - -/* Line 1806 of yacc.c */ #line 355 "mapparser.y" { char *delim, *bufferp; @@ -2259,8 +2144,6 @@ break; case 41: - -/* Line 1806 of yacc.c */ #line 376 "mapparser.y" { char *delim,*bufferp; @@ -2285,8 +2168,6 @@ break; case 42: - -/* Line 1806 of yacc.c */ #line 396 "mapparser.y" { if((yyvsp[(1) - (3)].dblval) == (yyvsp[(3) - (3)].dblval)) @@ -2297,8 +2178,6 @@ break; case 43: - -/* Line 1806 of yacc.c */ #line 402 "mapparser.y" { if(strcasecmp((yyvsp[(1) - (3)].strval), (yyvsp[(3) - (3)].strval)) == 0) @@ -2311,8 +2190,6 @@ break; case 44: - -/* Line 1806 of yacc.c */ #line 410 "mapparser.y" { if(msTimeCompare(&((yyvsp[(1) - (3)].tmval)), &((yyvsp[(3) - (3)].tmval))) == 0) @@ -2323,8 +2200,6 @@ break; case 45: - -/* Line 1806 of yacc.c */ #line 416 "mapparser.y" { int rval; @@ -2340,8 +2215,6 @@ break; case 46: - -/* Line 1806 of yacc.c */ #line 427 "mapparser.y" { int rval; @@ -2357,8 +2230,6 @@ break; case 47: - -/* Line 1806 of yacc.c */ #line 438 "mapparser.y" { int rval; @@ -2374,8 +2245,6 @@ break; case 48: - -/* Line 1806 of yacc.c */ #line 449 "mapparser.y" { int rval; @@ -2391,8 +2260,6 @@ break; case 49: - -/* Line 1806 of yacc.c */ #line 460 "mapparser.y" { int rval; @@ -2408,8 +2275,6 @@ break; case 50: - -/* Line 1806 of yacc.c */ #line 471 "mapparser.y" { int rval; @@ -2425,8 +2290,6 @@ break; case 51: - -/* Line 1806 of yacc.c */ #line 482 "mapparser.y" { int rval; @@ -2442,8 +2305,6 @@ break; case 52: - -/* Line 1806 of yacc.c */ #line 493 "mapparser.y" { int rval; @@ -2459,8 +2320,6 @@ break; case 53: - -/* Line 1806 of yacc.c */ #line 504 "mapparser.y" { int rval; @@ -2476,8 +2335,6 @@ break; case 54: - -/* Line 1806 of yacc.c */ #line 515 "mapparser.y" { int rval; @@ -2493,8 +2350,6 @@ break; case 55: - -/* Line 1806 of yacc.c */ #line 526 "mapparser.y" { int rval; @@ -2510,8 +2365,6 @@ break; case 56: - -/* Line 1806 of yacc.c */ #line 537 "mapparser.y" { int rval; @@ -2527,8 +2380,6 @@ break; case 57: - -/* Line 1806 of yacc.c */ #line 548 "mapparser.y" { int rval; @@ -2544,8 +2395,6 @@ break; case 58: - -/* Line 1806 of yacc.c */ #line 559 "mapparser.y" { int rval; @@ -2561,8 +2410,6 @@ break; case 59: - -/* Line 1806 of yacc.c */ #line 570 "mapparser.y" { int rval; @@ -2578,8 +2425,6 @@ break; case 60: - -/* Line 1806 of yacc.c */ #line 581 "mapparser.y" { int rval; @@ -2595,8 +2440,6 @@ break; case 61: - -/* Line 1806 of yacc.c */ #line 592 "mapparser.y" { double d; @@ -2611,8 +2454,6 @@ break; case 62: - -/* Line 1806 of yacc.c */ #line 602 "mapparser.y" { double d; @@ -2627,43 +2468,31 @@ break; case 64: - -/* Line 1806 of yacc.c */ #line 615 "mapparser.y" { (yyval.dblval) = (yyvsp[(2) - (3)].dblval); } break; case 65: - -/* Line 1806 of yacc.c */ #line 616 "mapparser.y" { (yyval.dblval) = (yyvsp[(1) - (3)].dblval) + (yyvsp[(3) - (3)].dblval); } break; case 66: - -/* Line 1806 of yacc.c */ #line 617 "mapparser.y" { (yyval.dblval) = (yyvsp[(1) - (3)].dblval) - (yyvsp[(3) - (3)].dblval); } break; case 67: - -/* Line 1806 of yacc.c */ #line 618 "mapparser.y" { (yyval.dblval) = (yyvsp[(1) - (3)].dblval) * (yyvsp[(3) - (3)].dblval); } break; case 68: - -/* Line 1806 of yacc.c */ #line 619 "mapparser.y" { (yyval.dblval) = (int)(yyvsp[(1) - (3)].dblval) % (int)(yyvsp[(3) - (3)].dblval); } break; case 69: - -/* Line 1806 of yacc.c */ #line 620 "mapparser.y" { if((yyvsp[(3) - (3)].dblval) == 0.0) { @@ -2675,29 +2504,21 @@ break; case 70: - -/* Line 1806 of yacc.c */ #line 627 "mapparser.y" { (yyval.dblval) = (yyvsp[(2) - (2)].dblval); } break; case 71: - -/* Line 1806 of yacc.c */ #line 628 "mapparser.y" { (yyval.dblval) = pow((yyvsp[(1) - (3)].dblval), (yyvsp[(3) - (3)].dblval)); } break; case 72: - -/* Line 1806 of yacc.c */ #line 629 "mapparser.y" { (yyval.dblval) = strlen((yyvsp[(3) - (4)].strval)); } break; case 73: - -/* Line 1806 of yacc.c */ #line 630 "mapparser.y" { if((yyvsp[(3) - (4)].shpval)->type != MS_SHAPE_POLYGON) { @@ -2710,22 +2531,16 @@ break; case 74: - -/* Line 1806 of yacc.c */ #line 638 "mapparser.y" { (yyval.dblval) = (MS_NINT((yyvsp[(3) - (6)].dblval)/(yyvsp[(5) - (6)].dblval)))*(yyvsp[(5) - (6)].dblval); } break; case 76: - -/* Line 1806 of yacc.c */ #line 642 "mapparser.y" { (yyval.shpval) = (yyvsp[(2) - (3)].shpval); } break; case 77: - -/* Line 1806 of yacc.c */ #line 643 "mapparser.y" { shapeObj *s; @@ -2740,8 +2555,6 @@ break; case 78: - -/* Line 1806 of yacc.c */ #line 653 "mapparser.y" { shapeObj *s; @@ -2756,8 +2569,6 @@ break; case 79: - -/* Line 1806 of yacc.c */ #line 663 "mapparser.y" { shapeObj *s; @@ -2772,8 +2583,6 @@ break; case 80: - -/* Line 1806 of yacc.c */ #line 673 "mapparser.y" { shapeObj *s; @@ -2788,8 +2597,6 @@ break; case 81: - -/* Line 1806 of yacc.c */ #line 683 "mapparser.y" { shapeObj *s; @@ -2804,8 +2611,6 @@ break; case 82: - -/* Line 1806 of yacc.c */ #line 693 "mapparser.y" { shapeObj *s; @@ -2820,8 +2625,6 @@ break; case 83: - -/* Line 1806 of yacc.c */ #line 703 "mapparser.y" { shapeObj *s; @@ -2836,8 +2639,6 @@ break; case 84: - -/* Line 1806 of yacc.c */ #line 713 "mapparser.y" { shapeObj *s; @@ -2852,8 +2653,6 @@ break; case 85: - -/* Line 1806 of yacc.c */ #line 723 "mapparser.y" { shapeObj *s; @@ -2869,8 +2668,6 @@ break; case 86: - -/* Line 1806 of yacc.c */ #line 734 "mapparser.y" { #ifdef USE_V8_MAPSCRIPT @@ -2891,15 +2688,11 @@ break; case 88: - -/* Line 1806 of yacc.c */ #line 753 "mapparser.y" { (yyval.strval) = (yyvsp[(2) - (3)].strval); } break; case 89: - -/* Line 1806 of yacc.c */ #line 754 "mapparser.y" { (yyval.strval) = (char *)malloc(strlen((yyvsp[(1) - (3)].strval)) + strlen((yyvsp[(3) - (3)].strval)) + 1); @@ -2908,8 +2701,6 @@ break; case 90: - -/* Line 1806 of yacc.c */ #line 758 "mapparser.y" { (yyval.strval) = (char *) malloc(strlen((yyvsp[(5) - (6)].strval)) + 64); /* Plenty big? Should use snprintf below... */ @@ -2918,8 +2709,6 @@ break; case 91: - -/* Line 1806 of yacc.c */ #line 762 "mapparser.y" { (yyvsp[(3) - (4)].strval) = msCommifyString((yyvsp[(3) - (4)].strval)); @@ -2928,8 +2717,6 @@ break; case 92: - -/* Line 1806 of yacc.c */ #line 766 "mapparser.y" { msStringToUpper((yyvsp[(3) - (4)].strval)); @@ -2938,8 +2725,6 @@ break; case 93: - -/* Line 1806 of yacc.c */ #line 770 "mapparser.y" { msStringToLower((yyvsp[(3) - (4)].strval)); @@ -2948,8 +2733,6 @@ break; case 94: - -/* Line 1806 of yacc.c */ #line 774 "mapparser.y" { msStringInitCap((yyvsp[(3) - (4)].strval)); @@ -2958,8 +2741,6 @@ break; case 95: - -/* Line 1806 of yacc.c */ #line 778 "mapparser.y" { msStringFirstCap((yyvsp[(3) - (4)].strval)); @@ -2968,29 +2749,15 @@ break; case 97: - -/* Line 1806 of yacc.c */ #line 785 "mapparser.y" { (yyval.tmval) = (yyvsp[(2) - (3)].tmval); } break; - -/* Line 1806 of yacc.c */ -#line 2981 "mapparser.c" +/* Line 1267 of yacc.c. */ +#line 2759 "/Users/sdlime/mapserver/sdlime/mapserver/mapparser.c" default: break; } - /* User semantic actions sometimes alter yychar, and that requires - that yytoken be updated with the new translation. We take the - approach of translating immediately before every use of yytoken. - One alternative is translating here after every semantic action, - but that translation would be missed if the semantic action invokes - YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or - if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an - incorrect destructor might then be invoked immediately. In the - case of YYERROR or YYBACKUP, subsequent parser actions might lead - to an incorrect destructor call or verbose syntax error message - before the lookahead is translated. */ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); @@ -2999,6 +2766,7 @@ *++yyvsp = yyval; + /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ @@ -3018,10 +2786,6 @@ | yyerrlab -- here on detecting error | `------------------------------------*/ yyerrlab: - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); - /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { @@ -3029,36 +2793,37 @@ #if ! YYERROR_VERBOSE yyerror (p, YY_("syntax error")); #else -# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ - yyssp, yytoken) { - char const *yymsgp = YY_("syntax error"); - int yysyntax_error_status; - yysyntax_error_status = YYSYNTAX_ERROR; - if (yysyntax_error_status == 0) - yymsgp = yymsg; - else if (yysyntax_error_status == 1) - { - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); - if (!yymsg) - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - yysyntax_error_status = 2; - } - else - { - yysyntax_error_status = YYSYNTAX_ERROR; - yymsgp = yymsg; - } - } - yyerror (p, yymsgp); - if (yysyntax_error_status == 2) - goto yyexhaustedlab; + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (p, yymsg); + } + else + { + yyerror (p, YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } } -# undef YYSYNTAX_ERROR #endif } @@ -3066,7 +2831,7 @@ if (yyerrstatus == 3) { - /* If just tried and failed to reuse lookahead token after an + /* If just tried and failed to reuse look-ahead token after an error, discard it. */ if (yychar <= YYEOF) @@ -3083,7 +2848,7 @@ } } - /* Else will try to reuse lookahead token after shifting the error + /* Else will try to reuse look-ahead token after shifting the error token. */ goto yyerrlab1; @@ -3117,7 +2882,7 @@ for (;;) { yyn = yypact[yystate]; - if (!yypact_value_is_default (yyn)) + if (yyn != YYPACT_NINF) { yyn += YYTERROR; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) @@ -3140,6 +2905,9 @@ YY_STACK_PRINT (yyss, yyssp); } + if (yyn == YYFINAL) + YYACCEPT; + *++yyvsp = yylval; @@ -3164,7 +2932,7 @@ yyresult = 1; goto yyreturn; -#if !defined(yyoverflow) || YYERROR_VERBOSE +#ifndef yyoverflow /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ @@ -3175,14 +2943,9 @@ #endif yyreturn: - if (yychar != YYEMPTY) - { - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = YYTRANSLATE (yychar); - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval, p); - } + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval, p); /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); @@ -3206,8 +2969,6 @@ } - -/* Line 2067 of yacc.c */ #line 788 "mapparser.y" @@ -3258,6 +3019,8 @@ case MS_TOKEN_COMPARISON_RE: token = RE; break; case MS_TOKEN_COMPARISON_IRE: token = IRE; break; + case MS_TOKEN_COMPARISON_IN: token = IN; break; + case MS_TOKEN_COMPARISON_INTERSECTS: token = INTERSECTS; break; case MS_TOKEN_COMPARISON_DISJOINT: token = DISJOINT; break; case MS_TOKEN_COMPARISON_TOUCHES: token = TOUCHES; break; diff -Nru mapserver-7.2.1/mapparser.h mapserver-7.2.2/mapparser.h --- mapserver-7.2.1/mapparser.h 2018-10-01 15:11:13.000000000 +0000 +++ mapserver-7.2.2/mapparser.h 2019-02-19 15:47:37.000000000 +0000 @@ -1,21 +1,24 @@ -/* A Bison parser, made by GNU Bison 2.5. */ +/* A Bison parser, made by GNU Bison 2.3. */ -/* Bison interface for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. - - This program is free software: you can redistribute it and/or modify +/* Skeleton interface for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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 3 of the License, or - (at your option) any later version. - + the Free Software Foundation; either version 2, 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 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 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, see . */ + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -26,11 +29,10 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ - /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE @@ -136,27 +138,21 @@ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE -{ - -/* Line 2068 of yacc.c */ #line 30 "mapparser.y" - +{ double dblval; int intval; char *strval; struct tm tmval; shapeObj *shpval; - - - -/* Line 2068 of yacc.c */ -#line 154 "mapparser.h" -} YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 +} +/* Line 1529 of yacc.c. */ +#line 151 "/Users/sdlime/mapserver/sdlime/mapserver/mapparser.h" + YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 #endif - diff -Nru mapserver-7.2.1/mapparser.y mapserver-7.2.2/mapparser.y --- mapserver-7.2.1/mapparser.y 2018-10-01 15:11:13.000000000 +0000 +++ mapserver-7.2.2/mapparser.y 2019-02-19 15:47:37.000000000 +0000 @@ -834,6 +834,8 @@ case MS_TOKEN_COMPARISON_RE: token = RE; break; case MS_TOKEN_COMPARISON_IRE: token = IRE; break; + case MS_TOKEN_COMPARISON_IN: token = IN; break; + case MS_TOKEN_COMPARISON_INTERSECTS: token = INTERSECTS; break; case MS_TOKEN_COMPARISON_DISJOINT: token = DISJOINT; break; case MS_TOKEN_COMPARISON_TOUCHES: token = TOUCHES; break; diff -Nru mapserver-7.2.1/mappostgis.c mapserver-7.2.2/mappostgis.c --- mapserver-7.2.1/mappostgis.c 2018-10-01 15:11:13.000000000 +0000 +++ mapserver-7.2.2/mappostgis.c 2019-02-19 15:47:37.000000000 +0000 @@ -4032,7 +4032,7 @@ if(layer->debug >= 2) msDebug("msPostGISLayerTranslateFilter. There are tokens to process... \n"); node = filter->tokens; - while (node != NULL) { + while (node != NULL) { /* ** Do any token caching/tracking here, easier to have it in one place. @@ -4040,8 +4040,9 @@ if(node->token == MS_TOKEN_BINDING_TIME) { bindingToken = node->token; } else if(node->token == MS_TOKEN_COMPARISON_EQ || node->token == MS_TOKEN_COMPARISON_NE || - node->token == MS_TOKEN_COMPARISON_GT || node->token == MS_TOKEN_COMPARISON_GE || - node->token == MS_TOKEN_COMPARISON_LT || node->token == MS_TOKEN_COMPARISON_LE) { + node->token == MS_TOKEN_COMPARISON_GT || node->token == MS_TOKEN_COMPARISON_GE || + node->token == MS_TOKEN_COMPARISON_LT || node->token == MS_TOKEN_COMPARISON_LE || + node->token == MS_TOKEN_COMPARISON_IN) { comparisonToken = node->token; } @@ -4066,13 +4067,38 @@ msFree(snippet); break; case MS_TOKEN_LITERAL_STRING: - strtmpl = "'%s'"; - stresc = msPostGISEscapeSQLParam(layer, node->tokenval.strval); - snippet = (char *) msSmallMalloc(strlen(strtmpl) + strlen(stresc)); - sprintf(snippet, strtmpl, stresc); - native_string = msStringConcatenate(native_string, snippet); - msFree(snippet); - msFree(stresc); + + if(comparisonToken == MS_TOKEN_COMPARISON_IN) { /* issue 5490 */ + char **strings=NULL; + int i, nstrings=0; + + strings = msStringSplit(node->tokenval.strval, ',', &nstrings); + if(nstrings > 0) { + native_string = msStringConcatenate(native_string, "("); + for(i=0; itokenval.strval); + snippet = (char *) msSmallMalloc(strlen(strtmpl) + strlen(stresc)); + sprintf(snippet, strtmpl, stresc); + native_string = msStringConcatenate(native_string, snippet); + msFree(snippet); + msFree(stresc); + } + break; case MS_TOKEN_LITERAL_TIME: { snippet = (char *) msSmallMalloc(512); diff -Nru mapserver-7.2.1/mapscript/csharp/CMakeLists.txt mapserver-7.2.2/mapscript/csharp/CMakeLists.txt --- mapserver-7.2.1/mapscript/csharp/CMakeLists.txt 2018-10-01 15:11:13.000000000 +0000 +++ mapserver-7.2.2/mapscript/csharp/CMakeLists.txt 2019-02-19 15:47:37.000000000 +0000 @@ -62,6 +62,4 @@ COMMENT "Compiling c# source files" ) -#get_target_property(LOC_MAPSCRIPT_LIB ${SWIG_MODULE_csharpmapscript_REAL_NAME} LOCATION) -#install(FILES ${LOC_MAPSCRIPT_LIB} DESTINATION lib) diff -Nru mapserver-7.2.1/mapscript/java/CMakeLists.txt mapserver-7.2.2/mapscript/java/CMakeLists.txt --- mapserver-7.2.1/mapscript/java/CMakeLists.txt 2018-10-01 15:11:13.000000000 +0000 +++ mapserver-7.2.2/mapscript/java/CMakeLists.txt 2019-02-19 15:47:37.000000000 +0000 @@ -1,23 +1,28 @@ -FIND_PACKAGE(SWIG REQUIRED) -INCLUDE(${SWIG_USE_FILE}) +find_package(SWIG REQUIRED) +include(${SWIG_USE_FILE}) -FIND_PACKAGE(JNI) -FIND_PACKAGE(Java) +find_package(JNI) +find_package(Java) if(NOT JNI_INCLUDE_DIRS OR NOT Java_JAVAC_EXECUTABLE OR NOT Java_JAR_EXECUTABLE) message(SEND_ERROR "Could not find required Java componenents. Try setting the JAVA_HOME environment variable (required on e.g. Ubuntu)") endif(NOT JNI_INCLUDE_DIRS OR NOT Java_JAVAC_EXECUTABLE OR NOT Java_JAR_EXECUTABLE) -INCLUDE_DIRECTORIES(${JNI_INCLUDE_DIRS}) +include_directories(${JNI_INCLUDE_DIRS}) include_directories(${PROJECT_SOURCE_DIR}/mapscript/swiginc) include_directories(${PROJECT_SOURCE_DIR}/mapscript/) include_directories(${PROJECT_SOURCE_DIR}/mapscript/java) -SET (CMAKE_SWIG_OUTDIR "${CMAKE_CURRENT_BINARY_DIR}/edu/umn/gis/mapscript") -SET(CMAKE_SWIG_FLAGS -package edu.umn.gis.mapscript) -SWIG_ADD_MODULE(javamapscript java ../mapscript.i) +set (CMAKE_SWIG_OUTDIR "${CMAKE_CURRENT_BINARY_DIR}/edu/umn/gis/mapscript") +set(CMAKE_SWIG_FLAGS -package edu.umn.gis.mapscript) -SWIG_LINK_LIBRARIES(javamapscript ${MAPSERVER_LIBMAPSERVER}) +if (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} VERSION_GREATER 3.7) + swig_add_library(javamapscript TYPE MODULE LANGUAGE java SOURCES ../mapscript.i) +else () + swig_add_module(javamapscript java ../mapscript.i) +endif () -ADD_CUSTOM_COMMAND(TARGET javamapscript +swig_link_libraries(javamapscript ${MAPSERVER_LIBMAPSERVER}) + +add_custom_command(TARGET javamapscript WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} POST_BUILD COMMAND ${Java_JAVAC_EXECUTABLE} edu/umn/gis/mapscript/*.java @@ -25,6 +30,5 @@ COMMENT "Compiling java source files, creating mapscript.jar" ) -get_target_property(LOC_MAPSCRIPT_LIB ${SWIG_MODULE_javamapscript_REAL_NAME} LOCATION) -install(FILES ${LOC_MAPSCRIPT_LIB} DESTINATION ${CMAKE_INSTALL_LIBDIR}) - +set(mapscript_files $) +install(FILES ${mapscript_files} DESTINATION ${CMAKE_INSTALL_LIBDIR}) diff -Nru mapserver-7.2.1/mapscript/perl/CMakeLists.txt mapserver-7.2.2/mapscript/perl/CMakeLists.txt --- mapserver-7.2.1/mapscript/perl/CMakeLists.txt 2018-10-01 15:11:13.000000000 +0000 +++ mapserver-7.2.2/mapscript/perl/CMakeLists.txt 2019-02-19 15:47:37.000000000 +0000 @@ -1,15 +1,20 @@ -FIND_PACKAGE(SWIG REQUIRED) -INCLUDE(${SWIG_USE_FILE}) -FIND_PACKAGE(Perl REQUIRED) -FIND_PACKAGE(PerlLibs REQUIRED) +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") -INCLUDE_DIRECTORIES(${PERL_INCLUDE_PATH}) +include_directories(${PERL_INCLUDE_PATH}) include_directories(${PROJECT_SOURCE_DIR}/mapscript/swiginc) include_directories(${PROJECT_SOURCE_DIR}/mapscript/) add_definitions(${PERL_EXTRA_C_FLAGS}) -SET(CMAKE_SWIG_FLAGS -shadow -w314) +set(CMAKE_SWIG_FLAGS -shadow -w314) include_directories(${PROJECT_SOURCE_DIR}/mapscript/perl) -SWIG_ADD_MODULE(perlmapscript perl5 ../mapscript.i) + +if (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} VERSION_GREATER 3.7) + swig_add_library(perlmapscript TYPE MODULE LANGUAGE perl5 SOURCES ../mapscript.i) +else () + swig_add_module(perlmapscript perl5 ../mapscript.i) +endif () SWIG_LINK_LIBRARIES(perlmapscript ${PERL_LIBRARIES} ${MAPSERVER_LIBMAPSERVER}) set_target_properties(perlmapscript PROPERTIES OUTPUT_NAME mapscript) @@ -18,8 +23,5 @@ set_target_properties(perlmapscript PROPERTIES SUFFIX ".bundle") 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 $ DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}/auto/mapscript) +install(FILES $/mapscript.pm DESTINATION ${CUSTOM_PERL_SITE_ARCH_DIR}) diff -Nru mapserver-7.2.1/mapscript/ruby/CMakeLists.txt mapserver-7.2.2/mapscript/ruby/CMakeLists.txt --- mapserver-7.2.1/mapscript/ruby/CMakeLists.txt 2018-10-01 15:11:13.000000000 +0000 +++ mapserver-7.2.2/mapscript/ruby/CMakeLists.txt 2019-02-19 15:47:37.000000000 +0000 @@ -1,20 +1,26 @@ -FIND_PACKAGE(SWIG REQUIRED) -INCLUDE(${SWIG_USE_FILE}) -FIND_PACKAGE(Ruby REQUIRED) -INCLUDE_DIRECTORIES(${RUBY_INCLUDE_DIRS}) +find_package(SWIG REQUIRED) +include(${SWIG_USE_FILE}) +find_package(Ruby REQUIRED) +include_directories(${RUBY_INCLUDE_DIRS}) include_directories(${PROJECT_SOURCE_DIR}/mapscript/swiginc) include_directories(${PROJECT_SOURCE_DIR}/mapscript/) include_directories(${PROJECT_SOURCE_DIR}/mapscript/ruby) -SWIG_ADD_MODULE(rubymapscript ruby ../mapscript.i) -SWIG_LINK_LIBRARIES(rubymapscript ${RUBY_LIBRARY} ${MAPSERVER_LIBMAPSERVER}) +if (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} VERSION_GREATER 3.7) + swig_add_library(rubymapscript TYPE MODULE LANGUAGE ruby SOURCES ../mapscript.i) +else () + swig_add_module(rubymapscript ruby ../mapscript.i) +endif () + +swig_link_libraries(rubymapscript ${RUBY_LIBRARY} ${MAPSERVER_LIBMAPSERVER}) set_target_properties(${SWIG_MODULE_rubymapscript_REAL_NAME} PROPERTIES PREFIX "") set_target_properties(${SWIG_MODULE_rubymapscript_REAL_NAME} PROPERTIES OUTPUT_NAME mapscript) + if(APPLE) - set_target_properties(${SWIG_MODULE_rubymapscript_REAL_NAME} PROPERTIES SUFFIX ".bundle") + set_target_properties(${SWIG_MODULE_rubymapscript_REAL_NAME} PROPERTIES SUFFIX ".bundle") 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}) diff -Nru mapserver-7.2.1/mapwms.c mapserver-7.2.2/mapwms.c --- mapserver-7.2.1/mapwms.c 2018-10-01 15:11:13.000000000 +0000 +++ mapserver-7.2.2/mapwms.c 2019-02-19 15:47:37.000000000 +0000 @@ -323,7 +323,11 @@ char **paszFilters = NULL; FilterEncodingNode *psNode = NULL; - if (!map || !filter || strlen(filter)==0) + // Empty filter should be ignored + if (!filter || strlen(filter) == 0) + return MS_SUCCESS; + + if (!map) return MS_FAILURE; /* Count number of requested layers @@ -360,7 +364,7 @@ } if (numlayers != numfilters) { - msSetError(MS_WFSERR, "Wrong number of filter elements, one filter must be specified for each requested layer.", + msSetError(MS_WMSERR, "Wrong number of filter elements, one filter must be specified for each requested layer.", "msWMSApplyFilter" ); return msWMSException(map, version, "InvalidParameterValue", wms_exception_format); } @@ -454,7 +458,7 @@ errorObj* ms_error = msGetErrorObj(); if(ms_error->code != MS_NOTFOUND) { - msSetError(MS_WFSERR, "FLTApplyFilterToLayer() failed", "msWFSGetFeature()"); + msSetError(MS_WMSERR, "FLTApplyFilterToLayer() failed", "msWMSApplyFilter()"); FLTFreeFilterEncodingNode( psNode ); return msWMSException(map, version, "InvalidParameterValue", wms_exception_format); } diff -Nru mapserver-7.2.1/README.rst mapserver-7.2.2/README.rst --- mapserver-7.2.1/README.rst 2018-10-01 15:11:13.000000000 +0000 +++ mapserver-7.2.2/README.rst 2019-02-19 15:47:37.000000000 +0000 @@ -69,7 +69,7 @@ :: - Copyright (c) 2008-2018 Open Source Geospatial Foundation. + Copyright (c) 2008-2019 Open Source Geospatial Foundation. Copyright (c) 1996-2008 Regents of the University of Minnesota. Permission is hereby granted, free of charge, to any person obtaining a copy