MCPcopy Create free account
hub / github.com/OSGeo/gdal / GetOutputDriver

Function GetOutputDriver

apps/ogrlineref.cpp:1318–1369  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1316/************************************************************************/
1317
1318static GDALDriver *GetOutputDriver(OGRLineRefOptions &sOptions)
1319{
1320 if (sOptions.osFormat.empty())
1321 {
1322 const auto aoDrivers = GetOutputDriversFor(
1323 sOptions.osOutputDataSourceName.c_str(), GDAL_OF_VECTOR);
1324 if (aoDrivers.empty())
1325 {
1326 CPLError(CE_Failure, CPLE_AppDefined, "Cannot guess driver for %s",
1327 sOptions.osOutputDataSourceName.c_str());
1328 return nullptr;
1329 }
1330 else
1331 {
1332 if (aoDrivers.size() > 1)
1333 {
1334 CPLError(
1335 CE_Warning, CPLE_AppDefined,
1336 "Several drivers matching %s extension. Using %s",
1337 CPLGetExtensionSafe(sOptions.osOutputDataSourceName.c_str())
1338 .c_str(),
1339 aoDrivers[0].c_str());
1340 }
1341 sOptions.osFormat = aoDrivers[0];
1342 }
1343 }
1344
1345 GDALDriver *poDriver =
1346 GetGDALDriverManager()->GetDriverByName(sOptions.osFormat.c_str());
1347 if (poDriver == nullptr)
1348 {
1349 fprintf(stderr, _("Unable to find driver `%s'.\n"),
1350 sOptions.osFormat.c_str());
1351 fprintf(stderr, _("The following drivers are available:\n"));
1352
1353 GDALDriverManager *poDM = GetGDALDriverManager();
1354 for (int iDriver = 0; iDriver < poDM->GetDriverCount(); iDriver++)
1355 {
1356 GDALDriver *poIter = poDM->GetDriver(iDriver);
1357 CSLConstList papszDriverMD = poIter->GetMetadata();
1358 if (CPLTestBool(CSLFetchNameValueDef(papszDriverMD,
1359 GDAL_DCAP_VECTOR, "FALSE")) &&
1360 CPLTestBool(CSLFetchNameValueDef(papszDriverMD,
1361 GDAL_DCAP_CREATE, "FALSE")))
1362 {
1363 fprintf(stderr, " -> `%s'\n", poIter->GetDescription());
1364 }
1365 }
1366 }
1367
1368 return poDriver;
1369}
1370
1371/************************************************************************/
1372/* main() */

Callers 1

MAIN_STARTFunction · 0.85

Calls 14

CPLErrorFunction · 0.85
CPLGetExtensionSafeFunction · 0.85
GetGDALDriverManagerFunction · 0.85
CPLTestBoolFunction · 0.85
CSLFetchNameValueDefFunction · 0.85
GetOutputDriversForFunction · 0.70
emptyMethod · 0.45
c_strMethod · 0.45
sizeMethod · 0.45
GetDriverByNameMethod · 0.45
GetDriverCountMethod · 0.45
GetDriverMethod · 0.45

Tested by

no test coverage detected