You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
1.5 KiB
83 lines
1.5 KiB
/* 7zFile.h -- File IO |
|
2013-01-18 : 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 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); |
|
|
|
EXTERN_C_END |
|
|
|
#endif
|
|
|