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