libclamav/7z/7zFile.h
700cc7f7
 /* 7zFile.h -- File IO
569bdeeb
 2009-11-24 : Igor Pavlov : Public domain */
700cc7f7
 
 #ifndef __7Z_FILE_H
 #define __7Z_FILE_H
 
 #ifdef _WIN32
 #define USE_WINDOWS_FILE
 #endif
 
 #ifdef USE_WINDOWS_FILE
 #include <windows.h>
 #else
 #include <stdio.h>
 #endif
 
 #include "Types.h"
 
569bdeeb
 EXTERN_C_BEGIN
700cc7f7
 
 /* ---------- File ---------- */
 
 typedef struct
 {
569bdeeb
 #ifdef USE_WINDOWS_FILE
700cc7f7
   HANDLE handle;
569bdeeb
 #else
700cc7f7
   FILE *file;
569bdeeb
 #endif
     fmap_t *fmap;
700cc7f7
 } CSzFile;
 
 void File_Construct(CSzFile *p);
569bdeeb
 #if !defined(UNDER_CE) || !defined(USE_WINDOWS_FILE)
700cc7f7
 WRes InFile_Open(CSzFile *p, const char *name);
 WRes OutFile_Open(CSzFile *p, const char *name);
569bdeeb
 #endif
 #ifdef USE_WINDOWS_FILE
 WRes InFile_OpenW(CSzFile *p, const WCHAR *name);
 WRes OutFile_OpenW(CSzFile *p, const WCHAR *name);
 #endif
700cc7f7
 WRes File_Close(CSzFile *p);
 
 /* reads max(*size, remain file's size) bytes */
 WRes File_Read(CSzFile *p, void *data, size_t *size);
 
 /* writes *size bytes */
 WRes File_Write(CSzFile *p, const void *data, size_t *size);
 
 WRes File_Seek(CSzFile *p, Int64 *pos, ESzSeek origin);
 
 
 /* ---------- FileInStream ---------- */
 
 typedef struct
 {
   ISeqInStream s;
   CSzFile file;
 } CFileSeqInStream;
 
 void FileSeqInStream_CreateVTable(CFileSeqInStream *p);
 
 
 typedef struct
 {
   ISeekInStream s;
   CSzFile file;
 } CFileInStream;
 
 void FileInStream_CreateVTable(CFileInStream *p);
 
 
 typedef struct
 {
   ISeqOutStream s;
   CSzFile file;
 } CFileOutStream;
 
 void FileOutStream_CreateVTable(CFileOutStream *p);
 
569bdeeb
 EXTERN_C_END
 
700cc7f7
 #endif