PostGIS  3.4.0dev-r@@SVN_REVISION@@

◆ DBFLoadRecord()

static int DBFLoadRecord ( DBFHandle  psDBF,
int  iRecord 
)
static

Definition at line 257 of file dbfopen.c.

259 {
260  if( psDBF->nCurrentRecord != iRecord )
261  {
262  SAOffset nRecordOffset;
263 
264  if( !DBFFlushRecord( psDBF ) )
265  return FALSE;
266 
267  nRecordOffset =
268  psDBF->nRecordLength * STATIC_CAST(SAOffset,iRecord) + psDBF->nHeaderLength;
269 
270  if( psDBF->sHooks.FSeek( psDBF->fp, nRecordOffset, SEEK_SET ) != 0 )
271  {
272  char szMessage[128];
273  snprintf( szMessage, sizeof(szMessage), "fseek(%ld) failed on DBF file.",
274  STATIC_CAST(long, nRecordOffset) );
275  psDBF->sHooks.Error( szMessage );
276  return FALSE;
277  }
278 
279  if( psDBF->sHooks.FRead( psDBF->pszCurrentRecord,
280  psDBF->nRecordLength, 1, psDBF->fp ) != 1 )
281  {
282  char szMessage[128];
283  snprintf( szMessage, sizeof(szMessage), "fread(%d) failed on DBF file.",
284  psDBF->nRecordLength );
285  psDBF->sHooks.Error( szMessage );
286  return FALSE;
287  }
288 
289  psDBF->nCurrentRecord = iRecord;
290 /* -------------------------------------------------------------------- */
291 /* Require a seek for next write in case of mixed R/W operations. */
292 /* -------------------------------------------------------------------- */
293  psDBF->bRequireNextWriteSeek = TRUE;
294  }
295 
296  return TRUE;
297 }
#define STATIC_CAST(type, x)
Definition: dbfopen.c:96
#define TRUE
Definition: dbfopen.c:73
#define FALSE
Definition: dbfopen.c:72
static int DBFFlushRecord(DBFHandle psDBF)
Definition: dbfopen.c:195
unsigned long SAOffset
Definition: shapefil.h:286
int nRecordLength
Definition: shapefil.h:596
int nHeaderLength
Definition: shapefil.h:597
char * pszCurrentRecord
Definition: shapefil.h:610
SAFile fp
Definition: shapefil.h:592
int bRequireNextWriteSeek
Definition: shapefil.h:633
SAHooks sHooks
Definition: shapefil.h:590
int nCurrentRecord
Definition: shapefil.h:608
void(* Error)(const char *message)
Definition: shapefil.h:299
SAOffset(* FRead)(void *p, SAOffset size, SAOffset nmemb, SAFile file)
Definition: shapefil.h:291
SAOffset(* FSeek)(SAFile file, SAOffset offset, int whence)
Definition: shapefil.h:293

References DBFInfo::bRequireNextWriteSeek, DBFFlushRecord(), SAHooks::Error, FALSE, DBFInfo::fp, SAHooks::FRead, SAHooks::FSeek, DBFInfo::nCurrentRecord, DBFInfo::nHeaderLength, DBFInfo::nRecordLength, DBFInfo::pszCurrentRecord, DBFInfo::sHooks, STATIC_CAST, and TRUE.

Referenced by DBFIsRecordDeleted(), DBFMarkRecordDeleted(), DBFReadAttribute(), DBFReadTuple(), DBFWriteAttribute(), DBFWriteAttributeDirectly(), and DBFWriteTuple().

Here is the call graph for this function:
Here is the caller graph for this function: