mirror of
https://github.com/Xevion/easy7zip.git
synced 2025-12-06 23:14:54 -06:00
92 lines
1.9 KiB
C++
Executable File
92 lines
1.9 KiB
C++
Executable File
// RarItem.h
|
|
|
|
#ifndef __ARCHIVE_RAR_ITEM_H
|
|
#define __ARCHIVE_RAR_ITEM_H
|
|
|
|
#include "Common/Types.h"
|
|
#include "Common/String.h"
|
|
|
|
namespace NArchive{
|
|
namespace NRar{
|
|
|
|
struct CRarTime
|
|
{
|
|
UInt32 DosTime;
|
|
Byte LowSecond;
|
|
Byte SubTime[3];
|
|
};
|
|
|
|
class CItem
|
|
{
|
|
public:
|
|
UInt16 Flags;
|
|
UInt64 PackSize;
|
|
UInt64 UnPackSize;
|
|
Byte HostOS;
|
|
UInt32 FileCRC;
|
|
|
|
CRarTime CreationTime;
|
|
CRarTime LastWriteTime;
|
|
CRarTime LastAccessTime;
|
|
bool IsCreationTimeDefined;
|
|
// bool IsLastWriteTimeDefined;
|
|
bool IsLastAccessTimeDefined;
|
|
|
|
Byte UnPackVersion;
|
|
Byte Method;
|
|
UInt32 Attributes;
|
|
AString Name;
|
|
UString UnicodeName;
|
|
|
|
Byte Salt[8];
|
|
|
|
bool IsEncrypted() const;
|
|
bool IsSolid() const;
|
|
bool IsCommented() const;
|
|
bool IsSplitBefore() const;
|
|
bool IsSplitAfter() const;
|
|
bool HasSalt() const;
|
|
bool HasExtTime() const;
|
|
|
|
bool HasUnicodeName() const;
|
|
bool IsOldVersion() const;
|
|
|
|
UInt32 GetDictSize() const;
|
|
bool IsDirectory() const;
|
|
bool IgnoreItem() const;
|
|
UInt32 GetWinAttributes() const;
|
|
|
|
CItem(): IsCreationTimeDefined(false), IsLastAccessTimeDefined(false) {}
|
|
private:
|
|
void SetFlagBits(int startBitNumber, int numBits, int value);
|
|
void SetBitMask(int bitMask, bool enable);
|
|
public:
|
|
void ClearFlags();
|
|
void SetDictSize(UInt32 size);
|
|
void SetAsDirectory(bool directory);
|
|
void SetEncrypted(bool encrypted);
|
|
void SetSolid(bool solid);
|
|
void SetCommented(bool commented);
|
|
void SetSplitBefore(bool splitBefore);
|
|
void SetSplitAfter(bool splitAfter);
|
|
};
|
|
|
|
class CItemEx: public CItem
|
|
{
|
|
public:
|
|
UInt64 Position;
|
|
UInt16 MainPartSize;
|
|
UInt16 CommentSize;
|
|
UInt16 AlignSize;
|
|
UInt64 GetFullSize() const { return MainPartSize + CommentSize + AlignSize + PackSize; };
|
|
// DWORD GetHeaderWithCommentSize() const { return MainPartSize + CommentSize; };
|
|
UInt64 GetCommentPosition() const { return Position + MainPartSize; };
|
|
UInt64 GetDataPosition() const { return GetCommentPosition() + CommentSize + AlignSize; };
|
|
};
|
|
|
|
}}
|
|
|
|
#endif
|
|
|
|
|