182182 * Added header.
183183 */
184184
185+ #if 0
185186static char rcsid [] =
186187 "$Id: dbfopen.c,v 1.48 2003/03/10 14:51:27 warmerda Exp $" ;
188+ #endif
187189
188190#include "shapefil.h"
189191
@@ -256,9 +258,9 @@ static void DBFWriteHeader( DBFHandle psDBF )
256258 /* Write the initial 32 byte file header, and all the field */
257259 /* descriptions. */
258260 /* -------------------------------------------------------------------- */
259- fseek ( psDBF -> fp , 0 , 0 );
260- fwrite ( abyHeader , XBASE_FLDHDR_SZ , 1 , psDBF -> fp );
261- fwrite ( psDBF -> pszHeader , XBASE_FLDHDR_SZ , psDBF -> nFields , psDBF -> fp );
261+ VSIFSeekL ( psDBF -> fp , 0 , 0 );
262+ VSIFWriteL ( abyHeader , XBASE_FLDHDR_SZ , 1 , psDBF -> fp );
263+ VSIFWriteL ( psDBF -> pszHeader , XBASE_FLDHDR_SZ , psDBF -> nFields , psDBF -> fp );
262264
263265 /* -------------------------------------------------------------------- */
264266 /* Write out the newline character if there is room for it. */
@@ -268,7 +270,7 @@ static void DBFWriteHeader( DBFHandle psDBF )
268270 char cNewline ;
269271
270272 cNewline = 0x0d ;
271- fwrite ( & cNewline , 1 , 1 , psDBF -> fp );
273+ VSIFWriteL ( & cNewline , 1 , 1 , psDBF -> fp );
272274 }
273275}
274276
@@ -290,8 +292,8 @@ static void DBFFlushRecord( DBFHandle psDBF )
290292 nRecordOffset = psDBF -> nRecordLength * psDBF -> nCurrentRecord
291293 + psDBF -> nHeaderLength ;
292294
293- fseek ( psDBF -> fp , nRecordOffset , 0 );
294- fwrite ( psDBF -> pszCurrentRecord , psDBF -> nRecordLength , 1 , psDBF -> fp );
295+ VSIFSeekL ( psDBF -> fp , nRecordOffset , 0 );
296+ VSIFWriteL ( psDBF -> pszCurrentRecord , psDBF -> nRecordLength , 1 , psDBF -> fp );
295297 }
296298}
297299
@@ -342,12 +344,12 @@ DBFOpen( const char * pszFilename, const char * pszAccess )
342344 sprintf ( pszFullname , "%s.dbf" , pszBasename );
343345
344346 psDBF = ( DBFHandle ) calloc ( 1 , sizeof ( DBFInfo ) );
345- psDBF -> fp = fopen ( pszFullname , pszAccess );
347+ psDBF -> fp = VSIFOpenL ( pszFullname , pszAccess );
346348
347349 if ( psDBF -> fp == NULL )
348350 {
349351 sprintf ( pszFullname , "%s.DBF" , pszBasename );
350- psDBF -> fp = fopen ( pszFullname , pszAccess );
352+ psDBF -> fp = VSIFOpenL ( pszFullname , pszAccess );
351353 }
352354
353355 free ( pszBasename );
@@ -367,9 +369,9 @@ DBFOpen( const char * pszFilename, const char * pszAccess )
367369 /* Read Table Header info */
368370 /* -------------------------------------------------------------------- */
369371 pabyBuf = ( unsigned char * ) malloc ( 500 );
370- if ( fread ( pabyBuf , 32 , 1 , psDBF -> fp ) != 1 )
372+ if ( VSIFReadL ( pabyBuf , 32 , 1 , psDBF -> fp ) != 1 )
371373 {
372- fclose ( psDBF -> fp );
374+ VSIFCloseL ( psDBF -> fp );
373375 free ( pabyBuf );
374376 free ( psDBF );
375377 return NULL ;
@@ -389,12 +391,13 @@ DBFOpen( const char * pszFilename, const char * pszAccess )
389391 /* Read in Field Definitions */
390392 /* -------------------------------------------------------------------- */
391393
392- pabyBuf = psDBF -> pszHeader = ( unsigned char * ) SfRealloc ( pabyBuf , nHeadLen );
394+ psDBF -> pszHeader = ( char * ) SfRealloc ( pabyBuf , nHeadLen );
395+ pabyBuf = ( unsigned char * )psDBF -> pszHeader ;
393396
394- fseek ( psDBF -> fp , 32 , 0 );
395- if ( fread ( pabyBuf , nHeadLen - 32 , 1 , psDBF -> fp ) != 1 )
397+ VSIFSeekL ( psDBF -> fp , 32 , 0 );
398+ if ( VSIFReadL ( pabyBuf , nHeadLen - 32 , 1 , psDBF -> fp ) != 1 )
396399 {
397- fclose ( psDBF -> fp );
400+ VSIFCloseL ( psDBF -> fp );
398401 free ( pabyBuf );
399402 free ( psDBF );
400403 return NULL ;
@@ -456,8 +459,8 @@ DBFClose( DBFHandle psDBF )
456459 {
457460 unsigned char abyFileHeader [32 ];
458461
459- fseek ( psDBF -> fp , 0 , 0 );
460- fread ( abyFileHeader , 32 , 1 , psDBF -> fp );
462+ VSIFSeekL ( psDBF -> fp , 0 , 0 );
463+ VSIFReadL ( abyFileHeader , 32 , 1 , psDBF -> fp );
461464
462465 abyFileHeader [1 ] = 95 ; /* YY */
463466 abyFileHeader [2 ] = 7 ; /* MM */
@@ -468,14 +471,14 @@ DBFClose( DBFHandle psDBF )
468471 abyFileHeader [6 ] = ( psDBF -> nRecords / ( 256 * 256 ) ) % 256 ;
469472 abyFileHeader [7 ] = ( psDBF -> nRecords / ( 256 * 256 * 256 ) ) % 256 ;
470473
471- fseek ( psDBF -> fp , 0 , 0 );
472- fwrite ( abyFileHeader , 32 , 1 , psDBF -> fp );
474+ VSIFSeekL ( psDBF -> fp , 0 , 0 );
475+ VSIFWriteL ( abyFileHeader , 32 , 1 , psDBF -> fp );
473476 }
474477
475478 /* -------------------------------------------------------------------- */
476479 /* Close, and free resources. */
477480 /* -------------------------------------------------------------------- */
478- fclose ( psDBF -> fp );
481+ VSIFCloseL ( psDBF -> fp );
479482
480483 if ( psDBF -> panFieldOffset != NULL )
481484 {
@@ -509,7 +512,7 @@ DBFCreate( const char *pszFilename )
509512
510513{
511514 DBFHandle psDBF ;
512- FILE * fp ;
515+ VSILFILE * fp ;
513516 char * pszFullname , * pszBasename ;
514517 int i ;
515518
@@ -534,17 +537,20 @@ DBFCreate( const char *pszFilename )
534537 /* -------------------------------------------------------------------- */
535538 /* Create the file. */
536539 /* -------------------------------------------------------------------- */
537- fp = fopen ( pszFullname , "wb" );
540+ fp = VSIFOpenL ( pszFullname , "wb" );
538541 if ( fp == NULL )
539542 {
540543 free ( pszFullname );
541544 return ( NULL );
542545 }
543546
544- fputc ( 0 , fp );
545- fclose ( fp );
547+ {
548+ char ch = 0 ;
549+ VSIFWriteL ( & ch , 1 , 1 , fp );
550+ }
551+ VSIFCloseL ( fp );
546552
547- fp = fopen ( pszFullname , "rb+" );
553+ fp = VSIFOpenL ( pszFullname , "rb+" );
548554 if ( fp == NULL )
549555 {
550556 free ( pszFullname );
@@ -716,17 +722,17 @@ static void *DBFReadAttribute( DBFHandle psDBF, int hEntity, int iField,
716722
717723 nRecordOffset = psDBF -> nRecordLength * hEntity + psDBF -> nHeaderLength ;
718724
719- if ( fseek ( psDBF -> fp , nRecordOffset , 0 ) != 0 )
725+ if ( VSIFSeekL ( psDBF -> fp , nRecordOffset , 0 ) != 0 )
720726 {
721727 fprintf ( stderr , "fseek(%d) failed on DBF file.\n" ,
722728 nRecordOffset );
723729 return NULL ;
724730 }
725731
726- if ( fread ( psDBF -> pszCurrentRecord , psDBF -> nRecordLength ,
727- 1 , psDBF -> fp ) != 1 )
732+ if ( VSIFReadL ( psDBF -> pszCurrentRecord , psDBF -> nRecordLength ,
733+ 1 , psDBF -> fp ) != 1 )
728734 {
729- fprintf ( stderr , "fread (%d) failed on DBF file.\n" ,
735+ fprintf ( stderr , "VSIFReadL (%d) failed on DBF file.\n" ,
730736 psDBF -> nRecordLength );
731737 return NULL ;
732738 }
@@ -790,7 +796,7 @@ static void *DBFReadAttribute( DBFHandle psDBF, int hEntity, int iField,
790796}
791797
792798/************************************************************************/
793- /* DBFReadIntAttribute () */
799+ /* DBFReadIntegerAttribute () */
794800/* */
795801/* Read an integer attribute. */
796802/************************************************************************/
@@ -1013,8 +1019,8 @@ static int DBFWriteAttribute( DBFHandle psDBF, int hEntity, int iField,
10131019
10141020 nRecordOffset = psDBF -> nRecordLength * hEntity + psDBF -> nHeaderLength ;
10151021
1016- fseek ( psDBF -> fp , nRecordOffset , 0 );
1017- fread ( psDBF -> pszCurrentRecord , psDBF -> nRecordLength , 1 , psDBF -> fp );
1022+ VSIFSeekL ( psDBF -> fp , nRecordOffset , 0 );
1023+ VSIFReadL ( psDBF -> pszCurrentRecord , psDBF -> nRecordLength , 1 , psDBF -> fp );
10181024
10191025 psDBF -> nCurrentRecord = hEntity ;
10201026 }
@@ -1073,7 +1079,7 @@ static int DBFWriteAttribute( DBFHandle psDBF, int hEntity, int iField,
10731079 {
10741080 int nWidth = psDBF -> panFieldSize [iField ];
10751081
1076- if ( sizeof ( szSField ) - 2 < nWidth )
1082+ if (( int ) sizeof ( szSField ) - 2 < nWidth )
10771083 nWidth = sizeof ( szSField ) - 2 ;
10781084
10791085 sprintf ( szFormat , "%%%dd" , nWidth );
@@ -1091,7 +1097,7 @@ static int DBFWriteAttribute( DBFHandle psDBF, int hEntity, int iField,
10911097 {
10921098 int nWidth = psDBF -> panFieldSize [iField ];
10931099
1094- if ( sizeof ( szSField ) - 2 < nWidth )
1100+ if (( int ) sizeof ( szSField ) - 2 < nWidth )
10951101 nWidth = sizeof ( szSField ) - 2 ;
10961102
10971103 sprintf ( szFormat , "%%%d.%df" ,
@@ -1182,8 +1188,8 @@ int DBFWriteAttributeDirectly( DBFHandle psDBF, int hEntity, int iField,
11821188
11831189 nRecordOffset = psDBF -> nRecordLength * hEntity + psDBF -> nHeaderLength ;
11841190
1185- fseek ( psDBF -> fp , nRecordOffset , 0 );
1186- fread ( psDBF -> pszCurrentRecord , psDBF -> nRecordLength , 1 , psDBF -> fp );
1191+ VSIFSeekL ( psDBF -> fp , nRecordOffset , 0 );
1192+ VSIFReadL ( psDBF -> pszCurrentRecord , psDBF -> nRecordLength , 1 , psDBF -> fp );
11871193
11881194 psDBF -> nCurrentRecord = hEntity ;
11891195 }
@@ -1328,8 +1334,8 @@ DBFWriteTuple( DBFHandle psDBF, int hEntity, void * pRawTuple )
13281334
13291335 nRecordOffset = psDBF -> nRecordLength * hEntity + psDBF -> nHeaderLength ;
13301336
1331- fseek ( psDBF -> fp , nRecordOffset , 0 );
1332- fread ( psDBF -> pszCurrentRecord , psDBF -> nRecordLength , 1 , psDBF -> fp );
1337+ VSIFSeekL ( psDBF -> fp , nRecordOffset , 0 );
1338+ VSIFReadL ( psDBF -> pszCurrentRecord , psDBF -> nRecordLength , 1 , psDBF -> fp );
13331339
13341340 psDBF -> nCurrentRecord = hEntity ;
13351341 }
@@ -1372,8 +1378,8 @@ DBFReadTuple( DBFHandle psDBF, int hEntity )
13721378
13731379 nRecordOffset = psDBF -> nRecordLength * hEntity + psDBF -> nHeaderLength ;
13741380
1375- fseek ( psDBF -> fp , nRecordOffset , 0 );
1376- fread ( psDBF -> pszCurrentRecord , psDBF -> nRecordLength , 1 , psDBF -> fp );
1381+ VSIFSeekL ( psDBF -> fp , nRecordOffset , 0 );
1382+ VSIFReadL ( psDBF -> pszCurrentRecord , psDBF -> nRecordLength , 1 , psDBF -> fp );
13771383
13781384 psDBF -> nCurrentRecord = hEntity ;
13791385 }
0 commit comments