Ticket #2158: gdal_svn_trunk_fix2158.patch

File gdal_svn_trunk_fix2158.patch, 3.3 kB (added by rouault, 4 months ago)
  • gcore/gdalopeninfo.cpp

    old new  
    122122    } 
    123123    else if( bStatOK && !bIsDirectory ) 
    124124    { 
    125         CPLString osDir = CPLGetDirname( pszFilename ); 
    126         papszSiblingFiles = VSIReadDir( osDir ); 
     125        if (CSLTestBoolean(CPLGetConfigOption("GDAL_LIST_SIBLING_FILES", "YES"))) 
     126        { 
     127            CPLString osDir = CPLGetDirname( pszFilename ); 
     128            papszSiblingFiles = VSIReadDir( osDir ); 
     129        } 
     130        else 
     131        { 
     132            papszSiblingFiles = NULL; 
     133        } 
    127134    } 
    128135    else 
    129136        papszSiblingFiles = NULL; 
  • frmts/raw/genbindataset.cpp

    old new  
    440440    CPLString osPath = CPLGetPath( poOpenInfo->pszFilename ); 
    441441    CPLString osName = CPLGetBasename( poOpenInfo->pszFilename ); 
    442442 
    443     int iFile = CSLFindString(poOpenInfo->papszSiblingFiles,  
    444                               CPLFormFilename( NULL, osName, "hdr" ) ); 
    445     if( iFile < 0 ) // return if there is no corresponding .hdr file 
    446         return NULL; 
     443    CPLString osHDRFilename; 
     444    if (poOpenInfo->papszSiblingFiles != NULL) 
     445    { 
     446        int iFile = CSLFindString(poOpenInfo->papszSiblingFiles,  
     447                                CPLFormFilename( NULL, osName, "hdr" ) ); 
     448        if( iFile < 0 ) // return if there is no corresponding .hdr file 
     449            return NULL; 
    447450 
    448     CPLString osHDRFilename =  
    449         CPLFormFilename( osPath, poOpenInfo->papszSiblingFiles[iFile], NULL ); 
     451        osHDRFilename =  
     452            CPLFormFilename( osPath, poOpenInfo->papszSiblingFiles[iFile], NULL ); 
     453    } 
     454    else 
     455    { 
     456        osHDRFilename = CPLFormCIFilename( osPath, osName, "hdr" ); 
     457    } 
    450458 
    451459    bSelectedHDR = EQUAL( osHDRFilename, poOpenInfo->pszFilename ); 
    452460 
  • frmts/raw/ehdrdataset.cpp

    old new  
    948948    CPLString osPath = CPLGetPath( poOpenInfo->pszFilename ); 
    949949    CPLString osName = CPLGetBasename( poOpenInfo->pszFilename ); 
    950950 
    951     int iFile = CSLFindString(poOpenInfo->papszSiblingFiles,  
    952                               CPLFormFilename( NULL, osName, "hdr" ) ); 
    953     if( iFile < 0 ) // return if there is no corresponding .hdr file 
    954         return NULL; 
     951    CPLString osHDRFilename; 
     952    if (poOpenInfo->papszSiblingFiles != NULL) 
     953    { 
     954        int iFile = CSLFindString(poOpenInfo->papszSiblingFiles,  
     955                                CPLFormFilename( NULL, osName, "hdr" ) ); 
     956        if( iFile < 0 ) // return if there is no corresponding .hdr file 
     957            return NULL; 
    955958 
    956     CPLString osHDRFilename =  
    957         CPLFormFilename( osPath, poOpenInfo->papszSiblingFiles[iFile], NULL ); 
     959        osHDRFilename =  
     960            CPLFormFilename( osPath, poOpenInfo->papszSiblingFiles[iFile], NULL ); 
     961    } 
     962    else 
     963    { 
     964        osHDRFilename = CPLFormCIFilename( osPath, osName, "hdr" ); 
     965    } 
    958966 
    959967    bSelectedHDR = EQUAL( osHDRFilename, poOpenInfo->pszFilename ); 
    960968