本文整理汇总了C++中VSIStatL函数的典型用法代码示例。如果您正苦于以下问题:C++ VSIStatL函数的具体用法?C++ VSIStatL怎么用?C++ VSIStatL使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了VSIStatL函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CPLError
OGRErr OGRSXFDriver::DeleteDataSource(const char* pszName)
{
int iExt;
//TODO: add more extensions if aplicable
static const char *apszExtensions[] = { "szf", "rsc", "SZF", "RSC", NULL };
VSIStatBufL sStatBuf;
if (VSIStatL(pszName, &sStatBuf) != 0)
{
CPLError(CE_Failure, CPLE_AppDefined,
"%s does not appear to be a valid sxf file.",
pszName);
return OGRERR_FAILURE;
}
for (iExt = 0; apszExtensions[iExt] != NULL; iExt++)
{
const char *pszFile = CPLResetExtension(pszName,
apszExtensions[iExt]);
if (VSIStatL(pszFile, &sStatBuf) == 0)
VSIUnlink(pszFile);
}
return OGRERR_NONE;
}
示例2: CPLError
OGRErr OGRShapeDriver::DeleteDataSource( const char *pszDataSource )
{
int iExt;
VSIStatBufL sStatBuf;
static const char *apszExtensions[] =
{ "shp", "shx", "dbf", "sbn", "sbx", "prj", "idm", "ind",
"qix", "cpg", NULL };
if( VSIStatL( pszDataSource, &sStatBuf ) != 0 )
{
CPLError( CE_Failure, CPLE_AppDefined,
"%s does not appear to be a file or directory.",
pszDataSource );
return OGRERR_FAILURE;
}
if( VSI_ISREG(sStatBuf.st_mode)
&& (EQUAL(CPLGetExtension(pszDataSource),"shp")
|| EQUAL(CPLGetExtension(pszDataSource),"shx")
|| EQUAL(CPLGetExtension(pszDataSource),"dbf")) )
{
for( iExt=0; apszExtensions[iExt] != NULL; iExt++ )
{
const char *pszFile = CPLResetExtension(pszDataSource,
apszExtensions[iExt] );
if( VSIStatL( pszFile, &sStatBuf ) == 0 )
VSIUnlink( pszFile );
}
}
else if( VSI_ISDIR(sStatBuf.st_mode) )
{
char **papszDirEntries = CPLReadDir( pszDataSource );
int iFile;
for( iFile = 0;
papszDirEntries != NULL && papszDirEntries[iFile] != NULL;
iFile++ )
{
if( CSLFindString( (char **) apszExtensions,
CPLGetExtension(papszDirEntries[iFile])) != -1)
{
VSIUnlink( CPLFormFilename( pszDataSource,
papszDirEntries[iFile],
NULL ) );
}
}
CSLDestroy( papszDirEntries );
VSIRmdir( pszDataSource );
}
return OGRERR_NONE;
}
示例3: CPLError
OGRErr OGRGeoconceptDriver::DeleteDataSource( const char *pszDataSource )
{
VSIStatBufL sStatBuf;
static const char * const apszExtensions[] =
{ "gxt", "txt", "gct", "gcm", "gcr", nullptr };
if( VSIStatL( pszDataSource, &sStatBuf ) != 0 )
{
CPLError( CE_Failure, CPLE_AppDefined,
"%s does not appear to be a file or directory.",
pszDataSource );
return OGRERR_FAILURE;
}
if( VSI_ISREG(sStatBuf.st_mode)
&& (
EQUAL(CPLGetExtension(pszDataSource),"gxt") ||
EQUAL(CPLGetExtension(pszDataSource),"txt")
) )
{
for( int iExt=0; apszExtensions[iExt] != nullptr; iExt++ )
{
const char *pszFile = CPLResetExtension(pszDataSource,
apszExtensions[iExt] );
if( VSIStatL( pszFile, &sStatBuf ) == 0 )
VSIUnlink( pszFile );
}
}
else if( VSI_ISDIR(sStatBuf.st_mode) )
{
char **papszDirEntries = VSIReadDir( pszDataSource );
for( int iFile = 0;
papszDirEntries != nullptr && papszDirEntries[iFile] != nullptr;
iFile++ )
{
if( CSLFindString( const_cast<char **>( apszExtensions ),
CPLGetExtension(papszDirEntries[iFile])) != -1)
{
VSIUnlink( CPLFormFilename( pszDataSource,
papszDirEntries[iFile],
nullptr ) );
}
}
CSLDestroy( papszDirEntries );
VSIRmdir( pszDataSource );
}
return OGRERR_NONE;
}
示例4: GetDatasetFast
void wxGxOpenFileGDB::FillMetadata(bool bForce)
{
if (m_bIsMetadataFilled && !bForce)
return;
m_bIsMetadataFilled = true;
wxGISDataset* pDSet = GetDatasetFast();
if (NULL == pDSet)
{
return;
}
VSIStatBufL BufL;
wxULongLong nSize(0);
wxDateTime dt(1,wxDateTime::Jan, 1900);
int ret = VSIStatL(m_sPath, &BufL);
if (ret == 0)
{
//nSize += BufL.st_size;
//dt = wxDateTime(BufL.st_mtime);
if (VSI_ISDIR(BufL.st_mode))
{
char **papszItems = CPLReadDir(wxGxObjectContainer::GetPath());
if (papszItems && CSLCount(papszItems) > 0)
{
for (int i = 0; papszItems[i] != NULL; ++i)
{
if (wxGISEQUAL(papszItems[i], ".") || wxGISEQUAL(papszItems[i], ".."))
continue;
CPLString szFullPathFrom = CPLFormFilename(wxGxObjectContainer::GetPath(), papszItems[i], NULL);
ret = VSIStatL(szFullPathFrom, &BufL);
if (ret == 0)
{
nSize += BufL.st_size;
wxDateTime dtt(BufL.st_mtime);
if (dtt > dt)
dt = dtt;
}
}
}
CSLDestroy(papszItems);
}
}
m_nSize = nSize;
m_dtMod = dt;
wsDELETE(pDSet);
}
示例5: TABAdjustFilenameExtension
/**********************************************************************
* TABAdjustFilenameExtension()
*
* Because Unix filenames are case sensitive and MapInfo datasets often have
* mixed cases filenames, we use this function to find the right filename
* to use ot open a specific file.
*
* This function works directly on the source string, so the filename it
* contains at the end of the call is the one that should be used.
*
* Returns TRUE if one of the extensions worked, and FALSE otherwise.
* If none of the extensions worked then the original extension will NOT be
* restored.
**********************************************************************/
GBool TABAdjustFilenameExtension(char *pszFname)
{
VSIStatBufL sStatBuf;
/*-----------------------------------------------------------------
* First try using filename as provided
*----------------------------------------------------------------*/
if (VSIStatL(pszFname, &sStatBuf) == 0)
{
return TRUE;
}
/*-----------------------------------------------------------------
* Try using uppercase extension (we assume that fname contains a '.')
*----------------------------------------------------------------*/
for( int i = static_cast<int>(strlen(pszFname))-1;
i >= 0 && pszFname[i] != '.';
i-- )
{
pszFname[i] = (char)toupper(pszFname[i]);
}
if (VSIStatL(pszFname, &sStatBuf) == 0)
{
return TRUE;
}
/*-----------------------------------------------------------------
* Try using lowercase extension
*----------------------------------------------------------------*/
for( int i = static_cast<int>(strlen(pszFname))-1;
i >= 0 && pszFname[i] != '.';
i-- )
{
pszFname[i] = (char)tolower(pszFname[i]);
}
if (VSIStatL(pszFname, &sStatBuf) == 0)
{
return TRUE;
}
/*-----------------------------------------------------------------
* None of the extensions worked!
* Try adjusting cases in the whole path and filename
*----------------------------------------------------------------*/
return TABAdjustCaseSensitiveFilename(pszFname);
}
示例6: if
int DIMAPDataset::Identify( GDALOpenInfo * poOpenInfo )
{
if( poOpenInfo->nHeaderBytes >= 100 )
{
if( strstr((const char *) poOpenInfo->pabyHeader,
"<Dimap_Document" ) == NULL )
return FALSE;
else
return TRUE;
}
else if( poOpenInfo->bIsDirectory )
{
VSIStatBufL sStat;
CPLString osMDFilename =
CPLFormCIFilename( poOpenInfo->pszFilename, "METADATA.DIM", NULL );
if( VSIStatL( osMDFilename, &sStat ) == 0 )
return TRUE;
else
return FALSE;
}
return FALSE;
}
示例7: CPLFormCIFilename
int TSXDataset::Identify( GDALOpenInfo *poOpenInfo )
{
if (poOpenInfo->fpL == NULL || poOpenInfo->nHeaderBytes < 260)
{
if( poOpenInfo->bIsDirectory )
{
CPLString osFilename =
CPLFormCIFilename( poOpenInfo->pszFilename, CPLGetFilename( poOpenInfo->pszFilename ), "xml" );
/* Check if the filename contains TSX1_SAR (TerraSAR-X) or TDX1_SAR (TanDEM-X) */
if (!(EQUALN(CPLGetBasename( osFilename ), "TSX1_SAR", 8) ||
EQUALN(CPLGetBasename( osFilename ), "TDX1_SAR", 8)))
return 0;
VSIStatBufL sStat;
if( VSIStatL( osFilename, &sStat ) == 0 )
return 1;
}
return 0;
}
/* Check if the filename contains TSX1_SAR (TerraSAR-X) or TDX1_SAR (TanDEM-X) */
if (!(EQUALN(CPLGetBasename( poOpenInfo->pszFilename ), "TSX1_SAR", 8) ||
EQUALN(CPLGetBasename( poOpenInfo->pszFilename ), "TDX1_SAR", 8)))
return 0;
/* finally look for the <level1Product tag */
if (!EQUALN((char *)poOpenInfo->pabyHeader, "<level1Product", 14))
return 0;
return 1;
}
示例8: OGRVFKDriverIdentify
static int OGRVFKDriverIdentify(GDALOpenInfo* poOpenInfo)
{
if( poOpenInfo->fpL == nullptr )
return FALSE;
if( poOpenInfo->nHeaderBytes >= 2 &&
STARTS_WITH((const char*)poOpenInfo->pabyHeader, "&H") )
return TRUE;
/* valid datasource can be also SQLite DB previously created by
VFK driver, the real check is done by VFKReaderSQLite */
if ( poOpenInfo->nHeaderBytes >= 100 &&
STARTS_WITH((const char*)poOpenInfo->pabyHeader, "SQLite format 3") )
{
// The driver is not ready for virtual file systems
if( STARTS_WITH(poOpenInfo->pszFilename, "/vsi") )
return FALSE;
VSIStatBufL sStat;
if (VSIStatL(poOpenInfo->pszFilename, &sStat) == 0 &&
VSI_ISREG(sStat.st_mode))
{
return GDAL_IDENTIFY_UNKNOWN;
}
}
return FALSE;
}
示例9: Delete
CPLErr GSBGDataset::Delete( const char *pszFilename )
{
VSIStatBufL sStat;
if( VSIStatL( pszFilename, &sStat ) != 0 )
{
CPLError( CE_Failure, CPLE_FileIO,
"Unable to stat() %s.\n", pszFilename );
return CE_Failure;
}
if( !VSI_ISREG( sStat.st_mode ) )
{
CPLError( CE_Failure, CPLE_FileIO,
"%s is not a regular file, not removed.\n", pszFilename );
return CE_Failure;
}
if( VSIUnlink( pszFilename ) != 0 )
{
CPLError( CE_Failure, CPLE_FileIO,
"Error unlinking %s.\n", pszFilename );
return CE_Failure;
}
return CE_None;
}
示例10: CPLFormCIFilename
int TSXDataset::Identify( GDALOpenInfo *poOpenInfo )
{
if (poOpenInfo->fpL == NULL || poOpenInfo->nHeaderBytes < 260)
{
if( poOpenInfo->bIsDirectory )
{
const CPLString osFilename =
CPLFormCIFilename( poOpenInfo->pszFilename, CPLGetFilename( poOpenInfo->pszFilename ), "xml" );
/* Check if the filename contains TSX1_SAR (TerraSAR-X) or TDX1_SAR (TanDEM-X) */
if (!(STARTS_WITH_CI(CPLGetBasename( osFilename ), "TSX1_SAR") ||
STARTS_WITH_CI(CPLGetBasename( osFilename ), "TDX1_SAR")))
return 0;
VSIStatBufL sStat;
if( VSIStatL( osFilename, &sStat ) == 0 )
return 1;
}
return 0;
}
/* Check if the filename contains TSX1_SAR (TerraSAR-X) or TDX1_SAR (TanDEM-X) */
if (!(STARTS_WITH_CI(CPLGetBasename( poOpenInfo->pszFilename ), "TSX1_SAR") ||
STARTS_WITH_CI(CPLGetBasename( poOpenInfo->pszFilename ), "TDX1_SAR")))
return 0;
/* finally look for the <level1Product tag */
if (!STARTS_WITH_CI(reinterpret_cast<char *>( poOpenInfo->pabyHeader ),
"<level1Product") )
return 0;
return 1;
}
示例11: CPLError
OGRDataSource *OGRPDFDriver::CreateDataSource( const char * pszName,
char **papszOptions )
{
/* -------------------------------------------------------------------- */
/* First, ensure there isn't any such file yet. */
/* -------------------------------------------------------------------- */
VSIStatBufL sStatBuf;
if( VSIStatL( pszName, &sStatBuf ) == 0 )
{
CPLError( CE_Failure, CPLE_AppDefined,
"It seems a file system object called '%s' already exists.",
pszName );
return NULL;
}
/* -------------------------------------------------------------------- */
/* Try to create datasource. */
/* -------------------------------------------------------------------- */
OGRPDFDataSource *poDS;
poDS = new OGRPDFDataSource();
if( !poDS->Create( pszName, papszOptions ) )
{
delete poDS;
return NULL;
}
else
return poDS;
}
示例12: VSIStatL
int VSISubFileFilesystemHandler::Stat( const char * pszFilename,
VSIStatBufL * psStatBuf )
{
CPLString osSubFilePath;
vsi_l_offset nOff, nSize;
if( !DecomposePath( pszFilename, osSubFilePath, nOff, nSize ) )
{
errno = ENOENT;
return -1;
}
int nResult = VSIStatL( osSubFilePath, psStatBuf );
if( nResult == 0 )
{
if( nSize != 0 )
psStatBuf->st_size = (long)nSize;
else
psStatBuf->st_size -= (long)nOff;
}
return nResult;
}
示例13: OGRTABDriverDelete
static CPLErr OGRTABDriverDelete( const char *pszDataSource )
{
GDALDataset* poDS = NULL;
{
// Make sure that the file opened by GDALOpenInfo is closed
// when the object goes out of scope
GDALOpenInfo oOpenInfo(pszDataSource, GA_ReadOnly);
poDS = OGRTABDriverOpen(&oOpenInfo);
}
if( poDS == NULL )
return CE_Failure;
char** papszFileList = poDS->GetFileList();
delete poDS;
char** papszIter = papszFileList;
while( papszIter && *papszIter )
{
VSIUnlink( *papszIter );
papszIter ++;
}
CSLDestroy(papszFileList);
VSIStatBufL sStatBuf;
if( VSIStatL( pszDataSource, &sStatBuf ) == 0 &&
VSI_ISDIR(sStatBuf.st_mode) )
{
VSIRmdir( pszDataSource );
}
return CE_None;
}
示例14: FindDataPath
/**
* \brief Find a file or folder in the WindNinja data path
*
* XXX: Refactored by Kyle 20130117
*
* For example the date_time_zonespec.csv file is location in data. If
* WINDNINJA_DATA is *not* defined, try to find the file relative to the bin
* path, ie ../share/data, otherwise return WINDNINJA_DATA + filename.
*
* \param file file or folder to look for.
* \return a full path to file
*/
std::string FindDataPath(std::string file)
{
const char* pszFilename;
const char* pszNinjaPath;
const char* pszNinjaDataPath;
const char* pszCurDir;
char pszExePath[MAX_PATH];
/* Check WINDNINJA_DATA */
VSIStatBufL sStat;
pszNinjaDataPath = CPLGetConfigOption( "WINDNINJA_DATA", NULL );
if( pszNinjaDataPath != NULL )
{
pszFilename = CPLFormFilename( pszNinjaDataPath, file.c_str(), NULL );
VSIStatL( pszFilename, &sStat );
if( VSI_ISREG( sStat.st_mode ) || VSI_ISDIR( sStat.st_mode ) )
{
return std::string( pszFilename );
}
}
/* Check 'normal' installation location */
CPLGetExecPath( pszExePath, MAX_PATH );
pszNinjaPath = CPLGetPath( pszExePath );
pszNinjaDataPath = CPLProjectRelativeFilename(pszNinjaPath,
"../share/windninja");
pszFilename = CPLFormFilename( pszNinjaDataPath, file.c_str(), NULL );
VSIStatL( pszFilename, &sStat );
if( VSI_ISREG( sStat.st_mode ) || VSI_ISDIR( sStat.st_mode ) )
{
return std::string( pszFilename );
}
/* Check the current directory */
pszCurDir = CPLGetCurrentDir();
pszFilename = CPLFormFilename( pszCurDir, file.c_str(), NULL );
CPLFree( (void*)pszCurDir );
if( CPLCheckForFile( (char*)pszFilename, NULL ))
{
return std::string( pszFilename );
}
return std::string();
}
示例15: VSIMkdir
int OGRTigerDataSource::Create( const char *pszNameIn, char **papszOptionsIn )
{
VSIStatBufL stat;
/* -------------------------------------------------------------------- */
/* Try to create directory if it doesn't already exist. */
/* -------------------------------------------------------------------- */
if( VSIStatL( pszNameIn, &stat ) != 0 )
{
VSIMkdir( pszNameIn, 0755 );
}
if( VSIStatL( pszNameIn, &stat ) != 0 || !VSI_ISDIR(stat.st_mode) )
{
CPLError( CE_Failure, CPLE_AppDefined,
"%s is not a directory, nor can be directly created as one.",
pszNameIn );
return FALSE;
}
/* -------------------------------------------------------------------- */
/* Store various information. */
/* -------------------------------------------------------------------- */
pszPath = CPLStrdup( pszNameIn );
pszName = CPLStrdup( pszNameIn );
bWriteMode = true;
SetOptionList( papszOptionsIn );
/* -------------------------------------------------------------------- */
/* Work out the version. */
/* -------------------------------------------------------------------- */
// nVersionCode = 1000; /* census 2000 */
nVersionCode = 1002; /* census 2002 */
if( GetOption("VERSION") != nullptr )
{
nVersionCode = atoi(GetOption("VERSION"));
nVersionCode = std::max(0, std::min(9999, nVersionCode));
}
nVersion = TigerClassifyVersion(nVersionCode);
return TRUE;
}