mirror of
https://github.com/Xevion/easy7zip.git
synced 2025-12-10 06:07:07 -06:00
93 lines
1.9 KiB
C++
Executable File
93 lines
1.9 KiB
C++
Executable File
// RarItem.h
|
|
|
|
#pragma once
|
|
|
|
#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 aStartBitNumber, int aNumBits, int aValue);
|
|
void SetBitMask(int aBitMask, bool anEnable);
|
|
public:
|
|
void ClearFlags();
|
|
void SetDictSize(UINT32 aSize);
|
|
void SetAsDirectory(bool aDirectory);
|
|
void SetEncrypted(bool anEncrypted);
|
|
void SetSolid(bool aSolid);
|
|
void SetCommented(bool aCommented);
|
|
void SetSplitBefore(bool aSplitBefore);
|
|
void SetSplitAfter(bool aSplitAfter);
|
|
};
|
|
|
|
class CItemEx: public CItem
|
|
{
|
|
public:
|
|
UINT64 Position;
|
|
UINT16 MainPartSize;
|
|
UINT16 CommentSize;
|
|
UINT64 GetFullSize() const { return MainPartSize + CommentSize + PackSize; };
|
|
// DWORD GetHeaderWithCommentSize() const { return MainPartSize + CommentSize; };
|
|
UINT64 GetCommentPosition() const { return Position + MainPartSize; };
|
|
UINT64 GetDataPosition() const { return GetCommentPosition() + CommentSize; };
|
|
};
|
|
|
|
}}
|
|
|
|
#endif
|
|
|
|
|