예제 #1
0
vsi_l_offset VSIFTellL( VSILFILE * fp )

{
    VSIVirtualHandle *poFileHandle = (VSIVirtualHandle *) fp;
    
    return poFileHandle->Tell();
}
예제 #2
0
vsi_l_offset VSIFTellL( VSILFILE * fp )

{
    VSIVirtualHandle *poFileHandle = reinterpret_cast<VSIVirtualHandle *>( fp );

    return poFileHandle->Tell();
}
int VSIBufferedReaderHandle::Seek( vsi_l_offset nOffset, int nWhence )
{
    //CPLDebug( "BUFFERED", "Seek(%d,%d)", (int)nOffset, (int)nWhence);
    bEOF = FALSE;
    if (nWhence == SEEK_CUR)
        nCurOffset += nOffset;
    else if (nWhence == SEEK_END)
    {
        poBaseHandle->Seek(nOffset, nWhence);
        nCurOffset = poBaseHandle->Tell();
        bNeedBaseHandleSeek = TRUE;
    }
    else
        nCurOffset = nOffset;

    return 0;
}
예제 #4
0
int VSISparseFileFilesystemHandler::Stat( const char * pszFilename, 
                                          VSIStatBufL * psStatBuf,
                                          int nFlags )

{
    VSIVirtualHandle *poFile = Open( pszFilename, "r" );

    memset( psStatBuf, 0, sizeof(VSIStatBufL) );

    if( poFile == NULL )
        return -1;

    poFile->Seek( 0, SEEK_END );
    size_t nLength = (size_t) poFile->Tell();
    delete poFile;

    int nResult = VSIStatExL( pszFilename + strlen("/vsisparse/"), 
                            psStatBuf, nFlags );

    psStatBuf->st_size = nLength;

    return nResult;
}
예제 #5
0
vsi_l_offset VSIStdoutRedirectHandle::Tell()
{
    return poHandle->Tell();
}