1 : #include "filedatasource.h"
2 : #include "cpl_vsi.h"
3 : #include "cpl_error.h"
4 :
5 0 : FileDataSource::FileDataSource(const char * fileName)
6 0 : : closeFile(true)
7 : {
8 0 : fp = VSIFOpenL(fileName, "rb");
9 0 : }
10 :
11 6 : FileDataSource::FileDataSource(FILE * fp)
12 6 : : closeFile(false)
13 : {
14 6 : this->fp = fp;
15 6 : }
16 :
17 6 : FileDataSource::~FileDataSource()
18 : {
19 6 : if (closeFile)
20 0 : VSIFCloseL(fp);
21 6 : }
22 :
23 140 : size_t FileDataSource::DataSourceFread(void* lpBuf, size_t size, size_t count)
24 : {
25 140 : return VSIFReadL(lpBuf, size, count, fp);
26 : }
27 :
28 29 : int FileDataSource::DataSourceFgetc()
29 : {
30 : char chData;
31 :
32 29 : if( VSIFReadL( &chData, 1, 1, fp ) == 1 )
33 26 : return chData;
34 : else
35 3 : return EOF;
36 : }
37 :
38 26 : int FileDataSource::DataSourceUngetc(int c)
39 : {
40 26 : DataSourceFseek(-1, SEEK_CUR );
41 :
42 26 : return c;
43 : }
44 :
45 58 : int FileDataSource::DataSourceFseek(long offset, int origin)
46 : {
47 58 : if (origin == SEEK_CUR && offset < 0)
48 26 : return VSIFSeekL(fp, VSIFTellL(fp) + offset, SEEK_SET);
49 : else
50 32 : return VSIFSeekL(fp, offset, origin);
51 : }
52 :
53 0 : int FileDataSource::DataSourceFeof()
54 : {
55 0 : return VSIFEofL( fp );
56 : }
57 :
58 0 : long FileDataSource::DataSourceFtell()
59 : {
60 0 : return VSIFTellL( fp );
61 : }
|