/* * Close the table in the WorkArea. */ static HB_ERRCODE hb_sdfClose( SDFAREAP pArea ) { HB_TRACE( HB_TR_DEBUG, ( "hb_sdfClose(%p)", pArea ) ); /* Update record and unlock records */ if( pArea->pFile ) { SELF_GOCOLD( &pArea->area ); if( ! pArea->fReadonly && hb_setGetEOF() ) { hb_fileWrite( pArea->pFile, "\032", 1, -1 ); pArea->fFlush = HB_TRUE; } SELF_FLUSH( &pArea->area ); hb_fileClose( pArea->pFile ); pArea->pFile = NULL; } SUPER_CLOSE( &pArea->area ); if( pArea->pFieldOffset ) { hb_xfree( pArea->pFieldOffset ); pArea->pFieldOffset = NULL; } if( pArea->pRecord ) { hb_xfree( pArea->pRecord - 1 ); pArea->pRecord = NULL; } if( pArea->pBuffer ) { hb_xfree( pArea->pBuffer ); pArea->pBuffer = NULL; } if( pArea->szEol ) { hb_xfree( pArea->szEol ); pArea->szEol = NULL; } if( pArea->szFileName ) { hb_xfree( pArea->szFileName ); pArea->szFileName = NULL; } return HB_SUCCESS; }
/* * Write data buffer to the data store. */ static HB_ERRCODE hb_sdfFlush( SDFAREAP pArea ) { HB_ERRCODE errCode; HB_TRACE( HB_TR_DEBUG, ( "hb_sdfFlush(%p)", pArea ) ); errCode = SELF_GOCOLD( &pArea->area ); if( pArea->fFlush ) { if( hb_setGetEOF() ) hb_fileWriteAt( pArea->pFile, "\032", 1, pArea->nFileSize ); if( hb_setGetHardCommit() ) { hb_fileCommit( pArea->pFile ); pArea->fFlush = HB_FALSE; } } return errCode; }