Ejemplo n.º 1
0
OGRDataSource *OGRAVCBinDriver::Open( const char * pszFilename,
                                      int bUpdate )

{
    OGRAVCBinDataSource	*poDS;
    OGRAVCE00DataSource *poDSE00;

    if( bUpdate )
        return NULL;

    poDS = new OGRAVCBinDataSource();

    if( poDS->Open( pszFilename, TRUE )
        && poDS->GetLayerCount() > 0 )
    {
        return poDS;
    }
    delete poDS;

    poDSE00 = new OGRAVCE00DataSource();

    if( poDSE00->Open( pszFilename, TRUE )
        && poDSE00->GetLayerCount() > 0 )
    {
        return poDSE00;
    }
    delete poDSE00;

    return NULL;
}
Ejemplo n.º 2
0
static GDALDataset *OGRAVCBinDriverOpen( GDALOpenInfo* poOpenInfo )

{
    OGRAVCBinDataSource	*poDS;
    OGRAVCE00DataSource *poDSE00;

    if( poOpenInfo->eAccess == GA_Update )
        return NULL;
    if( !poOpenInfo->bStatOK )
        return NULL;
    if( poOpenInfo->fpL != NULL )
    {
        if( EQUAL(CPLGetExtension(poOpenInfo->pszFilename), "E00") )
        {
            /* ok */
        }
        else
        {
            char** papszSiblingFiles = poOpenInfo->GetSiblingFiles();
            if( papszSiblingFiles != NULL )
            {
                int i;
                int bFoundCandidateFile = FALSE;
                for( i = 0; papszSiblingFiles[i] != NULL; i++ )
                {
                    if( EQUAL(CPLGetExtension(papszSiblingFiles[i]), "ADF") )
                    {
                        bFoundCandidateFile = TRUE;
                        break;
                    }
                }
                if( !bFoundCandidateFile )
                    return NULL;
            }
        }
    }

    poDS = new OGRAVCBinDataSource();

    if( poDS->Open( poOpenInfo->pszFilename, TRUE )
            && poDS->GetLayerCount() > 0 )
    {
        return poDS;
    }
    delete poDS;

    poDSE00 = new OGRAVCE00DataSource();

    if( poDSE00->Open( poOpenInfo->pszFilename, TRUE )
            && poDSE00->GetLayerCount() > 0 )
    {
        return poDSE00;
    }
    delete poDSE00;

    return NULL;
}