LCOV - code coverage report
Current view: top level - apps - gdalmdiminfo_bin.cpp (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 25 33 75.8 %
Date: 2024-11-21 22:18:42 Functions: 2 3 66.7 %

          Line data    Source code
       1             : /******************************************************************************
       2             :  *
       3             :  * Project:  GDAL Utilities
       4             :  * Purpose:  Command line application to list info about a multidimensional
       5             :  *raster Author:   Even Rouault,<even.rouault at spatialys.com>
       6             :  *
       7             :  * ****************************************************************************
       8             :  * Copyright (c) 2019, Even Rouault <even.rouault at spatialys.com>
       9             :  *
      10             :  * SPDX-License-Identifier: MIT
      11             :  ****************************************************************************/
      12             : 
      13             : #include "gdal_version.h"
      14             : #include "gdal.h"
      15             : #include "cpl_string.h"
      16             : #include "cpl_multiproc.h"
      17             : #include "commonutils.h"
      18             : #include "gdal_utils_priv.h"
      19             : 
      20             : /**
      21             :  * @brief Makes sure the GDAL library is properly cleaned up before exiting.
      22             :  * @param nCode exit code
      23             :  * @todo Move to API
      24             :  */
      25           1 : static void GDALExit(const int nCode)
      26             : {
      27           1 :     GDALDestroy();
      28           1 :     exit(nCode);
      29             : }
      30             : 
      31             : /************************************************************************/
      32             : /*                               Usage()                                */
      33             : /************************************************************************/
      34             : 
      35           0 : static void Usage()
      36             : 
      37             : {
      38           0 :     fprintf(stderr, "%s\n", GDALMultiDimInfoAppGetParserUsage().c_str());
      39           0 :     GDALExit(1);
      40           0 : }
      41             : 
      42             : /************************************************************************/
      43             : /*                                main()                                */
      44             : /************************************************************************/
      45             : 
      46           4 : MAIN_START(argc, argv)
      47             : 
      48             : {
      49           4 :     EarlySetConfigOptions(argc, argv);
      50             : 
      51           4 :     GDALAllRegister();
      52             : 
      53           4 :     argc = GDALGeneralCmdLineProcessor(argc, &argv, 0);
      54           4 :     if (argc < 1)
      55           0 :         GDALExit(-argc);
      56             : 
      57           4 :     argv = CSLAddString(argv, "-stdout");
      58             : 
      59           6 :     GDALMultiDimInfoOptionsForBinary sOptionsForBinary;
      60             : 
      61             :     std::unique_ptr<GDALMultiDimInfoOptions,
      62             :                     decltype(&GDALMultiDimInfoOptionsFree)>
      63             :         psOptions{GDALMultiDimInfoOptionsNew(argv + 1, &sOptionsForBinary),
      64           4 :                   GDALMultiDimInfoOptionsFree};
      65             : 
      66           3 :     CSLDestroy(argv);
      67             : 
      68           3 :     if (!psOptions)
      69           0 :         Usage();
      70             : 
      71             :     GDALDatasetH hDataset =
      72           3 :         GDALOpenEx(sOptionsForBinary.osFilename.c_str(),
      73             :                    GDAL_OF_MULTIDIM_RASTER | GDAL_OF_VERBOSE_ERROR,
      74           3 :                    sOptionsForBinary.aosAllowInputDrivers.List(),
      75           3 :                    sOptionsForBinary.aosOpenOptions.List(), nullptr);
      76           3 :     if (!hDataset)
      77             :     {
      78           1 :         fprintf(stderr, "gdalmdiminfo failed - unable to open '%s'.\n",
      79             :                 sOptionsForBinary.osFilename.c_str());
      80           1 :         GDALExit(1);
      81             :     }
      82             : 
      83           2 :     char *pszGDALInfoOutput = GDALMultiDimInfo(hDataset, psOptions.get());
      84             : 
      85           2 :     if (pszGDALInfoOutput)
      86           0 :         printf("%s", pszGDALInfoOutput);
      87             : 
      88           2 :     CPLFree(pszGDALInfoOutput);
      89             : 
      90           2 :     GDALClose(hDataset);
      91             : 
      92           2 :     GDALDestroy();
      93             : 
      94           2 :     return 0;
      95             : }
      96             : 
      97           0 : MAIN_END

Generated by: LCOV version 1.14