182
182
* Added header.
183
183
*/
184
184
185
+ #if 0
185
186
static char rcsid [] =
186
187
"$Id: dbfopen.c,v 1.48 2003/03/10 14:51:27 warmerda Exp $" ;
188
+ #endif
187
189
188
190
#include "shapefil.h"
189
191
@@ -256,9 +258,9 @@ static void DBFWriteHeader( DBFHandle psDBF )
256
258
/* Write the initial 32 byte file header, and all the field */
257
259
/* descriptions. */
258
260
/* -------------------------------------------------------------------- */
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 );
262
264
263
265
/* -------------------------------------------------------------------- */
264
266
/* Write out the newline character if there is room for it. */
@@ -268,7 +270,7 @@ static void DBFWriteHeader( DBFHandle psDBF )
268
270
char cNewline ;
269
271
270
272
cNewline = 0x0d ;
271
- fwrite ( & cNewline , 1 , 1 , psDBF -> fp );
273
+ VSIFWriteL ( & cNewline , 1 , 1 , psDBF -> fp );
272
274
}
273
275
}
274
276
@@ -290,8 +292,8 @@ static void DBFFlushRecord( DBFHandle psDBF )
290
292
nRecordOffset = psDBF -> nRecordLength * psDBF -> nCurrentRecord
291
293
+ psDBF -> nHeaderLength ;
292
294
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 );
295
297
}
296
298
}
297
299
@@ -342,12 +344,12 @@ DBFOpen( const char * pszFilename, const char * pszAccess )
342
344
sprintf ( pszFullname , "%s.dbf" , pszBasename );
343
345
344
346
psDBF = ( DBFHandle ) calloc ( 1 , sizeof ( DBFInfo ) );
345
- psDBF -> fp = fopen ( pszFullname , pszAccess );
347
+ psDBF -> fp = VSIFOpenL ( pszFullname , pszAccess );
346
348
347
349
if ( psDBF -> fp == NULL )
348
350
{
349
351
sprintf ( pszFullname , "%s.DBF" , pszBasename );
350
- psDBF -> fp = fopen ( pszFullname , pszAccess );
352
+ psDBF -> fp = VSIFOpenL ( pszFullname , pszAccess );
351
353
}
352
354
353
355
free ( pszBasename );
@@ -367,9 +369,9 @@ DBFOpen( const char * pszFilename, const char * pszAccess )
367
369
/* Read Table Header info */
368
370
/* -------------------------------------------------------------------- */
369
371
pabyBuf = ( unsigned char * ) malloc ( 500 );
370
- if ( fread ( pabyBuf , 32 , 1 , psDBF -> fp ) != 1 )
372
+ if ( VSIFReadL ( pabyBuf , 32 , 1 , psDBF -> fp ) != 1 )
371
373
{
372
- fclose ( psDBF -> fp );
374
+ VSIFCloseL ( psDBF -> fp );
373
375
free ( pabyBuf );
374
376
free ( psDBF );
375
377
return NULL ;
@@ -389,12 +391,13 @@ DBFOpen( const char * pszFilename, const char * pszAccess )
389
391
/* Read in Field Definitions */
390
392
/* -------------------------------------------------------------------- */
391
393
392
- pabyBuf = psDBF -> pszHeader = ( unsigned char * ) SfRealloc ( pabyBuf , nHeadLen );
394
+ psDBF -> pszHeader = ( char * ) SfRealloc ( pabyBuf , nHeadLen );
395
+ pabyBuf = ( unsigned char * )psDBF -> pszHeader ;
393
396
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 )
396
399
{
397
- fclose ( psDBF -> fp );
400
+ VSIFCloseL ( psDBF -> fp );
398
401
free ( pabyBuf );
399
402
free ( psDBF );
400
403
return NULL ;
@@ -456,8 +459,8 @@ DBFClose( DBFHandle psDBF )
456
459
{
457
460
unsigned char abyFileHeader [32 ];
458
461
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 );
461
464
462
465
abyFileHeader [1 ] = 95 ; /* YY */
463
466
abyFileHeader [2 ] = 7 ; /* MM */
@@ -468,14 +471,14 @@ DBFClose( DBFHandle psDBF )
468
471
abyFileHeader [6 ] = ( psDBF -> nRecords / ( 256 * 256 ) ) % 256 ;
469
472
abyFileHeader [7 ] = ( psDBF -> nRecords / ( 256 * 256 * 256 ) ) % 256 ;
470
473
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 );
473
476
}
474
477
475
478
/* -------------------------------------------------------------------- */
476
479
/* Close, and free resources. */
477
480
/* -------------------------------------------------------------------- */
478
- fclose ( psDBF -> fp );
481
+ VSIFCloseL ( psDBF -> fp );
479
482
480
483
if ( psDBF -> panFieldOffset != NULL )
481
484
{
@@ -509,7 +512,7 @@ DBFCreate( const char *pszFilename )
509
512
510
513
{
511
514
DBFHandle psDBF ;
512
- FILE * fp ;
515
+ VSILFILE * fp ;
513
516
char * pszFullname , * pszBasename ;
514
517
int i ;
515
518
@@ -534,17 +537,20 @@ DBFCreate( const char *pszFilename )
534
537
/* -------------------------------------------------------------------- */
535
538
/* Create the file. */
536
539
/* -------------------------------------------------------------------- */
537
- fp = fopen ( pszFullname , "wb" );
540
+ fp = VSIFOpenL ( pszFullname , "wb" );
538
541
if ( fp == NULL )
539
542
{
540
543
free ( pszFullname );
541
544
return ( NULL );
542
545
}
543
546
544
- fputc ( 0 , fp );
545
- fclose ( fp );
547
+ {
548
+ char ch = 0 ;
549
+ VSIFWriteL ( & ch , 1 , 1 , fp );
550
+ }
551
+ VSIFCloseL ( fp );
546
552
547
- fp = fopen ( pszFullname , "rb+" );
553
+ fp = VSIFOpenL ( pszFullname , "rb+" );
548
554
if ( fp == NULL )
549
555
{
550
556
free ( pszFullname );
@@ -716,17 +722,17 @@ static void *DBFReadAttribute( DBFHandle psDBF, int hEntity, int iField,
716
722
717
723
nRecordOffset = psDBF -> nRecordLength * hEntity + psDBF -> nHeaderLength ;
718
724
719
- if ( fseek ( psDBF -> fp , nRecordOffset , 0 ) != 0 )
725
+ if ( VSIFSeekL ( psDBF -> fp , nRecordOffset , 0 ) != 0 )
720
726
{
721
727
fprintf ( stderr , "fseek(%d) failed on DBF file.\n" ,
722
728
nRecordOffset );
723
729
return NULL ;
724
730
}
725
731
726
- if ( fread ( psDBF -> pszCurrentRecord , psDBF -> nRecordLength ,
727
- 1 , psDBF -> fp ) != 1 )
732
+ if ( VSIFReadL ( psDBF -> pszCurrentRecord , psDBF -> nRecordLength ,
733
+ 1 , psDBF -> fp ) != 1 )
728
734
{
729
- fprintf ( stderr , "fread (%d) failed on DBF file.\n" ,
735
+ fprintf ( stderr , "VSIFReadL (%d) failed on DBF file.\n" ,
730
736
psDBF -> nRecordLength );
731
737
return NULL ;
732
738
}
@@ -790,7 +796,7 @@ static void *DBFReadAttribute( DBFHandle psDBF, int hEntity, int iField,
790
796
}
791
797
792
798
/************************************************************************/
793
- /* DBFReadIntAttribute () */
799
+ /* DBFReadIntegerAttribute () */
794
800
/* */
795
801
/* Read an integer attribute. */
796
802
/************************************************************************/
@@ -1013,8 +1019,8 @@ static int DBFWriteAttribute( DBFHandle psDBF, int hEntity, int iField,
1013
1019
1014
1020
nRecordOffset = psDBF -> nRecordLength * hEntity + psDBF -> nHeaderLength ;
1015
1021
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 );
1018
1024
1019
1025
psDBF -> nCurrentRecord = hEntity ;
1020
1026
}
@@ -1073,7 +1079,7 @@ static int DBFWriteAttribute( DBFHandle psDBF, int hEntity, int iField,
1073
1079
{
1074
1080
int nWidth = psDBF -> panFieldSize [iField ];
1075
1081
1076
- if ( sizeof ( szSField ) - 2 < nWidth )
1082
+ if (( int ) sizeof ( szSField ) - 2 < nWidth )
1077
1083
nWidth = sizeof ( szSField ) - 2 ;
1078
1084
1079
1085
sprintf ( szFormat , "%%%dd" , nWidth );
@@ -1091,7 +1097,7 @@ static int DBFWriteAttribute( DBFHandle psDBF, int hEntity, int iField,
1091
1097
{
1092
1098
int nWidth = psDBF -> panFieldSize [iField ];
1093
1099
1094
- if ( sizeof ( szSField ) - 2 < nWidth )
1100
+ if (( int ) sizeof ( szSField ) - 2 < nWidth )
1095
1101
nWidth = sizeof ( szSField ) - 2 ;
1096
1102
1097
1103
sprintf ( szFormat , "%%%d.%df" ,
@@ -1182,8 +1188,8 @@ int DBFWriteAttributeDirectly( DBFHandle psDBF, int hEntity, int iField,
1182
1188
1183
1189
nRecordOffset = psDBF -> nRecordLength * hEntity + psDBF -> nHeaderLength ;
1184
1190
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 );
1187
1193
1188
1194
psDBF -> nCurrentRecord = hEntity ;
1189
1195
}
@@ -1328,8 +1334,8 @@ DBFWriteTuple( DBFHandle psDBF, int hEntity, void * pRawTuple )
1328
1334
1329
1335
nRecordOffset = psDBF -> nRecordLength * hEntity + psDBF -> nHeaderLength ;
1330
1336
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 );
1333
1339
1334
1340
psDBF -> nCurrentRecord = hEntity ;
1335
1341
}
@@ -1372,8 +1378,8 @@ DBFReadTuple( DBFHandle psDBF, int hEntity )
1372
1378
1373
1379
nRecordOffset = psDBF -> nRecordLength * hEntity + psDBF -> nHeaderLength ;
1374
1380
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 );
1377
1383
1378
1384
psDBF -> nCurrentRecord = hEntity ;
1379
1385
}
0 commit comments