Blob Blame History Raw
commit 7cab3c2049907fb0be76784c796143fb22dcafea
Author: Björn Esser <besser82@fedoraproject.org>
Date:   Mon Dec 11 17:01:20 2017 +0100

    geojson: Adaptions for json-c v0.13

Index: gdal-2.2.3-fedora/ogr/ogrsf_frmts/geojson/ogrgeojsonwriter.cpp
===================================================================
--- gdal-2.2.3-fedora.orig/ogr/ogrsf_frmts/geojson/ogrgeojsonwriter.cpp
+++ gdal-2.2.3-fedora/ogr/ogrsf_frmts/geojson/ogrgeojsonwriter.cpp
@@ -27,12 +27,18 @@
  * DEALINGS IN THE SOFTWARE.
  ****************************************************************************/
 
+#define JSON_C_VER_013 (13 << 8)
+
 #include "ogrgeojsonwriter.h"
 #include "ogrgeojsonutils.h"
 #include "ogr_geojson.h"
 #include "ogrgeojsonreader.h"
 #include <json.h>  // JSON-C
+
+#if (!defined(JSON_C_VERSION_NUM)) || (JSON_C_VERSION_NUM < JSON_C_VER_013)
 #include <json_object_private.h>
+#endif
+
 #include <printbuf.h>
 #include <ogr_api.h>
 #include <ogr_p.h>
@@ -1381,13 +1387,26 @@ static int OGR_json_double_with_precisio
 {
     // TODO(schwehr): Explain this casting.
     const int nPrecision =
+#if (!defined(JSON_C_VERSION_NUM)) || (JSON_C_VERSION_NUM < JSON_C_VER_013)
         static_cast<int>(reinterpret_cast<GUIntptr_t>(jso->_userdata));
+#else
+        static_cast<int>(reinterpret_cast<GUIntptr_t>(json_object_get_userdata(jso)));
+#endif
     char szBuffer[75] = {};
+#if (!defined(JSON_C_VERSION_NUM)) || (JSON_C_VERSION_NUM < JSON_C_VER_013)
     OGRFormatDouble( szBuffer, sizeof(szBuffer), jso->o.c_double, '.',
                      (nPrecision < 0) ? 15 : nPrecision );
+#else
+    OGRFormatDouble( szBuffer, sizeof(szBuffer), json_object_get_double(jso), '.',
+                     (nPrecision < 0) ? 15 : nPrecision );
+#endif
     if( szBuffer[0] == 't' /*oobig */ )
     {
+#if (!defined(JSON_C_VERSION_NUM)) || (JSON_C_VERSION_NUM < JSON_C_VER_013)
         CPLsnprintf(szBuffer, sizeof(szBuffer), "%.18g", jso->o.c_double);
+#else
+        CPLsnprintf(szBuffer, sizeof(szBuffer), "%.18g", json_object_get_double(jso));
+#endif
     }
     return printbuf_memappend(pb, szBuffer, static_cast<int>(strlen(szBuffer)));
 }
@@ -1417,11 +1436,23 @@ OGR_json_double_with_significant_figures
 {
     char szBuffer[75] = {};
     int nSize = 0;
+#if (!defined(JSON_C_VERSION_NUM)) || (JSON_C_VERSION_NUM < JSON_C_VER_013)
     if( CPLIsNan(jso->o.c_double))
+#else
+    if( CPLIsNan(json_object_get_double(jso)))
+#endif
         nSize = CPLsnprintf(szBuffer, sizeof(szBuffer), "NaN");
+#if (!defined(JSON_C_VERSION_NUM)) || (JSON_C_VERSION_NUM < JSON_C_VER_013)
     else if( CPLIsInf(jso->o.c_double) )
+#else
+    else if( CPLIsInf(json_object_get_double(jso)) )
+#endif
     {
+#if (!defined(JSON_C_VERSION_NUM)) || (JSON_C_VERSION_NUM < JSON_C_VER_013)
         if( jso->o.c_double > 0 )
+#else
+        if( json_object_get_double(jso) > 0 )
+#endif
             nSize = CPLsnprintf(szBuffer, sizeof(szBuffer), "Infinity");
         else
             nSize = CPLsnprintf(szBuffer, sizeof(szBuffer), "-Infinity");
@@ -1429,13 +1460,22 @@ OGR_json_double_with_significant_figures
     else
     {
         char szFormatting[32] = {};
+#if (!defined(JSON_C_VERSION_NUM)) || (JSON_C_VERSION_NUM < JSON_C_VER_013)
         const int nSignificantFigures = (int) (GUIntptr_t) jso->_userdata;
+#else
+        const int nSignificantFigures = (int) (GUIntptr_t) json_object_get_userdata(jso);
+#endif
         const int nInitialSignificantFigures =
             nSignificantFigures >= 0 ? nSignificantFigures : 17;
         CPLsnprintf(szFormatting, sizeof(szFormatting),
                     "%%.%dg", nInitialSignificantFigures);
+#if (!defined(JSON_C_VERSION_NUM)) || (JSON_C_VERSION_NUM < JSON_C_VER_013)
         nSize = CPLsnprintf(szBuffer, sizeof(szBuffer),
                             szFormatting, jso->o.c_double);
+#else
+        nSize = CPLsnprintf(szBuffer, sizeof(szBuffer),
+                            szFormatting, json_object_get_double(jso));
+#endif
         const char* pszDot = NULL;
         if( nSize+2 < static_cast<int>(sizeof(szBuffer)) &&
             (pszDot = strchr(szBuffer, '.')) == NULL )
@@ -1456,8 +1496,13 @@ OGR_json_double_with_significant_figures
             {
                 CPLsnprintf(szFormatting, sizeof(szFormatting),
                             "%%.%dg", nInitialSignificantFigures- i);
+#if (!defined(JSON_C_VERSION_NUM)) || (JSON_C_VERSION_NUM < JSON_C_VER_013)
                 nSize = CPLsnprintf(szBuffer, sizeof(szBuffer),
                                     szFormatting, jso->o.c_double);
+#else
+                nSize = CPLsnprintf(szBuffer, sizeof(szBuffer),
+                                    szFormatting, json_object_get_double(jso));
+#endif
                 pszDot = strchr(szBuffer, '.');
                 if( pszDot != NULL &&
                     strstr(pszDot, "999999") == NULL &&
@@ -1471,8 +1516,13 @@ OGR_json_double_with_significant_figures
             {
                 CPLsnprintf(szFormatting, sizeof(szFormatting),
                             "%%.%dg", nInitialSignificantFigures);
+#if (!defined(JSON_C_VERSION_NUM)) || (JSON_C_VERSION_NUM < JSON_C_VER_013)
                 nSize = CPLsnprintf(szBuffer, sizeof(szBuffer),
                                     szFormatting, jso->o.c_double);
+#else
+                nSize = CPLsnprintf(szBuffer, sizeof(szBuffer),
+                                    szFormatting, json_object_get_double(jso));
+#endif
                 if( nSize+2 < static_cast<int>(sizeof(szBuffer)) &&
                     strchr(szBuffer, '.') == NULL )
                 {