00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081 #ifndef CPL_VSI_H_INCLUDED
00082 #define CPL_VSI_H_INCLUDED
00083
00084 #include "cpl_port.h"
00104
00105
00106
00107
00108
00109 #if !defined(_WIN32) && !defined(_WIN32_WCE)
00110 # include <unistd.h>
00111 #endif
00112
00113
00114 #if !defined(macos_pre10) && !defined(_WIN32_WCE)
00115 # include <sys/stat.h>
00116 #endif
00117
00118
00119 #if defined(_WIN32_WCE)
00120 # include <wce_stat.h>
00121 #endif
00122
00123 CPL_C_START
00124
00125
00126
00127
00128
00129
00130
00131 FILE CPL_DLL * VSIFOpen( const char *, const char * );
00132 int CPL_DLL VSIFClose( FILE * );
00133 int CPL_DLL VSIFSeek( FILE *, long, int );
00134 long CPL_DLL VSIFTell( FILE * );
00135 void CPL_DLL VSIRewind( FILE * );
00136 void CPL_DLL VSIFFlush( FILE * );
00137
00138 size_t CPL_DLL VSIFRead( void *, size_t, size_t, FILE * );
00139 size_t CPL_DLL VSIFWrite( const void *, size_t, size_t, FILE * );
00140 char CPL_DLL *VSIFGets( char *, int, FILE * );
00141 int CPL_DLL VSIFPuts( const char *, FILE * );
00142 int CPL_DLL VSIFPrintf( FILE *, const char *, ... );
00143
00144 int CPL_DLL VSIFGetc( FILE * );
00145 int CPL_DLL VSIFPutc( int, FILE * );
00146 int CPL_DLL VSIUngetc( int, FILE * );
00147 int CPL_DLL VSIFEof( FILE * );
00148
00149
00150
00151
00152
00153 typedef struct stat VSIStatBuf;
00154 int CPL_DLL VSIStat( const char *, VSIStatBuf * );
00155
00156 #ifdef _WIN32
00157 # define VSI_ISLNK(x) ( 0 )
00158 # define VSI_ISREG(x) ((x) & S_IFREG)
00159 # define VSI_ISDIR(x) ((x) & S_IFDIR)
00160 # define VSI_ISCHR(x) ((x) & S_IFCHR)
00161 # define VSI_ISBLK(x) ( 0 )
00162 #else
00163 # define VSI_ISLNK(x) S_ISLNK(x)
00164 # define VSI_ISREG(x) S_ISREG(x)
00165 # define VSI_ISDIR(x) S_ISDIR(x)
00166 # define VSI_ISCHR(x) S_ISCHR(x)
00167 # define VSI_ISBLK(x) S_ISBLK(x)
00168 #endif
00169
00170
00171
00172
00173
00174
00175 typedef GUIntBig vsi_l_offset;
00176
00177 FILE CPL_DLL * VSIFOpenL( const char *, const char * );
00178 int CPL_DLL VSIFCloseL( FILE * );
00179 int CPL_DLL VSIFSeekL( FILE *, vsi_l_offset, int );
00180 vsi_l_offset CPL_DLL VSIFTellL( FILE * );
00181 void CPL_DLL VSIRewindL( FILE * );
00182 size_t CPL_DLL VSIFReadL( void *, size_t, size_t, FILE * );
00183 size_t CPL_DLL VSIFWriteL( const void *, size_t, size_t, FILE * );
00184 int CPL_DLL VSIFEofL( FILE * );
00185 int CPL_DLL VSIFFlushL( FILE * );
00186
00187 #if defined(VSI_STAT64_T)
00188 typedef struct VSI_STAT64_T VSIStatBufL;
00189 #else
00190 #define VSIStatBufL VSIStatBuf
00191 #endif
00192
00193 int CPL_DLL VSIStatL( const char *, VSIStatBufL * );
00194
00195
00196
00197
00198
00199 void CPL_DLL *VSICalloc( size_t, size_t );
00200 void CPL_DLL *VSIMalloc( size_t );
00201 void CPL_DLL VSIFree( void * );
00202 void CPL_DLL *VSIRealloc( void *, size_t );
00203 char CPL_DLL *VSIStrdup( const char * );
00204
00205
00206
00207
00208
00209 int CPL_DLL VSIMkdir( const char * pathname, long mode );
00210 int CPL_DLL VSIRmdir( const char * pathname );
00211 int CPL_DLL VSIUnlink( const char * pathname );
00212 int CPL_DLL VSIRename( const char * oldpath, const char * newpath );
00213 char CPL_DLL *VSIStrerror( int );
00214
00215
00216
00217
00218 void CPL_DLL VSIInstallMemFileHandler(void);
00219 void CPL_DLL VSIInstallLargeFileHandler(void);
00220 void CPL_DLL VSICleanupFileManager(void);
00221
00222 FILE CPL_DLL *VSIFileFromMemBuffer( const char *pszFilename,
00223 GByte *pabyData,
00224 vsi_l_offset nDataLength,
00225 int bTakeOwnership );
00226 GByte CPL_DLL *VSIGetMemFileBuffer( const char *pszFilename,
00227 vsi_l_offset *pnDataLength,
00228 int bUnlinkAndSeize );
00229
00230
00231
00232
00233
00234 unsigned long CPL_DLL VSITime( unsigned long * );
00235 const char CPL_DLL *VSICTime( unsigned long );
00236 struct tm CPL_DLL *VSIGMTime( const time_t *pnTime,
00237 struct tm *poBrokenTime );
00238 struct tm CPL_DLL *VSILocalTime( const time_t *pnTime,
00239 struct tm *poBrokenTime );
00240
00241
00242
00243
00244
00245 #ifdef VSI_DEBUG
00246
00247 #ifndef DEBUG
00248 # define DEBUG
00249 #endif
00250
00251 #include "cpl_error.h"
00252
00253 #define VSIDebug4(f,a1,a2,a3,a4) CPLDebug( "VSI", f, a1, a2, a3, a4 );
00254 #define VSIDebug3( f, a1, a2, a3 ) CPLDebug( "VSI", f, a1, a2, a3 );
00255 #define VSIDebug2( f, a1, a2 ) CPLDebug( "VSI", f, a1, a2 );
00256 #define VSIDebug1( f, a1 ) CPLDebug( "VSI", f, a1 );
00257 #else
00258 #define VSIDebug4( f, a1, a2, a3, a4 ) {}
00259 #define VSIDebug3( f, a1, a2, a3 ) {}
00260 #define VSIDebug2( f, a1, a2 ) {}
00261 #define VSIDebug1( f, a1 ) {}
00262 #endif
00263
00264 CPL_C_END
00265
00266 #endif