⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 headers.hpp

📁 source code for unrar3.3.4,uppack the .rar files,for multi-os
💻 HPP
字号:
#ifndef _RAR_HEADERS_#define _RAR_HEADERS_#define  SIZEOF_MARKHEAD         7#define  SIZEOF_OLDMHD           7#define  SIZEOF_NEWMHD          13#define  SIZEOF_OLDLHD          21#define  SIZEOF_NEWLHD          32#define  SIZEOF_SHORTBLOCKHEAD   7#define  SIZEOF_LONGBLOCKHEAD   11#define  SIZEOF_SUBBLOCKHEAD    14#define  SIZEOF_COMMHEAD        13#define  SIZEOF_PROTECTHEAD     26#define  SIZEOF_AVHEAD          14#define  SIZEOF_SIGNHEAD        15#define  SIZEOF_UOHEAD          18#define  SIZEOF_MACHEAD         22#define  SIZEOF_EAHEAD          24#define  SIZEOF_BEEAHEAD        24#define  SIZEOF_STREAMHEAD      26#define  PACK_VER               29#define  PACK_CRYPT_VER         29#define  UNP_VER                29#define  CRYPT_VER              29#define  AV_VER                 20#define  PROTECT_VER            20#define  MHD_VOLUME         0x0001#define  MHD_COMMENT        0x0002#define  MHD_LOCK           0x0004#define  MHD_SOLID          0x0008#define  MHD_PACK_COMMENT   0x0010#define  MHD_NEWNUMBERING   0x0010#define  MHD_AV             0x0020#define  MHD_PROTECT        0x0040#define  MHD_PASSWORD       0x0080#define  MHD_FIRSTVOLUME    0x0100#define  LHD_SPLIT_BEFORE   0x0001#define  LHD_SPLIT_AFTER    0x0002#define  LHD_PASSWORD       0x0004#define  LHD_COMMENT        0x0008#define  LHD_SOLID          0x0010#define  LHD_WINDOWMASK     0x00e0#define  LHD_WINDOW64       0x0000#define  LHD_WINDOW128      0x0020#define  LHD_WINDOW256      0x0040#define  LHD_WINDOW512      0x0060#define  LHD_WINDOW1024     0x0080#define  LHD_WINDOW2048     0x00a0#define  LHD_WINDOW4096     0x00c0#define  LHD_DIRECTORY      0x00e0#define  LHD_LARGE          0x0100#define  LHD_UNICODE        0x0200#define  LHD_SALT           0x0400#define  LHD_VERSION        0x0800#define  LHD_EXTTIME        0x1000#define  LHD_EXTFLAGS       0x2000#define  SKIP_IF_UNKNOWN    0x4000#define  LONG_BLOCK         0x8000#define  EARC_NEXT_VOLUME   0x0001#define  EARC_DATACRC       0x0002#define  EARC_REVSPACE      0x0004enum HEADER_TYPE {  MARK_HEAD=0x72,MAIN_HEAD=0x73,FILE_HEAD=0x74,COMM_HEAD=0x75,AV_HEAD=0x76,  SUB_HEAD=0x77,PROTECT_HEAD=0x78,SIGN_HEAD=0x79,NEWSUB_HEAD=0x7a,  ENDARC_HEAD=0x7b};enum { EA_HEAD=0x100,UO_HEAD=0x101,MAC_HEAD=0x102,BEEA_HEAD=0x103,       NTACL_HEAD=0x104,STREAM_HEAD=0x105 };enum HOST_SYSTEM {  HOST_MSDOS=0,HOST_OS2=1,HOST_WIN32=2,HOST_UNIX=3,HOST_MACOS=4,  HOST_BEOS=5,HOST_MAX};#define SUBHEAD_TYPE_CMT      "CMT"#define SUBHEAD_TYPE_ACL      "ACL"#define SUBHEAD_TYPE_STREAM   "STM"#define SUBHEAD_TYPE_UOWNER   "UOW"#define SUBHEAD_TYPE_AV       "AV"#define SUBHEAD_TYPE_RR       "RR"#define SUBHEAD_TYPE_OS2EA    "EA2"#define SUBHEAD_TYPE_BEOSEA   "EABE"/* new file inherits a subblock when updating a host file */#define SUBHEAD_FLAGS_INHERITED    0x80000000#define SUBHEAD_FLAGS_CMT_UNICODE  0x00000001struct OldMainHeader{  byte Mark[4];  ushort HeadSize;  byte Flags;};struct OldFileHeader{  uint PackSize;  uint UnpSize;  ushort FileCRC;  ushort HeadSize;  uint FileTime;  byte FileAttr;  byte Flags;  byte UnpVer;  byte NameSize;  byte Method;};struct MarkHeader{  byte Mark[7];};struct BaseBlock{  ushort HeadCRC;  HEADER_TYPE HeadType;//byte  ushort Flags;  ushort HeadSize;  bool IsSubBlock()  {    if (HeadType==SUB_HEAD)      return(true);    if (HeadType==NEWSUB_HEAD && (Flags & LHD_SOLID)!=0)      return(true);    return(false);  }};struct BlockHeader:BaseBlock{  union {    uint DataSize;    uint PackSize;  };};struct MainHeader:BlockHeader{  ushort HighPosAV;  uint PosAV;};#define SALT_SIZE     8struct FileHeader:BlockHeader{  uint UnpSize;  byte HostOS;  uint FileCRC;  uint FileTime;  byte UnpVer;  byte Method;  ushort NameSize;  union {    uint FileAttr;    uint SubFlags;  };/* optional */  uint HighPackSize;  uint HighUnpSize;/* names */  char FileName[NM];  wchar FileNameW[NM];/* optional */  Array<byte> SubData;  byte Salt[SALT_SIZE];  RarTime mtime;  RarTime ctime;  RarTime atime;  RarTime arctime;/* dummy */  Int64 FullPackSize;  Int64 FullUnpSize;  void Clear(int SubDataSize)  {    SubData.Alloc(SubDataSize);    Flags=LONG_BLOCK;    SubFlags=0;  }  bool CmpName(const char *Name)  {    return(strcmp(FileName,Name)==0);  }  FileHeader& operator = (FileHeader &hd)  {    SubData.Reset();    memcpy(this,&hd,sizeof(*this));    SubData.CleanData();    SubData=hd.SubData;    return(*this);  }};struct EndArcHeader:BaseBlock{  uint ArcDataCRC;};struct SubBlockHeader:BlockHeader{  ushort SubType;  byte Level;};struct CommentHeader:BaseBlock{  ushort UnpSize;  byte UnpVer;  byte Method;  ushort CommCRC;};struct ProtectHeader:BlockHeader{  byte Version;  ushort RecSectors;  uint TotalBlocks;  byte Mark[8];};struct AVHeader:BaseBlock{  byte UnpVer;  byte Method;  byte AVVer;  uint AVInfoCRC;};struct SignHeader:BaseBlock{  uint CreationTime;  ushort ArcNameSize;  ushort UserNameSize;};struct UnixOwnersHeader:SubBlockHeader{  ushort OwnerNameSize;  ushort GroupNameSize;/* dummy */  char OwnerName[NM];  char GroupName[NM];};struct EAHeader:SubBlockHeader{  uint UnpSize;  byte UnpVer;  byte Method;  uint EACRC;};struct StreamHeader:SubBlockHeader{  uint UnpSize;  byte UnpVer;  byte Method;  uint StreamCRC;  ushort StreamNameSize;/* dummy */  byte StreamName[NM];};struct MacFInfoHeader:SubBlockHeader{  uint fileType;  uint fileCreator;};#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -