[gdal] 02/05: Imported Upstream version 2.0.1~rc1+dfsg

Sebastiaan Couwenberg sebastic at moszumanska.debian.org
Wed Sep 16 21:03:32 UTC 2015


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to branch experimental-2.0
in repository gdal.

commit a74a7a64b58e0442d60e1f13cb24173b4dc333d1
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Wed Sep 16 21:40:48 2015 +0200

    Imported Upstream version 2.0.1~rc1+dfsg
---
 GDALmake.opt.in                                    |   2 +-
 NEWS                                               | 129 +++++++++++++
 VERSION                                            |   2 +-
 alg/gdal_rpc.cpp                                   |  70 +++++--
 alg/gdalgrid.cpp                                   | 126 ++++++++++++-
 alg/gdalgridavx.cpp                                |  44 +----
 alg/gdalgridsse.cpp                                |  67 +------
 alg/gdalsievefilter.cpp                            |  36 ++--
 apps/gdalbuildvrt.cpp                              |  28 +--
 apps/gdaldem.cpp                                   |  43 ++++-
 apps/gdalinfo.c                                    |  10 +-
 apps/gdalserver.c                                  |   9 +-
 doc/gdal_datamodel.dox                             |   4 +-
 frmts/aaigrid/aaigriddataset.cpp                   |  18 +-
 frmts/ecw/ecwasyncreader.cpp                       |   2 +-
 frmts/ecw/ecwdataset.cpp                           |  76 +++++++-
 frmts/envisat/EnvisatFile.c                        |  10 +-
 frmts/frmt_various.html                            |  11 +-
 frmts/georaster/GNUmakefile                        |   6 +-
 frmts/gtiff/geotiff.cpp                            |  24 ++-
 frmts/hdf4/GNUmakefile                             |   2 +-
 frmts/hdf5/GNUmakefile                             |   8 +
 frmts/hf2/hf2dataset.cpp                           |  10 +-
 frmts/hfa/hfadataset.cpp                           |  61 +++---
 frmts/jp2kak/jp2kak.lst                            |   3 +-
 frmts/jp2kak/jp2kakdataset.cpp                     | 115 ++++++++----
 frmts/jp2kak/makefile.vc                           |  11 +-
 frmts/jpeg2000/jpeg2000_vsil_io.cpp                |   6 +-
 frmts/jpeg2000/jpeg2000_vsil_io.h                  |   4 +-
 frmts/nitf/ecrgtocdataset.cpp                      | 200 ++++++++++++++------
 frmts/northwood/northwood.cpp                      |   8 +-
 frmts/pcidsk/sdk/channel/cpcidskchannel.cpp        |   8 +-
 frmts/pcidsk/sdk/channel/ctiledchannel.cpp         |   4 +-
 frmts/pcidsk/sdk/segment/cpcidskbitmap.cpp         |   4 +-
 frmts/pdf/gdal_pdf.h                               |   1 +
 frmts/pdf/makefile.vc                              |   8 +-
 frmts/pdf/pdfdataset.cpp                           |  13 +-
 frmts/pdf/pdfreadvectors.cpp                       |  17 +-
 frmts/pds/pdsdataset.cpp                           |  11 +-
 frmts/postgisraster/postgisrasterdataset.cpp       |   9 +
 frmts/rik/rikdataset.cpp                           |  17 +-
 frmts/vrt/vrtdataset.cpp                           |  72 ++++---
 frmts/vrt/vrtsourcedrasterband.cpp                 |   8 +-
 frmts/vrt/vrtwarped.cpp                            |  53 ++++--
 gcore/gdal_version.h                               |   6 +-
 gcore/gdalproxypool.cpp                            |   9 +-
 gcore/mdreader/reader_pleiades.cpp                 |  23 ++-
 gcore/overview.cpp                                 |  41 +++-
 gcore/rasterio.cpp                                 |  12 +-
 man/man1/gdal-config.1                             |  23 +--
 man/man1/gdal2tiles.1                              |  51 +++--
 man/man1/gdal_calc.1                               |  11 +-
 man/man1/gdal_contour.1                            |  35 ++--
 man/man1/gdal_edit.1                               |  45 +++--
 man/man1/gdal_fillnodata.1                         |  33 ++--
 man/man1/gdal_grid.1                               | 141 +++++++-------
 man/man1/gdal_merge.1                              |  45 +++--
 man/man1/gdal_polygonize.1                         |  35 ++--
 man/man1/gdal_proximity.1                          |  37 ++--
 man/man1/gdal_rasterize.1                          |  63 +++----
 man/man1/gdal_retile.1                             |  33 ++--
 man/man1/gdal_sieve.1                              |  33 ++--
 man/man1/gdal_translate.1                          |  75 ++++----
 man/man1/gdal_utilities.1                          | 113 ++++++-----
 man/man1/gdaladdo.1                                |  57 +++---
 man/man1/gdalbuildvrt.1                            |  59 +++---
 man/man1/gdalcompare.1                             |  21 +--
 man/man1/gdaldem.1                                 |  89 +++++----
 man/man1/gdalinfo.1                                |  77 ++++----
 man/man1/gdallocationinfo.1                        |  57 +++---
 man/man1/gdalmanage.1                              |  29 ++-
 man/man1/gdalmove.1                                |  23 +--
 man/man1/gdalsrsinfo.1                             |  15 +-
 man/man1/gdaltindex.1                              |  39 ++--
 man/man1/gdaltransform.1                           |  41 ++--
 man/man1/gdalwarp.1                                | 119 ++++++------
 man/man1/nearblack.1                               |  41 ++--
 man/man1/ogr2ogr.1                                 | 119 ++++++------
 man/man1/ogr_utilities.1                           |   9 +-
 man/man1/ogrinfo.1                                 |  57 +++---
 man/man1/ogrlineref.1                              |  31 ++-
 man/man1/ogrtindex.1                               |  31 ++-
 man/man1/pct2rgb.1                                 |  25 ++-
 man/man1/rgb2pct.1                                 |  25 ++-
 nmake.opt                                          |   5 +-
 ogr/ogr_fromepsg.cpp                               |   8 +-
 ogr/ogr_srs_esri.cpp                               |  72 +++++--
 ogr/ogrsf_frmts/cartodb/ogrcartodbtablelayer.cpp   |  25 ++-
 ogr/ogrsf_frmts/csv/ogrcsvdatasource.cpp           |  45 +++--
 ogr/ogrsf_frmts/csv/ogrcsvlayer.cpp                |   7 +-
 ogr/ogrsf_frmts/dxf/ogr_autocad_services.cpp       |  12 +-
 ogr/ogrsf_frmts/filegdb/GNUmakefile                |   8 +
 ogr/ogrsf_frmts/generic/ogr_gensql.cpp             |  12 +-
 ogr/ogrsf_frmts/geojson/libjson/GNUmakefile        |   3 +-
 .../mssqlspatial/ogrmssqlspatiallayer.cpp          |  10 +-
 ogr/ogrsf_frmts/oci/GNUmakefile                    |   6 +-
 ogr/ogrsf_frmts/pg/GNUmakefile                     |  10 +-
 ogr/ogrsf_frmts/pg/ogrpgdatasource.cpp             |   6 +-
 ogr/ogrsf_frmts/shape/ogrshapedriver.cpp           |  12 +-
 ogr/ogrsf_frmts/sosi/fyba_melding.cpp              |   4 +-
 ogr/ogrsf_frmts/sqlite/ogrsqliteselectlayer.cpp    |  31 +--
 ogr/ogrsf_frmts/sqlite/ogrsqlitetablelayer.cpp     |   6 +-
 ogr/ogrsf_frmts/walk/ogrwalklayer.cpp              |   6 +-
 ogr/ogrsf_frmts/xplane/drv_xplane.html             |  42 ++---
 ogr/ogrsf_frmts/xplane/ogr_xplane_apt_reader.cpp   |  40 ++--
 ogr/ogrsf_frmts/xplane/ogr_xplane_nav_reader.cpp   |  10 +-
 ogr/swq.cpp                                        |   7 +-
 port/cpl_port.h                                    |   8 +-
 port/cpl_time.h                                    |   4 +-
 port/cpl_vsi_mem.cpp                               |  31 +--
 port/cpl_vsi_virtual.h                             |   4 +-
 port/cpl_vsil_abstract_archive.cpp                 |  23 ++-
 port/cpl_vsil_stdin.cpp                            |  11 +-
 swig/include/perl/gdal_perl.i                      |  66 ++++++-
 swig/include/perl/ogr_perl.i                       |  33 ++--
 swig/include/perl/typemaps_perl.i                  |   2 +-
 swig/include/python/ogr_python.i                   |  12 +-
 swig/perl/GNUmakefile                              |   2 +
 swig/perl/MANIFEST                                 |  10 +-
 swig/perl/META.yml                                 |  10 -
 swig/perl/Makefile.PL                              | 207 ++++++++++++---------
 swig/perl/gdal_wrap.cpp                            |  16 +-
 swig/perl/index.dox                                |   2 +-
 swig/perl/lib/Geo/GDAL.pm                          |  66 ++++++-
 swig/perl/lib/Geo/OGR.dox                          |   2 +-
 swig/perl/lib/Geo/OGR.pm                           |  25 ++-
 swig/perl/t/00.t                                   |   4 +-
 swig/perl/t/gdal.t                                 |   1 +
 swig/perl/t/ogr.t                                  |   1 +
 swig/perl/t/osr.t                                  |   1 +
 swig/python/README.txt                             |   2 +-
 swig/python/extensions/gdal_array_wrap.cpp         |   2 +-
 swig/python/extensions/gdal_wrap.cpp               |   2 +-
 swig/python/extensions/gdalconst_wrap.c            |   2 +-
 swig/python/extensions/ogr_wrap.cpp                |   2 +-
 swig/python/extensions/osr_wrap.cpp                |   2 +-
 swig/python/osgeo/ogr.py                           |  10 +-
 swig/python/scripts/gdal_merge.py                  |  46 +++--
 swig/python/setup.py                               |   2 +-
 139 files changed, 2514 insertions(+), 1682 deletions(-)

diff --git a/GDALmake.opt.in b/GDALmake.opt.in
index ca02225..aeeda92 100644
--- a/GDALmake.opt.in
+++ b/GDALmake.opt.in
@@ -89,7 +89,7 @@ GDAL_INCLUDE	=	-I$(GDAL_ROOT)/port -I$(GDAL_ROOT)/gcore \
 # libtool targets and help variables
 LIBGDAL	:=		libgdal.la
 LIBGDAL_CURRENT	:=	20
-LIBGDAL_REVISION	:=	0
+LIBGDAL_REVISION	:=	1
 LIBGDAL_AGE	:=	0
 
 # native build targets and variables
diff --git a/NEWS b/NEWS
index 9860b00..bd2bdb0 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,132 @@
+= GDAL/OGR 2.0.1 Release Notes = 
+
+The 2.0.1 release is a bug fix release.
+
+== Build ==
+ * Build support for Kakadu 7.5 (note: require KAKOBJDIR and KAKFLAGS to be defined in nmake.opt) (#6052)
+
+== Build(Unix) ==
+ * Add plugin option for GeoRaster, HDF4, HDF5, FileGDB, OCI and PG drivers (#6012)
+
+== Port ==
+ * Fix CPL_LSBINT16PTR() and CPL_LSBINT32PTR() to work with non-byte pointer (#6090)
+ * /vsistdin/: fix caching of first 1MB / VRT driver: read XML content from /vsistdin/ in a streaming compatible way (#6061)
+ * /vsimem/: implement append mode (#6049)
+ * /vsizip/: avoid returning the previous file list of an already opened .zip if it has changed afterwards (#6005)
+ * cpl_config.h.in: set svn:eol-style LF to avoid issues with msys mingw (#6013)
+
+== GDAL Core ==
+ * Honour NBITS metadata item when doing RasterIO() with non-nearest resampling (#6024)
+
+== GDAL Algorithms ==
+ * Sieve filter: fix crash on nodata polygons (#6096)
+ * Fix crash on gdalgrid when compiled with ICC when AVX isn't available at runtime (#6089)
+ * RPC: fix off-by-half pixel computation of (pixel, line), and in bilinear and bicubic RPC DEM interpolation; fix off-by-one pixel registration for Pleaiades RPC (#5993)
+
+== Utilities ==
+ * gdalinfo: workaround bug in released proj versions on datasets with a SRS with a vertical shift grid (#6083)
+ * gdalbuildvrt: fix potential crash when using -b switch (#6095)
+ * gdalserver: fix compilation with recent GNU libc (such as in Arch Linux) (#6073)
+ * gdaldem: correctly deal with NaN as nodata value (#6066)
+ * gdal_merge.py: takes again into account -n flag (#6067)
+
+== GDAL drivers ==
+
+AAIGrid:
+ * When writing with floating-point values, ensure at least one value has a decimal point to avoid issues with some readers (#6060)
+
+ECRG driver:
+ * change subdataset definition to make sure that they only consist of frames of same scale (#6043)
+
+GTiff driver:
+ * Fix GTiffDataset::IsBlockAvailable() wrong behaviour when compiling against internal libtiff, when a BigTIFF file has a TileByteCounts with LONG/4-byte counts and not LONG8 (#6001)
+
+HF2 driver:
+ * fix reading side of the driver to work on architectures where char is unsigned, like PPC or ARM (#6082)
+
+HFA driver:
+ * when reading projection, preserve EPSG code if AutoIdentifyEPSG() identified the SRS, even if a PE string is present (#6079)
+
+JP2ECW driver:
+* Honour psExtraArg->eResampleAlg when upsampling (#6022)
+
+JP2KAK driver:
+ * Honour psExtraArg->eResampleAlg when upsampling (#6022)
+
+Northwood driver:
+ * fix computation of intermediate color table values on non-Intel platforms (#6091)
+
+PDF driver:
+ * workaround a bug of PoDoFo 0.9.0 by avoiding loading of vector content in raster-only mode (doesn't prevent the crash if reading the vector layers) (#6069)
+
+PDS driver:
+ * fix nodata value for UInt16 to be 0 (#6064)
+
+PostgisRaster driver:
+ * avoid Identify() to recognize OGR PostgreSQL connection strings with schemas option and cause loud 'QuietDelete' (#6034)
+
+Rasterlite driver:
+
+RIK driver:
+ * fix Identify() method to recognize again non-RIK3 RIK datasets (#6078)
+
+VRT driver:
+ * Make GetDefaultHistogram() on a sourced raster band save the result in the VRT (#6088)
+ * VRT warp: fix crash with implicit overviews and destination alpha band (#6081)
+ * VRTDataset::GetSingleSimpleSource(): check there's a single source (#6025)
+ * Fix crash on Windows and Mac that may occur with 2 levels of VRT opened in non-shared mode (#6017)
+
+== OGR core ==
+ * OGR SQL: do not silently skip NULL values in the first records when evaluating a SELECT DISTINCT (#6020)
+
+== OGRSpatialReference == 
+ * morphToESRI(): use GCS_WGS_1972 as GCS name for EPSG:4322 (#6027)
+ * EPSGGetPCSInfo(): use pcs.override.csv in priority over pcs.csv to read projection name, UOM, UOMAngle, GeogCS, etc... (#6026)
+ * Correctly transform Mercator_2SP and _1SP to ESRI Mercator, and back from ESRI Mercator to Mercator_2SP (#4861)
+
+== OGR Utilities == 
+
+CSV driver:
+ * Fix issues with leading single quote, and missing first line after ResetReading(), when parsing allCountries.txt (#6087)
+ * fix detection of TAB delimiter in allCountries.csv when the first line has a comma (#6086)
+
+CartoDB driver:
+ * fix GetNextFeature() on a newly create table (#6109)
+ * fix invalid read of memory in OGRCARTODBTableLayer::GetLayerDefnInternal() (#6007)
+
+DXF driver:
+ * make it compatible with C++11/C++14 (#6002)
+
+GeoJSON driver:
+ * Internal libjson: fix for C11 compatibility (fix runtime crash, #6008)
+
+PG driver:
+ * Fix 2.0 regression when overwriting several existing PostGIS layers with ogr2ogr (#6018)
+
+Shapefile driver:
+ * accept opening standalone .dbf files whose header length is not a multiple of 32 bytes (#6035)
+
+SQLite/Spatialite driver:
+ * Fix issue with consecutive identical characters in layer name with ExecuteSQL() (#6107)
+ * Fix crash on GetLayerByName('non_existing_table(geom_column)') (#6103)
+ * fix heuristics in OGRSQLiteSelectLayer::GetExtent() to not be used when there's a sub SELECT (#6062)
+
+XPlane driver:
+ * extend ICAO identifiers to 5 digits (#6003)
+
+== SWIG Language Bindings ==
+
+Perl bindings:
+ * Add basic POD to GDAL.pm.
+ * Add some basic module info for CPAN.
+ * Add missing files to MANIFEST
+ * Use strict and warnings in overridden constructors.
+ * string formatting in croak (#6050)
+ * Use standard C comments in swig bindings (#6039)
+
+Python bindings:
+ * Fix build with SWIG 3.0.6 (#6045)
+
 = GDAL/OGR 2.0 Release Notes =
 
 == In a nutshell... ==
diff --git a/VERSION b/VERSION
index 227cea2..38f77a6 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.0.0
+2.0.1
diff --git a/alg/gdal_rpc.cpp b/alg/gdal_rpc.cpp
index 812e5e2..9d84a7e 100644
--- a/alg/gdal_rpc.cpp
+++ b/alg/gdal_rpc.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: gdal_rpc.cpp 29207 2015-05-18 17:23:45Z mloskot $
+ * $Id: gdal_rpc.cpp 29417 2015-06-22 08:30:54Z rouault $
  *
  * Project:  Image Warper
  * Purpose:  Implements a rational polynomail (RPC) based transformer. 
@@ -34,7 +34,7 @@
 #include "cpl_minixml.h"
 #include "gdal_mdreader.h"
 
-CPL_CVSID("$Id: gdal_rpc.cpp 29207 2015-05-18 17:23:45Z mloskot $");
+CPL_CVSID("$Id: gdal_rpc.cpp 29417 2015-06-22 08:30:54Z rouault $");
 
 CPL_C_START
 CPLXMLNode *GDALSerializeRPCTransformer( void *pTransformArg );
@@ -213,9 +213,11 @@ static void RPCTransformPoint( GDALRPCInfo *psRPC,
     
     dfResultY = RPCEvaluate( adfTerms, psRPC->adfLINE_NUM_COEFF )
         / RPCEvaluate( adfTerms, psRPC->adfLINE_DEN_COEFF );
-    
-    *pdfPixel = dfResultX * psRPC->dfSAMP_SCALE + psRPC->dfSAMP_OFF;
-    *pdfLine = dfResultY * psRPC->dfLINE_SCALE + psRPC->dfLINE_OFF;
+   
+    // RPCs are using the center of upper left pixel = 0,0 convention
+    // convert to top left corner = 0,0 convention used in GDAL
+     *pdfPixel = dfResultX * psRPC->dfSAMP_SCALE + psRPC->dfSAMP_OFF + 0.5;
+    *pdfLine = dfResultY * psRPC->dfLINE_SCALE + psRPC->dfLINE_OFF + 0.5;
 }
 
 /************************************************************************/
@@ -694,14 +696,18 @@ int GDALRPCGetDEMHeight( GDALRPCTransformInfo *psTransform,
 
     int bands[1] = {1};
 
-    int dX = int(dfX);
-    int dY = int(dfY);
     double dfDEMH(0);
-    double dfDeltaX = dfX - dX;
-    double dfDeltaY = dfY - dY;
-    
+
     if(psTransform->eResampleAlg == DRA_Cubic)
     {
+        // convert from upper left corner of pixel coordinates to center of pixel coordinates:
+        dfX -= 0.5;
+        dfY -= 0.5;
+        int dX = int(dfX);
+        int dY = int(dfY);
+        double dfDeltaX = dfX - dX;
+        double dfDeltaY = dfY - dY;
+
         int dXNew = dX - 1;
         int dYNew = dY - 1;
         if (!(dXNew >= 0 && dYNew >= 0 && dXNew + 4 <= nRasterXSize && dYNew + 4 <= nRasterYSize))
@@ -750,6 +756,14 @@ int GDALRPCGetDEMHeight( GDALRPCTransformInfo *psTransform,
     }
     else if(psTransform->eResampleAlg == DRA_Bilinear)
     {
+        // convert from upper left corner of pixel coordinates to center of pixel coordinates:
+        dfX -= 0.5;
+        dfY -= 0.5;
+        int dX = int(dfX);
+        int dY = int(dfY);
+        double dfDeltaX = dfX - dX;
+        double dfDeltaY = dfY - dY;
+
         if (!(dX >= 0 && dY >= 0 && dX + 2 <= nRasterXSize && dY + 2 <= nRasterYSize))
         {
             return FALSE;
@@ -788,6 +802,8 @@ int GDALRPCGetDEMHeight( GDALRPCTransformInfo *psTransform,
     }
     else
     {
+        int dX = (int) (dfX);
+        int dY = (int) (dfY);
         if (!(dX >= 0 && dY >= 0 && dX < nRasterXSize && dY < nRasterYSize))
         {
             return FALSE;
@@ -846,23 +862,24 @@ static int GDALRPCTransformWholeLineWithDEM( GDALRPCTransformInfo *psTransform,
     double dfNoDataValue = 0;
     dfNoDataValue = psTransform->poDS->GetRasterBand(1)->GetNoDataValue( &bGotNoDataValue );
 
+    // dfY in pixel center convention
     double dfY = psTransform->adfDEMReverseGeoTransform[3] +
-                        padfY[0] * psTransform->adfDEMReverseGeoTransform[5];
+                        padfY[0] * psTransform->adfDEMReverseGeoTransform[5] - 0.5;
     int nY = int(dfY);
     double dfDeltaY = dfY - nY;
 
     for( i = 0; i < nPointCount; i++ )
     {
-        double dfX = psTransform->adfDEMReverseGeoTransform[0] +
-                        padfX[i] * psTransform->adfDEMReverseGeoTransform[1];
-
         double dfDEMH(0);
 
-        int nX = int(dfX);
-        double dfDeltaX = dfX - nX;
-
         if(psTransform->eResampleAlg == DRA_Cubic)
         {
+            // dfX in pixel center convention
+            double dfX = psTransform->adfDEMReverseGeoTransform[0] +
+                            padfX[i] * psTransform->adfDEMReverseGeoTransform[1] - 0.5;
+            int nX = int(dfX);
+            double dfDeltaX = dfX - nX;
+
             int nXNew = nX - 1;
 
             double dfSumH(0), dfSumWeight(0);
@@ -903,6 +920,11 @@ static int GDALRPCTransformWholeLineWithDEM( GDALRPCTransformInfo *psTransform,
         }
         else if(psTransform->eResampleAlg == DRA_Bilinear)
         {
+            // dfX in pixel center convention
+            double dfX = psTransform->adfDEMReverseGeoTransform[0] +
+                            padfX[i] * psTransform->adfDEMReverseGeoTransform[1] - 0.5;
+            int nX = int(dfX);
+            double dfDeltaX = dfX - nX;
 
             //bilinear interpolation
             double adfElevData[4];
@@ -963,6 +985,10 @@ static int GDALRPCTransformWholeLineWithDEM( GDALRPCTransformInfo *psTransform,
         }
         else
         {
+            double dfX = psTransform->adfDEMReverseGeoTransform[0] +
+                            padfX[i] * psTransform->adfDEMReverseGeoTransform[1];
+            int nX = int(dfX);
+
             dfDEMH = padfDEMBuffer[nX - nXLeft];
             if( bGotNoDataValue && ARE_REAL_EQUAL(dfNoDataValue, dfDEMH) )
             {
@@ -1090,6 +1116,14 @@ int GDALRPCTransform( void *pTransformArg, int bDstToSrc,
                 GDALApplyGeoTransform( psTransform->adfDEMReverseGeoTransform,
                                     dfMaxX, padfY[0], &dfX2, &dfY2 );
 
+                // convert to center of pixel convention for reading the image data
+                if( psTransform->eResampleAlg != DRA_NearestNeighbour )
+                {
+                    dfX1 -= 0.5;
+                    dfY1 -= 0.5;
+                    dfX2 -= 0.5;
+                    dfY2 -= 0.5;
+                }
                 int nXLeft = int(floor(dfX1));
                 int nXRight = int(floor(dfX2));
                 int nXWidth = nXRight - nXLeft + 1;
@@ -1108,7 +1142,9 @@ int GDALRPCTransform( void *pTransformArg, int bDstToSrc,
                     nYHeight = 2;
                 }
                 else
+                {
                     nYHeight = 1;
+                }
                 if( nXLeft >= 0 && nXLeft + nXWidth <= psTransform->poDS->GetRasterXSize() &&
                     nYTop >= 0 && nYTop + nYHeight <= psTransform->poDS->GetRasterYSize() )
                 {
diff --git a/alg/gdalgrid.cpp b/alg/gdalgrid.cpp
index c0a8e8b..a9a3383 100644
--- a/alg/gdalgrid.cpp
+++ b/alg/gdalgrid.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: gdalgrid.cpp 28459 2015-02-12 13:48:21Z rouault $
+ * $Id: gdalgrid.cpp 29914 2015-08-29 21:21:33Z rouault $
  *
  * Project:  GDAL Gridding API.
  * Purpose:  Implementation of GDAL scattered data gridder.
@@ -36,7 +36,7 @@
 #include "cpl_multiproc.h"
 #include "gdalgrid_priv.h"
 
-CPL_CVSID("$Id: gdalgrid.cpp 28459 2015-02-12 13:48:21Z rouault $");
+CPL_CVSID("$Id: gdalgrid.cpp 29914 2015-08-29 21:21:33Z rouault $");
 
 #define TO_RADIANS (3.14159265358979323846 / 180.0)
 
@@ -1998,3 +1998,125 @@ CPLErr ParseAlgorithmAndOptions( const char *pszAlgorithm,
     CSLDestroy( papszParms );
     return CE_None;
 }
+
+#ifdef HAVE_SSE_AT_COMPILE_TIME
+
+/************************************************************************/
+/*                          CPLHaveRuntimeSSE()                         */
+/************************************************************************/
+
+#define CPUID_SSE_EDX_BIT     25
+
+#if (defined(_M_X64) || defined(__x86_64))
+
+int CPLHaveRuntimeSSE()
+{
+    return TRUE;
+}
+
+#elif defined(__GNUC__) && defined(__i386__)
+
+int CPLHaveRuntimeSSE()
+{
+    int cpuinfo[4] = {0,0,0,0};
+    GCC_CPUID(1, cpuinfo[0], cpuinfo[1], cpuinfo[2], cpuinfo[3]);
+    return (cpuinfo[3] & (1 << CPUID_SSE_EDX_BIT)) != 0;
+}
+
+#elif defined(_MSC_VER) && defined(_M_IX86)
+
+#if _MSC_VER <= 1310
+static void inline __cpuid(int cpuinfo[4], int level)
+{
+    __asm 
+    {
+        push   ebx
+        push   esi
+
+        mov    esi,cpuinfo
+        mov    eax,level  
+        cpuid  
+        mov    dword ptr [esi], eax
+        mov    dword ptr [esi+4],ebx  
+        mov    dword ptr [esi+8],ecx  
+        mov    dword ptr [esi+0Ch],edx 
+
+        pop    esi
+        pop    ebx
+    }
+}
+#else
+#include <intrin.h>
+#endif
+
+int CPLHaveRuntimeSSE()
+{
+    int cpuinfo[4] = {0,0,0,0};
+    __cpuid(cpuinfo, 1);
+    return (cpuinfo[3] & (1 << CPUID_SSE_EDX_BIT)) != 0;
+}
+
+#else
+
+int CPLHaveRuntimeSSE()
+{
+    return FALSE;
+}
+#endif
+
+#endif // HAVE_SSE_AT_COMPILE_TIME
+
+#ifdef HAVE_AVX_AT_COMPILE_TIME
+
+/************************************************************************/
+/*                          CPLHaveRuntimeAVX()                         */
+/************************************************************************/
+
+#define CPUID_OSXSAVE_ECX_BIT   27
+#define CPUID_AVX_ECX_BIT       28
+
+#define BIT_XMM_STATE           (1 << 1)
+#define BIT_YMM_STATE           (2 << 1)
+
+#if defined(__GNUC__) && (defined(__i386__) ||defined(__x86_64))
+
+int CPLHaveRuntimeAVX()
+{
+    int cpuinfo[4] = {0,0,0,0};
+    GCC_CPUID(1, cpuinfo[0], cpuinfo[1], cpuinfo[2], cpuinfo[3]);
+
+    /* Check OSXSAVE feature */
+    if( (cpuinfo[2] & (1 << CPUID_OSXSAVE_ECX_BIT)) == 0 )
+    {
+        return FALSE;
+    }
+
+    /* Check AVX feature */
+    if( (cpuinfo[2] & (1 << CPUID_AVX_ECX_BIT)) == 0 )
+    {
+        return FALSE;
+    }
+
+    /* Issue XGETBV and check the XMM and YMM state bit */
+    unsigned int nXCRLow;
+    unsigned int nXCRHigh;
+    __asm__ ("xgetbv" : "=a" (nXCRLow), "=d" (nXCRHigh) : "c" (0));
+    if( (nXCRLow & ( BIT_XMM_STATE | BIT_YMM_STATE )) !=
+                   ( BIT_XMM_STATE | BIT_YMM_STATE ) )
+    {
+        return FALSE;
+    }
+
+    return TRUE;
+}
+
+#else
+
+int CPLHaveRuntimeAVX()
+{
+    return FALSE;
+}
+
+#endif
+
+#endif //  HAVE_AVX_AT_COMPILE_TIME
diff --git a/alg/gdalgridavx.cpp b/alg/gdalgridavx.cpp
index 528388d..82b8d57 100644
--- a/alg/gdalgridavx.cpp
+++ b/alg/gdalgridavx.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: gdalgridavx.cpp 27745 2014-09-27 16:38:57Z goatbar $
+ * $Id: gdalgridavx.cpp 29914 2015-08-29 21:21:33Z rouault $
  *
  * Project:  GDAL Gridding API.
  * Purpose:  Implementation of GDAL scattered data gridder.
@@ -33,47 +33,7 @@
 #ifdef HAVE_AVX_AT_COMPILE_TIME
 #include <immintrin.h>
 
-CPL_CVSID("$Id: gdalgridavx.cpp 27745 2014-09-27 16:38:57Z goatbar $");
-
-/************************************************************************/
-/*                          CPLHaveRuntimeAVX()                         */
-/************************************************************************/
-
-#define CPUID_OSXSAVE_ECX_BIT   27
-#define CPUID_AVX_ECX_BIT       28
-
-#define BIT_XMM_STATE           (1 << 1)
-#define BIT_YMM_STATE           (2 << 1)
-
-int CPLHaveRuntimeAVX()
-{
-    int cpuinfo[4] = {0,0,0,0};
-    GCC_CPUID(1, cpuinfo[0], cpuinfo[1], cpuinfo[2], cpuinfo[3]);
-
-    /* Check OSXSAVE feature */
-    if( (cpuinfo[2] & (1 << CPUID_OSXSAVE_ECX_BIT)) == 0 )
-    {
-        return FALSE;
-    }
-
-    /* Check AVX feature */
-    if( (cpuinfo[2] & (1 << CPUID_AVX_ECX_BIT)) == 0 )
-    {
-        return FALSE;
-    }
-
-    /* Issue XGETBV and check the XMM and YMM state bit */
-    unsigned int nXCRLow;
-    unsigned int nXCRHigh;
-    __asm__ ("xgetbv" : "=a" (nXCRLow), "=d" (nXCRHigh) : "c" (0));
-    if( (nXCRLow & ( BIT_XMM_STATE | BIT_YMM_STATE )) !=
-                   ( BIT_XMM_STATE | BIT_YMM_STATE ) )
-    {
-        return FALSE;
-    }
-
-    return TRUE;
-}
+CPL_CVSID("$Id: gdalgridavx.cpp 29914 2015-08-29 21:21:33Z rouault $");
 
 /************************************************************************/
 /*         GDALGridInverseDistanceToAPower2NoSmoothingNoSearchAVX()     */
diff --git a/alg/gdalgridsse.cpp b/alg/gdalgridsse.cpp
index e7bb675..8e33337 100644
--- a/alg/gdalgridsse.cpp
+++ b/alg/gdalgridsse.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: gdalgridsse.cpp 28033 2014-11-30 16:37:24Z rouault $
+ * $Id: gdalgridsse.cpp 29914 2015-08-29 21:21:33Z rouault $
  *
  * Project:  GDAL Gridding API.
  * Purpose:  Implementation of GDAL scattered data gridder.
@@ -33,70 +33,7 @@
 #ifdef HAVE_SSE_AT_COMPILE_TIME
 #include <xmmintrin.h>
 
-CPL_CVSID("$Id: gdalgridsse.cpp 28033 2014-11-30 16:37:24Z rouault $");
-
-/************************************************************************/
-/*                          CPLHaveRuntimeSSE()                         */
-/************************************************************************/
-
-#define CPUID_SSE_EDX_BIT     25
-
-#if (defined(_M_X64) || defined(__x86_64))
-
-int CPLHaveRuntimeSSE()
-{
-    return TRUE;
-}
-
-#elif defined(__GNUC__) && defined(__i386__)
-
-int CPLHaveRuntimeSSE()
-{
-    int cpuinfo[4] = {0,0,0,0};
-    GCC_CPUID(1, cpuinfo[0], cpuinfo[1], cpuinfo[2], cpuinfo[3]);
-    return (cpuinfo[3] & (1 << CPUID_SSE_EDX_BIT)) != 0;
-}
-
-#elif defined(_MSC_VER) && defined(_M_IX86)
-
-#if _MSC_VER <= 1310
-static void inline __cpuid(int cpuinfo[4], int level)
-{
-    __asm 
-    {
-        push   ebx
-        push   esi
-
-        mov    esi,cpuinfo
-        mov    eax,level  
-        cpuid  
-        mov    dword ptr [esi], eax
-        mov    dword ptr [esi+4],ebx  
-        mov    dword ptr [esi+8],ecx  
-        mov    dword ptr [esi+0Ch],edx 
-
-        pop    esi
-        pop    ebx
-    }
-}
-#else
-#include <intrin.h>
-#endif
-
-int CPLHaveRuntimeSSE()
-{
-    int cpuinfo[4] = {0,0,0,0};
-    __cpuid(cpuinfo, 1);
-    return (cpuinfo[3] & (1 << CPUID_SSE_EDX_BIT)) != 0;
-}
-
-#else
-
-int CPLHaveRuntimeSSE()
-{
-    return FALSE;
-}
-#endif
+CPL_CVSID("$Id: gdalgridsse.cpp 29914 2015-08-29 21:21:33Z rouault $");
 
 /************************************************************************/
 /*         GDALGridInverseDistanceToAPower2NoSmoothingNoSearchSSE()     */
diff --git a/alg/gdalsievefilter.cpp b/alg/gdalsievefilter.cpp
index abd2377..9dc9f38 100644
--- a/alg/gdalsievefilter.cpp
+++ b/alg/gdalsievefilter.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: gdalsievefilter.cpp 27745 2014-09-27 16:38:57Z goatbar $
+ * $Id: gdalsievefilter.cpp 30152 2015-09-06 12:29:19Z rouault $
  *
  * Project:  GDAL
  * Purpose:  Raster to Polygon Converter
@@ -32,9 +32,8 @@
 #include "cpl_conv.h"
 #include <vector>
 
-CPL_CVSID("$Id: gdalsievefilter.cpp 27745 2014-09-27 16:38:57Z goatbar $");
+CPL_CVSID("$Id: gdalsievefilter.cpp 30152 2015-09-06 12:29:19Z rouault $");
 
-#define GP_NODATA_MARKER -51502112
 #define MY_MAX_INT 2147483647
 
 /*
@@ -107,6 +106,11 @@ static inline void CompareNeighbour( int nPolyId1, int nPolyId2,
                                      std::vector<int> &anBigNeighbour )
 
 {
+    // nodata polygon do not need neighbours, and cannot be neighbours
+    // to valid polygons. 
+    if( nPolyId1 < 0 || nPolyId2 < 0 )
+        return;
+
     // make sure we are working with the final merged polygon ids. 
     nPolyId1 = panPolyIdMap[nPolyId1];
     nPolyId2 = panPolyIdMap[nPolyId2];
@@ -116,9 +120,10 @@ static inline void CompareNeighbour( int nPolyId1, int nPolyId2,
 
     // nodata polygon do not need neighbours, and cannot be neighbours
     // to valid polygons. 
-    if( panPolyValue[nPolyId1] == GP_NODATA_MARKER
-        || panPolyValue[nPolyId2] == GP_NODATA_MARKER )
-        return;
+    // should no longer happen with r28826 optim
+    //if( panPolyValue[nPolyId1] == GP_NODATA_MARKER
+    //    || panPolyValue[nPolyId2] == GP_NODATA_MARKER )
+    //    return;
 
     if( anBigNeighbour[nPolyId1] == -1
         || anPolySizes[anBigNeighbour[nPolyId1]] < anPolySizes[nPolyId2] )
@@ -259,8 +264,7 @@ GDALSieveFilter( GDALRasterBandH hSrcBand, GDALRasterBandH hMaskBand,
         {
             iPoly = panThisLineId[iX]; 
 
-            CPLAssert( iPoly >= 0 );
-            if( anPolySizes[iPoly] < MY_MAX_INT )
+            if( iPoly >= 0 && anPolySizes[iPoly] < MY_MAX_INT )
                 anPolySizes[iPoly] += 1;
         }
 
@@ -524,13 +528,17 @@ GDALSieveFilter( GDALRasterBandH hSrcBand, GDALRasterBandH hMaskBand,
 /* -------------------------------------------------------------------- */
         for( iX = 0; iX < nXSize; iX++ )
         {
-            int iThisPoly = oFirstEnum.panPolyIdMap[panThisLineId[iX]];
-
-            if( anBigNeighbour[iThisPoly] != -1 )
+            int iThisPoly = panThisLineId[iX];
+            if( iThisPoly >= 0 )
             {
-                panThisLineWriteVal[iX] = 
-                    oFirstEnum.panPolyValue[
-                        anBigNeighbour[iThisPoly]];
+                iThisPoly = oFirstEnum.panPolyIdMap[iThisPoly];
+
+                if( anBigNeighbour[iThisPoly] != -1 )
+                {
+                    panThisLineWriteVal[iX] = 
+                        oFirstEnum.panPolyValue[
+                            anBigNeighbour[iThisPoly]];
+                }
             }
         }
 
diff --git a/apps/gdalbuildvrt.cpp b/apps/gdalbuildvrt.cpp
index f8326eb..f29ae92 100644
--- a/apps/gdalbuildvrt.cpp
+++ b/apps/gdalbuildvrt.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: gdalbuildvrt.cpp 28998 2015-04-24 19:04:46Z rouault $
+ * $Id: gdalbuildvrt.cpp 30126 2015-09-05 09:15:38Z rouault $
  *
  * Project:  GDAL Utilities
  * Purpose:  Commandline application to build VRT datasets from raster products or content of SHP tile index
@@ -37,7 +37,7 @@
 #endif
 #include "ogr_srs_api.h"
 
-CPL_CVSID("$Id: gdalbuildvrt.cpp 28998 2015-04-24 19:04:46Z rouault $");
+CPL_CVSID("$Id: gdalbuildvrt.cpp 30126 2015-09-05 09:15:38Z rouault $");
 
 #define GEOTRSFRM_TOPLEFT_X            0
 #define GEOTRSFRM_WE_RES               1
@@ -256,7 +256,7 @@ class VRTBuilder
     public:
                 VRTBuilder(const char* pszOutputFilename,
                            int nInputFiles, const char* const * ppszInputFilenames,
-                           int *panBandList, int nBandCount, int nMaxBandNo,
+                           const int *panBandListIn, int nBandCount, int nMaxBandNo,
                            ResolutionStrategy resolutionStrategy,
                            double we_res, double ns_res,
                            int bTargetAlignedPixels,
@@ -279,7 +279,7 @@ class VRTBuilder
 
 VRTBuilder::VRTBuilder(const char* pszOutputFilename,
                        int nInputFiles, const char* const * ppszInputFilenames,
-                       int *panBandList, int nBandCount, int nMaxBandNo,
+                       const int *panBandListIn, int nBandCount, int nMaxBandNo,
                        ResolutionStrategy resolutionStrategy,
                        double we_res, double ns_res,
                        int bTargetAlignedPixels,
@@ -294,14 +294,18 @@ VRTBuilder::VRTBuilder(const char* pszOutputFilename,
     this->nInputFiles = nInputFiles;
 
     this->ppszInputFilenames = (char**) CPLMalloc(nInputFiles * sizeof(char*));
-    int i;
-    for(i=0;i<nInputFiles;i++)
+    for(int i=0;i<nInputFiles;i++)
     {
         this->ppszInputFilenames[i] = CPLStrdup(ppszInputFilenames[i]);
     }
 
     this->nBands = nBandCount;
-    this->panBandList = panBandList;    
+    panBandList = NULL;
+    if( nBandCount )
+    {
+        panBandList = (int*) CPLMalloc(nBands * sizeof(int));
+        memcpy(panBandList, panBandListIn, nBands * sizeof(int));
+    }
     this->nMaxBandNo = nMaxBandNo;    
 
     this->resolutionStrategy = resolutionStrategy;
@@ -349,8 +353,7 @@ VRTBuilder::~VRTBuilder()
     CPLFree(pszOutputFilename);
     CPLFree(pszSrcNoData);
     CPLFree(pszVRTNoData);
-    if (panBandList)
-        delete[] panBandList;
+    CPLFree(panBandList);
 
     int i;
     for(i=0;i<nInputFiles;i++)
@@ -625,13 +628,12 @@ int VRTBuilder::AnalyseRaster( GDALDatasetH hDS, const char* dsFileName,
             maxY = ds_maxY;
         }
 
-        //if provided band list
+        //if not provided an explicit band list, take the one of the first dataset
         if(nBands == 0)
         {
             nBands = _nBands;
-            if(panBandList != NULL)
-                CPLFree(panBandList);
-            panBandList = new int[nBands];
+            CPLFree(panBandList);
+            panBandList = (int*) CPLMalloc(nBands * sizeof(int));
             for(j=0;j<nBands;j++)
             {
                 panBandList[j] = j + 1;
diff --git a/apps/gdaldem.cpp b/apps/gdaldem.cpp
index 231042d..e8bbc6c 100644
--- a/apps/gdaldem.cpp
+++ b/apps/gdaldem.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: gdaldem.cpp 29284 2015-06-03 13:26:10Z rouault $
+ * $Id: gdaldem.cpp 29623 2015-08-07 20:11:48Z rouault $
  *
  * Project:  GDAL DEM Utilities
  * Purpose:  
@@ -92,7 +92,7 @@
 #include "gdal_priv.h"
 #include "commonutils.h"
 
-CPL_CVSID("$Id: gdaldem.cpp 29284 2015-06-03 13:26:10Z rouault $");
+CPL_CVSID("$Id: gdaldem.cpp 29623 2015-08-07 20:11:48Z rouault $");
 
 #ifndef M_PI
 # define M_PI  3.1415926535897932384626433832795
@@ -163,12 +163,15 @@ static void Usage(const char* pszErrorMsg = NULL)
 typedef float (*GDALGeneric3x3ProcessingAlg) (float* pafWindow, float fDstNoDataValue, void* pData);
 
 static float ComputeVal(int bSrcHasNoData, float fSrcNoDataValue,
+                        int bIsSrcNoDataNan,
                         float* afWin, float fDstNoDataValue,
                         GDALGeneric3x3ProcessingAlg pfnAlg,
                         void* pData,
                         int bComputeAtEdges)
 {
-    if (bSrcHasNoData && ARE_REAL_EQUAL(afWin[4], fSrcNoDataValue))
+    if (bSrcHasNoData &&
+            ((!bIsSrcNoDataNan && ARE_REAL_EQUAL(afWin[4], fSrcNoDataValue)) ||
+             (bIsSrcNoDataNan && CPLIsNan(afWin[4]))))
     {
         return fDstNoDataValue;
     }
@@ -177,7 +180,8 @@ static float ComputeVal(int bSrcHasNoData, float fSrcNoDataValue,
         int k;
         for(k=0;k<9;k++)
         {
-            if (ARE_REAL_EQUAL(afWin[k], fSrcNoDataValue))
+            if ((!bIsSrcNoDataNan && ARE_REAL_EQUAL(afWin[k], fSrcNoDataValue)) ||
+                (bIsSrcNoDataNan && CPLIsNan(afWin[k])))
             {
                 if (bComputeAtEdges)
                     afWin[k] = afWin[4];
@@ -232,6 +236,7 @@ CPLErr GDALGeneric3x3Processing  ( GDALRasterBandH hSrcBand,
     fDstNoDataValue = (float) GDALGetRasterNoDataValue(hDstBand, &bDstHasNoData);
     if (!bDstHasNoData)
         fDstNoDataValue = 0.0;
+    int bIsSrcNoDataNan = bSrcHasNoData && CPLIsNan(fSrcNoDataValue);
 
     // Move a 3x3 pafWindow over each cell 
     // (where the cell in question is #4)
@@ -272,6 +277,7 @@ CPLErr GDALGeneric3x3Processing  ( GDALRasterBandH hSrcBand,
             afWin[8] = pafThreeLineWin[nXSize + jmax];
 
             pafOutputBuf[j] = ComputeVal(bSrcHasNoData, fSrcNoDataValue,
+                                         bIsSrcNoDataNan,
                                          afWin, fDstNoDataValue,
                                          pfnAlg, pData, bComputeAtEdges);
         }
@@ -332,6 +338,7 @@ CPLErr GDALGeneric3x3Processing  ( GDALRasterBandH hSrcBand,
             afWin[8] = pafThreeLineWin[nLine3Off + j+1];
 
             pafOutputBuf[j] = ComputeVal(bSrcHasNoData, fSrcNoDataValue,
+                                         bIsSrcNoDataNan,
                                          afWin, fDstNoDataValue,
                                          pfnAlg, pData, bComputeAtEdges);
             j = nXSize - 1;
@@ -347,6 +354,7 @@ CPLErr GDALGeneric3x3Processing  ( GDALRasterBandH hSrcBand,
             afWin[8] = INTERPOL(pafThreeLineWin[nLine3Off + j], pafThreeLineWin[nLine3Off + j-1]);
 
             pafOutputBuf[j] = ComputeVal(bSrcHasNoData, fSrcNoDataValue,
+                                         bIsSrcNoDataNan,
                                          afWin, fDstNoDataValue,
                                          pfnAlg, pData, bComputeAtEdges);
         }
@@ -372,6 +380,7 @@ CPLErr GDALGeneric3x3Processing  ( GDALRasterBandH hSrcBand,
             afWin[8] = pafThreeLineWin[nLine3Off + j+1];
 
             pafOutputBuf[j] = ComputeVal(bSrcHasNoData, fSrcNoDataValue,
+                                         bIsSrcNoDataNan,
                                          afWin, fDstNoDataValue,
                                          pfnAlg, pData, bComputeAtEdges);
         }
@@ -416,6 +425,7 @@ CPLErr GDALGeneric3x3Processing  ( GDALRasterBandH hSrcBand,
             afWin[8] = INTERPOL(pafThreeLineWin[nLine2Off + jmax], pafThreeLineWin[nLine1Off + jmax]);
 
             pafOutputBuf[j] = ComputeVal(bSrcHasNoData, fSrcNoDataValue,
+                                         bIsSrcNoDataNan,
                                          afWin, fDstNoDataValue,
                                          pfnAlg, pData, bComputeAtEdges);
         }
@@ -793,6 +803,9 @@ static int GDALColorReliefSortColors(const void* pA, const void* pB)
 {
     ColorAssociation* pC1 = (ColorAssociation*)pA;
     ColorAssociation* pC2 = (ColorAssociation*)pB;
+    /* Sort NaN in first position */
+    if( CPLIsNan(pC1->dfVal) )
+        return -1;
     return (pC1->dfVal < pC2->dfVal) ? -1 :
            (pC1->dfVal == pC2->dfVal) ? 0 : 1;
 }
@@ -818,6 +831,21 @@ static int GDALColorReliefGetRGBA (ColorAssociation* pasColorAssociation,
     int upper = nColorAssociation - 1;
     int mid;
 
+    // Special case for NaN
+    if( CPLIsNan(pasColorAssociation[0].dfVal) )
+    {
+        if( CPLIsNan(dfVal) )
+        {
+            *pnR = pasColorAssociation[0].nR;
+            *pnG = pasColorAssociation[0].nG;
+            *pnB = pasColorAssociation[0].nB;
+            *pnA = pasColorAssociation[0].nA;
+            return TRUE;
+        }
+        else
+            lower = 1;
+    }
+
     /* Find the index of the first element in the LUT input array that */
     /* is not smaller than the dfVal value. */
     while(TRUE)
@@ -1833,6 +1861,7 @@ class GDALGeneric3x3RasterBand : public GDALRasterBand
     friend class GDALGeneric3x3Dataset;
     int bSrcHasNoData;
     float fSrcNoDataValue;
+    int bIsSrcNoDataNan;
     
     void                    InitWidthNoData(void* pImage);
     
@@ -1905,6 +1934,7 @@ GDALGeneric3x3RasterBand::GDALGeneric3x3RasterBand(GDALGeneric3x3Dataset *poDS,
     bSrcHasNoData = FALSE;
     fSrcNoDataValue = (float)GDALGetRasterNoDataValue(poDS->hSrcBand,
                                                       &bSrcHasNoData);
+    bIsSrcNoDataNan = bSrcHasNoData && CPLIsNan(fSrcNoDataValue);
 }
 
 void   GDALGeneric3x3RasterBand::InitWidthNoData(void* pImage)
@@ -1969,6 +1999,7 @@ CPLErr GDALGeneric3x3RasterBand::IReadBlock( CPL_UNUSED int nBlockXOff,
                 afWin[8] = poGDS->apafSourceBuf[2][jmax];
 
                 fVal = ComputeVal(bSrcHasNoData, fSrcNoDataValue,
+                                  bIsSrcNoDataNan,
                                     afWin, (float) poGDS->dfDstNoDataValue,
                                     poGDS->pfnAlg,
                                     poGDS->pAlgData,
@@ -2020,6 +2051,7 @@ CPLErr GDALGeneric3x3RasterBand::IReadBlock( CPL_UNUSED int nBlockXOff,
                 afWin[8] = INTERPOL(poGDS->apafSourceBuf[2][jmax], poGDS->apafSourceBuf[1][jmax]);
 
                 fVal = ComputeVal(bSrcHasNoData, fSrcNoDataValue,
+                                  bIsSrcNoDataNan,
                                     afWin, (float) poGDS->dfDstNoDataValue,
                                     poGDS->pfnAlg,
                                     poGDS->pAlgData,
@@ -2101,6 +2133,7 @@ CPLErr GDALGeneric3x3RasterBand::IReadBlock( CPL_UNUSED int nBlockXOff,
         afWin[8] = poGDS->apafSourceBuf[2][j+1];
 
         fVal = ComputeVal(bSrcHasNoData, fSrcNoDataValue,
+                          bIsSrcNoDataNan,
                                     afWin, (float) poGDS->dfDstNoDataValue,
                                     poGDS->pfnAlg,
                                     poGDS->pAlgData,
@@ -2124,6 +2157,7 @@ CPLErr GDALGeneric3x3RasterBand::IReadBlock( CPL_UNUSED int nBlockXOff,
         afWin[8] = INTERPOL(poGDS->apafSourceBuf[2][j], poGDS->apafSourceBuf[2][j-1]);
 
         fVal = ComputeVal(bSrcHasNoData, fSrcNoDataValue,
+                          bIsSrcNoDataNan,
                                     afWin, (float) poGDS->dfDstNoDataValue,
                                     poGDS->pfnAlg,
                                     poGDS->pAlgData,
@@ -2165,6 +2199,7 @@ CPLErr GDALGeneric3x3RasterBand::IReadBlock( CPL_UNUSED int nBlockXOff,
         afWin[8] = poGDS->apafSourceBuf[2][j+1];
 
         fVal = ComputeVal(bSrcHasNoData, fSrcNoDataValue,
+                          bIsSrcNoDataNan,
                                 afWin, (float) poGDS->dfDstNoDataValue,
                                 poGDS->pfnAlg,
                                 poGDS->pAlgData,
diff --git a/apps/gdalinfo.c b/apps/gdalinfo.c
index 28cc240..482ddea 100644
--- a/apps/gdalinfo.c
+++ b/apps/gdalinfo.c
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: gdalinfo.c 29268 2015-05-30 11:46:44Z rouault $
+ * $Id: gdalinfo.c 29781 2015-08-25 16:20:28Z rouault $
  *
  * Project:  GDAL Utilities
  * Purpose:  Commandline application to list info about a file.
@@ -38,7 +38,7 @@
 #include "json.h"
 #include "ogrgeojsonwriter.h"
 
-CPL_CVSID("$Id: gdalinfo.c 29268 2015-05-30 11:46:44Z rouault $");
+CPL_CVSID("$Id: gdalinfo.c 29781 2015-08-25 16:20:28Z rouault $");
 
 static int 
 GDALInfoReportCorner( GDALDatasetH hDataset, 
@@ -1371,8 +1371,9 @@ GDALInfoReportCorner( GDALDatasetH hDataset,
 /* -------------------------------------------------------------------- */
     if(bJson)
     {
+        double dfZ = 0.0;
         if( hTransformWGS84 != NULL && !EQUAL( corner_name, "center" ) 
-        && OCTTransform(hTransformWGS84,1,&dfGeoX,&dfGeoY,NULL) )
+        && OCTTransform(hTransformWGS84,1,&dfGeoX,&dfGeoY,&dfZ) )
         {
             poCorner = json_object_new_array();
             poX = json_object_new_double_with_precision( dfGeoX, 7 );
@@ -1384,8 +1385,9 @@ GDALInfoReportCorner( GDALDatasetH hDataset,
     }
     else
     {
+        double dfZ = 0.0;
         if( hTransform != NULL 
-        && OCTTransform(hTransform,1,&dfGeoX,&dfGeoY,NULL) )
+        && OCTTransform(hTransform,1,&dfGeoX,&dfGeoY,&dfZ) )
         {
             printf( "(%s,", GDALDecToDMS( dfGeoX, "Long", 2 ) );
             printf( "%s)", GDALDecToDMS( dfGeoY, "Lat", 2 ) );
diff --git a/apps/gdalserver.c b/apps/gdalserver.c
index 7202e2e..a27614c 100644
--- a/apps/gdalserver.c
+++ b/apps/gdalserver.c
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: gdalserver.c 27745 2014-09-27 16:38:57Z goatbar $
+ * $Id: gdalserver.c 29668 2015-08-19 16:41:53Z rouault $
  *
  * Project:  GDAL
  * Purpose:  Server application that is forked by libgdal
@@ -27,9 +27,8 @@
  * DEALINGS IN THE SOFTWARE.
  ****************************************************************************/
 
-#if defined(__STDC_VERSION__)
-#define _XOPEN_SOURCE
-#endif
+// So that __USE_XOPEN2K is defined to have getaddrinfo
+#define _XOPEN_SOURCE 600
 
 #include "cpl_port.h"
 
@@ -77,7 +76,7 @@ int CPL_DLL GDALServerLoop(CPL_FILE_HANDLE fin, CPL_FILE_HANDLE fout);
 int CPL_DLL GDALServerLoopSocket(CPL_SOCKET nSocket);
 CPL_C_END
 
-CPL_CVSID("$Id: gdalserver.c 27745 2014-09-27 16:38:57Z goatbar $");
+CPL_CVSID("$Id: gdalserver.c 29668 2015-08-19 16:41:53Z rouault $");
 
 /************************************************************************/
 /*                               Usage()                                */
diff --git a/doc/gdal_datamodel.dox b/doc/gdal_datamodel.dox
index 0064d4c..6e6effa 100644
--- a/doc/gdal_datamodel.dox
+++ b/doc/gdal_datamodel.dox
@@ -1,4 +1,4 @@
-/* $Id: gdal_datamodel.dox 29123 2015-05-03 11:05:46Z bishop $ */
+/* $Id: gdal_datamodel.dox 29417 2015-06-22 08:30:54Z rouault $ */
 
 /*!
 \page gdal_datamodel GDAL Data Model
@@ -255,6 +255,8 @@ items defining the model are:
 
 These fields are directly derived from the document prospective GeoTIFF RPC document (http://geotiff.maptools.org/rpc_prop.html) which in turn is closely modelled on the NITF RPC00B definition.
 
+The line and pixel offset expressed with LINE_OFF and SAMP_OFF are with respect to the center of the pixel.
+
 \subsubsection gdal_datamodel_subdatasets IMAGERY Domain
 
 For satellite or aerial imagery the IMAGERY Domain may be present. It depends on exist special metadata files near the image file. The files at the same directory with image file tested by the set of metadata readers, if files can be processed by the metadata reader, it fill the IMAGERY Domain with the following items:
diff --git a/frmts/aaigrid/aaigriddataset.cpp b/frmts/aaigrid/aaigriddataset.cpp
index bb67c57..bfe5cfc 100644
--- a/frmts/aaigrid/aaigriddataset.cpp
+++ b/frmts/aaigrid/aaigriddataset.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: aaigriddataset.cpp 28785 2015-03-26 20:46:45Z goatbar $
+ * $Id: aaigriddataset.cpp 29614 2015-08-06 09:37:29Z rouault $
  *
  * Project:  GDAL
  * Purpose:  Implements Arc/Info ASCII Grid Format.
@@ -35,7 +35,7 @@
 #include "cpl_string.h"
 #include "ogr_spatialref.h"
 
-CPL_CVSID("$Id: aaigriddataset.cpp 28785 2015-03-26 20:46:45Z goatbar $");
+CPL_CVSID("$Id: aaigriddataset.cpp 29614 2015-08-06 09:37:29Z rouault $");
 
 CPL_C_START
 void    GDALRegister_AAIGrid(void);
@@ -1111,6 +1111,7 @@ GDALDataset * AAIGDataset::CreateCopy(
         padfScanline = (double *) CPLMalloc( nXSize *
                                     GDALGetDataTypeSize(GDT_Float64) / 8 );
 
+    int bHasOuputDecimalDot = FALSE;
     for( iLine = 0; eErr == CE_None && iLine < nYSize; iLine++ )
     {
         CPLString osBuf;
@@ -1143,6 +1144,19 @@ GDALDataset * AAIGDataset::CreateCopy(
             for ( iPixel = 0; iPixel < nXSize; iPixel++ )
             {
                 CPLsprintf( szHeader, szFormatFloat, padfScanline[iPixel] );
+
+                // Make sure that as least one value has a decimal point (#6060)
+                if( !bHasOuputDecimalDot )
+                {
+                    if( strchr(szHeader, '.') || strchr(szHeader, 'e') || strchr(szHeader, 'E') )
+                        bHasOuputDecimalDot = TRUE;
+                    else if( !CPLIsInf(padfScanline[iPixel]) && !CPLIsNan(padfScanline[iPixel]) )
+                    {
+                        strcat(szHeader, ".0");
+                        bHasOuputDecimalDot = TRUE;
+                    }
+                }
+
                 osBuf += szHeader;
                 if( (iPixel & 1023) == 0 || iPixel == nXSize - 1 )
                 {
diff --git a/frmts/ecw/ecwasyncreader.cpp b/frmts/ecw/ecwasyncreader.cpp
index 3bb589e..ccfee05 100644
--- a/frmts/ecw/ecwasyncreader.cpp
+++ b/frmts/ecw/ecwasyncreader.cpp
@@ -7,7 +7,7 @@
  *
  ******************************************************************************
  * Copyright (c) 2011, Frank Warmerdam <warmerdam at pobox.com>
- * Copyright (c) 2013, Even Rouault <even dot rouault at mines-paris dot org>
+ * Copyright (c) 2013, Even Rouault <even dot rouault at mines-paris dot org>
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
diff --git a/frmts/ecw/ecwdataset.cpp b/frmts/ecw/ecwdataset.cpp
index ce1f817..149d2bd 100644
--- a/frmts/ecw/ecwdataset.cpp
+++ b/frmts/ecw/ecwdataset.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: ecwdataset.cpp 29330 2015-06-14 12:11:11Z rouault $
+ * $Id: ecwdataset.cpp 29507 2015-07-08 21:59:03Z rouault $
  *
  * Project:  GDAL 
  * Purpose:  ECW (ERDAS Wavelet Compression Format) Driver
@@ -34,7 +34,9 @@
 #include "ogr_api.h"
 #include "ogr_geometry.h"
 
-CPL_CVSID("$Id: ecwdataset.cpp 29330 2015-06-14 12:11:11Z rouault $");
+#include "../mem/memdataset.h"
+
+CPL_CVSID("$Id: ecwdataset.cpp 29507 2015-07-08 21:59:03Z rouault $");
 
 #undef NOISY_DEBUG
 
@@ -1817,6 +1819,76 @@ CPLErr ECWDataset::IRasterIO( GDALRWFlag eRWFlag,
     if ( nBandSpace == 0 ){
         nBandSpace = nDataTypeSize*nBufXSize*nBufYSize;
     }
+    
+    // Use GDAL upsampling if non nearest
+    if( (nBufXSize > nXSize || nBufYSize > nYSize) &&
+        psExtraArg->eResampleAlg != GRIORA_NearestNeighbour )
+    {
+        int nBufDataTypeSize = (GDALGetDataTypeSize(eBufType) / 8);
+        GByte* pabyTemp = (GByte*)VSIMalloc3(nXSize, nYSize, nBufDataTypeSize * nBandCount);
+        if( pabyTemp == NULL )
+        {
+            CPLError( CE_Failure, CPLE_OutOfMemory, 
+                          "Failed to allocate %d byte intermediate decompression buffer for jpeg2000.", 
+                          nXSize * nYSize * nBufDataTypeSize * nBandCount );
+            return CE_Failure;
+        }
+        
+        CPLErr eErr = IRasterIO(eRWFlag, nXOff, nYOff, nXSize, nYSize,
+                                pabyTemp, nXSize, nYSize,
+                                eBufType, nBandCount, panBandMap,
+                                nBufDataTypeSize,
+                                (GIntBig)nBufDataTypeSize* nXSize,
+                                (GIntBig)nBufDataTypeSize*nXSize*nYSize,
+                                psExtraArg);
+        
+        if( eErr == CE_None )
+        {
+            /* Create a MEM dataset that wraps the input buffer */
+            GDALDataset* poMEMDS = MEMDataset::Create("", nXSize, nYSize, 0,
+                                                      eBufType, NULL);
+            char szBuffer[64];
+            int nRet;
+
+            for( int i = 0; i < nBandCount; i++ )
+            {
+                nRet = CPLPrintPointer(szBuffer, pabyTemp + i * nBufDataTypeSize, sizeof(szBuffer));
+                szBuffer[nRet] = 0;
+                char** papszOptions = CSLSetNameValue(NULL, "DATAPOINTER", szBuffer);
+
+                papszOptions = CSLSetNameValue(papszOptions, "PIXELOFFSET",
+                    CPLSPrintf(CPL_FRMT_GIB, (GIntBig)nBufDataTypeSize * nBandCount));
+
+                papszOptions = CSLSetNameValue(papszOptions, "LINEOFFSET",
+                    CPLSPrintf(CPL_FRMT_GIB, (GIntBig)nBufDataTypeSize * nBandCount * nXSize));
+
+                poMEMDS->AddBand(eBufType, papszOptions);
+                CSLDestroy(papszOptions);
+
+                const char* pszNBITS = GetRasterBand(i+1)->GetMetadataItem("NBITS", "IMAGE_STRUCTURE");
+                if( pszNBITS )
+                    poMEMDS->GetRasterBand(i+1)->SetMetadataItem("NBITS", pszNBITS, "IMAGE_STRUCTURE");
+            }
+
+            GDALRasterIOExtraArg sExtraArgTmp;
+            INIT_RASTERIO_EXTRA_ARG(sExtraArgTmp);
+            sExtraArgTmp.eResampleAlg = psExtraArg->eResampleAlg;
+
+            poMEMDS->RasterIO(GF_Read, 0, 0, nXSize, nYSize,
+                                pData, nBufXSize, nBufYSize,
+                                eBufType,
+                                nBandCount, NULL,
+                                nPixelSpace, nLineSpace, nBandSpace,
+                                &sExtraArgTmp);
+
+            GDALClose(poMEMDS);
+        }
+
+        VSIFree(pabyTemp);
+        
+        return eErr;
+    }
+    
 /* -------------------------------------------------------------------- */
 /*      ECW SDK 3.3 has a bug with the ECW format when we query the     */
 /*      number of bands of the dataset, but not in the "natural order". */
diff --git a/frmts/envisat/EnvisatFile.c b/frmts/envisat/EnvisatFile.c
index a1d064d..c5fa90d 100644
--- a/frmts/envisat/EnvisatFile.c
+++ b/frmts/envisat/EnvisatFile.c
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: EnvisatFile.c 28843 2015-04-02 21:13:08Z kyle $
+ * $Id: EnvisatFile.c 29670 2015-08-19 17:00:51Z kyle $
  *
  * Project:  APP ENVISAT Support
  * Purpose:  Low Level Envisat file access (read/write) API.
@@ -35,7 +35,7 @@
 #  include "cpl_conv.h"
 #  include "EnvisatFile.h"
 
-CPL_CVSID("$Id: EnvisatFile.c 28843 2015-04-02 21:13:08Z kyle $");
+CPL_CVSID("$Id: EnvisatFile.c 29670 2015-08-19 17:00:51Z kyle $");
 
 #else
 #  include "APP/app.h"
@@ -1387,7 +1387,7 @@ int EnvisatFile_ReadDatasetChunk( EnvisatFile *self,
 {
     if( ds_index < 0 || ds_index >= self->ds_count )
     {
-        SendError( "Attempt to read non-existant dataset in "
+        SendError( "Attempt to read non-existent dataset in "
                    "EnvisatFile_ReadDatasetChunk()" );
         return FAILURE;
     }
@@ -1452,7 +1452,7 @@ int EnvisatFile_WriteDatasetRecord( EnvisatFile *self,
 
     if( ds_index < 0 || ds_index >= self->ds_count )
     {
-        SendError( "Attempt to write non-existant dataset in "
+        SendError( "Attempt to write non-existent dataset in "
                    "EnvisatFile_WriteDatasetRecord()" );
         return FAILURE;
     }
@@ -1569,7 +1569,7 @@ int EnvisatFile_ReadDatasetRecordChunk( EnvisatFile *self,
 
     if( ds_index < 0 || ds_index >= self->ds_count )
     {
-        SendError( "Attempt to read non-existant dataset in "
+        SendError( "Attempt to read non-existent dataset in "
                    "EnvisatFile_ReadDatasetRecordChunk()" );
         return FAILURE;
     }
diff --git a/frmts/frmt_various.html b/frmts/frmt_various.html
index 759091b..23c4cd9 100644
--- a/frmts/frmt_various.html
+++ b/frmts/frmt_various.html
@@ -30,7 +30,7 @@ same format as the band data.
 
 <p>By default, the datatype returned for AAIGRID datasets by GDAL is autodetected,
 and set to Float32 for grid with floating point values or Int32 otherwise. This is
-done by analysing the format of the NODATA value and the first 100k bytes of data of the
+done by analysing the format of the NODATA value and, if needed, the data of the
 grid. From GDAL 1.8.0, you can explictely specify the datatype by setting the
 AAIGRID_DATATYPE configuration option (Int32, Float32 and Float64 values are
 supported currently)</p>
@@ -378,13 +378,14 @@ Starting with GDAL 1.9.0
 that uses the table of content file, TOC.xml, and exposes it as a virtual dataset whose
 coverage is the set of ECRG frames contained in the table of content.</p>
 <p>The driver will report a different subdataset for each subdataset found in the TOC.xml
-file.</p>
+file. Each subdataset consists of the frames of same product id, disk id, and starting
+with GDAL 1.11.3, with same scale.</p>
 
 <p>Result of a gdalinfo on a TOC.xml file.</p>
 <pre>
 Subdatasets:
-  SUBDATASET_1_NAME=ECRG_TOC_ENTRY:ECRG:FalconView:ECRG_Sample/EPF/TOC.xml
-  SUBDATASET_1_DESC=ECRG:FalconView
+  SUBDATASET_1_NAME=ECRG_TOC_ENTRY:ECRG:FalconView:1_500_K:ECRG_Sample/EPF/TOC.xml
+  SUBDATASET_1_DESC=Product ECRG, Disk FalconView, Scale 1:500 K
 </pre>
 
 <p>See Also:</p>
@@ -1361,7 +1362,7 @@ as reported by GDAL will be a half-pixel at the top and left of the values that
 </p>
 
 <p>
-$Id: frmt_various.html 28861 2015-04-07 09:41:29Z kdejong $
+$Id: frmt_various.html 29778 2015-08-25 09:02:53Z rouault $
 </p>
 
 </body>
diff --git a/frmts/georaster/GNUmakefile b/frmts/georaster/GNUmakefile
index 78d5d31..0295263 100644
--- a/frmts/georaster/GNUmakefile
+++ b/frmts/georaster/GNUmakefile
@@ -11,9 +11,7 @@ OBJ		=	georaster_dataset.o \
 			oci_wrapper.o \
 			georaster_wrapper.o
 
-CPPFLAGS	:=	$(GDAL_INCLUDE) $(XTRA_OPT)  $(OCI_INCLUDE) $(CPPFLAGS) -fPIC
-
-PLUGIN_SO	= gdal_GEOR.so
+CPPFLAGS	:=	$(XTRA_OPT)  $(OCI_INCLUDE) $(CPPFLAGS)
 
 ifneq ($(JPEG_SETTING),no)
 CPPFLAGS	:=	$(CPPFLAGS) -DJPEG_SUPPORTED
@@ -30,6 +28,8 @@ clean:
 
 install-obj:	$(O_OBJ:.o=.$(OBJ_EXT))
 
+PLUGIN_SO	= gdal_GEOR.$(SO_EXT)
+
 plugin: $(PLUGIN_SO)
 
 $(PLUGIN_SO):	$(OBJ)
diff --git a/frmts/gtiff/geotiff.cpp b/frmts/gtiff/geotiff.cpp
index a17c1cf..035364d 100644
--- a/frmts/gtiff/geotiff.cpp
+++ b/frmts/gtiff/geotiff.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: geotiff.cpp 29334 2015-06-14 17:30:54Z rouault $
+ * $Id: geotiff.cpp 29355 2015-06-15 09:27:47Z rouault $
  *
  * Project:  GeoTIFF Driver
  * Purpose:  GDAL GeoTIFF support.
@@ -63,7 +63,7 @@
 #include "tiffiop.h"
 #endif
 
-CPL_CVSID("$Id: geotiff.cpp 29334 2015-06-14 17:30:54Z rouault $");
+CPL_CVSID("$Id: geotiff.cpp 29355 2015-06-15 09:27:47Z rouault $");
 
 #if SIZEOF_VOIDP == 4
 static int bGlobalStripIntegerOverflow = FALSE;
@@ -6022,10 +6022,16 @@ int GTiffDataset::IsBlockAvailable( int nBlockId )
             vsi_l_offset nCurOffset = VSIFTellL(fp);
             if( ~(hTIFF->tif_dir.td_stripoffset[nBlockId]) == 0 )
             {
+                vsi_l_offset nDirOffset;
+                if( hTIFF->tif_flags&TIFF_BIGTIFF )
+                    nDirOffset = hTIFF->tif_dir.td_stripoffset_entry.tdir_offset.toff_long8;
+                else
+                    nDirOffset = hTIFF->tif_dir.td_stripoffset_entry.tdir_offset.toff_long;
+
                 if( hTIFF->tif_dir.td_stripoffset_entry.tdir_type == TIFF_LONG )
                 {
                     GTiffCacheOffsetOrCount(fp,
-                                            hTIFF->tif_dir.td_stripoffset_entry.tdir_offset.toff_long,
+                                            nDirOffset,
                                             nBlockId,
                                             hTIFF->tif_dir.td_nstrips,
                                             hTIFF->tif_dir.td_stripoffset,
@@ -6034,7 +6040,7 @@ int GTiffDataset::IsBlockAvailable( int nBlockId )
                 else
                 {
                     GTiffCacheOffsetOrCount(fp,
-                                            hTIFF->tif_dir.td_stripoffset_entry.tdir_offset.toff_long8,
+                                            nDirOffset,
                                             nBlockId,
                                             hTIFF->tif_dir.td_nstrips,
                                             hTIFF->tif_dir.td_stripoffset,
@@ -6044,10 +6050,16 @@ int GTiffDataset::IsBlockAvailable( int nBlockId )
 
             if( ~(hTIFF->tif_dir.td_stripbytecount[nBlockId]) == 0 )
             {
+                vsi_l_offset nDirOffset;
+                if( hTIFF->tif_flags&TIFF_BIGTIFF )
+                    nDirOffset = hTIFF->tif_dir.td_stripbytecount_entry.tdir_offset.toff_long8;
+                else
+                    nDirOffset = hTIFF->tif_dir.td_stripbytecount_entry.tdir_offset.toff_long;
+
                 if( hTIFF->tif_dir.td_stripbytecount_entry.tdir_type == TIFF_LONG )
                 {
                     GTiffCacheOffsetOrCount(fp,
-                                            hTIFF->tif_dir.td_stripbytecount_entry.tdir_offset.toff_long,
+                                            nDirOffset,
                                             nBlockId,
                                             hTIFF->tif_dir.td_nstrips,
                                             hTIFF->tif_dir.td_stripbytecount,
@@ -6056,7 +6068,7 @@ int GTiffDataset::IsBlockAvailable( int nBlockId )
                 else
                 {
                     GTiffCacheOffsetOrCount(fp,
-                                            hTIFF->tif_dir.td_stripbytecount_entry.tdir_offset.toff_long8,
+                                            nDirOffset,
                                             nBlockId,
                                             hTIFF->tif_dir.td_nstrips,
                                             hTIFF->tif_dir.td_stripbytecount,
diff --git a/frmts/hdf4/GNUmakefile b/frmts/hdf4/GNUmakefile
index 409e002..aac421c 100644
--- a/frmts/hdf4/GNUmakefile
+++ b/frmts/hdf4/GNUmakefile
@@ -18,7 +18,7 @@ lib-hdfeos:
 
 install-obj:	$(SUBLIBS) $(O_OBJ:.o=.$(OBJ_EXT))
 
-PLUGIN_SO       = gdal_HDF4.so
+PLUGIN_SO       = gdal_HDF4.$(SO_EXT)
 
 plugin: $(PLUGIN_SO)
 
diff --git a/frmts/hdf5/GNUmakefile b/frmts/hdf5/GNUmakefile
index bd87b66..a513630 100644
--- a/frmts/hdf5/GNUmakefile
+++ b/frmts/hdf5/GNUmakefile
@@ -17,3 +17,11 @@ clean:
 $(OBJ) $(O_OBJ):	hdf5dataset.h
 
 install-obj:	$(SUBLIBS) $(O_OBJ:.o=.$(OBJ_EXT))
+
+PLUGIN_SO       = gdal_HDF5.$(SO_EXT)
+
+plugin: $(PLUGIN_SO)
+
+$(PLUGIN_SO):   $(OBJ)
+	$(LD_SHARED) $(LNK_FLAGS) $(OBJ) $(CONFIG_LIBS_INS) $(LIBS) \
+		-o $(PLUGIN_SO)
diff --git a/frmts/hf2/hf2dataset.cpp b/frmts/hf2/hf2dataset.cpp
index 6d27834..45c67f9 100644
--- a/frmts/hf2/hf2dataset.cpp
+++ b/frmts/hf2/hf2dataset.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: hf2dataset.cpp 28053 2014-12-04 09:31:07Z rouault $
+ * $Id: hf2dataset.cpp 29772 2015-08-24 09:48:26Z rouault $
  *
  * Project:  HF2 driver
  * Purpose:  GDALDataset driver for HF2/HFZ dataset.
@@ -31,7 +31,7 @@
 #include "gdal_pam.h"
 #include "ogr_spatialref.h"
 
-CPL_CVSID("$Id: hf2dataset.cpp 28053 2014-12-04 09:31:07Z rouault $");
+CPL_CVSID("$Id: hf2dataset.cpp 29772 2015-08-24 09:48:26Z rouault $");
 
 CPL_C_START
 void    GDALRegister_HF2(void);
@@ -198,7 +198,7 @@ CPLErr HF2RasterBand::IReadBlock( int nBlockXOff, int nLineYOff,
                 for(i=1;i<nTileWidth;i++)
                 {
                     if (nWordSize == 1)
-                        nVal += ((char*)pabyData)[i-1];
+                        nVal += ((signed char*)pabyData)[i-1];
                     else if (nWordSize == 2)
                         nVal += ((GInt16*)pabyData)[i-1];
                     else
@@ -960,7 +960,7 @@ GDALDataset* HF2Dataset::CreateCopy( const char * pszFilename,
                         if (nWordSize == 1)
                         {
                             CPLAssert(nDiff >= -128 && nDiff <= 127);
-                            char chDiff = (char)nDiff;
+                            signed char chDiff = (signed char)nDiff;
                             VSIFWriteL(&chDiff, 1, 1, fp);
                         }
                         else if (nWordSize == 2)
@@ -1032,7 +1032,7 @@ GDALDataset* HF2Dataset::CreateCopy( const char * pszFilename,
                         if (nWordSize == 1)
                         {
                             CPLAssert(nDiff >= -128 && nDiff <= 127);
-                            char chDiff = (char)nDiff;
+                            signed char chDiff = (signed char)nDiff;
                             VSIFWriteL(&chDiff, 1, 1, fp);
                         }
                         else if (nWordSize == 2)
diff --git a/frmts/hfa/hfadataset.cpp b/frmts/hfa/hfadataset.cpp
index 7ac2f95..952c953 100644
--- a/frmts/hfa/hfadataset.cpp
+++ b/frmts/hfa/hfadataset.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: hfadataset.cpp 29206 2015-05-18 15:52:22Z rouault $
+ * $Id: hfadataset.cpp 29764 2015-08-23 14:30:43Z rouault $
  *
  * Name:     hfadataset.cpp
  * Project:  Erdas Imagine Driver
@@ -35,7 +35,7 @@
 #include "ogr_spatialref.h"
 #include "ogr_srs_api.h"
 
-CPL_CVSID("$Id: hfadataset.cpp 29206 2015-05-18 15:52:22Z rouault $");
+CPL_CVSID("$Id: hfadataset.cpp 29764 2015-08-23 14:30:43Z rouault $");
 
 CPL_C_START
 void	GDALRegister_HFA(void);
@@ -4968,29 +4968,8 @@ CPLErr HFADataset::ReadProjection()
     const Eprj_ProParameters  *psPro;
     const Eprj_MapInfo        *psMapInfo;
     OGRSpatialReference        oSRS;
-    char *pszPE_COORDSYS;
-
-/* -------------------------------------------------------------------- */
-/*      Special logic for PE string in ProjectionX node.                */
-/* -------------------------------------------------------------------- */
-    pszPE_COORDSYS = HFAGetPEString( hHFA );
-    if( pszPE_COORDSYS != NULL
-        && strlen(pszPE_COORDSYS) > 0 
-        && oSRS.SetFromUserInput( pszPE_COORDSYS ) == OGRERR_NONE )
-    {
-        CPLFree( pszPE_COORDSYS );
-
-        oSRS.morphFromESRI();
-        oSRS.Fixup();
-
-        CPLFree( pszProjection );
-        pszProjection = NULL;
-        oSRS.exportToWkt( &pszProjection );
-        
-        return CE_None;
-    }
-    
-    CPLFree( pszPE_COORDSYS );
+    char *pszPE_COORDSYS = NULL;
+    int bTryReadingPEString = TRUE;
 
 /* -------------------------------------------------------------------- */
 /*      General case for Erdas style projections.                       */
@@ -5024,6 +5003,38 @@ CPLErr HFADataset::ReadProjection()
     pszProjection = HFAPCSStructToWKT( psDatum, psPro, psMapInfo, 
                                        poMapInformation );
 
+    // If we got a valid projection and managed to identify a EPSG code,
+    // then do not use the ESRI PE String.
+    if( pszProjection != NULL )
+    {
+        OGRSpatialReference oSRS(pszProjection);
+        if( oSRS.GetAuthorityCode(NULL) != NULL )
+            bTryReadingPEString = FALSE;
+    }
+
+/* -------------------------------------------------------------------- */
+/*      Special logic for PE string in ProjectionX node.                */
+/* -------------------------------------------------------------------- */
+    if( bTryReadingPEString )
+        pszPE_COORDSYS = HFAGetPEString( hHFA );
+    if( pszPE_COORDSYS != NULL
+        && strlen(pszPE_COORDSYS) > 0 
+        && oSRS.SetFromUserInput( pszPE_COORDSYS ) == OGRERR_NONE )
+    {
+        CPLFree( pszPE_COORDSYS );
+
+        oSRS.morphFromESRI();
+        oSRS.Fixup();
+
+        CPLFree( pszProjection );
+        pszProjection = NULL;
+        oSRS.exportToWkt( &pszProjection );
+        
+        return CE_None;
+    }
+    
+    CPLFree( pszPE_COORDSYS );
+
     if( pszProjection != NULL )
         return CE_None;
     else
diff --git a/frmts/jp2kak/jp2kak.lst b/frmts/jp2kak/jp2kak.lst
index 005b509..55f334e 100644
--- a/frmts/jp2kak/jp2kak.lst
+++ b/frmts/jp2kak/jp2kak.lst
@@ -23,5 +23,6 @@ endif
 # The following are for Kakadu 7.5 and later.
 ifneq ($(wildcard $(KAKDIR)/apps/make/ssse3_region_decompressor.o),)
 KAK_OBJ +=	\
-    $(KAKDIR)/apps/make/ssse3_region_decompressor.o
+    $(KAKDIR)/apps/make/ssse3_region_decompressor.o \
+    $(KAKDIR)/apps/make/avx2_stripe_transfer.o
 endif
diff --git a/frmts/jp2kak/jp2kakdataset.cpp b/frmts/jp2kak/jp2kakdataset.cpp
index 74ddb0d..b09d45e 100644
--- a/frmts/jp2kak/jp2kakdataset.cpp
+++ b/frmts/jp2kak/jp2kakdataset.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: jp2kakdataset.cpp 29075 2015-04-30 12:51:21Z rouault $
+ * $Id: jp2kakdataset.cpp 29496 2015-07-07 22:29:46Z rouault $
  *
  * Project:  JPEG-2000
  * Purpose:  Implementation of the ISO/IEC 15444-1 standard based on Kakadu.
@@ -34,6 +34,8 @@
 #include "cpl_multiproc.h"
 #include "jp2_local.h"
 
+#include "../mem/memdataset.h"
+
 // Kakadu core includes
 #include "kdu_elementary.h"
 #include "kdu_messaging.h"
@@ -65,7 +67,7 @@
 #  define kdu_client void
 #endif
 
-CPL_CVSID("$Id: jp2kakdataset.cpp 29075 2015-04-30 12:51:21Z rouault $");
+CPL_CVSID("$Id: jp2kakdataset.cpp 29496 2015-07-07 22:29:46Z rouault $");
 
 // Before v7.5 Kakadu does not advertise its version well
 // After v7.5 Kakadu has KDU_{MAJOR,MINOR,PATCH}_VERSION defines so it's easier
@@ -1642,13 +1644,14 @@ JP2KAKDataset::DirectRasterIO( CPL_UNUSED GDALRWFlag eRWFlag,
 /* -------------------------------------------------------------------- */
         else
         {
+            int nDataTypeSize = GDALGetDataTypeSize(eBufType) / 8;
             GByte *pabyIntermediate = (GByte *) 
-                VSIMalloc3(dims.size.x, dims.size.y, 2*nBandCount );
+                VSIMalloc3(dims.size.x, dims.size.y, nDataTypeSize*nBandCount );
             if( pabyIntermediate == NULL )
             {
                 CPLError( CE_Failure, CPLE_OutOfMemory, 
                           "Failed to allocate %d byte intermediate decompression buffer for jpeg2000.", 
-                          dims.size.x * dims.size.y * nBandCount );
+                          dims.size.x * dims.size.y * nDataTypeSize * nBandCount );
 
                 return CE_Failure;
             }
@@ -1689,47 +1692,93 @@ JP2KAKDataset::DirectRasterIO( CPL_UNUSED GDALRWFlag eRWFlag,
                 
             decompressor.finish();
 
+            if( psExtraArg->eResampleAlg == GRIORA_NearestNeighbour )
+            {
 /* -------------------------------------------------------------------- */
 /*      Then resample (normally downsample) from the intermediate       */
 /*      buffer into the final buffer in the desired output layout.      */
 /* -------------------------------------------------------------------- */
-            int iY, iX;
-            double dfYRatio = dims.size.y / (double) nBufYSize;
-            double dfXRatio = dims.size.x / (double) nBufXSize;
-
-            for( iY = 0; iY < nBufYSize; iY++ )
-            {
-                int iSrcY = (int) floor( (iY + 0.5) * dfYRatio );
-
-                iSrcY = MIN(iSrcY, dims.size.y-1);
+                int iY, iX;
+                double dfYRatio = dims.size.y / (double) nBufYSize;
+                double dfXRatio = dims.size.x / (double) nBufXSize;
 
-                for( iX = 0; iX < nBufXSize; iX++ )
+                for( iY = 0; iY < nBufYSize; iY++ )
                 {
-                    int iSrcX = (int) floor( (iX + 0.5) * dfXRatio );
+                    int iSrcY = (int) floor( (iY + 0.5) * dfYRatio );
 
-                    iSrcX = MIN(iSrcX, dims.size.x-1);
+                    iSrcY = MIN(iSrcY, dims.size.y-1);
 
-                    for( i = 0; i < nBandCount; i++ )
+                    for( iX = 0; iX < nBufXSize; iX++ )
                     {
-                        if( eBufType == GDT_Byte )
-                            ((GByte *) pData)[iX*nPixelSpace
-                                              + iY*nLineSpace
-                                              + i*nBandSpace] = 
-                                pabyIntermediate[iSrcX*nBandCount
-                                                 + iSrcY*dims.size.x*nBandCount
-                                                 + i];
-                        else if( eBufType == GDT_Int16
-                                 || eBufType == GDT_UInt16 )
-                            ((GUInt16 *) pData)[iX*nPixelSpace/2
-                                              + iY*nLineSpace/2
-                                              + i*nBandSpace/2] = 
-                                ((GUInt16 *)pabyIntermediate)[
-                                    iSrcX*nBandCount
-                                    + iSrcY*dims.size.x*nBandCount
-                                    + i];
+                        int iSrcX = (int) floor( (iX + 0.5) * dfXRatio );
+
+                        iSrcX = MIN(iSrcX, dims.size.x-1);
+
+                        for( i = 0; i < nBandCount; i++ )
+                        {
+                            if( eBufType == GDT_Byte )
+                                ((GByte *) pData)[iX*nPixelSpace
+                                                + iY*nLineSpace
+                                                + i*nBandSpace] = 
+                                    pabyIntermediate[iSrcX*nBandCount
+                                                    + iSrcY*dims.size.x*nBandCount
+                                                    + i];
+                            else if( eBufType == GDT_Int16
+                                    || eBufType == GDT_UInt16 )
+                                ((GUInt16 *) pData)[iX*nPixelSpace/2
+                                                + iY*nLineSpace/2
+                                                + i*nBandSpace/2] = 
+                                    ((GUInt16 *)pabyIntermediate)[
+                                        iSrcX*nBandCount
+                                        + iSrcY*dims.size.x*nBandCount
+                                        + i];
+                        }
                     }
                 }
             }
+            else
+            {
+                /* Create a MEM dataset that wraps the input buffer */
+                GDALDataset* poMEMDS = MEMDataset::Create("", dims.size.x,
+                                                        dims.size.y, 0,
+                                                        eBufType, NULL);
+                char szBuffer[64];
+                int nRet;
+
+                for( i = 0; i < nBandCount; i++ )
+                {
+
+                    nRet = CPLPrintPointer(szBuffer, pabyIntermediate + i * nDataTypeSize, sizeof(szBuffer));
+                    szBuffer[nRet] = 0;
+                    char** papszOptions = CSLSetNameValue(NULL, "DATAPOINTER", szBuffer);
+
+                    papszOptions = CSLSetNameValue(papszOptions, "PIXELOFFSET",
+                        CPLSPrintf(CPL_FRMT_GIB, (GIntBig)nDataTypeSize * nBandCount));
+
+                    papszOptions = CSLSetNameValue(papszOptions, "LINEOFFSET",
+                        CPLSPrintf(CPL_FRMT_GIB, (GIntBig)nDataTypeSize * nBandCount * dims.size.x));
+
+                    poMEMDS->AddBand(eBufType, papszOptions);
+                    CSLDestroy(papszOptions);
+
+                    const char* pszNBITS = GetRasterBand(i+1)->GetMetadataItem("NBITS", "IMAGE_STRUCTURE");
+                    if( pszNBITS )
+                        poMEMDS->GetRasterBand(i+1)->SetMetadataItem("NBITS", pszNBITS, "IMAGE_STRUCTURE");
+                }
+
+                GDALRasterIOExtraArg sExtraArgTmp;
+                INIT_RASTERIO_EXTRA_ARG(sExtraArgTmp);
+                sExtraArgTmp.eResampleAlg = psExtraArg->eResampleAlg;
+
+                poMEMDS->RasterIO(GF_Read, 0, 0, dims.size.x, dims.size.y,
+                                  pData, nBufXSize, nBufYSize,
+                                  eBufType,
+                                  nBandCount, NULL,
+                                  nPixelSpace, nLineSpace, nBandSpace,
+                                  &sExtraArgTmp);
+
+                GDALClose(poMEMDS);
+            }
 
             CPLFree( pabyIntermediate );
         }
diff --git a/frmts/jp2kak/makefile.vc b/frmts/jp2kak/makefile.vc
index db4e524..0df4db3 100644
--- a/frmts/jp2kak/makefile.vc
+++ b/frmts/jp2kak/makefile.vc
@@ -6,7 +6,7 @@ GDAL_ROOT	=	..\..
 KAKINC = -I$(KAKSRC)/managed/all_includes \
        -I$(KAKSRC)/apps/jp2
 OBJ_EXT =	obj
-OBJ_PREFIX =	$(KAKDIR)\v6_generated_x86
+OBJ_PREFIX =	$(KAKOBJDIR)
 OBJ_CONFIG =	release
 
 KAK_APPS_OBJ =	\
@@ -22,8 +22,15 @@ KAK_APPS_OBJ =	\
 	     $(OBJ_PREFIX)\compress\$(OBJ_CONFIG)\kdu_tiff.obj \
 	     $(OBJ_PREFIX)\compress\$(OBJ_CONFIG)\jpx.obj
 
+!IFDEF KAKADU_7_5_OR_LATER
+KAK_APPS_OBJ = $(KAK_APPS_OBJ) \
+       $(OBJ_PREFIX)\buffered_expand\$(OBJ_CONFIG)\avx2_stripe_transfer.obj \
+       $(OBJ_PREFIX)\buffered_expand\$(OBJ_CONFIG)\ssse3_stripe_transfer.obj \
+       $(OBJ_PREFIX)\render\$(OBJ_CONFIG)\ssse3_region_decompressor.obj \
+!ENDIF
+
 OBJ	=	jp2kakdataset.obj
-EXTRAFLAGS = 	$(KAKINC) /DKDU_PENTIUM_MSVC /EHsc
+EXTRAFLAGS = 	$(KAKINC) /DKDU_PENTIUM_MSVC /EHsc $(KAKFLAGS)
 
 default:	$(OBJ) kakinstall
 	xcopy /D  /Y *.obj ..\o
diff --git a/frmts/jpeg2000/jpeg2000_vsil_io.cpp b/frmts/jpeg2000/jpeg2000_vsil_io.cpp
index e1c017c..982b4a0 100644
--- a/frmts/jpeg2000/jpeg2000_vsil_io.cpp
+++ b/frmts/jpeg2000/jpeg2000_vsil_io.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: jpeg2000_vsil_io.cpp 27044 2014-03-16 23:41:27Z rouault $
+ * $Id: jpeg2000_vsil_io.cpp 29469 2015-07-04 11:42:30Z rouault $
  *
  * Project:  JPEG-2000
  * Purpose:  Return a stream for a VSIL file
@@ -15,7 +15,7 @@
  *   British Columbia.
  * Copyright (c) 2001-2003 Michael David Adams.
  * All rights reserved.
- * Copyright (c) 2009-2010, Even Rouault <even dot rouault at mines-paris dot org>
+ * Copyright (c) 2009-2010, Even Rouault <even dot rouault at mines-paris dot org>
  */
 
 /* __START_OF_JASPER_LICENSE__
@@ -77,7 +77,7 @@
 #include "jpeg2000_vsil_io.h"
 #include "cpl_vsi.h"
 
-CPL_CVSID("$Id: jpeg2000_vsil_io.cpp 27044 2014-03-16 23:41:27Z rouault $");
+CPL_CVSID("$Id: jpeg2000_vsil_io.cpp 29469 2015-07-04 11:42:30Z rouault $");
 
 /*
  * File descriptor file object.
diff --git a/frmts/jpeg2000/jpeg2000_vsil_io.h b/frmts/jpeg2000/jpeg2000_vsil_io.h
index 7a560e2..3c65713 100644
--- a/frmts/jpeg2000/jpeg2000_vsil_io.h
+++ b/frmts/jpeg2000/jpeg2000_vsil_io.h
@@ -1,12 +1,12 @@
 /******************************************************************************
- * $Id: jpeg2000_vsil_io.h 27044 2014-03-16 23:41:27Z rouault $
+ * $Id: jpeg2000_vsil_io.h 29469 2015-07-04 11:42:30Z rouault $
  *
  * Project:  JPEG-2000
  * Purpose:  Return a stream for a VSIL file
  * Author:   Even Rouault, even dot rouault at mines dash paris dot org
  *
  ******************************************************************************
- * Copyright (c) 2009, Even Rouault <even dot rouault at mines-paris dot org>
+ * Copyright (c) 2009, Even Rouault <even dot rouault at mines-paris dot org>
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
diff --git a/frmts/nitf/ecrgtocdataset.cpp b/frmts/nitf/ecrgtocdataset.cpp
index 01c1de8..ff596e7 100644
--- a/frmts/nitf/ecrgtocdataset.cpp
+++ b/frmts/nitf/ecrgtocdataset.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: ecrgtocdataset.cpp 27384 2014-05-24 12:28:12Z rouault $
+ * $Id: ecrgtocdataset.cpp 29778 2015-08-25 09:02:53Z rouault $
  *
  * Project:  ECRG TOC read Translator
  * Purpose:  Implementation of ECRGTOCDataset and ECRGTOCSubDataset.
@@ -35,7 +35,7 @@
 #include "cpl_minixml.h"
 #include <vector>
 
-CPL_CVSID("$Id: ecrgtocdataset.cpp 27384 2014-05-24 12:28:12Z rouault $");
+CPL_CVSID("$Id: ecrgtocdataset.cpp 29778 2015-08-25 09:02:53Z rouault $");
 
 /** Overview of used classes :
    - ECRGTOCDataset : lists the different subdatasets, listed in the .xml,
@@ -85,7 +85,8 @@ class ECRGTOCDataset : public GDALPamDataset
 
     void                AddSubDataset(const char* pszFilename,
                                       const char* pszProductTitle,
-                                      const char* pszDiscId);
+                                      const char* pszDiscId,
+                                      const char* pszScale);
 
     virtual CPLErr GetGeoTransform( double * padfGeoTransform)
     {
@@ -102,6 +103,7 @@ class ECRGTOCDataset : public GDALPamDataset
                                 CPLXMLNode* psXML,
                                 CPLString osProduct,
                                 CPLString osDiscId,
+                                CPLString osScale,
                                 const char* pszFilename);
     
     static int Identify( GDALOpenInfo * poOpenInfo );
@@ -153,12 +155,28 @@ class ECRGTOCSubDataset : public VRTDataset
 };
 
 /************************************************************************/
+/*                           LaunderString()                            */
+/************************************************************************/
+
+static CPLString LaunderString(const char* pszStr)
+{
+    CPLString osRet(pszStr);
+    for(size_t i=0;i<osRet.size();i++)
+    {
+        if( osRet[i] == ':' || osRet[i] == ' ' )
+            osRet[i] = '_';
+    }
+    return osRet;
+}
+
+/************************************************************************/
 /*                           AddSubDataset()                            */
 /************************************************************************/
 
 void ECRGTOCDataset::AddSubDataset( const char* pszFilename,
                                     const char* pszProductTitle,
-                                    const char* pszDiscId )
+                                    const char* pszDiscId,
+                                    const char* pszScale)
 
 {
     char	szName[80];
@@ -167,13 +185,15 @@ void ECRGTOCDataset::AddSubDataset( const char* pszFilename,
     sprintf( szName, "SUBDATASET_%d_NAME", nCount+1 );
     papszSubDatasets = 
         CSLSetNameValue( papszSubDatasets, szName, 
-              CPLSPrintf( "ECRG_TOC_ENTRY:%s:%s:%s",
-                          pszProductTitle, pszDiscId, pszFilename ) );
+              CPLSPrintf( "ECRG_TOC_ENTRY:%s:%s:%s:%s",
+                          LaunderString(pszProductTitle).c_str(),
+                          LaunderString(pszDiscId).c_str(),
+                          LaunderString(pszScale).c_str(), pszFilename ) );
 
     sprintf( szName, "SUBDATASET_%d_DESC", nCount+1 );
     papszSubDatasets =
         CSLSetNameValue( papszSubDatasets, szName,
-            CPLSPrintf( "%s:%s", pszProductTitle, pszDiscId));
+            CPLSPrintf( "Product %s, disc %s, scale %s", pszProductTitle, pszDiscId, pszScale));
 }
 
 /************************************************************************/
@@ -638,6 +658,7 @@ GDALDataset* ECRGTOCDataset::Build(const char* pszTOCFilename,
                                    CPLXMLNode* psXML,
                                    CPLString osProduct,
                                    CPLString osDiscId,
+                                   CPLString osScale,
                                    const char* pszOpenInfoFilename)
 {
     CPLXMLNode* psTOC = CPLGetXMLNode(psXML, "=Table_of_Contents");
@@ -679,7 +700,7 @@ GDALDataset* ECRGTOCDataset::Build(const char* pszTOCFilename,
             continue;
         }
 
-        if (bLookForSubDataset && strcmp(pszProductTitle, osProduct.c_str()) != 0)
+        if (bLookForSubDataset && strcmp(LaunderString(pszProductTitle), osProduct.c_str()) != 0)
             continue;
 
         for(CPLXMLNode* psIter2 = psIter1->psChild;
@@ -698,11 +719,9 @@ GDALDataset* ECRGTOCDataset::Build(const char* pszTOCFilename,
                 continue;
             }
 
-            if (bLookForSubDataset && strcmp(pszDiscId, osDiscId.c_str()) != 0)
+            if (bLookForSubDataset && strcmp(LaunderString(pszDiscId), osDiscId.c_str()) != 0)
                 continue;
 
-            nCountSubDataset ++;
-
             CPLXMLNode* psFrameList = CPLGetXMLNode(psIter2, "frame_list");
             if (psFrameList == NULL)
             {
@@ -711,12 +730,6 @@ GDALDataset* ECRGTOCDataset::Build(const char* pszTOCFilename,
                 continue;
             }
 
-            int nValidFrames = 0;
-
-            std::vector<FrameDesc> aosFrameDesc;
-
-            int nSubDatasetScale = -1;
-
             for(CPLXMLNode* psIter3 = psFrameList->psChild;
                             psIter3 != NULL;
                             psIter3 = psIter3->psNext)
@@ -742,10 +755,43 @@ GDALDataset* ECRGTOCDataset::Build(const char* pszTOCFilename,
                     continue;
                 }
 
-                if (nValidFrames == 0)
-                    nSubDatasetScale = nScale;
-                else
-                    nSubDatasetScale = -1;
+                if( bLookForSubDataset )
+                {
+                    if( osScale.size() )
+                    {
+                        if( strcmp(LaunderString(pszSize), osScale.c_str()) != 0 )
+                        {
+                            continue;
+                        }
+                    }
+                    else
+                    {
+                        int nCountScales = 0;
+                        for(CPLXMLNode* psIter4 = psFrameList->psChild;
+                                psIter4 != NULL;
+                                psIter4 = psIter4->psNext)
+                        {
+                            if (!(psIter4->eType == CXT_Element &&
+                                psIter4->pszValue != NULL &&
+                                strcmp(psIter4->pszValue, "scale") == 0))
+                                continue;
+                            nCountScales ++;
+                        }
+                        if( nCountScales > 1 )
+                        {
+                            CPLError(CE_Failure, CPLE_AppDefined,
+                                     "Scale should be mentionned in subdatasets "
+                                     "syntax since this disk contains several scales");
+                            delete poDS;
+                            return NULL;
+                        }
+                    }
+                }
+
+                nCountSubDataset ++;
+
+                std::vector<FrameDesc> aosFrameDesc;
+                int nValidFrames = 0;
 
                 for(CPLXMLNode* psIter4 = psIter3->psChild;
                                 psIter4 != NULL;
@@ -860,6 +906,8 @@ GDALDataset* ECRGTOCDataset::Build(const char* pszTOCFilename,
                             dfGlobalPixelYSize = dfPixelYSize;
                     }
 
+                    nValidFrames ++;
+
                     if (bLookForSubDataset)
                     {
                         FrameDesc frameDesc;
@@ -870,32 +918,32 @@ GDALDataset* ECRGTOCDataset::Build(const char* pszTOCFilename,
                         aosFrameDesc.push_back(frameDesc);
                     }
                 }
-            }
 
-            if (bLookForSubDataset)
-            {
-                delete poDS;
-                if (nValidFrames == 0)
-                    return NULL;
-                return ECRGTOCSubDataset::Build(pszProductTitle,
-                                                pszDiscId,
-                                                nSubDatasetScale,
-                                                nCountSubDataset,
-                                                pszTOCFilename,
-                                                aosFrameDesc,
-                                                dfGlobalMinX,
-                                                dfGlobalMinY,
-                                                dfGlobalMaxX,
-                                                dfGlobalMaxY,
-                                                dfGlobalPixelXSize,
-                                                dfGlobalPixelYSize);
-            }
+                if (bLookForSubDataset)
+                {
+                    delete poDS;
+                    if (nValidFrames == 0)
+                        return NULL;
+                    return ECRGTOCSubDataset::Build(pszProductTitle,
+                                                    pszDiscId,
+                                                    nScale,
+                                                    nCountSubDataset,
+                                                    pszTOCFilename,
+                                                    aosFrameDesc,
+                                                    dfGlobalMinX,
+                                                    dfGlobalMinY,
+                                                    dfGlobalMaxX,
+                                                    dfGlobalMaxY,
+                                                    dfGlobalPixelXSize,
+                                                    dfGlobalPixelYSize);
+                }
 
-            if (nValidFrames)
-            {
-                poDS->AddSubDataset(pszOpenInfoFilename,
-                                    pszProductTitle, pszDiscId);
-                nSubDatasets ++;
+                if (nValidFrames)
+                {
+                    poDS->AddSubDataset(pszOpenInfoFilename,
+                                        pszProductTitle, pszDiscId, pszSize);
+                    nSubDatasets ++;
+                }
             }
         }
     }
@@ -959,7 +1007,7 @@ int ECRGTOCDataset::Identify( GDALOpenInfo * poOpenInfo )
     if( pabyHeader == NULL )
         return FALSE;
 
-    if ( strstr(pabyHeader, "<Table_of_Contents>") != NULL &&
+    if ( strstr(pabyHeader, "<Table_of_Contents") != NULL &&
          strstr(pabyHeader, "<file_header ") != NULL)
         return TRUE;
 
@@ -977,7 +1025,8 @@ GDALDataset *ECRGTOCDataset::Open( GDALOpenInfo * poOpenInfo )
 
 {
     const char *pszFilename = poOpenInfo->pszFilename;
-    CPLString osProduct, osDiscId;
+    CPLString osFilename;
+    CPLString osProduct, osDiscId, osScale;
 
     if( !Identify( poOpenInfo ) )
         return NULL;
@@ -985,20 +1034,56 @@ GDALDataset *ECRGTOCDataset::Open( GDALOpenInfo * poOpenInfo )
     if( EQUALN(pszFilename, "ECRG_TOC_ENTRY:",strlen("ECRG_TOC_ENTRY:")))
     {
         pszFilename += strlen("ECRG_TOC_ENTRY:");
-        osProduct = pszFilename;
-        size_t iPos = osProduct.find(":");
-        if (iPos == std::string::npos)
+        
+        /* PRODUCT:DISK:SCALE:FILENAME (or PRODUCT:DISK:FILENAME historically) */
+        /* with FILENAME potentially C:\BLA... */
+        char** papszTokens = CSLTokenizeString2(pszFilename, ":", 0);
+        int nTokens = CSLCount(papszTokens);
+        if( nTokens != 3 && nTokens != 4 && nTokens != 5 )
+        {
+            CSLDestroy(papszTokens);
             return NULL;
-        osProduct.resize(iPos);
+        }
+        
+        osProduct = papszTokens[0];
+        osDiscId = papszTokens[1];
 
-        pszFilename += iPos + 1;
-        osDiscId = pszFilename;
-        iPos = osDiscId.find(":");
-        if (iPos == std::string::npos)
+        if( nTokens == 3 )
+            osFilename = papszTokens[2];
+        else if( nTokens == 4 )
+        {
+            if( strlen(papszTokens[2]) == 1 &&
+                (papszTokens[3][0] == '\\' ||
+                 papszTokens[3][0] == '/') )
+            {
+                osFilename = papszTokens[2];
+                osFilename += ":";
+                osFilename = papszTokens[3];
+            }
+            else
+            {
+                osScale = papszTokens[2];
+                osFilename = papszTokens[3];
+            }
+        }
+        else if( nTokens == 5 &&
+                strlen(papszTokens[3]) == 1 &&
+                (papszTokens[4][0] == '\\' ||
+                 papszTokens[4][0] == '/') )
+        {
+            osScale = papszTokens[2];
+            osFilename = papszTokens[3];
+            osFilename += ":";
+            osFilename = papszTokens[4];
+        }
+        else
+        {
+            CSLDestroy(papszTokens);
             return NULL;
-        osDiscId.resize(iPos);
+        }
 
-        pszFilename += iPos + 1;
+        CSLDestroy(papszTokens);
+        pszFilename = osFilename.c_str();
     }
 
 /* -------------------------------------------------------------------- */
@@ -1011,6 +1096,7 @@ GDALDataset *ECRGTOCDataset::Open( GDALOpenInfo * poOpenInfo )
     }
 
     GDALDataset* poDS = Build( pszFilename, psXML, osProduct, osDiscId,
+                               osScale,
                                poOpenInfo->pszFilename);
     CPLDestroyXMLNode(psXML);
 
diff --git a/frmts/northwood/northwood.cpp b/frmts/northwood/northwood.cpp
index feeddc1..de08f58 100644
--- a/frmts/northwood/northwood.cpp
+++ b/frmts/northwood/northwood.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: northwood.cpp 27745 2014-09-27 16:38:57Z goatbar $
+ * $Id: northwood.cpp 30004 2015-09-01 08:17:04Z rouault $
  *
  * Project:  GRC/GRD Reader
  * Purpose:  Northwood Format basic implementation
@@ -387,9 +387,9 @@ void createIP( int index, unsigned char r, unsigned char g, unsigned char b,
     float bslope = (float)(b - map[wm].b) / (float)(index - wm);
     for( i = wm + 1; i < index; i++)
     {
-        map[i].r = map[wm].r + (unsigned char)(((i - wm) * rslope) + 0.5);
-        map[i].g = map[wm].g + (unsigned char)(((i - wm) * gslope) + 0.5);
-        map[i].b = map[wm].b + (unsigned char)(((i - wm) * bslope) + 0.5);
+        map[i].r = (unsigned char)(map[wm].r + ((i - wm) * rslope) + 0.5);
+        map[i].g = (unsigned char)(map[wm].g + ((i - wm) * gslope) + 0.5);
+        map[i].b = (unsigned char)(map[wm].b + ((i - wm) * bslope) + 0.5);
     }
     map[index].r = r;
     map[index].g = g;
diff --git a/frmts/pcidsk/sdk/channel/cpcidskchannel.cpp b/frmts/pcidsk/sdk/channel/cpcidskchannel.cpp
index 5ffb2fe..9c053d4 100644
--- a/frmts/pcidsk/sdk/channel/cpcidskchannel.cpp
+++ b/frmts/pcidsk/sdk/channel/cpcidskchannel.cpp
@@ -200,7 +200,7 @@ PCIDSKChannel *CPCIDSKChannel::GetOverview( int overview_index )
     EstablishOverviewInfo();
 
     if( overview_index < 0 || overview_index >= (int) overview_infos.size() )
-        ThrowPCIDSKException( "Non existant overview (%d) requested.", 
+        ThrowPCIDSKException( "Non existent overview (%d) requested.", 
                               overview_index );
 
     if( overview_bands[overview_index] == NULL )
@@ -231,7 +231,7 @@ bool CPCIDSKChannel::IsOverviewValid( int overview_index )
     EstablishOverviewInfo();
 
     if( overview_index < 0 || overview_index >= (int) overview_infos.size() )
-        ThrowPCIDSKException( "Non existant overview (%d) requested.", 
+        ThrowPCIDSKException( "Non existent overview (%d) requested.", 
                               overview_index );
 
     int sis_id, validity=0;
@@ -252,7 +252,7 @@ std::string CPCIDSKChannel::GetOverviewResampling( int overview_index )
     EstablishOverviewInfo();
 
     if( overview_index < 0 || overview_index >= (int) overview_infos.size() )
-        ThrowPCIDSKException( "Non existant overview (%d) requested.", 
+        ThrowPCIDSKException( "Non existent overview (%d) requested.", 
                               overview_index );
 
     int sis_id, validity=0;
@@ -275,7 +275,7 @@ void CPCIDSKChannel::SetOverviewValidity( int overview_index,
     EstablishOverviewInfo();
 
     if( overview_index < 0 || overview_index >= (int) overview_infos.size() )
-        ThrowPCIDSKException( "Non existant overview (%d) requested.", 
+        ThrowPCIDSKException( "Non existent overview (%d) requested.", 
                               overview_index );
 
     int sis_id, validity=0;
diff --git a/frmts/pcidsk/sdk/channel/ctiledchannel.cpp b/frmts/pcidsk/sdk/channel/ctiledchannel.cpp
index f4996d8..cbdad3b 100644
--- a/frmts/pcidsk/sdk/channel/ctiledchannel.cpp
+++ b/frmts/pcidsk/sdk/channel/ctiledchannel.cpp
@@ -358,7 +358,7 @@ int CTiledChannel::ReadBlock( int block_index, void *buffer,
 
     if( block_index < 0 || block_index >= tile_count )
     {
-        ThrowPCIDSKException( "Requested non-existant block (%d)", 
+        ThrowPCIDSKException( "Requested non-existent block (%d)", 
                               block_index );
     }
 
@@ -516,7 +516,7 @@ int CTiledChannel::WriteBlock( int block_index, void *buffer )
 
     if( block_index < 0 || block_index >= tile_count )
     {
-        ThrowPCIDSKException( "Requested non-existant block (%d)", 
+        ThrowPCIDSKException( "Requested non-existent block (%d)", 
                               block_index );
     }
 
diff --git a/frmts/pcidsk/sdk/segment/cpcidskbitmap.cpp b/frmts/pcidsk/sdk/segment/cpcidskbitmap.cpp
index e30ebc3..89013a5 100644
--- a/frmts/pcidsk/sdk/segment/cpcidskbitmap.cpp
+++ b/frmts/pcidsk/sdk/segment/cpcidskbitmap.cpp
@@ -238,7 +238,7 @@ int CPCIDSKBitmap::ReadBlock( int block_index, void *buffer,
 
     if( block_index < 0 || block_index >= GetBlockCount() )
     {
-        ThrowPCIDSKException( "Requested non-existant block (%d)", 
+        ThrowPCIDSKException( "Requested non-existent block (%d)", 
                               block_index );
     }
 /* -------------------------------------------------------------------- */
@@ -343,7 +343,7 @@ int CPCIDSKBitmap::GetOverviewCount()
 PCIDSKChannel *CPCIDSKBitmap::GetOverview( CPL_UNUSED int i )
 {
     // The %d is ignored in the exception.
-    ThrowPCIDSKException("Non-existant overview %d requested on bitmap segment.");
+    ThrowPCIDSKException("Non-existent overview %d requested on bitmap segment.");
     return NULL;
 }
 
diff --git a/frmts/pdf/gdal_pdf.h b/frmts/pdf/gdal_pdf.h
index 2599d46..10cc9b1 100644
--- a/frmts/pdf/gdal_pdf.h
+++ b/frmts/pdf/gdal_pdf.h
@@ -216,6 +216,7 @@ class PDFDataset : public GDALPamDataset
                                   const char* pszOptionName,
                                   const char* pszDefaultVal);
 
+    int                 bHasLoadedLayers;
     int                 nLayers;
     OGRLayer          **papoLayers;
 
diff --git a/frmts/pdf/makefile.vc b/frmts/pdf/makefile.vc
index 07867fe..fbca18f 100644
--- a/frmts/pdf/makefile.vc
+++ b/frmts/pdf/makefile.vc
@@ -46,10 +46,10 @@ clean:
 	
 plugin:	$(PLUGIN_DLL)
 
-$(PLUGIN_DLL): $(OBJ)
-	link /dll $(LDEBUG) /out:$(PLUGIN_DLL) $(OBJ) $(GDALLIB) $(POPPLER_LIBS) $(PODOFO_LIBS)
+$(PLUGIN_DLL): $(OBJ)
+	link /dll $(LDEBUG) /out:$(PLUGIN_DLL) $(OBJ) $(GDALLIB) $(POPPLER_LIBS) $(PODOFO_LIBS)
 	if exist $(PLUGIN_DLL).manifest mt -manifest $(PLUGIN_DLL).manifest -outputresource:$(PLUGIN_DLL);2
 
-plugin-install:
-	-mkdir $(PLUGINDIR)
+plugin-install:
+	-mkdir $(PLUGINDIR)
 	$(INSTALL) $(PLUGIN_DLL) $(PLUGINDIR)
\ No newline at end of file
diff --git a/frmts/pdf/pdfdataset.cpp b/frmts/pdf/pdfdataset.cpp
index 4016a25..28e3e89 100644
--- a/frmts/pdf/pdfdataset.cpp
+++ b/frmts/pdf/pdfdataset.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: pdfdataset.cpp 28978 2015-04-23 09:14:09Z rouault $
+ * $Id: pdfdataset.cpp 29846 2015-08-27 15:29:32Z rouault $
  *
  * Project:  PDF driver
  * Purpose:  GDALDataset driver for PDF dataset.
@@ -48,7 +48,7 @@
 
 /* g++ -fPIC -g -Wall frmts/pdf/pdfdataset.cpp -shared -o gdal_PDF.so -Iport -Igcore -Iogr -L. -lgdal -lpoppler -I/usr/include/poppler */
 
-CPL_CVSID("$Id: pdfdataset.cpp 28978 2015-04-23 09:14:09Z rouault $");
+CPL_CVSID("$Id: pdfdataset.cpp 29846 2015-08-27 15:29:32Z rouault $");
 
 CPL_C_START
 void    GDALRegister_PDF(void);
@@ -1252,7 +1252,8 @@ PDFDataset::PDFDataset()
     nBlockXSize = 0;
     nBlockYSize = 0;
     papszOpenOptions = NULL;
-    
+
+    bHasLoadedLayers = FALSE;
     nLayers = 0;
     papoLayers = NULL;
 
@@ -3417,13 +3418,11 @@ GDALDataset *PDFDataset::Open( GDALOpenInfo * poOpenInfo )
             poDS->SetBand(iBand, new PDFRasterBand(poDS, iBand));
     }
 
-    int bHasNonEmptyVectorLayers = poDS->OpenVectorLayers(poPageDict);
-
-    /* Check if this is a raster-only PCIDSK file and that we are */
+    /* Check if this is a raster-only PDF file and that we are */
     /* opened in vector-only mode */
     if( (poOpenInfo->nOpenFlags & GDAL_OF_RASTER) == 0 &&
         (poOpenInfo->nOpenFlags & GDAL_OF_VECTOR) != 0 &&
-        !bHasNonEmptyVectorLayers )
+        !poDS->OpenVectorLayers(poPageDict) )
     {
         CPLDebug("PCIDSK", "This is a raster-only PDF dataset, "
                     "but it has been opened in vector-only mode");
diff --git a/frmts/pdf/pdfreadvectors.cpp b/frmts/pdf/pdfreadvectors.cpp
index 37d8f1d..4b9bc39 100644
--- a/frmts/pdf/pdfreadvectors.cpp
+++ b/frmts/pdf/pdfreadvectors.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: pdfreadvectors.cpp 27942 2014-11-11 00:57:41Z rouault $
+ * $Id: pdfreadvectors.cpp 29846 2015-08-27 15:29:32Z rouault $
  *
  * Project:  PDF driver
  * Purpose:  GDALDataset driver for PDF dataset (read vector features)
@@ -32,7 +32,7 @@
 #define SQUARE(x) ((x)*(x))
 #define EPSILON 1e-5
 
-CPL_CVSID("$Id: pdfreadvectors.cpp 27942 2014-11-11 00:57:41Z rouault $");
+CPL_CVSID("$Id: pdfreadvectors.cpp 29846 2015-08-27 15:29:32Z rouault $");
 
 #if defined(HAVE_POPPLER) || defined(HAVE_PODOFO)
 
@@ -42,6 +42,17 @@ CPL_CVSID("$Id: pdfreadvectors.cpp 27942 2014-11-11 00:57:41Z rouault $");
 
 int PDFDataset::OpenVectorLayers(GDALPDFDictionary* poPageDict)
 {
+    if( bHasLoadedLayers )
+        return TRUE;
+    bHasLoadedLayers = TRUE;
+
+    if( poPageDict == NULL )
+    {
+        poPageDict = poPageObj->GetDictionary();
+        if ( poPageDict == NULL )
+            return FALSE;
+    }
+
     GetCatalog();
     if( poCatalogObject == NULL )
         return FALSE;
@@ -206,6 +217,7 @@ int PDFDataset::TestCapability( CPL_UNUSED const char * pszCap )
 OGRLayer *PDFDataset::GetLayer( int iLayer )
 
 {
+    OpenVectorLayers(NULL);
     if (iLayer < 0 || iLayer >= nLayers)
         return NULL;
 
@@ -218,6 +230,7 @@ OGRLayer *PDFDataset::GetLayer( int iLayer )
 
 int PDFDataset::GetLayerCount()
 {
+    OpenVectorLayers(NULL);
     return nLayers;
 }
 
diff --git a/frmts/pds/pdsdataset.cpp b/frmts/pds/pdsdataset.cpp
index 6473a02..f569f24 100644
--- a/frmts/pds/pdsdataset.cpp
+++ b/frmts/pds/pdsdataset.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: pdsdataset.cpp 28053 2014-12-04 09:31:07Z rouault $
+ * $Id: pdsdataset.cpp 29625 2015-08-07 20:38:54Z rouault $
  *
  * Project:  PDS Driver; Planetary Data System Format
  * Purpose:  Implementation of PDSDataset
@@ -47,7 +47,7 @@
 #include "cpl_string.h" 
 #include "nasakeywordhandler.h"
 
-CPL_CVSID("$Id: pdsdataset.cpp 28053 2014-12-04 09:31:07Z rouault $");
+CPL_CVSID("$Id: pdsdataset.cpp 29625 2015-08-07 20:38:54Z rouault $");
 
 CPL_C_START
 void	GDALRegister_PDS(void);
@@ -857,10 +857,15 @@ int PDSDataset::ParseImage( CPLString osPrefix, CPLString osFilenamePrefix )
             break;
           case 16 :
             if( strstr(osST,"UNSIGNED") != NULL )
+            {
+                dfNoData = NULL1;
                 eDataType = GDT_UInt16;
+            }
             else
+            {
                 eDataType = GDT_Int16;
-            dfNoData = NULL2;
+                dfNoData = NULL2;
+            }
             break;
           case 32 :
             eDataType = GDT_Float32;
diff --git a/frmts/postgisraster/postgisrasterdataset.cpp b/frmts/postgisraster/postgisrasterdataset.cpp
index b1dec9c..8847ab5 100644
--- a/frmts/postgisraster/postgisrasterdataset.cpp
+++ b/frmts/postgisraster/postgisrasterdataset.cpp
@@ -2807,6 +2807,15 @@ int PostGISRasterDataset::Identify(GDALOpenInfo* poOpenInfo)
     {
         return FALSE;
     }
+    
+    // Will avoid a OGR PostgreSQL connection string to be recognized as a
+    // PostgisRaster one and later fail (#6034)
+    if( strstr(poOpenInfo->pszFilename, " schemas=") ||
+        strstr(poOpenInfo->pszFilename, " SCHEMAS=") )
+    {
+        return FALSE;
+    }
+    
     return TRUE;
 }
 
diff --git a/frmts/rik/rikdataset.cpp b/frmts/rik/rikdataset.cpp
index 76580a4..b0d0817 100644
--- a/frmts/rik/rikdataset.cpp
+++ b/frmts/rik/rikdataset.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: rikdataset.cpp 27942 2014-11-11 00:57:41Z rouault $
+ * $Id: rikdataset.cpp 29720 2015-08-21 20:57:27Z rouault $
  *
  * Project:  RIK Reader
  * Purpose:  All code for RIK Reader
@@ -32,7 +32,7 @@
 #include <zlib.h>
 #include "gdal_pam.h"
 
-CPL_CVSID("$Id: rikdataset.cpp 27942 2014-11-11 00:57:41Z rouault $");
+CPL_CVSID("$Id: rikdataset.cpp 29720 2015-08-21 20:57:27Z rouault $");
 
 CPL_C_START
 void	GDALRegister_RIK(void);
@@ -686,11 +686,18 @@ int RIKDataset::Identify( GDALOpenInfo * poOpenInfo )
         }
         if( actLength == 0 )
             return -1;
-        if( strlen( (const char*)poOpenInfo->pabyHeader + 2 ) != actLength )
+        
+        for( int i=0;i<actLength;i++ )
         {
-            return FALSE;
+            if( poOpenInfo->pabyHeader[2+i] == 0 )
+                return FALSE;
         }
-        return TRUE;
+
+        if( EQUAL( CPLGetExtension(poOpenInfo->pszFilename), "rik") )
+            return TRUE;
+
+        // We really need Open to be able to conclude
+        return -1;
     }
 }
 
diff --git a/frmts/vrt/vrtdataset.cpp b/frmts/vrt/vrtdataset.cpp
index 29a4431..41a2a45 100644
--- a/frmts/vrt/vrtdataset.cpp
+++ b/frmts/vrt/vrtdataset.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: vrtdataset.cpp 29294 2015-06-05 08:52:15Z rouault $
+ * $Id: vrtdataset.cpp 29616 2015-08-06 10:07:50Z rouault $
  *
  * Project:  Virtual GDAL Datasets
  * Purpose:  Implementation of VRTDataset
@@ -33,7 +33,7 @@
 #include "cpl_minixml.h"
 #include "ogr_spatialref.h"
 
-CPL_CVSID("$Id: vrtdataset.cpp 29294 2015-06-05 08:52:15Z rouault $");
+CPL_CVSID("$Id: vrtdataset.cpp 29616 2015-08-06 10:07:50Z rouault $");
 
 /************************************************************************/
 /*                            VRTDataset()                             */
@@ -635,34 +635,56 @@ GDALDataset *VRTDataset::Open( GDALOpenInfo * poOpenInfo )
         unsigned int nLength;
 
         poOpenInfo->fpL = NULL;
-
-        VSIFSeekL( fp, 0, SEEK_END );
-        nLength = (int) VSIFTellL( fp );
-        VSIFSeekL( fp, 0, SEEK_SET );
-
-        pszXML = (char *) VSIMalloc(nLength+1);
-
-        if( pszXML == NULL )
+        
+        if( strcmp(poOpenInfo->pszFilename, "/vsistdin/") == 0 )
         {
-            VSIFCloseL(fp);
-            CPLError( CE_Failure, CPLE_OutOfMemory,
-                      "Failed to allocate %d byte buffer to hold VRT xml file.",
-                      nLength );
-            return NULL;
+            nLength = 0;
+            pszXML = (char *) VSIMalloc(1024+1);
+            while( TRUE )
+            {
+                int nRead = (int) VSIFReadL( pszXML + nLength, 1, 1024, fp);
+                nLength += nRead;
+                if( nRead < 1024 )
+                    break;
+                char* pszXMLNew = (char*) VSIRealloc( pszXML, nLength + 1024 + 1);
+                if( pszXMLNew == NULL )
+                {
+                    VSIFree(pszXML);
+                    return NULL;
+                }
+                pszXML = pszXMLNew;
+            }
         }
-        
-        if( VSIFReadL( pszXML, 1, nLength, fp ) != nLength )
+        else
         {
-            VSIFCloseL(fp);
-            CPLFree( pszXML );
-            CPLError( CE_Failure, CPLE_FileIO,
-                      "Failed to read %d bytes from VRT xml file.",
-                      nLength );
-            return NULL;
+            VSIFSeekL( fp, 0, SEEK_END );
+            nLength = (int) VSIFTellL( fp );
+            VSIFSeekL( fp, 0, SEEK_SET );
+
+            pszXML = (char *) VSIMalloc(nLength+1);
+
+            if( pszXML == NULL )
+            {
+                VSIFCloseL(fp);
+                CPLError( CE_Failure, CPLE_OutOfMemory,
+                          "Failed to allocate %d byte buffer to hold VRT xml file.",
+                          nLength );
+                return NULL;
+            }
+            
+            if( VSIFReadL( pszXML, 1, nLength, fp ) != nLength )
+            {
+                VSIFCloseL(fp);
+                CPLFree( pszXML );
+                CPLError( CE_Failure, CPLE_FileIO,
+                          "Failed to read %d bytes from VRT xml file.",
+                          nLength );
+                return NULL;
+            }
         }
 
         pszXML[nLength] = '\0';
-
+        
         char* pszCurDir = CPLGetCurrentDir();
         const char *currentVrtFilename = CPLProjectRelativeFilename(pszCurDir, poOpenInfo->pszFilename);
         CPLFree(pszCurDir);
@@ -1260,6 +1282,8 @@ GDALDataset* VRTDataset::GetSingleSimpleSource()
         return NULL;
 
     VRTSourcedRasterBand* poVRTBand = (VRTSourcedRasterBand* )papoBands[0];
+    if( poVRTBand->nSources != 1 )
+        return NULL;
     VRTSimpleSource* poSource = (VRTSimpleSource* )poVRTBand->papoSources[0];
     GDALRasterBand* poBand = poSource->GetBand();
     if (poBand == NULL)
diff --git a/frmts/vrt/vrtsourcedrasterband.cpp b/frmts/vrt/vrtsourcedrasterband.cpp
index 1c8e5a9..6869d46 100644
--- a/frmts/vrt/vrtsourcedrasterband.cpp
+++ b/frmts/vrt/vrtsourcedrasterband.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: vrtsourcedrasterband.cpp 29161 2015-05-06 10:18:19Z rouault $
+ * $Id: vrtsourcedrasterband.cpp 29907 2015-08-29 19:39:38Z rouault $
  *
  * Project:  Virtual GDAL Datasets
  * Purpose:  Implementation of VRTSourcedRasterBand
@@ -32,7 +32,7 @@
 #include "cpl_minixml.h"
 #include "cpl_string.h"
 
-CPL_CVSID("$Id: vrtsourcedrasterband.cpp 29161 2015-05-06 10:18:19Z rouault $");
+CPL_CVSID("$Id: vrtsourcedrasterband.cpp 29907 2015-08-29 19:39:38Z rouault $");
 
 /************************************************************************/
 /* ==================================================================== */
@@ -602,7 +602,7 @@ CPLErr VRTSourcedRasterBand::GetHistogram( double dfMin, double dfMax,
 
 {
     if( nSources != 1 )
-        return GDALRasterBand::GetHistogram( dfMin, dfMax,
+        return VRTRasterBand::GetHistogram( dfMin, dfMax,
                                              nBuckets, panHistogram,
                                              bIncludeOutOfRange, bApproxOK,
                                              pfnProgress, pProgressData );
@@ -656,6 +656,8 @@ CPLErr VRTSourcedRasterBand::GetHistogram( double dfMin, double dfMax,
     }
 
     nRecursionCounter --;
+    
+    SetDefaultHistogram( dfMin, dfMax, nBuckets, panHistogram );
 
     return CE_None;
 }
diff --git a/frmts/vrt/vrtwarped.cpp b/frmts/vrt/vrtwarped.cpp
index 93cf472..86f050f 100644
--- a/frmts/vrt/vrtwarped.cpp
+++ b/frmts/vrt/vrtwarped.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: vrtwarped.cpp 28292 2015-01-05 19:35:55Z rouault $
+ * $Id: vrtwarped.cpp 29769 2015-08-24 09:09:27Z rouault $
  *
  * Project:  Virtual GDAL Datasets
  * Purpose:  Implementation of VRTWarpedRasterBand *and VRTWarpedDataset.
@@ -35,7 +35,7 @@
 #include "gdal_alg_priv.h"
 #include <cassert>
 
-CPL_CVSID("$Id: vrtwarped.cpp 28292 2015-01-05 19:35:55Z rouault $");
+CPL_CVSID("$Id: vrtwarped.cpp 29769 2015-08-24 09:09:27Z rouault $");
 
 /************************************************************************/
 /*                      GDALAutoCreateWarpedVRT()                       */
@@ -256,10 +256,22 @@ GDALCreateWarpedVRT( GDALDatasetH hSrcDS,
         poBand->CopyCommonInfoFrom( poSrcBand );
     }
 
+    if( psOptions->nDstAlphaBand == psOptions->nBandCount + 1 )
+    {
+        GDALRasterBand *poSrcBand = (GDALRasterBand*)GDALGetRasterBand( hSrcDS, 1);
+        poDS->AddBand( poSrcBand->GetRasterDataType(), NULL );
+    }
+
 /* -------------------------------------------------------------------- */
 /*      Initialize the warp on the VRTWarpedDataset.                    */
 /* -------------------------------------------------------------------- */
-    poDS->Initialize( psOptions );
+    CPLErr eErr = poDS->Initialize( psOptions );
+    if( eErr == CE_Failure )
+    {
+         psOptions->hDstDS = NULL;
+         delete poDS;
+         return NULL;
+    }
     
     return (GDALDatasetH) poDS;
 }
@@ -344,7 +356,7 @@ int VRTWarpedDataset::CloseDependentDatasets()
 /*      though we require that the caller also honour the reference     */
 /*      counting semantics even though it isn't a shared dataset.       */
 /* -------------------------------------------------------------------- */
-        if( psWO->hSrcDS != NULL )
+        if( psWO != NULL && psWO->hSrcDS != NULL )
         {
             if( GDALDereferenceDataset( psWO->hSrcDS ) < 1 )
             {
@@ -357,7 +369,7 @@ int VRTWarpedDataset::CloseDependentDatasets()
 /* -------------------------------------------------------------------- */
 /*      We are responsible for cleaning up the transformer outselves.   */
 /* -------------------------------------------------------------------- */
-        if( psWO->pTransformerArg != NULL )
+        if( psWO != NULL && psWO->pTransformerArg != NULL )
             GDALDestroyTransformer( psWO->pTransformerArg );
 
         delete poWarper;
@@ -553,7 +565,12 @@ void VRTWarpedDataset::CreateImplicitOverviews()
                                       adfDstGeoTransform, psWOOvr );
         
         if( bDeleteSrcOvrDataset )
-            GDALDereferenceDataset( (GDALDatasetH)poSrcOvrDS );
+        {
+            if( hDstDS == NULL )
+                delete poSrcOvrDS;
+            else
+                GDALDereferenceDataset( (GDALDatasetH)poSrcOvrDS );
+        }
         
         GDALDestroyWarpOptions(psWOOvr);
         
@@ -880,6 +897,7 @@ VRTWarpedDataset::IBuildOverviews( CPL_UNUSED const char *pszResampling,
 /*      Create each missing overview (we don't need to do anything      */
 /*      to update existing overviews).                                  */
 /* -------------------------------------------------------------------- */
+    CPLErr eErr = CE_None;
     for( i = 0; i < nNewOverviews; i++ )
     {
         int    nOXSize, nOYSize, iBand;
@@ -929,12 +947,6 @@ VRTWarpedDataset::IBuildOverviews( CPL_UNUSED const char *pszResampling,
             poOverviewDS->SetBand( iBand+1, poNewBand );
         }
 
-        nOverviewCount++;
-        papoOverviews = (VRTWarpedDataset **)
-            CPLRealloc( papoOverviews, sizeof(void*) * nOverviewCount );
-
-        papoOverviews[nOverviewCount-1] = poOverviewDS;
-
 /* -------------------------------------------------------------------- */
 /*      Prepare update transformation information that will apply       */
 /*      the overview decimation.                                        */
@@ -955,10 +967,23 @@ VRTWarpedDataset::IBuildOverviews( CPL_UNUSED const char *pszResampling,
                                         poBaseDataset->GetRasterXSize() / (double) nOXSize,
                                         poBaseDataset->GetRasterYSize() / (double) nOYSize );
 
-        poOverviewDS->Initialize( psWO );
+        eErr = poOverviewDS->Initialize( psWO );
 
         psWO->pfnTransformer = pfnTransformerBase;
         psWO->pTransformerArg = pTransformerBaseArg;
+        
+        if( eErr != CE_None )
+        {
+            delete poOverviewDS;
+            break;
+        }
+
+        nOverviewCount++;
+        papoOverviews = (VRTWarpedDataset **)
+            CPLRealloc( papoOverviews, sizeof(void*) * nOverviewCount );
+
+        papoOverviews[nOverviewCount-1] = poOverviewDS;
+
     }
 
     CPLFree( panNewOverviewList );
@@ -970,7 +995,7 @@ VRTWarpedDataset::IBuildOverviews( CPL_UNUSED const char *pszResampling,
 
     SetNeedsFlush();
 
-    return CE_None;
+    return eErr;
 }
 
 /************************************************************************/
diff --git a/gcore/gdal_version.h b/gcore/gdal_version.h
index 22cc12c..c923265 100644
--- a/gcore/gdal_version.h
+++ b/gcore/gdal_version.h
@@ -6,7 +6,7 @@
 #ifndef GDAL_VERSION_MAJOR
 #  define GDAL_VERSION_MAJOR    2
 #  define GDAL_VERSION_MINOR    0
-#  define GDAL_VERSION_REV      0
+#  define GDAL_VERSION_REV      1
 #  define GDAL_VERSION_BUILD    0
 #endif
 
@@ -22,8 +22,8 @@
 #endif
 
 #ifndef GDAL_RELEASE_DATE
-#  define GDAL_RELEASE_DATE     20150614
+#  define GDAL_RELEASE_DATE     20150915
 #endif
 #ifndef GDAL_RELEASE_NAME
-#  define GDAL_RELEASE_NAME     "2.0.0"
+#  define GDAL_RELEASE_NAME     "2.0.1"
 #endif
diff --git a/gcore/gdalproxypool.cpp b/gcore/gdalproxypool.cpp
index 285402f..9ffda13 100644
--- a/gcore/gdalproxypool.cpp
+++ b/gcore/gdalproxypool.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: gdalproxypool.cpp 29326 2015-06-10 20:36:31Z rouault $
+ * $Id: gdalproxypool.cpp 29450 2015-07-02 08:44:48Z rouault $
  *
  * Project:  GDAL Core
  * Purpose:  A dataset and raster band classes that differ the opening of the
@@ -31,7 +31,7 @@
 #include "gdal_proxy.h"
 #include "cpl_multiproc.h"
 
-CPL_CVSID("$Id: gdalproxypool.cpp 29326 2015-06-10 20:36:31Z rouault $");
+CPL_CVSID("$Id: gdalproxypool.cpp 29450 2015-07-02 08:44:48Z rouault $");
 
 /* We *must* share the same mutex as the gdaldataset.cpp file, as we are */
 /* doing GDALOpen() calls that can indirectly call GDALOpenShared() on */
@@ -247,8 +247,7 @@ GDALProxyPoolCacheEntry* GDALDatasetPool::_RefDataset(const char* pszFileName,
             return NULL;
         }
 
-        CPLFree(lastEntryWithZeroRefCount->pszFileName);
-        lastEntryWithZeroRefCount->pszFileName = NULL;
+        lastEntryWithZeroRefCount->pszFileName[0] = '\0';
         if (lastEntryWithZeroRefCount->poDS)
         {
             /* Close by pretending we are the thread that GDALOpen'ed this */
@@ -262,6 +261,7 @@ GDALProxyPoolCacheEntry* GDALDatasetPool::_RefDataset(const char* pszFileName,
             lastEntryWithZeroRefCount->poDS = NULL;
             GDALSetResponsiblePIDForCurrentThread(responsiblePID);
         }
+        CPLFree(lastEntryWithZeroRefCount->pszFileName);
 
         /* Recycle this entry for the to-be-openeded dataset and */
         /* moves it to the top of the list */
@@ -329,6 +329,7 @@ void GDALDatasetPool::_CloseDataset(const char* pszFileName, GDALAccess eAccess)
     {
         GDALProxyPoolCacheEntry* next = cur->next;
 
+        CPLAssert(cur->pszFileName);
         if (strcmp(cur->pszFileName, pszFileName) == 0 && cur->refCount == 0 &&
             cur->poDS != NULL )
         {
diff --git a/gcore/mdreader/reader_pleiades.cpp b/gcore/mdreader/reader_pleiades.cpp
index 160fa0c..ff9aae7 100644
--- a/gcore/mdreader/reader_pleiades.cpp
+++ b/gcore/mdreader/reader_pleiades.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: reader_pleiades.cpp 29245 2015-05-24 16:46:56Z rouault $
+ * $Id: reader_pleiades.cpp 29417 2015-06-22 08:30:54Z rouault $
  *
  * Project:  GDAL Core
  * Purpose:  Read metadata from Pleiades imagery.
@@ -30,7 +30,7 @@
 
 #include "reader_pleiades.h"
 
-CPL_CVSID("$Id: reader_pleiades.cpp 29245 2015-05-24 16:46:56Z rouault $");
+CPL_CVSID("$Id: reader_pleiades.cpp 29417 2015-06-22 08:30:54Z rouault $");
 
 /**
  * GDALMDReaderPleiades()
@@ -305,8 +305,23 @@ char** GDALMDReaderPleiades::LoadRPCXmlFile()
     int i, j;
     for( i = 0; apszRPBMap[i] != NULL; i += 2 )
     {
-        papszRPB = CSLAddNameValue(papszRPB, apszRPBMap[i],
-                        CSLFetchNameValue(papszRawRPCList, apszRPBMap[i + 1]));
+        // Pleiades RPCs use "center of upper left pixel is 1,1" convention, convert to
+        // Digital globe convention of "center of upper left pixel is 0,0".
+        if (i == 0 || i == 2)
+        {
+            CPLString osField;
+            const char *pszOffset = CSLFetchNameValue(papszRawRPCList,
+                                                    apszRPBMap[i + 1]);
+            osField.Printf( "%.15g", CPLAtofM( pszOffset ) -1.0 );
+            papszRPB = CSLAddNameValue( papszRPB, apszRPBMap[i], osField );
+        }
+        else
+        {
+            papszRPB = CSLAddNameValue(papszRPB, apszRPBMap[i],
+                                    CSLFetchNameValue(papszRawRPCList,
+                                                        apszRPBMap[i + 1]));
+        }
+	
     }
 
     // merge coefficients
diff --git a/gcore/overview.cpp b/gcore/overview.cpp
index 4dbda98..582ffa0 100644
--- a/gcore/overview.cpp
+++ b/gcore/overview.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: overview.cpp 28142 2014-12-14 20:09:42Z goatbar $
+ * $Id: overview.cpp 29496 2015-07-07 22:29:46Z rouault $
  *
  * Project:  GDAL Core
  * Purpose:  Helper code to implement overview support in different drivers.
@@ -31,7 +31,7 @@
 #include "gdal_priv.h"
 #include "gdalwarper.h"
 
-CPL_CVSID("$Id: overview.cpp 28142 2014-12-14 20:09:42Z goatbar $");
+CPL_CVSID("$Id: overview.cpp 29496 2015-07-07 22:29:46Z rouault $");
 
 /************************************************************************/
 /*                     GDALResampleChunk32R_Near()                      */
@@ -1404,7 +1404,8 @@ GDALResampleChunk32R_ConvolutionT( double dfXRatioDstToSrc, double dfYRatioDstTo
                                      float fNoDataValue,
                                      FilterFuncType pfnFilterFunc,
                                      FilterFunc4ValuesType pfnFilterFunc4Values,
-                                     int nKernelRadius )
+                                     int nKernelRadius,
+                                     float fMaxVal )
 
 {
 
@@ -1582,6 +1583,7 @@ GDALResampleChunk32R_ConvolutionT( double dfXRatioDstToSrc, double dfYRatioDstTo
 /*      Second pass: vertical filter                                    */
 /* ==================================================================== */
     int nChunkBottomYOff = nChunkYOff + nChunkYSize;
+
     for( int iDstLine = nDstYOff; iDstLine < nDstYOff2; iDstLine++ )
     {
         double dfSrcLine = (iDstLine+0.5)*dfYRatioDstToSrc + dfSrcYDelta;
@@ -1673,6 +1675,15 @@ GDALResampleChunk32R_ConvolutionT( double dfXRatioDstToSrc, double dfYRatioDstTo
             }
         }
 
+        if( fMaxVal )
+        {
+            for(int i=0;i<nDstXSize;i++)
+            {
+                if( pafDstScanline[i] > fMaxVal )
+                    pafDstScanline[i] = fMaxVal;
+            }
+        }
+
         eErr = poOverview->RasterIO( GF_Write, nDstXOff, iDstLine, nDstXSize, 1,
                                      pafDstScanline, nDstXSize, 1, GDT_Float32,
                                      0, 0, NULL );
@@ -1721,6 +1732,21 @@ static CPLErr GDALResampleChunk32R_Convolution(
     FilterFuncType pfnFilterFunc = GWKGetFilterFunc(eResample);
     FilterFunc4ValuesType pfnFilterFunc4Values = GWKGetFilterFunc4Values(eResample);
 
+    float fMaxVal = 0.f;
+    // Cubic, etc... can have overshoots, so make sure we clamp values to the
+    // maximum value if NBITS is set
+    const char* pszNBITS = poOverview->GetMetadataItem("NBITS", "IMAGE_STRUCTURE");
+    GDALDataType eBandDT = poOverview->GetRasterDataType();
+    if( eResample != GRA_Bilinear && pszNBITS != NULL &&
+        (eBandDT == GDT_Byte || eBandDT == GDT_UInt16 || eBandDT == GDT_UInt32) )
+    {
+        int nBits = atoi(pszNBITS);
+        if( nBits == GDALGetDataTypeSize(eBandDT) )
+            nBits = 0;
+        if( nBits )
+            fMaxVal = (float)((1 << nBits) -1);
+    }
+
     if (eWrkDataType == GDT_Byte)
         return GDALResampleChunk32R_ConvolutionT(dfXRatioDstToSrc, dfYRatioDstToSrc,
                         dfSrcXDelta, dfSrcYDelta,
@@ -1733,7 +1759,8 @@ static CPLErr GDALResampleChunk32R_Convolution(
                         bHasNoData, fNoDataValue,
                         pfnFilterFunc,
                         pfnFilterFunc4Values,
-                        nKernelRadius);
+                        nKernelRadius,
+                        fMaxVal);
    else if (eWrkDataType == GDT_UInt16)
         return GDALResampleChunk32R_ConvolutionT(dfXRatioDstToSrc, dfYRatioDstToSrc,
                         dfSrcXDelta, dfSrcYDelta,
@@ -1746,7 +1773,8 @@ static CPLErr GDALResampleChunk32R_Convolution(
                         bHasNoData, fNoDataValue,
                         pfnFilterFunc,
                         pfnFilterFunc4Values,
-                        nKernelRadius);
+                        nKernelRadius,
+                        fMaxVal);
     else if (eWrkDataType == GDT_Float32)
         return GDALResampleChunk32R_ConvolutionT(dfXRatioDstToSrc, dfYRatioDstToSrc,
                         dfSrcXDelta, dfSrcYDelta,
@@ -1759,7 +1787,8 @@ static CPLErr GDALResampleChunk32R_Convolution(
                         bHasNoData, fNoDataValue,
                         pfnFilterFunc,
                         pfnFilterFunc4Values,
-                        nKernelRadius);
+                        nKernelRadius,
+                        fMaxVal);
 
     CPLAssert(0);
     return CE_Failure;
diff --git a/gcore/rasterio.cpp b/gcore/rasterio.cpp
index af16a6a..6dc16f0 100644
--- a/gcore/rasterio.cpp
+++ b/gcore/rasterio.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: rasterio.cpp 29161 2015-05-06 10:18:19Z rouault $
+ * $Id: rasterio.cpp 29496 2015-07-07 22:29:46Z rouault $
  *
  * Project:  GDAL Core
  * Purpose:  Contains default implementation of GDALRasterBand::IRasterIO()
@@ -52,7 +52,7 @@
 #endif
 
 
-CPL_CVSID("$Id: rasterio.cpp 29161 2015-05-06 10:18:19Z rouault $");
+CPL_CVSID("$Id: rasterio.cpp 29496 2015-07-07 22:29:46Z rouault $");
 
 /************************************************************************/
 /*                             IRasterIO()                              */
@@ -459,7 +459,7 @@ CPLErr GDALRasterBand::IRasterIO( GDALRWFlag eRWFlag,
 
                 // FIXME: this code likely doesn't work if the dirty block gets flushed
                 // to disk before being completely written.
-                // In the meantime, bJustInitalize should probably be set to FALSE
+                // In the meantime, bJustInitialize should probably be set to FALSE
                 // even if it is not ideal performance wise, and for lossy compression
 
     /* -------------------------------------------------------------------- */
@@ -799,6 +799,10 @@ CPLErr GDALRasterBand::RasterIOResampled( CPL_UNUSED GDALRWFlag eRWFlag,
     poMEMDS->AddBand(eBufType, papszOptions);
     CSLDestroy(papszOptions);
     GDALRasterBandH hMEMBand = (GDALRasterBandH)poMEMDS->GetRasterBand(1);
+    
+    const char* pszNBITS = GetMetadataItem("NBITS", "IMAGE_STRUCTURE");
+    if( pszNBITS )
+        ((GDALRasterBand*)hMEMBand)->SetMetadataItem("NBITS", pszNBITS, "IMAGE_STRUCTURE");
 
     /* Do the resampling */
     if( bUseWarp )
@@ -3165,7 +3169,7 @@ GDALDataset::BlockBasedRasterIO( GDALRWFlag eRWFlag,
 
             // FIXME: this code likely doesn't work if the dirty block gets flushed
             // to disk before being completely written.
-            // In the meantime, bJustInitalize should probably be set to FALSE
+            // In the meantime, bJustInitialize should probably be set to FALSE
             // even if it is not ideal performance wise, and for lossy compression
 
 /* -------------------------------------------------------------------- */
diff --git a/man/man1/gdal-config.1 b/man/man1/gdal-config.1
index edbe8a9..7ce23f0 100644
--- a/man/man1/gdal-config.1
+++ b/man/man1/gdal-config.1
@@ -1,12 +1,9 @@
-.TH "gdal-config" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "gdal-config" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-gdal-config \- .TH "gdal-config" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-gdal-config \- determines various information about a GDAL installation
+gdal-config \- gdal-config 
+determines various information about a GDAL installation
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -24,19 +21,19 @@ Options:
 .PP
 .SH "DESCRIPTION"
 .PP
-This utility script (available on Unix systems) can be used to determine various information about a GDAL installation. It is normally just used by configure scripts for applications using GDAL but can be queried by an end user.
+This utility script (available on Unix systems) can be used to determine various information about a GDAL installation\&. It is normally just used by configure scripts for applications using GDAL but can be queried by an end user\&.
 .PP
 .IP "\fB\fB--prefix\fP:\fP" 1c
-the top level directory for the GDAL installation. 
+the top level directory for the GDAL installation\&. 
 .IP "\fB\fB--libs\fP:\fP" 1c
-The libraries and link directives required to use GDAL. 
+The libraries and link directives required to use GDAL\&. 
 .IP "\fB\fB--cflags\fP:\fP" 1c
-The include and macro definition required to compiled modules using GDAL. 
+The include and macro definition required to compiled modules using GDAL\&. 
 .IP "\fB\fB--version\fP:\fP" 1c
-Reports the GDAL version. 
+Reports the GDAL version\&. 
 .IP "\fB\fB--ogr-enabled\fP:\fP" 1c
-Reports 'yes' or 'no' to standard output depending on whether OGR is built into GDAL. 
+Reports 'yes' or 'no' to standard output depending on whether OGR is built into GDAL\&. 
 .IP "\fB\fB--formats\fP:\fP" 1c
-Reports which formats are configured into GDAL to stdout.  
+Reports which formats are configured into GDAL to stdout\&.  
 .PP
 
diff --git a/man/man1/gdal2tiles.1 b/man/man1/gdal2tiles.1
index d74aed8..ad30d7a 100644
--- a/man/man1/gdal2tiles.1
+++ b/man/man1/gdal2tiles.1
@@ -1,12 +1,9 @@
-.TH "gdal2tiles" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "gdal2tiles" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-gdal2tiles \- .TH "gdal2tiles" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-gdal2tiles \- generates directory with TMS tiles, KMLs and simple web viewers
+gdal2tiles \- gdal2tiles\&.py 
+generates directory with TMS tiles, KMLs and simple web viewers
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -20,60 +17,60 @@ gdal2tiles.py [-p profile] [-r resampling] [-s srs] [-z zoom]
 .PP
 .SH "DESCRIPTION"
 .PP
-This utility generates a directory with small tiles and metadata, following the OSGeo Tile Map Service Specification. Simple web pages with viewers based on Google Maps and OpenLayers are generated as well - so anybody can comfortably explore your maps on-line and you do not need to install or configure any special software (like MapServer) and the map displays very fast in the web browser. You only need to upload the generated directory onto a web server.
+This utility generates a directory with small tiles and metadata, following the OSGeo Tile Map Service Specification\&. Simple web pages with viewers based on Google Maps and OpenLayers are generated as well - so anybody can comfortably explore your maps on-line and you do not need to install or configure any special software (like MapServer) and the map displays very fast in the web browser\&. You only need to upload the generated directory onto a web server\&.
 .PP
-GDAL2Tiles also creates the necessary metadata for Google Earth (KML SuperOverlay), in case the supplied map uses EPSG:4326 projection.
+GDAL2Tiles also creates the necessary metadata for Google Earth (KML SuperOverlay), in case the supplied map uses EPSG:4326 projection\&.
 .PP
-World files and embedded georeferencing is used during tile generation, but you can publish a picture without proper georeferencing too.
+World files and embedded georeferencing is used during tile generation, but you can publish a picture without proper georeferencing too\&.
 .PP
 .IP "\fB\fB-p\fP \fIPROFILE\fP, --profile=\fIPROFILE\fP: \fP" 1c
-Tile cutting profile (mercator,geodetic,raster) - default 'mercator' (Google Maps compatible). 
+Tile cutting profile (mercator,geodetic,raster) - default 'mercator' (Google Maps compatible)\&. 
 .IP "\fB\fB-r\fP \fIRESAMPLING\fP, --resampling=\fIRESAMPLING\fP: \fP" 1c
-Resampling method (average,near,bilinear,cubic,cubicspline,lanczos,antialias) - default 'average'. 
+Resampling method (average,near,bilinear,cubic,cubicspline,lanczos,antialias) - default 'average'\&. 
 .IP "\fB\fB-s\fP \fISRS\fP, --s_srs=\fISRS\fP: \fP" 1c
-The spatial reference system used for the source input data. 
+The spatial reference system used for the source input data\&. 
 .IP "\fB\fB-z\fP \fIZOOM\fP, --zoom=\fIZOOM\fP: \fP" 1c
-Zoom levels to render (format:'2-5' or '10'). 
+Zoom levels to render (format:'2-5' or '10')\&. 
 .IP "\fB\fB-e\fP, --resume: \fP" 1c
-Resume mode. Generate only missing files. 
+Resume mode\&. Generate only missing files\&. 
 .IP "\fB\fB-a\fP \fINODATA\fP, --srcnodata=\fINODATA\fP: \fP" 1c
-NODATA transparency value to assign to the input data. 
+NODATA transparency value to assign to the input data\&. 
 .IP "\fB\fB-v, --verbose\fP \fP" 1c
-Generate verbose output of tile generation. 
+Generate verbose output of tile generation\&. 
 .IP "\fB\fB-h, --help\fP \fP" 1c
-Show help message and exit. 
+Show help message and exit\&. 
 .IP "\fB\fB--version\fP \fP" 1c
-Show program's version number and exit. 
+Show program's version number and exit\&. 
 .PP
 .PP
 \fBKML (Google Earth) options:\fP
 .PP
 Options for generated Google Earth SuperOverlay metadata 
 .IP "\fB\fB-k, --force-kml\fP \fP" 1c
-Generate KML for Google Earth - default for 'geodetic' profile and 'raster' in EPSG:4326. For a dataset with different projection use with caution! 
+Generate KML for Google Earth - default for 'geodetic' profile and 'raster' in EPSG:4326\&. For a dataset with different projection use with caution! 
 .IP "\fB\fB-n, --no-kml\fP: \fP" 1c
-Avoid automatic generation of KML files for EPSG:4326. 
+Avoid automatic generation of KML files for EPSG:4326\&. 
 .IP "\fB\fB-u\fP \fIURL\fP, --url=\fIURL\fP: \fP" 1c
-URL address where the generated tiles are going to be published. 
+URL address where the generated tiles are going to be published\&. 
 .PP
 .PP
 \fBWeb viewer options:\fP
 .PP
 Options for generated HTML viewers a la Google Maps 
 .IP "\fB\fB-w\fP \fIWEBVIEWER\fP, --webviewer=\fIWEBVIEWER\fP: \fP" 1c
-Web viewer to generate (all,google,openlayers,none) - default 'all'. 
+Web viewer to generate (all,google,openlayers,none) - default 'all'\&. 
 .IP "\fB\fB-t\fP \fITITLE\fP, --title=\fITITLE\fP: \fP" 1c
-Title of the map. 
+Title of the map\&. 
 .IP "\fB\fB-c\fP \fICOPYRIGHT\fP, --copyright=\fICOPYRIGHT\fP: \fP" 1c
-Copyright for the map. 
+Copyright for the map\&. 
 .IP "\fB\fB-g\fP \fIGOOGLEKEY\fP, --googlekey=\fIGOOGLEKEY\fP: \fP" 1c
-Google Maps API key from http://code.google.com/apis/maps/signup.html. 
+Google Maps API key from http://code.google.com/apis/maps/signup.html\&. 
 .IP "\fB\fB-b\fP \fIBINGKEY\fP, --bingkey=\fIBINGKEY\fP: \fP" 1c
 Bing Maps API key from https://www.bingmapsportal.com/
 .PP
 .PP
 .PP
-NOTE: gdal2tiles.py is a Python script that needs to be run against 'new generation' Python GDAL binding.
+NOTE: gdal2tiles\&.py is a Python script that needs to be run against 'new generation' Python GDAL binding\&.
 .SH "AUTHORS"
 .PP
-Klokan Petr Pridal <klokan at klokan.cz> as a Google SoC 2007 Project. 
+Klokan Petr Pridal <klokan at klokan.cz> as a Google SoC 2007 Project\&. 
diff --git a/man/man1/gdal_calc.1 b/man/man1/gdal_calc.1
index 1604c05..45d61c0 100644
--- a/man/man1/gdal_calc.1
+++ b/man/man1/gdal_calc.1
@@ -1,12 +1,9 @@
-.TH "gdal_calc" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "gdal_calc" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-gdal_calc \- .TH "gdal_calc" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-gdal_calc \- Command line raster calculator with numpy syntax
+gdal_calc \- gdal_calc\&.py 
+Command line raster calculator with numpy syntax
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -40,7 +37,7 @@ Options:
 .PP
 .SH "DESCRIPTION"
 .PP
-Command line raster calculator with numpy syntax. Use any basic arithmetic supported by numpy arrays such as +-*\\ along with logical operators such as >. Note that all files must have the same dimensions, but no projection checking is performed.
+Command line raster calculator with numpy syntax\&. Use any basic arithmetic supported by numpy arrays such as +-*\\ along with logical operators such as >\&. Note that all files must have the same dimensions, but no projection checking is performed\&.
 .SH "EXAMPLE"
 .PP
 add two files together 
diff --git a/man/man1/gdal_contour.1 b/man/man1/gdal_contour.1
index 7f33d19..89b5301 100644
--- a/man/man1/gdal_contour.1
+++ b/man/man1/gdal_contour.1
@@ -1,12 +1,9 @@
-.TH "gdal_contour" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "gdal_contour" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-gdal_contour \- .TH "gdal_contour" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-gdal_contour \- builds vector contour lines from a raster elevation model
+gdal_contour \- gdal_contour 
+builds vector contour lines from a raster elevation model
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -22,26 +19,26 @@ Usage: gdal_contour [-b <band>] [-a <attribute_name>] [-3d] [-inodata]
 .PP
 .SH "DESCRIPTION"
 .PP
-This program generates a vector contour file from the input raster elevation model (DEM).
+This program generates a vector contour file from the input raster elevation model (DEM)\&.
 .PP
-Starting from version 1.7 the contour line-strings will be oriented consistently. The high side will be on the right, i.e. a line string goes clockwise around a top.
+Starting from version 1\&.7 the contour line-strings will be oriented consistently\&. The high side will be on the right, i\&.e\&. a line string goes clockwise around a top\&.
 .PP
 .IP "\fB\fB-b\fP \fIband\fP:\fP" 1c
-picks a particular band to get the DEM from. Defaults to band 1.
+picks a particular band to get the DEM from\&. Defaults to band 1\&.
 .PP
 .IP "\fB\fB-a\fP \fIname\fP:\fP" 1c
-provides a name for the attribute in which to put the elevation. If not provided no elevation attribute is attached.  
+provides a name for the attribute in which to put the elevation\&. If not provided no elevation attribute is attached\&.  
 .IP "\fB\fB-3d\fP: \fP" 1c
-Force production of 3D vectors instead of 2D. Includes elevation at every vertex.
+Force production of 3D vectors instead of 2D\&. Includes elevation at every vertex\&.
 .PP
 .IP "\fB\fB-inodata\fP: \fP" 1c
-Ignore any nodata value implied in the dataset - treat all values as valid.
+Ignore any nodata value implied in the dataset - treat all values as valid\&.
 .PP
 .IP "\fB\fB-snodata\fP \fIvalue\fP:\fP" 1c
-Input pixel value to treat as 'nodata'. 
+Input pixel value to treat as 'nodata'\&. 
 .PP
 .IP "\fB\fB-f\fP \fIformat\fP: \fP" 1c
-create output in a particular format, default is shapefiles.
+create output in a particular format, default is shapefiles\&.
 .PP
 .IP "\fB\fB-dsco\fP \fINAME=VALUE\fP:\fP" 1c
 Dataset creation option (format specific) 
@@ -49,19 +46,19 @@ Dataset creation option (format specific)
 Layer creation option (format specific)
 .PP
 .IP "\fB\fB-i\fP \fIinterval\fP:\fP" 1c
-elevation interval between contours.
+elevation interval between contours\&.
 .PP
 .IP "\fB\fB-off\fP \fIoffset\fP:\fP" 1c
-Offset from zero relative to which to interpret intervals.
+Offset from zero relative to which to interpret intervals\&.
 .PP
 .IP "\fB\fB-fl\fP \fIlevel\fP: \fP" 1c
-Name one or more 'fixed levels' to extract. 
+Name one or more 'fixed levels' to extract\&. 
 .IP "\fB\fB-nln\fP \fIoutlayername\fP: \fP" 1c
-Provide a name for the output vector layer. Defaults to 'contour'. 
+Provide a name for the output vector layer\&. Defaults to 'contour'\&. 
 .PP
 .SH "EXAMPLE"
 .PP
-This would create 10meter contours from the DEM data in dem.tif and produce a shapefile in contour.shp/shx/dbf with the contour elevations in the 'elev' attribute.
+This would create 10meter contours from the DEM data in dem\&.tif and produce a shapefile in contour\&.shp/shx/dbf with the contour elevations in the 'elev' attribute\&.
 .PP
 .PP
 .nf
diff --git a/man/man1/gdal_edit.1 b/man/man1/gdal_edit.1
index f9fcd03..b12d3a9 100644
--- a/man/man1/gdal_edit.1
+++ b/man/man1/gdal_edit.1
@@ -1,12 +1,9 @@
-.TH "gdal_edit" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "gdal_edit" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-gdal_edit \- .TH "gdal_edit" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-gdal_edit \- Edit in place various information of an existing GDAL dataset
+gdal_edit \- gdal_edit\&.py 
+Edit in place various information of an existing GDAL dataset
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -21,57 +18,57 @@ gdal_edit [--help-general] [-ro] [-a_srs srs_def] [-a_ullr ulx uly lrx lry]
 .PP
 .SH "DESCRIPTION"
 .PP
-The gdal_edit.py script can be used to edit in place various information of an existing GDAL dataset (projection, geotransform, nodata, metadata).
+The gdal_edit\&.py script can be used to edit in place various information of an existing GDAL dataset (projection, geotransform, nodata, metadata)\&.
 .PP
-It works only with raster formats that support update access to existing datasets. 
+It works only with raster formats that support update access to existing datasets\&. 
 .IP "\fB\fB--help-general\fP:\fP" 1c
-Gives a brief usage message for the generic GDAL commandline options and exit. 
+Gives a brief usage message for the generic GDAL commandline options and exit\&. 
 .PP
 .IP "\fB\fB-ro\fP:\fP" 1c
-(GDAL >= 1.11) Open the dataset in read-only. Might be useful for drivers refusing to use the dataset in update-mode. In which case, updated information will go into PAM .aux.xml files.
+(GDAL >= 1\&.11) Open the dataset in read-only\&. Might be useful for drivers refusing to use the dataset in update-mode\&. In which case, updated information will go into PAM \&.aux\&.xml files\&.
 .PP
 .IP "\fB\fB-a_srs\fP \fIsrs_def\fP:\fP" 1c
 .PP
-Defines the target coordinate system. This coordinate system will be written to the dataset.
+Defines the target coordinate system\&. This coordinate system will be written to the dataset\&.
 .PP
 .IP "\fB\fB-a_ullr\fP \fIulx uly lrx lry\fP:\fP" 1c
-Assign/override the georeferenced bounds of the dataset.
+Assign/override the georeferenced bounds of the dataset\&.
 .PP
 .IP "\fB\fB-tr\fP xres yres :\fP" 1c
-Set target resolution. The values must be expressed in georeferenced units. Both must be positive values.
+Set target resolution\&. The values must be expressed in georeferenced units\&. Both must be positive values\&.
 .PP
 .IP "\fB\fB-unsetgt\fP:\fP" 1c
-Remove the georeference information.
+Remove the georeference information\&.
 .PP
 .IP "\fB\fB-unsetstats\fP:\fP" 1c
-(GDAL >= 2.0) Remove band statistics information.
+(GDAL >= 2\&.0) Remove band statistics information\&.
 .PP
 .IP "\fB\fB-stats\fP:\fP" 1c
-(GDAL >= 2.0) Calculate and store band statistics.
+(GDAL >= 2\&.0) Calculate and store band statistics\&.
 .PP
 .IP "\fB\fB-approx_stats\fP:\fP" 1c
-(GDAL >= 2.0) Calculate and store approximate band statistics.
+(GDAL >= 2\&.0) Calculate and store approximate band statistics\&.
 .PP
 .IP "\fB\fB-a_nodata\fP \fIvalue\fP:\fP" 1c
-Assign a specified nodata value to output bands.
+Assign a specified nodata value to output bands\&.
 .PP
 .IP "\fB\fB-gcp\fP \fIpixel line easting northing [elevation]\fP:\fP" 1c
-Add the indicated ground control point to the dataset. This option may be provided multiple times to provide a set of GCPs. 
+Add the indicated ground control point to the dataset\&. This option may be provided multiple times to provide a set of GCPs\&. 
 .PP
 .IP "\fB\fB-unsetmd\fP:\fP" 1c
-(GDAL >= 2.0) Remove existing metadata (in the default metadata domain). Can be combined with -mo.
+(GDAL >= 2\&.0) Remove existing metadata (in the default metadata domain)\&. Can be combined with -mo\&.
 .PP
 .IP "\fB\fB-mo\fP \fI'META-TAG=VALUE'\fP:\fP" 1c
-Passes a metadata key and value to set on the output dataset if possible. This metadata is added to the existing metadata items, unless -unsetmd is also specified.
+Passes a metadata key and value to set on the output dataset if possible\&. This metadata is added to the existing metadata items, unless -unsetmd is also specified\&.
 .PP
 .IP "\fB\fB-oo\fP \fI'NAME=VALUE'\fP:\fP" 1c
-(GDAL >= 2.0) Open option (format specific).
+(GDAL >= 2\&.0) Open option (format specific)\&.
 .PP
 .PP
 .PP
--a_ullr, -tr and -unsetgt options are exclusive.
+-a_ullr, -tr and -unsetgt options are exclusive\&.
 .PP
--unsetstats and either -stats or -approx_stats options are exclusive.
+-unsetstats and either -stats or -approx_stats options are exclusive\&.
 .SH "EXAMPLE"
 .PP
 .PP
diff --git a/man/man1/gdal_fillnodata.1 b/man/man1/gdal_fillnodata.1
index cda4f8c..4b67968 100644
--- a/man/man1/gdal_fillnodata.1
+++ b/man/man1/gdal_fillnodata.1
@@ -1,12 +1,9 @@
-.TH "gdal_fillnodata" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "gdal_fillnodata" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-gdal_fillnodata \- .TH "gdal_fillnodata" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-gdal_fillnodata \- fill raster regions by interpolation from edges
+gdal_fillnodata \- gdal_fillnodata\&.py 
+fill raster regions by interpolation from edges
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -19,39 +16,39 @@ gdal_fillnodata.py [-q] [-md max_distance] [-si smooth_iterations]
 .PP
 .SH "DESCRIPTION"
 .PP
-The gdal_fillnodata.py script fills selection regions (usually nodata areas) by interpolating from valid pixels around the edges of the area.
+The gdal_fillnodata\&.py script fills selection regions (usually nodata areas) by interpolating from valid pixels around the edges of the area\&.
 .PP
-Additional details on the algorithm are available in the GDALFillNodata() docs.
+Additional details on the algorithm are available in the GDALFillNodata() docs\&.
 .PP
 .IP "\fB\fB-q\fP:\fP" 1c
-The script runs in quiet mode. The progress monitor is suppressed and routine messages are not displayed.
+The script runs in quiet mode\&. The progress monitor is suppressed and routine messages are not displayed\&.
 .PP
 .IP "\fB\fB-md\fP \fImax_distance\fP:\fP" 1c
-The maximum distance (in pixels) that the algorithm will search out for values to interpolate.
+The maximum distance (in pixels) that the algorithm will search out for values to interpolate\&.
 .PP
 .IP "\fB\fB-si\fP \fIsmooth_iterations\fP:\fP" 1c
-The number of 3x3 average filter smoothing iterations to run after the interpolation to dampen artifacts. The default is zero smoothing iterations.
+The number of 3x3 average filter smoothing iterations to run after the interpolation to dampen artifacts\&. The default is zero smoothing iterations\&.
 .PP
 .IP "\fB\fB-o\fP \fIname=value\fP:\fP" 1c
-Specify a special argument to the algorithm. Currently none are supported. 
+Specify a special argument to the algorithm\&. Currently none are supported\&. 
 .PP
 .IP "\fB\fB-b\fP \fIband\fP:\fP" 1c
-The band to operate on, by default the first band is operated on. 
+The band to operate on, by default the first band is operated on\&. 
 .PP
 .IP "\fB\fIsrcfile\fP\fP" 1c
-The source raster file used to identify target pixels. Only one band is used.
+The source raster file used to identify target pixels\&. Only one band is used\&.
 .PP
 .IP "\fB\fB-nomask\fP:\fP" 1c
-Do not use the default validity mask for the input band (such as nodata, or alpha masks). 
+Do not use the default validity mask for the input band (such as nodata, or alpha masks)\&. 
 .PP
 .IP "\fB\fB-mask\fP \fIfilename\fP:\fP" 1c
-Use the first band of the specified file as a validity mask (zero is invalid, non-zero is valid). 
+Use the first band of the specified file as a validity mask (zero is invalid, non-zero is valid)\&. 
 .PP
 .IP "\fB\fIdstfile\fP\fP" 1c
-The new file to create with the interpolated result. If not provided, the source band is updated in place.
+The new file to create with the interpolated result\&. If not provided, the source band is updated in place\&.
 .PP
 .IP "\fB\fB-of\fP \fIformat\fP:\fP" 1c
-Select the output format. The default is GeoTIFF (GTiff). Use the short format name.
+Select the output format\&. The default is GeoTIFF (GTiff)\&. Use the short format name\&.
 .PP
 .PP
 .SH "AUTHORS"
diff --git a/man/man1/gdal_grid.1 b/man/man1/gdal_grid.1
index 3246a49..ac14d60 100644
--- a/man/man1/gdal_grid.1
+++ b/man/man1/gdal_grid.1
@@ -1,12 +1,9 @@
-.TH "gdal_grid" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "gdal_grid" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-gdal_grid \- .TH "gdal_grid" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-gdal_grid \- creates regular grid from the scattered data
+gdal_grid \- gdal_grid 
+creates regular grid from the scattered data
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -28,171 +25,171 @@ gdal_grid [-ot {Byte/Int16/UInt16/UInt32/Int32/Float32/Float64/
 .PP
 .SH "DESCRIPTION"
 .PP
-This program creates regular grid (raster) from the scattered data read from the OGR datasource. Input data will be interpolated to fill grid nodes with values, you can choose from various interpolation methods.
+This program creates regular grid (raster) from the scattered data read from the OGR datasource\&. Input data will be interpolated to fill grid nodes with values, you can choose from various interpolation methods\&.
 .PP
-Starting with GDAL 1.10, it is possible to set the \fBGDAL_NUM_THREADS\fP configuration option to parallelize the processing. The value to specify is the number of worker threads, or \fIALL_CPUS\fP to use all the cores/CPUs of the computer.
+Starting with GDAL 1\&.10, it is possible to set the \fBGDAL_NUM_THREADS\fP configuration option to parallelize the processing\&. The value to specify is the number of worker threads, or \fIALL_CPUS\fP to use all the cores/CPUs of the computer\&.
 .PP
 .IP "\fB\fB-ot\fP \fItype\fP:\fP" 1c
-For the output bands to be of the indicated data type.
+For the output bands to be of the indicated data type\&.
 .PP
 .IP "\fB\fB-of\fP \fIformat\fP:\fP" 1c
-Select the output format. The default is GeoTIFF (GTiff). Use the short format name.
+Select the output format\&. The default is GeoTIFF (GTiff)\&. Use the short format name\&.
 .PP
 .IP "\fB\fB-txe\fP \fIxmin xmax\fP:\fP" 1c
-Set georeferenced X extents of output file to be created.
+Set georeferenced X extents of output file to be created\&.
 .PP
 .IP "\fB\fB-tye\fP \fIymin ymax\fP:\fP" 1c
-Set georeferenced Y extents of output file to be created.
+Set georeferenced Y extents of output file to be created\&.
 .PP
 .IP "\fB\fB-outsize\fP \fIxsize ysize\fP:\fP" 1c
-Set the size of the output file in pixels and lines.
+Set the size of the output file in pixels and lines\&.
 .PP
 .IP "\fB\fB-a_srs\fP \fIsrs_def\fP:\fP" 1c
-Override the projection for the output file. The \fIsrs_def\fP may be any of the usual GDAL/OGR forms, complete WKT, PROJ.4, EPSG:n or a file containing the WKT. 
+Override the projection for the output file\&. The \fIsrs_def\fP may be any of the usual GDAL/OGR forms, complete WKT, PROJ\&.4, EPSG:n or a file containing the WKT\&. 
 .PP
 .IP "\fB\fB-zfield\fP \fIfield_name\fP:\fP" 1c
-Identifies an attribute field on the features to be used to get a Z value from. This value overrides Z value read from feature geometry record (naturally, if you have a Z value in geometry, otherwise you have no choice and should specify a field name containing Z value).
+Identifies an attribute field on the features to be used to get a Z value from\&. This value overrides Z value read from feature geometry record (naturally, if you have a Z value in geometry, otherwise you have no choice and should specify a field name containing Z value)\&.
 .PP
 .IP "\fB\fB-z_increase\fP \fIincrease_value\fP:\fP" 1c
-Addition to the attribute field on the features to be used to get a Z value from. The addition should be the same unit as Z value. The result value will be Z value + Z increase value. The default value is 0.
+Addition to the attribute field on the features to be used to get a Z value from\&. The addition should be the same unit as Z value\&. The result value will be Z value + Z increase value\&. The default value is 0\&.
 .PP
 .IP "\fB\fB-z_multiply\fP \fImultiply_value\fP:\fP" 1c
-This is multiplication ratio for Z field. This can be used for shift from e.g. foot to meters or from elevation to deep. The result value will be (Z value + Z increase value) * Z multiply value. The default value is 1.
+This is multiplication ratio for Z field\&. This can be used for shift from e\&.g\&. foot to meters or from elevation to deep\&. The result value will be (Z value + Z increase value) * Z multiply value\&. The default value is 1\&.
 .PP
-.IP "\fB\fB-a\fP \fI[algorithm[:parameter1=value1][:parameter2=value2]...]\fP: \fP" 1c
-Set the interpolation algorithm or data metric name and (optionally) its parameters. See \fBINTERPOLATION ALGORITHMS\fP and \fBDATA METRICS\fP sections for further discussion of available options.
+.IP "\fB\fB-a\fP \fI[algorithm[:parameter1=value1][:parameter2=value2]\&.\&.\&.]\fP: \fP" 1c
+Set the interpolation algorithm or data metric name and (optionally) its parameters\&. See \fBINTERPOLATION ALGORITHMS\fP and \fBDATA METRICS\fP sections for further discussion of available options\&.
 .PP
 .IP "\fB\fB-spat\fP \fIxmin ymin xmax ymax\fP:\fP" 1c
-Adds a spatial filter to select only features contained within the bounding box described by (xmin, ymin) - (xmax, ymax).
+Adds a spatial filter to select only features contained within the bounding box described by (xmin, ymin) - (xmax, ymax)\&.
 .PP
 .IP "\fB\fB-clipsrc\fP\fI [xmin ymin xmax ymax]|WKT|datasource|spat_extent\fP: \fP" 1c
-Adds a spatial filter to select only features contained within the specified bounding box (expressed in source SRS), WKT geometry (POLYGON or MULTIPOLYGON), from a datasource or to the spatial extent of the \fB-spat\fP option if you use the \fIspat_extent\fP keyword. When specifying a datasource, you will generally want to use it in combination of the \fB-clipsrclayer\fP, \fB-clipsrcwhere\fP or \fB-clipsrcsql\fP options.
+Adds a spatial filter to select only features contained within the specified bounding box (expressed in source SRS), WKT geometry (POLYGON or MULTIPOLYGON), from a datasource or to the spatial extent of the \fB-spat\fP option if you use the \fIspat_extent\fP keyword\&. When specifying a datasource, you will generally want to use it in combination of the \fB-clipsrclayer\fP, \fB-clipsrcwhere\fP or \fB-clipsrcsql\fP options\&.
 .PP
 .IP "\fB\fB-clipsrcsql\fP \fIsql_statement\fP:\fP" 1c
-Select desired geometries using an SQL query instead.
+Select desired geometries using an SQL query instead\&.
 .PP
 .IP "\fB\fB-clipsrclayer\fP \fIlayername\fP:\fP" 1c
-Select the named layer from the source clip datasource.
+Select the named layer from the source clip datasource\&.
 .PP
 .IP "\fB\fB-clipsrcwhere\fP \fIexpression\fP:\fP" 1c
-Restrict desired geometries based on attribute query.
+Restrict desired geometries based on attribute query\&.
 .PP
 .IP "\fB\fB-l\fP \fIlayername\fP: \fP" 1c
-Indicates the layer(s) from the datasource that will be used for input features. May be specified multiple times, but at least one layer name or a \fB-sql\fP option must be specified.
+Indicates the layer(s) from the datasource that will be used for input features\&. May be specified multiple times, but at least one layer name or a \fB-sql\fP option must be specified\&.
 .PP
 .IP "\fB\fB-where\fP \fIexpression\fP: \fP" 1c
-An optional SQL WHERE style query expression to be applied to select features to process from the input layer(s). 
+An optional SQL WHERE style query expression to be applied to select features to process from the input layer(s)\&. 
 .PP
 .IP "\fB\fB-sql\fP \fIselect_statement\fP: \fP" 1c
-An SQL statement to be evaluated against the datasource to produce a virtual layer of features to be processed.
+An SQL statement to be evaluated against the datasource to produce a virtual layer of features to be processed\&.
 .PP
 .IP "\fB\fB-co\fP \fI'NAME=VALUE'\fP:\fP" 1c
-Passes a creation option to the output format driver. Multiple \fB-co\fP options may be listed. See format specific documentation for legal creation options for each format.
+Passes a creation option to the output format driver\&. Multiple \fB-co\fP options may be listed\&. See format specific documentation for legal creation options for each format\&.
 .PP
 .IP "\fB\fB-q\fP:\fP" 1c
-Suppress progress monitor and other non-error output.
+Suppress progress monitor and other non-error output\&.
 .PP
 .IP "\fB\fIsrc_datasource\fP: \fP" 1c
-Any OGR supported readable datasource.
+Any OGR supported readable datasource\&.
 .PP
 .IP "\fB\fIdst_filename\fP: \fP" 1c
-The GDAL supported output file.
+The GDAL supported output file\&.
 .PP
 .PP
 .SH "INTERPOLATION ALGORITHMS"
 .PP
-There are number of interpolation algorithms to choose from.
+There are number of interpolation algorithms to choose from\&.
 .SS "invdist"
-Inverse distance to a power. This is default algorithm. It has following parameters:
+Inverse distance to a power\&. This is default algorithm\&. It has following parameters:
 .PP
 .IP "\fB\fIpower\fP: \fP" 1c
-Weighting power (default 2.0). 
+Weighting power (default 2\&.0)\&. 
 .IP "\fB\fIsmoothing\fP: \fP" 1c
-Smoothing parameter (default 0.0). 
+Smoothing parameter (default 0\&.0)\&. 
 .IP "\fB\fIradius1\fP: \fP" 1c
-The first radius (X axis if rotation angle is 0) of search ellipse. Set this parameter to zero to use whole point array. Default is 0.0. 
+The first radius (X axis if rotation angle is 0) of search ellipse\&. Set this parameter to zero to use whole point array\&. Default is 0\&.0\&. 
 .IP "\fB\fIradius2\fP: \fP" 1c
-The second radius (Y axis if rotation angle is 0) of search ellipse. Set this parameter to zero to use whole point array. Default is 0.0. 
+The second radius (Y axis if rotation angle is 0) of search ellipse\&. Set this parameter to zero to use whole point array\&. Default is 0\&.0\&. 
 .IP "\fB\fIangle\fP: \fP" 1c
-Angle of search ellipse rotation in degrees (counter clockwise, default 0.0). 
+Angle of search ellipse rotation in degrees (counter clockwise, default 0\&.0)\&. 
 .IP "\fB\fImax_points\fP: \fP" 1c
-Maximum number of data points to use. Do not search for more points than this number. This is only used if search ellipse is set (both radii are non-zero). Zero means that all found points should be used. Default is 0. 
+Maximum number of data points to use\&. Do not search for more points than this number\&. This is only used if search ellipse is set (both radii are non-zero)\&. Zero means that all found points should be used\&. Default is 0\&. 
 .IP "\fB\fImin_points\fP: \fP" 1c
-Minimum number of data points to use. If less amount of points found the grid node considered empty and will be filled with NODATA marker. This is only used if search ellipse is set (both radii are non-zero). Default is 0. 
+Minimum number of data points to use\&. If less amount of points found the grid node considered empty and will be filled with NODATA marker\&. This is only used if search ellipse is set (both radii are non-zero)\&. Default is 0\&. 
 .IP "\fB\fInodata\fP: \fP" 1c
-NODATA marker to fill empty points (default 0.0). 
+NODATA marker to fill empty points (default 0\&.0)\&. 
 .PP
 .SS "average"
-Moving average algorithm. It has following parameters:
+Moving average algorithm\&. It has following parameters:
 .PP
 .IP "\fB\fIradius1\fP: \fP" 1c
-The first radius (X axis if rotation angle is 0) of search ellipse. Set this parameter to zero to use whole point array. Default is 0.0. 
+The first radius (X axis if rotation angle is 0) of search ellipse\&. Set this parameter to zero to use whole point array\&. Default is 0\&.0\&. 
 .IP "\fB\fIradius2\fP: \fP" 1c
-The second radius (Y axis if rotation angle is 0) of search ellipse. Set this parameter to zero to use whole point array. Default is 0.0. 
+The second radius (Y axis if rotation angle is 0) of search ellipse\&. Set this parameter to zero to use whole point array\&. Default is 0\&.0\&. 
 .IP "\fB\fIangle\fP: \fP" 1c
-Angle of search ellipse rotation in degrees (counter clockwise, default 0.0). 
+Angle of search ellipse rotation in degrees (counter clockwise, default 0\&.0)\&. 
 .IP "\fB\fImin_points\fP: \fP" 1c
-Minimum number of data points to use. If less amount of points found the grid node considered empty and will be filled with NODATA marker. Default is 0. 
+Minimum number of data points to use\&. If less amount of points found the grid node considered empty and will be filled with NODATA marker\&. Default is 0\&. 
 .IP "\fB\fInodata\fP: \fP" 1c
-NODATA marker to fill empty points (default 0.0). 
+NODATA marker to fill empty points (default 0\&.0)\&. 
 .PP
 .PP
-Note, that it is essential to set search ellipse for moving average method. It is a window that will be averaged when computing grid nodes values.
+Note, that it is essential to set search ellipse for moving average method\&. It is a window that will be averaged when computing grid nodes values\&.
 .SS "nearest"
-Nearest neighbor algorithm. It has following parameters:
+Nearest neighbor algorithm\&. It has following parameters:
 .PP
 .IP "\fB\fIradius1\fP: \fP" 1c
-The first radius (X axis if rotation angle is 0) of search ellipse. Set this parameter to zero to use whole point array. Default is 0.0. 
+The first radius (X axis if rotation angle is 0) of search ellipse\&. Set this parameter to zero to use whole point array\&. Default is 0\&.0\&. 
 .IP "\fB\fIradius2\fP: \fP" 1c
-The second radius (Y axis if rotation angle is 0) of search ellipse. Set this parameter to zero to use whole point array. Default is 0.0. 
+The second radius (Y axis if rotation angle is 0) of search ellipse\&. Set this parameter to zero to use whole point array\&. Default is 0\&.0\&. 
 .IP "\fB\fIangle\fP: \fP" 1c
-Angle of search ellipse rotation in degrees (counter clockwise, default 0.0). 
+Angle of search ellipse rotation in degrees (counter clockwise, default 0\&.0)\&. 
 .IP "\fB\fInodata\fP: \fP" 1c
-NODATA marker to fill empty points (default 0.0). 
+NODATA marker to fill empty points (default 0\&.0)\&. 
 .PP
 .SH "DATA METRICS"
 .PP
-Besides the interpolation functionality \fBgdal_grid\fP can be used to compute some data metrics using the specified window and output grid geometry. These metrics are:
+Besides the interpolation functionality \fBgdal_grid\fP can be used to compute some data metrics using the specified window and output grid geometry\&. These metrics are:
 .PP
 .IP "\fB\fIminimum\fP: \fP" 1c
-Minimum value found in grid node search ellipse.
+Minimum value found in grid node search ellipse\&.
 .PP
 .IP "\fB\fImaximum\fP: \fP" 1c
-Maximum value found in grid node search ellipse.
+Maximum value found in grid node search ellipse\&.
 .PP
 .IP "\fB\fIrange\fP: \fP" 1c
-A difference between the minimum and maximum values found in grid node search ellipse.
+A difference between the minimum and maximum values found in grid node search ellipse\&.
 .PP
 .IP "\fB\fIcount\fP: \fP" 1c
-A number of data points found in grid node search ellipse.
+A number of data points found in grid node search ellipse\&.
 .PP
 .IP "\fB\fIaverage_distance\fP: \fP" 1c
-An average distance between the grid node (center of the search ellipse) and all of the data points found in grid node search ellipse.
+An average distance between the grid node (center of the search ellipse) and all of the data points found in grid node search ellipse\&.
 .PP
 .IP "\fB\fIaverage_distance_pts\fP: \fP" 1c
-An average distance between the data points found in grid node search ellipse. The distance between each pair of points within ellipse is calculated and average of all distances is set as a grid node value.
+An average distance between the data points found in grid node search ellipse\&. The distance between each pair of points within ellipse is calculated and average of all distances is set as a grid node value\&.
 .PP
 .PP
 .PP
 All the metrics have the same set of options:
 .PP
 .IP "\fB\fIradius1\fP: \fP" 1c
-The first radius (X axis if rotation angle is 0) of search ellipse. Set this parameter to zero to use whole point array. Default is 0.0. 
+The first radius (X axis if rotation angle is 0) of search ellipse\&. Set this parameter to zero to use whole point array\&. Default is 0\&.0\&. 
 .IP "\fB\fIradius2\fP: \fP" 1c
-The second radius (Y axis if rotation angle is 0) of search ellipse. Set this parameter to zero to use whole point array. Default is 0.0. 
+The second radius (Y axis if rotation angle is 0) of search ellipse\&. Set this parameter to zero to use whole point array\&. Default is 0\&.0\&. 
 .IP "\fB\fIangle\fP: \fP" 1c
-Angle of search ellipse rotation in degrees (counter clockwise, default 0.0). 
+Angle of search ellipse rotation in degrees (counter clockwise, default 0\&.0)\&. 
 .IP "\fB\fImin_points\fP: \fP" 1c
-Minimum number of data points to use. If less amount of points found the grid node considered empty and will be filled with NODATA marker. This is only used if search ellipse is set (both radii are non-zero). Default is 0. 
+Minimum number of data points to use\&. If less amount of points found the grid node considered empty and will be filled with NODATA marker\&. This is only used if search ellipse is set (both radii are non-zero)\&. Default is 0\&. 
 .IP "\fB\fInodata\fP: \fP" 1c
-NODATA marker to fill empty points (default 0.0).
+NODATA marker to fill empty points (default 0\&.0)\&.
 .PP
 .PP
 .SH "READING COMMA SEPARATED VALUES"
 .PP
-Often you have a text file with a list of comma separated XYZ values to work with (so called CSV file). You can easily use that kind of data source in \fBgdal_grid\fP. All you need is create a virtual dataset header (VRT) for you CSV file and use it as input datasource for \fBgdal_grid\fP. You can find details on VRT format at \fCVirtual Format\fP description page.
+Often you have a text file with a list of comma separated XYZ values to work with (so called CSV file)\&. You can easily use that kind of data source in \fBgdal_grid\fP\&. All you need is create a virtual dataset header (VRT) for you CSV file and use it as input datasource for \fBgdal_grid\fP\&. You can find details on VRT format at \fCVirtual Format\fP description page\&.
 .PP
-Here is a small example. Let we have a CSV file called \fIdem.csv\fP containing
+Here is a small example\&. Let we have a CSV file called \fIdem\&.csv\fP containing
 .PP
 .PP
 .nf
@@ -206,7 +203,7 @@ Easting,Northing,Elevation
 .fi
 .PP
 .PP
-For above data we will create \fIdem.vrt\fP header with the following content:
+For above data we will create \fIdem\&.vrt\fP header with the following content:
 .PP
 .PP
 .nf
@@ -221,7 +218,7 @@ For above data we will create \fIdem.vrt\fP header with the following content:
 .fi
 .PP
 .PP
-This description specifies so called 2.5D geometry with three coordinates X, Y and Z. Z value will be used for interpolation. Now you can use \fIdem.vrt\fP with all OGR programs (start with \fBogrinfo\fP to test that everything works fine). The datasource will contain single layer called \fI'dem'\fP filled with point features constructed from values in CSV file. Using this technique you can handle CSV files with more than three columns, switch columns, etc.
+This description specifies so called 2\&.5D geometry with three coordinates X, Y and Z\&. Z value will be used for interpolation\&. Now you can use \fIdem\&.vrt\fP with all OGR programs (start with \fBogrinfo\fP to test that everything works fine)\&. The datasource will contain single layer called \fI'dem'\fP filled with point features constructed from values in CSV file\&. Using this technique you can handle CSV files with more than three columns, switch columns, etc\&.
 .PP
 If your CSV file does not contain column headers then it can be handled in the following way:
 .PP
@@ -232,10 +229,10 @@ If your CSV file does not contain column headers then it can be handled in the f
 .fi
 .PP
 .PP
-\fCComma Separated Value\fP description page contains details on CSV format supported by GDAL/OGR.
+\fCComma Separated Value\fP description page contains details on CSV format supported by GDAL/OGR\&.
 .SH "EXAMPLE"
 .PP
-The following would create raster TIFF file from VRT datasource described in \fBREADING COMMA SEPARATED VALUES\fP section using the inverse distance to a power method. Values to interpolate will be read from Z value of geometry record.
+The following would create raster TIFF file from VRT datasource described in \fBREADING COMMA SEPARATED VALUES\fP section using the inverse distance to a power method\&. Values to interpolate will be read from Z value of geometry record\&.
 .PP
 .PP
 .nf
@@ -244,7 +241,7 @@ gdal_grid -a invdist:power=2.0:smoothing=1.0 -txe 85000 89000 -tye 894000 890000
 .fi
 .PP
 .PP
-The next command does the same thing as the previous one, but reads values to interpolate from the attribute field specified with \fB-zfield\fP option instead of geometry record. So in this case X and Y coordinates are being taken from geometry and Z is being taken from the \fI'Elevation'\fP field. The GDAL_NUM_THREADS is also set to parallelize the computation.
+The next command does the same thing as the previous one, but reads values to interpolate from the attribute field specified with \fB-zfield\fP option instead of geometry record\&. So in this case X and Y coordinates are being taken from geometry and Z is being taken from the \fI'Elevation'\fP field\&. The GDAL_NUM_THREADS is also set to parallelize the computation\&.
 .PP
 .PP
 .nf
diff --git a/man/man1/gdal_merge.1 b/man/man1/gdal_merge.1
index 642bb77..f9ee33f 100644
--- a/man/man1/gdal_merge.1
+++ b/man/man1/gdal_merge.1
@@ -1,12 +1,9 @@
-.TH "gdal_merge" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "gdal_merge" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-gdal_merge \- .TH "gdal_merge" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-gdal_merge \- mosaics a set of images
+gdal_merge \- gdal_merge\&.py 
+mosaics a set of images
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -20,45 +17,45 @@ gdal_merge.py [-o out_filename] [-of out_format] [-co NAME=VALUE]*
 .PP
 .SH "DESCRIPTION"
 .PP
-This utility will automatically mosaic a set of images. All the images must be in the same coordinate system and have a matching number of bands, but they may be overlapping, and at different resolutions. In areas of overlap, the last image will be copied over earlier ones.
+This utility will automatically mosaic a set of images\&. All the images must be in the same coordinate system and have a matching number of bands, but they may be overlapping, and at different resolutions\&. In areas of overlap, the last image will be copied over earlier ones\&.
 .PP
 .IP "\fB\fB-o\fP \fIout_filename\fP:\fP" 1c
-The name of the output file, which will be created if it does not already exist (defaults to 'out.tif'). 
+The name of the output file, which will be created if it does not already exist (defaults to 'out\&.tif')\&. 
 .IP "\fB\fB-of\fP \fIformat\fP:\fP" 1c
-Output format, defaults to GeoTIFF (GTiff).  
+Output format, defaults to GeoTIFF (GTiff)\&.  
 .IP "\fB\fB-co\fP \fINAME=VALUE\fP:\fP" 1c
-Creation option for output file. Multiple options can be specified.  
+Creation option for output file\&. Multiple options can be specified\&.  
 .IP "\fB\fB-ot\fP \fIdatatype\fP:\fP" 1c
-Force the output image bands to have a specific type. Use type names (ie. Byte, Int16,...)  
+Force the output image bands to have a specific type\&. Use type names (ie\&. Byte, Int16,\&.\&.\&.)  
 .IP "\fB\fB-ps\fP \fIpixelsize_x pixelsize_y\fP:\fP" 1c
-Pixel size to be used for the output file. If not specified the resolution of the first input file will be used.
+Pixel size to be used for the output file\&. If not specified the resolution of the first input file will be used\&.
 .PP
 .IP "\fB\fB-tap\fP:\fP" 1c
-(GDAL >= 1.8.0) (target aligned pixels) align the coordinates of the extent of the output file to the values of the -tr, such that the aligned extent includes the minimum extent.
+(GDAL >= 1\&.8\&.0) (target aligned pixels) align the coordinates of the extent of the output file to the values of the -tr, such that the aligned extent includes the minimum extent\&.
 .PP
 .IP "\fB\fB-ul_lr\fP \fIulx uly lrx lry\fP:\fP" 1c
-The extents of the output file. If not specified the aggregate extents of all input files will be used. 
+The extents of the output file\&. If not specified the aggregate extents of all input files will be used\&. 
 .IP "\fB\fP" 1c
 .IP "\fB\fB-v\fP:\fP" 1c
-Generate verbose output of mosaicing operations as they are done. 
+Generate verbose output of mosaicing operations as they are done\&. 
 .IP "\fB\fB-separate\fP:\fP" 1c
-Place each input file into a separate \fIstacked\fP band.  
+Place each input file into a separate \fIstacked\fP band\&.  
 .IP "\fB\fB-pct\fP:\fP" 1c
-Grab a pseudocolor table from the first input image, and use it for the output. Merging pseudocolored images this way assumes that all input files use the same color table.  
+Grab a pseudocolor table from the first input image, and use it for the output\&. Merging pseudocolored images this way assumes that all input files use the same color table\&.  
 .IP "\fB\fB-n\fP \fInodata_value\fP:\fP" 1c
-Ignore pixels from files being merged in with this pixel value.  
+Ignore pixels from files being merged in with this pixel value\&.  
 .IP "\fB\fB-a_nodata\fP \fIoutput_nodata_value\fP:\fP" 1c
-(GDAL >= 1.9.0) Assign a specified nodata value to output bands. 
+(GDAL >= 1\&.9\&.0) Assign a specified nodata value to output bands\&. 
 .IP "\fB\fB-init\fP \fI'value(s)'\fP:\fP" 1c
-Pre-initialize the output image bands with these values. However, it is not marked as the nodata value in the output file. If only one value is given, the same value is used in all the bands.  
+Pre-initialize the output image bands with these values\&. However, it is not marked as the nodata value in the output file\&. If only one value is given, the same value is used in all the bands\&.  
 .IP "\fB\fB-createonly\fP:\fP" 1c
-The output file is created (and potentially pre-initialized) but no input image data is copied into it.  
+The output file is created (and potentially pre-initialized) but no input image data is copied into it\&.  
 .PP
 .PP
-NOTE: gdal_merge.py is a Python script, and will only work if GDAL was built with Python support.
+NOTE: gdal_merge\&.py is a Python script, and will only work if GDAL was built with Python support\&.
 .SH "EXAMPLE"
 .PP
-Create an image with the pixels in all bands initialized to 255.
+Create an image with the pixels in all bands initialized to 255\&.
 .PP
 .PP
 .nf
@@ -67,7 +64,7 @@ Create an image with the pixels in all bands initialized to 255.
 .fi
 .PP
 .PP
-Create an RGB image that shows blue in pixels with no data. The first two bands will be initialized to 0 and the third band will be initialized to 255.
+Create an RGB image that shows blue in pixels with no data\&. The first two bands will be initialized to 0 and the third band will be initialized to 255\&.
 .PP
 .PP
 .nf
diff --git a/man/man1/gdal_polygonize.1 b/man/man1/gdal_polygonize.1
index 4c4e33a..6013e76 100644
--- a/man/man1/gdal_polygonize.1
+++ b/man/man1/gdal_polygonize.1
@@ -1,12 +1,9 @@
-.TH "gdal_polygonize" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "gdal_polygonize" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-gdal_polygonize \- .TH "gdal_polygonize" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-gdal_polygonize \- produces a polygon feature layer from a raster
+gdal_polygonize \- gdal_polygonize\&.py 
+produces a polygon feature layer from a raster
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -18,41 +15,41 @@ gdal_polygonize.py [-8] [-nomask] [-mask filename] raster_file [-b band]
 .PP
 .SH "DESCRIPTION"
 .PP
-This utility creates vector polygons for all connected regions of pixels in the raster sharing a common pixel value. Each polygon is created with an attribute indicating the pixel value of that polygon. A raster mask may also be provided to determine which pixels are eligible for processing.
+This utility creates vector polygons for all connected regions of pixels in the raster sharing a common pixel value\&. Each polygon is created with an attribute indicating the pixel value of that polygon\&. A raster mask may also be provided to determine which pixels are eligible for processing\&.
 .PP
-The utility will create the output vector datasource if it does not already exist, defaulting to GML format.
+The utility will create the output vector datasource if it does not already exist, defaulting to GML format\&.
 .PP
-The utility is based on the GDALPolygonize() function which has additional details on the algorithm.
+The utility is based on the GDALPolygonize() function which has additional details on the algorithm\&.
 .PP
 .IP "\fB\fB-8\fP:\fP" 1c
-(GDAL >= 1.10) Use 8 connectedness. Default is 4 connectedness. 
+(GDAL >= 1\&.10) Use 8 connectedness\&. Default is 4 connectedness\&. 
 .PP
 .IP "\fB\fB-nomask\fP:\fP" 1c
-Do not use the default validity mask for the input band (such as nodata, or alpha masks). 
+Do not use the default validity mask for the input band (such as nodata, or alpha masks)\&. 
 .PP
 .IP "\fB\fB-mask\fP \fIfilename\fP:\fP" 1c
-Use the first band of the specified file as a validity mask (zero is invalid, non-zero is valid). 
+Use the first band of the specified file as a validity mask (zero is invalid, non-zero is valid)\&. 
 .PP
 .IP "\fB\fIraster_file\fP\fP" 1c
-The source raster file from which polygons are derived.
+The source raster file from which polygons are derived\&.
 .PP
 .IP "\fB\fB-b\fP \fIband\fP: \fP" 1c
-The band on \fIraster_file\fP to build the polygons from. 
+The band on \fIraster_file\fP to build the polygons from\&. 
 .PP
 .IP "\fB\fB-f\fP \fIogr_format\fP\fP" 1c
-Select the output format of the file to be created. Default is GML. 
+Select the output format of the file to be created\&. Default is GML\&. 
 .PP
 .IP "\fB\fIout_file\fP\fP" 1c
-The destination vector file to which the polygons will be written. 
+The destination vector file to which the polygons will be written\&. 
 .PP
 .IP "\fB\fIlayer\fP\fP" 1c
-The name of the layer created to hold the polygon features. 
+The name of the layer created to hold the polygon features\&. 
 .PP
 .IP "\fB\fIfieldname\fP\fP" 1c
-The name of the field to create (defaults to 'DN'). 
+The name of the field to create (defaults to 'DN')\&. 
 .PP
 .IP "\fB\fB-q\fP:\fP" 1c
-The script runs in quiet mode. The progress monitor is suppressed and routine messages are not displayed. 
+The script runs in quiet mode\&. The progress monitor is suppressed and routine messages are not displayed\&. 
 .PP
 .PP
 .PP
diff --git a/man/man1/gdal_proximity.1 b/man/man1/gdal_proximity.1
index ed3e064..91b118f 100644
--- a/man/man1/gdal_proximity.1
+++ b/man/man1/gdal_proximity.1
@@ -1,12 +1,9 @@
-.TH "gdal_proximity" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "gdal_proximity" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-gdal_proximity \- .TH "gdal_proximity" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-gdal_proximity \- produces a raster proximity map
+gdal_proximity \- gdal_proximity\&.py 
+produces a raster proximity map
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -22,46 +19,46 @@ gdal_proximity.py srcfile dstfile [-srcband n] [-dstband n]
 .PP
 .SH "DESCRIPTION"
 .PP
-The gdal_proximity.py script generates a raster proximity map indicating the distance from the center of each pixel to the center of the nearest pixel identified as a target pixel. Target pixels are those in the source raster for which the raster pixel value is in the set of target pixel values.
+The gdal_proximity\&.py script generates a raster proximity map indicating the distance from the center of each pixel to the center of the nearest pixel identified as a target pixel\&. Target pixels are those in the source raster for which the raster pixel value is in the set of target pixel values\&.
 .PP
 .IP "\fB\fIsrcfile\fP\fP" 1c
-The source raster file used to identify target pixels.
+The source raster file used to identify target pixels\&.
 .PP
 .IP "\fB\fIdstfile\fP\fP" 1c
-The destination raster file to which the proximity map will be written. It may be a pre-existing file of the same size as srcfile. If it does not exist it will be created.
+The destination raster file to which the proximity map will be written\&. It may be a pre-existing file of the same size as srcfile\&. If it does not exist it will be created\&.
 .PP
 .IP "\fB\fB-srcband\fP \fIn\fP\fP" 1c
-Identifies the band in the source file to use (default is 1).
+Identifies the band in the source file to use (default is 1)\&.
 .PP
 .IP "\fB\fB-dstband\fP \fIn\fP\fP" 1c
-Identifies the band in the destination file to use (default is 1).
+Identifies the band in the destination file to use (default is 1)\&.
 .PP
 .IP "\fB\fB-of\fP \fIformat\fP:\fP" 1c
-Select the output format. The default is GeoTIFF (GTiff). Use the short format name. 
+Select the output format\&. The default is GeoTIFF (GTiff)\&. Use the short format name\&. 
 .PP
 .IP "\fB\fB-co\fP \fI'NAME=VALUE'\fP:\fP" 1c
-passes a creation option to the output format driver. Multiple \fB-co\fP options may be listed. See format specific documentation for legal creation options for each format. 
+passes a creation option to the output format driver\&. Multiple \fB-co\fP options may be listed\&. See format specific documentation for legal creation options for each format\&. 
 .PP
 .IP "\fB\fB-ot\fP \fIdatatype\fP:\fP" 1c
-Force the output image bands to have a specific type. Use type names (ie. Byte, Int16,...) 
+Force the output image bands to have a specific type\&. Use type names (ie\&. Byte, Int16,\&.\&.\&.) 
 .PP
 .IP "\fB\fB-values\fP \fIn,n,n\fP:\fP" 1c
-A list of target pixel values in the source image to be considered target pixels. If not specified, all non-zero pixels will be considered target pixels. 
+A list of target pixel values in the source image to be considered target pixels\&. If not specified, all non-zero pixels will be considered target pixels\&. 
 .PP
 .IP "\fB\fB-distunits\fP \fIPIXEL/GEO\fP:\fP" 1c
-Indicate whether distances generated should be in pixel or georeferenced coordinates (default PIXEL). 
+Indicate whether distances generated should be in pixel or georeferenced coordinates (default PIXEL)\&. 
 .PP
 .IP "\fB\fB-maxdist\fP \fIn\fP:\fP" 1c
-The maximum distance to be generated. The nodata value will be used for pixels beyond this distance. If a nodata value is not provided, the output band will be queried for its nodata value. If the output band does not have a nodata value, then the value 65535 will be used. Distance is interpreted in pixels unless -distunits GEO is specified. 
+The maximum distance to be generated\&. The nodata value will be used for pixels beyond this distance\&. If a nodata value is not provided, the output band will be queried for its nodata value\&. If the output band does not have a nodata value, then the value 65535 will be used\&. Distance is interpreted in pixels unless -distunits GEO is specified\&. 
 .PP
 .IP "\fB\fB-nodata\fP \fIn\fP:\fP" 1c
-Specify a nodata value to use for the destination proximity raster. 
+Specify a nodata value to use for the destination proximity raster\&. 
 .PP
 .IP "\fB\fB-use_input_nodata\fP \fIYES/NO\fP:\fP" 1c
-(GDAL >= 2.0) Indicate whether nodata pixels in the input raster should be nodata in the output raster (default NO). 
+(GDAL >= 2\&.0) Indicate whether nodata pixels in the input raster should be nodata in the output raster (default NO)\&. 
 .PP
 .IP "\fB\fB-fixed-buf-val\fP \fIn\fP:\fP" 1c
-Specify a value to be applied to all pixels that are within the -maxdist of target pixels (including the target pixels) instead of a distance value. 
+Specify a value to be applied to all pixels that are within the -maxdist of target pixels (including the target pixels) instead of a distance value\&. 
 .PP
 .PP
 .SH "AUTHORS"
diff --git a/man/man1/gdal_rasterize.1 b/man/man1/gdal_rasterize.1
index a8e7c71..a9f7146 100644
--- a/man/man1/gdal_rasterize.1
+++ b/man/man1/gdal_rasterize.1
@@ -1,12 +1,9 @@
-.TH "gdal_rasterize" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "gdal_rasterize" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-gdal_rasterize \- .TH "gdal_rasterize" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-gdal_rasterize \- burns vector geometries into a raster
+gdal_rasterize \- gdal_rasterize 
+burns vector geometries into a raster
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -25,82 +22,82 @@ Usage: gdal_rasterize [-b band]* [-i] [-at]
 .PP
 .SH "DESCRIPTION"
 .PP
-This program burns vector geometries (points, lines, and polygons) into the raster band(s) of a raster image. Vectors are read from OGR supported vector formats.
+This program burns vector geometries (points, lines, and polygons) into the raster band(s) of a raster image\&. Vectors are read from OGR supported vector formats\&.
 .PP
-Note that the vector data must be in the same coordinate system as the raster data; on the fly reprojection is not provided.
+Note that the vector data must be in the same coordinate system as the raster data; on the fly reprojection is not provided\&.
 .PP
-Since GDAL 1.8.0, the target GDAL file can be created by gdal_rasterize. Either the -tr or -ts option must be used in that case.
+Since GDAL 1\&.8\&.0, the target GDAL file can be created by gdal_rasterize\&. Either the -tr or -ts option must be used in that case\&.
 .PP
 .IP "\fB\fB-b\fP \fIband\fP: \fP" 1c
-The band(s) to burn values into. Multiple -b arguments may be used to burn into a list of bands. The default is to burn into band 1.
+The band(s) to burn values into\&. Multiple -b arguments may be used to burn into a list of bands\&. The default is to burn into band 1\&.
 .PP
 .IP "\fB\fB-i\fP: \fP" 1c
-Invert rasterization. Burn the fixed burn value, or the burn value associated with the first feature into all parts of the image \fInot\fP inside the provided a polygon.
+Invert rasterization\&. Burn the fixed burn value, or the burn value associated with the first feature into all parts of the image \fInot\fP inside the provided a polygon\&.
 .PP
 .IP "\fB\fB-at\fP: \fP" 1c
-Enables the ALL_TOUCHED rasterization option so that all pixels touched by lines or polygons will be updated, not just those on the line render path, or whose center point is within the polygon. Defaults to disabled for normal rendering rules.
+Enables the ALL_TOUCHED rasterization option so that all pixels touched by lines or polygons will be updated, not just those on the line render path, or whose center point is within the polygon\&. Defaults to disabled for normal rendering rules\&.
 .PP
 .IP "\fB\fB-burn\fP \fIvalue\fP: \fP" 1c
-A fixed value to burn into a band for all objects. A list of -burn options can be supplied, one per band being written to.
+A fixed value to burn into a band for all objects\&. A list of -burn options can be supplied, one per band being written to\&.
 .PP
 .IP "\fB\fB-a\fP \fIattribute_name\fP: \fP" 1c
-Identifies an attribute field on the features to be used for a burn-in value. The value will be burned into all output bands.
+Identifies an attribute field on the features to be used for a burn-in value\&. The value will be burned into all output bands\&.
 .PP
 .IP "\fB\fB-3d\fP: \fP" 1c
-Indicates that a burn value should be extracted from the 'Z' values of the feature. These values are adjusted by the burn value given by '-burn value' or '-a attribute_name' if provided. As of now, only points and lines are drawn in 3D.
+Indicates that a burn value should be extracted from the 'Z' values of the feature\&. These values are adjusted by the burn value given by '-burn value' or '-a attribute_name' if provided\&. As of now, only points and lines are drawn in 3D\&.
 .PP
 .IP "\fB\fB-l\fP \fIlayername\fP: \fP" 1c
-Indicates the layer(s) from the datasource that will be used for input features. May be specified multiple times, but at least one layer name or a -sql option must be specified.
+Indicates the layer(s) from the datasource that will be used for input features\&. May be specified multiple times, but at least one layer name or a -sql option must be specified\&.
 .PP
 .IP "\fB\fB-where\fP \fIexpression\fP: \fP" 1c
-An optional SQL WHERE style query expression to be applied to select features to burn in from the input layer(s). 
+An optional SQL WHERE style query expression to be applied to select features to burn in from the input layer(s)\&. 
 .PP
 .IP "\fB\fB-sql\fP \fIselect_statement\fP: \fP" 1c
-An SQL statement to be evaluated against the datasource to produce a virtual layer of features to be burned in.
+An SQL statement to be evaluated against the datasource to produce a virtual layer of features to be burned in\&.
 .PP
 .IP "\fB\fB-of\fP \fIformat\fP:\fP" 1c
-(GDAL >= 1.8.0) Select the output format. The default is GeoTIFF (GTiff). Use the short format name.
+(GDAL >= 1\&.8\&.0) Select the output format\&. The default is GeoTIFF (GTiff)\&. Use the short format name\&.
 .PP
 .IP "\fB\fB-a_nodata\fP \fIvalue\fP:\fP" 1c
-(GDAL >= 1.8.0) Assign a specified nodata value to output bands.
+(GDAL >= 1\&.8\&.0) Assign a specified nodata value to output bands\&.
 .PP
 .IP "\fB\fB-init\fP \fIvalue\fP:\fP" 1c
-(GDAL >= 1.8.0) Pre-initialize the output image bands with these values. However, it is not marked as the nodata value in the output file. If only one value is given, the same value is used in all the bands.
+(GDAL >= 1\&.8\&.0) Pre-initialize the output image bands with these values\&. However, it is not marked as the nodata value in the output file\&. If only one value is given, the same value is used in all the bands\&.
 .PP
 .IP "\fB\fB-a_srs\fP \fIsrs_def\fP:\fP" 1c
-(GDAL >= 1.8.0) Override the projection for the output file. If not specified, the projection of the input vector file will be used if available. If incompatible projections between input and output files, no attempt will be made to reproject features. The \fIsrs_def\fP may be any of the usual GDAL/OGR forms, complete WKT, PROJ.4, EPSG:n or a file containing the WKT. 
+(GDAL >= 1\&.8\&.0) Override the projection for the output file\&. If not specified, the projection of the input vector file will be used if available\&. If incompatible projections between input and output files, no attempt will be made to reproject features\&. The \fIsrs_def\fP may be any of the usual GDAL/OGR forms, complete WKT, PROJ\&.4, EPSG:n or a file containing the WKT\&. 
 .PP
 .IP "\fB\fB-co\fP \fI'NAME=VALUE'\fP:\fP" 1c
-(GDAL >= 1.8.0) Passes a creation option to the output format driver. Multiple \fB-co\fP options may be listed. See format specific documentation for legal creation options for each format.
+(GDAL >= 1\&.8\&.0) Passes a creation option to the output format driver\&. Multiple \fB-co\fP options may be listed\&. See format specific documentation for legal creation options for each format\&.
 .PP
 .IP "\fB\fB-te\fP \fIxmin ymin xmax ymax\fP :\fP" 1c
-(GDAL >= 1.8.0) Set georeferenced extents. The values must be expressed in georeferenced units. If not specified, the extent of the output file will be the extent of the vector layers. 
+(GDAL >= 1\&.8\&.0) Set georeferenced extents\&. The values must be expressed in georeferenced units\&. If not specified, the extent of the output file will be the extent of the vector layers\&. 
 .PP
 .IP "\fB\fB-tr\fP \fIxres yres\fP :\fP" 1c
-(GDAL >= 1.8.0) Set target resolution. The values must be expressed in georeferenced units. Both must be positive values. 
+(GDAL >= 1\&.8\&.0) Set target resolution\&. The values must be expressed in georeferenced units\&. Both must be positive values\&. 
 .PP
 .IP "\fB\fB-tap\fP:\fP" 1c
-(GDAL >= 1.8.0) (target aligned pixels) Align the coordinates of the extent of the output file to the values of the -tr, such that the aligned extent includes the minimum extent.
+(GDAL >= 1\&.8\&.0) (target aligned pixels) Align the coordinates of the extent of the output file to the values of the -tr, such that the aligned extent includes the minimum extent\&.
 .PP
 .IP "\fB\fB-ts\fP \fIwidth height\fP:\fP" 1c
-(GDAL >= 1.8.0) Set output file size in pixels and lines. Note that -ts cannot be used with -tr
+(GDAL >= 1\&.8\&.0) Set output file size in pixels and lines\&. Note that -ts cannot be used with -tr
 .PP
 .IP "\fB\fB-ot\fP \fItype\fP:\fP" 1c
-(GDAL >= 1.8.0) For the output bands to be of the indicated data type. Defaults to Float64
+(GDAL >= 1\&.8\&.0) For the output bands to be of the indicated data type\&. Defaults to Float64
 .PP
 .IP "\fB\fB-q\fP:\fP" 1c
-(GDAL >= 1.8.0) Suppress progress monitor and other non-error output.
+(GDAL >= 1\&.8\&.0) Suppress progress monitor and other non-error output\&.
 .PP
 .IP "\fB\fIsrc_datasource\fP: \fP" 1c
-Any OGR supported readable datasource.
+Any OGR supported readable datasource\&.
 .PP
 .IP "\fB\fIdst_filename\fP: \fP" 1c
-The GDAL supported output file. Must support update mode access. Before GDAL 1.8.0, gdal_rasterize could not create new output files.
+The GDAL supported output file\&. Must support update mode access\&. Before GDAL 1\&.8\&.0, gdal_rasterize could not create new output files\&.
 .PP
 .PP
 .SH "EXAMPLE"
 .PP
-The following would burn all polygons from mask.shp into the RGB TIFF file work.tif with the color red (RGB = 255,0,0).
+The following would burn all polygons from mask\&.shp into the RGB TIFF file work\&.tif with the color red (RGB = 255,0,0)\&.
 .PP
 .PP
 .nf
@@ -109,7 +106,7 @@ gdal_rasterize -b 1 -b 2 -b 3 -burn 255 -burn 0 -burn 0 -l mask mask.shp work.ti
 .fi
 .PP
 .PP
-The following would burn all 'class A' buildings into the output elevation file, pulling the top elevation from the ROOF_H attribute.
+The following would burn all 'class A' buildings into the output elevation file, pulling the top elevation from the ROOF_H attribute\&.
 .PP
 .PP
 .nf
diff --git a/man/man1/gdal_retile.1 b/man/man1/gdal_retile.1
index bee1ce2..802653d 100644
--- a/man/man1/gdal_retile.1
+++ b/man/man1/gdal_retile.1
@@ -1,12 +1,9 @@
-.TH "gdal_retile" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "gdal_retile" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-gdal_retile \- .TH "gdal_retile" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-gdal_retile \- gdal_retile.py retiles a set of tiles and/or build tiled pyramid levels
+gdal_retile \- gdal_retile\&.py 
+gdal_retile\&.py retiles a set of tiles and/or build tiled pyramid levels
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -30,43 +27,43 @@ gdal_retile.py [-v] [-co NAME=VALUE]* [-of out_format] [-ps pixelWidth pixelHeig
  
 .SH "DESCRIPTION"
 .PP
-This utility will retile a set of input tile(s). All the input tile(s) must be georeferenced in the same coordinate system and have a matching number of bands. Optionally pyramid levels are generated. It is possible to generate shape file(s) for the tiled output.
+This utility will retile a set of input tile(s)\&. All the input tile(s) must be georeferenced in the same coordinate system and have a matching number of bands\&. Optionally pyramid levels are generated\&. It is possible to generate shape file(s) for the tiled output\&.
 .PP
 If your number of input tiles exhausts the command line buffer, use the general --optfile option
 .PP
 .IP "\fB\fB-targetDir\fP \fIdirectory\fP:\fP" 1c
-The directory where the tile result is created. Pyramids are stored in subdirectories numbered from 1. Created tile names have a numbering schema and contain the name of the source tiles(s)  
+The directory where the tile result is created\&. Pyramids are stored in subdirectories numbered from 1\&. Created tile names have a numbering schema and contain the name of the source tiles(s)  
 .IP "\fB\fB-of\fP \fIformat\fP:\fP" 1c
-Output format, defaults to GeoTIFF (GTiff).  
+Output format, defaults to GeoTIFF (GTiff)\&.  
 .IP "\fB\fB-co\fP \fINAME=VALUE\fP:\fP" 1c
-Creation option for output file. Multiple options can be specified.  
+Creation option for output file\&. Multiple options can be specified\&.  
 .IP "\fB\fB-ot\fP \fIdatatype\fP:\fP" 1c
-Force the output image bands to have a specific type. Use type names (ie. Byte, Int16,...)  
+Force the output image bands to have a specific type\&. Use type names (ie\&. Byte, Int16,\&.\&.\&.)  
 .IP "\fB\fB-ps\fP \fIpixelsize_x pixelsize_y\fP:\fP" 1c
-Pixel size to be used for the output file. If not specified, 256 x 256 is the default  
+Pixel size to be used for the output file\&. If not specified, 256 x 256 is the default  
 .IP "\fB\fB-levels\fP \fInumberOfLevels\fP:\fP" 1c
-Number of pyramids levels to build.  
+Number of pyramids levels to build\&.  
 .IP "\fB\fB-v\fP:\fP" 1c
-Generate verbose output of tile operations as they are done.  
+Generate verbose output of tile operations as they are done\&.  
 .IP "\fB\fB-pyramidOnly\fP:\fP" 1c
 No retiling, build only the pyramids  
 .IP "\fB\fB-r\fP \fIalgorithm\fP:\fP" 1c
 Resampling algorithm, default is near  
 .IP "\fB\fB-s_srs\fP \fIsrs_def\fP:\fP" 1c
-Source spatial reference to use. The coordinate systems that can be passed are anything supported by the OGRSpatialReference.SetFro‐mUserInput() call, which includes EPSG PCS and GCSes (ie.EPSG:4296), PROJ.4 declarations (as above), or the name of a .prf file containing well known text. If no srs_def is given, the srs_def of the source tiles is used (if there is any). The srs_def will be propagated to created tiles (if possible) and to the optional shape file(s)  
+Source spatial reference to use\&. The coordinate systems that can be passed are anything supported by the OGRSpatialReference\&.SetFro‐mUserInput() call, which includes EPSG PCS and GCSes (ie\&.EPSG:4296), PROJ\&.4 declarations (as above), or the name of a \&.prf file containing well known text\&. If no srs_def is given, the srs_def of the source tiles is used (if there is any)\&. The srs_def will be propagated to created tiles (if possible) and to the optional shape file(s)  
 .IP "\fB\fB-tileIndex\fP \fItileIndexName\fP:\fP" 1c
 The name of shape file containing the result tile(s) index  
 .IP "\fB\fB-tileIndexField\fP \fItileIndexFieldName\fP:\fP" 1c
 The name of the attribute containing the tile name  
 .IP "\fB\fB-csv\fP \fIcsvFileName\fP:\fP" 1c
-The name of the csv file containing the tile(s) georeferencing information. The file contains 5 columns: tilename,minx,maxx,miny,maxy  
+The name of the csv file containing the tile(s) georeferencing information\&. The file contains 5 columns: tilename,minx,maxx,miny,maxy  
 .IP "\fB\fB-csvDelim\fP \fIcolumn delimiter\fP:\fP" 1c
 The column delimter used in the csv file, default value is a semicolon ';'  
 .IP "\fB\fB-useDirForEachRow\fP:\fP" 1c
-Normally the tiles of the base image are stored as described in \fB-targetDir\fP. For large images, some file systems have performance problems if the number of files in a directory is to big, causing gdal_retile not to finish in reasonable time. Using this parameter creates a different output structure. The tiles of the base image are stored in a subdirectory called 0, the pyramids in subdirectories numbered 1,2,.... Within each of these directories another level of subdirectories is cr [...]
+Normally the tiles of the base image are stored as described in \fB-targetDir\fP\&. For large images, some file systems have performance problems if the number of files in a directory is to big, causing gdal_retile not to finish in reasonable time\&. Using this parameter creates a different output structure\&. The tiles of the base image are stored in a subdirectory called 0, the pyramids in subdirectories numbered 1,2,\&.\&.\&.\&. Within each of these directories another level of subdir [...]
 .PP
 .PP
-NOTE: gdal_retile.py is a Python script, and will only work if GDAL was built with Python support.
+NOTE: gdal_retile\&.py is a Python script, and will only work if GDAL was built with Python support\&.
 .SH "AUTHORS"
 .PP
 Christian Mueller <christian.mueller at nvoe.at> 
diff --git a/man/man1/gdal_sieve.1 b/man/man1/gdal_sieve.1
index d6efef2..36bd9c6 100644
--- a/man/man1/gdal_sieve.1
+++ b/man/man1/gdal_sieve.1
@@ -1,12 +1,9 @@
-.TH "gdal_sieve" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "gdal_sieve" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-gdal_sieve \- .TH "gdal_sieve" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-gdal_sieve \- removes small raster polygons
+gdal_sieve \- gdal_sieve\&.py 
+removes small raster polygons
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -18,39 +15,39 @@ gdal_sieve.py [-q] [-st threshold] [-4] [-8] [-o name=value]
 .PP
 .SH "DESCRIPTION"
 .PP
-The gdal_sieve.py script removes raster polygons smaller than a provided threshold size (in pixels) and replaces replaces them with the pixel value of the largest neighbour polygon. The result can be written back to the existing raster band, or copied into a new file.
+The gdal_sieve\&.py script removes raster polygons smaller than a provided threshold size (in pixels) and replaces replaces them with the pixel value of the largest neighbour polygon\&. The result can be written back to the existing raster band, or copied into a new file\&.
 .PP
-Additional details on the algorithm are available in the GDALSieveFilter() docs.
+Additional details on the algorithm are available in the GDALSieveFilter() docs\&.
 .PP
 .IP "\fB\fB-q\fP:\fP" 1c
-The script runs in quiet mode. The progress monitor is suppressed and routine messages are not displayed.
+The script runs in quiet mode\&. The progress monitor is suppressed and routine messages are not displayed\&.
 .PP
 .IP "\fB\fB-st\fP \fIthreshold\fP:\fP" 1c
-Set the size threshold in pixels. Only raster polygons smaller than this size will be removed.
+Set the size threshold in pixels\&. Only raster polygons smaller than this size will be removed\&.
 .PP
 .IP "\fB\fB-o\fP \fIname=value\fP:\fP" 1c
-Specify a special argument to the algorithm. Currently none are supported. 
+Specify a special argument to the algorithm\&. Currently none are supported\&. 
 .PP
 .IP "\fB\fB-4\fP:\fP" 1c
-Four connectedness should be used when determining polygons. That is diagonal pixels are not considered directly connected. This is the default. 
+Four connectedness should be used when determining polygons\&. That is diagonal pixels are not considered directly connected\&. This is the default\&. 
 .PP
 .IP "\fB\fB-8\fP:\fP" 1c
-Eight connectedness should be used when determining polygons. That is diagonal pixels are considered directly connected. 
+Eight connectedness should be used when determining polygons\&. That is diagonal pixels are considered directly connected\&. 
 .PP
 .IP "\fB\fIsrcfile\fP\fP" 1c
-The source raster file used to identify target pixels. Only the first band is used.
+The source raster file used to identify target pixels\&. Only the first band is used\&.
 .PP
 .IP "\fB\fB-nomask\fP:\fP" 1c
-Do not use the default validity mask for the input band (such as nodata, or alpha masks). 
+Do not use the default validity mask for the input band (such as nodata, or alpha masks)\&. 
 .PP
 .IP "\fB\fB-mask\fP \fIfilename\fP:\fP" 1c
-Use the first band of the specified file as a validity mask (zero is invalid, non-zero is valid). 
+Use the first band of the specified file as a validity mask (zero is invalid, non-zero is valid)\&. 
 .PP
 .IP "\fB\fIdstfile\fP\fP" 1c
-The new file to create with the filtered result. If not provided, the source band is updated in place.
+The new file to create with the filtered result\&. If not provided, the source band is updated in place\&.
 .PP
 .IP "\fB\fB-of\fP \fIformat\fP:\fP" 1c
-Select the output format. The default is GeoTIFF (GTiff). Use the short format name. 
+Select the output format\&. The default is GeoTIFF (GTiff)\&. Use the short format name\&. 
 .PP
 .PP
 .SH "AUTHORS"
diff --git a/man/man1/gdal_translate.1 b/man/man1/gdal_translate.1
index facdc9c..ec68c49 100644
--- a/man/man1/gdal_translate.1
+++ b/man/man1/gdal_translate.1
@@ -1,12 +1,9 @@
-.TH "gdal_translate" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "gdal_translate" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-gdal_translate \- .TH "gdal_translate" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-gdal_translate \- converts raster data between different formats
+gdal_translate \- gdal_translate 
+converts raster data between different formats
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -31,68 +28,68 @@ gdal_translate [--help-general]
 .PP
 .SH "DESCRIPTION"
 .PP
-The gdal_translate utility can be used to convert raster data between different formats, potentially performing some operations like subsettings, resampling, and rescaling pixels in the process.
+The gdal_translate utility can be used to convert raster data between different formats, potentially performing some operations like subsettings, resampling, and rescaling pixels in the process\&.
 .PP
 .IP "\fB\fB-ot\fP: \fItype\fP\fP" 1c
-For the output bands to be of the indicated data type. 
+For the output bands to be of the indicated data type\&. 
 .IP "\fB\fB-strict\fP:\fP" 1c
-Don't be forgiving of mismatches and lost data when translating to the output format. 
+Don't be forgiving of mismatches and lost data when translating to the output format\&. 
 .IP "\fB\fB-of\fP \fIformat\fP:\fP" 1c
-Select the output format. The default is GeoTIFF (GTiff). Use the short format name. 
+Select the output format\&. The default is GeoTIFF (GTiff)\&. Use the short format name\&. 
 .IP "\fB\fB-b\fP \fIband\fP:\fP" 1c
-Select an input band \fIband\fP for output. Bands are numbered from 1. Multiple \fB-b\fP switches may be used to select a set of input bands to write to the output file, or to reorder bands. Starting with GDAL 1.8.0, \fIband\fP can also be set to 'mask,1' (or just 'mask') to mean the mask band of the first band of the input dataset. 
+Select an input band \fIband\fP for output\&. Bands are numbered from 1\&. Multiple \fB-b\fP switches may be used to select a set of input bands to write to the output file, or to reorder bands\&. Starting with GDAL 1\&.8\&.0, \fIband\fP can also be set to 'mask,1' (or just 'mask') to mean the mask band of the first band of the input dataset\&. 
 .IP "\fB\fB-mask\fP \fIband\fP:\fP" 1c
-(GDAL >= 1.8.0) Select an input band \fIband\fP to create output dataset mask band. Bands are numbered from 1. \fIband\fP can be set to 'none' to avoid copying the global mask of the input dataset if it exists. Otherwise it is copied by default ('auto'), unless the mask is an alpha channel, or if it is explicitly used to be a regular band of the output dataset ('-b mask'). \fIband\fP can also be set to 'mask,1' (or just 'mask') to mean the mask band of the 1st band of the input dataset. 
+(GDAL >= 1\&.8\&.0) Select an input band \fIband\fP to create output dataset mask band\&. Bands are numbered from 1\&. \fIband\fP can be set to 'none' to avoid copying the global mask of the input dataset if it exists\&. Otherwise it is copied by default ('auto'), unless the mask is an alpha channel, or if it is explicitly used to be a regular band of the output dataset ('-b mask')\&. \fIband\fP can also be set to 'mask,1' (or just 'mask') to mean the mask band of the 1st band of the inp [...]
 .IP "\fB\fB-expand\fP \fIgray|rgb|rgba\fP:\fP" 1c
-(From GDAL 1.6.0) To expose a dataset with 1 band with a color table as a dataset with 3 (RGB) or 4 (RGBA) bands. Useful for output drivers such as JPEG, JPEG2000, MrSID, ECW that don't support color indexed datasets. The 'gray' value (from GDAL 1.7.0) enables to expand a dataset with a color table that only contains gray levels to a gray indexed dataset. 
+(From GDAL 1\&.6\&.0) To expose a dataset with 1 band with a color table as a dataset with 3 (RGB) or 4 (RGBA) bands\&. Useful for output drivers such as JPEG, JPEG2000, MrSID, ECW that don't support color indexed datasets\&. The 'gray' value (from GDAL 1\&.7\&.0) enables to expand a dataset with a color table that only contains gray levels to a gray indexed dataset\&. 
 .IP "\fB\fB-outsize\fP \fIxsize[%]|0 ysize[%]|0\fP:\fP" 1c
-Set the size of the output file. Outsize is in pixels and lines unless '%' is attached in which case it is as a fraction of the input image size. Starting with GDAL 2.0, if one of the 2 values is set to 0, its value will be determined from the other one, while maintaining the aspect ratio of the source dataset. 
+Set the size of the output file\&. Outsize is in pixels and lines unless '%' is attached in which case it is as a fraction of the input image size\&. Starting with GDAL 2\&.0, if one of the 2 values is set to 0, its value will be determined from the other one, while maintaining the aspect ratio of the source dataset\&. 
 .IP "\fB\fB-tr\fP xres yres :\fP" 1c
-(starting with GDAL 2.0) set target resolution. The values must be expressed in georeferenced units. Both must be positive values. This is exclusive with -outsize and -a_ullr.  
+(starting with GDAL 2\&.0) set target resolution\&. The values must be expressed in georeferenced units\&. Both must be positive values\&. This is exclusive with -outsize and -a_ullr\&.  
 .IP "\fB\fB-r\fP \fI{nearest (default),bilinear,cubic,cubicspline,lanczos,average,mode}\fP:\fP" 1c
-(GDAL >= 2.0) Select a resampling algorithm. 
+(GDAL >= 2\&.0) Select a resampling algorithm\&. 
 .IP "\fB\fB-scale\fP \fI[src_min src_max [dst_min dst_max]]\fP:\fP" 1c
-Rescale the input pixels values from the range \fIsrc_min\fP to \fIsrc_max\fP to the range \fIdst_min\fP to \fIdst_max\fP. If omitted the output range is 0 to 255. If omitted the input range is automatically computed from the source data. Before GDAL 1.11, it can be specified only once, and in that case, it applies to all bands of the output dataset. Starting with GDAL 1.11, -scale can be repeated several times (if specified only once, it also applies to all bands of the output dataset), [...]
+Rescale the input pixels values from the range \fIsrc_min\fP to \fIsrc_max\fP to the range \fIdst_min\fP to \fIdst_max\fP\&. If omitted the output range is 0 to 255\&. If omitted the input range is automatically computed from the source data\&. Before GDAL 1\&.11, it can be specified only once, and in that case, it applies to all bands of the output dataset\&. Starting with GDAL 1\&.11, -scale can be repeated several times (if specified only once, it also applies to all bands of the outp [...]
 .IP "\fB\fB-exponent\fP \fI exp_val\fP:\fP" 1c
-(From GDAL 1.11) To apply non-linear scaling with a power function. exp_val is the exponent of the power function (must be postive). This option must be used with the -scale option. If specified only once, -exponent applies to all bands of the output image. It can be repeated several times so as to specify per band parameters. It is also possible to use the '-exponent_bn' syntax where bn is a band number (e.g. '-exponent_2' for the 2nd band of the output dataset) to specify the parameter [...]
+(From GDAL 1\&.11) To apply non-linear scaling with a power function\&. exp_val is the exponent of the power function (must be postive)\&. This option must be used with the -scale option\&. If specified only once, -exponent applies to all bands of the output image\&. It can be repeated several times so as to specify per band parameters\&. It is also possible to use the '-exponent_bn' syntax where bn is a band number (e\&.g\&. '-exponent_2' for the 2nd band of the output dataset) to speci [...]
 .IP "\fB\fB-unscale\fP:\fP" 1c
-Apply the scale/offset metadata for the bands to convert scaled values to unscaled values. It is also often necessary to reset the output datatype with the \fB-ot\fP switch. 
+Apply the scale/offset metadata for the bands to convert scaled values to unscaled values\&. It is also often necessary to reset the output datatype with the \fB-ot\fP switch\&. 
 .IP "\fB\fB-srcwin\fP \fIxoff yoff xsize ysize\fP:\fP" 1c
-Selects a subwindow from the source image for copying based on pixel/line location.  
+Selects a subwindow from the source image for copying based on pixel/line location\&.  
 .IP "\fB\fB-projwin\fP \fIulx uly lrx lry\fP:\fP" 1c
-Selects a subwindow from the source image for copying (like \fB-srcwin\fP) but with the corners given in georeferenced coordinates (by default expressed in the SRS of the dataset. Can be changed with -projwin_srs).  
+Selects a subwindow from the source image for copying (like \fB-srcwin\fP) but with the corners given in georeferenced coordinates (by default expressed in the SRS of the dataset\&. Can be changed with -projwin_srs)\&.  
 .IP "\fB\fB-projwin_srs\fP \fIsrs_def\fP:\fP" 1c
-(GDAL >= 2.0) Specifies the SRS in which to interpret the coordinates given with -projwin. The \fIsrs_def\fP may be any of the usual GDAL/OGR forms, complete WKT, PROJ.4, EPSG:n or a file containing the WKT. Note that this does not cause reprojection of the dataset to the specified SRS.  
+(GDAL >= 2\&.0) Specifies the SRS in which to interpret the coordinates given with -projwin\&. The \fIsrs_def\fP may be any of the usual GDAL/OGR forms, complete WKT, PROJ\&.4, EPSG:n or a file containing the WKT\&. Note that this does not cause reprojection of the dataset to the specified SRS\&.  
 .IP "\fB\fB-epo\fP: (Error when Partially Outside)\fP" 1c
-(GDAL >= 1.10) If this option is set, \fB-srcwin\fP or \fB-projwin\fP values that falls partially outside the source raster extent will be considered as an error. The default behaviour starting with GDAL 1.10 is to accept such requests, when they were considered as an error before. 
+(GDAL >= 1\&.10) If this option is set, \fB-srcwin\fP or \fB-projwin\fP values that falls partially outside the source raster extent will be considered as an error\&. The default behaviour starting with GDAL 1\&.10 is to accept such requests, when they were considered as an error before\&. 
 .IP "\fB\fB-eco\fP: (Error when Completely Outside)\fP" 1c
-(GDAL >= 1.10) Same as \fB-epo\fP, except that the criterion for erroring out is when the request falls completely outside the source raster extent. 
+(GDAL >= 1\&.10) Same as \fB-epo\fP, except that the criterion for erroring out is when the request falls completely outside the source raster extent\&. 
 .IP "\fB\fB-a_srs\fP \fIsrs_def\fP:\fP" 1c
-Override the projection for the output file. The \fIsrs_def\fP may be any of the usual GDAL/OGR forms, complete WKT, PROJ.4, EPSG:n or a file containing the WKT.  
+Override the projection for the output file\&. The \fIsrs_def\fP may be any of the usual GDAL/OGR forms, complete WKT, PROJ\&.4, EPSG:n or a file containing the WKT\&.  
 .IP "\fB\fB-a_ullr\fP \fIulx uly lrx lry\fP:\fP" 1c
-Assign/override the georeferenced bounds of the output file. This assigns georeferenced bounds to the output file, ignoring what would have been derived from the source file. So this does not cause reprojection to the specified SRS.  
+Assign/override the georeferenced bounds of the output file\&. This assigns georeferenced bounds to the output file, ignoring what would have been derived from the source file\&. So this does not cause reprojection to the specified SRS\&.  
 .IP "\fB\fB-a_nodata\fP \fIvalue\fP:\fP" 1c
-Assign a specified nodata value to output bands. Starting with GDAL 1.8.0, can be set to \fInone\fP to avoid setting a nodata value to the output file if one exists for the source file. Note that, if the input dataset has a nodata value, this does not cause pixel values that are equal to that nodata value to be changed to the value specified with this option. 
+Assign a specified nodata value to output bands\&. Starting with GDAL 1\&.8\&.0, can be set to \fInone\fP to avoid setting a nodata value to the output file if one exists for the source file\&. Note that, if the input dataset has a nodata value, this does not cause pixel values that are equal to that nodata value to be changed to the value specified with this option\&. 
 .IP "\fB\fB-mo\fP \fI'META-TAG=VALUE'\fP:\fP" 1c
-Passes a metadata key and value to set on the output dataset if possible. 
+Passes a metadata key and value to set on the output dataset if possible\&. 
 .IP "\fB\fB-co\fP \fI'NAME=VALUE'\fP:\fP" 1c
-Passes a creation option to the output format driver. Multiple \fB-co\fP options may be listed. See format specific documentation for legal creation options for each format. 
+Passes a creation option to the output format driver\&. Multiple \fB-co\fP options may be listed\&. See format specific documentation for legal creation options for each format\&. 
 .IP "\fB\fB-gcp\fP \fIpixel line easting northing elevation\fP:\fP" 1c
-Add the indicated ground control point to the output dataset. This option may be provided multiple times to provide a set of GCPs.  
+Add the indicated ground control point to the output dataset\&. This option may be provided multiple times to provide a set of GCPs\&.  
 .IP "\fB\fB-q\fP:\fP" 1c
-Suppress progress monitor and other non-error output. 
+Suppress progress monitor and other non-error output\&. 
 .IP "\fB\fB-sds\fP:\fP" 1c
-Copy all subdatasets of this file to individual output files. Use with formats like HDF or OGDI that have subdatasets. The output file naming scheme has changed in GDAL 1.11 (e.g. ofile_1.tif, ofile_2.tif). 
+Copy all subdatasets of this file to individual output files\&. Use with formats like HDF or OGDI that have subdatasets\&. The output file naming scheme has changed in GDAL 1\&.11 (e\&.g\&. ofile_1\&.tif, ofile_2\&.tif)\&. 
 .IP "\fB\fB-stats\fP:\fP" 1c
-(GDAL >= 1.8.0) Force (re)computation of statistics. 
+(GDAL >= 1\&.8\&.0) Force (re)computation of statistics\&. 
 .IP "\fB\fB-norat\fP\fP" 1c
-(GDAL >= 1.11) Do not copy source RAT into destination dataset. 
+(GDAL >= 1\&.11) Do not copy source RAT into destination dataset\&. 
 .IP "\fB\fB-oo\fP \fINAME=VALUE\fP:\fP" 1c
-(starting with GDAL 2.0) Dataset open option (format specific) 
+(starting with GDAL 2\&.0) Dataset open option (format specific) 
 .IP "\fB\fIsrc_dataset\fP:\fP" 1c
-The source dataset name. It can be either file name, URL of data source or subdataset name for multi-dataset files. 
+The source dataset name\&. It can be either file name, URL of data source or subdataset name for multi-dataset files\&. 
 .IP "\fB\fIdst_dataset\fP:\fP" 1c
-The destination file name. 
+The destination file name\&. 
 .PP
 .SH "EXAMPLE"
 .PP
@@ -103,7 +100,7 @@ gdal_translate -of GTiff -co "TILED=YES" utm.tif utm_tiled.tif
 .fi
 .PP
 .PP
-Starting with GDAL 1.8.0, to create a JPEG-compressed TIFF with internal mask from a RGBA dataset : 
+Starting with GDAL 1\&.8\&.0, to create a JPEG-compressed TIFF with internal mask from a RGBA dataset : 
 .PP
 .nf
 
@@ -112,7 +109,7 @@ gdal_translate rgba.tif withmask.tif -b 1 -b 2 -b 3 -mask 4 -co COMPRESS=JPEG -c
 .fi
 .PP
 .PP
-Starting with GDAL 1.8.0, to create a RGBA dataset from a RGB dataset with a mask : 
+Starting with GDAL 1\&.8\&.0, to create a RGBA dataset from a RGB dataset with a mask : 
 .PP
 .nf
 
diff --git a/man/man1/gdal_utilities.1 b/man/man1/gdal_utilities.1
index f9af3da..3ea51f2 100644
--- a/man/man1/gdal_utilities.1
+++ b/man/man1/gdal_utilities.1
@@ -1,127 +1,124 @@
-.TH "gdal_utilities" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "gdal_utilities" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-gdal_utilities \- .TH "gdal_utilities" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-gdal_utilities \- A collection of GDAL related programs.
+gdal_utilities \- GDAL Utilities 
+A collection of GDAL related programs\&.
 .PP
-The following utility programs are distributed with GDAL.
+The following utility programs are distributed with GDAL\&.
 .PP
 .PD 0
 .IP "\(bu" 2
-\fBgdalinfo\fP - report information about a file. 
+\fBgdalinfo\fP - report information about a file\&. 
 .IP "\(bu" 2
-\fBgdal_translate\fP - Copy a raster file, with control of output format. 
+\fBgdal_translate\fP - Copy a raster file, with control of output format\&. 
 .IP "\(bu" 2
-\fBgdaladdo\fP - Add overviews to a file. 
+\fBgdaladdo\fP - Add overviews to a file\&. 
 .IP "\(bu" 2
-\fBgdalwarp\fP - Warp an image into a new coordinate system. 
+\fBgdalwarp\fP - Warp an image into a new coordinate system\&. 
 .IP "\(bu" 2
-\fBgdaltindex\fP - Build a MapServer raster tileindex. 
+\fBgdaltindex\fP - Build a MapServer raster tileindex\&. 
 .IP "\(bu" 2
-\fBgdalbuildvrt\fP - Build a VRT from a list of datasets. 
+\fBgdalbuildvrt\fP - Build a VRT from a list of datasets\&. 
 .IP "\(bu" 2
-\fBgdal_contour\fP - Contours from DEM. 
+\fBgdal_contour\fP - Contours from DEM\&. 
 .IP "\(bu" 2
-\fBgdaldem\fP - Tools to analyze and visualize DEMs. 
+\fBgdaldem\fP - Tools to analyze and visualize DEMs\&. 
 .IP "\(bu" 2
-\fBrgb2pct.py\fP - Convert a 24bit RGB image to 8bit paletted. 
+\fBrgb2pct\&.py\fP - Convert a 24bit RGB image to 8bit paletted\&. 
 .IP "\(bu" 2
-\fBpct2rgb.py\fP - Convert an 8bit paletted image to 24bit RGB. 
+\fBpct2rgb\&.py\fP - Convert an 8bit paletted image to 24bit RGB\&. 
 .IP "\(bu" 2
-\fBgdal_merge.py\fP - Build a quick mosaic from a set of images. 
+\fBgdal_merge\&.py\fP - Build a quick mosaic from a set of images\&. 
 .IP "\(bu" 2
-\fBgdal2tiles.py\fP - Create a TMS tile structure, KML and simple web viewer. 
+\fBgdal2tiles\&.py\fP - Create a TMS tile structure, KML and simple web viewer\&. 
 .IP "\(bu" 2
-\fBgdal_rasterize\fP - Rasterize vectors into raster file. 
+\fBgdal_rasterize\fP - Rasterize vectors into raster file\&. 
 .IP "\(bu" 2
-\fBgdaltransform\fP - Transform coordinates. 
+\fBgdaltransform\fP - Transform coordinates\&. 
 .IP "\(bu" 2
-\fBnearblack\fP - Convert nearly black/white borders to exact value. 
+\fBnearblack\fP - Convert nearly black/white borders to exact value\&. 
 .IP "\(bu" 2
-\fBgdal_retile.py\fP - Retiles a set of tiles and/or build tiled pyramid levels. 
+\fBgdal_retile\&.py\fP - Retiles a set of tiles and/or build tiled pyramid levels\&. 
 .IP "\(bu" 2
-\fBgdal_grid\fP - Create raster from the scattered data. 
+\fBgdal_grid\fP - Create raster from the scattered data\&. 
 .IP "\(bu" 2
-\fBgdal_proximity.py\fP - Compute a raster proximity map. 
+\fBgdal_proximity\&.py\fP - Compute a raster proximity map\&. 
 .IP "\(bu" 2
-\fBgdal_polygonize.py\fP - Generate polygons from raster. 
+\fBgdal_polygonize\&.py\fP - Generate polygons from raster\&. 
 .IP "\(bu" 2
-\fBgdal_sieve.py\fP - Raster Sieve filter. 
+\fBgdal_sieve\&.py\fP - Raster Sieve filter\&. 
 .IP "\(bu" 2
-\fBgdal_fillnodata.py\fP - Interpolate in nodata regions. 
+\fBgdal_fillnodata\&.py\fP - Interpolate in nodata regions\&. 
 .IP "\(bu" 2
-\fBgdallocationinfo\fP - Query raster at a location. 
+\fBgdallocationinfo\fP - Query raster at a location\&. 
 .IP "\(bu" 2
-\fBgdalsrsinfo\fP - Report a given SRS in different formats. (GDAL >= 1.9.0) 
+\fBgdalsrsinfo\fP - Report a given SRS in different formats\&. (GDAL >= 1\&.9\&.0) 
 .IP "\(bu" 2
-\fBgdalmove.py\fP - Transform the coordinate system of a file (GDAL >= 1.10) 
+\fBgdalmove\&.py\fP - Transform the coordinate system of a file (GDAL >= 1\&.10) 
 .IP "\(bu" 2
-\fBgdal_edit.py\fP - Edit in place various information of an existing GDAL dataset (projection, geotransform, nodata, metadata) 
+\fBgdal_edit\&.py\fP - Edit in place various information of an existing GDAL dataset (projection, geotransform, nodata, metadata) 
 .IP "\(bu" 2
-\fBgdal_calc.py\fP - Command line raster calculator with numpy syntax 
+\fBgdal_calc\&.py\fP - Command line raster calculator with numpy syntax 
 .IP "\(bu" 2
-\fBgdal-config\fP - Get options required to build software using GDAL. 
+\fBgdal-config\fP - Get options required to build software using GDAL\&. 
 .IP "\(bu" 2
-\fBgdalmanage\fP - Identify, copy, rename and delete raster. 
+\fBgdalmanage\fP - Identify, copy, rename and delete raster\&. 
 .IP "\(bu" 2
-\fBgdalcompare.py\fP - Compare two images and report on differences. 
+\fBgdalcompare\&.py\fP - Compare two images and report on differences\&. 
 .PP
 .SH "Creating New Files"
 .PP
-Access an existing file to read it is generally quite simple. Just indicate the name of the file or dataset on the commandline. However, creating a file is more complicated. It may be necessary to indicate the the format to create, various creation options affecting how it will be created and perhaps a coordinate system to be assigned. Many of these options are handled similarly by different GDAL utilities, and are introduced here. 
+Access an existing file to read it is generally quite simple\&. Just indicate the name of the file or dataset on the commandline\&. However, creating a file is more complicated\&. It may be necessary to indicate the the format to create, various creation options affecting how it will be created and perhaps a coordinate system to be assigned\&. Many of these options are handled similarly by different GDAL utilities, and are introduced here\&. 
 .PP
 .IP "\fB\fB-of\fP \fIformat\fP\fP" 1c
-Select the format to create the new file as. The formats are assigned short names such as GTiff (for GeoTIFF) or HFA (for Erdas Imagine). The list of all format codes can be listed with the \fB--formats\fP switch. Only formats list as '(rw)' (read-write) can be written.
+Select the format to create the new file as\&. The formats are assigned short names such as GTiff (for GeoTIFF) or HFA (for Erdas Imagine)\&. The list of all format codes can be listed with the \fB--formats\fP switch\&. Only formats list as '(rw)' (read-write) can be written\&.
 .PP
-Many utilities default to creating GeoTIFF files if a format is not specified. File extensions are not used to guess output format, nor are extensions generally added by GDAL if not indicated in the filename by the user. 
+Many utilities default to creating GeoTIFF files if a format is not specified\&. File extensions are not used to guess output format, nor are extensions generally added by GDAL if not indicated in the filename by the user\&. 
 .PP
 .IP "\fB\fB-co\fP \fINAME=VALUE\fP\fP" 1c
-Many formats have one or more optional creation options that can be used to control particulars about the file created. For instance, the GeoTIFF driver supports creation options to control compression, and whether the file should be tiled.
+Many formats have one or more optional creation options that can be used to control particulars about the file created\&. For instance, the GeoTIFF driver supports creation options to control compression, and whether the file should be tiled\&.
 .PP
-The creation options available vary by format driver, and some simple formats have no creation options at all. A list of options supported for a format can be listed with the '--format <format>' commandline option but the web page for the format is the definitive source of information on driver creation options.
+The creation options available vary by format driver, and some simple formats have no creation options at all\&. A list of options supported for a format can be listed with the '--format <format>' commandline option but the web page for the format is the definitive source of information on driver creation options\&.
 .PP
 .PP
 .IP "\fB\fB-a_srs\fP \fISRS\fP\fP" 1c
-Several utilities, (gdal_translate and gdalwarp) include the ability to specify coordinate systems with commandline options like \fB-a_srs\fP (assign SRS to output), \fB-s_srs\fP (source SRS) and \fB-t_srs\fP (target SRS).
+Several utilities, (gdal_translate and gdalwarp) include the ability to specify coordinate systems with commandline options like \fB-a_srs\fP (assign SRS to output), \fB-s_srs\fP (source SRS) and \fB-t_srs\fP (target SRS)\&.
 .PP
-These utilities allow the coordinate system (SRS = spatial reference system) to be assigned in a variety of formats.
+These utilities allow the coordinate system (SRS = spatial reference system) to be assigned in a variety of formats\&.
 .PP
 .PP
 .PD 0
 .IP "\(bu" 2
-\fBNAD27\fP/\fBNAD83\fP/\fBWGS84\fP/\fBWGS72\fP: These common geographic (lat/long) coordinate systems can be used directly by these names.
+\fBNAD27\fP/\fBNAD83\fP/\fBWGS84\fP/\fBWGS72\fP: These common geographic (lat/long) coordinate systems can be used directly by these names\&.
 .PP
 
 .IP "\(bu" 2
-\fBEPSG:\fP\fIn\fP: Coordinate systems (projected or geographic) can be selected based on their EPSG codes, for instance EPSG:27700 is the British National Grid. A list of EPSG coordinate systems can be found in the GDAL data files gcs.csv and pcs.csv.
+\fBEPSG:\fP\fIn\fP: Coordinate systems (projected or geographic) can be selected based on their EPSG codes, for instance EPSG:27700 is the British National Grid\&. A list of EPSG coordinate systems can be found in the GDAL data files gcs\&.csv and pcs\&.csv\&.
 .PP
 
 .IP "\(bu" 2
-\fIPROJ.4 Definitions\fP: A PROJ.4 definition string can be used as a coordinate system. For instance '+proj=utm +zone=11 +datum=WGS84'. Take care to keep the proj.4 string together as a single argument to the command (usually by double quoting). 
+\fIPROJ\&.4 Definitions\fP: A PROJ\&.4 definition string can be used as a coordinate system\&. For instance '+proj=utm +zone=11 +datum=WGS84'\&. Take care to keep the proj\&.4 string together as a single argument to the command (usually by double quoting)\&. 
 .PP
 .PP
 
 .IP "\(bu" 2
-\fIOpenGIS Well Known Text\fP: The Open GIS Consortium has defined a textual format for describing coordinate systems as part of the Simple Features specifications. This format is the internal working format for coordinate systems used in GDAL. The name of a file containing a WKT coordinate system definition may be used a coordinate system argument, or the entire coordinate system itself may be used as a commandline option (though escaping all the quotes in WKT is quite challenging). 
+\fIOpenGIS Well Known Text\fP: The Open GIS Consortium has defined a textual format for describing coordinate systems as part of the Simple Features specifications\&. This format is the internal working format for coordinate systems used in GDAL\&. The name of a file containing a WKT coordinate system definition may be used a coordinate system argument, or the entire coordinate system itself may be used as a commandline option (though escaping all the quotes in WKT is quite challenging)\&. 
 .PP
 .PP
 
 .IP "\(bu" 2
-\fIESRI Well Known Text\fP: ESRI uses a slight variation on OGC WKT format in their ArcGIS product (ArcGIS .prj files), and these may be used in a similar manner to WKT files, but the filename should be prefixed with \fBESRI::\fP. For example \fB'ESRI::NAD 1927 StatePlane Wyoming West FIPS 4904.prj'\fP. 
+\fIESRI Well Known Text\fP: ESRI uses a slight variation on OGC WKT format in their ArcGIS product (ArcGIS \&.prj files), and these may be used in a similar manner to WKT files, but the filename should be prefixed with \fBESRI::\fP\&. For example \fB'ESRI::NAD 1927 StatePlane Wyoming West FIPS 4904\&.prj'\fP\&. 
 .PP
 .PP
 
 .IP "\(bu" 2
-\fISpatial References from URLs\fP: For example http://spatialreference.org/ref/user/north-pacific-albers-conic-equal-area/.
+\fISpatial References from URLs\fP: For example http://spatialreference.org/ref/user/north-pacific-albers-conic-equal-area/\&.
 .PP
 .PP
 
 .IP "\(bu" 2
-\fIfilename\fP: The name of a file containing WKT, PROJ.4 strings, or XML/GML coordinate system definitions can be provided. 
+\fIfilename\fP: The name of a file containing WKT, PROJ\&.4 strings, or XML/GML coordinate system definitions can be provided\&. 
 .PP
 .PP
 
@@ -129,28 +126,28 @@ These utilities allow the coordinate system (SRS = spatial reference system) to
 .PP
 .SH "General Command Line Switches"
 .PP
-All GDAL command line utility programs support the following 'general' options.
+All GDAL command line utility programs support the following 'general' options\&.
 .PP
 .IP "\fB\fB--version\fP\fP" 1c
-Report the version of GDAL and exit.
+Report the version of GDAL and exit\&.
 .PP
 .IP "\fB\fB--formats\fP\fP" 1c
-List all raster formats supported by this GDAL build (read-only and read-write) and exit. The format support is indicated as follows: 'ro' is read-only driver; 'rw' is read or write (ie. supports CreateCopy); 'rw+' is read, write and update (ie. supports Create). A 'v' is appended for formats supporting virtual IO (/vsimem, /vsigzip, /vsizip, etc). A 's' is appended for formats supporting subdatasets. Note: The valid formats for the output of gdalwarp are formats that support the Create( [...]
+List all raster formats supported by this GDAL build (read-only and read-write) and exit\&. The format support is indicated as follows: 'ro' is read-only driver; 'rw' is read or write (ie\&. supports CreateCopy); 'rw+' is read, write and update (ie\&. supports Create)\&. A 'v' is appended for formats supporting virtual IO (/vsimem, /vsigzip, /vsizip, etc)\&. A 's' is appended for formats supporting subdatasets\&. Note: The valid formats for the output of gdalwarp are formats that support [...]
 .PP
 .IP "\fB\fB--format\fP \fIformat\fP\fP" 1c
-List detailed information about a single format driver. The \fIformat\fP should be the short name reported in the \fB--formats\fP list, such as GTiff.
+List detailed information about a single format driver\&. The \fIformat\fP should be the short name reported in the \fB--formats\fP list, such as GTiff\&.
 .PP
 .IP "\fB\fB--optfile\fP \fIfile\fP\fP" 1c
-Read the named file and substitute the contents into the commandline options list. Lines beginning with # will be ignored. Multi-word arguments may be kept together with double quotes. 
+Read the named file and substitute the contents into the commandline options list\&. Lines beginning with # will be ignored\&. Multi-word arguments may be kept together with double quotes\&. 
 .PP
 .IP "\fB\fB--config\fP \fIkey value\fP\fP" 1c
-Sets the named \fCconfiguration keyword\fP to the given value, as opposed to setting them as environment variables. Some common configuration keywords are GDAL_CACHEMAX (memory used internally for caching in megabytes) and GDAL_DATA (path of the GDAL 'data' directory). Individual drivers may be influenced by other configuration options. 
+Sets the named \fCconfiguration keyword\fP to the given value, as opposed to setting them as environment variables\&. Some common configuration keywords are GDAL_CACHEMAX (memory used internally for caching in megabytes) and GDAL_DATA (path of the GDAL 'data' directory)\&. Individual drivers may be influenced by other configuration options\&. 
 .PP
 .IP "\fB\fB--debug\fP \fIvalue\fP\fP" 1c
-Control what debugging messages are emitted. A value of \fION\fP will enable all debug messages. A value of \fIOFF\fP will disable all debug messages. Another value will select only debug messages containing that string in the debug prefix code. 
+Control what debugging messages are emitted\&. A value of \fION\fP will enable all debug messages\&. A value of \fIOFF\fP will disable all debug messages\&. Another value will select only debug messages containing that string in the debug prefix code\&. 
 .PP
 .IP "\fB\fB--help-general\fP\fP" 1c
-Gives a brief usage message for the generic GDAL commandline options and exit. 
+Gives a brief usage message for the generic GDAL commandline options and exit\&. 
 .PP
 .PP
 .PP
diff --git a/man/man1/gdaladdo.1 b/man/man1/gdaladdo.1
index 0fe2a5e..d66c807 100644
--- a/man/man1/gdaladdo.1
+++ b/man/man1/gdaladdo.1
@@ -1,12 +1,9 @@
-.TH "gdaladdo" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "gdaladdo" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-gdaladdo \- .TH "gdaladdo" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-gdaladdo \- builds or rebuilds overview images
+gdaladdo \- gdaladdo 
+builds or rebuilds overview images
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -19,42 +16,42 @@ gdaladdo [-r {nearest,average,gauss,cubic,cubicspline,lanczos,average_mp,average
 .PP
 .SH "DESCRIPTION"
 .PP
-The gdaladdo utility can be used to build or rebuild overview images for most supported file formats with one of several downsampling algorithms.
+The gdaladdo utility can be used to build or rebuild overview images for most supported file formats with one of several downsampling algorithms\&.
 .PP
 .IP "\fB\fB-r\fP \fI{nearest (default),average,gauss,cubic,cubicspline,lanczos,average_mp,average_magphase,mode}\fP:\fP" 1c
-Select a resampling algorithm. 
+Select a resampling algorithm\&. 
 .IP "\fB\fB-b\fP \fIband\fP:\fP" 1c
-(available from GDAL 1.10) Select an input band \fIband\fP for overview generation. Band numbering starts from 1. Multiple \fB-b\fP switches may be used to select a set of input bands to generate overviews. 
+(available from GDAL 1\&.10) Select an input band \fIband\fP for overview generation\&. Band numbering starts from 1\&. Multiple \fB-b\fP switches may be used to select a set of input bands to generate overviews\&. 
 .IP "\fB\fB-ro\fP:\fP" 1c
-(available from GDAL 1.6.0) open the dataset in read-only mode, in order to generate external overview (for GeoTIFF especially).  
+(available from GDAL 1\&.6\&.0) open the dataset in read-only mode, in order to generate external overview (for GeoTIFF especially)\&.  
 .IP "\fB\fB-clean\fP:\fP" 1c
-(available from GDAL 1.7.0) remove all overviews.  
+(available from GDAL 1\&.7\&.0) remove all overviews\&.  
 .IP "\fB\fB-oo\fP \fINAME=VALUE\fP:\fP" 1c
-(starting with GDAL 2.0) Dataset open option (format specific) 
+(starting with GDAL 2\&.0) Dataset open option (format specific) 
 .IP "\fB\fIfilename\fP:\fP" 1c
-The file to build overviews for (or whose overviews must be removed).  
+The file to build overviews for (or whose overviews must be removed)\&.  
 .IP "\fB\fIlevels\fP:\fP" 1c
-A list of integral overview levels to build. Ignored with -clean option. 
+A list of integral overview levels to build\&. Ignored with -clean option\&. 
 .PP
 .PP
-\fIMode\fP (available from GDAL 1.6.0) selects the value which appears most often of all the sampled points. \fIaverage_mp\fP is unsuitable for use. \fIAverage_magphase\fP averages complex data in mag/phase space. \fINearest\fP and \fIaverage\fP are applicable to normal image data. \fINearest\fP applies a nearest neighbour (simple sampling) resampler, while \fIaverage\fP computes the average of all non-NODATA contributing pixels. \fICubic\fP resampling (available from GDAL 1.7.0) applies [...]
+\fIMode\fP (available from GDAL 1\&.6\&.0) selects the value which appears most often of all the sampled points\&. \fIaverage_mp\fP is unsuitable for use\&. \fIAverage_magphase\fP averages complex data in mag/phase space\&. \fINearest\fP and \fIaverage\fP are applicable to normal image data\&. \fINearest\fP applies a nearest neighbour (simple sampling) resampler, while \fIaverage\fP computes the average of all non-NODATA contributing pixels\&. \fICubic\fP resampling (available from GDAL  [...]
 .PP
-gdaladdo will honour properly NODATA_VALUES tuples (special dataset metadata) so that only a given RGB triplet (in case of a RGB image) will be considered as the nodata value and not each value of the triplet independently per band.
+gdaladdo will honour properly NODATA_VALUES tuples (special dataset metadata) so that only a given RGB triplet (in case of a RGB image) will be considered as the nodata value and not each value of the triplet independently per band\&.
 .PP
-Selecting a level value like \fI2\fP causes an overview level that is 1/2 the resolution (in each dimension) of the base layer to be computed. If the file has existing overview levels at a level selected, those levels will be recomputed and rewritten in place.
+Selecting a level value like \fI2\fP causes an overview level that is 1/2 the resolution (in each dimension) of the base layer to be computed\&. If the file has existing overview levels at a level selected, those levels will be recomputed and rewritten in place\&.
 .PP
-For internal GeoTIFF overviews (or external overviews in GeoTIFF format), note that -clean does not shrink the file. A later run of gdaladdo with overview levels will cause the file to be expanded, rather than reusing the space of the previously deleted overviews. If you just want to change the resampling method on a file that already has overviews computed, you don't need to clean the existing overviews.
+For internal GeoTIFF overviews (or external overviews in GeoTIFF format), note that -clean does not shrink the file\&. A later run of gdaladdo with overview levels will cause the file to be expanded, rather than reusing the space of the previously deleted overviews\&. If you just want to change the resampling method on a file that already has overviews computed, you don't need to clean the existing overviews\&.
 .PP
-Some format drivers do not support overviews at all. Many format drivers store overviews in a secondary file with the extension .ovr that is actually in TIFF format. By default, the GeoTIFF driver stores overviews internally to the file operated on (if it is writeable), unless the -ro flag is specified.
+Some format drivers do not support overviews at all\&. Many format drivers store overviews in a secondary file with the extension \&.ovr that is actually in TIFF format\&. By default, the GeoTIFF driver stores overviews internally to the file operated on (if it is writeable), unless the -ro flag is specified\&.
 .PP
-Most drivers also support an alternate overview format using Erdas Imagine format. To trigger this use the USE_RRD=YES configuration option. This will place the overviews in an associated .aux file suitable for direct use with Imagine or ArcGIS as well as GDAL applications. (eg --config USE_RRD YES)
+Most drivers also support an alternate overview format using Erdas Imagine format\&. To trigger this use the USE_RRD=YES configuration option\&. This will place the overviews in an associated \&.aux file suitable for direct use with Imagine or ArcGIS as well as GDAL applications\&. (eg --config USE_RRD YES)
 .SH "External overviews in GeoTIFF format"
 .PP
-External overviews created in TIFF format may be compressed using the COMPRESS_OVERVIEW configuration option. All compression methods, supported by the GeoTIFF driver, are available here. (eg --config COMPRESS_OVERVIEW DEFLATE). The photometric interpretation can be set with --config PHOTOMETRIC_OVERVIEW {RGB,YCBCR,...}, and the interleaving with --config INTERLEAVE_OVERVIEW {PIXEL|BAND}.
+External overviews created in TIFF format may be compressed using the COMPRESS_OVERVIEW configuration option\&. All compression methods, supported by the GeoTIFF driver, are available here\&. (eg --config COMPRESS_OVERVIEW DEFLATE)\&. The photometric interpretation can be set with --config PHOTOMETRIC_OVERVIEW {RGB,YCBCR,\&.\&.\&.}, and the interleaving with --config INTERLEAVE_OVERVIEW {PIXEL|BAND}\&.
 .PP
-For JPEG compressed external overviews, the JPEG quality can be set with '--config JPEG_QUALITY_OVERVIEW value' (GDAL 1.7.0 or later).
+For JPEG compressed external overviews, the JPEG quality can be set with '--config JPEG_QUALITY_OVERVIEW value' (GDAL 1\&.7\&.0 or later)\&.
 .PP
-For LZW or DEFLATE compressed external overviews, the predictor value can be set with '--config PREDICTOR_OVERVIEW 1|2|3' (GDAL 1.8.0 or later).
+For LZW or DEFLATE compressed external overviews, the predictor value can be set with '--config PREDICTOR_OVERVIEW 1|2|3' (GDAL 1\&.8\&.0 or later)\&.
 .PP
 To produce the smallest possible JPEG-In-TIFF overviews, you should use : 
 .PP
@@ -65,22 +62,22 @@ To produce the smallest possible JPEG-In-TIFF overviews, you should use :
 .fi
 .PP
 .PP
-Starting with GDAL 1.7.0, external overviews can be created in the BigTIFF format by using the BIGTIFF_OVERVIEW configuration option : --config BIGTIFF_OVERVIEW {IF_NEEDED|IF_SAFER|YES|NO}. The default value is IF_NEEDED. The behaviour of this option is exactly the same as the BIGTIFF creation option documented in the GeoTIFF driver documentation. 
+Starting with GDAL 1\&.7\&.0, external overviews can be created in the BigTIFF format by using the BIGTIFF_OVERVIEW configuration option : --config BIGTIFF_OVERVIEW {IF_NEEDED|IF_SAFER|YES|NO}\&. The default value is IF_NEEDED\&. The behaviour of this option is exactly the same as the BIGTIFF creation option documented in the GeoTIFF driver documentation\&. 
 .PD 0
 
 .IP "\(bu" 2
-YES forces BigTIFF. 
+YES forces BigTIFF\&. 
 .IP "\(bu" 2
-NO forces classic TIFF. 
+NO forces classic TIFF\&. 
 .IP "\(bu" 2
-IF_NEEDED will only create a BigTIFF if it is clearly needed (uncompressed, and overviews larger than 4GB). 
+IF_NEEDED will only create a BigTIFF if it is clearly needed (uncompressed, and overviews larger than 4GB)\&. 
 .IP "\(bu" 2
-IF_SAFER will create BigTIFF if the resulting file *might* exceed 4GB. 
+IF_SAFER will create BigTIFF if the resulting file *might* exceed 4GB\&. 
 .PP
 
 .br
 .PP
-See the documentation of the GeoTIFF driver for further explanations on all those options.
+See the documentation of the GeoTIFF driver for further explanations on all those options\&.
 .SH "EXAMPLE"
 .PP
 .PP
@@ -93,7 +90,7 @@ gdaladdo -r average abc.tif 2 4 8 16
 .fi
 .PP
 .PP
-Create an external compressed GeoTIFF overview file from the ERDAS .IMG file:
+Create an external compressed GeoTIFF overview file from the ERDAS \&.IMG file:
 .PP
 .PP
 .nf
diff --git a/man/man1/gdalbuildvrt.1 b/man/man1/gdalbuildvrt.1
index f2cd156..52004e0 100644
--- a/man/man1/gdalbuildvrt.1
+++ b/man/man1/gdalbuildvrt.1
@@ -1,12 +1,9 @@
-.TH "gdalbuildvrt" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "gdalbuildvrt" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-gdalbuildvrt \- .TH "gdalbuildvrt" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-gdalbuildvrt \- Builds a VRT from a list of datasets. (compiled by default since GDAL 1.6.1)
+gdalbuildvrt \- gdalbuildvrt 
+Builds a VRT from a list of datasets\&. (compiled by default since GDAL 1\&.6\&.1)
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -26,71 +23,71 @@ gdalbuildvrt [-tileindex field_name]
 .PP
 .SH "DESCRIPTION"
 .PP
-This program builds a VRT (Virtual Dataset) that is a mosaic of the list of input GDAL datasets. The list of input GDAL datasets can be specified at the end of the command line, or put in a text file (one filename per line) for very long lists, or it can be a MapServer tileindex (see \fBgdaltindex\fP utility). In the later case, all entries in the tile index will be added to the VRT.
+This program builds a VRT (Virtual Dataset) that is a mosaic of the list of input GDAL datasets\&. The list of input GDAL datasets can be specified at the end of the command line, or put in a text file (one filename per line) for very long lists, or it can be a MapServer tileindex (see \fBgdaltindex\fP utility)\&. In the later case, all entries in the tile index will be added to the VRT\&.
 .PP
-With -separate, each files goes into a separate \fIstacked\fP band in the VRT band. Otherwise, the files are considered as tiles of a larger mosaic and the VRT file has as many bands as one of the input files.
+With -separate, each files goes into a separate \fIstacked\fP band in the VRT band\&. Otherwise, the files are considered as tiles of a larger mosaic and the VRT file has as many bands as one of the input files\&.
 .PP
-If one GDAL dataset is made of several subdatasets and has 0 raster bands, all the subdatasets will be added to the VRT rather than the dataset itself.
+If one GDAL dataset is made of several subdatasets and has 0 raster bands, all the subdatasets will be added to the VRT rather than the dataset itself\&.
 .PP
-gdalbuildvrt does some amount of checks to assure that all files that will be put in the resulting VRT have similar characteristics : number of bands, projection, color interpretation... If not, files that do not match the common characteristics will be skipped. (This is only true in the default mode, and not when using the -separate option)
+gdalbuildvrt does some amount of checks to assure that all files that will be put in the resulting VRT have similar characteristics : number of bands, projection, color interpretation\&.\&.\&. If not, files that do not match the common characteristics will be skipped\&. (This is only true in the default mode, and not when using the -separate option)
 .PP
-If there is some amount of spatial overlapping between files, the order may depend on the order they are inserted in the VRT file, but this behaviour should not be relied on.
+If there is some amount of spatial overlapping between files, the order may depend on the order they are inserted in the VRT file, but this behaviour should not be relied on\&.
 .PP
-This utility is somehow equivalent to the gdal_vrtmerge.py utility and is build by default in GDAL 1.6.1.
+This utility is somehow equivalent to the gdal_vrtmerge\&.py utility and is build by default in GDAL 1\&.6\&.1\&.
 .PP
 .IP "\fB\fB-tileindex\fP:\fP" 1c
-Use the specified value as the tile index field, instead of the default value with is 'location'. 
+Use the specified value as the tile index field, instead of the default value with is 'location'\&. 
 .PP
 .IP "\fB\fB-resolution\fP {highest|lowest|average|user}:\fP" 1c
-In case the resolution of all input files is not the same, the -resolution flag enables the user to control the way the output resolution is computed. 'average' is the default. 'highest' will pick the smallest values of pixel dimensions within the set of source rasters. 'lowest' will pick the largest values of pixel dimensions within the set of source rasters. 'average' will compute an average of pixel dimensions within the set of source rasters. 'user' is new in GDAL 1.7.0 and must be u [...]
+In case the resolution of all input files is not the same, the -resolution flag enables the user to control the way the output resolution is computed\&. 'average' is the default\&. 'highest' will pick the smallest values of pixel dimensions within the set of source rasters\&. 'lowest' will pick the largest values of pixel dimensions within the set of source rasters\&. 'average' will compute an average of pixel dimensions within the set of source rasters\&. 'user' is new in GDAL 1\&.7\&.0 [...]
 .PP
 .IP "\fB\fB-tr\fP xres yres :\fP" 1c
-(starting with GDAL 1.7.0) set target resolution. The values must be expressed in georeferenced units. Both must be positive values. Specifying those values is of course incompatible with highest|lowest|average values for -resolution option. 
+(starting with GDAL 1\&.7\&.0) set target resolution\&. The values must be expressed in georeferenced units\&. Both must be positive values\&. Specifying those values is of course incompatible with highest|lowest|average values for -resolution option\&. 
 .PP
 .IP "\fB\fB-tap\fP:\fP" 1c
-(GDAL >= 1.8.0) (target aligned pixels) align the coordinates of the extent of the output file to the values of the -tr, such that the aligned extent includes the minimum extent.
+(GDAL >= 1\&.8\&.0) (target aligned pixels) align the coordinates of the extent of the output file to the values of the -tr, such that the aligned extent includes the minimum extent\&.
 .PP
 .IP "\fB\fB-te\fP xmin ymin xmax ymax :\fP" 1c
-(starting with GDAL 1.7.0) set georeferenced extents of VRT file. The values must be expressed in georeferenced units. If not specified, the extent of the VRT is the minimum bounding box of the set of source rasters. 
+(starting with GDAL 1\&.7\&.0) set georeferenced extents of VRT file\&. The values must be expressed in georeferenced units\&. If not specified, the extent of the VRT is the minimum bounding box of the set of source rasters\&. 
 .PP
 .IP "\fB\fB-addalpha\fP:\fP" 1c
-(starting with GDAL 1.7.0) Adds an alpha mask band to the VRT when the source raster have none. Mainly useful for RGB sources (or grey-level sources). The alpha band is filled on-the-fly with the value 0 in areas without any source raster, and with value 255 in areas with source raster. The effect is that a RGBA viewer will render the areas without source rasters as transparent and areas with source rasters as opaque. This option is not compatible with -separate.
+(starting with GDAL 1\&.7\&.0) Adds an alpha mask band to the VRT when the source raster have none\&. Mainly useful for RGB sources (or grey-level sources)\&. The alpha band is filled on-the-fly with the value 0 in areas without any source raster, and with value 255 in areas with source raster\&. The effect is that a RGBA viewer will render the areas without source rasters as transparent and areas with source rasters as opaque\&. This option is not compatible with -separate\&.
 .PP
 .IP "\fB\fB-hidenodata\fP:\fP" 1c
-(starting with GDAL 1.7.0) Even if any band contains nodata value, giving this option makes the VRT band not report the NoData. Useful when you want to control the background color of the dataset. By using along with the -addalpha option, you can prepare a dataset which doesn't report nodata value but is transparent in areas with no data.
+(starting with GDAL 1\&.7\&.0) Even if any band contains nodata value, giving this option makes the VRT band not report the NoData\&. Useful when you want to control the background color of the dataset\&. By using along with the -addalpha option, you can prepare a dataset which doesn't report nodata value but is transparent in areas with no data\&.
 .PP
-.IP "\fB\fB-srcnodata\fP \fIvalue [value...]\fP:\fP" 1c
-(starting with GDAL 1.7.0) Set nodata values for input bands (different values can be supplied for each band). If more than one value is supplied all values should be quoted to keep them together as a single operating system argument. If the option is not specified, the intrinsic nodata settings on the source datasets will be used (if they exist). The value set by this option is written in the NODATA element of each ComplexSource element. Use a value of \fCNone\fP to ignore intrinsic nod [...]
+.IP "\fB\fB-srcnodata\fP \fIvalue [value\&.\&.\&.]\fP:\fP" 1c
+(starting with GDAL 1\&.7\&.0) Set nodata values for input bands (different values can be supplied for each band)\&. If more than one value is supplied all values should be quoted to keep them together as a single operating system argument\&. If the option is not specified, the intrinsic nodata settings on the source datasets will be used (if they exist)\&. The value set by this option is written in the NODATA element of each ComplexSource element\&. Use a value of \fCNone\fP to ignore i [...]
 .PP
 .IP "\fB\fB-b\fP \fIband\fP:\fP" 1c
-(GDAL >= 1.10.0) Select an input \fIband\fP to be processed. Bands are numbered from 1. If input bands not set all bands will be added to vrt
+(GDAL >= 1\&.10\&.0) Select an input \fIband\fP to be processed\&. Bands are numbered from 1\&. If input bands not set all bands will be added to vrt
 .PP
 .IP "\fB\fB-sd\fP \fIsubdataset\fP\fP" 1c
-(GDAL >= 1.10.0) If the input dataset contains several subdatasets use a subdataset with the specified number (starting from 1). This is an alternative of giving the full subdataset name as an input.
+(GDAL >= 1\&.10\&.0) If the input dataset contains several subdatasets use a subdataset with the specified number (starting from 1)\&. This is an alternative of giving the full subdataset name as an input\&.
 .PP
-.IP "\fB\fB-vrtnodata\fP \fIvalue [value...]\fP:\fP" 1c
-(starting with GDAL 1.7.0) Set nodata values at the VRT band level (different values can be supplied for each band). If more than one value is supplied all values should be quoted to keep them together as a single operating system argument. If the option is not specified, intrinsic nodata settings on the first dataset will be used (if they exist). The value set by this option is written in the NoDataValue element of each VRTRasterBand element. Use a value of \fCNone\fP to ignore intrinsi [...]
+.IP "\fB\fB-vrtnodata\fP \fIvalue [value\&.\&.\&.]\fP:\fP" 1c
+(starting with GDAL 1\&.7\&.0) Set nodata values at the VRT band level (different values can be supplied for each band)\&. If more than one value is supplied all values should be quoted to keep them together as a single operating system argument\&. If the option is not specified, intrinsic nodata settings on the first dataset will be used (if they exist)\&. The value set by this option is written in the NoDataValue element of each VRTRasterBand element\&. Use a value of \fCNone\fP to ign [...]
 .PP
 .IP "\fB\fB-separate\fP:\fP" 1c
-(starting with GDAL 1.7.0) Place each input file into a separate \fIstacked\fP band. In that case, only the first band of each dataset will be placed into a new band. Contrary to the default mode, it is not required that all bands have the same datatype. 
+(starting with GDAL 1\&.7\&.0) Place each input file into a separate \fIstacked\fP band\&. In that case, only the first band of each dataset will be placed into a new band\&. Contrary to the default mode, it is not required that all bands have the same datatype\&. 
 .PP
 .IP "\fB\fB-allow_projection_difference\fP:\fP" 1c
-(starting with GDAL 1.7.0) When this option is specified, the utility will accept to make a VRT even if the input datasets have not the same projection. Note: this does not mean that they will be reprojected. Their projection will just be ignored. 
+(starting with GDAL 1\&.7\&.0) When this option is specified, the utility will accept to make a VRT even if the input datasets have not the same projection\&. Note: this does not mean that they will be reprojected\&. Their projection will just be ignored\&. 
 .PP
 .IP "\fB\fB-a_srs\fP \fIsrs_def\fP:\fP" 1c
-(starting with GDAL 1.10) Override the projection for the output file. The \fIsrs_def\fP may be any of the usual GDAL/OGR forms, complete WKT, PROJ.4, EPSG:n or a file containing the WKT. 
+(starting with GDAL 1\&.10) Override the projection for the output file\&. The \fIsrs_def\fP may be any of the usual GDAL/OGR forms, complete WKT, PROJ\&.4, EPSG:n or a file containing the WKT\&. 
 .PP
 .IP "\fB\fB-r\fP \fI{nearest (default),bilinear,cubic,cubicspline,lanczos,average,mode}\fP:\fP" 1c
-(GDAL >= 2.0) Select a resampling algorithm.
+(GDAL >= 2\&.0) Select a resampling algorithm\&.
 .PP
 .IP "\fB\fB-input_file_list\fP:\fP" 1c
 To specify a text file with an input filename on each line 
 .PP
 .IP "\fB\fB-q\fP:\fP" 1c
-(starting with GDAL 1.7.0) To disable the progress bar on the console 
+(starting with GDAL 1\&.7\&.0) To disable the progress bar on the console 
 .PP
 .IP "\fB\fB-overwrite\fP:\fP" 1c
-Overwrite the VRT if it already exists.
+Overwrite the VRT if it already exists\&.
 .PP
 .PP
 .SH "EXAMPLE"
diff --git a/man/man1/gdalcompare.1 b/man/man1/gdalcompare.1
index 7d492ef..37d307f 100644
--- a/man/man1/gdalcompare.1
+++ b/man/man1/gdalcompare.1
@@ -1,12 +1,9 @@
-.TH "gdalcompare" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "gdalcompare" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-gdalcompare \- .TH "gdalcompare" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-gdalcompare \- compare two images
+gdalcompare \- gdalcompare\&.py 
+compare two images
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -17,22 +14,22 @@ gdalcompare.py [-sds] golden_file new_file
 .PP
 .SH "DESCRIPTION"
 .PP
-The gdalcompare.py script compares two GDAL supported datasets and reports the differences. In addition to reporting differences to the standard out the script will also return the difference count in it's exit value.
+The gdalcompare\&.py script compares two GDAL supported datasets and reports the differences\&. In addition to reporting differences to the standard out the script will also return the difference count in it's exit value\&.
 .PP
-Image pixels, and various metadata are checked. There is also a byte by byte comparison done which will count as one difference. So if it is only important that the GDAL visible data is identical a difference count of 1 (the binary difference) should be considered acceptable.
+Image pixels, and various metadata are checked\&. There is also a byte by byte comparison done which will count as one difference\&. So if it is only important that the GDAL visible data is identical a difference count of 1 (the binary difference) should be considered acceptable\&.
 .PP
 .IP "\fB\fB-sds\fP:\fP" 1c
-If this flag is passed the script will compare all subdatasets that are part of the dataset, otherwise subdatasets are ignored.
+If this flag is passed the script will compare all subdatasets that are part of the dataset, otherwise subdatasets are ignored\&.
 .PP
 .IP "\fB\fIgolden_file\fP:\fP" 1c
-The file that is considered correct, referred to as the golden file.
+The file that is considered correct, referred to as the golden file\&.
 .PP
 .IP "\fB\fInew_file\fP:\fP" 1c
-The file being compared to the golden file, referred to as the new file.
+The file being compared to the golden file, referred to as the new file\&.
 .PP
 .PP
 .PP
-Note that the gdalcompare.py script can also be called as a library from python code though it is not typically in the python path for including. The primary entry point is gdalcompare.compare() which takes a golden gdal.Dataset and a new gdal.Dataset as arguments and returns a difference count (excluding the binary comparison). The gdalcompare.compare_sds() entry point can be used to compare subdatasets.
+Note that the gdalcompare\&.py script can also be called as a library from python code though it is not typically in the python path for including\&. The primary entry point is gdalcompare\&.compare() which takes a golden gdal\&.Dataset and a new gdal\&.Dataset as arguments and returns a difference count (excluding the binary comparison)\&. The gdalcompare\&.compare_sds() entry point can be used to compare subdatasets\&.
 .SH "AUTHORS"
 .PP
 Frank Warmerdam <warmerdam at pobox.com> 
diff --git a/man/man1/gdaldem.1 b/man/man1/gdaldem.1
index a6a83a3..9002539 100644
--- a/man/man1/gdaldem.1
+++ b/man/man1/gdaldem.1
@@ -1,12 +1,9 @@
-.TH "gdaldem" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "gdaldem" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-gdaldem \- .TH "gdaldem" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-gdaldem \- Tools to analyze and visualize DEMs. (since GDAL 1.7.0)
+gdaldem \- gdaldem 
+Tools to analyze and visualize DEMs\&. (since GDAL 1\&.7\&.0)
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -90,63 +87,63 @@ The input DEM raster to be processed
 .IP "\fB\fIoutput_xxx_map\fP:\fP" 1c
 The output raster produced 
 .IP "\fB\fB-of\fP \fIformat\fP:\fP" 1c
-Select the output format. The default is GeoTIFF (GTiff). Use the short format name. 
+Select the output format\&. The default is GeoTIFF (GTiff)\&. Use the short format name\&. 
 .IP "\fB\fB-compute_edges\fP:\fP" 1c
-(GDAL >= 1.8.0) Do the computation at raster edges and near nodata values 
+(GDAL >= 1\&.8\&.0) Do the computation at raster edges and near nodata values 
 .IP "\fB\fB-alg\fP \fIZevenbergenThorne\fP:\fP" 1c
-(GDAL >= 1.8.0) Use Zevenbergen & Thorne formula, instead of Horn's formula, to compute slope & aspect. The litterature suggests Zevenbergen & Thorne to be more suited to smooth landscapes, whereas Horn's formula to perform better on rougher terrain. 
+(GDAL >= 1\&.8\&.0) Use Zevenbergen & Thorne formula, instead of Horn's formula, to compute slope & aspect\&. The litterature suggests Zevenbergen & Thorne to be more suited to smooth landscapes, whereas Horn's formula to perform better on rougher terrain\&. 
 .IP "\fB\fB-b\fP \fIband\fP:\fP" 1c
-Select an input \fIband\fP to be processed. Bands are numbered from 1. 
+Select an input \fIband\fP to be processed\&. Bands are numbered from 1\&. 
 .IP "\fB\fB-co\fP \fI'NAME=VALUE'\fP:\fP" 1c
-Passes a creation option to the output format driver. Multiple \fB-co\fP options may be listed. See format specific documentation for legal creation options for each format. 
+Passes a creation option to the output format driver\&. Multiple \fB-co\fP options may be listed\&. See format specific documentation for legal creation options for each format\&. 
 .IP "\fB\fB-q\fP:\fP" 1c
-Suppress progress monitor and other non-error output. 
+Suppress progress monitor and other non-error output\&. 
 .PP
 .PP
-For all algorithms, except color-relief, a nodata value in the target dataset will be emitted if at least one pixel set to the nodata value is found in the 3x3 window centered around each source pixel. The consequence is that there will be a 1-pixel border around each image set with nodata value. From GDAL 1.8.0, if -compute_edges is specified, gdaldem will compute values at image edges or if a nodata value is found in the 3x3 window, by interpolating missing values.
+For all algorithms, except color-relief, a nodata value in the target dataset will be emitted if at least one pixel set to the nodata value is found in the 3x3 window centered around each source pixel\&. The consequence is that there will be a 1-pixel border around each image set with nodata value\&. From GDAL 1\&.8\&.0, if -compute_edges is specified, gdaldem will compute values at image edges or if a nodata value is found in the 3x3 window, by interpolating missing values\&.
 .SH "Modes"
 .PP
 .SS "hillshade"
-This command outputs an 8-bit raster with a nice shaded relief effect. It’s very useful for visualizing the terrain. You can optionally specify the azimuth and altitude of the light source, a vertical exaggeration factor and a scaling factor to account for differences between vertical and horizontal units.
+This command outputs an 8-bit raster with a nice shaded relief effect\&. It’s very useful for visualizing the terrain\&. You can optionally specify the azimuth and altitude of the light source, a vertical exaggeration factor and a scaling factor to account for differences between vertical and horizontal units\&.
 .PP
-The value 0 is used as the output nodata value.
+The value 0 is used as the output nodata value\&.
 .PP
 The following specific options are available : 
 .IP "\fB\fB-z\fP \fIzFactor\fP:\fP" 1c
 vertical exaggeration used to pre-multiply the elevations 
 .IP "\fB\fB-s\fP \fIscale\fP:\fP" 1c
-ratio of vertical units to horizontal. If the horizontal unit of the source DEM is degrees (e.g Lat/Long WGS84 projection), you can use scale=111120 if the vertical units are meters (or scale=370400 if they are in feet) 
+ratio of vertical units to horizontal\&. If the horizontal unit of the source DEM is degrees (e\&.g Lat/Long WGS84 projection), you can use scale=111120 if the vertical units are meters (or scale=370400 if they are in feet) 
 .IP "\fB\fB-az\fP \fIazimuth\fP:\fP" 1c
-azimuth of the light, in degrees. 0 if it comes from the top of the raster, 90 from the east, ... The default value, 315, should rarely be changed as it is the value generally used to generate shaded maps. 
+azimuth of the light, in degrees\&. 0 if it comes from the top of the raster, 90 from the east, \&.\&.\&. The default value, 315, should rarely be changed as it is the value generally used to generate shaded maps\&. 
 .IP "\fB\fB-alt\fP \fIaltitude\fP:\fP" 1c
-altitude of the light, in degrees. 90 if the light comes from above the DEM, 0 if it is raking light. 
+altitude of the light, in degrees\&. 90 if the light comes from above the DEM, 0 if it is raking light\&. 
 .IP "\fB\fB-combined\fP \fIcombined shading\fP:\fP" 1c
-(starting with GDAL 1.10) a combination of slope and oblique shading. 
+(starting with GDAL 1\&.10) a combination of slope and oblique shading\&. 
 .PP
 .SS "slope"
-This command will take a DEM raster and output a 32-bit float raster with slope values. You have the option of specifying the type of slope value you want: degrees or percent slope. In cases where the horizontal units differ from the vertical units, you can also supply a scaling factor.
+This command will take a DEM raster and output a 32-bit float raster with slope values\&. You have the option of specifying the type of slope value you want: degrees or percent slope\&. In cases where the horizontal units differ from the vertical units, you can also supply a scaling factor\&.
 .PP
-The value -9999 is used as the output nodata value.
+The value -9999 is used as the output nodata value\&.
 .PP
 The following specific options are available : 
 .IP "\fB\fB-p\fP :\fP" 1c
-if specified, the slope will be expressed as percent slope. Otherwise, it is expressed as degrees 
+if specified, the slope will be expressed as percent slope\&. Otherwise, it is expressed as degrees 
 .IP "\fB\fB-s\fP \fIscale\fP:\fP" 1c
-ratio of vertical units to horizontal. If the horizontal unit of the source DEM is degrees (e.g Lat/Long WGS84 projection), you can use scale=111120 if the vertical units are meters (or scale=370400 if they are in feet) 
+ratio of vertical units to horizontal\&. If the horizontal unit of the source DEM is degrees (e\&.g Lat/Long WGS84 projection), you can use scale=111120 if the vertical units are meters (or scale=370400 if they are in feet) 
 .PP
 .SS "aspect"
-This command outputs a 32-bit float raster with values between 0° and 360° representing the azimuth that slopes are facing. The definition of the azimuth is such that : 0° means that the slope is facing the North, 90° it's facing the East, 180° it's facing the South and 270° it's facing the West (provided that the top of your input raster is north oriented). The aspect value -9999 is used as the nodata value to indicate undefined aspect in flat areas with slope=0.
+This command outputs a 32-bit float raster with values between 0° and 360° representing the azimuth that slopes are facing\&. The definition of the azimuth is such that : 0° means that the slope is facing the North, 90° it's facing the East, 180° it's facing the South and 270° it's facing the West (provided that the top of your input raster is north oriented)\&. The aspect value -9999 is used as the nodata value to indicate undefined aspect in flat areas with slope=0\&.
 .PP
 The following specifics options are available : 
 .IP "\fB\fB-trigonometric\fP:\fP" 1c
-return trigonometric angle instead of azimuth. Thus 0° means East, 90° North, 180° West, 270° South 
+return trigonometric angle instead of azimuth\&. Thus 0° means East, 90° North, 180° West, 270° South 
 .IP "\fB\fB-zero_for_flat\fP:\fP" 1c
 return 0 for flat areas with slope=0, instead of -9999 
 .PP
 .PP
-By using those 2 options, the aspect returned by gdaldem aspect should be identical to the one of GRASS r.slope.aspect. Otherwise, it's identical to the one of Matthew Perry's aspect.cpp utility.
+By using those 2 options, the aspect returned by gdaldem aspect should be identical to the one of GRASS r\&.slope\&.aspect\&. Otherwise, it's identical to the one of Matthew Perry's aspect\&.cpp utility\&.
 .SS "color-relief"
-This command outputs a 3-band (RGB) or 4-band (RGBA) raster with values are computed from the elevation and a text-based color configuration file, containing the association between various elevation values and the corresponding wished color. By default, the colors between the given elevation values are blended smoothly and the result is a nice colorized DEM. The -exact_color_entry or -nearest_color_entry options can be used to avoid that linear interpolation for values that don't match  [...]
+This command outputs a 3-band (RGB) or 4-band (RGBA) raster with values are computed from the elevation and a text-based color configuration file, containing the association between various elevation values and the corresponding wished color\&. By default, the colors between the given elevation values are blended smoothly and the result is a nice colorized DEM\&. The -exact_color_entry or -nearest_color_entry options can be used to avoid that linear interpolation for values that don't ma [...]
 .PP
 The following specifics options are available : 
 .IP "\fB\fIcolor_text_file\fP:\fP" 1c
@@ -154,24 +151,24 @@ text-based color configuration file
 .IP "\fB\fB-alpha\fP :\fP" 1c
 add an alpha channel to the output raster 
 .IP "\fB\fB-exact_color_entry\fP :\fP" 1c
-use strict matching when searching in the color configuration file. If none matching color entry is found, the '0,0,0,0' RGBA quadruplet will be used 
+use strict matching when searching in the color configuration file\&. If none matching color entry is found, the '0,0,0,0' RGBA quadruplet will be used 
 .IP "\fB\fB-nearest_color_entry\fP :\fP" 1c
-use the RGBA quadruplet corresponding to the closest entry in the color configuration file. 
+use the RGBA quadruplet corresponding to the closest entry in the color configuration file\&. 
 .PP
 .PP
-The color-relief mode is the only mode that supports VRT as output format. In that case, it will translate the color configuration file into appropriate LUT elements. Note that elevations specified as percentage will be translated as absolute values, which must be taken into account when the statistics of the source raster differ from the one that was used when building the VRT.
+The color-relief mode is the only mode that supports VRT as output format\&. In that case, it will translate the color configuration file into appropriate LUT elements\&. Note that elevations specified as percentage will be translated as absolute values, which must be taken into account when the statistics of the source raster differ from the one that was used when building the VRT\&.
 .PP
-The text-based color configuration file generally contains 4 columns per line : the elevation value and the corresponding Red, Green, Blue component (between 0 and 255). The elevation value can be any floating point value, or the \fInv\fP keyword for the nodata value.. The elevation can also be expressed as a percentage : 0% being the minimum value found in the raster, 100% the maximum value.
+The text-based color configuration file generally contains 4 columns per line : the elevation value and the corresponding Red, Green, Blue component (between 0 and 255)\&. The elevation value can be any floating point value, or the \fInv\fP keyword for the nodata value\&.\&. The elevation can also be expressed as a percentage : 0% being the minimum value found in the raster, 100% the maximum value\&.
 .PP
-An extra column can be optionally added for the alpha component. If it is not specified, full opacity (255) is assumed.
+An extra column can be optionally added for the alpha component\&. If it is not specified, full opacity (255) is assumed\&.
 .PP
-Various field separators are accepted : comma, tabulation, spaces, ':'.
+Various field separators are accepted : comma, tabulation, spaces, ':'\&.
 .PP
-Common colors used by GRASS can also be specified by using their name, instead of the RGB triplet. The supported list is : white, black, red, green, blue, yellow, magenta, cyan, aqua, grey/gray, orange, brown, purple/violet and indigo.
+Common colors used by GRASS can also be specified by using their name, instead of the RGB triplet\&. The supported list is : white, black, red, green, blue, yellow, magenta, cyan, aqua, grey/gray, orange, brown, purple/violet and indigo\&.
 .PP
-Since GDAL 1.8.0, GMT .cpt palette files are also supported (COLOR_MODEL = RGB only).
+Since GDAL 1\&.8\&.0, GMT \&.cpt palette files are also supported (COLOR_MODEL = RGB only)\&.
 .PP
-Note: the syntax of the color configuration file is derived from the one supported by GRASS r.colors utility. ESRI HDR color table files (.clr) also match that syntax. The alpha component and the support of tab and comma as separators are GDAL specific extensions.
+Note: the syntax of the color configuration file is derived from the one supported by GRASS r\&.colors utility\&. ESRI HDR color table files (\&.clr) also match that syntax\&. The alpha component and the support of tab and comma as separators are GDAL specific extensions\&.
 .PP
 For example : 
 .PP
@@ -187,28 +184,28 @@ nv     0   0   0   0
 .fi
 .PP
 .SS "TRI"
-This command outputs a single-band raster with values computed from the elevation. TRI stands for Terrain Ruggedness Index, which is defined as the mean difference between a central pixel and its surrounding cells (see Wilson et al 2007, Marine Geodesy 30:3-35).
+This command outputs a single-band raster with values computed from the elevation\&. TRI stands for Terrain Ruggedness Index, which is defined as the mean difference between a central pixel and its surrounding cells (see Wilson et al 2007, Marine Geodesy 30:3-35)\&.
 .PP
-The value -9999 is used as the output nodata value.
+The value -9999 is used as the output nodata value\&.
 .PP
-There are no specific options.
+There are no specific options\&.
 .SS "TPI"
-This command outputs a single-band raster with values computed from the elevation. TPI stands for Topographic Position Index, which is defined as the difference between a central pixel and the mean of its surrounding cells (see Wilson et al 2007, Marine Geodesy 30:3-35).
+This command outputs a single-band raster with values computed from the elevation\&. TPI stands for Topographic Position Index, which is defined as the difference between a central pixel and the mean of its surrounding cells (see Wilson et al 2007, Marine Geodesy 30:3-35)\&.
 .PP
-The value -9999 is used as the output nodata value.
+The value -9999 is used as the output nodata value\&.
 .PP
-There are no specific options.
+There are no specific options\&.
 .SS "roughness"
-This command outputs a single-band raster with values computed from the elevation. Roughness is the largest inter-cell difference of a central pixel and its surrounding cell, as defined in Wilson et al (2007, Marine Geodesy 30:3-35).
+This command outputs a single-band raster with values computed from the elevation\&. Roughness is the largest inter-cell difference of a central pixel and its surrounding cell, as defined in Wilson et al (2007, Marine Geodesy 30:3-35)\&.
 .PP
-The value -9999 is used as the output nodata value.
+The value -9999 is used as the output nodata value\&.
 .PP
-There are no specific options.
+There are no specific options\&.
 .SH "AUTHORS"
 .PP
 Matthew Perry <perrygeo at gmail.com>, Even Rouault <even.rouault at mines-paris.org>, Howard Butler <hobu.inc at gmail.com>, Chris Yesson <chris.yesson at ioz.ac.uk>
 .PP
-Derived from code by Michael Shapiro, Olga Waupotitsch, Marjorie Larson, Jim Westervelt : U.S. Army CERL, 1993. GRASS 4.1 Reference Manual. U.S. Army Corps of Engineers, Construction Engineering Research Laboratories, Champaign, Illinois, 1-425.
+Derived from code by Michael Shapiro, Olga Waupotitsch, Marjorie Larson, Jim Westervelt : U\&.S\&. Army CERL, 1993\&. GRASS 4\&.1 Reference Manual\&. U\&.S\&. Army Corps of Engineers, Construction Engineering Research Laboratories, Champaign, Illinois, 1-425\&.
 .SH "See also"
 .PP
 Documentation of related GRASS utilities :
diff --git a/man/man1/gdalinfo.1 b/man/man1/gdalinfo.1
index 26bac24..404dcb7 100644
--- a/man/man1/gdalinfo.1
+++ b/man/man1/gdalinfo.1
@@ -1,12 +1,9 @@
-.TH "gdalinfo" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "gdalinfo" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-gdalinfo \- .TH "gdalinfo" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-gdalinfo \- lists information about a raster dataset
+gdalinfo \- gdalinfo 
+lists information about a raster dataset
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -20,78 +17,78 @@ gdalinfo [--help-general] [-json] [-mm] [-stats] [-hist] [-nogcp] [-nomd]
 .PP
 .SH "DESCRIPTION"
 .PP
-The gdalinfo program lists various information about a GDAL supported raster dataset. 
+The gdalinfo program lists various information about a GDAL supported raster dataset\&. 
 .IP "\fB\fB-json\fP\fP" 1c
-Display the output in json format. 
+Display the output in json format\&. 
 .IP "\fB\fB-mm\fP\fP" 1c
-Force computation of the actual min/max values for each band in the dataset. 
+Force computation of the actual min/max values for each band in the dataset\&. 
 .IP "\fB\fB-stats\fP\fP" 1c
-Read and display image statistics. Force computation if no statistics are stored in an image. 
+Read and display image statistics\&. Force computation if no statistics are stored in an image\&. 
 .IP "\fB\fB-approx_stats\fP\fP" 1c
-Read and display image statistics. Force computation if no statistics are stored in an image. However, they may be computed based on overviews or a subset of all tiles. Useful if you are in a hurry and don't want precise stats. 
+Read and display image statistics\&. Force computation if no statistics are stored in an image\&. However, they may be computed based on overviews or a subset of all tiles\&. Useful if you are in a hurry and don't want precise stats\&. 
 .IP "\fB\fB-hist\fP\fP" 1c
-Report histogram information for all bands. 
+Report histogram information for all bands\&. 
 .IP "\fB\fB-nogcp\fP\fP" 1c
-Suppress ground control points list printing. It may be useful for datasets with huge amount of GCPs, such as L1B AVHRR or HDF4 MODIS which contain thousands of them. 
+Suppress ground control points list printing\&. It may be useful for datasets with huge amount of GCPs, such as L1B AVHRR or HDF4 MODIS which contain thousands of them\&. 
 .IP "\fB\fB-nomd\fP\fP" 1c
-Suppress metadata printing. Some datasets may contain a lot of metadata strings. 
+Suppress metadata printing\&. Some datasets may contain a lot of metadata strings\&. 
 .IP "\fB\fB-norat\fP\fP" 1c
-Suppress printing of raster attribute table. 
+Suppress printing of raster attribute table\&. 
 .IP "\fB\fB-noct\fP\fP" 1c
-Suppress printing of color table. 
+Suppress printing of color table\&. 
 .IP "\fB\fB-checksum\fP\fP" 1c
-Force computation of the checksum for each band in the dataset. 
+Force computation of the checksum for each band in the dataset\&. 
 .IP "\fB\fB-listmdd\fP\fP" 1c
-(GDAL >= 1.11) List all metadata domains available for the dataset. 
+(GDAL >= 1\&.11) List all metadata domains available for the dataset\&. 
 .IP "\fB\fB-mdd domain\fP\fP" 1c
-Report metadata for the specified domain. Starting with GDAL 1.11, 'all' can be used to report metadata in all domains 
+Report metadata for the specified domain\&. Starting with GDAL 1\&.11, 'all' can be used to report metadata in all domains 
 .IP "\fB\fB-nofl\fP\fP" 1c
-(GDAL >= 1.9.0) Only display the first file of the file list. 
+(GDAL >= 1\&.9\&.0) Only display the first file of the file list\&. 
 .IP "\fB\fB-sd\fP \fIsubdataset\fP\fP" 1c
-(GDAL >= 1.9.0) If the input dataset contains several subdatasets read and display a subdataset with specified number (starting from 1). This is an alternative of giving the full subdataset name. 
+(GDAL >= 1\&.9\&.0) If the input dataset contains several subdatasets read and display a subdataset with specified number (starting from 1)\&. This is an alternative of giving the full subdataset name\&. 
 .IP "\fB\fB-proj4\fP\fP" 1c
-(GDAL >= 1.9.0) Report a PROJ.4 string corresponding to the file's coordinate system. 
+(GDAL >= 1\&.9\&.0) Report a PROJ\&.4 string corresponding to the file's coordinate system\&. 
 .IP "\fB\fB-oo\fP \fINAME=VALUE\fP:\fP" 1c
-(starting with GDAL 2.0) Dataset open option (format specific) 
+(starting with GDAL 2\&.0) Dataset open option (format specific) 
 .PP
 .PP
 The gdalinfo will report all of the following (if known):
 .PP
 .PD 0
 .IP "\(bu" 2
-The format driver used to access the file. 
+The format driver used to access the file\&. 
 .IP "\(bu" 2
-Raster size (in pixels and lines). 
+Raster size (in pixels and lines)\&. 
 .IP "\(bu" 2
-The coordinate system for the file (in OGC WKT). 
+The coordinate system for the file (in OGC WKT)\&. 
 .IP "\(bu" 2
-The geotransform associated with the file (rotational coefficients are currently not reported). 
+The geotransform associated with the file (rotational coefficients are currently not reported)\&. 
 .IP "\(bu" 2
-Corner coordinates in georeferenced, and if possible lat/long based on the full geotransform (but not GCPs). 
+Corner coordinates in georeferenced, and if possible lat/long based on the full geotransform (but not GCPs)\&. 
 .IP "\(bu" 2
-Ground control points. 
+Ground control points\&. 
 .IP "\(bu" 2
-File wide (including subdatasets) metadata. 
+File wide (including subdatasets) metadata\&. 
 .IP "\(bu" 2
-Band data types. 
+Band data types\&. 
 .IP "\(bu" 2
-Band color interpretations. 
+Band color interpretations\&. 
 .IP "\(bu" 2
-Band block size. 
+Band block size\&. 
 .IP "\(bu" 2
-Band descriptions. 
+Band descriptions\&. 
 .IP "\(bu" 2
-Band min/max values (internally known and possibly computed). 
+Band min/max values (internally known and possibly computed)\&. 
 .IP "\(bu" 2
-Band checksum (if computation asked). 
+Band checksum (if computation asked)\&. 
 .IP "\(bu" 2
-Band NODATA value. 
+Band NODATA value\&. 
 .IP "\(bu" 2
-Band overview resolutions available. 
+Band overview resolutions available\&. 
 .IP "\(bu" 2
-Band unit type (i.e.. 'meters' or 'feet' for elevation bands). 
+Band unit type (i\&.e\&.\&. 'meters' or 'feet' for elevation bands)\&. 
 .IP "\(bu" 2
-Band pseudo-color tables. 
+Band pseudo-color tables\&. 
 .PP
 .SH "EXAMPLE"
 .PP
diff --git a/man/man1/gdallocationinfo.1 b/man/man1/gdallocationinfo.1
index 7cdbf88..e7cb17d 100644
--- a/man/man1/gdallocationinfo.1
+++ b/man/man1/gdallocationinfo.1
@@ -1,12 +1,9 @@
-.TH "gdallocationinfo" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "gdallocationinfo" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-gdallocationinfo \- .TH "gdallocationinfo" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-gdallocationinfo \- raster query tool
+gdallocationinfo \- gdallocationinfo 
+raster query tool
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -21,69 +18,69 @@ Usage: gdallocationinfo [--help-general] [-xml] [-lifonly] [-valonly]
 .PP
 .SH "DESCRIPTION"
 .PP
-The gdallocationinfo utility provide a mechanism to query information about a pixel given it's location in one of a variety of coordinate systems. Several reporting options are provided.
+The gdallocationinfo utility provide a mechanism to query information about a pixel given it's location in one of a variety of coordinate systems\&. Several reporting options are provided\&.
 .PP
 .IP "\fB\fB-xml\fP: \fP" 1c
-The output report will be XML formatted for convenient post processing.
+The output report will be XML formatted for convenient post processing\&.
 .PP
 .IP "\fB\fB-lifonly\fP: \fP" 1c
-The only output is filenames production from the LocationInfo request against the database (ie. for identifying impacted file from VRT).
+The only output is filenames production from the LocationInfo request against the database (ie\&. for identifying impacted file from VRT)\&.
 .PP
 .IP "\fB\fB-valonly\fP: \fP" 1c
-The only output is the pixel values of the selected pixel on each of the selected bands.
+The only output is the pixel values of the selected pixel on each of the selected bands\&.
 .PP
 .IP "\fB\fB-b\fP \fIband\fP: \fP" 1c
-Selects a band to query. Multiple bands can be listed. By default all bands are queried.
+Selects a band to query\&. Multiple bands can be listed\&. By default all bands are queried\&.
 .PP
 .IP "\fB\fB-overview\fP \fIoverview_level\fP: \fP" 1c
-Query the (overview_level)th overview (overview_level=1 is the 1st overview), instead of the base band. Note that the x,y location (if the coordinate system is pixel/line) must still be given with respect to the base band.
+Query the (overview_level)th overview (overview_level=1 is the 1st overview), instead of the base band\&. Note that the x,y location (if the coordinate system is pixel/line) must still be given with respect to the base band\&.
 .PP
 .IP "\fB\fB-l_srs\fP \fIsrs def\fP: \fP" 1c
-The coordinate system of the input x, y location.
+The coordinate system of the input x, y location\&.
 .PP
 .IP "\fB\fB-geoloc\fP: \fP" 1c
-Indicates input x,y points are in the georeferencing system of the image.
+Indicates input x,y points are in the georeferencing system of the image\&.
 .PP
 .IP "\fB\fB-wgs84\fP: \fP" 1c
-Indicates input x,y points are WGS84 long, lat.
+Indicates input x,y points are WGS84 long, lat\&.
 .PP
 .IP "\fB\fB-oo\fP \fINAME=VALUE\fP: \fP" 1c
-(starting with GDAL 2.0) Dataset open option (format specific)
+(starting with GDAL 2\&.0) Dataset open option (format specific)
 .PP
 .IP "\fB\fIsrcfile\fP:\fP" 1c
-The source GDAL raster datasource name.
+The source GDAL raster datasource name\&.
 .PP
 .IP "\fB\fIx\fP:\fP" 1c
-X location of target pixel. By default the coordinate system is pixel/line unless -l_srs, -wgs84 or -geoloc supplied. 
+X location of target pixel\&. By default the coordinate system is pixel/line unless -l_srs, -wgs84 or -geoloc supplied\&. 
 .PP
 .IP "\fB\fIy\fP:\fP" 1c
-Y location of target pixel. By default the coordinate system is pixel/line unless -l_srs, -wgs84 or -geoloc supplied. 
+Y location of target pixel\&. By default the coordinate system is pixel/line unless -l_srs, -wgs84 or -geoloc supplied\&. 
 .PP
 .PP
 .PP
-This utility is intended to provide a variety of information about a pixel. Currently it reports three things:
+This utility is intended to provide a variety of information about a pixel\&. Currently it reports three things:
 .PP
 .PD 0
 .IP "\(bu" 2
-The location of the pixel in pixel/line space. 
+The location of the pixel in pixel/line space\&. 
 .IP "\(bu" 2
-The result of a LocationInfo metadata query against the datasource - currently this is only implemented for VRT files which will report the file(s) used to satisfy requests for that pixel. 
+The result of a LocationInfo metadata query against the datasource - currently this is only implemented for VRT files which will report the file(s) used to satisfy requests for that pixel\&. 
 .IP "\(bu" 2
-The raster pixel value of that pixel for all or a subset of the bands. 
+The raster pixel value of that pixel for all or a subset of the bands\&. 
 .IP "\(bu" 2
-The unscaled pixel value if a Scale and/or Offset apply to the band. 
+The unscaled pixel value if a Scale and/or Offset apply to the band\&. 
 .PP
 .PP
-The pixel selected is requested by x/y coordinate on the commandline, or read from stdin. More than one coordinate pair can be supplied when reading coordinatesis from stdin. By default pixel/line coordinates are expected. However with use of the -geoloc, -wgs84, or -l_srs switches it is possible to specify the location in other coordinate systems.
+The pixel selected is requested by x/y coordinate on the commandline, or read from stdin\&. More than one coordinate pair can be supplied when reading coordinatesis from stdin\&. By default pixel/line coordinates are expected\&. However with use of the -geoloc, -wgs84, or -l_srs switches it is possible to specify the location in other coordinate systems\&.
 .PP
-The default report is in a human readable text format. It is possible to instead request xml output with the -xml switch.
+The default report is in a human readable text format\&. It is possible to instead request xml output with the -xml switch\&.
 .PP
-For scripting purposes, the -valonly and -lifonly switches are provided to restrict output to the actual pixel values, or the LocationInfo files identified for the pixel.
+For scripting purposes, the -valonly and -lifonly switches are provided to restrict output to the actual pixel values, or the LocationInfo files identified for the pixel\&.
 .PP
-It is anticipated that additional reporting capabilities will be added to gdallocationinfo in the future.
+It is anticipated that additional reporting capabilities will be added to gdallocationinfo in the future\&.
 .SH "EXAMPLE"
 .PP
-Simple example reporting on pixel (256,256) on the file utm.tif.
+Simple example reporting on pixel (256,256) on the file utm\&.tif\&.
 .PP
 .PP
 .nf
@@ -96,7 +93,7 @@ Report:
 .fi
 .PP
 .PP
-Query a VRT file providing the location in WGS84, and getting the result in xml.
+Query a VRT file providing the location in WGS84, and getting the result in xml\&.
 .PP
 .PP
 .nf
diff --git a/man/man1/gdalmanage.1 b/man/man1/gdalmanage.1
index 95efdb4..3313f27 100644
--- a/man/man1/gdalmanage.1
+++ b/man/man1/gdalmanage.1
@@ -1,12 +1,9 @@
-.TH "gdalmanage" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "gdalmanage" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-gdalmanage \- .TH "gdalmanage" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-gdalmanage \- Identify, delete, rename and copy raster data files
+gdalmanage \- gdalmanage 
+Identify, delete, rename and copy raster data files
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -18,31 +15,31 @@ Usage: gdalmanage mode [-r] [-u] [-f format]
 .PP
 .SH "DESCRIPTION"
 .PP
-The gdalmanage program can perform various operations on raster data files, depending on the chosen \fImode\fP. This includes identifying raster data types and deleting, renaming or copying the files.
+The gdalmanage program can perform various operations on raster data files, depending on the chosen \fImode\fP\&. This includes identifying raster data types and deleting, renaming or copying the files\&.
 .PP
 .IP "\fB\fImode\fP:\fP" 1c
 Mode of operation 
 .IP "\fB\fBidentify\fP \fIdatasetname\fP:\fP" 1c
-List data format of file. 
+List data format of file\&. 
 .IP "\fB\fBcopy\fP \fIdatasetname newdatasetname\fP:\fP" 1c
-Create a copy of the raster file with a new name. 
+Create a copy of the raster file with a new name\&. 
 .IP "\fB\fBrename\fP \fIdatasetname newdatasetname\fP:\fP" 1c
-Change the name of the raster file. 
+Change the name of the raster file\&. 
 .IP "\fB\fBdelete\fP \fIdatasetname\fP:\fP" 1c
-Delete raster file. 
+Delete raster file\&. 
 .PP
 .PP
 .IP "\fB\fB-r\fP:\fP" 1c
-Recursively scan files/folders for raster files. 
+Recursively scan files/folders for raster files\&. 
 .IP "\fB\fB-u\fP:\fP" 1c
-Report failures if file type is unidentified. 
+Report failures if file type is unidentified\&. 
 .IP "\fB\fB-f\fP \fIformat\fP:\fP" 1c
-Specify format of raster file if unknown by the application. Uses short data format name (e.g. \fIGTiff\fP).
+Specify format of raster file if unknown by the application\&. Uses short data format name (e\&.g\&. \fIGTiff\fP)\&.
 .PP
 .IP "\fB\fIdatasetname\fP:\fP" 1c
-Raster file to operate on. 
+Raster file to operate on\&. 
 .IP "\fB\fInewdatasetname\fP:\fP" 1c
-For copy and rename modes, you provide a \fIsource\fP filename and a \fItarget\fP filename, just like copy and move commands in an operating system. 
+For copy and rename modes, you provide a \fIsource\fP filename and a \fItarget\fP filename, just like copy and move commands in an operating system\&. 
 .PP
 .SH "EXAMPLES"
 .PP
diff --git a/man/man1/gdalmove.1 b/man/man1/gdalmove.1
index 55aa3c7..7debfe6 100644
--- a/man/man1/gdalmove.1
+++ b/man/man1/gdalmove.1
@@ -1,12 +1,9 @@
-.TH "gdalmove" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "gdalmove" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-gdalmove \- .TH "gdalmove" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-gdalmove \- Transform georeferencing of raster file in place
+gdalmove \- gdalmove\&.py 
+Transform georeferencing of raster file in place
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -18,26 +15,26 @@ gdalmove.py [-s_srs <srs_defn>] -t_srs <srs_defn>
 .PP
 .SH "DESCRIPTION"
 .PP
-The gdalmove.py script transforms the bounds of a raster file from one coordinate system to another, and then updates the coordinate system and geotransform of the file. This is done without altering pixel values at all. It is loosely similar to using gdalwarp to transform an image but avoiding the resampling step in order to avoid image damage. It is generally only suitable for transformations that are effectively linear in the area of the file.
+The gdalmove\&.py script transforms the bounds of a raster file from one coordinate system to another, and then updates the coordinate system and geotransform of the file\&. This is done without altering pixel values at all\&. It is loosely similar to using gdalwarp to transform an image but avoiding the resampling step in order to avoid image damage\&. It is generally only suitable for transformations that are effectively linear in the area of the file\&.
 .PP
-If no error threshold value (-et) is provided then the file is not actually updated, but the errors that would be incurred are reported. If -et is provided then the file is only modify if the apparent error being introduced is less than the indicate threshold (in pixels).
+If no error threshold value (-et) is provided then the file is not actually updated, but the errors that would be incurred are reported\&. If -et is provided then the file is only modify if the apparent error being introduced is less than the indicate threshold (in pixels)\&.
 .PP
-Currently the transformed geotransform is computed based on the transformation of the top left, top right, and bottom left corners. A reduced overall error could be produced using a least squares fit of at least all four corner points.
+Currently the transformed geotransform is computed based on the transformation of the top left, top right, and bottom left corners\&. A reduced overall error could be produced using a least squares fit of at least all four corner points\&.
 .PP
 .IP "\fB\fB-s_srs\fP \fIsrs_defn\fP:\fP" 1c
 .PP
-Override the coordinate system of the file with the indicated coordinate system definition. Optional. If not provided the source coordinate system is read from the source file.
+Override the coordinate system of the file with the indicated coordinate system definition\&. Optional\&. If not provided the source coordinate system is read from the source file\&.
 .PP
 .IP "\fB\fB-t_srs\fP \fIsrs_defn\fP:\fP" 1c
 .PP
-Defines the target coordinate system. This coordinate system will be written to the file after an update.
+Defines the target coordinate system\&. This coordinate system will be written to the file after an update\&.
 .PP
 .IP "\fB\fB-et\fP \fImax_pixel_err\fP:\fP" 1c
 .PP
-The error threshold (in pixels) beyond which the file will not be updated. If not provided no update will be applied to the file, but errors will be reported.
+The error threshold (in pixels) beyond which the file will not be updated\&. If not provided no update will be applied to the file, but errors will be reported\&.
 .PP
 .IP "\fB\fItarget_file\fP\fP" 1c
-The file to be operated on. To update this must be a file format that supports in place updates of the geotransform and SRS.
+The file to be operated on\&. To update this must be a file format that supports in place updates of the geotransform and SRS\&.
 .PP
 .PP
 .SH "AUTHORS"
diff --git a/man/man1/gdalsrsinfo.1 b/man/man1/gdalsrsinfo.1
index 208d7c3..6ca154b 100644
--- a/man/man1/gdalsrsinfo.1
+++ b/man/man1/gdalsrsinfo.1
@@ -1,12 +1,9 @@
-.TH "gdalsrsinfo" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "gdalsrsinfo" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-gdalsrsinfo \- .TH "gdalsrsinfo" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-gdalsrsinfo \- lists info about a given SRS in number of formats (WKT, PROJ.4, etc.)
+gdalsrsinfo \- gdalsrsinfo 
+lists info about a given SRS in number of formats (WKT, PROJ\&.4, etc\&.)
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -34,7 +31,7 @@ The gdalsrsinfo utility reports information about a given SRS from one of the fo
 .IP "\(bu" 2
 The filename of a dataset supported by GDAL/OGR which contains SRS information
 .IP "\(bu" 2
-Any of the usual GDAL/OGR forms (complete WKT, PROJ.4, EPSG:n or a file containing the SRS)
+Any of the usual GDAL/OGR forms (complete WKT, PROJ\&.4, EPSG:n or a file containing the SRS)
 .PP
 .PP
 Output types:
@@ -46,7 +43,7 @@ Output types:
 .IP "\(bu" 2
 \fBwkt_all\fP   all wkt options available
 .IP "\(bu" 2
-\fBproj4\fP   PROJ.4 string
+\fBproj4\fP   PROJ\&.4 string
 .IP "\(bu" 2
 \fBwkt\fP   OGC WKT format (full)
 .IP "\(bu" 2
@@ -193,4 +190,4 @@ GEOGCS["SAD69",
 .PP
 .SH "AUTHORS"
 .PP
-Frank Warmerdam <warmerdam at pobox.com>, Etienne Tourigny <etourigny.dev-at-gmail-dot-com> 
+Frank Warmerdam <warmerdam at pobox.com>, Etienne Tourigny <etourigny\&.dev-at-gmail-dot-com> 
diff --git a/man/man1/gdaltindex.1 b/man/man1/gdaltindex.1
index 9c202db..511f96d 100644
--- a/man/man1/gdaltindex.1
+++ b/man/man1/gdaltindex.1
@@ -1,12 +1,9 @@
-.TH "gdaltindex" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "gdaltindex" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-gdaltindex \- .TH "gdaltindex" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-gdaltindex \- Builds a shapefile as a raster tileindex
+gdaltindex \- gdaltindex 
+Builds a shapefile as a raster tileindex
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -20,46 +17,46 @@ gdaltindex [-f format] [-tileindex field_name] [-write_absolute_path]
 .PP
 .SH "DESCRIPTION"
 .PP
-This program builds a shapefile with a record for each input raster file, an attribute containing the filename, and a polygon geometry outlining the raster. This output is suitable for use with \fCMapServer\fP as a raster tileindex.
+This program builds a shapefile with a record for each input raster file, an attribute containing the filename, and a polygon geometry outlining the raster\&. This output is suitable for use with \fCMapServer\fP as a raster tileindex\&.
 .PP
 .IP "\fB\fB-f\fP format:\fP" 1c
-(GDAL >= 1.11) 
+(GDAL >= 1\&.11) 
 .PP
-The OGR format of the output tile index file. Default is Esri Shapefile.  
+The OGR format of the output tile index file\&. Default is Esri Shapefile\&.  
 .IP "\fB\fB-tileindex\fP field_name: \fP" 1c
 .PP
-The output field name to hold the file path/location to the indexed rasters. The default tile index field name is \fClocation\fP.  
+The output field name to hold the file path/location to the indexed rasters\&. The default tile index field name is \fClocation\fP\&.  
 .IP "\fB\fB-write_absolute_path\fP: \fP" 1c
 .PP
-The absolute path to the raster files is stored in the tile index file. By default the raster filenames will be put in the file exactly as they are specified on the command line.  
+The absolute path to the raster files is stored in the tile index file\&. By default the raster filenames will be put in the file exactly as they are specified on the command line\&.  
 .IP "\fB\fB-skip_different_projection\fP: \fP" 1c
 .PP
-Only files with same projection as files already inserted in the tileindex will be inserted (unless \fC-t_srs\fP is specified). Default does not check projection and accepts all inputs.  
+Only files with same projection as files already inserted in the tileindex will be inserted (unless \fC-t_srs\fP is specified)\&. Default does not check projection and accepts all inputs\&.  
 .IP "\fB\fB-t_srs\fP target_srs: \fP" 1c
 .PP
-Geometries of input files will be transformed to the desired target coordinate reference system. Using this option generates files that are not compatible with MapServer < 6.4. Default creates simple rectangular polygons in the same coordinate reference system as the input rasters.  
+Geometries of input files will be transformed to the desired target coordinate reference system\&. Using this option generates files that are not compatible with MapServer < 6\&.4\&. Default creates simple rectangular polygons in the same coordinate reference system as the input rasters\&.  
 .IP "\fB\fB-src_srs_name\fP field_name:\fP" 1c
-(GDAL >= 1.11) 
+(GDAL >= 1\&.11) 
 .PP
-The name of the field to store the SRS of each tile. This field name can be used as the value of the TILESRS keyword in MapServer >= 6.4.  
+The name of the field to store the SRS of each tile\&. This field name can be used as the value of the TILESRS keyword in MapServer >= 6\&.4\&.  
 .IP "\fB\fB-src_srs_format\fP type:\fP" 1c
-(GDAL >= 1.11) 
+(GDAL >= 1\&.11) 
 .PP
-The format in which the SRS of each tile must be written. Types can be AUTO, WKT, EPSG, PROJ.  
+The format in which the SRS of each tile must be written\&. Types can be AUTO, WKT, EPSG, PROJ\&.  
 .IP "\fB\fB-lyr_name\fP name: \fP" 1c
 .PP
-Layer name to create/append to in the output tile index file.  
+Layer name to create/append to in the output tile index file\&.  
 .IP "\fB\fBindex_file\fP: \fP" 1c
 .PP
-The name of the output file to create/append to. The default shapefile will be created if it doesn't already exist, otherwise it will append to the existing file.  
+The name of the output file to create/append to\&. The default shapefile will be created if it doesn't already exist, otherwise it will append to the existing file\&.  
 .IP "\fB\fBgdal_file\fP: \fP" 1c
 .PP
-The input GDAL raster files, can be multiple files separated by spaces. Wildcards my also be used. Stores the file locations in the same style as specified here, unless \fC-write_absolute_path\fP option is also used.  
+The input GDAL raster files, can be multiple files separated by spaces\&. Wildcards my also be used\&. Stores the file locations in the same style as specified here, unless \fC-write_absolute_path\fP option is also used\&.  
 .PP
 .SH "EXAMPLES"
 .PP
 .PP
-Produce a shapefile (\fCdoq_index.shp\fP) with a record for every image that the utility found in the \fCdoq\fP folder. Each record holds information that points to the location of the image and also a bounding rectangle shape showing the bounds of the image:
+Produce a shapefile (\fCdoq_index\&.shp\fP) with a record for every image that the utility found in the \fCdoq\fP folder\&. Each record holds information that points to the location of the image and also a bounding rectangle shape showing the bounds of the image:
 .PP
 .PP
 .nf
diff --git a/man/man1/gdaltransform.1 b/man/man1/gdaltransform.1
index 1695105..b9c24e1 100644
--- a/man/man1/gdaltransform.1
+++ b/man/man1/gdaltransform.1
@@ -1,12 +1,9 @@
-.TH "gdaltransform" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "gdaltransform" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-gdaltransform \- .TH "gdaltransform" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-gdaltransform \- transforms coordinates
+gdaltransform \- gdaltransform 
+transforms coordinates
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -21,39 +18,39 @@ gdaltransform [--help-general]
 .PP
 .SH "DESCRIPTION"
 .PP
-The gdaltransform utility reprojects a list of coordinates into any supported projection,including GCP-based transformations.
+The gdaltransform utility reprojects a list of coordinates into any supported projection,including GCP-based transformations\&.
 .PP
 .IP "\fB\fB-s_srs\fP \fIsrs def\fP:\fP" 1c
-source spatial reference set. The coordinate systems that can be passed are anything supported by the OGRSpatialReference.SetFromUserInput() call, which includes EPSG PCS and GCSes (ie. EPSG:4296), PROJ.4 declarations (as above), or the name of a .prf file containing well known text. 
+source spatial reference set\&. The coordinate systems that can be passed are anything supported by the OGRSpatialReference\&.SetFromUserInput() call, which includes EPSG PCS and GCSes (ie\&. EPSG:4296), PROJ\&.4 declarations (as above), or the name of a \&.prf file containing well known text\&. 
 .IP "\fB\fB-t_srs\fP \fIsrs_def\fP:\fP" 1c
-target spatial reference set. The coordinate systems that can be passed are anything supported by the OGRSpatialReference.SetFromUserInput() call, which includes EPSG PCS and GCSes (ie. EPSG:4296), PROJ.4 declarations (as above), or the name of a .prf file containing well known text. 
+target spatial reference set\&. The coordinate systems that can be passed are anything supported by the OGRSpatialReference\&.SetFromUserInput() call, which includes EPSG PCS and GCSes (ie\&. EPSG:4296), PROJ\&.4 declarations (as above), or the name of a \&.prf file containing well known text\&. 
 .IP "\fB\fB-to\fP \fINAME=VALUE\fP:\fP" 1c
-set a transformer option suitable to pass to GDALCreateGenImgProjTransformer2().  
+set a transformer option suitable to pass to GDALCreateGenImgProjTransformer2()\&.  
 .IP "\fB\fB-order\fP \fIn\fP:\fP" 1c
-order of polynomial used for warping (1 to 3). The default is to select a polynomial order based on the number of GCPs. 
+order of polynomial used for warping (1 to 3)\&. The default is to select a polynomial order based on the number of GCPs\&. 
 .IP "\fB\fB-tps\fP:\fP" 1c
-Force use of thin plate spline transformer based on available GCPs. 
+Force use of thin plate spline transformer based on available GCPs\&. 
 .IP "\fB\fB-rpc\fP: \fP" 1c
-Force use of RPCs. 
+Force use of RPCs\&. 
 .IP "\fB\fB-geoloc\fP:\fP" 1c
-Force use of Geolocation Arrays. 
+Force use of Geolocation Arrays\&. 
 .IP "\fB\fB-i\fP\fP" 1c
-Inverse transformation: from destination to source. 
+Inverse transformation: from destination to source\&. 
 .IP "\fB\fB-gcp\fP\fIpixel line easting northing [elevation]\fP: \fP" 1c
 Provide a GCP to be used for transformation (generally three or more are required) 
 .IP "\fB\fB-output_xy\fP: \fP" 1c
-(GDAL >= 2.0) Restrict output to 'x y' instead of 'x y z' 
+(GDAL >= 2\&.0) Restrict output to 'x y' instead of 'x y z' 
 .IP "\fB\fIsrcfile\fP:\fP" 1c
-File with source projection definition or GCP's. If not given, source projection is read from the command-line -s_srs or -gcp parameters  
+File with source projection definition or GCP's\&. If not given, source projection is read from the command-line -s_srs or -gcp parameters  
 .IP "\fB\fIdstfile\fP:\fP" 1c
-File with destination projection definition.  
+File with destination projection definition\&.  
 .PP
 .PP
-Coordinates are read as pairs (or triples) of numbers per line from standard input, transformed, and written out to standard output in the same way. All transformations offered by gdalwarp are handled, including gcp-based ones.
+Coordinates are read as pairs (or triples) of numbers per line from standard input, transformed, and written out to standard output in the same way\&. All transformations offered by gdalwarp are handled, including gcp-based ones\&.
 .PP
-Note that input and output must always be in decimal form. There is currently no support for DMS input or output.
+Note that input and output must always be in decimal form\&. There is currently no support for DMS input or output\&.
 .PP
-If an input image file is provided, input is in pixel/line coordinates on that image. If an output file is provided, output is in pixel/line coordinates on that image.
+If an input image file is provided, input is in pixel/line coordinates on that image\&. If an output file is provided, output is in pixel/line coordinates on that image\&.
 .SH "Reprojection Example"
 .PP
 Simple reprojection from one projected coordinate system to another:
@@ -77,7 +74,7 @@ Produces the following output in meters in the 'Belge 1972 / Belgian Lambert
 .PP
 .SH "Reprojection Example"
 .PP
-The following command requests an RPC based transformation using the RPC model associated with the named file. Because the -i (inverse) flag is used, the transformation is from output georeferenced (WGS84) coordinates back to image coordinates.
+The following command requests an RPC based transformation using the RPC model associated with the named file\&. Because the -i (inverse) flag is used, the transformation is from output georeferenced (WGS84) coordinates back to image coordinates\&.
 .PP
 .PP
 .nf
diff --git a/man/man1/gdalwarp.1 b/man/man1/gdalwarp.1
index b66b7f9..a025722 100644
--- a/man/man1/gdalwarp.1
+++ b/man/man1/gdalwarp.1
@@ -1,12 +1,9 @@
-.TH "gdalwarp" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "gdalwarp" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-gdalwarp \- .TH "gdalwarp" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-gdalwarp \- image reprojection and warping utility
+gdalwarp \- gdalwarp 
+image reprojection and warping utility
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -31,120 +28,120 @@ gdalwarp [--help-general] [--formats]
 .PP
 .SH "DESCRIPTION"
 .PP
-The gdalwarp utility is an image mosaicing, reprojection and warping utility. The program can reproject to any supported projection, and can also apply GCPs stored with the image if the image is 'raw' with control information.
+The gdalwarp utility is an image mosaicing, reprojection and warping utility\&. The program can reproject to any supported projection, and can also apply GCPs stored with the image if the image is 'raw' with control information\&.
 .PP
 .IP "\fB\fB-s_srs\fP \fIsrs def\fP:\fP" 1c
-source spatial reference set. The coordinate systems that can be passed are anything supported by the OGRSpatialReference.SetFromUserInput() call, which includes EPSG PCS and GCSes (ie. EPSG:4296), PROJ.4 declarations (as above), or the name of a .prf file containing well known text. 
+source spatial reference set\&. The coordinate systems that can be passed are anything supported by the OGRSpatialReference\&.SetFromUserInput() call, which includes EPSG PCS and GCSes (ie\&. EPSG:4296), PROJ\&.4 declarations (as above), or the name of a \&.prf file containing well known text\&. 
 .IP "\fB\fB-t_srs\fP \fIsrs_def\fP:\fP" 1c
-target spatial reference set. The coordinate systems that can be passed are anything supported by the OGRSpatialReference.SetFromUserInput() call, which includes EPSG PCS and GCSes (ie. EPSG:4296), PROJ.4 declarations (as above), or the name of a .prf file containing well known text. 
+target spatial reference set\&. The coordinate systems that can be passed are anything supported by the OGRSpatialReference\&.SetFromUserInput() call, which includes EPSG PCS and GCSes (ie\&. EPSG:4296), PROJ\&.4 declarations (as above), or the name of a \&.prf file containing well known text\&. 
 .IP "\fB\fB-to\fP \fINAME=VALUE\fP:\fP" 1c
-set a transformer option suitable to pass to GDALCreateGenImgProjTransformer2().  
+set a transformer option suitable to pass to GDALCreateGenImgProjTransformer2()\&.  
 .IP "\fB\fB-order\fP \fIn\fP:\fP" 1c
-order of polynomial used for warping (1 to 3). The default is to select a polynomial order based on the number of GCPs. 
+order of polynomial used for warping (1 to 3)\&. The default is to select a polynomial order based on the number of GCPs\&. 
 .IP "\fB\fB-tps\fP:\fP" 1c
-Force use of thin plate spline transformer based on available GCPs. 
+Force use of thin plate spline transformer based on available GCPs\&. 
 .IP "\fB\fB-rpc\fP: \fP" 1c
-Force use of RPCs. 
+Force use of RPCs\&. 
 .IP "\fB\fB-geoloc\fP:\fP" 1c
-Force use of Geolocation Arrays. 
+Force use of Geolocation Arrays\&. 
 .IP "\fB\fB-et\fP \fIerr_threshold\fP:\fP" 1c
-error threshold for transformation approximation (in pixel units - defaults to 0.125). 
+error threshold for transformation approximation (in pixel units - defaults to 0\&.125)\&. 
 .IP "\fB\fB-refine_gcps\fP \fItolerance minimum_gcps\fP:\fP" 1c
-(GDAL >= 1.9.0) refines the GCPs by automatically eliminating outliers. Outliers will be eliminated until minimum_gcps are left or when no outliers can be detected. The tolerance is passed to adjust when a GCP will be eliminated. Not that GCP refinement only works with polynomial interpolation. The tolerance is in pixel units if no projection is available, otherwise it is in SRS units. If minimum_gcps is not provided, the minimum GCPs according to the polynomial model is used. 
+(GDAL >= 1\&.9\&.0) refines the GCPs by automatically eliminating outliers\&. Outliers will be eliminated until minimum_gcps are left or when no outliers can be detected\&. The tolerance is passed to adjust when a GCP will be eliminated\&. Not that GCP refinement only works with polynomial interpolation\&. The tolerance is in pixel units if no projection is available, otherwise it is in SRS units\&. If minimum_gcps is not provided, the minimum GCPs according to the polynomial model is used\&. 
 .IP "\fB\fB-te\fP \fIxmin ymin xmax ymax\fP:\fP" 1c
 set georeferenced extents of output file to be created (in target SRS by default, or in the SRS specified with -te_srs)  
 .IP "\fB\fB-te_srs\fP \fIsrs_def\fP:\fP" 1c
-(GDAL >= 2.0) Specifies the SRS in which to interpret the coordinates given with -te. The \fIsrs_def\fP may be any of the usual GDAL/OGR forms, complete WKT, PROJ.4, EPSG:n or a file containing the WKT. This must not be confused with -t_srs which is the target SRS of the output dataset. -te_srs is a conveniency e.g. when knowing the output coordinates in a geodetic long/lat SRS, but still wanting a result in a projected coordinate system.  
+(GDAL >= 2\&.0) Specifies the SRS in which to interpret the coordinates given with -te\&. The \fIsrs_def\fP may be any of the usual GDAL/OGR forms, complete WKT, PROJ\&.4, EPSG:n or a file containing the WKT\&. This must not be confused with -t_srs which is the target SRS of the output dataset\&. -te_srs is a conveniency e\&.g\&. when knowing the output coordinates in a geodetic long/lat SRS, but still wanting a result in a projected coordinate system\&.  
 .IP "\fB\fB-tr\fP \fIxres yres\fP:\fP" 1c
 set output file resolution (in target georeferenced units) 
 .IP "\fB\fB-tap\fP:\fP" 1c
-(GDAL >= 1.8.0) (target aligned pixels) align the coordinates of the extent of the output file to the values of the -tr, such that the aligned extent includes the minimum extent. 
+(GDAL >= 1\&.8\&.0) (target aligned pixels) align the coordinates of the extent of the output file to the values of the -tr, such that the aligned extent includes the minimum extent\&. 
 .IP "\fB\fB-ts\fP \fIwidth height\fP:\fP" 1c
-set output file size in pixels and lines. If width or height is set to 0, the other dimension will be guessed from the computed resolution. Note that -ts cannot be used with -tr 
+set output file size in pixels and lines\&. If width or height is set to 0, the other dimension will be guessed from the computed resolution\&. Note that -ts cannot be used with -tr 
 .IP "\fB\fB-ovr\fP \fIlevel|AUTO|AUTO-n|NONE>\fP:\fP" 1c
-(GDAL >= 2.0) To specify which overview level of source files must be used. The default choice, AUTO, will select the overview level whose resolution is the closest to the target resolution. Specify an integer value (0-based, i.e. 0=1st overview level) to select a particular level. Specify AUTO-n where n is an integer greater or equal to 1, to select an overview level below the AUTO one. Or specify NONE to force the base resolution to be used. 
+(GDAL >= 2\&.0) To specify which overview level of source files must be used\&. The default choice, AUTO, will select the overview level whose resolution is the closest to the target resolution\&. Specify an integer value (0-based, i\&.e\&. 0=1st overview level) to select a particular level\&. Specify AUTO-n where n is an integer greater or equal to 1, to select an overview level below the AUTO one\&. Or specify NONE to force the base resolution to be used\&. 
 .IP "\fB\fB-wo\fP \fI'NAME=VALUE'\fP:\fP" 1c
-Set a warp option. The GDALWarpOptions::papszWarpOptions docs show all options. Multiple \fB-wo\fP options may be listed. 
+Set a warp option\&. The GDALWarpOptions::papszWarpOptions docs show all options\&. Multiple \fB-wo\fP options may be listed\&. 
 .IP "\fB\fB-ot\fP \fItype\fP:\fP" 1c
-For the output bands to be of the indicated data type. 
+For the output bands to be of the indicated data type\&. 
 .IP "\fB\fB-wt\fP \fItype\fP:\fP" 1c
-Working pixel data type. The data type of pixels in the source image and destination image buffers. 
+Working pixel data type\&. The data type of pixels in the source image and destination image buffers\&. 
 .IP "\fB\fB-r\fP \fIresampling_method\fP:\fP" 1c
-Resampling method to use. Available methods are: 
+Resampling method to use\&. Available methods are: 
 .IP "\fB\fBnear\fP: \fP" 1c
-nearest neighbour resampling (default, fastest algorithm, worst interpolation quality). 
+nearest neighbour resampling (default, fastest algorithm, worst interpolation quality)\&. 
 .IP "\fB\fBbilinear\fP: \fP" 1c
-bilinear resampling. 
+bilinear resampling\&. 
 .IP "\fB\fBcubic\fP: \fP" 1c
-cubic resampling. 
+cubic resampling\&. 
 .IP "\fB\fBcubicspline\fP: \fP" 1c
-cubic spline resampling. 
+cubic spline resampling\&. 
 .IP "\fB\fBlanczos\fP: \fP" 1c
-Lanczos windowed sinc resampling. 
+Lanczos windowed sinc resampling\&. 
 .IP "\fB\fBaverage\fP: \fP" 1c
-average resampling, computes the average of all non-NODATA contributing pixels. (GDAL >= 1.10.0) 
+average resampling, computes the average of all non-NODATA contributing pixels\&. (GDAL >= 1\&.10\&.0) 
 .IP "\fB\fBmode\fP: \fP" 1c
-mode resampling, selects the value which appears most often of all the sampled points. (GDAL >= 1.10.0) 
+mode resampling, selects the value which appears most often of all the sampled points\&. (GDAL >= 1\&.10\&.0) 
 .IP "\fB\fBmax\fP: \fP" 1c
-maximum resampling, selects the maximum value from all non-NODATA contributing pixels. (GDAL >= 2.0.0) 
+maximum resampling, selects the maximum value from all non-NODATA contributing pixels\&. (GDAL >= 2\&.0\&.0) 
 .IP "\fB\fBmin\fP: \fP" 1c
-minimum resampling, selects the minimum value from all non-NODATA contributing pixels. (GDAL >= 2.0.0) 
+minimum resampling, selects the minimum value from all non-NODATA contributing pixels\&. (GDAL >= 2\&.0\&.0) 
 .IP "\fB\fBmed\fP: \fP" 1c
-median resampling, selects the median value of all non-NODATA contributing pixels. (GDAL >= 2.0.0) 
+median resampling, selects the median value of all non-NODATA contributing pixels\&. (GDAL >= 2\&.0\&.0) 
 .IP "\fB\fBq1\fP: \fP" 1c
-first quartile resampling, selects the first quartile value of all non-NODATA contributing pixels. (GDAL >= 2.0.0) 
+first quartile resampling, selects the first quartile value of all non-NODATA contributing pixels\&. (GDAL >= 2\&.0\&.0) 
 .IP "\fB\fBq3\fP: \fP" 1c
-third quartile resampling, selects the third quartile value of all non-NODATA contributing pixels. (GDAL >= 2.0.0) 
+third quartile resampling, selects the third quartile value of all non-NODATA contributing pixels\&. (GDAL >= 2\&.0\&.0) 
 .PP
-.IP "\fB\fB-srcnodata\fP \fIvalue [value...]\fP:\fP" 1c
-Set nodata masking values for input bands (different values can be supplied for each band). If more than one value is supplied all values should be quoted to keep them together as a single operating system argument. Masked values will not be used in interpolation. Use a value of \fCNone\fP to ignore intrinsic nodata settings on the source dataset. 
-.IP "\fB\fB-dstnodata\fP \fIvalue [value...]\fP:\fP" 1c
-Set nodata values for output bands (different values can be supplied for each band). If more than one value is supplied all values should be quoted to keep them together as a single operating system argument. New files will be initialized to this value and if possible the nodata value will be recorded in the output file. Use a value of \fCNone\fP to ensure that nodata is not defined (GDAL>=1.11). If this argument is not used then nodata values will be copied from the source dataset (GDAL [...]
+.IP "\fB\fB-srcnodata\fP \fIvalue [value\&.\&.\&.]\fP:\fP" 1c
+Set nodata masking values for input bands (different values can be supplied for each band)\&. If more than one value is supplied all values should be quoted to keep them together as a single operating system argument\&. Masked values will not be used in interpolation\&. Use a value of \fCNone\fP to ignore intrinsic nodata settings on the source dataset\&. 
+.IP "\fB\fB-dstnodata\fP \fIvalue [value\&.\&.\&.]\fP:\fP" 1c
+Set nodata values for output bands (different values can be supplied for each band)\&. If more than one value is supplied all values should be quoted to keep them together as a single operating system argument\&. New files will be initialized to this value and if possible the nodata value will be recorded in the output file\&. Use a value of \fCNone\fP to ensure that nodata is not defined (GDAL>=1\&.11)\&. If this argument is not used then nodata values will be copied from the source dat [...]
 .IP "\fB\fB-dstalpha\fP:\fP" 1c
-Create an output alpha band to identify nodata (unset/transparent) pixels.  
+Create an output alpha band to identify nodata (unset/transparent) pixels\&.  
 .IP "\fB\fB-wm\fP \fImemory_in_mb\fP:\fP" 1c
-Set the amount of memory (in megabytes) that the warp API is allowed to use for caching. 
+Set the amount of memory (in megabytes) that the warp API is allowed to use for caching\&. 
 .IP "\fB\fB-multi\fP:\fP" 1c
-Use multithreaded warping implementation. Multiple threads will be used to process chunks of image and perform input/output operation simultaneously. 
+Use multithreaded warping implementation\&. Multiple threads will be used to process chunks of image and perform input/output operation simultaneously\&. 
 .IP "\fB\fB-q\fP:\fP" 1c
-Be quiet. 
+Be quiet\&. 
 .IP "\fB\fB-of\fP \fIformat\fP:\fP" 1c
-Select the output format. The default is GeoTIFF (GTiff). Use the short format name.  
+Select the output format\&. The default is GeoTIFF (GTiff)\&. Use the short format name\&.  
 .IP "\fB\fB-co\fP \fI'NAME=VALUE'\fP:\fP" 1c
-passes a creation option to the output format driver. Multiple \fB-co\fP options may be listed. See format specific documentation for legal creation options for each format. 
+passes a creation option to the output format driver\&. Multiple \fB-co\fP options may be listed\&. See format specific documentation for legal creation options for each format\&. 
 .PP
 .IP "\fB\fB-cutline\fP \fIdatasource\fP:\fP" 1c
-Enable use of a blend cutline from the name OGR support datasource. 
+Enable use of a blend cutline from the name OGR support datasource\&. 
 .IP "\fB\fB-cl\fP \fIlayername\fP:\fP" 1c
-Select the named layer from the cutline datasource. 
+Select the named layer from the cutline datasource\&. 
 .IP "\fB\fB-cwhere\fP \fIexpression\fP:\fP" 1c
-Restrict desired cutline features based on attribute query. 
+Restrict desired cutline features based on attribute query\&. 
 .IP "\fB\fB-csql\fP \fIquery\fP:\fP" 1c
-Select cutline features using an SQL query instead of from a layer with -cl. 
+Select cutline features using an SQL query instead of from a layer with -cl\&. 
 .IP "\fB\fB-cblend\fP \fIdistance\fP:\fP" 1c
-Set a blend distance to use to blend over cutlines (in pixels). 
+Set a blend distance to use to blend over cutlines (in pixels)\&. 
 .IP "\fB\fB-crop_to_cutline\fP:\fP" 1c
-(GDAL >= 1.8.0) Crop the extent of the target dataset to the extent of the cutline. 
+(GDAL >= 1\&.8\&.0) Crop the extent of the target dataset to the extent of the cutline\&. 
 .IP "\fB\fB-overwrite\fP:\fP" 1c
-(GDAL >= 1.8.0) Overwrite the target dataset if it already exists. 
+(GDAL >= 1\&.8\&.0) Overwrite the target dataset if it already exists\&. 
 .IP "\fB\fB-nomd\fP:\fP" 1c
-(GDAL >= 1.10.0) Do not copy metadata. Without this option, dataset and band metadata (as well as some band information) will be copied from the first source dataset. Items that differ between source datasets will be set to * (see -cvmd option). 
+(GDAL >= 1\&.10\&.0) Do not copy metadata\&. Without this option, dataset and band metadata (as well as some band information) will be copied from the first source dataset\&. Items that differ between source datasets will be set to * (see -cvmd option)\&. 
 .IP "\fB\fB-cvmd\fP \fImeta_conflict_value\fP:\fP" 1c
-(GDAL >= 1.10.0) Value to set metadata items that conflict between source datasets (default is '*'). Use '' to remove conflicting items.  
+(GDAL >= 1\&.10\&.0) Value to set metadata items that conflict between source datasets (default is '*')\&. Use '' to remove conflicting items\&.  
 .IP "\fB\fB-setci\fP:\fP" 1c
-(GDAL >= 1.10.0) Set the color interpretation of the bands of the target dataset from the source dataset. 
+(GDAL >= 1\&.10\&.0) Set the color interpretation of the bands of the target dataset from the source dataset\&. 
 .IP "\fB\fB-oo\fP \fINAME=VALUE\fP:\fP" 1c
-(starting with GDAL 2.0) Dataset open option (format specific)
+(starting with GDAL 2\&.0) Dataset open option (format specific)
 .PP
 .IP "\fB\fIsrcfile\fP:\fP" 1c
-The source file name(s).  
+The source file name(s)\&.  
 .IP "\fB\fIdstfile\fP:\fP" 1c
-The destination file name.  
+The destination file name\&.  
 .PP
 .PP
-Mosaicing into an existing output file is supported if the output file already exists. The spatial extent of the existing file will not be modified to accommodate new data, so you may have to remove it in that case, or use the -overwrite option.
+Mosaicing into an existing output file is supported if the output file already exists\&. The spatial extent of the existing file will not be modified to accommodate new data, so you may have to remove it in that case, or use the -overwrite option\&.
 .PP
-Polygon cutlines may be used as a mask to restrict the area of the destination file that may be updated, including blending. If the OGR layer containing the cutline features has no explicit SRS, the cutline features must be in the SRS of the destination file. When outputing to a not yet existing target dataset, its extent will be the one of the original raster unless -te or -crop_to_cutline are specified.
+Polygon cutlines may be used as a mask to restrict the area of the destination file that may be updated, including blending\&. If the OGR layer containing the cutline features has no explicit SRS, the cutline features must be in the SRS of the destination file\&. When outputing to a not yet existing target dataset, its extent will be the one of the original raster unless -te or -crop_to_cutline are specified\&.
 .SH "EXAMPLE"
 .PP
 For instance, an eight bit spot scene stored in GeoTIFF with control points mapping the corners to lat/long could be warped to a UTM projection with a command like this:
diff --git a/man/man1/nearblack.1 b/man/man1/nearblack.1
index 470b01d..5973c5d 100644
--- a/man/man1/nearblack.1
+++ b/man/man1/nearblack.1
@@ -1,12 +1,9 @@
-.TH "nearblack" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "nearblack" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-nearblack \- .TH "nearblack" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-nearblack \- convert nearly black/white borders to black
+nearblack \- nearblack 
+convert nearly black/white borders to black
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -18,37 +15,37 @@ nearblack [-of format] [-white | [-color c1,c2,c3...cn]*] [-near dist] [-nb non_
 .PP
 .SH "DESCRIPTION"
 .PP
-This utility will scan an image and try to set all pixels that are nearly or exactly black, white or one or more custom colors around the collar to black or white. This is often used to 'fix up' lossy compressed airphotos so that color pixels can be treated as transparent when mosaicking.
+This utility will scan an image and try to set all pixels that are nearly or exactly black, white or one or more custom colors around the collar to black or white\&. This is often used to 'fix up' lossy compressed airphotos so that color pixels can be treated as transparent when mosaicking\&.
 .PP
 .IP "\fB\fB-o\fP \fIoutfile\fP:\fP" 1c
-The name of the output file to be created. Newly created files are created with the HFA driver by default (Erdas Imagine - .img) 
+The name of the output file to be created\&. Newly created files are created with the HFA driver by default (Erdas Imagine - \&.img) 
 .IP "\fB\fB-of\fP \fIformat\fP:\fP" 1c
-(GDAL 1.8.0 or later) Select the output format. Use the short format name (GTiff for GeoTIFF for examle). 
+(GDAL 1\&.8\&.0 or later) Select the output format\&. Use the short format name (GTiff for GeoTIFF for examle)\&. 
 .IP "\fB\fB-co\fP \fI'NAME=VALUE'\fP:\fP" 1c
-(GDAL 1.8.0 or later) Passes a creation option to the output format driver. Multiple \fB-co\fP options may be listed. See format specific documentation for legal creation options for each format. Only valid when creating a new file 
+(GDAL 1\&.8\&.0 or later) Passes a creation option to the output format driver\&. Multiple \fB-co\fP options may be listed\&. See format specific documentation for legal creation options for each format\&. Only valid when creating a new file 
 .IP "\fB\fB-white\fP:\fP" 1c
-Search for nearly white (255) pixels instead of nearly black pixels.  
-.IP "\fB\fB-color\fP \fIc1,c2,c3...cn\fP:\fP" 1c
-(GDAL >= 1.9.0) Search for pixels near the specified color. May be specified multiple times. When -color is specified, the pixels that are considered as the collar are set to 0.  
+Search for nearly white (255) pixels instead of nearly black pixels\&.  
+.IP "\fB\fB-color\fP \fIc1,c2,c3\&.\&.\&.cn\fP:\fP" 1c
+(GDAL >= 1\&.9\&.0) Search for pixels near the specified color\&. May be specified multiple times\&. When -color is specified, the pixels that are considered as the collar are set to 0\&.  
 .IP "\fB\fB-near\fP \fIdist\fP:\fP" 1c
-Select how far from black, white or custom colors the pixel values can be and still considered near black, white or custom color. Defaults to 15.  
+Select how far from black, white or custom colors the pixel values can be and still considered near black, white or custom color\&. Defaults to 15\&.  
 .IP "\fB\fB-nb\fP \fInon_black_pixels\fP:\fP" 1c
-number of non-black pixels that can be encountered before the giving up search inwards. Defaults to 2.  
+number of non-black pixels that can be encountered before the giving up search inwards\&. Defaults to 2\&.  
 .IP "\fB\fB-setalpha\fP:\fP" 1c
-(GDAL 1.8.0 or later) Adds an alpha band if the output file is specified and the input file has 3 bands, or sets the alpha band of the output file if it is specified and the input file has 4 bands, or sets the alpha band of the input file if it has 4 bands and no output file is specified. The alpha band is set to 0 in the image collar and to 255 elsewhere.  
+(GDAL 1\&.8\&.0 or later) Adds an alpha band if the output file is specified and the input file has 3 bands, or sets the alpha band of the output file if it is specified and the input file has 4 bands, or sets the alpha band of the input file if it has 4 bands and no output file is specified\&. The alpha band is set to 0 in the image collar and to 255 elsewhere\&.  
 .IP "\fB\fB-setmask\fP:\fP" 1c
-(GDAL 1.8.0 or later) Adds a mask band to the output file, or adds a mask band to the input file if it does not already have one and no output file is specified. The mask band is set to 0 in the image collar and to 255 elsewhere.  
+(GDAL 1\&.8\&.0 or later) Adds a mask band to the output file, or adds a mask band to the input file if it does not already have one and no output file is specified\&. The mask band is set to 0 in the image collar and to 255 elsewhere\&.  
 .IP "\fB\fB-q\fP:\fP" 1c
-(GDAL 1.8.0 or later) Suppress progress monitor and other non-error output. 
+(GDAL 1\&.8\&.0 or later) Suppress progress monitor and other non-error output\&. 
 .IP "\fB\fIinfile\fP:\fP" 1c
-The input file. Any GDAL supported format, any number of bands, normally 8bit Byte bands.  
+The input file\&. Any GDAL supported format, any number of bands, normally 8bit Byte bands\&.  
 .PP
 .PP
-The algorithm processes the image one scanline at a time. A scan 'in' is done from either end setting pixels to black or white until at least 'non_black_pixels' pixels that are more than 'dist' gray levels away from black, white or custom colors have been encountered at which point the scan stops. The nearly black, white or custom color pixels are set to black or white. The algorithm also scans from top to bottom and from bottom to top to identify indentations in the top or bottom.
+The algorithm processes the image one scanline at a time\&. A scan 'in' is done from either end setting pixels to black or white until at least 'non_black_pixels' pixels that are more than 'dist' gray levels away from black, white or custom colors have been encountered at which point the scan stops\&. The nearly black, white or custom color pixels are set to black or white\&. The algorithm also scans from top to bottom and from bottom to top to identify indentations in the top or bottom\&.
 .PP
-The processing is all done in 8bit (Bytes).
+The processing is all done in 8bit (Bytes)\&.
 .PP
-If the output file is omitted, the processed results will be written back to the input file - which must support update.
+If the output file is omitted, the processed results will be written back to the input file - which must support update\&.
 .SH "AUTHORS"
 .PP
 Frank Warmerdam <warmerdam at pobox.com> 
diff --git a/man/man1/ogr2ogr.1 b/man/man1/ogr2ogr.1
index 44741c4..bbc9d1d 100644
--- a/man/man1/ogr2ogr.1
+++ b/man/man1/ogr2ogr.1
@@ -1,12 +1,9 @@
-.TH "ogr2ogr" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "ogr2ogr" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-ogr2ogr \- .TH "ogr2ogr" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-ogr2ogr \- converts simple features data between file formats
+ogr2ogr \- ogr2ogr 
+converts simple features data between file formats
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -50,7 +47,7 @@ Advanced options :
 .PP
 .SH "DESCRIPTION"
 .PP
-This program can be used to convert simple features data between file formats performing various operations during the process such as spatial or attribute selections, reducing the set of attributes, setting the output coordinate system or even reprojecting the features during translation.
+This program can be used to convert simple features data between file formats performing various operations during the process such as spatial or attribute selections, reducing the set of attributes, setting the output coordinate system or even reprojecting the features during translation\&.
 .PP
 .IP "\fB\fB -f\fP\fI format_name\fP:\fP" 1c
 output file format name (default is ESRI Shapefile), some possible values are: 
@@ -73,23 +70,23 @@ Delete the output layer and recreate it empty
 .IP "\fB\fB-update\fP:\fP" 1c
 Open existing output datasource in update mode rather than trying to create a new one 
 .IP "\fB\fB-select\fP\fI field_list\fP:\fP" 1c
-Comma-delimited list of fields from input layer to copy to the new layer. A field is skipped if mentioned previously in the list even if the input layer has duplicate field names. (Defaults to all; any field is skipped if a subsequent field with same name is found.) Starting with OGR 1.11, geometry fields can also be specified in the list. 
+Comma-delimited list of fields from input layer to copy to the new layer\&. A field is skipped if mentioned previously in the list even if the input layer has duplicate field names\&. (Defaults to all; any field is skipped if a subsequent field with same name is found\&.) Starting with OGR 1\&.11, geometry fields can also be specified in the list\&. 
 .IP "\fB\fB-progress\fP:\fP" 1c
-(starting with GDAL 1.7.0) Display progress on terminal. Only works if input layers have the 'fast feature count' capability. 
+(starting with GDAL 1\&.7\&.0) Display progress on terminal\&. Only works if input layers have the 'fast feature count' capability\&. 
 .IP "\fB\fB-sql\fP \fIsql_statement\fP:\fP" 1c
-SQL statement to execute. The resulting table/layer will be saved to the output. 
+SQL statement to execute\&. The resulting table/layer will be saved to the output\&. 
 .IP "\fB\fB-dialect\fP \fIdialect\fP:\fP" 1c
-SQL dialect. In some cases can be used to use (unoptimized) OGR SQL instead of the native SQL of an RDBMS by passing OGRSQL. Starting with GDAL 1.10, the 'SQLITE' dialect can also be used with any datasource. 
+SQL dialect\&. In some cases can be used to use (unoptimized) OGR SQL instead of the native SQL of an RDBMS by passing OGRSQL\&. Starting with GDAL 1\&.10, the 'SQLITE' dialect can also be used with any datasource\&. 
 .IP "\fB\fB-where\fP\fI restricted_where\fP:\fP" 1c
 Attribute query (like SQL WHERE) 
 .IP "\fB\fB-skipfailures\fP:\fP" 1c
-Continue after a failure, skipping the failed feature. 
+Continue after a failure, skipping the failed feature\&. 
 .IP "\fB\fB-spat\fP\fI xmin ymin xmax ymax\fP:\fP" 1c
-spatial query extents, in the SRS of the source layer(s) (or the one specified with -spat_srs). Only features whose geometry intersects the extents will be selected. The geometries will not be clipped unless -clipsrc is specified 
+spatial query extents, in the SRS of the source layer(s) (or the one specified with -spat_srs)\&. Only features whose geometry intersects the extents will be selected\&. The geometries will not be clipped unless -clipsrc is specified 
 .IP "\fB\fB-spat_srs\fP\fI srs_def\fP:\fP" 1c
-(OGR >= 2.0) Override spatial filter SRS. 
+(OGR >= 2\&.0) Override spatial filter SRS\&. 
 .IP "\fB\fB-geomfield\fP \fIfield\fP:\fP" 1c
-(OGR >= 1.11) Name of the geometry field on which the spatial filter operates on. 
+(OGR >= 1\&.11) Name of the geometry field on which the spatial filter operates on\&. 
 .IP "\fB\fB-dsco\fP \fINAME=VALUE\fP:\fP" 1c
 Dataset creation option (format specific) 
 .IP "\fB\fB-lco\fP\fI NAME=VALUE\fP:\fP" 1c
@@ -97,9 +94,9 @@ Layer creation option (format specific)
 .IP "\fB\fB-nln\fP\fI name\fP:\fP" 1c
 Assign an alternate name to the new layer 
 .IP "\fB\fB-nlt\fP\fI type\fP:\fP" 1c
-Define the geometry type for the created layer. One of NONE, GEOMETRY, POINT, LINESTRING, POLYGON, GEOMETRYCOLLECTION, MULTIPOINT, MULTIPOLYGON or MULTILINESTRING. And CIRCULARSTRING, COMPOUNDCURVE, CURVEPOLYGON, MULTICURVE and MULTISURFACE for GDAL 2.0 non-linear geometry types. Add '25D' to the name to get 2.5D versions. Starting with GDAL 1.10, PROMOTE_TO_MULTI can be used to automatically promote layers that mix polygon or multipolygons to multipolygons, and layers that mix linestrin [...]
+Define the geometry type for the created layer\&. One of NONE, GEOMETRY, POINT, LINESTRING, POLYGON, GEOMETRYCOLLECTION, MULTIPOINT, MULTIPOLYGON or MULTILINESTRING\&. And CIRCULARSTRING, COMPOUNDCURVE, CURVEPOLYGON, MULTICURVE and MULTISURFACE for GDAL 2\&.0 non-linear geometry types\&. Add '25D' to the name to get 2\&.5D versions\&. Starting with GDAL 1\&.10, PROMOTE_TO_MULTI can be used to automatically promote layers that mix polygon or multipolygons to multipolygons, and layers that [...]
 .IP "\fB\fB-dim\fP\fI val\fP:\fP" 1c
-(starting with GDAL 1.10) Force the coordinate dimension to val (valid values are 2 or 3). This affects both the layer geometry type, and feature geometries. Starting with GDAL 1.11, the value can be set to 'layer_dim' to instruct feature geometries to be promoted to the coordinate dimension declared by the layer.  
+(starting with GDAL 1\&.10) Force the coordinate dimension to val (valid values are 2 or 3)\&. This affects both the layer geometry type, and feature geometries\&. Starting with GDAL 1\&.11, the value can be set to 'layer_dim' to instruct feature geometries to be promoted to the coordinate dimension declared by the layer\&.  
 .IP "\fB\fB-a_srs\fP\fI srs_def\fP:\fP" 1c
 Assign an output SRS 
 .IP "\fB\fB-t_srs\fP\fI srs_def\fP:\fP" 1c
@@ -107,92 +104,92 @@ Reproject/transform to this SRS on output
 .IP "\fB\fB-s_srs\fP\fI srs_def\fP:\fP" 1c
 Override source SRS 
 .IP "\fB\fB-preserve_fid\fP:\fP" 1c
-Use the FID of the source features instead of letting the output driver to automatically assign a new one. Note: starting with GDAL 2.0, if not in append mode, this behaviour becomes the default if the output driver has a FID layer creation option. In which case the name of the source FID column will be used and source feature IDs will be attempted to be preserved. This behaviour can be disabled by setting -unsetFid 
+Use the FID of the source features instead of letting the output driver to automatically assign a new one\&. Note: starting with GDAL 2\&.0, if not in append mode, this behaviour becomes the default if the output driver has a FID layer creation option\&. In which case the name of the source FID column will be used and source feature IDs will be attempted to be preserved\&. This behaviour can be disabled by setting -unsetFid 
 .IP "\fB\fB-fid\fP \fIfid\fP:\fP" 1c
-If provided, only the feature with this feature id will be reported. Operates exclusive of the spatial or attribute queries. Note: if you want to select several features based on their feature id, you can also use the fact the 'fid' is a special field recognized by OGR SQL. So, '-where 'fid in (1,3,5)'' would select features 1, 3 and 5. 
+If provided, only the feature with this feature id will be reported\&. Operates exclusive of the spatial or attribute queries\&. Note: if you want to select several features based on their feature id, you can also use the fact the 'fid' is a special field recognized by OGR SQL\&. So, '-where 'fid in (1,3,5)'' would select features 1, 3 and 5\&. 
 .PP
 .PP
-Srs_def can be a full WKT definition (hard to escape properly), or a well known definition (ie. EPSG:4326) or a file with a WKT definition.
+Srs_def can be a full WKT definition (hard to escape properly), or a well known definition (ie\&. EPSG:4326) or a file with a WKT definition\&.
 .PP
 Advanced options :
 .PP
 .IP "\fB\fB-oo\fP \fINAME=VALUE\fP:\fP" 1c
-(starting with GDAL 2.0) Input dataset open option (format specific) 
+(starting with GDAL 2\&.0) Input dataset open option (format specific) 
 .IP "\fB\fB-doo\fP \fINAME=VALUE\fP:\fP" 1c
-(starting with GDAL 2.0) Destination dataset open option (format specific), only valid in -update mode 
+(starting with GDAL 2\&.0) Destination dataset open option (format specific), only valid in -update mode 
 .IP "\fB\fB-gt\fP \fIn\fP:\fP" 1c
-group \fIn\fP features per transaction (default 20000 in OGR 1.11, 200 in previous releases). Increase the value for better performance when writing into DBMS drivers that have transaction support. Starting with GDAL 2.0, n can be set to unlimited to load the data into a single transaction. 
+group \fIn\fP features per transaction (default 20000 in OGR 1\&.11, 200 in previous releases)\&. Increase the value for better performance when writing into DBMS drivers that have transaction support\&. Starting with GDAL 2\&.0, n can be set to unlimited to load the data into a single transaction\&. 
 .IP "\fB\fB-ds_transaction\fP:\fP" 1c
-(starting with GDAL 2.0) Force the use of a dataset level transaction (for drivers that support such mechanism), especially for drivers such as FileGDB that only support dataset level transaction in emulation mode. 
+(starting with GDAL 2\&.0) Force the use of a dataset level transaction (for drivers that support such mechanism), especially for drivers such as FileGDB that only support dataset level transaction in emulation mode\&. 
 .IP "\fB\fB-clipsrc\fP\fI [xmin ymin xmax ymax]|WKT|datasource|spat_extent\fP: \fP" 1c
-(starting with GDAL 1.7.0) clip geometries to the specified bounding box (expressed in source SRS), WKT geometry (POLYGON or MULTIPOLYGON), from a datasource or to the spatial extent of the \fB-spat\fP option if you use the \fIspat_extent\fP keyword. When specifying a datasource, you will generally want to use it in combination of the \fB-clipsrclayer\fP, \fB-clipsrcwhere\fP or \fB-clipsrcsql\fP options 
+(starting with GDAL 1\&.7\&.0) clip geometries to the specified bounding box (expressed in source SRS), WKT geometry (POLYGON or MULTIPOLYGON), from a datasource or to the spatial extent of the \fB-spat\fP option if you use the \fIspat_extent\fP keyword\&. When specifying a datasource, you will generally want to use it in combination of the \fB-clipsrclayer\fP, \fB-clipsrcwhere\fP or \fB-clipsrcsql\fP options 
 .IP "\fB\fB-clipsrcsql\fP \fIsql_statement\fP:\fP" 1c
-Select desired geometries using an SQL query instead. 
+Select desired geometries using an SQL query instead\&. 
 .IP "\fB\fB-clipsrclayer\fP \fIlayername\fP:\fP" 1c
-Select the named layer from the source clip datasource. 
+Select the named layer from the source clip datasource\&. 
 .IP "\fB\fB-clipsrcwhere\fP \fIexpression\fP:\fP" 1c
-Restrict desired geometries based on attribute query. 
+Restrict desired geometries based on attribute query\&. 
 .IP "\fB\fB-clipdst\fP\fI xmin ymin xmax ymax\fP:\fP" 1c
-(starting with GDAL 1.7.0) clip geometries after reprojection to the specified bounding box (expressed in dest SRS), WKT geometry (POLYGON or MULTIPOLYGON) or from a datasource. When specifying a datasource, you will generally want to use it in combination of the -clipdstlayer, -clipdstwhere or -clipdstsql options 
+(starting with GDAL 1\&.7\&.0) clip geometries after reprojection to the specified bounding box (expressed in dest SRS), WKT geometry (POLYGON or MULTIPOLYGON) or from a datasource\&. When specifying a datasource, you will generally want to use it in combination of the -clipdstlayer, -clipdstwhere or -clipdstsql options 
 .IP "\fB\fB-clipdstsql\fP \fIsql_statement\fP:\fP" 1c
-Select desired geometries using an SQL query instead. 
+Select desired geometries using an SQL query instead\&. 
 .IP "\fB\fB-clipdstlayer\fP \fIlayername\fP:\fP" 1c
-Select the named layer from the destination clip datasource. 
+Select the named layer from the destination clip datasource\&. 
 .IP "\fB\fB-clipdstwhere\fP \fIexpression\fP:\fP" 1c
-Restrict desired geometries based on attribute query. 
+Restrict desired geometries based on attribute query\&. 
 .IP "\fB\fB-wrapdateline\fP:\fP" 1c
-(starting with GDAL 1.7.0) split geometries crossing the dateline meridian (long. = +/- 180deg) 
+(starting with GDAL 1\&.7\&.0) split geometries crossing the dateline meridian (long\&. = +/- 180deg) 
 .IP "\fB\fB-datelineoffset\fP:\fP" 1c
-(starting with GDAL 1.10) offset from dateline in degrees (default long. = +/- 10deg, geometries within 170deg to -170deg will be splited) 
+(starting with GDAL 1\&.10) offset from dateline in degrees (default long\&. = +/- 10deg, geometries within 170deg to -170deg will be splited) 
 .IP "\fB\fB-simplify\fP\fI tolerance\fP:\fP" 1c
-(starting with GDAL 1.9.0) distance tolerance for simplification. Note: the algorithm used preserves topology per feature, in particular for polygon geometries, but not for a whole layer. 
+(starting with GDAL 1\&.9\&.0) distance tolerance for simplification\&. Note: the algorithm used preserves topology per feature, in particular for polygon geometries, but not for a whole layer\&. 
 .IP "\fB\fB-segmentize\fP\fI max_dist\fP:\fP" 1c
-(starting with GDAL 1.6.0) maximum distance between 2 nodes. Used to create intermediate points 
-.IP "\fB\fB-fieldTypeToString\fP\fI type1, ...\fP:\fP" 1c
-(starting with GDAL 1.7.0) converts any field of the specified type to a field of type string in the destination layer. Valid types are : Integer, Integer64, Real, String, Date, Time, DateTime, Binary, IntegerList, Integer64List, RealList, StringList. Special value \fBAll\fP can be used to convert all fields to strings. This is an alternate way to using the CAST operator of OGR SQL, that may avoid typing a long SQL query. Note that this does not influence the field types used by the sour [...]
-.IP "\fB\fB-mapFieldType\fP\fI srctype|All=dsttype, ...\fP:\fP" 1c
-(starting with GDAL 2.0) converts any field of the specified type to another type. Valid types are : Integer, Integer64, Real, String, Date, Time, DateTime, Binary, IntegerList, Integer64List, RealList, StringList. Types can also include subtype between parenthesis, such as Integer(Boolean), Real(Float32), ... Special value \fBAll\fP can be used to convert all fields to another type. This is an alternate way to using the CAST operator of OGR SQL, that may avoid typing a long SQL query. T [...]
+(starting with GDAL 1\&.6\&.0) maximum distance between 2 nodes\&. Used to create intermediate points 
+.IP "\fB\fB-fieldTypeToString\fP\fI type1, \&.\&.\&.\fP:\fP" 1c
+(starting with GDAL 1\&.7\&.0) converts any field of the specified type to a field of type string in the destination layer\&. Valid types are : Integer, Integer64, Real, String, Date, Time, DateTime, Binary, IntegerList, Integer64List, RealList, StringList\&. Special value \fBAll\fP can be used to convert all fields to strings\&. This is an alternate way to using the CAST operator of OGR SQL, that may avoid typing a long SQL query\&. Note that this does not influence the field types used [...]
+.IP "\fB\fB-mapFieldType\fP\fI srctype|All=dsttype, \&.\&.\&.\fP:\fP" 1c
+(starting with GDAL 2\&.0) converts any field of the specified type to another type\&. Valid types are : Integer, Integer64, Real, String, Date, Time, DateTime, Binary, IntegerList, Integer64List, RealList, StringList\&. Types can also include subtype between parenthesis, such as Integer(Boolean), Real(Float32), \&.\&.\&. Special value \fBAll\fP can be used to convert all fields to another type\&. This is an alternate way to using the CAST operator of OGR SQL, that may avoid typing a lon [...]
 .IP "\fB\fB-unsetFieldWidth\fP:\fP" 1c
-(starting with GDAL 1.11) set field width and precision to 0. 
+(starting with GDAL 1\&.11) set field width and precision to 0\&. 
 .IP "\fB\fB-splitlistfields\fP:\fP" 1c
-(starting with GDAL 1.8.0) split fields of type StringList, RealList or IntegerList into as many fields of type String, Real or Integer as necessary. 
+(starting with GDAL 1\&.8\&.0) split fields of type StringList, RealList or IntegerList into as many fields of type String, Real or Integer as necessary\&. 
 .IP "\fB\fB-maxsubfields\fP \fIval\fP:\fP" 1c
-To be combined with -splitlistfields to limit the number of subfields created for each split field. 
+To be combined with -splitlistfields to limit the number of subfields created for each split field\&. 
 .IP "\fB\fB-explodecollections\fP:\fP" 1c
-(starting with GDAL 1.8.0) produce one feature for each geometry in any kind of geometry collection in the source file 
+(starting with GDAL 1\&.8\&.0) produce one feature for each geometry in any kind of geometry collection in the source file 
 .IP "\fB\fB-zfield\fP \fIfield_name\fP:\fP" 1c
-(starting with GDAL 1.8.0) Uses the specified field to fill the Z coordinate of geometries 
+(starting with GDAL 1\&.8\&.0) Uses the specified field to fill the Z coordinate of geometries 
 .IP "\fB\fB-gcp\fP \fIungeoref_x ungeoref_y georef_x georef_y elevation\fP:\fP" 1c
-(starting with GDAL 1.10.0) Add the indicated ground control point. This option may be provided multiple times to provide a set of GCPs.  
+(starting with GDAL 1\&.10\&.0) Add the indicated ground control point\&. This option may be provided multiple times to provide a set of GCPs\&.  
 .IP "\fB\fB-order\fP \fIn\fP:\fP" 1c
-(starting with GDAL 1.10.0) order of polynomial used for warping (1 to 3). The default is to select a polynomial order based on the number of GCPs. 
+(starting with GDAL 1\&.10\&.0) order of polynomial used for warping (1 to 3)\&. The default is to select a polynomial order based on the number of GCPs\&. 
 .IP "\fB\fB-tps\fP:\fP" 1c
-(starting with GDAL 1.10.0) Force use of thin plate spline transformer based on available GCPs. 
+(starting with GDAL 1\&.10\&.0) Force use of thin plate spline transformer based on available GCPs\&. 
 .IP "\fB\fB-fieldmap\fP:\fP" 1c
-(starting with GDAL 1.10.0) Specifies the list of field indexes to be copied from the source to the destination. The (n)th value specified in the list is the index of the field in the target layer definition in which the n(th) field of the source layer must be copied. Index count starts at zero. There must be exactly as many values in the list as the count of the fields in the source layer. We can use the 'identity' setting to specify that the fields should be transferred by using the sa [...]
+(starting with GDAL 1\&.10\&.0) Specifies the list of field indexes to be copied from the source to the destination\&. The (n)th value specified in the list is the index of the field in the target layer definition in which the n(th) field of the source layer must be copied\&. Index count starts at zero\&. There must be exactly as many values in the list as the count of the fields in the source layer\&. We can use the 'identity' setting to specify that the fields should be transferred by  [...]
 .IP "\fB\fB-addfields\fP:\fP" 1c
-(starting with GDAL 1.11) This is a specialized version of -append. Contrary to -append, -addfields has the effect of adding, to existing target layers, the new fields found in source layers. This option is useful when merging files that have non-strictly identical structures. This might not work for output formats that don't support adding fields to existing non-empty layers. 
+(starting with GDAL 1\&.11) This is a specialized version of -append\&. Contrary to -append, -addfields has the effect of adding, to existing target layers, the new fields found in source layers\&. This option is useful when merging files that have non-strictly identical structures\&. This might not work for output formats that don't support adding fields to existing non-empty layers\&. 
 .IP "\fB\fB-relaxedFieldNameMatch\fP:\fP" 1c
-(starting with GDAL 1.11) Do field name matching between source and existing target layer in a more relaxed way if the target driver has an implementation for it. [-relaxedFieldNameMatch] [-forceNullable] 
+(starting with GDAL 1\&.11) Do field name matching between source and existing target layer in a more relaxed way if the target driver has an implementation for it\&. [-relaxedFieldNameMatch] [-forceNullable] 
 .IP "\fB\fB-forceNullable\fP:\fP" 1c
-(starting with GDAL 2.0) Do not propagate not-nullable constraints to target layer if they exist in source layer.. 
+(starting with GDAL 2\&.0) Do not propagate not-nullable constraints to target layer if they exist in source layer\&.\&. 
 .IP "\fB\fB-unsetDefault\fP:\fP" 1c
-(starting with GDAL 2.0) Do not propagate default field values to target layer if they exist in source layer.. 
+(starting with GDAL 2\&.0) Do not propagate default field values to target layer if they exist in source layer\&.\&. 
 .IP "\fB\fB-unsetFid\fP:\fP" 1c
-(starting with GDAL 2.0) Can be specify to prevent the new default behaviour that consists in, if the output driver has a FID layer creation option and we are not in append mode, to preserve the name of the source FID column and source feature IDs 
+(starting with GDAL 2\&.0) Can be specify to prevent the new default behaviour that consists in, if the output driver has a FID layer creation option and we are not in append mode, to preserve the name of the source FID column and source feature IDs 
 .IP "\fB\fB-nomd\fP:\fP" 1c
-(starting with GDAL 2.0) To disable copying of metadata from source dataset and layers into target dataset and layers, when supported by output driver. 
+(starting with GDAL 2\&.0) To disable copying of metadata from source dataset and layers into target dataset and layers, when supported by output driver\&. 
 .IP "\fB\fB-mo\fP \fI'META-TAG=VALUE'\fP:\fP" 1c
-(starting with GDAL 2.0) Passes a metadata key and value to set on the output dataset, when supported by output driver.
+(starting with GDAL 2\&.0) Passes a metadata key and value to set on the output dataset, when supported by output driver\&.
 .PP
 .PP
 .SH "PERFORMANCE HINTS"
 .PP
-When writing into transactional DBMS (SQLite/PostgreSQL,MySQL, etc...), it might be beneficial to increase the number of INSERT statements executed between BEGIN TRANSACTION and COMMIT TRANSACTION statements. This number is specified with the -gt option. For example, for SQLite, explicitly defining \fB-gt 65536\fP ensures optimal performance while populating some table containing many hundredth thousand or million rows. However, note that if there are failed insertions, the scope of -ski [...]
+When writing into transactional DBMS (SQLite/PostgreSQL,MySQL, etc\&.\&.\&.), it might be beneficial to increase the number of INSERT statements executed between BEGIN TRANSACTION and COMMIT TRANSACTION statements\&. This number is specified with the -gt option\&. For example, for SQLite, explicitly defining \fB-gt 65536\fP ensures optimal performance while populating some table containing many hundredth thousand or million rows\&. However, note that if there are failed insertions, the s [...]
 .PP
-For PostgreSQL, the PG_USE_COPY config option can be set to YES for significantly insertion performance boot. See the PG driver documentation page.
+For PostgreSQL, the PG_USE_COPY config option can be set to YES for significantly insertion performance boot\&. See the PG driver documentation page\&.
 .PP
-More generally, consult the documentation page of the input and output drivers for performance hints.
+More generally, consult the documentation page of the input and output drivers for performance hints\&.
 .SH "EXAMPLE"
 .PP
 Example appending to an existing layer (both flags need to be used):
@@ -213,7 +210,7 @@ Example reprojecting from ETRS_1989_LAEA_52N_10E to EPSG:4326 and clipping to a
 .fi
 .PP
 .PP
-Example for using the -fieldmap setting. The first field of the source layer is used to fill the third field (index 2 = third field) of the target layer, the second field of the source layer is ignored, the third field of the source layer used to fill the fifth field of the target layer.
+Example for using the -fieldmap setting\&. The first field of the source layer is used to fill the third field (index 2 = third field) of the target layer, the second field of the source layer is ignored, the third field of the source layer used to fill the fifth field of the target layer\&.
 .PP
 .PP
 .nf
@@ -222,7 +219,7 @@ Example for using the -fieldmap setting. The first field of the source layer is
 .fi
 .PP
 .PP
-More examples are given in the individual format pages.
+More examples are given in the individual format pages\&.
 .SH "AUTHOR"
 .PP
 Frank Warmerdam <warmerdam at pobox.com>, Silke Reimer <silke at intevation.de> 
diff --git a/man/man1/ogr_utilities.1 b/man/man1/ogr_utilities.1
index 12f2313..e0c52ea 100644
--- a/man/man1/ogr_utilities.1
+++ b/man/man1/ogr_utilities.1
@@ -1,12 +1,9 @@
-.TH "ogr_utilities" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "ogr_utilities" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-ogr_utilities \- .TH "ogr_utilities" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-ogr_utilities \- A collection of OGR related programs.
+ogr_utilities \- OGR Utility Programs 
+A collection of OGR related programs\&.
 .PP
 The following utilities are distributed as part of the OGR Simple Features toolkit:
 .PP
diff --git a/man/man1/ogrinfo.1 b/man/man1/ogrinfo.1
index e4688a3..fd105ae 100644
--- a/man/man1/ogrinfo.1
+++ b/man/man1/ogrinfo.1
@@ -1,12 +1,9 @@
-.TH "ogrinfo" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "ogrinfo" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-ogrinfo \- .TH "ogrinfo" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-ogrinfo \- lists information about an OGR supported data source
+ogrinfo \- ogrinfo 
+lists information about an OGR supported data source
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -25,55 +22,55 @@ ogrinfo [--help-general] [-ro] [-q] [-where restricted_where]
 .PP
 .SH "DESCRIPTION"
 .PP
-The ogrinfo program lists various information about an OGR supported data source to stdout (the terminal).
+The ogrinfo program lists various information about an OGR supported data source to stdout (the terminal)\&.
 .PP
 .IP "\fB\fB-ro\fP:\fP" 1c
-Open the data source in read-only mode.  
+Open the data source in read-only mode\&.  
 .IP "\fB\fB-al\fP:\fP" 1c
-List all features of all layers (used instead of having to give layer names as arguments). 
+List all features of all layers (used instead of having to give layer names as arguments)\&. 
 .IP "\fB\fB-so\fP:\fP" 1c
-Summary Only: suppress listing of features, show only the summary information like projection, schema, feature count and extents. 
+Summary Only: suppress listing of features, show only the summary information like projection, schema, feature count and extents\&. 
 .IP "\fB\fB-q\fP:\fP" 1c
-Quiet verbose reporting of various information, including coordinate system, layer schema, extents, and feature count.  
+Quiet verbose reporting of various information, including coordinate system, layer schema, extents, and feature count\&.  
 .IP "\fB\fB-where\fP \fIrestricted_where\fP:\fP" 1c
-An attribute query in a restricted form of the queries used in the SQL WHERE statement. Only features matching the attribute query will be reported. 
+An attribute query in a restricted form of the queries used in the SQL WHERE statement\&. Only features matching the attribute query will be reported\&. 
 .IP "\fB\fB-sql\fP \fIstatement\fP:\fP" 1c
-Execute the indicated SQL statement and return the result. 
+Execute the indicated SQL statement and return the result\&. 
 .IP "\fB\fB-dialect\fP \fIdialect\fP:\fP" 1c
-SQL dialect. In some cases can be used to use (unoptimized) OGR SQL instead of the native SQL of an RDBMS by passing OGRSQL. Starting with GDAL 1.10, the 'SQLITE' dialect can also be used with any datasource. 
+SQL dialect\&. In some cases can be used to use (unoptimized) OGR SQL instead of the native SQL of an RDBMS by passing OGRSQL\&. Starting with GDAL 1\&.10, the 'SQLITE' dialect can also be used with any datasource\&. 
 .IP "\fB\fB-spat\fP \fIxmin ymin xmax ymax\fP:\fP" 1c
-The area of interest. Only features within the rectangle will be reported. 
+The area of interest\&. Only features within the rectangle will be reported\&. 
 .IP "\fB\fB-geomfield\fP \fIfield\fP:\fP" 1c
-(OGR >= 1.11) Name of the geometry field on which the spatial filter operates on. 
+(OGR >= 1\&.11) Name of the geometry field on which the spatial filter operates on\&. 
 .IP "\fB\fB-fid\fP \fIfid\fP:\fP" 1c
-If provided, only the feature with this feature id will be reported. Operates exclusive of the spatial or attribute queries. Note: if you want to select several features based on their feature id, you can also use the fact the 'fid' is a special field recognized by OGR SQL. So, '-where 'fid in (1,3,5)'' would select features 1, 3 and 5. 
+If provided, only the feature with this feature id will be reported\&. Operates exclusive of the spatial or attribute queries\&. Note: if you want to select several features based on their feature id, you can also use the fact the 'fid' is a special field recognized by OGR SQL\&. So, '-where 'fid in (1,3,5)'' would select features 1, 3 and 5\&. 
 .IP "\fB\fB-fields\fP={YES/NO}:\fP" 1c
-(starting with GDAL 1.6.0) If set to NO, the feature dump will not display field values. Default value is YES. 
+(starting with GDAL 1\&.6\&.0) If set to NO, the feature dump will not display field values\&. Default value is YES\&. 
 .IP "\fB\fB-geom\fP={YES/NO/SUMMARY}:\fP" 1c
-(starting with GDAL 1.6.0) If set to NO, the feature dump will not display the geometry. If set to SUMMARY, only a summary of the geometry will be displayed. If set to YES, the geometry will be reported in full OGC WKT format. Default value is YES. 
+(starting with GDAL 1\&.6\&.0) If set to NO, the feature dump will not display the geometry\&. If set to SUMMARY, only a summary of the geometry will be displayed\&. If set to YES, the geometry will be reported in full OGC WKT format\&. Default value is YES\&. 
 .IP "\fB\fB-oo\fP \fINAME=VALUE\fP:\fP" 1c
-(starting with GDAL 2.0) Dataset open option (format specific) 
+(starting with GDAL 2\&.0) Dataset open option (format specific) 
 .IP "\fB\fB-nomd\fP\fP" 1c
-(starting with GDAL 2.0) Suppress metadata printing. Some datasets may contain a lot of metadata strings. 
+(starting with GDAL 2\&.0) Suppress metadata printing\&. Some datasets may contain a lot of metadata strings\&. 
 .IP "\fB\fB-listmdd\fP\fP" 1c
-(starting with GDAL 2.0) List all metadata domains available for the dataset. 
+(starting with GDAL 2\&.0) List all metadata domains available for the dataset\&. 
 .IP "\fB\fB-mdd domain\fP\fP" 1c
-(starting with GDAL 2.0) Report metadata for the specified domain. 'all' can be used to report metadata in all domains 
+(starting with GDAL 2\&.0) Report metadata for the specified domain\&. 'all' can be used to report metadata in all domains 
 .IP "\fB\fB-nocount\fP\fP" 1c
-(starting with GDAL 2.0) Suppress feature count printing. 
+(starting with GDAL 2\&.0) Suppress feature count printing\&. 
 .IP "\fB\fB-noextent\fP\fP" 1c
-(starting with GDAL 2.0) Suppress spatial extent printing. 
+(starting with GDAL 2\&.0) Suppress spatial extent printing\&. 
 .IP "\fB\fB--formats\fP:\fP" 1c
-List the format drivers that are enabled. 
+List the format drivers that are enabled\&. 
 .IP "\fB\fIdatasource_name\fP:\fP" 1c
-The data source to open. May be a filename, directory or other virtual name. See the \fCOGR Vector Formats\fP list for supported datasources. 
+The data source to open\&. May be a filename, directory or other virtual name\&. See the \fCOGR Vector Formats\fP list for supported datasources\&. 
 .IP "\fB\fIlayer\fP:\fP" 1c
-One or more layer names may be reported. 
+One or more layer names may be reported\&. 
 .PP
 .PP
-If no layer names are passed then ogrinfo will report a list of available layers (and their layerwide geometry type). If layer name(s) are given then their extents, coordinate system, feature count, geometry type, schema and all features matching query parameters will be reported to the terminal. If no query parameters are provided, all features are reported.
+If no layer names are passed then ogrinfo will report a list of available layers (and their layerwide geometry type)\&. If layer name(s) are given then their extents, coordinate system, feature count, geometry type, schema and all features matching query parameters will be reported to the terminal\&. If no query parameters are provided, all features are reported\&.
 .PP
-Geometries are reported in OGC WKT format.
+Geometries are reported in OGC WKT format\&.
 .SH "EXAMPLE"
 .PP
 Example reporting all layers in an NTF file: 
diff --git a/man/man1/ogrlineref.1 b/man/man1/ogrlineref.1
index 1ce88ae..2d78a86 100644
--- a/man/man1/ogrlineref.1
+++ b/man/man1/ogrlineref.1
@@ -1,12 +1,9 @@
-.TH "ogrlineref" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "ogrlineref" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-ogrlineref \- .TH "ogrlineref" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-ogrlineref \- The utility can be used for:
+ogrlineref \- ogrlineref 
+The utility can be used for:
 .IP "\(bu" 2
 create linear reference file from input data
 .IP "\(bu" 2
@@ -36,34 +33,34 @@ ogrlineref [--help-general] [-progress] [-quiet]
 .PP
 .SH "DESCRIPTION"
 .PP
-The ogrlineref program can be used to create a linear reference - a file containing a segments of special length (e.g. 1 km in reference units) and get coordinates, linear referenced distances or sublines (subpaths) from this file. The utility not required the M or Z values in geometry. The results can be stored in any OGR supported format. Also some information writed to the stdout.
+The ogrlineref program can be used to create a linear reference - a file containing a segments of special length (e\&.g\&. 1 km in reference units) and get coordinates, linear referenced distances or sublines (subpaths) from this file\&. The utility not required the M or Z values in geometry\&. The results can be stored in any OGR supported format\&. Also some information writed to the stdout\&.
 .PP
 .IP "\fB\fB--help-general\fP:\fP" 1c
-Show the usage. 
+Show the usage\&. 
 .IP "\fB\fB-progress\fP:\fP" 1c
-Show progress. 
+Show progress\&. 
 .IP "\fB\fB-quiet\fP:\fP" 1c
-Suppress all messages except errors and results. 
+Suppress all messages except errors and results\&. 
 .IP "\fB\fB-f\fP \fIformat_name\fP:\fP" 1c
-Select an output format name. The default is to create a shapefile. 
+Select an output format name\&. The default is to create a shapefile\&. 
 .IP "\fB\fB-dsco\fP \fINAME=VALUE\fP:\fP" 1c
 Dataset creation option (format specific) 
 .IP "\fB\fB-lco\fP\fI NAME=VALUE\fP:\fP" 1c
 Layer creation option (format specific) 
 .IP "\fB\fB-create\fP:\fP" 1c
-Create the linear reference file (linestring of parts). 
+Create the linear reference file (linestring of parts)\&. 
 .IP "\fB\fB-l\fP\fIsrc_line_datasource_name\fP:\fP" 1c
-The path to input linestring datasource (e.g. the road) 
+The path to input linestring datasource (e\&.g\&. the road) 
 .IP "\fB\fB-ln\fP\fIlayer_name\fP:\fP" 1c
 The layer name in datasource 
 .IP "\fB\fB-lf\fP\fIfield_name\fP:\fP" 1c
-The field name of uniq values to separate the input lines (e.g. the set of roads) 
+The field name of uniq values to separate the input lines (e\&.g\&. the set of roads) 
 .IP "\fB\fB-p\fP\fIsrc_repers_datasource_name\fP:\fP" 1c
-The path to linear references points (e.g. the road mile-stones) 
+The path to linear references points (e\&.g\&. the road mile-stones) 
 .IP "\fB\fB-pn\fP\fIlayer_name\fP:\fP" 1c
 The layer name in datasource 
 .IP "\fB\fB-pm\fP\fIpos_field_name\fP:\fP" 1c
-The field name of distances along path (e.g. mile-stones values) 
+The field name of distances along path (e\&.g\&. mile-stones values) 
 .IP "\fB\fB-pf\fP\fIfield_name\fP:\fP" 1c
 The field name of uniq values to map input reference points to lines 
 .IP "\fB\fB-r\fP\fIsrc_parts_datasource_name\fP:\fP" 1c
@@ -97,7 +94,7 @@ The input end linear distance
 .PP
 .SH "EXAMPLE"
 .PP
-This example would create a shapefile (parts.shp) containing a data needed for linear referencing (1 km parts): 
+This example would create a shapefile (parts\&.shp) containing a data needed for linear referencing (1 km parts): 
 .PP
 .nf
 
diff --git a/man/man1/ogrtindex.1 b/man/man1/ogrtindex.1
index 975f087..f486252 100644
--- a/man/man1/ogrtindex.1
+++ b/man/man1/ogrtindex.1
@@ -1,12 +1,9 @@
-.TH "ogrtindex" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "ogrtindex" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-ogrtindex \- .TH "ogrtindex" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-ogrtindex \- creates a tileindex
+ogrtindex \- ogrtindex 
+creates a tileindex
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -20,32 +17,32 @@ ogrtindex [-lnum n]... [-lname name]... [-f output_format]
 .PP
 .SH "DESCRIPTION"
 .PP
-The ogrtindex program can be used to create a tileindex - a file containing a list of the identities of a bunch of other files along with there spatial extents. This is primarily intended to be used with \fCMapServer\fP for tiled access to layers using the OGR connection type.
+The ogrtindex program can be used to create a tileindex - a file containing a list of the identities of a bunch of other files along with there spatial extents\&. This is primarily intended to be used with \fCMapServer\fP for tiled access to layers using the OGR connection type\&.
 .PP
 .IP "\fB\fB-lnum\fP \fIn\fP:\fP" 1c
-Add layer number 'n' from each source file in the tile index. 
+Add layer number 'n' from each source file in the tile index\&. 
 .IP "\fB\fB-lname\fP \fIname\fP:\fP" 1c
-Add the layer named 'name' from each source file in the tile index. 
+Add the layer named 'name' from each source file in the tile index\&. 
 .IP "\fB\fB-f\fP \fIoutput_format\fP:\fP" 1c
-Select an output format name. The default is to create a shapefile. 
+Select an output format name\&. The default is to create a shapefile\&. 
 .IP "\fB\fB-tileindex\fP \fIfield_name\fP:\fP" 1c
-The name to use for the dataset name. Defaults to LOCATION. 
+The name to use for the dataset name\&. Defaults to LOCATION\&. 
 .IP "\fB\fB-write_absolute_path\fP:\fP" 1c
 Filenames are written with absolute paths 
 .IP "\fB\fB-skip_different_projection\fP:\fP" 1c
-Only layers with same projection ref as layers already inserted in the tileindex will be inserted. 
+Only layers with same projection ref as layers already inserted in the tileindex will be inserted\&. 
 .IP "\fB\fB-accept_different_schemas\fP:\fP" 1c
-By default ogrtindex checks that all layers inserted into the index have the same attribute schemas. If you specify this option, this test will be disabled. Be aware that resulting index may be incompatible with MapServer! 
+By default ogrtindex checks that all layers inserted into the index have the same attribute schemas\&. If you specify this option, this test will be disabled\&. Be aware that resulting index may be incompatible with MapServer! 
 .PP
 .PP
-If no -lnum or -lname arguments are given it is assumed that all layers in source datasets should be added to the tile index as independent records.
+If no -lnum or -lname arguments are given it is assumed that all layers in source datasets should be added to the tile index as independent records\&.
 .PP
-If the tile index already exists it will be appended to, otherwise it will be created.
+If the tile index already exists it will be appended to, otherwise it will be created\&.
 .PP
-It is a flaw of the current ogrtindex program that no attempt is made to copy the coordinate system definition from the source datasets to the tile index (as is expected by MapServer when PROJECTION AUTO is in use).
+It is a flaw of the current ogrtindex program that no attempt is made to copy the coordinate system definition from the source datasets to the tile index (as is expected by MapServer when PROJECTION AUTO is in use)\&.
 .SH "EXAMPLE"
 .PP
-This example would create a shapefile (tindex.shp) containing a tile index of the BL2000_LINK layers in all the NTF files in the wrk directory: 
+This example would create a shapefile (tindex\&.shp) containing a tile index of the BL2000_LINK layers in all the NTF files in the wrk directory: 
 .PP
 .nf
 
diff --git a/man/man1/pct2rgb.1 b/man/man1/pct2rgb.1
index 72819a5..9817f45 100644
--- a/man/man1/pct2rgb.1
+++ b/man/man1/pct2rgb.1
@@ -1,12 +1,9 @@
-.TH "pct2rgb" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "pct2rgb" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-pct2rgb \- .TH "pct2rgb" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-pct2rgb \- Convert an 8bit paletted image to 24bit RGB
+pct2rgb \- pct2rgb\&.py 
+Convert an 8bit paletted image to 24bit RGB
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -18,23 +15,23 @@ pct2rgb.py [-of format] [-b band] [-rgba] source_file dest_file
 .PP
 .SH "DESCRIPTION"
 .PP
-This utility will convert a pseudocolor band on the input file into an output RGB file of the desired format.
+This utility will convert a pseudocolor band on the input file into an output RGB file of the desired format\&.
 .PP
 .IP "\fB\fB-of\fP \fIformat\fP:\fP" 1c
-Format to generated (defaults to GeoTIFF). 
+Format to generated (defaults to GeoTIFF)\&. 
 .IP "\fB\fB-b\fP \fIband\fP:\fP" 1c
-Band to convert to RGB, defaults to 1. 
+Band to convert to RGB, defaults to 1\&. 
 .IP "\fB\fB-rgba:\fP\fP" 1c
-Generate a RGBA file (instead of a RGB file by default). 
+Generate a RGBA file (instead of a RGB file by default)\&. 
 .IP "\fB\fIsource_file\fP:\fP" 1c
-The input file.  
+The input file\&.  
 .IP "\fB\fIdest_file\fP:\fP" 1c
-The output RGB file that will be created. 
+The output RGB file that will be created\&. 
 .PP
 .PP
-NOTE: pct2rgb.py is a Python script, and will only work if GDAL was built with Python support.
+NOTE: pct2rgb\&.py is a Python script, and will only work if GDAL was built with Python support\&.
 .PP
-The new '-expand rgb|rgba' option of gdal_translate obsoletes that utility.
+The new '-expand rgb|rgba' option of gdal_translate obsoletes that utility\&.
 .SH "AUTHORS"
 .PP
 Frank Warmerdam <warmerdam at pobox.com>, Silke Reimer <silke at intevation.de> 
diff --git a/man/man1/rgb2pct.1 b/man/man1/rgb2pct.1
index d29577f..a464633 100644
--- a/man/man1/rgb2pct.1
+++ b/man/man1/rgb2pct.1
@@ -1,12 +1,9 @@
-.TH "rgb2pct" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
+.TH "rgb2pct" 1 "Tue Sep 15 2015" "GDAL" \" -*- nroff -*-
 .ad l
 .nh
 .SH NAME
-rgb2pct \- .TH "rgb2pct" 1 "Sun Jun 14 2015" "GDAL" \" -*- nroff -*-
-.ad l
-.nh
-.SH NAME
-rgb2pct \- Convert a 24bit RGB image to 8bit paletted
+rgb2pct \- rgb2pct\&.py 
+Convert a 24bit RGB image to 8bit paletted
 .SH "SYNOPSIS"
 .PP
 .PP
@@ -17,24 +14,24 @@ rgb2pct.py [-n colors | -pct palette_file] [-of format] source_file dest_file
 .PP
 .SH "DESCRIPTION"
 .PP
-This utility will compute an optimal pseudo-color table for a given RGB image using a median cut algorithm on a downsampled RGB histogram. Then it converts the image into a pseudo-colored image using the color table. This conversion utilizes Floyd-Steinberg dithering (error diffusion) to maximize output image visual quality.
+This utility will compute an optimal pseudo-color table for a given RGB image using a median cut algorithm on a downsampled RGB histogram\&. Then it converts the image into a pseudo-colored image using the color table\&. This conversion utilizes Floyd-Steinberg dithering (error diffusion) to maximize output image visual quality\&.
 .PP
 .IP "\fB\fB-n\fP \fIcolors\fP:\fP" 1c
-Select the number of colors in the generated color table. Defaults to 256. Must be between 2 and 256.  
+Select the number of colors in the generated color table\&. Defaults to 256\&. Must be between 2 and 256\&.  
 .IP "\fB\fB-pct\fP \fIpalette_file\fP:\fP" 1c
-Extract the color table from \fIpalette_file\fP instead of computing it. Can be used to have a consistent color table for multiple files. The \fIpalette_file\fP must be a raster file in a GDAL supported format with a palette. 
+Extract the color table from \fIpalette_file\fP instead of computing it\&. Can be used to have a consistent color table for multiple files\&. The \fIpalette_file\fP must be a raster file in a GDAL supported format with a palette\&. 
 .IP "\fB\fB-of\fP \fIformat\fP:\fP" 1c
-Format to generated (defaults to GeoTIFF). Same semantics as the \fB-of\fP flag for gdal_translate. Only output formats supporting pseudocolor tables should be used.  
+Format to generated (defaults to GeoTIFF)\&. Same semantics as the \fB-of\fP flag for gdal_translate\&. Only output formats supporting pseudocolor tables should be used\&.  
 .IP "\fB\fIsource_file\fP:\fP" 1c
-The input RGB file.  
+The input RGB file\&.  
 .IP "\fB\fIdest_file\fP:\fP" 1c
-The output pseudo-colored file that will be created. 
+The output pseudo-colored file that will be created\&. 
 .PP
 .PP
-NOTE: rgb2pct.py is a Python script, and will only work if GDAL was built with Python support.
+NOTE: rgb2pct\&.py is a Python script, and will only work if GDAL was built with Python support\&.
 .SH "EXAMPLE"
 .PP
-If it is desired to hand create the palette, likely the simplest text format is the GDAL VRT format. In the following example a VRT was created in a text editor with a small 4 color palette with the RGBA colors 238/238/238/255, 237/237/237/255, 236/236/236/255 and 229/229/229/255.
+If it is desired to hand create the palette, likely the simplest text format is the GDAL VRT format\&. In the following example a VRT was created in a text editor with a small 4 color palette with the RGBA colors 238/238/238/255, 237/237/237/255, 236/236/236/255 and 229/229/229/255\&.
 .PP
 .PP
 .nf
diff --git a/nmake.opt b/nmake.opt
index 88a7ad5..3321e40 100644
--- a/nmake.opt
+++ b/nmake.opt
@@ -1,4 +1,4 @@
-# $Id: nmake.opt 29336 2015-06-14 17:37:21Z rouault $
+# $Id: nmake.opt 29634 2015-08-12 12:03:07Z rouault $
 #
 # nmake.opt - main configuration file for NMAKE makefiles.
 #
@@ -343,9 +343,12 @@ JPEG12_SUPPORTED = 1
 #JASPER_INCLUDE = $(JASPER_INCLUDE) -DHAVE_JASPER_UUID
 
 # Uncommment and adjust paths if you have Kakadu 6.0 or newer
+#KAKFLAGS=-DKDU_MAJOR_VERSION=6 -DKDU_MINOR_VERSION=0 -DKDU_PATCH_VERSION=0
 #KAKDIR = 	\warmerda\pkg\kakadu-6.2.1
 #KAKLIB =	$(KAKDIR)\lib_x86\kdu_v62R.lib
 #KAKSRC =	$(KAKDIR)\vt_2_1-00256N
+#KAKOBJDIR =  $(KAKDIR)\v6_generated_x86
+#KAKADU_7_5_OR_LATER = YES
 
 # Uncomment the following and update to enable NCSA HDF Release 4 support.
 #HDF4_PLUGIN = NO
diff --git a/ogr/ogr_fromepsg.cpp b/ogr/ogr_fromepsg.cpp
index 232e3df..dbfc360 100644
--- a/ogr/ogr_fromepsg.cpp
+++ b/ogr/ogr_fromepsg.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: ogr_fromepsg.cpp 28565 2015-02-27 10:26:21Z rouault $
+ * $Id: ogr_fromepsg.cpp 29504 2015-07-08 19:18:55Z rouault $
  *
  * Project:  OpenGIS Simple Features Reference Implementation
  * Purpose:  Generate an OGRSpatialReference object based on an EPSG
@@ -34,7 +34,7 @@
 #include "cpl_csv.h"
 #include <vector>
 
-CPL_CVSID("$Id: ogr_fromepsg.cpp 28565 2015-02-27 10:26:21Z rouault $");
+CPL_CVSID("$Id: ogr_fromepsg.cpp 29504 2015-07-08 19:18:55Z rouault $");
 
 #ifndef PI
 #  define PI 3.14159265358979323846
@@ -953,14 +953,14 @@ EPSGGetPCSInfo( int nPCSCode, char **ppszEPSGName,
 /*      Search the units database for this unit.  If we don't find      */
 /*      it return failure.                                              */
 /* -------------------------------------------------------------------- */
-    pszFilename = CSVFilename( "pcs.csv" );
+    pszFilename = CSVFilename( "pcs.override.csv" );
     sprintf( szSearchKey, "%d", nPCSCode );
     papszRecord = CSVScanFileByName( pszFilename, "COORD_REF_SYS_CODE",
                                      szSearchKey, CC_Integer );
 
     if( papszRecord == NULL )
     {
-        pszFilename = CSVFilename( "pcs.override.csv" );
+        pszFilename = CSVFilename( "pcs.csv" );
         sprintf( szSearchKey, "%d", nPCSCode );
         papszRecord = CSVScanFileByName( pszFilename, "COORD_REF_SYS_CODE",
                                          szSearchKey, CC_Integer );
diff --git a/ogr/ogr_srs_esri.cpp b/ogr/ogr_srs_esri.cpp
index e662fff..d54dd06 100644
--- a/ogr/ogr_srs_esri.cpp
+++ b/ogr/ogr_srs_esri.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: ogr_srs_esri.cpp 29116 2015-05-02 20:39:55Z rouault $
+ * $Id: ogr_srs_esri.cpp 29518 2015-07-11 10:58:41Z rouault $
  *
  * Project:  OpenGIS Simple Features Reference Implementation
  * Purpose:  OGRSpatialReference translation to/from ESRI .prj definitions.
@@ -36,7 +36,7 @@
 
 #include "ogr_srs_esri_names.h"
 
-CPL_CVSID("$Id: ogr_srs_esri.cpp 29116 2015-05-02 20:39:55Z rouault $");
+CPL_CVSID("$Id: ogr_srs_esri.cpp 29518 2015-07-11 10:58:41Z rouault $");
 
 void  SetNewName( OGRSpatialReference* pOgr, const char* keyName, const char* newName );
 int   RemapImgWGSProjcsName(OGRSpatialReference* pOgr, const char* pszProjCSName, 
@@ -72,7 +72,6 @@ static const char *apszProjMapping[] = {
     "Van_der_Grinten_I", SRS_PT_VANDERGRINTEN,
     SRS_PT_TRANSVERSE_MERCATOR, SRS_PT_TRANSVERSE_MERCATOR,
     "Gauss_Kruger", SRS_PT_TRANSVERSE_MERCATOR,
-    "Mercator", SRS_PT_MERCATOR_1SP,
     NULL, NULL }; 
  
 static const char *apszAlbersMapping[] = {
@@ -86,10 +85,6 @@ static const char *apszECMapping[] = {
     SRS_PP_LATITUDE_OF_ORIGIN, SRS_PP_LATITUDE_OF_CENTER, 
     NULL, NULL };
 
-static const char *apszMercatorMapping[] = {
-    SRS_PP_STANDARD_PARALLEL_1, SRS_PP_LATITUDE_OF_ORIGIN,
-    NULL, NULL };
-
 static const char *apszPolarStereographicMapping[] = {
     SRS_PP_STANDARD_PARALLEL_1, SRS_PP_LATITUDE_OF_ORIGIN,
     NULL, NULL };
@@ -1104,6 +1099,13 @@ OGRErr OGRSpatialReference::morphToESRI()
             poGeogCS->GetChild(0)->SetValue( "GCS_WGS_1984" );
             pszUTMPrefix = "WGS_1984";
         }
+        else if( nGCSCode == 4322 
+            || EQUAL(pszGeogCSName,"WGS72") 
+            || EQUAL(pszGeogCSName,"WGS 72") )
+        {
+            poGeogCS->GetChild(0)->SetValue( "GCS_WGS_1972" );
+            pszUTMPrefix = "WGS_1972";
+        }
         else if( nGCSCode == 4267
                  || EQUAL(pszGeogCSName,"NAD27") 
                  || EQUAL(pszGeogCSName,"NAD 27") )
@@ -1252,7 +1254,7 @@ OGRErr OGRSpatialReference::morphToESRI()
     }
 
 /* -------------------------------------------------------------------- */
-/*      Remap parameters used for Albers and Mercator.                  */
+/*      Remap parameters used for Albers.                               */
 /* -------------------------------------------------------------------- */
     pszProjection = GetAttrValue("PROJECTION");
     poProjCS = GetAttrNode( "PROJCS" );
@@ -1272,12 +1274,6 @@ OGRErr OGRSpatialReference::morphToESRI()
             "PARAMETER", (char **)apszECMapping + 1,
             (char **)apszECMapping + 0, 2 );
 
-    if( pszProjection != NULL && EQUAL(pszProjection,"Mercator") )
-        GetRoot()->applyRemapper( 
-            "PARAMETER",
-            (char **)apszMercatorMapping + 1,
-            (char **)apszMercatorMapping + 0, 2 );
-
     if( pszProjection != NULL 
         && EQUALN(pszProjection,"Stereographic_",14)
         && EQUALN(pszProjection+strlen(pszProjection)-5,"_Pole",5) )
@@ -1313,6 +1309,39 @@ OGRErr OGRSpatialReference::morphToESRI()
         }
     }
 
+    /* See #4861 */
+    if( pszProjection != NULL && EQUAL(pszProjection,SRS_PT_MERCATOR_2SP) )
+    {
+        SetNode( "PROJCS|PROJECTION", "Mercator" );
+        pszProjection = GetAttrValue("PROJECTION");
+    }
+    
+    /* See #4861 */
+    if( pszProjection != NULL && EQUAL(pszProjection,SRS_PT_MERCATOR_1SP) )
+    {
+        SetNode( "PROJCS|PROJECTION", "Mercator" );
+        pszProjection = GetAttrValue("PROJECTION");
+        
+        double dfK0 = GetNormProjParm(SRS_PP_SCALE_FACTOR, 1.0);
+        
+        double dfInvFlattening = GetInvFlattening();;
+        double e2 = 0.0;
+        if( dfInvFlattening != 0.0 )
+        {
+            double f = 1 / dfInvFlattening;
+            e2 = 2 *f - f*f;
+        }
+        double dfStdP1Lat = acos( sqrt( (1 - e2) / (1 / (dfK0 * dfK0)) - e2) ) / M_PI * 180.0;
+        if( poProjCS )
+        {
+            int iScaleFactorChild = FindProjParm( SRS_PP_SCALE_FACTOR, poProjCS );
+            if( iScaleFactorChild != -1 )
+                poProjCS->DestroyChild( iScaleFactorChild);
+            SetProjParm(SRS_PP_STANDARD_PARALLEL_1, dfStdP1Lat);
+            FixupOrdering();
+        }
+    }
+
 /* -------------------------------------------------------------------- */
 /*      Convert SPHEROID name to use underscores instead of spaces.     */
 /* -------------------------------------------------------------------- */
@@ -1616,12 +1645,6 @@ OGRErr OGRSpatialReference::morphFromESRI()
             "PARAMETER", (char **)apszECMapping + 0,
             (char **)apszECMapping + 1, 2 );
 
-    if( pszProjection != NULL && EQUAL(pszProjection,"Mercator") )
-        GetRoot()->applyRemapper( 
-            "PARAMETER",
-            (char **)apszMercatorMapping + 0,
-            (char **)apszMercatorMapping + 1, 2 );
-
     if( pszProjection != NULL && EQUAL(pszProjection,"Orthographic") )
         GetRoot()->applyRemapper( 
             "PARAMETER", (char **)apszOrthographicMapping + 0,
@@ -1668,6 +1691,15 @@ OGRErr OGRSpatialReference::morphFromESRI()
             (char **)apszPolarStereographicMapping + 1, 2 );
 #endif
 
+/* -------------------------------------------------------------------- */
+/*      Remap Mercator to Mercator_2SP (#4861)                          */
+/* -------------------------------------------------------------------- */
+    if( pszProjection != NULL && EQUAL(pszProjection,"Mercator") )
+    {
+        SetNode( "PROJCS|PROJECTION", SRS_PT_MERCATOR_2SP );
+        pszProjection = GetAttrValue("PROJECTION");
+    }
+
     /*
     ** Handle the value of Central_Parallel -> latitude_of_center.
     ** See ticket #3191.  Other mappings probably need to be added.
diff --git a/ogr/ogrsf_frmts/cartodb/ogrcartodbtablelayer.cpp b/ogr/ogrsf_frmts/cartodb/ogrcartodbtablelayer.cpp
index 658858b..45bff30 100644
--- a/ogr/ogrsf_frmts/cartodb/ogrcartodbtablelayer.cpp
+++ b/ogr/ogrsf_frmts/cartodb/ogrcartodbtablelayer.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: ogrcartodbtablelayer.cpp 29004 2015-04-25 08:38:29Z rouault $
+ * $Id: ogrcartodbtablelayer.cpp 30281 2015-09-11 15:17:03Z rouault $
  *
  * Project:  CartoDB Translator
  * Purpose:  Implements OGRCARTODBTableLayer class.
@@ -31,7 +31,7 @@
 #include "ogr_p.h"
 #include "ogr_pgdump.h"
 
-CPL_CVSID("$Id: ogrcartodbtablelayer.cpp 29004 2015-04-25 08:38:29Z rouault $");
+CPL_CVSID("$Id: ogrcartodbtablelayer.cpp 30281 2015-09-11 15:17:03Z rouault $");
 
 /************************************************************************/
 /*                    OGRCARTODBEscapeIdentifier( )                     */
@@ -173,21 +173,29 @@ OGRFeatureDefn * OGRCARTODBTableLayer::GetLayerDefnInternal(CPL_UNUSED json_obje
         }
         if( poLyr )
         {
-            poFeatureDefn = new OGRFeatureDefn(osName);
-            poFeatureDefn->Reference();
-            poFeatureDefn->SetGeomType(wkbNone);
-
             OGRFeature* poFeat;
             while( (poFeat = poLyr->GetNextFeature()) != NULL )
             {
+                if( poFeatureDefn == NULL )
+                {
+                    // We could do that outside of the while() loop, but
+                    // by doing that here, we are somewhat robust to
+                    // ogr_table_metadata() returning suddenly an empty result set
+                    // for example if CDB_UserTables() no longer works
+                    poFeatureDefn = new OGRFeatureDefn(osName);
+                    poFeatureDefn->Reference();
+                    poFeatureDefn->SetGeomType(wkbNone);
+                }
+
                 const char* pszAttname = poFeat->GetFieldAsString("attname");
                 const char* pszType = poFeat->GetFieldAsString("typname");
                 int nWidth = poFeat->GetFieldAsInteger("attlen");
                 const char* pszFormatType = poFeat->GetFieldAsString("format_type");
                 int bNotNull = poFeat->GetFieldAsInteger("attnotnull");
                 int bIsPrimary = poFeat->GetFieldAsInteger("indisprimary");
-                const char* pszDefault = (poFeat->IsFieldSet(poLyr->GetLayerDefn()->GetFieldIndex("defaultexpr"))) ?
-                            poFeat->GetFieldAsString("defaultexpr") : NULL;
+                int iDefaultExpr = poLyr->GetLayerDefn()->GetFieldIndex("defaultexpr");
+                const char* pszDefault = (iDefaultExpr >= 0 && poFeat->IsFieldSet(iDefaultExpr)) ?
+                            poFeat->GetFieldAsString(iDefaultExpr) : NULL;
 
                 if( bIsPrimary &&
                     (EQUAL(pszType, "int2") ||
@@ -1234,6 +1242,7 @@ void OGRCARTODBTableLayer::SetDeferedCreation (OGRwkbGeometryType eGType,
     osFIDColName = "cartodb_id";
     osBaseSQL.Printf("SELECT * FROM %s",
                      OGRCARTODBEscapeIdentifier(osName).c_str());
+    osSELECTWithoutWHERE = osBaseSQL;
 }
 
 /************************************************************************/
diff --git a/ogr/ogrsf_frmts/csv/ogrcsvdatasource.cpp b/ogr/ogrsf_frmts/csv/ogrcsvdatasource.cpp
index db318ee..0302f9b 100644
--- a/ogr/ogrsf_frmts/csv/ogrcsvdatasource.cpp
+++ b/ogr/ogrsf_frmts/csv/ogrcsvdatasource.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: ogrcsvdatasource.cpp 29237 2015-05-24 08:38:20Z rouault $
+ * $Id: ogrcsvdatasource.cpp 29897 2015-08-29 12:36:40Z rouault $
  *
  * Project:  CSV Translator
  * Purpose:  Implements OGRCSVDataSource class
@@ -34,7 +34,7 @@
 #include "cpl_csv.h"
 #include "cpl_vsi_virtual.h"
 
-CPL_CVSID("$Id: ogrcsvdatasource.cpp 29237 2015-05-24 08:38:20Z rouault $");
+CPL_CVSID("$Id: ogrcsvdatasource.cpp 29897 2015-08-29 12:36:40Z rouault $");
 
 /************************************************************************/
 /*                          OGRCSVDataSource()                          */
@@ -408,6 +408,37 @@ int OGRCSVDataSource::OpenTable( const char * pszFilename,
         return FALSE;
     }
     char chDelimiter = CSVDetectSeperator(pszLine);
+    if( chDelimiter != '\t' && strchr(pszLine, '\t') != NULL )
+    {
+        /* Force the delimiter to be TAB for a .tsv file that has a tabulation */
+        /* in its first line */
+        if( EQUAL(osExt, "tsv") )
+        {
+            chDelimiter = '\t';
+        }
+        else
+        {
+            for(int bDontHonourStrings=0; bDontHonourStrings<=1; bDontHonourStrings++)
+            {
+                // Read the first 2 lines to see if they have the same number of fields, if using tabulation
+                VSIRewindL( fp );
+                char** papszTokens = OGRCSVReadParseLineL( fp, '\t', bDontHonourStrings );
+                int nTokens1 = CSLCount(papszTokens);
+                CSLDestroy(papszTokens);
+                papszTokens = OGRCSVReadParseLineL( fp, '\t', bDontHonourStrings );
+                int nTokens2 = CSLCount(papszTokens);
+                CSLDestroy(papszTokens);
+                if( nTokens1 >= 2 && nTokens1 == nTokens2 )
+                {
+                    chDelimiter = '\t';
+                    break;
+                }
+            }
+        }
+    }
+
+    VSIRewindL( fp );
+
 #if 0
     const char *pszDelimiter = CSLFetchNameValueDef( papszOpenOptions, "SEPARATOR", "AUTO");
     if( !EQUAL(pszDelimiter, "AUTO") )
@@ -429,16 +460,6 @@ int OGRCSVDataSource::OpenTable( const char * pszFilename,
     }
 #endif
 
-    /* Force the delimiter to be TAB for a .tsv file that has a tabulation */
-    /* in its first line */
-    if( EQUAL(osExt, "tsv") && chDelimiter != '\t' &&
-        strchr(pszLine, '\t') != NULL )
-    {
-        chDelimiter = '\t';
-    }
-
-    VSIRewindL( fp );
-
     /* GNIS specific */
     if (pszGeonamesGeomFieldPrefix != NULL &&
         strchr(pszLine, '|') != NULL)
diff --git a/ogr/ogrsf_frmts/csv/ogrcsvlayer.cpp b/ogr/ogrsf_frmts/csv/ogrcsvlayer.cpp
index 74ffde1..196d01b 100644
--- a/ogr/ogrsf_frmts/csv/ogrcsvlayer.cpp
+++ b/ogr/ogrsf_frmts/csv/ogrcsvlayer.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: ogrcsvlayer.cpp 29237 2015-05-24 08:38:20Z rouault $
+ * $Id: ogrcsvlayer.cpp 29897 2015-08-29 12:36:40Z rouault $
  *
  * Project:  CSV Translator
  * Purpose:  Implements OGRCSVLayer class.
@@ -34,7 +34,7 @@
 #include "cpl_csv.h"
 #include "ogr_p.h"
 
-CPL_CVSID("$Id: ogrcsvlayer.cpp 29237 2015-05-24 08:38:20Z rouault $");
+CPL_CVSID("$Id: ogrcsvlayer.cpp 29897 2015-08-29 12:36:40Z rouault $");
 
 
 
@@ -384,7 +384,6 @@ void OGRCSVLayer::BuildFeatureDefn( const char* pszNfdcGeomField,
             CPLAtof(papszTokens[4]) >= -90 && CPLAtof(papszTokens[4]) <= 90 &&
             CPLAtof(papszTokens[5]) >= -180 && CPLAtof(papszTokens[4]) <= 180)
         {
-            bHasFieldNames = TRUE;
             CSLDestroy(papszTokens);
             papszTokens = NULL;
 
@@ -425,6 +424,8 @@ void OGRCSVLayer::BuildFeatureDefn( const char* pszNfdcGeomField,
             iLongitudeField = 5;
 
             nFieldCount = 0;
+
+            bDontHonourStrings = TRUE;
         }
     }
 
diff --git a/ogr/ogrsf_frmts/dxf/ogr_autocad_services.cpp b/ogr/ogrsf_frmts/dxf/ogr_autocad_services.cpp
index ec1e013..ac2f561 100644
--- a/ogr/ogrsf_frmts/dxf/ogr_autocad_services.cpp
+++ b/ogr/ogrsf_frmts/dxf/ogr_autocad_services.cpp
@@ -456,15 +456,15 @@ void ACAdjustText( double dfAngle, double dfScale, OGRFeature *poFeature )
         if( nEndOfAngleOff == std::string::npos )
             nEndOfAngleOff = osOldStyle.find( ")", nAngleOff + 1 );
 
-        osPreAngle.assign( osOldStyle, nAngleOff );
-        osPostAngle.assign( osOldStyle.c_str() + nEndOfAngleOff );
+        osPreAngle.assign( osOldStyle, 0, nAngleOff );
+        osPostAngle.assign( osOldStyle, nEndOfAngleOff, std::string::npos );
         
         dfOldAngle = CPLAtof( osOldStyle.c_str() + nAngleOff + 3 );
     }
     else
     {
         CPLAssert( osOldStyle[osOldStyle.size()-1] == ')' );
-        osPreAngle.assign( osOldStyle, osOldStyle.size() - 1 );
+        osPreAngle.assign( osOldStyle, 0, osOldStyle.size() - 1 );
         osPostAngle = ")";
     }
 
@@ -494,15 +494,15 @@ void ACAdjustText( double dfAngle, double dfScale, OGRFeature *poFeature )
         if( nEndOfScaleOff == std::string::npos )
             nEndOfScaleOff = osOldStyle.find( ")", nScaleOff + 1 );
 
-        osPreScale.assign( osOldStyle, nScaleOff );
-        osPostScale.assign( osOldStyle.c_str() + nEndOfScaleOff );
+        osPreScale.assign( osOldStyle, 0, nScaleOff );
+        osPostScale.assign( osOldStyle, nEndOfScaleOff, std::string::npos );
         
         dfOldScale = CPLAtof( osOldStyle.c_str() + nScaleOff + 3 );
     }
     else
     {
         CPLAssert( osOldStyle[osOldStyle.size()-1] == ')' );
-        osPreScale.assign( osOldStyle, osOldStyle.size() - 1 );
+        osPreScale.assign( osOldStyle, 0, osOldStyle.size() - 1 );
         osPostScale = ")";
     }
 
diff --git a/ogr/ogrsf_frmts/filegdb/GNUmakefile b/ogr/ogrsf_frmts/filegdb/GNUmakefile
index d1c0a74..fc5ea9a 100644
--- a/ogr/ogrsf_frmts/filegdb/GNUmakefile
+++ b/ogr/ogrsf_frmts/filegdb/GNUmakefile
@@ -12,3 +12,11 @@ clean:
 	rm -f *.o $(O_OBJ)
 
 $(O_OBJ):	ogr_fgdb.h
+
+PLUGIN_SO	= ogr_FileGDB.$(SO_EXT)
+
+plugin:		$(PLUGIN_SO)
+
+$(PLUGIN_SO):	$(OBJ)
+		$(LD_SHARED) $(LNK_FLAGS) $(OBJ) $(CONFIG_LIBS_INS) $(LIBS) \
+		-o $(PLUGIN_SO)
diff --git a/ogr/ogrsf_frmts/generic/ogr_gensql.cpp b/ogr/ogrsf_frmts/generic/ogr_gensql.cpp
index f0dc888..449d52a 100644
--- a/ogr/ogrsf_frmts/generic/ogr_gensql.cpp
+++ b/ogr/ogrsf_frmts/generic/ogr_gensql.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: ogr_gensql.cpp 28927 2015-04-17 08:42:26Z rouault $
+ * $Id: ogr_gensql.cpp 29482 2015-07-06 09:24:54Z rouault $
  *
  * Project:  OpenGIS Simple Features Reference Implementation
  * Purpose:  Implements OGRGenSQLResultsLayer.
@@ -36,7 +36,7 @@
 #include "cpl_time.h"
 #include <vector>
 
-CPL_CVSID("$Id: ogr_gensql.cpp 28927 2015-04-17 08:42:26Z rouault $");
+CPL_CVSID("$Id: ogr_gensql.cpp 29482 2015-07-06 09:24:54Z rouault $");
 
 
 class OGRGenSQLGeomFieldDefn: public OGRGeomFieldDefn
@@ -994,7 +994,7 @@ int OGRGenSQLResultsLayer::PrepareSummary()
             {
                 swq_summary *psSummary = psSelectInfo->column_summary + iField;
 
-                if( psColDef->col_func == SWQCF_AVG )
+                if( psColDef->col_func == SWQCF_AVG && psSummary->count > 0 )
                 {
                     if( psColDef->field_type == SWQ_DATE ||
                         psColDef->field_type == SWQ_TIME ||
@@ -1015,7 +1015,7 @@ int OGRGenSQLResultsLayer::PrepareSummary()
                         poSummaryFeature->SetField( iField,
                                                     psSummary->sum / psSummary->count );
                 }
-                else if( psColDef->col_func == SWQCF_MIN )
+                else if( psColDef->col_func == SWQCF_MIN && psSummary->count > 0 )
                 {
                     if( psColDef->field_type == SWQ_DATE ||
                         psColDef->field_type == SWQ_TIME ||
@@ -1024,7 +1024,7 @@ int OGRGenSQLResultsLayer::PrepareSummary()
                     else
                         poSummaryFeature->SetField( iField, psSummary->min );
                 }
-                else if( psColDef->col_func == SWQCF_MAX )
+                else if( psColDef->col_func == SWQCF_MAX && psSummary->count > 0 )
                 {
                     if( psColDef->field_type == SWQ_DATE ||
                         psColDef->field_type == SWQ_TIME ||
@@ -1035,7 +1035,7 @@ int OGRGenSQLResultsLayer::PrepareSummary()
                 }
                 else if( psColDef->col_func == SWQCF_COUNT )
                     poSummaryFeature->SetField( iField, psSummary->count );
-                else if( psColDef->col_func == SWQCF_SUM )
+                else if( psColDef->col_func == SWQCF_SUM && psSummary->count > 0 )
                     poSummaryFeature->SetField( iField, psSummary->sum );
             }
             else if ( psColDef->col_func == SWQCF_COUNT )
diff --git a/ogr/ogrsf_frmts/geojson/libjson/GNUmakefile b/ogr/ogrsf_frmts/geojson/libjson/GNUmakefile
index 8106b61..3aaf445 100644
--- a/ogr/ogrsf_frmts/geojson/libjson/GNUmakefile
+++ b/ogr/ogrsf_frmts/geojson/libjson/GNUmakefile
@@ -21,8 +21,9 @@ CPPFLAGS := $(CPPFLAGS)
 
 default:	$(O_OBJ:.o=.$(OBJ_EXT))
 
+# -D_XOPEN_SOURCE=500 to enable strdup() definition in C11 mode
 ../../o/%.$(OBJ_EXT):	%.c
-	$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
+	$(CC) $(CFLAGS) $(CPPFLAGS) -D_XOPEN_SOURCE=500 -c -o $@ $<
 
 clean:
 	rm -f *.o $(O_OBJ)
diff --git a/ogr/ogrsf_frmts/mssqlspatial/ogrmssqlspatiallayer.cpp b/ogr/ogrsf_frmts/mssqlspatial/ogrmssqlspatiallayer.cpp
index 83e1b66..87cb03e 100644
--- a/ogr/ogrsf_frmts/mssqlspatial/ogrmssqlspatiallayer.cpp
+++ b/ogr/ogrsf_frmts/mssqlspatial/ogrmssqlspatiallayer.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: ogrmssqlspatiallayer.cpp 29185 2015-05-12 10:45:44Z tamas $
+ * $Id: ogrmssqlspatiallayer.cpp 29469 2015-07-04 11:42:30Z rouault $
  *
  * Project:  MSSQL Spatial driver
  * Purpose:  Definition of classes for OGR MSSQL Spatial driver.
@@ -29,7 +29,7 @@
 
 #include "ogr_mssqlspatial.h"
 
-CPL_CVSID("$Id: ogrmssqlspatiallayer.cpp 29185 2015-05-12 10:45:44Z tamas $");
+CPL_CVSID("$Id: ogrmssqlspatiallayer.cpp 29469 2015-07-04 11:42:30Z rouault $");
 /************************************************************************/
 /*                        OGRMSSQLSpatialLayer()                        */
 /************************************************************************/
@@ -482,7 +482,7 @@ OGRErr OGRMSSQLSpatialLayer::StartTransaction()
 {
     if (!poDS->GetSession()->BeginTransaction())
     {
-        CPLError( CE_Failure, CPLE_AppDefined,
+        CPLError( CE_Failure, CPLE_AppDefined,
                     "Failed to start transaction: %s", poDS->GetSession()->GetLastError() );
         return OGRERR_FAILURE;
     }
@@ -498,7 +498,7 @@ OGRErr OGRMSSQLSpatialLayer::CommitTransaction()
 {
     if (!poDS->GetSession()->CommitTransaction())
     {
-        CPLError( CE_Failure, CPLE_AppDefined,
+        CPLError( CE_Failure, CPLE_AppDefined,
                     "Failed to commit transaction: %s", poDS->GetSession()->GetLastError() );
         return OGRERR_FAILURE;
     }
@@ -514,7 +514,7 @@ OGRErr OGRMSSQLSpatialLayer::RollbackTransaction()
 {
     if (!poDS->GetSession()->RollbackTransaction())
     {
-        CPLError( CE_Failure, CPLE_AppDefined,
+        CPLError( CE_Failure, CPLE_AppDefined,
                     "Failed to roll back transaction: %s", poDS->GetSession()->GetLastError() );
         return OGRERR_FAILURE;
     }
diff --git a/ogr/ogrsf_frmts/oci/GNUmakefile b/ogr/ogrsf_frmts/oci/GNUmakefile
index 5cd9dc5..79db765 100644
--- a/ogr/ogrsf_frmts/oci/GNUmakefile
+++ b/ogr/ogrsf_frmts/oci/GNUmakefile
@@ -7,14 +7,14 @@ OBJ	=	oci_utils.o ogrocisession.o ogrocistatement.o \
 		ogrocitablelayer.o ogrociselectlayer.o ogrocistringbuf.o \
 		ogrociwritablelayer.o ogrociloaderlayer.o ogrocistroke.o
 
-CPPFLAGS	:=	 $(GDAL_INCLUDE) $(OCI_INCLUDE) $(CPPFLAGS) -fPIC
+CPPFLAGS	:=	$(OCI_INCLUDE) $(CPPFLAGS)
 
-PLUGIN_SO	=	ogr_OCI.so
+PLUGIN_SO	=	ogr_OCI.$(SO_EXT)
 
 default:	$(O_OBJ:.o=.$(OBJ_EXT))
 
 clean:
-	rm -f *.o $(O_OBJ)
+	rm -f *.o $(O_OBJ) $(PLUGIN_SO)
 
 $(O_OBJ):	ogr_oci.h 
 
diff --git a/ogr/ogrsf_frmts/pg/GNUmakefile b/ogr/ogrsf_frmts/pg/GNUmakefile
index 4d333ab..099b996 100644
--- a/ogr/ogrsf_frmts/pg/GNUmakefile
+++ b/ogr/ogrsf_frmts/pg/GNUmakefile
@@ -12,4 +12,12 @@ default:	$(O_OBJ:.o=.$(OBJ_EXT))
 clean:
 	rm -f *.o $(O_OBJ)
 
-$(O_OBJ):	ogr_pg.h ogrpgutility.h
\ No newline at end of file
+$(O_OBJ):	ogr_pg.h ogrpgutility.h
+
+PLUGIN_SO	= ogr_PG.$(SO_EXT)
+
+plugin:		$(PLUGIN_SO)
+
+$(PLUGIN_SO):	$(OBJ)
+		$(LD_SHARED) $(LNK_FLAGS) $(OBJ) $(CONFIG_LIBS_INS) $(LIBS) \
+		-o $(PLUGIN_SO)
diff --git a/ogr/ogrsf_frmts/pg/ogrpgdatasource.cpp b/ogr/ogrsf_frmts/pg/ogrpgdatasource.cpp
index deccd70..859bad0 100644
--- a/ogr/ogrsf_frmts/pg/ogrpgdatasource.cpp
+++ b/ogr/ogrsf_frmts/pg/ogrpgdatasource.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: ogrpgdatasource.cpp 29019 2015-04-25 20:34:19Z rouault $
+ * $Id: ogrpgdatasource.cpp 29465 2015-07-03 08:51:45Z rouault $
  *
  * Project:  OpenGIS Simple Features Reference Implementation
  * Purpose:  Implements OGRPGDataSource class.
@@ -37,7 +37,7 @@
 
 #define PQexec this_is_an_error
 
-CPL_CVSID("$Id: ogrpgdatasource.cpp 29019 2015-04-25 20:34:19Z rouault $");
+CPL_CVSID("$Id: ogrpgdatasource.cpp 29465 2015-07-03 08:51:45Z rouault $");
 
 static void OGRPGNoticeProcessor( void *arg, const char * pszMessage );
 
@@ -1298,6 +1298,8 @@ int OGRPGDataSource::DeleteLayer( int iLayer )
     if( iLayer < 0 || iLayer >= nLayers )
         return OGRERR_FAILURE;
 
+    EndCopy();
+
 /* -------------------------------------------------------------------- */
 /*      Blow away our OGR structures related to the layer.  This is     */
 /*      pretty dangerous if anything has a reference to this layer!     */
diff --git a/ogr/ogrsf_frmts/shape/ogrshapedriver.cpp b/ogr/ogrsf_frmts/shape/ogrshapedriver.cpp
index 21f460c..e0826fa 100644
--- a/ogr/ogrsf_frmts/shape/ogrshapedriver.cpp
+++ b/ogr/ogrsf_frmts/shape/ogrshapedriver.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: ogrshapedriver.cpp 28375 2015-01-30 12:06:11Z rouault $
+ * $Id: ogrshapedriver.cpp 29528 2015-07-15 17:01:23Z rouault $
  *
  * Project:  OpenGIS Simple Features Reference Implementation
  * Purpose:  Implements OGRShapeDriver class.
@@ -31,7 +31,7 @@
 #include "cpl_conv.h"
 #include "cpl_string.h"
 
-CPL_CVSID("$Id: ogrshapedriver.cpp 28375 2015-01-30 12:06:11Z rouault $");
+CPL_CVSID("$Id: ogrshapedriver.cpp 29528 2015-07-15 17:01:23Z rouault $");
 
 /************************************************************************/
 /*                              Identify()                              */
@@ -60,8 +60,12 @@ static int OGRShapeDriverIdentify( GDALOpenInfo* poOpenInfo )
         unsigned int nRecordLength = pabyBuf[10] + pabyBuf[11]*256;
         if( nHeadLen < 32 )
             return FALSE;
-        if( (nHeadLen % 32) != 0 && (nHeadLen % 32) != 1 )
-            return FALSE;
+        // The header length of some .dbf files can be a non-multiple of 32
+        // See https://trac.osgeo.org/gdal/ticket/6035
+        // Hopefully there are not so many .dbf files around that are not real
+        // DBFs
+        //if( (nHeadLen % 32) != 0 && (nHeadLen % 32) != 1 )
+        //    return FALSE;
         unsigned int nFields = (nHeadLen - 32) / 32;
         if( nRecordLength < nFields )
             return FALSE;
diff --git a/ogr/ogrsf_frmts/sosi/fyba_melding.cpp b/ogr/ogrsf_frmts/sosi/fyba_melding.cpp
index 7edb976..7eda5e4 100644
--- a/ogr/ogrsf_frmts/sosi/fyba_melding.cpp
+++ b/ogr/ogrsf_frmts/sosi/fyba_melding.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: fyba_melding.cpp 27897 2014-10-23 12:20:01Z jef $
+ * $Id: fyba_melding.cpp 29469 2015-07-04 11:42:30Z rouault $
  *
  * Project:  FYBA Callbacks
  * Purpose:  Needed by FYBA - however we do not want to display most messages
@@ -7,7 +7,7 @@
  *
  ******************************************************************************
  * Copyright (c) 2010, Thomas Hirsch
- * Copyright (c) 2010, Even Rouault <even dot rouault at mines-paris dot org>
+ * Copyright (c) 2010, Even Rouault <even dot rouault at mines-paris dot org>
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
diff --git a/ogr/ogrsf_frmts/sqlite/ogrsqliteselectlayer.cpp b/ogr/ogrsf_frmts/sqlite/ogrsqliteselectlayer.cpp
index ca64c55..a3f1f24 100644
--- a/ogr/ogrsf_frmts/sqlite/ogrsqliteselectlayer.cpp
+++ b/ogr/ogrsf_frmts/sqlite/ogrsqliteselectlayer.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: ogrsqliteselectlayer.cpp 28928 2015-04-17 10:24:19Z rouault $
+ * $Id: ogrsqliteselectlayer.cpp 30272 2015-09-11 07:58:08Z rouault $
  *
  * Project:  OpenGIS Simple Features Reference Implementation
  * Purpose:  Implements OGRSQLiteSelectLayer class, layer access to the results
@@ -34,7 +34,7 @@
 #include "swq.h"
 #include "ogr_p.h"
 
-CPL_CVSID("$Id: ogrsqliteselectlayer.cpp 28928 2015-04-17 10:24:19Z rouault $");
+CPL_CVSID("$Id: ogrsqliteselectlayer.cpp 30272 2015-09-11 07:58:08Z rouault $");
 
 /************************************************************************/
 /*                   OGRSQLiteSelectLayerCommonBehaviour()              */
@@ -419,22 +419,26 @@ std::pair<OGRLayer*, IOGRSQLiteGetSpatialWhere*> OGRSQLiteSelectLayerCommonBehav
         return std::pair<OGRLayer*, IOGRSQLiteGetSpatialWhere*>((OGRLayer*)NULL, (IOGRSQLiteGetSpatialWhere*)NULL);
     }
 
-    char chQuote = osSQLBase[nFromPos + 6];
-    int bInQuotes = (chQuote == '\'' || chQuote == '"' );
+    /* Remove potential quotes around layer name */
+    char chFirst = osSQLBase[nFromPos + 6];
+    int bInQuotes = (chFirst == '\'' || chFirst == '"' );
     CPLString osBaseLayerName;
     for( i = nFromPos + 6 + (bInQuotes ? 1 : 0);
          i < osSQLBase.size(); i++ )
     {
-        if (osSQLBase[i] == chQuote && i + 1 < osSQLBase.size() &&
-            osSQLBase[i + 1] == chQuote )
+        if (osSQLBase[i] == chFirst && bInQuotes )
         {
-            osBaseLayerName += osSQLBase[i];
-            i++;
-        }
-        else if (osSQLBase[i] == chQuote && bInQuotes)
-        {
-            i++;
-            break;
+            if( i + 1 < osSQLBase.size() &&
+                osSQLBase[i + 1] == chFirst )
+            {
+                osBaseLayerName += osSQLBase[i];
+                i++;
+            }
+            else
+            {
+                i++;
+                break;
+            }
         }
         else if (osSQLBase[i] == ' ' && !bInQuotes)
             break;
@@ -650,6 +654,7 @@ OGRErr OGRSQLiteSelectLayerCommonBehaviour::GetExtent(int iGeomField, OGREnvelop
     /* the layer extent. */
     size_t nOrderByPos = osSQLCommand.ifind(" ORDER BY ");
     if( osSQLCommand.ifind("SELECT ") == 0 &&
+        osSQLCommand.ifind("SELECT ", 1) == std::string::npos && /* Ensure there's no sub SELECT that could confuse our heuristics */
         nOrderByPos != std::string::npos &&
         osSQLCommand.ifind(" LIMIT ") == std::string::npos &&
         osSQLCommand.ifind(" UNION ") == std::string::npos &&
diff --git a/ogr/ogrsf_frmts/sqlite/ogrsqlitetablelayer.cpp b/ogr/ogrsf_frmts/sqlite/ogrsqlitetablelayer.cpp
index 1cad026..0690d42 100644
--- a/ogr/ogrsf_frmts/sqlite/ogrsqlitetablelayer.cpp
+++ b/ogr/ogrsf_frmts/sqlite/ogrsqlitetablelayer.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: ogrsqlitetablelayer.cpp 29330 2015-06-14 12:11:11Z rouault $
+ * $Id: ogrsqlitetablelayer.cpp 30254 2015-09-10 15:40:33Z rouault $
  *
  * Project:  OpenGIS Simple Features Reference Implementation
  * Purpose:  Implements OGRSQLiteTableLayer class, access to an existing table.
@@ -37,7 +37,7 @@
 
 #define UNSUPPORTED_OP_READ_ONLY "%s : unsupported operation on a read-only datasource."
 
-CPL_CVSID("$Id: ogrsqlitetablelayer.cpp 29330 2015-06-14 12:11:11Z rouault $");
+CPL_CVSID("$Id: ogrsqlitetablelayer.cpp 30254 2015-09-10 15:40:33Z rouault $");
 
 /************************************************************************/
 /*                        OGRSQLiteTableLayer()                         */
@@ -197,7 +197,7 @@ CPLErr OGRSQLiteTableLayer::Initialize( const char *pszTableName,
             pszEscapedTableName = CPLStrdup(OGRSQLiteEscape(pszTableName));
             EstablishFeatureDefn(pszGeomCol);
             CPLFree(pszGeomCol);
-            if( poFeatureDefn->GetGeomFieldCount() == 0 )
+            if( poFeatureDefn == NULL || poFeatureDefn->GetGeomFieldCount() == 0 )
                 return CE_Failure;
         }
     }
diff --git a/ogr/ogrsf_frmts/walk/ogrwalklayer.cpp b/ogr/ogrsf_frmts/walk/ogrwalklayer.cpp
index 385d537..d2bbd20 100644
--- a/ogr/ogrsf_frmts/walk/ogrwalklayer.cpp
+++ b/ogr/ogrsf_frmts/walk/ogrwalklayer.cpp
@@ -114,9 +114,9 @@ CPLErr OGRWalkLayer::BuildFeatureDefn( const char *pszLayerName,
                 oField.SetType( OFTInteger );
                 break;
 
-            case SQL_C_SBIGINT:
-            case SQL_C_UBIGINT:
-                oField.SetType( OFTInteger64 );
+            case SQL_C_SBIGINT:
+            case SQL_C_UBIGINT:
+                oField.SetType( OFTInteger64 );
                 break;
 
             case SQL_C_BINARY:
diff --git a/ogr/ogrsf_frmts/xplane/drv_xplane.html b/ogr/ogrsf_frmts/xplane/drv_xplane.html
index aaf0bd6..946018c 100644
--- a/ogr/ogrsf_frmts/xplane/drv_xplane.html
+++ b/ogr/ogrsf_frmts/xplane/drv_xplane.html
@@ -93,7 +93,7 @@ position of the first runway threshold found.<p>
 
 Fields:
 <ul>
-<li>apt_icao: String (4.0). ICAO code for the airport.
+<li>apt_icao: String (5.0). ICAO code for the airport.
 <li>apt_name: String (0.0). Full name of the airport.
 <li>type: Integer (1.0). Airport type : 0 for regular airport, 1 for seaplane/floatplane base, 2 for heliport (added in GDAL 1.7.0)
 <li>elevation_m: Real (8.2). Elevation of the airport (in meters).
@@ -114,7 +114,7 @@ the non-displaced threshold position (is_displaced=0), and another one at the di
 
 Fields:
 <ul>
-<li>apt_icao: String (4.0). ICAO code for the airport of this runway threshold.
+<li>apt_icao: String (5.0). ICAO code for the airport of this runway threshold.
 <li>rwy_num: String (3.0). Code for the runway, such as 18, 02L, etc... Unique for each aiport.
 <li>width_m: Real (3.0). Width in meters.
 <li>surface: String (0.0). Type of the <a name="surface">surface</a> among :
@@ -194,7 +194,7 @@ When not specified, the meaning of the fields is the same as the <a href="#Runwa
 
 Fields:
 <ul>
-<li>apt_icao: String (4.0)
+<li>apt_icao: String (5.0)
 <li>rwy_num1: String (3.0). Code for first runway threshold. For example 20L.
 <li>rwy_num2: String (3.0). Code for the second the runway threshold. For example 02R.
 <li>width_m: Real (3.0)
@@ -213,7 +213,7 @@ Fields:
 
 Fields:
 <ul>
-<li>apt_icao: String (4.0)
+<li>apt_icao: String (5.0)
 <li>rwy_num: String (3.0). Code for the runway, such as 18. Unique for each aiport.
 <li>width_m: Real (3.0)
 <li>has_buoys: Integer (1.0). Set to 1 if the runway should be marked with buoys bobbing in the water
@@ -227,7 +227,7 @@ This layer contains the rectangular shape of a water runway. It is computed from
 
 Fields:
 <ul>
-<li>apt_icao: String (4.0)
+<li>apt_icao: String (5.0)
 <li>rwy_num1: String (3.0)
 <li>rwy_num2: String (3.0)
 <li>width_m: Real (3.0)
@@ -248,7 +248,7 @@ When not specified, the meaning of the fields is the same as the <a href="#Runwa
 
 Fields:
 <ul>
-<li>apt_icao: String (4.0)
+<li>apt_icao: String (5.0)
 <li>rwy_num: String (3.0).
 <li>width_m: Real (3.0)
 <li>length_m: Real (5.0) : Length of stopway/blastpad/over-run at the approach end of runway in meters.
@@ -260,7 +260,7 @@ This layer contains the center of a helipad.
 
 Fields:
 <ul>
-<li>apt_icao: String (4.0)
+<li>apt_icao: String (5.0)
 <li>helipad_name: String (5.0). Name of the helipad in the format "Hxx". Unique for each aiport.
 <li>true_heading_deg: Real (6.2)
 <li>length_m: Real (5.0)
@@ -290,7 +290,7 @@ This layer contains the rectangular shape of a taxiway.
 
 Fields:
 <ul>
-<li>apt_icao: String (4.0)
+<li>apt_icao: String (5.0)
 <li>true_heading_deg: Real (6.2)
 <li>length_m: Real (5.0)
 <li>width_m: Real (3.0)
@@ -306,7 +306,7 @@ The source file may contain Bezier curves as sides of the polygon. Due to the la
 
 Fields:
 <ul>
-<li>apt_icao: String (4.0)
+<li>apt_icao: String (5.0)
 <li>name: String (0.0)
 <li>surface: String (0.0). See above runway <a href="#surface">surface</a> codes.
 <li>smoothness: Real (4.2). See above runway <a href="#smoothness">smoothness</a> description.
@@ -320,7 +320,7 @@ The polygon may include holes. Bezier curves are discretized into linear pieces.
 
 Fields:
 <ul>
-<li>apt_icao: String (4.0)
+<li>apt_icao: String (5.0)
 <li>name: String (0.0)
 </ul>
 
@@ -330,7 +330,7 @@ This layer contains linear features. Bezier curves are discretized into linear p
 
 Fields:
 <ul>
-<li>apt_icao: String (4.0)
+<li>apt_icao: String (5.0)
 <li>name: String (0.0)
 </ul>
 
@@ -340,7 +340,7 @@ Define gate positions, ramp locations etc.<p>
 
 Fields:
 <ul>
-<li>apt_icao: String (4.0)
+<li>apt_icao: String (5.0)
 <li>name: String (0.0)
 <li>true_heading_deg: Real (6.2)
 </ul>
@@ -351,7 +351,7 @@ Define airport light beacons.<p>
 
 Fields:
 <ul>
-<li>apt_icao: String (4.0)
+<li>apt_icao: String (5.0)
 <li>name: String (0.0)
 <li>color: String (0.0). Color of the light beacon among :
     <ul>
@@ -369,7 +369,7 @@ Define airport windsocks.<p>
 
 Fields:
 <ul>
-<li>apt_icao: String (4.0)
+<li>apt_icao: String (5.0)
 <li>name: String (0.0)
 <li>is_illuminated: Integer (1.0)
 </li>
@@ -381,7 +381,7 @@ Define airport taxiway signs.<p>
 
 Fields:
 <ul>
-<li>apt_icao: String (4.0)
+<li>apt_icao: String (5.0)
 <li>text: String (0.0). This is somehow encoded into a specific format. See X-Plane <a href="http://x-plane.org/home/robinp/Apt850.htm#SignTextSpec">specification</a> for more details.
 <li>true_heading_deg: Real (6.2)
 <li>size: Integer (1.0). From 1 to 5. See X-Plane specification for more details.
@@ -393,7 +393,7 @@ Define a VASI, PAPI or Wig-Wag. For PAPIs and Wig-Wags, the coordinate is the ce
 
 Fields:
 <ul>
-<li>apt_icao: String (4.0)
+<li>apt_icao: String (5.0)
 <li>rwy_num: String (3.0). Foreign key to the rwy_num field of the <a href="#RunwayThreshold">RunwayThreshold</a> layer.
 <li>type: String (0.0). Type among :
     <ul>
@@ -414,7 +414,7 @@ Define an airport ATC frequency. Note that this layer has no geometry.<p>
 
 Fields:
 <ul>
-<li>apt_icao: String (4.0)
+<li>apt_icao: String (5.0)
 <li>atc_type: String (4.0). Type of the frequency among (derived from the record type number) :
     <ul>
         <li>ATIS : AWOS (Automatic Weather Observation System), ASOS (Automatic Surface Observation System) or ATIS (Automated Terminal Information System)
@@ -453,7 +453,7 @@ Localiser that is part of a full ILS, or Stand-alone localiser (LOC), also inclu
 Fields :
 <ul>
 <li>navaid_id: String (4.0). Identification of nav-aid. *NOT* unique.
-<li>apt_icao: String (4.0). Foreign key to the apt_icao field of the <a href="#RunwayThreshold">RunwayThreshold</a> layer.
+<li>apt_icao: String (5.0). Foreign key to the apt_icao field of the <a href="#RunwayThreshold">RunwayThreshold</a> layer.
 <li>rwy_num: String (3.0). Foreign key to the rwy_num field of the <a href="#RunwayThreshold">RunwayThreshold</a> layer.
 <li>subtype: String (10.0). Sub-type among :
     <ul>
@@ -506,7 +506,7 @@ Glideslope nav-aid.<p>
 Fields :
 <ul>
 <li>navaid_id: String (4.0). Identification of nav-aid. *NOT* unique.
-<li>apt_icao: String (4.0). Foreign key to the apt_icao field of the <a href="#RunwayThreshold">RunwayThreshold</a> layer.
+<li>apt_icao: String (5.0). Foreign key to the apt_icao field of the <a href="#RunwayThreshold">RunwayThreshold</a> layer.
 <li>rwy_num: String (3.0). Foreign key to the rwy_num field of the <a href="#RunwayThreshold">RunwayThreshold</a> layer.
 <li>elevation_m: Real (8.2)
 <li>freq_mhz: Real (7.3)
@@ -521,7 +521,7 @@ Nav-aids of type Outer Marker (OM), Middle Marker (MM) or Inner Marker (IM).<p>
 
 Fields:
 <ul>
-<li>apt_icao: String (4.0). Foreign key to the apt_icao field of the <a href="#RunwayThreshold">RunwayThreshold</a> layer.
+<li>apt_icao: String (5.0). Foreign key to the apt_icao field of the <a href="#RunwayThreshold">RunwayThreshold</a> layer.
 <li>rwy_num: String (3.0). Foreign key to the rwy_num field of the <a href="#RunwayThreshold">RunwayThreshold</a> layer.
 <li>subtype: String (10.0). Among OM, MM or IM.
 <li>elevation_m: Real (8.2)
@@ -550,7 +550,7 @@ DME element of an ILS.<p>
 Fields:
 <ul>
 <li>navaid_id: String (4.0). Identification of nav-aid. *NOT* unique.
-<li>apt_icao: String (4.0). Foreign key to the apt_icao field of the <a href="#RunwayThreshold">RunwayThreshold</a> layer.
+<li>apt_icao: String (5.0). Foreign key to the apt_icao field of the <a href="#RunwayThreshold">RunwayThreshold</a> layer.
 <li>rwy_num: String (3.0). Foreign key to the rwy_num field of the <a href="#RunwayThreshold">RunwayThreshold</a> layer.
 <li>elevation_m: Real (8.2)
 <li>freq_mhz: Real (7.3)
diff --git a/ogr/ogrsf_frmts/xplane/ogr_xplane_apt_reader.cpp b/ogr/ogrsf_frmts/xplane/ogr_xplane_apt_reader.cpp
index f993629..1f52934 100644
--- a/ogr/ogrsf_frmts/xplane/ogr_xplane_apt_reader.cpp
+++ b/ogr/ogrsf_frmts/xplane/ogr_xplane_apt_reader.cpp
@@ -30,7 +30,7 @@
 #include "ogr_xplane_apt_reader.h"
 #include "ogr_xplane_geo_utils.h"
 
-CPL_CVSID("$Id: ogr_xplane_apt_reader.cpp 29211 2015-05-19 19:40:57Z rouault $");
+CPL_CVSID("$Id: ogr_xplane_apt_reader.cpp 29366 2015-06-16 17:17:49Z rouault $");
 
 /************************************************************************/
 /*                   OGRXPlaneCreateAptFileReader                       */
@@ -1854,7 +1854,7 @@ OGRXPlaneAPTLayer::OGRXPlaneAPTLayer() : OGRXPlaneLayer("APT")
     poFeatureDefn->SetGeomType( wkbPoint );
 
     OGRFieldDefn oFieldID("apt_icao", OFTString );
-    oFieldID.SetWidth( 4 );
+    oFieldID.SetWidth( 5 );
     poFeatureDefn->AddFieldDefn( &oFieldID );
 
     OGRFieldDefn oFieldName("apt_name", OFTString );
@@ -1937,7 +1937,7 @@ OGRXPlaneRunwayThresholdLayer::OGRXPlaneRunwayThresholdLayer() : OGRXPlaneLayer(
     poFeatureDefn->SetGeomType( wkbPoint );
 
     OGRFieldDefn oFieldAptICAO("apt_icao", OFTString );
-    oFieldAptICAO.SetWidth( 4 );
+    oFieldAptICAO.SetWidth( 5 );
     poFeatureDefn->AddFieldDefn( &oFieldAptICAO );
 
     OGRFieldDefn oFieldRwyNum("rwy_num", OFTString );
@@ -2100,7 +2100,7 @@ OGRXPlaneRunwayLayer::OGRXPlaneRunwayLayer() : OGRXPlaneLayer("RunwayPolygon")
     poFeatureDefn->SetGeomType( wkbPolygon );
 
     OGRFieldDefn oFieldAptICAO("apt_icao", OFTString );
-    oFieldAptICAO.SetWidth( 4 );
+    oFieldAptICAO.SetWidth( 5 );
     poFeatureDefn->AddFieldDefn( &oFieldAptICAO );
 
     OGRFieldDefn oFieldRwyNum1("rwy_num1", OFTString );
@@ -2221,7 +2221,7 @@ OGRXPlaneStopwayLayer::OGRXPlaneStopwayLayer() : OGRXPlaneLayer("Stopway")
     poFeatureDefn->SetGeomType( wkbPolygon );
 
     OGRFieldDefn oFieldAptICAO("apt_icao", OFTString );
-    oFieldAptICAO.SetWidth( 4 );
+    oFieldAptICAO.SetWidth( 5 );
     poFeatureDefn->AddFieldDefn( &oFieldAptICAO );
 
     OGRFieldDefn oFieldRwyNum1("rwy_num", OFTString );
@@ -2294,7 +2294,7 @@ OGRXPlaneWaterRunwayThresholdLayer::OGRXPlaneWaterRunwayThresholdLayer() : OGRXP
     poFeatureDefn->SetGeomType( wkbPoint );
 
     OGRFieldDefn oFieldAptICAO("apt_icao", OFTString );
-    oFieldAptICAO.SetWidth( 4 );
+    oFieldAptICAO.SetWidth( 5 );
     poFeatureDefn->AddFieldDefn( &oFieldAptICAO );
 
     OGRFieldDefn oFieldRwyNum("rwy_num", OFTString );
@@ -2365,7 +2365,7 @@ OGRXPlaneWaterRunwayLayer::OGRXPlaneWaterRunwayLayer() : OGRXPlaneLayer("WaterRu
     poFeatureDefn->SetGeomType( wkbPolygon );
 
     OGRFieldDefn oFieldAptICAO("apt_icao", OFTString );
-    oFieldAptICAO.SetWidth( 4 );
+    oFieldAptICAO.SetWidth( 5 );
     poFeatureDefn->AddFieldDefn( &oFieldAptICAO );
 
     OGRFieldDefn oFieldRwyNum1("rwy_num1", OFTString );
@@ -2456,7 +2456,7 @@ OGRXPlaneHelipadLayer::OGRXPlaneHelipadLayer() : OGRXPlaneLayer("Helipad")
     poFeatureDefn->SetGeomType( wkbPoint );
 
     OGRFieldDefn oFieldAptICAO("apt_icao", OFTString );
-    oFieldAptICAO.SetWidth( 4 );
+    oFieldAptICAO.SetWidth( 5 );
     poFeatureDefn->AddFieldDefn( &oFieldAptICAO );
 
     OGRFieldDefn oFieldHelipadName("helipad_name", OFTString );
@@ -2542,7 +2542,7 @@ OGRXPlaneHelipadPolygonLayer::OGRXPlaneHelipadPolygonLayer() : OGRXPlaneLayer("H
     poFeatureDefn->SetGeomType( wkbPolygon );
 
     OGRFieldDefn oFieldAptICAO("apt_icao", OFTString );
-    oFieldAptICAO.SetWidth( 4 );
+    oFieldAptICAO.SetWidth( 5 );
     poFeatureDefn->AddFieldDefn( &oFieldAptICAO );
 
     OGRFieldDefn oFieldHelipadName("helipad_name", OFTString );
@@ -2651,7 +2651,7 @@ OGRXPlaneTaxiwayRectangleLayer::OGRXPlaneTaxiwayRectangleLayer() : OGRXPlaneLaye
     poFeatureDefn->SetGeomType( wkbPolygon );
 
     OGRFieldDefn oFieldAptICAO("apt_icao", OFTString );
-    oFieldAptICAO.SetWidth( 4 );
+    oFieldAptICAO.SetWidth( 5 );
     poFeatureDefn->AddFieldDefn( &oFieldAptICAO );
 
     OGRFieldDefn oFieldTrueHeading("true_heading_deg", OFTReal );
@@ -2745,7 +2745,7 @@ OGRXPlanePavementLayer::OGRXPlanePavementLayer() : OGRXPlaneLayer("Pavement")
     poFeatureDefn->SetGeomType( wkbPolygon );
 
     OGRFieldDefn oFieldAptICAO("apt_icao", OFTString );
-    oFieldAptICAO.SetWidth( 4 );
+    oFieldAptICAO.SetWidth( 5 );
     poFeatureDefn->AddFieldDefn( &oFieldAptICAO );
 
     OGRFieldDefn oFieldName("name", OFTString );
@@ -2806,7 +2806,7 @@ OGRXPlaneAPTBoundaryLayer::OGRXPlaneAPTBoundaryLayer() : OGRXPlaneLayer("APTBoun
     poFeatureDefn->SetGeomType( wkbPolygon );
 
     OGRFieldDefn oFieldAptICAO("apt_icao", OFTString );
-    oFieldAptICAO.SetWidth( 4 );
+    oFieldAptICAO.SetWidth( 5 );
     poFeatureDefn->AddFieldDefn( &oFieldAptICAO );
 
     OGRFieldDefn oFieldName("name", OFTString );
@@ -2846,7 +2846,7 @@ OGRXPlaneAPTLinearFeatureLayer::OGRXPlaneAPTLinearFeatureLayer() : OGRXPlaneLaye
     poFeatureDefn->SetGeomType( wkbMultiLineString );
 
     OGRFieldDefn oFieldAptICAO("apt_icao", OFTString );
-    oFieldAptICAO.SetWidth( 4 );
+    oFieldAptICAO.SetWidth( 5 );
     poFeatureDefn->AddFieldDefn( &oFieldAptICAO );
 
     OGRFieldDefn oFieldName("name", OFTString );
@@ -2886,7 +2886,7 @@ OGRXPlaneATCFreqLayer::OGRXPlaneATCFreqLayer() : OGRXPlaneLayer("ATCFreq")
     poFeatureDefn->SetGeomType( wkbNone );
 
     OGRFieldDefn oFieldAptICAO("apt_icao", OFTString );
-    oFieldAptICAO.SetWidth( 4 );
+    oFieldAptICAO.SetWidth( 5 );
     poFeatureDefn->AddFieldDefn( &oFieldAptICAO );
 
     OGRFieldDefn oFieldATCFreqType("atc_type", OFTString );
@@ -2934,7 +2934,7 @@ OGRXPlaneStartupLocationLayer::OGRXPlaneStartupLocationLayer() : OGRXPlaneLayer(
     poFeatureDefn->SetGeomType( wkbPoint );
 
     OGRFieldDefn oFieldAptICAO("apt_icao", OFTString );
-    oFieldAptICAO.SetWidth( 4 );
+    oFieldAptICAO.SetWidth( 5 );
     poFeatureDefn->AddFieldDefn( &oFieldAptICAO );
 
     OGRFieldDefn oFieldName("name", OFTString );
@@ -2979,7 +2979,7 @@ OGRXPlaneAPTLightBeaconLayer::OGRXPlaneAPTLightBeaconLayer() : OGRXPlaneLayer("A
     poFeatureDefn->SetGeomType( wkbPoint );
 
     OGRFieldDefn oFieldAptICAO("apt_icao", OFTString );
-    oFieldAptICAO.SetWidth( 4 );
+    oFieldAptICAO.SetWidth( 5 );
     poFeatureDefn->AddFieldDefn( &oFieldAptICAO );
 
     OGRFieldDefn oFieldName("name", OFTString );
@@ -3021,7 +3021,7 @@ OGRXPlaneAPTWindsockLayer::OGRXPlaneAPTWindsockLayer() : OGRXPlaneLayer("APTWind
     poFeatureDefn->SetGeomType( wkbPoint );
 
     OGRFieldDefn oFieldAptICAO("apt_icao", OFTString );
-    oFieldAptICAO.SetWidth( 4 );
+    oFieldAptICAO.SetWidth( 5 );
     poFeatureDefn->AddFieldDefn( &oFieldAptICAO );
 
     OGRFieldDefn oFieldName("name", OFTString );
@@ -3065,7 +3065,7 @@ OGRXPlaneTaxiwaySignLayer::OGRXPlaneTaxiwaySignLayer() : OGRXPlaneLayer("Taxiway
     poFeatureDefn->SetGeomType( wkbPoint );
 
     OGRFieldDefn oFieldAptICAO("apt_icao", OFTString );
-    oFieldAptICAO.SetWidth( 4 );
+    oFieldAptICAO.SetWidth( 5 );
     poFeatureDefn->AddFieldDefn( &oFieldAptICAO );
 
     OGRFieldDefn oFieldText("text", OFTString );
@@ -3116,7 +3116,7 @@ OGRXPlane_VASI_PAPI_WIGWAG_Layer::OGRXPlane_VASI_PAPI_WIGWAG_Layer() : OGRXPlane
     poFeatureDefn->SetGeomType( wkbPoint );
 
     OGRFieldDefn oFieldAptICAO("apt_icao", OFTString );
-    oFieldAptICAO.SetWidth( 4 );
+    oFieldAptICAO.SetWidth( 5 );
     poFeatureDefn->AddFieldDefn( &oFieldAptICAO );
 
     OGRFieldDefn oFieldRwyNum("rwy_num", OFTString );
@@ -3173,7 +3173,7 @@ OGRXPlaneTaxiLocationLayer::OGRXPlaneTaxiLocationLayer() : OGRXPlaneLayer("TaxiL
     poFeatureDefn->SetGeomType( wkbPoint );
 
     OGRFieldDefn oFieldAptICAO("apt_icao", OFTString );
-    oFieldAptICAO.SetWidth( 4 );
+    oFieldAptICAO.SetWidth( 5 );
     poFeatureDefn->AddFieldDefn( &oFieldAptICAO );
 
     OGRFieldDefn oFieldTrueHeading("true_heading_deg", OFTReal );
diff --git a/ogr/ogrsf_frmts/xplane/ogr_xplane_nav_reader.cpp b/ogr/ogrsf_frmts/xplane/ogr_xplane_nav_reader.cpp
index 1712aad..d7e4046 100644
--- a/ogr/ogrsf_frmts/xplane/ogr_xplane_nav_reader.cpp
+++ b/ogr/ogrsf_frmts/xplane/ogr_xplane_nav_reader.cpp
@@ -29,7 +29,7 @@
 
 #include "ogr_xplane_nav_reader.h"
 
-CPL_CVSID("$Id: ogr_xplane_nav_reader.cpp 27745 2014-09-27 16:38:57Z goatbar $");
+CPL_CVSID("$Id: ogr_xplane_nav_reader.cpp 29366 2015-06-16 17:17:49Z rouault $");
 
 /************************************************************************/
 /*                   OGRXPlaneCreateNavFileReader                       */
@@ -417,7 +417,7 @@ OGRXPlaneILSLayer::OGRXPlaneILSLayer() : OGRXPlaneLayer("ILS")
     poFeatureDefn->AddFieldDefn( &oFieldID );
 
     OGRFieldDefn oFieldAptICAO("apt_icao", OFTString );
-    oFieldAptICAO.SetWidth( 4 );
+    oFieldAptICAO.SetWidth( 5 );
     poFeatureDefn->AddFieldDefn( &oFieldAptICAO );
 
     OGRFieldDefn oFieldRwyNum("rwy_num", OFTString );
@@ -631,7 +631,7 @@ OGRXPlaneGSLayer::OGRXPlaneGSLayer() : OGRXPlaneLayer("GS")
     poFeatureDefn->AddFieldDefn( &oFieldID );
 
     OGRFieldDefn oFieldAptICAO("apt_icao", OFTString );
-    oFieldAptICAO.SetWidth( 4 );
+    oFieldAptICAO.SetWidth( 5 );
     poFeatureDefn->AddFieldDefn( &oFieldAptICAO );
 
     OGRFieldDefn oFieldRwyNum("rwy_num", OFTString );
@@ -707,7 +707,7 @@ OGRXPlaneMarkerLayer::OGRXPlaneMarkerLayer() : OGRXPlaneLayer("Marker")
     poFeatureDefn->SetGeomType( wkbPoint );
 
     OGRFieldDefn oFieldAptICAO("apt_icao", OFTString );
-    oFieldAptICAO.SetWidth( 4 );
+    oFieldAptICAO.SetWidth( 5 );
     poFeatureDefn->AddFieldDefn( &oFieldAptICAO );
 
     OGRFieldDefn oFieldRwyNum("rwy_num", OFTString );
@@ -769,7 +769,7 @@ OGRXPlaneDMEILSLayer::OGRXPlaneDMEILSLayer() : OGRXPlaneLayer("DMEILS")
     poFeatureDefn->AddFieldDefn( &oFieldID );
 
     OGRFieldDefn oFieldAptICAO("apt_icao", OFTString );
-    oFieldAptICAO.SetWidth( 4 );
+    oFieldAptICAO.SetWidth( 5 );
     poFeatureDefn->AddFieldDefn( &oFieldAptICAO );
 
     OGRFieldDefn oFieldRwyNum("rwy_num", OFTString );
diff --git a/ogr/swq.cpp b/ogr/swq.cpp
index c7d0fe3..3949526 100644
--- a/ogr/swq.cpp
+++ b/ogr/swq.cpp
@@ -315,7 +315,7 @@ swq_select_summarize( swq_select *select_info,
 /*      Create the summary information if this is the first row         */
 /*      being processed.                                                */
 /* -------------------------------------------------------------------- */
-    if( select_info->column_summary == NULL && value != NULL )
+    if( select_info->column_summary == NULL )
     {
         int i;
 
@@ -333,9 +333,6 @@ swq_select_summarize( swq_select *select_info,
         }
     }
 
-    if( select_info->column_summary == NULL )
-        return NULL;
-
 /* -------------------------------------------------------------------- */
 /*      If distinct processing is on, process that now.                 */
 /* -------------------------------------------------------------------- */
@@ -399,6 +396,7 @@ swq_select_summarize( swq_select *select_info,
                 if( df_val < summary->min )
                     summary->min = df_val;
             }
+            summary->count++;
         }
         break;
       case SWQCF_MAX:
@@ -420,6 +418,7 @@ swq_select_summarize( swq_select *select_info,
                 if( df_val > summary->max )
                     summary->max = df_val;
             }
+            summary->count++;
         }
         break;
       case SWQCF_AVG:
diff --git a/port/cpl_port.h b/port/cpl_port.h
index 4dcf37e..69b65dd 100644
--- a/port/cpl_port.h
+++ b/port/cpl_port.h
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: cpl_port.h 28375 2015-01-30 12:06:11Z rouault $
+ * $Id: cpl_port.h 29925 2015-08-30 12:05:05Z rouault $
  *
  * Project:  CPL - Common Portability Library
  * Author:   Frank Warmerdam, warmerdam at pobox.com
@@ -522,11 +522,11 @@ char * strdup (char *instr);
 #endif
 
 /** Return a Int16 from the 2 bytes ordered in LSB order at address x */
-#define CPL_LSBINT16PTR(x)    ((*(GByte*)(x)) | ((*(GByte*)((x)+1)) << 8))
+#define CPL_LSBINT16PTR(x)    ((*(GByte*)(x)) | (*(((GByte*)(x))+1) << 8))
 
 /** Return a Int32 from the 4 bytes ordered in LSB order at address x */
-#define CPL_LSBINT32PTR(x)    ((*(GByte*)(x)) | ((*(GByte*)((x)+1)) << 8) | \
-                              ((*(GByte*)((x)+2)) << 16) | ((*(GByte*)((x)+3)) << 24))
+#define CPL_LSBINT32PTR(x)    ((*(GByte*)(x)) | (*(((GByte*)(x))+1) << 8) | \
+                              (*(((GByte*)(x))+2) << 16) | (*(((GByte*)(x))+3) << 24))
 
 /** Return a signed Int16 from the 2 bytes ordered in LSB order at address x */
 #define CPL_LSBSINT16PTR(x) ((GInt16) CPL_LSBINT16PTR(x))
diff --git a/port/cpl_time.h b/port/cpl_time.h
index b131b5c..7db61a0 100644
--- a/port/cpl_time.h
+++ b/port/cpl_time.h
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: cpl_time.h 27044 2014-03-16 23:41:27Z rouault $
+ * $Id: cpl_time.h 29469 2015-07-04 11:42:30Z rouault $
  *
  * Name:     cpl_time.h
  * Project:  CPL - Common Portability Library
@@ -7,7 +7,7 @@
  * Author:   Even Rouault, <even dot rouault at mines dash paris dot org>
  *
  **********************************************************************
- * Copyright (c) 2009, Even Rouault <even dot rouault at mines-paris dot org>
+ * Copyright (c) 2009, Even Rouault <even dot rouault at mines-paris dot org>
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
diff --git a/port/cpl_vsi_mem.cpp b/port/cpl_vsi_mem.cpp
index fa52736..65ca776 100644
--- a/port/cpl_vsi_mem.cpp
+++ b/port/cpl_vsi_mem.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: cpl_vsi_mem.cpp 28976 2015-04-22 21:58:51Z rouault $
+ * $Id: cpl_vsi_mem.cpp 29581 2015-07-27 20:06:02Z rouault $
  *
  * Project:  VSI Virtual File System
  * Purpose:  Implementation of Memory Buffer virtual IO functions.
@@ -44,7 +44,7 @@
 #endif
 
 
-CPL_CVSID("$Id: cpl_vsi_mem.cpp 28976 2015-04-22 21:58:51Z rouault $");
+CPL_CVSID("$Id: cpl_vsi_mem.cpp 29581 2015-07-27 20:06:02Z rouault $");
 
 /*
 ** Notes on Multithreading:
@@ -474,24 +474,25 @@ VSIMemFilesystemHandler::Open( const char *pszFilename,
     else
         poFile = oFileList[osFilename];
 
-    if( strstr(pszAccess,"w") == NULL && poFile == NULL )
+    if( strstr(pszAccess,"w") == NULL 
+	&& strstr(pszAccess, "a") == NULL
+	&& poFile == NULL )
     {
         errno = ENOENT;
         return NULL;
     }
 
-    if( strstr(pszAccess,"w") )
-    {
-        if( poFile )
-            poFile->SetLength( 0 );
-        else
-        {
-            poFile = new VSIMemFile;
-            poFile->osFilename = osFilename;
-            oFileList[poFile->osFilename] = poFile;
-            poFile->nRefCount++; // for file list
-        }
-    }
+    // Overwrite
+    if (poFile && strstr(pszAccess, "w"))
+	poFile->SetLength(0);
+
+    // Create
+    if (!poFile && (strstr(pszAccess, "w") || strstr(pszAccess, "a"))) {
+	poFile = new VSIMemFile;
+	poFile->osFilename = osFilename;
+	oFileList[poFile->osFilename] = poFile;
+	poFile->nRefCount++; // for file list
+    } 
 
     if( poFile->bIsDirectory )
     {
diff --git a/port/cpl_vsi_virtual.h b/port/cpl_vsi_virtual.h
index 33a8948..4348dbf 100644
--- a/port/cpl_vsi_virtual.h
+++ b/port/cpl_vsi_virtual.h
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: cpl_vsi_virtual.h 28493 2015-02-16 09:49:16Z rouault $
+ * $Id: cpl_vsi_virtual.h 29388 2015-06-17 18:28:29Z rouault $
  *
  * Project:  VSI Virtual File System
  * Purpose:  Declarations for classes related to the virtual filesystem.
@@ -142,6 +142,8 @@ typedef struct
 
 typedef struct
 {
+    time_t       mTime;
+    vsi_l_offset nFileSize;
     int nEntries;
     VSIArchiveEntry* entries;
 } VSIArchiveContent;
diff --git a/port/cpl_vsil_abstract_archive.cpp b/port/cpl_vsil_abstract_archive.cpp
index 840bf20..c2b98b4 100644
--- a/port/cpl_vsil_abstract_archive.cpp
+++ b/port/cpl_vsil_abstract_archive.cpp
@@ -1,5 +1,5 @@
 /******************************************************************************
- * $Id: cpl_vsil_abstract_archive.cpp 27745 2014-09-27 16:38:57Z goatbar $
+ * $Id: cpl_vsil_abstract_archive.cpp 29388 2015-06-17 18:28:29Z rouault $
  *
  * Project:  CPL - Common Portability Library
  * Purpose:  Implement VSI large file api for archive files.
@@ -35,7 +35,7 @@
 
 #define ENABLE_DEBUG 0
 
-CPL_CVSID("$Id: cpl_vsil_abstract_archive.cpp 27745 2014-09-27 16:38:57Z goatbar $");
+CPL_CVSID("$Id: cpl_vsil_abstract_archive.cpp 29388 2015-06-17 18:28:29Z rouault $");
 
 /************************************************************************/
 /*                    ~VSIArchiveEntryFileOffset()                      */
@@ -98,9 +98,24 @@ const VSIArchiveContent* VSIArchiveFilesystemHandler::GetContentOfArchive
 {
     CPLMutexHolder oHolder( &hMutex );
 
+    VSIStatBufL sStat;
+    if( VSIStatL(archiveFilename, &sStat) != 0 )
+        return NULL;
     if (oFileList.find(archiveFilename) != oFileList.end() )
     {
-        return oFileList[archiveFilename];
+        VSIArchiveContent* content = oFileList[archiveFilename];
+        if( sStat.st_mtime > content->mTime ||
+            (vsi_l_offset)sStat.st_size != content->nFileSize)
+        {
+            CPLDebug("VSIArchive", "The content of %s has changed since it was cached",
+                    archiveFilename);
+            delete content;
+            oFileList.erase(archiveFilename);
+        }
+        else
+        {
+            return content;
+        }
     }
 
     int bMustClose = (poReader == NULL);
@@ -119,6 +134,8 @@ const VSIArchiveContent* VSIArchiveFilesystemHandler::GetContentOfArchive
     }
 
     VSIArchiveContent* content = new VSIArchiveContent;
+    content->mTime = sStat.st_mtime;
+    content->nFileSize = (vsi_l_offset)sStat.st_size;
     content->nEntries = 0;
     content->entries = NULL;
     oFileList[archiveFilename] = content;
diff --git a/port/cpl_vsil_stdin.cpp b/port/cpl_vsil_stdin.cpp
index 158607f..2b0ddd7 100644
--- a/port/cpl_vsil_stdin.cpp
+++ b/port/cpl_vsil_stdin.cpp
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id: cpl_vsil_stdin.cpp 27745 2014-09-27 16:38:57Z goatbar $
+ * $Id: cpl_vsil_stdin.cpp 29616 2015-08-06 10:07:50Z rouault $
  *
  * Project:  CPL - Common Portability Library
  * Purpose:  Implement VSI large file api for stdin
@@ -37,7 +37,7 @@
 #include <fcntl.h>
 #endif
 
-CPL_CVSID("$Id: cpl_vsil_stdin.cpp 27745 2014-09-27 16:38:57Z goatbar $");
+CPL_CVSID("$Id: cpl_vsil_stdin.cpp 29616 2015-08-06 10:07:50Z rouault $");
 
 /* We buffer the first 1MB of standard input to enable drivers */
 /* to autodetect data. In the first MB, backward and forward seeking */
@@ -157,8 +157,11 @@ int VSIStdinHandle::Seek( vsi_l_offset nOffset, int nWhence )
         return 0;
 
     VSIStdinInit();
-    if (nBufferLen == 0)
-        nRealPos = nBufferLen = fread(pabyBuffer, 1, BUFFER_SIZE, stdin);
+    if (nRealPos < BUFFER_SIZE )
+    {
+        nRealPos += fread(pabyBuffer + nRealPos, 1, BUFFER_SIZE - (int)nRealPos, stdin);
+        nBufferLen = nRealPos;
+    }
 
     if (nWhence == SEEK_END)
     {
diff --git a/swig/include/perl/gdal_perl.i b/swig/include/perl/gdal_perl.i
index d4a9c17..97a6dab 100644
--- a/swig/include/perl/gdal_perl.i
+++ b/swig/include/perl/gdal_perl.i
@@ -130,8 +130,70 @@ use Geo::OSR;
 # For GDAL 2.0 or above, GDAL X.Y.Z should then
 # VERSION = X + Y / 100.0 + Z / 10000.0
 
-our $VERSION = '2.0000';
-our $GDAL_VERSION = '2.0.0';
+our $VERSION = '2.0001';
+our $GDAL_VERSION = '2.0.1';
+
+=pod
+
+=head1 NAME
+
+Geo::GDAL - Perl extension for the GDAL library for geospatial data
+
+=head1 SYNOPSIS
+
+  use Geo::GDAL;
+
+  my $raster_file = shift @ARGV;
+
+  my $raster_dataset = Geo::GDAL::Open($file);
+
+  my $raster_data = $dataset->GetRasterBand(1)->ReadTile;
+
+  my $vector_datasource = Geo::OGR::Open('./');
+ 
+  my $vector_layer = $datasource->Layer('borders'); # e.g. a shapefile borders.shp in current directory
+
+  $vector_layer->ResetReading();
+  while (my $feature = $vector_layer->GetNextFeature()) {  
+      my $geometry = $feature->GetGeometry(); 
+      my $value = $feature->GetField($field);
+  }
+
+=head1 DESCRIPTION
+
+This Perl module lets you to manage (read, analyse, write) geospatial
+data stored in several formats.
+
+=head2 EXPORT
+
+None by default.
+
+=head1 SEE ALSO
+
+The GDAL home page is L<http://gdal.org/>
+
+The documentation of this module is written in Doxygen format. See
+L<http://ajolma.net/Geo-GDAL/snapshot/>
+
+=head1 AUTHOR
+
+Ari Jolma
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright (C) 2005- by Ari Jolma and GDAL bindings developers.
+
+This library is free software; you can redistribute it and/or modify
+it under the terms of MIT License
+
+L<https://opensource.org/licenses/MIT>
+
+=head1 REPOSITORY
+
+L<https://trac.osgeo.org/gdal>
+
+=cut
+
 use vars qw/
     @DATA_TYPES @ACCESS_TYPES @RESAMPLING_TYPES @RIO_RESAMPLING_TYPES @NODE_TYPES
     %TYPE_STRING2INT %TYPE_INT2STRING
diff --git a/swig/include/perl/ogr_perl.i b/swig/include/perl/ogr_perl.i
index 4df0b12..3b90c16 100644
--- a/swig/include/perl/ogr_perl.i
+++ b/swig/include/perl/ogr_perl.i
@@ -109,11 +109,11 @@ ALTERED_DESTROY(OGRGeometryShadow, OGRc, delete_Geometry)
 
 }
 
-# wrapped data source methods:
+/* wrapped data source methods: */
 %rename (_GetDriver) GetDriver;
 %rename (_TestCapability) TestCapability;
 
-# wrapped layer methods:
+/* wrapped layer methods: */
 %rename (_ReleaseResultSet) ReleaseResultSet;
 %rename (_CreateLayer) CreateLayer;
 %rename (_DeleteLayer) DeleteLayer;
@@ -121,15 +121,18 @@ ALTERED_DESTROY(OGRGeometryShadow, OGRc, delete_Geometry)
 %rename (_DeleteField) DeleteField;
 %rename (_Validate) Validate;
 
-# wrapped feature methods:
+/* wrapped feature methods: */
 %rename (_AlterFieldDefn) AlterFieldDefn;
 %rename (_SetGeometry) SetGeometry;
 
-# wrapped geometry methods:
+/* wrapped geometry methods: */
 %rename (_ExportToWkb) ExportToWkb;
 
 %perlcode %{
 
+package Geo::OGR;
+our $VERSION = '2.0001'; # this needs to be the same as that in gdal_perl.i
+
 package Geo::OGR::Driver;
 use strict;
 use warnings;
@@ -610,6 +613,8 @@ sub RELEASE_PARENTS {
 
 %feature("shadow") OGRFeatureDefnShadow(const char* name_null_ok=NULL)
 %{
+use strict;
+use warnings;
 use Carp;
 use Scalar::Util 'blessed';
 sub new {
@@ -1199,16 +1204,16 @@ sub new {
     if (@_ == 0) {
     } elsif (@_ == 1) {
         $name = shift;
-    } elsif (@_ == 2 and not $SCHEMA_KEYS{$_[0]}) {
+    } elsif (@_ == 2 and not $Geo::OGR::FieldDefn::SCHEMA_KEYS{$_[0]}) {
         $name = shift;
         $type = shift;
     } else {
         my %named = @_;
         for my $key (keys %named) {
-            if ($SCHEMA_KEYS{$key}) {
+            if ($Geo::OGR::FieldDefn::SCHEMA_KEYS{$key}) {
                 $args{$key} = $named{$key};
             } else {
-                carp "Unrecognized argument: '$key'." if $key ne 'Index';
+                carp "Unrecognized argument: '$key'.";
             }
         }
         $name = $args{Name} if exists $args{Name};
@@ -1216,8 +1221,8 @@ sub new {
         $type = $args{Type} if exists $args{Type};
         delete $args{Type};
     }
-    confess "Unknown field type: '$type'." unless exists $TYPE_STRING2INT{$type};
-    $type = $TYPE_STRING2INT{$type};
+    confess "Unknown field type: '$type'." unless exists $Geo::OGR::FieldDefn::TYPE_STRING2INT{$type};
+    $type = $Geo::OGR::FieldDefn::TYPE_STRING2INT{$type};
     my $self = Geo::OGRc::new_FieldDefn($name, $type);
     if (defined($self)) {
         bless $self, $pkg;
@@ -1335,16 +1340,16 @@ sub new {
     if (@_ == 0) {
     } elsif (@_ == 1) {
         $name = shift;
-    } elsif (@_ == 2 and not $SCHEMA_KEYS{$_[0]}) {
+    } elsif (@_ == 2 and not $Geo::OGR::GeomFieldDefn::SCHEMA_KEYS{$_[0]}) {
         $name = shift;
         $type = shift;
     } else {
         my %named = @_;
         for my $key (keys %named) {
-            if ($SCHEMA_KEYS{$key}) {
+            if ($Geo::OGR::GeomFieldDefn::SCHEMA_KEYS{$key}) {
                 $args{$key} = $named{$key};
             } else {
-                carp "Unrecognized argument: '$key'." if $key ne 'Index';
+                carp "Unrecognized argument: '$key'.";
             }
         }
         $name = $args{Name} if exists $args{Name};
@@ -1513,8 +1518,8 @@ sub new {
     } elsif (defined $json) {
         $self = Geo::OGRc::CreateGeometryFromJson($json);
     } elsif (defined $type) {
-        confess "Unknown geometry type: '$type'." unless exists $TYPE_STRING2INT{$type};
-        $type = $TYPE_STRING2INT{$type};
+        confess "Unknown geometry type: '$type'." unless exists $Geo::OGR::Geometry::TYPE_STRING2INT{$type};
+        $type = $Geo::OGR::Geometry::TYPE_STRING2INT{$type};
         $self = Geo::OGRc::new_Geometry($type); # flattens the type
         SetCoordinateDimension($self, 3) if Geo::OGR::GT_HasZ($type);
     } elsif (defined $arc) {
diff --git a/swig/include/perl/typemaps_perl.i b/swig/include/perl/typemaps_perl.i
index 6e7c520..bba700e 100644
--- a/swig/include/perl/typemaps_perl.i
+++ b/swig/include/perl/typemaps_perl.i
@@ -146,7 +146,7 @@
 {
  /* %typemap(ret) VSI_RETVAL */
   if ($1 == -1 ) {
-    croak(strerror(errno));
+    croak("%s", strerror(errno));
   }
 }
 
diff --git a/swig/include/python/ogr_python.i b/swig/include/python/ogr_python.i
index f52d574..d430806 100644
--- a/swig/include/python/ogr_python.i
+++ b/swig/include/python/ogr_python.i
@@ -1,5 +1,5 @@
 /*
- * $Id: ogr_python.i 28380 2015-01-30 13:42:54Z rouault $
+ * $Id: ogr_python.i 29550 2015-07-21 13:24:49Z rouault $
  *
  * python specific code for ogr bindings.
  */
@@ -71,9 +71,9 @@
 
     def __getitem__(self, value):
         """Support dictionary, list, and slice -like access to the datasource.
-ds[0] would return the first layer on the datasource.
-ds['aname'] would return the layer named "aname".
-ds[0:4] would return a list of the first four layers."""
+        ds[0] would return the first layer on the datasource.
+        ds['aname'] would return the layer named "aname".
+        ds[0:4] would return a list of the first four layers."""
         if isinstance(value, slice):
             output = []
             for i in xrange(value.start,value.stop,value.step):
@@ -142,8 +142,8 @@ ds[0:4] would return a list of the first four layers."""
 
     def __getitem__(self, value):
         """Support list and slice -like access to the layer.
-layer[0] would return the first feature on the layer.
-layer[0:4] would return a list of the first four features."""
+        layer[0] would return the first feature on the layer.
+        layer[0:4] would return a list of the first four features."""
         if isinstance(value, slice):
             import sys
             output = []
diff --git a/swig/perl/GNUmakefile b/swig/perl/GNUmakefile
index 1d82b53..fb668c0 100644
--- a/swig/perl/GNUmakefile
+++ b/swig/perl/GNUmakefile
@@ -52,6 +52,8 @@ clean:
 veryclean: clean
 	-rm -f ${WRAPPERS} 
 	-rm -f gdal.pm gdalconst.pm osr.pm ogr.pm
+	-rm -f META.* MYMETA.*
+	-rm -f *.tar.gz
 
 doc: .FORCE
 
diff --git a/swig/perl/MANIFEST b/swig/perl/MANIFEST
index c20247f..45e0cf9 100644
--- a/swig/perl/MANIFEST
+++ b/swig/perl/MANIFEST
@@ -11,6 +11,10 @@ lib/Geo/GDAL/Const.dox
 lib/Geo/GDAL.dox
 lib/Geo/OGR.dox
 lib/Geo/OSR.dox
+t/00.t
+t/01.t
+t/02.t
+t/03.t
 t/gdal.t
 t/ogr.t
 Makefile.PL
@@ -21,8 +25,12 @@ osr_wrap.cpp
 cr.dox
 cv.dox
 index.dox
+pdl.dox
 rr.dox
 rv.dox
 transform.dox
 check_dox.pl
-META.yml                                 Module meta-data (added by MakeMaker)
+parse-for-doxygen.pl
+Changes-in-the-API-in-2.0
+META.yml
+META.json
diff --git a/swig/perl/META.yml b/swig/perl/META.yml
deleted file mode 100644
index d3e8763..0000000
--- a/swig/perl/META.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-# http://module-build.sourceforge.net/META-spec.html
-#XXXXXXX This is a prototype!!!  It will change in the future!!! XXXXX#
-name:         Geo-GDAL
-version:      0.20
-version_from: lib/Geo/GDAL.pm
-installdirs:  site
-requires:
-
-distribution_type: module
-generated_by: ExtUtils::MakeMaker version 6.17
diff --git a/swig/perl/Makefile.PL b/swig/perl/Makefile.PL
index b8a5f87..5fba3b9 100644
--- a/swig/perl/Makefile.PL
+++ b/swig/perl/Makefile.PL
@@ -1,92 +1,104 @@
 use ExtUtils::MakeMaker;
+use Config;
 
 # pick up our parameters from @ARGV
 my %ARGV;
 for (@ARGV) {
     if (/^(.*?)\=(.*)/) {
-	$ARGV{$1} = $2;
+        $ARGV{$1} = $2;
     } else {
-	$ARGV{$_} = 1;
+        $ARGV{$_} = 1;
     }
     $_ = '' if /^--gdal-config/;
     $_ = '' if /^--no-version-check/;
 }
+# ... or from the environment
+$ARGV{'--gdal-config'} = $ENV{PERL_GDAL_CONFIG} if $ENV{PERL_GDAL_CONFIG};
+$ARGV{'--no-version-check'} = 1 if $ENV{PERL_GDAL_NO_VERSION_CHECK};
 
-# search and decide which GDAL (gdal-config) to build against
-
-# scan known possible locations in the order of preference:
-my @configs;
-for ('../../apps/gdal-config',
-     'c:/msys/1.0/local/bin/gdal-config',
-     '/usr/local/bin/gdal-config',
-     '/usr/bin/gdal-config') {
-    push @configs, $_ if -r $_;
-}
-print "Found @configs\n";
+# search and decide which GDAL (gdal-config) to build against if not given
 
 my $config;
 if ($ARGV{'--gdal-config'}) {
-    die "'$ARGV{'--gdal-config'}' does not exist or is unreadable." unless -r $ARGV{'--gdal-config'};
-    $config = $ARGV{'--gdal-config'};
+    if (-r $ARGV{'--gdal-config'}) {
+        $config = $ARGV{'--gdal-config'};
+    } else {
+        print STDERR "The given gdal-config '$ARGV{'--gdal-config'}' does not exist or is unreadable.\n";
+    }
 } else {
-    $config = shift @configs;
+    # scan known possible locations in the order of preference:
+    my @configs;
+    for ('../../apps/gdal-config',
+         'c:/msys/1.0/local/bin/gdal-config',
+         '/usr/local/bin/gdal-config',
+         '/usr/bin/gdal-config') {
+        push @configs, $_ if -r $_;
+    }
+    if (@configs) {
+        $config = $configs[0];
+        print "Found gdal-config(s): '",join("', '", @configs),"'.\nWill use '$config'.\n";
+    }
 }
-
 die "Can't find gdal-config. Please install GDAL development files or\n".
-    "define the location of gdal-config using --gdal-config=XXX.\n"
-    unless $config;
-
-print "Using $config.\n";
+    "define the location of gdal-config using --gdal-config=XXX\n".
+    "or with environment variable PERL_GDAL_CONFIG." unless $config;
 
-# check that we're part of GDAL distro
-# or that installed GDAL version is the same as that in lib/Geo/GDAL.pm 
+# Obtain GDAL version, libs, and inc. We will assume gdal-config is not
+# excutable if we're in a GDAL distro tree or on Windows.
 
+my $gdal_version;
 my $LIB = '';
 my $INC = '';
-if ($config eq '../../apps/gdal-config') { 
-    print "Building against GDAL in this distro tree\n";
-    $LIB .= '-L../../.libs -L../.. ';
-} elsif ($config eq 'c:/msys/1.0/local/bin/gdal-config') {
-    print "Building against GDAL in c:/msys/1.0/local/bin/\n";
-    $LIB .= '-Lc:/msys/1.0/local/lib ';
-    $INC .= '-Ic:/msys/1.0/local/include ';
+if ($config eq '../../apps/gdal-config' or $config eq 'c:/msys/1.0/local/bin/gdal-config') { 
+    if ($config eq '../../apps/gdal-config') {
+        print "Building against GDAL in this distro tree\n";
+        $LIB .= '-L../../.libs -L../.. ';
+    } else {
+        print "Building against GDAL in 'c:/msys/1.0/local/bin/'\n";
+        $LIB .= '-Lc:/msys/1.0/local/lib ';
+        $INC .= '-Ic:/msys/1.0/local/include ';
+    }
+    my $fh;
+    if (open($fh, $config)) {
+        for (<$fh>) {
+            ($gdal_version) = /(\d+\.\d+\.\d+)/ if /^CONFIG_VERSION/;
+            if (/^CONFIG_LIBS/) {
+                s/^CONFIG_LIBS="//;
+                s/"\s*$//;
+                if ($_ =~ /\.la$/) { 
+                    # parse a libtool library file
+                    $LIB .= parse_libtool_library_file_for_l($_);
+                } else {
+                    $LIB .= $_;
+                }
+                $LIB .= ' ';
+            }
+            if (/^CONFIG_DEP_LIBS/) {
+                s/^CONFIG_DEP_LIBS="//;
+                s/"\s*$//;
+                $LIB .= $_;
+            }
+            if (/^CONFIG_CFLAGS/) {
+                s/^CONFIG_CFLAGS="//;
+                s/"\s*$//;
+                $INC .= $_;
+            }
+        }
+        close $fh;
+    }
 } else {
-    print "Building against GDAL defined in $config\n";
+    print "Building against GDAL defined by '$config'.\n";
+    chomp($gdal_version = `$config --version`);
+    chomp($LIB = `$config --libs`);
+    chomp($INC = `$config --cflags`);
 }
 
-my $gdal_version;
+# Obtain our version.
+
 my $pm_version;
-my $fh;
-if (open($fh, $config)) {
-    for (<$fh>) {
-	($gdal_version) = /(\d+\.\d+\.\d+)/ if /^CONFIG_VERSION/;
-	if (/^CONFIG_LIBS/) {
-	    s/^CONFIG_LIBS="//;
-	    s/"\s*$//;
-	    if ($_ =~ /\.la$/) { 
-		# parse a libtool library file
-		$LIB .= parse_libtool_library_file_for_l($_);
-	    } else {
-		$LIB .= $_;
-	    }
-	    $LIB .= ' ';
-	}
-	if (/^CONFIG_DEP_LIBS/) {
-	    s/^CONFIG_DEP_LIBS="//;
-	    s/"\s*$//;
-	    $LIB .= $_;
-	}
-	if (/^CONFIG_CFLAGS/) {
-	    s/^CONFIG_CFLAGS="//;
-	    s/"\s*$//;
-	    $INC .= $_;
-	}
-    }
-    close $fh;
-}
 if (open($fh, "lib/Geo/GDAL.pm")) {
     for (<$fh>) {
-	($pm_version) = /(\d+\.\d+\.\d+)/ if /GDAL_VERSION/;
+        ($pm_version) = /(\d+\.\d+\.\d+)/ if /GDAL_VERSION/;
     }
     close $fh;
 } else {
@@ -97,35 +109,54 @@ die "=======================================================\n".
     "PLEASE NOTE!\n".
     "The GDAL that you try to build against has version\n".
     "$gdal_version and this module was released from version\n".
-    "$pm_version. These do not match. Building against newer\n".
+    "$pm_version. These do not match. Building against different\n".
     "version may work but you need to remove this check first.\n".
-    "You can pass by this warning with --no-version-check.\n".
+    "You can pass by this warning with --no-version-check\n".
+    "or by setting the environment variable PERL_GDAL_NO_VERSION_CHECK\n".
+    "to a true value (for example 1).\n".
     "Thank you.\n".
     "=======================================================\n"
     if ($gdal_version ne $pm_version) and !$ARGV{'--no-version-check'};
 
 %object = ( 'Geo::GDAL' => 'gdal_wrap.o',
-	    'Geo::GDAL::Const' => 'gdalconst_wrap.o',
-	    'Geo::OGR' => 'ogr_wrap.o',
-	    'Geo::OSR' => 'osr_wrap.o' );
+            'Geo::GDAL::Const' => 'gdalconst_wrap.o',
+            'Geo::OGR' => 'ogr_wrap.o',
+            'Geo::OSR' => 'osr_wrap.o' );
 
-#print "LIB = $LIB\n";
-#print "INC = $INC\n";
+if ($ARGV{'--debug'}) {
+    print "LIB = $LIB\n";
+    print "INC = $INC\n";
+}
 
 for my $module (keys %object) {
     my $add = $module;
     $add =~ s/:/_/g;
     WriteMakefile( NAME => $module,
-		   VERSION_FROM => 'lib/Geo/GDAL.pm',
-		   MAKEFILE => 'Makefile_'.$add,
-		   LIBS => $LIB,
-		   INC => $INC,
-		   OBJECT => $object{$module},
-		   PM => {'lib/Geo/GDAL.pm' => '$(INST_LIBDIR)/GDAL.pm',
-			  'lib/Geo/OGR.pm' => '$(INST_LIBDIR)/OGR.pm',
-			  'lib/Geo/OSR.pm' => '$(INST_LIBDIR)/OSR.pm',
-			  'lib/Geo/GDAL/Const.pm' => '$(INST_LIBDIR)/GDAL/Const.pm'}
-	);
+                   VERSION_FROM => 'lib/Geo/GDAL.pm',
+                   ABSTRACT_FROM => 'lib/Geo/GDAL.pm',
+                   AUTHOR => 'Ari Jolma <https://trac.osgeo.org/gdal/wiki/GdalOgrInPerl>',
+                   LICENSE => 'mit',
+                   META_MERGE => {
+                       'meta-spec' => { version => 2 },
+                       resources => {
+                           repository => {
+                               type => 'svn',
+                               url  => 'https://svn.osgeo.org/gdal/trunk/gdal/swig/perl',
+                               web  => 'https://trac.osgeo.org/gdal/browser/trunk/gdal/swig/perl',
+                           },
+                       },
+                   },
+                   MAKEFILE => 'Makefile_'.$add,
+                   LIBS => $LIB,
+                   INC => $INC,
+                   OPTIMIZE => "$ENV{CFLAGS} $ENV{CPPFLAGS}",
+                   LD => "$Config{ld} $ENV{CFLAGS} $ENV{LDFLAGS}",
+                   OBJECT => $object{$module},
+                   PM => {'lib/Geo/GDAL.pm' => '$(INST_LIBDIR)/GDAL.pm',
+                          'lib/Geo/OGR.pm' => '$(INST_LIBDIR)/OGR.pm',
+                          'lib/Geo/OSR.pm' => '$(INST_LIBDIR)/OSR.pm',
+                          'lib/Geo/GDAL/Const.pm' => '$(INST_LIBDIR)/GDAL/Const.pm'}
+        );
 }
 
 sub parse_libtool_library_file_for_l {
@@ -133,16 +164,16 @@ sub parse_libtool_library_file_for_l {
     my $fh;
     my $l = '';
     if (open($fh, $fn)) {
-	while (<$fh>) {
-	    if (/^dlname=(.*)/) {
-		$l = $1;
-		$l =~ s/^'//;
-		$l =~ s/^lib/\-l/;
-		$l =~ s/\..*$//;
-		last;
-	    }
-	}
-	close $fh;
+        while (<$fh>) {
+            if (/^dlname=(.*)/) {
+                $l = $1;
+                $l =~ s/^'//;
+                $l =~ s/^lib/\-l/;
+                $l =~ s/\..*$//;
+                last;
+            }
+        }
+        close $fh;
     }
     return $l;
 }
diff --git a/swig/perl/gdal_wrap.cpp b/swig/perl/gdal_wrap.cpp
index 36250f1..774509d 100644
--- a/swig/perl/gdal_wrap.cpp
+++ b/swig/perl/gdal_wrap.cpp
@@ -5379,7 +5379,7 @@ XS(_wrap_Unlink) {
     {
       /* %typemap(ret) VSI_RETVAL */
       if (result == -1 ) {
-        croak(strerror(errno));
+        croak("%s", strerror(errno));
       }
     }
     XSRETURN(argvi);
@@ -5497,7 +5497,7 @@ XS(_wrap_Mkdir) {
     {
       /* %typemap(ret) VSI_RETVAL */
       if (result == -1 ) {
-        croak(strerror(errno));
+        croak("%s", strerror(errno));
       }
     }
     XSRETURN(argvi);
@@ -5564,7 +5564,7 @@ XS(_wrap_Rmdir) {
     {
       /* %typemap(ret) VSI_RETVAL */
       if (result == -1 ) {
-        croak(strerror(errno));
+        croak("%s", strerror(errno));
       }
     }
     XSRETURN(argvi);
@@ -5633,7 +5633,7 @@ XS(_wrap_Rename) {
     {
       /* %typemap(ret) VSI_RETVAL */
       if (result == -1 ) {
-        croak(strerror(errno));
+        croak("%s", strerror(errno));
       }
     }
     XSRETURN(argvi);
@@ -5728,7 +5728,7 @@ XS(_wrap_Stat) {
     {
       /* %typemap(ret) VSI_RETVAL */
       if (result == -1 ) {
-        croak(strerror(errno));
+        croak("%s", strerror(errno));
       }
     }
     XSRETURN(argvi);
@@ -5856,7 +5856,7 @@ XS(_wrap_VSIFCloseL) {
     {
       /* %typemap(ret) VSI_RETVAL */
       if (result == -1 ) {
-        croak(strerror(errno));
+        croak("%s", strerror(errno));
       }
     }
     XSRETURN(argvi);
@@ -5931,7 +5931,7 @@ XS(_wrap_VSIFSeekL) {
     {
       /* %typemap(ret) VSI_RETVAL */
       if (result == -1 ) {
-        croak(strerror(errno));
+        croak("%s", strerror(errno));
       }
     }
     XSRETURN(argvi);
@@ -6048,7 +6048,7 @@ XS(_wrap_VSIFTruncateL) {
     {
       /* %typemap(ret) VSI_RETVAL */
       if (result == -1 ) {
-        croak(strerror(errno));
+        croak("%s", strerror(errno));
       }
     }
     XSRETURN(argvi);
diff --git a/swig/perl/index.dox b/swig/perl/index.dox
index 157292d..0244374 100644
--- a/swig/perl/index.dox
+++ b/swig/perl/index.dox
@@ -2,7 +2,7 @@
 
 \section index_version Version
 
-These pages document the development version of the GDAL Perl API,
+These pages document the version 2.0 of the GDAL Perl API,
 which is extended from the released versions APIs. Old versions: 
 <a href="../1.4/index.html">1.4</a>
 <a href="../1.5/index.html">1.5</a>
diff --git a/swig/perl/lib/Geo/GDAL.pm b/swig/perl/lib/Geo/GDAL.pm
index fc5d67b..89e0f5a 100644
--- a/swig/perl/lib/Geo/GDAL.pm
+++ b/swig/perl/lib/Geo/GDAL.pm
@@ -611,8 +611,70 @@ use Geo::OSR;
 # For GDAL 2.0 or above, GDAL X.Y.Z should then
 # VERSION = X + Y / 100.0 + Z / 10000.0
 
-our $VERSION = '2.0000';
-our $GDAL_VERSION = '2.0.0';
+our $VERSION = '2.0001';
+our $GDAL_VERSION = '2.0.1';
+
+=pod
+
+=head1 NAME
+
+Geo::GDAL - Perl extension for the GDAL library for geospatial data
+
+=head1 SYNOPSIS
+
+  use Geo::GDAL;
+
+  my $raster_file = shift @ARGV;
+
+  my $raster_dataset = Geo::GDAL::Open($file);
+
+  my $raster_data = $dataset->GetRasterBand(1)->ReadTile;
+
+  my $vector_datasource = Geo::OGR::Open('./');
+ 
+  my $vector_layer = $datasource->Layer('borders'); # e.g. a shapefile borders.shp in current directory
+
+  $vector_layer->ResetReading();
+  while (my $feature = $vector_layer->GetNextFeature()) {  
+      my $geometry = $feature->GetGeometry(); 
+      my $value = $feature->GetField($field);
+  }
+
+=head1 DESCRIPTION
+
+This Perl module lets you to manage (read, analyse, write) geospatial
+data stored in several formats.
+
+=head2 EXPORT
+
+None by default.
+
+=head1 SEE ALSO
+
+The GDAL home page is L<http://gdal.org/>
+
+The documentation of this module is written in Doxygen format. See
+L<http://ajolma.net/Geo-GDAL/snapshot/>
+
+=head1 AUTHOR
+
+Ari Jolma
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright (C) 2005- by Ari Jolma and GDAL bindings developers.
+
+This library is free software; you can redistribute it and/or modify
+it under the terms of MIT License
+
+L<https://opensource.org/licenses/MIT>
+
+=head1 REPOSITORY
+
+L<https://trac.osgeo.org/gdal>
+
+=cut
+
 use vars qw/
     @DATA_TYPES @ACCESS_TYPES @RESAMPLING_TYPES @RIO_RESAMPLING_TYPES @NODE_TYPES
     %TYPE_STRING2INT %TYPE_INT2STRING
diff --git a/swig/perl/lib/Geo/OGR.dox b/swig/perl/lib/Geo/OGR.dox
index ba8c30e..b7a4123 100644
--- a/swig/perl/lib/Geo/OGR.dox
+++ b/swig/perl/lib/Geo/OGR.dox
@@ -980,7 +980,7 @@
 #
 # This method supports both an argument list and named arguments.
 #
-# @param name Field name.
+# @param name Field name (please do not try to name the field as Name or Type etc.).
 # @param type One of supported field types
 # (see Geo::OGR::FieldDefn::Types). Optional. Default is String.
 #
diff --git a/swig/perl/lib/Geo/OGR.pm b/swig/perl/lib/Geo/OGR.pm
index bfaab95..04c948d 100644
--- a/swig/perl/lib/Geo/OGR.pm
+++ b/swig/perl/lib/Geo/OGR.pm
@@ -396,6 +396,8 @@ sub DESTROY {
     $self->RELEASE_PARENTS();
 }
 
+use strict;
+use warnings;
 use Carp;
 use Scalar::Util 'blessed';
 sub new {
@@ -500,16 +502,16 @@ sub new {
     if (@_ == 0) {
     } elsif (@_ == 1) {
         $name = shift;
-    } elsif (@_ == 2 and not $SCHEMA_KEYS{$_[0]}) {
+    } elsif (@_ == 2 and not $Geo::OGR::FieldDefn::SCHEMA_KEYS{$_[0]}) {
         $name = shift;
         $type = shift;
     } else {
         my %named = @_;
         for my $key (keys %named) {
-            if ($SCHEMA_KEYS{$key}) {
+            if ($Geo::OGR::FieldDefn::SCHEMA_KEYS{$key}) {
                 $args{$key} = $named{$key};
             } else {
-                carp "Unrecognized argument: '$key'." if $key ne 'Index';
+                carp "Unrecognized argument: '$key'.";
             }
         }
         $name = $args{Name} if exists $args{Name};
@@ -517,8 +519,8 @@ sub new {
         $type = $args{Type} if exists $args{Type};
         delete $args{Type};
     }
-    confess "Unknown field type: '$type'." unless exists $TYPE_STRING2INT{$type};
-    $type = $TYPE_STRING2INT{$type};
+    confess "Unknown field type: '$type'." unless exists $Geo::OGR::FieldDefn::TYPE_STRING2INT{$type};
+    $type = $Geo::OGR::FieldDefn::TYPE_STRING2INT{$type};
     my $self = Geo::OGRc::new_FieldDefn($name, $type);
     if (defined($self)) {
         bless $self, $pkg;
@@ -588,16 +590,16 @@ sub new {
     if (@_ == 0) {
     } elsif (@_ == 1) {
         $name = shift;
-    } elsif (@_ == 2 and not $SCHEMA_KEYS{$_[0]}) {
+    } elsif (@_ == 2 and not $Geo::OGR::GeomFieldDefn::SCHEMA_KEYS{$_[0]}) {
         $name = shift;
         $type = shift;
     } else {
         my %named = @_;
         for my $key (keys %named) {
-            if ($SCHEMA_KEYS{$key}) {
+            if ($Geo::OGR::GeomFieldDefn::SCHEMA_KEYS{$key}) {
                 $args{$key} = $named{$key};
             } else {
-                carp "Unrecognized argument: '$key'." if $key ne 'Index';
+                carp "Unrecognized argument: '$key'.";
             }
         }
         $name = $args{Name} if exists $args{Name};
@@ -709,8 +711,8 @@ sub new {
     } elsif (defined $json) {
         $self = Geo::OGRc::CreateGeometryFromJson($json);
     } elsif (defined $type) {
-        confess "Unknown geometry type: '$type'." unless exists $TYPE_STRING2INT{$type};
-        $type = $TYPE_STRING2INT{$type};
+        confess "Unknown geometry type: '$type'." unless exists $Geo::OGR::Geometry::TYPE_STRING2INT{$type};
+        $type = $Geo::OGR::Geometry::TYPE_STRING2INT{$type};
         $self = Geo::OGRc::new_Geometry($type); # flattens the type
         SetCoordinateDimension($self, 3) if Geo::OGR::GT_HasZ($type);
     } elsif (defined $arc) {
@@ -908,6 +910,9 @@ package Geo::OGR;
 *TermProgress = *Geo::OGRc::TermProgress;
 
 
+package Geo::OGR;
+our $VERSION = '2.0001'; # this needs to be the same as that in gdal_perl.i
+
 package Geo::OGR::Driver;
 use strict;
 use warnings;
diff --git a/swig/perl/t/00.t b/swig/perl/t/00.t
index 81539fa..d9a0e18 100644
--- a/swig/perl/t/00.t
+++ b/swig/perl/t/00.t
@@ -1,6 +1,7 @@
 use strict;
 use Test::More qw(no_plan);
 BEGIN { use_ok('Geo::GDAL') };
+Geo::GDAL::PushFinderLocation('../../data');
 
 # Documented subs in Geo::GDAL 
 
@@ -31,11 +32,12 @@ eval {
     Geo::GDAL::PushFinderLocation('abc');
     Geo::GDAL::PopFinderLocation();
     Geo::GDAL::FinderClean();
+    Geo::GDAL::PushFinderLocation('../../data');
 };
 ok($@ eq '', "FinderClean, PushFinderLocation and PopFinderLocation, got $@");
 
 $s = Geo::GDAL::FindFile('', 'gcs.csv');
-ok($s, "FindFile, got $s");
+print STDERR "Can't find GDAL support files. Expect an error below. Please set GDAL_DATA.\n" unless $s;
 
 my @list;
 
diff --git a/swig/perl/t/gdal.t b/swig/perl/t/gdal.t
index 6148084..574b7d5 100644
--- a/swig/perl/t/gdal.t
+++ b/swig/perl/t/gdal.t
@@ -1,5 +1,6 @@
 use Test::More qw(no_plan);
 BEGIN { use_ok('Geo::GDAL') };
+Geo::GDAL::PushFinderLocation('../../data');
 
 use vars qw/%available_driver %test_driver $loaded $verbose @types @fails @tested_drivers/;
 
diff --git a/swig/perl/t/ogr.t b/swig/perl/t/ogr.t
index 513d078..067e9e5 100644
--- a/swig/perl/t/ogr.t
+++ b/swig/perl/t/ogr.t
@@ -1,5 +1,6 @@
 use Test::More qw(no_plan);
 BEGIN { use_ok('Geo::GDAL') };
+Geo::GDAL::PushFinderLocation('../../data');
 
 use strict;
 use vars qw/%available_driver %test_driver $loaded $verbose @types %pack_types @fails @tested_drivers/;
diff --git a/swig/perl/t/osr.t b/swig/perl/t/osr.t
index 709fa06..5db1134 100644
--- a/swig/perl/t/osr.t
+++ b/swig/perl/t/osr.t
@@ -1,5 +1,6 @@
 use Test::More qw(no_plan);
 BEGIN { use_ok('Geo::GDAL') };
+Geo::GDAL::PushFinderLocation('../../data');
 
 $srs1 = Geo::OSR::SpatialReference->new(EPSG=>2936);
 $srs2 = Geo::OSR::SpatialReference->new(Text=>$srs1->AsText);
diff --git a/swig/python/README.txt b/swig/python/README.txt
index d13868e..ef91d99 100644
--- a/swig/python/README.txt
+++ b/swig/python/README.txt
@@ -16,7 +16,7 @@ reference documentation, but the `GDAL API Tutorial`_ includes Python examples.
 Dependencies
 ------------
  
- * libgdal (1.11.0 or greater) and header files (gdal-devel)
+ * libgdal (2.0.0 or greater) and header files (gdal-devel)
  * numpy (1.0.0 or greater) and header files (numpy-devel) (not explicitly 
    required, but many examples and utilities will not work without it)
 
diff --git a/swig/python/extensions/gdal_array_wrap.cpp b/swig/python/extensions/gdal_array_wrap.cpp
index bb657dd..a0d3b30 100644
--- a/swig/python/extensions/gdal_array_wrap.cpp
+++ b/swig/python/extensions/gdal_array_wrap.cpp
@@ -264,7 +264,7 @@ template <typename T> T SwigValueInit() {
    SWIG errors code.
 
    Finally, if the SWIG_CASTRANK_MODE is enabled, the result code
-   allows returning the 'cast rank', for example, if you have this
+   allows to return the 'cast rank', for example, if you have this
 
        int food(double)
        int fooi(int);
diff --git a/swig/python/extensions/gdal_wrap.cpp b/swig/python/extensions/gdal_wrap.cpp
index 4e3a98c..c1aa90b 100644
--- a/swig/python/extensions/gdal_wrap.cpp
+++ b/swig/python/extensions/gdal_wrap.cpp
@@ -264,7 +264,7 @@ template <typename T> T SwigValueInit() {
    SWIG errors code.
 
    Finally, if the SWIG_CASTRANK_MODE is enabled, the result code
-   allows returning the 'cast rank', for example, if you have this
+   allows to return the 'cast rank', for example, if you have this
 
        int food(double)
        int fooi(int);
diff --git a/swig/python/extensions/gdalconst_wrap.c b/swig/python/extensions/gdalconst_wrap.c
index 38da680..02bd730 100644
--- a/swig/python/extensions/gdalconst_wrap.c
+++ b/swig/python/extensions/gdalconst_wrap.c
@@ -240,7 +240,7 @@
    SWIG errors code.
 
    Finally, if the SWIG_CASTRANK_MODE is enabled, the result code
-   allows returning the 'cast rank', for example, if you have this
+   allows to return the 'cast rank', for example, if you have this
 
        int food(double)
        int fooi(int);
diff --git a/swig/python/extensions/ogr_wrap.cpp b/swig/python/extensions/ogr_wrap.cpp
index 8d9e465..7d5c5cf 100644
--- a/swig/python/extensions/ogr_wrap.cpp
+++ b/swig/python/extensions/ogr_wrap.cpp
@@ -264,7 +264,7 @@ template <typename T> T SwigValueInit() {
    SWIG errors code.
 
    Finally, if the SWIG_CASTRANK_MODE is enabled, the result code
-   allows returning the 'cast rank', for example, if you have this
+   allows to return the 'cast rank', for example, if you have this
 
        int food(double)
        int fooi(int);
diff --git a/swig/python/extensions/osr_wrap.cpp b/swig/python/extensions/osr_wrap.cpp
index 8fa3dd5..a19501e 100644
--- a/swig/python/extensions/osr_wrap.cpp
+++ b/swig/python/extensions/osr_wrap.cpp
@@ -264,7 +264,7 @@ template <typename T> T SwigValueInit() {
    SWIG errors code.
 
    Finally, if the SWIG_CASTRANK_MODE is enabled, the result code
-   allows returning the 'cast rank', for example, if you have this
+   allows to return the 'cast rank', for example, if you have this
 
        int food(double)
        int fooi(int);
diff --git a/swig/python/osgeo/ogr.py b/swig/python/osgeo/ogr.py
index ce73e3d..f2cfe59 100644
--- a/swig/python/osgeo/ogr.py
+++ b/swig/python/osgeo/ogr.py
@@ -999,9 +999,9 @@ class DataSource(MajorObject):
 
     def __getitem__(self, value):
         """Support dictionary, list, and slice -like access to the datasource.
-    ] would return the first layer on the datasource.
-    aname'] would return the layer named "aname".
-    :4] would return a list of the first four layers."""
+        ds[0] would return the first layer on the datasource.
+        ds['aname'] would return the layer named "aname".
+        ds[0:4] would return a list of the first four layers."""
         if isinstance(value, slice):
             output = []
             for i in xrange(value.start,value.stop,value.step):
@@ -2221,8 +2221,8 @@ class Layer(MajorObject):
 
     def __getitem__(self, value):
         """Support list and slice -like access to the layer.
-    r[0] would return the first feature on the layer.
-    r[0:4] would return a list of the first four features."""
+        layer[0] would return the first feature on the layer.
+        layer[0:4] would return a list of the first four features."""
         if isinstance(value, slice):
             import sys
             output = []
diff --git a/swig/python/scripts/gdal_merge.py b/swig/python/scripts/gdal_merge.py
index 6fd2570..ca03be2 100755
--- a/swig/python/scripts/gdal_merge.py
+++ b/swig/python/scripts/gdal_merge.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 ###############################################################################
-# $Id: gdal_merge.py 29213 2015-05-20 11:52:44Z rouault $
+# $Id: gdal_merge.py 29629 2015-08-08 13:47:42Z rouault $
 #
 # Project:  InSAR Peppers
 # Purpose:  Module to extract data from many rasters into one output.
@@ -56,6 +56,17 @@ def raster_copy( s_fh, s_xoff, s_yoff, s_xsize, s_ysize, s_band_n,
                  t_fh, t_xoff, t_yoff, t_xsize, t_ysize, t_band_n,
                  nodata=None ):
 
+    if verbose != 0:
+        print('Copy %d,%d,%d,%d to %d,%d,%d,%d.' \
+              % (s_xoff, s_yoff, s_xsize, s_ysize,
+             t_xoff, t_yoff, t_xsize, t_ysize ))
+
+    if nodata is not None:
+        return raster_copy_with_nodata(
+            s_fh, s_xoff, s_yoff, s_xsize, s_ysize, s_band_n,
+            t_fh, t_xoff, t_yoff, t_xsize, t_ysize, t_band_n,
+            nodata )
+
     s_band = s_fh.GetRasterBand( s_band_n )
     m_band = None
     # Works only in binary mode and doesn't take into account
@@ -70,11 +81,6 @@ def raster_copy( s_fh, s_xoff, s_yoff, s_xsize, s_ysize, s_band_n,
             t_fh, t_xoff, t_yoff, t_xsize, t_ysize, t_band_n,
             m_band )
 
-    if verbose != 0:
-        print('Copy %d,%d,%d,%d to %d,%d,%d,%d.' \
-              % (s_xoff, s_yoff, s_xsize, s_ysize,
-             t_xoff, t_yoff, t_xsize, t_ysize ))
-
     s_band = s_fh.GetRasterBand( s_band_n )
     t_band = t_fh.GetRasterBand( t_band_n )
 
@@ -85,6 +91,29 @@ def raster_copy( s_fh, s_xoff, s_yoff, s_xsize, s_ysize, s_band_n,
         
 
     return 0
+
+# =============================================================================
+def raster_copy_with_nodata( s_fh, s_xoff, s_yoff, s_xsize, s_ysize, s_band_n,
+                             t_fh, t_xoff, t_yoff, t_xsize, t_ysize, t_band_n,
+                             nodata ):
+    try:
+        import numpy as Numeric
+    except ImportError:
+        import Numeric
+
+    s_band = s_fh.GetRasterBand( s_band_n )
+    t_band = t_fh.GetRasterBand( t_band_n )
+
+    data_src = s_band.ReadAsArray( s_xoff, s_yoff, s_xsize, s_ysize,
+                                   t_xsize, t_ysize )
+    data_dst = t_band.ReadAsArray( t_xoff, t_yoff, t_xsize, t_ysize )
+
+    nodata_test = Numeric.equal(data_src,nodata)
+    to_write = Numeric.choose( nodata_test, (data_src, data_dst) )
+
+    t_band.WriteArray( to_write, t_xoff, t_yoff )
+
+    return 0
     
 # =============================================================================
 def raster_copy_with_mask( s_fh, s_xoff, s_yoff, s_xsize, s_ysize, s_band_n,
@@ -94,11 +123,6 @@ def raster_copy_with_mask( s_fh, s_xoff, s_yoff, s_xsize, s_ysize, s_band_n,
         import numpy as Numeric
     except ImportError:
         import Numeric
-    
-    if verbose != 0:
-        print('Copy %d,%d,%d,%d to %d,%d,%d,%d.' \
-              % (s_xoff, s_yoff, s_xsize, s_ysize,
-             t_xoff, t_yoff, t_xsize, t_ysize ))
 
     s_band = s_fh.GetRasterBand( s_band_n )
     t_band = t_fh.GetRasterBand( t_band_n )
diff --git a/swig/python/setup.py b/swig/python/setup.py
index 4c7b3db..84f4e9e 100644
--- a/swig/python/setup.py
+++ b/swig/python/setup.py
@@ -7,7 +7,7 @@
 # Howard Butler hobu.inc at gmail.com
 
 
-gdal_version = '2.0.0'
+gdal_version = '2.0.1'
 
 import sys
 import os

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/gdal.git



More information about the Pkg-grass-devel mailing list