chromium/third_party/unrar/src/headers.hpp

#ifndef _RAR_HEADERS_
#define _RAR_HEADERS_

#define SIZEOF_MARKHEAD3
#define SIZEOF_MAINHEAD14
#define SIZEOF_MAINHEAD3
#define SIZEOF_FILEHEAD14
#define SIZEOF_FILEHEAD3
#define SIZEOF_SHORTBLOCKHEAD
#define SIZEOF_LONGBLOCKHEAD
#define SIZEOF_SUBBLOCKHEAD
#define SIZEOF_COMMHEAD
#define SIZEOF_PROTECTHEAD
#define SIZEOF_STREAMHEAD

#define VER_PACK
#define VER_PACK5
#define VER_PACK7
#define VER_UNPACK
#define VER_UNPACK5
#define VER_UNPACK7
#define VER_UNKNOWN

#define MHD_VOLUME

// Old style main archive comment embed into main archive header. Must not
// be used in new archives anymore.
#define MHD_COMMENT

#define MHD_LOCK
#define MHD_SOLID
#define MHD_PACK_COMMENT
#define MHD_NEWNUMBERING
#define MHD_AV
#define MHD_PROTECT
#define MHD_PASSWORD
#define MHD_FIRSTVOLUME

#define LHD_SPLIT_BEFORE
#define LHD_SPLIT_AFTER
#define LHD_PASSWORD

// Old style file comment embed into file header. Must not be used
// in new archives anymore.
#define LHD_COMMENT

// For non-file subheaders it denotes 'subblock having a parent file' flag.
#define LHD_SOLID


#define LHD_WINDOWMASK
#define LHD_WINDOW64
#define LHD_WINDOW128
#define LHD_WINDOW256
#define LHD_WINDOW512
#define LHD_WINDOW1024
#define LHD_WINDOW2048
#define LHD_WINDOW4096
#define LHD_DIRECTORY

#define LHD_LARGE
#define LHD_UNICODE
#define LHD_SALT
#define LHD_VERSION
#define LHD_EXTTIME

#define SKIP_IF_UNKNOWN
#define LONG_BLOCK

#define EARC_NEXT_VOLUME
#define EARC_DATACRC
#define EARC_REVSPACE
#define EARC_VOLNUMBER

enum HEADER_TYPE {};


// RAR 2.9 and earlier service haeders, mostly outdated and not supported.
enum {};


// Internal implementation, depends on archive format version.
enum HOST_SYSTEM {};

// Unified archive format independent implementation.
enum HOST_SYSTEM_TYPE {};


// We also use these values in extra field, so do not modify them.
enum FILE_SYSTEM_REDIRECT {};


#define SUBHEAD_TYPE_CMT
#define SUBHEAD_TYPE_QOPEN
#define SUBHEAD_TYPE_ACL
#define SUBHEAD_TYPE_STREAM
#define SUBHEAD_TYPE_UOWNER
#define SUBHEAD_TYPE_AV
#define SUBHEAD_TYPE_RR
#define SUBHEAD_TYPE_OS2EA

/* new file inherits a subblock when updating a host file */
#define SUBHEAD_FLAGS_INHERITED

#define SUBHEAD_FLAGS_CMT_UNICODE


struct MarkHeader
{};


struct BaseBlock
{};


struct BlockHeader:BaseBlock
{};


struct MainHeader:BaseBlock
{};


struct FileHeader:BlockHeader
{};


struct EndArcHeader:BaseBlock
{};


struct CryptHeader:BaseBlock
{};


// SubBlockHeader and its successors were used in RAR 2.x format.
// RAR 4.x uses FileHeader with HEAD_SERVICE HeaderType for subblocks.
struct SubBlockHeader:BlockHeader
{};


struct CommentHeader:BaseBlock
{};


struct ProtectHeader:BlockHeader
{};


struct EAHeader:SubBlockHeader
{};


struct StreamHeader:SubBlockHeader
{};


#endif