1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- /* 7zFile.h -- File IO
- 2017-04-03 : Igor Pavlov : Public domain */
- #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 "7zTypes.h"
- EXTERN_C_BEGIN
- /* ---------- File ---------- */
- typedef struct
- {
- #ifdef USE_WINDOWS_FILE
- HANDLE handle;
- #else
- FILE *file;
- #endif
- } CSzFile;
- void File_Construct(CSzFile *p);
- #if !defined(UNDER_CE) || !defined(USE_WINDOWS_FILE)
- WRes InFile_Open(CSzFile *p, const char *name);
- WRes OutFile_Open(CSzFile *p, const char *name);
- #endif
- #ifdef USE_WINDOWS_FILE
- WRes InFile_OpenW(CSzFile *p, const WCHAR *name);
- WRes OutFile_OpenW(CSzFile *p, const WCHAR *name);
- #endif
- 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);
- WRes File_GetLength(CSzFile *p, UInt64 *length);
- /* ---------- FileInStream ---------- */
- typedef struct
- {
- ISeqInStream vt;
- CSzFile file;
- } CFileSeqInStream;
- void FileSeqInStream_CreateVTable(CFileSeqInStream *p);
- typedef struct
- {
- ISeekInStream vt;
- CSzFile file;
- } CFileInStream;
- void FileInStream_CreateVTable(CFileInStream *p);
- typedef struct
- {
- ISeqOutStream vt;
- CSzFile file;
- } CFileOutStream;
- void FileOutStream_CreateVTable(CFileOutStream *p);
- EXTERN_C_END
- #endif
|