xref: /aosp_15_r20/external/lzma/C/7zFile.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker /* 7zFile.h -- File IO
2*f6dc9357SAndroid Build Coastguard Worker 2023-03-05 : Igor Pavlov : Public domain */
3*f6dc9357SAndroid Build Coastguard Worker 
4*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_FILE_H
5*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_FILE_H
6*f6dc9357SAndroid Build Coastguard Worker 
7*f6dc9357SAndroid Build Coastguard Worker #ifdef _WIN32
8*f6dc9357SAndroid Build Coastguard Worker #define USE_WINDOWS_FILE
9*f6dc9357SAndroid Build Coastguard Worker // #include <windows.h>
10*f6dc9357SAndroid Build Coastguard Worker #endif
11*f6dc9357SAndroid Build Coastguard Worker 
12*f6dc9357SAndroid Build Coastguard Worker #ifdef USE_WINDOWS_FILE
13*f6dc9357SAndroid Build Coastguard Worker #include "7zWindows.h"
14*f6dc9357SAndroid Build Coastguard Worker 
15*f6dc9357SAndroid Build Coastguard Worker #else
16*f6dc9357SAndroid Build Coastguard Worker // note: USE_FOPEN mode is limited to 32-bit file size
17*f6dc9357SAndroid Build Coastguard Worker // #define USE_FOPEN
18*f6dc9357SAndroid Build Coastguard Worker // #include <stdio.h>
19*f6dc9357SAndroid Build Coastguard Worker #endif
20*f6dc9357SAndroid Build Coastguard Worker 
21*f6dc9357SAndroid Build Coastguard Worker #include "7zTypes.h"
22*f6dc9357SAndroid Build Coastguard Worker 
23*f6dc9357SAndroid Build Coastguard Worker EXTERN_C_BEGIN
24*f6dc9357SAndroid Build Coastguard Worker 
25*f6dc9357SAndroid Build Coastguard Worker /* ---------- File ---------- */
26*f6dc9357SAndroid Build Coastguard Worker 
27*f6dc9357SAndroid Build Coastguard Worker typedef struct
28*f6dc9357SAndroid Build Coastguard Worker {
29*f6dc9357SAndroid Build Coastguard Worker   #ifdef USE_WINDOWS_FILE
30*f6dc9357SAndroid Build Coastguard Worker   HANDLE handle;
31*f6dc9357SAndroid Build Coastguard Worker   #elif defined(USE_FOPEN)
32*f6dc9357SAndroid Build Coastguard Worker   FILE *file;
33*f6dc9357SAndroid Build Coastguard Worker   #else
34*f6dc9357SAndroid Build Coastguard Worker   int fd;
35*f6dc9357SAndroid Build Coastguard Worker   #endif
36*f6dc9357SAndroid Build Coastguard Worker } CSzFile;
37*f6dc9357SAndroid Build Coastguard Worker 
38*f6dc9357SAndroid Build Coastguard Worker void File_Construct(CSzFile *p);
39*f6dc9357SAndroid Build Coastguard Worker #if !defined(UNDER_CE) || !defined(USE_WINDOWS_FILE)
40*f6dc9357SAndroid Build Coastguard Worker WRes InFile_Open(CSzFile *p, const char *name);
41*f6dc9357SAndroid Build Coastguard Worker WRes OutFile_Open(CSzFile *p, const char *name);
42*f6dc9357SAndroid Build Coastguard Worker #endif
43*f6dc9357SAndroid Build Coastguard Worker #ifdef USE_WINDOWS_FILE
44*f6dc9357SAndroid Build Coastguard Worker WRes InFile_OpenW(CSzFile *p, const WCHAR *name);
45*f6dc9357SAndroid Build Coastguard Worker WRes OutFile_OpenW(CSzFile *p, const WCHAR *name);
46*f6dc9357SAndroid Build Coastguard Worker #endif
47*f6dc9357SAndroid Build Coastguard Worker WRes File_Close(CSzFile *p);
48*f6dc9357SAndroid Build Coastguard Worker 
49*f6dc9357SAndroid Build Coastguard Worker /* reads max(*size, remain file's size) bytes */
50*f6dc9357SAndroid Build Coastguard Worker WRes File_Read(CSzFile *p, void *data, size_t *size);
51*f6dc9357SAndroid Build Coastguard Worker 
52*f6dc9357SAndroid Build Coastguard Worker /* writes *size bytes */
53*f6dc9357SAndroid Build Coastguard Worker WRes File_Write(CSzFile *p, const void *data, size_t *size);
54*f6dc9357SAndroid Build Coastguard Worker 
55*f6dc9357SAndroid Build Coastguard Worker WRes File_Seek(CSzFile *p, Int64 *pos, ESzSeek origin);
56*f6dc9357SAndroid Build Coastguard Worker WRes File_GetLength(CSzFile *p, UInt64 *length);
57*f6dc9357SAndroid Build Coastguard Worker 
58*f6dc9357SAndroid Build Coastguard Worker 
59*f6dc9357SAndroid Build Coastguard Worker /* ---------- FileInStream ---------- */
60*f6dc9357SAndroid Build Coastguard Worker 
61*f6dc9357SAndroid Build Coastguard Worker typedef struct
62*f6dc9357SAndroid Build Coastguard Worker {
63*f6dc9357SAndroid Build Coastguard Worker   ISeqInStream vt;
64*f6dc9357SAndroid Build Coastguard Worker   CSzFile file;
65*f6dc9357SAndroid Build Coastguard Worker   WRes wres;
66*f6dc9357SAndroid Build Coastguard Worker } CFileSeqInStream;
67*f6dc9357SAndroid Build Coastguard Worker 
68*f6dc9357SAndroid Build Coastguard Worker void FileSeqInStream_CreateVTable(CFileSeqInStream *p);
69*f6dc9357SAndroid Build Coastguard Worker 
70*f6dc9357SAndroid Build Coastguard Worker 
71*f6dc9357SAndroid Build Coastguard Worker typedef struct
72*f6dc9357SAndroid Build Coastguard Worker {
73*f6dc9357SAndroid Build Coastguard Worker   ISeekInStream vt;
74*f6dc9357SAndroid Build Coastguard Worker   CSzFile file;
75*f6dc9357SAndroid Build Coastguard Worker   WRes wres;
76*f6dc9357SAndroid Build Coastguard Worker } CFileInStream;
77*f6dc9357SAndroid Build Coastguard Worker 
78*f6dc9357SAndroid Build Coastguard Worker void FileInStream_CreateVTable(CFileInStream *p);
79*f6dc9357SAndroid Build Coastguard Worker 
80*f6dc9357SAndroid Build Coastguard Worker 
81*f6dc9357SAndroid Build Coastguard Worker typedef struct
82*f6dc9357SAndroid Build Coastguard Worker {
83*f6dc9357SAndroid Build Coastguard Worker   ISeqOutStream vt;
84*f6dc9357SAndroid Build Coastguard Worker   CSzFile file;
85*f6dc9357SAndroid Build Coastguard Worker   WRes wres;
86*f6dc9357SAndroid Build Coastguard Worker } CFileOutStream;
87*f6dc9357SAndroid Build Coastguard Worker 
88*f6dc9357SAndroid Build Coastguard Worker void FileOutStream_CreateVTable(CFileOutStream *p);
89*f6dc9357SAndroid Build Coastguard Worker 
90*f6dc9357SAndroid Build Coastguard Worker EXTERN_C_END
91*f6dc9357SAndroid Build Coastguard Worker 
92*f6dc9357SAndroid Build Coastguard Worker #endif
93