xref: /aosp_15_r20/external/lzma/CPP/7zip/Archive/Tar/TarUpdate.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker // TarUpdate.h
2*f6dc9357SAndroid Build Coastguard Worker 
3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_TAR_UPDATE_H
4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_TAR_UPDATE_H
5*f6dc9357SAndroid Build Coastguard Worker 
6*f6dc9357SAndroid Build Coastguard Worker #include "../IArchive.h"
7*f6dc9357SAndroid Build Coastguard Worker 
8*f6dc9357SAndroid Build Coastguard Worker #include "TarItem.h"
9*f6dc9357SAndroid Build Coastguard Worker 
10*f6dc9357SAndroid Build Coastguard Worker namespace NArchive {
11*f6dc9357SAndroid Build Coastguard Worker namespace NTar {
12*f6dc9357SAndroid Build Coastguard Worker 
13*f6dc9357SAndroid Build Coastguard Worker struct CUpdateItem
14*f6dc9357SAndroid Build Coastguard Worker {
15*f6dc9357SAndroid Build Coastguard Worker   int IndexInArc;
16*f6dc9357SAndroid Build Coastguard Worker   unsigned IndexInClient;
17*f6dc9357SAndroid Build Coastguard Worker   UInt64 Size;
18*f6dc9357SAndroid Build Coastguard Worker   // Int64 MTime;
19*f6dc9357SAndroid Build Coastguard Worker   UInt32 Mode;
20*f6dc9357SAndroid Build Coastguard Worker   bool NewData;
21*f6dc9357SAndroid Build Coastguard Worker   bool NewProps;
22*f6dc9357SAndroid Build Coastguard Worker   bool IsDir;
23*f6dc9357SAndroid Build Coastguard Worker   bool DeviceMajor_Defined;
24*f6dc9357SAndroid Build Coastguard Worker   bool DeviceMinor_Defined;
25*f6dc9357SAndroid Build Coastguard Worker   UInt32 UID;
26*f6dc9357SAndroid Build Coastguard Worker   UInt32 GID;
27*f6dc9357SAndroid Build Coastguard Worker   UInt32 DeviceMajor;
28*f6dc9357SAndroid Build Coastguard Worker   UInt32 DeviceMinor;
29*f6dc9357SAndroid Build Coastguard Worker   AString Name;
30*f6dc9357SAndroid Build Coastguard Worker   AString User;
31*f6dc9357SAndroid Build Coastguard Worker   AString Group;
32*f6dc9357SAndroid Build Coastguard Worker 
33*f6dc9357SAndroid Build Coastguard Worker   CPaxTimes PaxTimes;
34*f6dc9357SAndroid Build Coastguard Worker 
CUpdateItemCUpdateItem35*f6dc9357SAndroid Build Coastguard Worker   CUpdateItem():
36*f6dc9357SAndroid Build Coastguard Worker       Size(0),
37*f6dc9357SAndroid Build Coastguard Worker       IsDir(false),
38*f6dc9357SAndroid Build Coastguard Worker       DeviceMajor_Defined(false),
39*f6dc9357SAndroid Build Coastguard Worker       DeviceMinor_Defined(false),
40*f6dc9357SAndroid Build Coastguard Worker       UID(0),
41*f6dc9357SAndroid Build Coastguard Worker       GID(0)
42*f6dc9357SAndroid Build Coastguard Worker       {}
43*f6dc9357SAndroid Build Coastguard Worker };
44*f6dc9357SAndroid Build Coastguard Worker 
45*f6dc9357SAndroid Build Coastguard Worker 
46*f6dc9357SAndroid Build Coastguard Worker struct CUpdateOptions
47*f6dc9357SAndroid Build Coastguard Worker {
48*f6dc9357SAndroid Build Coastguard Worker   UINT CodePage;
49*f6dc9357SAndroid Build Coastguard Worker   unsigned UtfFlags;
50*f6dc9357SAndroid Build Coastguard Worker   bool PosixMode;
51*f6dc9357SAndroid Build Coastguard Worker   CBoolPair Write_MTime;
52*f6dc9357SAndroid Build Coastguard Worker   CBoolPair Write_ATime;
53*f6dc9357SAndroid Build Coastguard Worker   CBoolPair Write_CTime;
54*f6dc9357SAndroid Build Coastguard Worker   CTimeOptions TimeOptions;
55*f6dc9357SAndroid Build Coastguard Worker };
56*f6dc9357SAndroid Build Coastguard Worker 
57*f6dc9357SAndroid Build Coastguard Worker 
58*f6dc9357SAndroid Build Coastguard Worker HRESULT UpdateArchive(IInStream *inStream, ISequentialOutStream *outStream,
59*f6dc9357SAndroid Build Coastguard Worker     const CObjectVector<CItemEx> &inputItems,
60*f6dc9357SAndroid Build Coastguard Worker     const CObjectVector<CUpdateItem> &updateItems,
61*f6dc9357SAndroid Build Coastguard Worker     const CUpdateOptions &options,
62*f6dc9357SAndroid Build Coastguard Worker     IArchiveUpdateCallback *updateCallback);
63*f6dc9357SAndroid Build Coastguard Worker 
64*f6dc9357SAndroid Build Coastguard Worker HRESULT GetPropString(IArchiveUpdateCallback *callback, UInt32 index, PROPID propId, AString &res,
65*f6dc9357SAndroid Build Coastguard Worker     UINT codePage, unsigned utfFlags, bool convertSlash);
66*f6dc9357SAndroid Build Coastguard Worker 
67*f6dc9357SAndroid Build Coastguard Worker HRESULT Prop_To_PaxTime(const NWindows::NCOM::CPropVariant &prop, CPaxTime &pt);
68*f6dc9357SAndroid Build Coastguard Worker 
69*f6dc9357SAndroid Build Coastguard Worker void Get_AString_From_UString(const UString &s, AString &res,
70*f6dc9357SAndroid Build Coastguard Worker     UINT codePage, unsigned utfFlags);
71*f6dc9357SAndroid Build Coastguard Worker 
72*f6dc9357SAndroid Build Coastguard Worker }}
73*f6dc9357SAndroid Build Coastguard Worker 
74*f6dc9357SAndroid Build Coastguard Worker #endif
75