1baa3858d3f5d128a5c8466b700098109edcad5f2repo sync/* 7zFile.h -- File IO 2baa3858d3f5d128a5c8466b700098109edcad5f2repo sync2009-11-24 : Igor Pavlov : Public domain */ 3baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 4baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#ifndef __7Z_FILE_H 5baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#define __7Z_FILE_H 6baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 7baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#ifdef _WIN32 8baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#define USE_WINDOWS_FILE 9baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#endif 10baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 11baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#ifdef USE_WINDOWS_FILE 12baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include <windows.h> 13baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#else 14baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include <stdio.h> 15baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#endif 16baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 17baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "Types.h" 18baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 19baa3858d3f5d128a5c8466b700098109edcad5f2repo syncEXTERN_C_BEGIN 20baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 21baa3858d3f5d128a5c8466b700098109edcad5f2repo sync/* ---------- File ---------- */ 22baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 23baa3858d3f5d128a5c8466b700098109edcad5f2repo synctypedef struct 24baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 25baa3858d3f5d128a5c8466b700098109edcad5f2repo sync #ifdef USE_WINDOWS_FILE 26baa3858d3f5d128a5c8466b700098109edcad5f2repo sync HANDLE handle; 27baa3858d3f5d128a5c8466b700098109edcad5f2repo sync #else 28baa3858d3f5d128a5c8466b700098109edcad5f2repo sync FILE *file; 29baa3858d3f5d128a5c8466b700098109edcad5f2repo sync #endif 30baa3858d3f5d128a5c8466b700098109edcad5f2repo sync} CSzFile; 31baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 32baa3858d3f5d128a5c8466b700098109edcad5f2repo syncvoid File_Construct(CSzFile *p); 33baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#if !defined(UNDER_CE) || !defined(USE_WINDOWS_FILE) 34baa3858d3f5d128a5c8466b700098109edcad5f2repo syncWRes InFile_Open(CSzFile *p, const char *name); 35baa3858d3f5d128a5c8466b700098109edcad5f2repo syncWRes OutFile_Open(CSzFile *p, const char *name); 36baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#endif 37baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#ifdef USE_WINDOWS_FILE 38baa3858d3f5d128a5c8466b700098109edcad5f2repo syncWRes InFile_OpenW(CSzFile *p, const WCHAR *name); 39baa3858d3f5d128a5c8466b700098109edcad5f2repo syncWRes OutFile_OpenW(CSzFile *p, const WCHAR *name); 40baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#endif 41baa3858d3f5d128a5c8466b700098109edcad5f2repo syncWRes File_Close(CSzFile *p); 42baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 43baa3858d3f5d128a5c8466b700098109edcad5f2repo sync/* reads max(*size, remain file's size) bytes */ 44baa3858d3f5d128a5c8466b700098109edcad5f2repo syncWRes File_Read(CSzFile *p, void *data, size_t *size); 45baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 46baa3858d3f5d128a5c8466b700098109edcad5f2repo sync/* writes *size bytes */ 47baa3858d3f5d128a5c8466b700098109edcad5f2repo syncWRes File_Write(CSzFile *p, const void *data, size_t *size); 48baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 49baa3858d3f5d128a5c8466b700098109edcad5f2repo syncWRes File_Seek(CSzFile *p, Int64 *pos, ESzSeek origin); 50baa3858d3f5d128a5c8466b700098109edcad5f2repo syncWRes File_GetLength(CSzFile *p, UInt64 *length); 51baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 52baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 53baa3858d3f5d128a5c8466b700098109edcad5f2repo sync/* ---------- FileInStream ---------- */ 54baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 55baa3858d3f5d128a5c8466b700098109edcad5f2repo synctypedef struct 56baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 57baa3858d3f5d128a5c8466b700098109edcad5f2repo sync ISeqInStream s; 58baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CSzFile file; 59baa3858d3f5d128a5c8466b700098109edcad5f2repo sync} CFileSeqInStream; 60baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 61baa3858d3f5d128a5c8466b700098109edcad5f2repo syncvoid FileSeqInStream_CreateVTable(CFileSeqInStream *p); 62baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 63baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 64baa3858d3f5d128a5c8466b700098109edcad5f2repo synctypedef struct 65baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 66baa3858d3f5d128a5c8466b700098109edcad5f2repo sync ISeekInStream s; 67baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CSzFile file; 68baa3858d3f5d128a5c8466b700098109edcad5f2repo sync} CFileInStream; 69baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 70baa3858d3f5d128a5c8466b700098109edcad5f2repo syncvoid FileInStream_CreateVTable(CFileInStream *p); 71baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 72baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 73baa3858d3f5d128a5c8466b700098109edcad5f2repo synctypedef struct 74baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 75baa3858d3f5d128a5c8466b700098109edcad5f2repo sync ISeqOutStream s; 76baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CSzFile file; 77baa3858d3f5d128a5c8466b700098109edcad5f2repo sync} CFileOutStream; 78baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 79baa3858d3f5d128a5c8466b700098109edcad5f2repo syncvoid FileOutStream_CreateVTable(CFileOutStream *p); 80baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 81baa3858d3f5d128a5c8466b700098109edcad5f2repo syncEXTERN_C_END 82baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 83baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#endif 84