Factor common code

git-svn-id: https://svn.osgeo.org/gdal/trunk@26178 f0d54148-0727-0410-94bb-9a71ac55c965
Merge branch 'trunk' of github.com:rouault/gdal into trunk_with_coverage