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 #ifndef CPL_VSI_H_INCLUDED
00032 #define CPL_VSI_H_INCLUDED
00033
00034 #include "cpl_port.h"
00054
00055
00056
00057
00058
00059 #if !defined(_WIN32) && !defined(_WIN32_WCE)
00060 # include <unistd.h>
00061 #endif
00062
00063
00064 #if !defined(macos_pre10) && !defined(_WIN32_WCE)
00065 # include <sys/stat.h>
00066 #endif
00067
00068
00069 #if defined(_WIN32_WCE)
00070 # include <wce_stat.h>
00071 #endif
00072
00073 CPL_C_START
00074
00075
00076
00077
00078
00079
00080
00081 FILE CPL_DLL * VSIFOpen( const char *, const char * );
00082 int CPL_DLL VSIFClose( FILE * );
00083 int CPL_DLL VSIFSeek( FILE *, long, int );
00084 long CPL_DLL VSIFTell( FILE * );
00085 void CPL_DLL VSIRewind( FILE * );
00086 void CPL_DLL VSIFFlush( FILE * );
00087
00088 size_t CPL_DLL VSIFRead( void *, size_t, size_t, FILE * );
00089 size_t CPL_DLL VSIFWrite( const void *, size_t, size_t, FILE * );
00090 char CPL_DLL *VSIFGets( char *, int, FILE * );
00091 int CPL_DLL VSIFPuts( const char *, FILE * );
00092 int CPL_DLL VSIFPrintf( FILE *, const char *, ... );
00093
00094 int CPL_DLL VSIFGetc( FILE * );
00095 int CPL_DLL VSIFPutc( int, FILE * );
00096 int CPL_DLL VSIUngetc( int, FILE * );
00097 int CPL_DLL VSIFEof( FILE * );
00098
00099
00100
00101
00102
00103 typedef struct stat VSIStatBuf;
00104 int CPL_DLL VSIStat( const char *, VSIStatBuf * );
00105
00106 #ifdef _WIN32
00107 # define VSI_ISLNK(x) ( 0 )
00108 # define VSI_ISREG(x) ((x) & S_IFREG)
00109 # define VSI_ISDIR(x) ((x) & S_IFDIR)
00110 # define VSI_ISCHR(x) ((x) & S_IFCHR)
00111 # define VSI_ISBLK(x) ( 0 )
00112 #else
00113 # define VSI_ISLNK(x) S_ISLNK(x)
00114 # define VSI_ISREG(x) S_ISREG(x)
00115 # define VSI_ISDIR(x) S_ISDIR(x)
00116 # define VSI_ISCHR(x) S_ISCHR(x)
00117 # define VSI_ISBLK(x) S_ISBLK(x)
00118 #endif
00119
00120
00121
00122
00123
00124
00125 typedef GUIntBig vsi_l_offset;
00126
00127 FILE CPL_DLL * VSIFOpenL( const char *, const char * );
00128 int CPL_DLL VSIFCloseL( FILE * );
00129 int CPL_DLL VSIFSeekL( FILE *, vsi_l_offset, int );
00130 vsi_l_offset CPL_DLL VSIFTellL( FILE * );
00131 void CPL_DLL VSIRewindL( FILE * );
00132 size_t CPL_DLL VSIFReadL( void *, size_t, size_t, FILE * );
00133 size_t CPL_DLL VSIFWriteL( const void *, size_t, size_t, FILE * );
00134 int CPL_DLL VSIFEofL( FILE * );
00135 int CPL_DLL VSIFFlushL( FILE * );
00136
00137 #if defined(VSI_STAT64_T)
00138 typedef struct VSI_STAT64_T VSIStatBufL;
00139 #else
00140 #define VSIStatBufL VSIStatBuf
00141 #endif
00142
00143 int CPL_DLL VSIStatL( const char *, VSIStatBufL * );
00144
00145
00146
00147
00148
00149 void CPL_DLL *VSICalloc( size_t, size_t );
00150 void CPL_DLL *VSIMalloc( size_t );
00151 void CPL_DLL VSIFree( void * );
00152 void CPL_DLL *VSIRealloc( void *, size_t );
00153 char CPL_DLL *VSIStrdup( const char * );
00154
00155
00156
00157
00158
00159 int CPL_DLL VSIMkdir( const char * pathname, long mode );
00160 int CPL_DLL VSIRmdir( const char * pathname );
00161 int CPL_DLL VSIUnlink( const char * pathname );
00162 int CPL_DLL VSIRename( const char * oldpath, const char * newpath );
00163 char CPL_DLL *VSIStrerror( int );
00164
00165
00166
00167
00168 void CPL_DLL VSIInstallMemFileHandler(void);
00169 void CPL_DLL VSIInstallLargeFileHandler(void);
00170 void CPL_DLL VSICleanupFileManager(void);
00171
00172 FILE CPL_DLL *VSIFileFromMemBuffer( const char *pszFilename,
00173 GByte *pabyData,
00174 vsi_l_offset nDataLength,
00175 int bTakeOwnership );
00176 GByte CPL_DLL *VSIGetMemFileBuffer( const char *pszFilename,
00177 vsi_l_offset *pnDataLength,
00178 int bUnlinkAndSeize );
00179
00180
00181
00182
00183
00184 unsigned long CPL_DLL VSITime( unsigned long * );
00185 const char CPL_DLL *VSICTime( unsigned long );
00186 struct tm CPL_DLL *VSIGMTime( const time_t *pnTime,
00187 struct tm *poBrokenTime );
00188 struct tm CPL_DLL *VSILocalTime( const time_t *pnTime,
00189 struct tm *poBrokenTime );
00190
00191
00192
00193
00194
00195 #ifdef VSI_DEBUG
00196
00197 #ifndef DEBUG
00198 # define DEBUG
00199 #endif
00200
00201 #include "cpl_error.h"
00202
00203 #define VSIDebug4(f,a1,a2,a3,a4) CPLDebug( "VSI", f, a1, a2, a3, a4 );
00204 #define VSIDebug3( f, a1, a2, a3 ) CPLDebug( "VSI", f, a1, a2, a3 );
00205 #define VSIDebug2( f, a1, a2 ) CPLDebug( "VSI", f, a1, a2 );
00206 #define VSIDebug1( f, a1 ) CPLDebug( "VSI", f, a1 );
00207 #else
00208 #define VSIDebug4( f, a1, a2, a3, a4 ) {}
00209 #define VSIDebug3( f, a1, a2, a3 ) {}
00210 #define VSIDebug2( f, a1, a2 ) {}
00211 #define VSIDebug1( f, a1 ) {}
00212 #endif
00213
00214 CPL_C_END
00215
00216 #endif