SEXP ogrDeleteDataSource (SEXP ogrSource, SEXP ogrDriver) { #ifdef GDALV2 GDALDriver *poDriver; #else OGRSFDriver *poDriver; #endif installErrorHandler(); #ifdef GDALV2 poDriver = GetGDALDriverManager()->GetDriverByName(CHAR(STRING_ELT(ogrDriver, 0))); #else poDriver = OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName( CHAR(STRING_ELT(ogrDriver, 0)) ); #endif uninstallErrorHandlerAndTriggerError(); if (poDriver == NULL) { error("Driver not available"); } installErrorHandler(); #ifdef GDALV2 poDriver->Delete(CHAR(STRING_ELT(ogrSource, 0))); #else if (poDriver->TestCapability(ODrCDeleteDataSource)) { if (poDriver->DeleteDataSource(CHAR(STRING_ELT(ogrSource, 0))) != OGRERR_NONE) { uninstallErrorHandlerAndTriggerError(); error("Data source could not be deleted"); } } else { uninstallErrorHandlerAndTriggerError(); error("This driver is not capable of data source deletion"); } #endif uninstallErrorHandlerAndTriggerError(); return(R_NilValue); }