Source code

Revision control

Copy as Markdown

Other Tools

/* 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