1 #ifndef _RAR_HEADERS5_ 2 #define _RAR_HEADERS5_ 3 4 #define SIZEOF_MARKHEAD5 8 // RAR 5.0 signature length. 5 #define SIZEOF_SHORTBLOCKHEAD5 7 // Smallest RAR 5.0 block size. 6 7 // RAR 5.0 block flags common for all blocks. 8 9 // Additional extra area is present in the end of block header. 10 #define HFL_EXTRA 0x0001 11 // Additional data area is present in the end of block header. 12 #define HFL_DATA 0x0002 13 // Unknown blocks with this flag must be skipped when updating an archive. 14 #define HFL_SKIPIFUNKNOWN 0x0004 15 // Data area of this block is continuing from previous volume. 16 #define HFL_SPLITBEFORE 0x0008 17 // Data area of this block is continuing in next volume. 18 #define HFL_SPLITAFTER 0x0010 19 // Block depends on preceding file block. 20 #define HFL_CHILD 0x0020 21 // Preserve a child block if host is modified. 22 #define HFL_INHERITED 0x0040 23 24 // RAR 5.0 main archive header specific flags. 25 #define MHFL_VOLUME 0x0001 // Volume. 26 #define MHFL_VOLNUMBER 0x0002 // Volume number field is present. True for all volumes except first. 27 #define MHFL_SOLID 0x0004 // Solid archive. 28 #define MHFL_PROTECT 0x0008 // Recovery record is present. 29 #define MHFL_LOCK 0x0010 // Locked archive. 30 31 // RAR 5.0 file header specific flags. 32 #define FHFL_DIRECTORY 0x0001 // Directory. 33 #define FHFL_UTIME 0x0002 // Time field in Unix format is present. 34 #define FHFL_CRC32 0x0004 // CRC32 field is present. 35 #define FHFL_UNPUNKNOWN 0x0008 // Unknown unpacked size. 36 37 // RAR 5.0 end of archive header specific flags. 38 #define EHFL_NEXTVOLUME 0x0001 // Not last volume. 39 40 // RAR 5.0 archive encryption header specific flags. 41 #define CHFL_CRYPT_PSWCHECK 0x0001 // Password check data is present. 42 43 44 // RAR 5.0 file compression flags. 45 #define FCI_ALGO_BIT0 0x0001 // Version of compression algorithm. 46 #define FCI_ALGO_BIT1 0x0002 // 0 .. 63. 47 #define FCI_ALGO_BIT2 0x0004 48 #define FCI_ALGO_BIT3 0x0008 49 #define FCI_ALGO_BIT4 0x0010 50 #define FCI_ALGO_BIT5 0x0020 51 #define FCI_SOLID 0x0040 // Solid flag. 52 #define FCI_METHOD_BIT0 0x0080 // Compression method. 53 #define FCI_METHOD_BIT1 0x0100 // 0 .. 5 (6 and 7 are not used). 54 #define FCI_METHOD_BIT2 0x0200 55 #define FCI_DICT_BIT0 0x0400 // Dictionary size. 56 #define FCI_DICT_BIT1 0x0800 // 128 KB .. 4 GB. 57 #define FCI_DICT_BIT2 0x1000 58 #define FCI_DICT_BIT3 0x2000 59 60 // Main header extra field values. 61 #define MHEXTRA_LOCATOR 0x01 // Position of quick list and other blocks. 62 63 // Flags for MHEXTRA_LOCATOR. 64 #define MHEXTRA_LOCATOR_QLIST 0x01 // Quick open offset is present. 65 #define MHEXTRA_LOCATOR_RR 0x02 // Recovery record offset is present. 66 67 // File and service header extra field values. 68 #define FHEXTRA_CRYPT 0x01 // Encryption parameters. 69 #define FHEXTRA_HASH 0x02 // File hash. 70 #define FHEXTRA_HTIME 0x03 // High precision file time. 71 #define FHEXTRA_VERSION 0x04 // File version information. 72 #define FHEXTRA_REDIR 0x05 // File system redirection (links, etc.). 73 #define FHEXTRA_UOWNER 0x06 // Unix owner and group information. 74 #define FHEXTRA_SUBDATA 0x07 // Service header subdata array. 75 76 77 // Hash type values for FHEXTRA_HASH. 78 #define FHEXTRA_HASH_BLAKE2 0x00 79 80 // Flags for FHEXTRA_HTIME. 81 #define FHEXTRA_HTIME_UNIXTIME 0x01 // Use Unix time_t format. 82 #define FHEXTRA_HTIME_MTIME 0x02 // mtime is present. 83 #define FHEXTRA_HTIME_CTIME 0x04 // ctime is present. 84 #define FHEXTRA_HTIME_ATIME 0x08 // atime is present. 85 #define FHEXTRA_HTIME_UNIX_NS 0x10 // Unix format with nanosecond precision. 86 87 // Flags for FHEXTRA_CRYPT. 88 #define FHEXTRA_CRYPT_PSWCHECK 0x01 // Store password check data. 89 #define FHEXTRA_CRYPT_HASHMAC 0x02 // Use MAC for unpacked data checksums. 90 91 // Flags for FHEXTRA_REDIR. 92 #define FHEXTRA_REDIR_DIR 0x01 // Link target is directory. 93 94 // Flags for FHEXTRA_UOWNER. 95 #define FHEXTRA_UOWNER_UNAME 0x01 // User name string is present. 96 #define FHEXTRA_UOWNER_GNAME 0x02 // Group name string is present. 97 #define FHEXTRA_UOWNER_NUMUID 0x04 // Numeric user ID is present. 98 #define FHEXTRA_UOWNER_NUMGID 0x08 // Numeric group ID is present. 99 100 #endif 101