2
0

7zHeader.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. // 7z/7zHeader.h
  2. #ifndef __7Z_HEADER_H
  3. #define __7Z_HEADER_H
  4. #include "../../../Common/Types.h"
  5. namespace NArchive {
  6. namespace N7z {
  7. const int kSignatureSize = 6;
  8. extern Byte kSignature[kSignatureSize];
  9. // #define _7Z_VOL
  10. // 7z-MultiVolume is not finished yet.
  11. // It can work already, but I still do not like some
  12. // things of that new multivolume format.
  13. // So please keep it commented.
  14. #ifdef _7Z_VOL
  15. extern Byte kFinishSignature[kSignatureSize];
  16. #endif
  17. struct CArchiveVersion
  18. {
  19. Byte Major;
  20. Byte Minor;
  21. };
  22. const Byte kMajorVersion = 0;
  23. struct CStartHeader
  24. {
  25. UInt64 NextHeaderOffset;
  26. UInt64 NextHeaderSize;
  27. UInt32 NextHeaderCRC;
  28. };
  29. const UInt32 kStartHeaderSize = 20;
  30. #ifdef _7Z_VOL
  31. struct CFinishHeader: public CStartHeader
  32. {
  33. UInt64 ArchiveStartOffset; // data offset from end if that struct
  34. UInt64 AdditionalStartBlockSize; // start signature & start header size
  35. };
  36. const UInt32 kFinishHeaderSize = kStartHeaderSize + 16;
  37. #endif
  38. namespace NID
  39. {
  40. enum EEnum
  41. {
  42. kEnd,
  43. kHeader,
  44. kArchiveProperties,
  45. kAdditionalStreamsInfo,
  46. kMainStreamsInfo,
  47. kFilesInfo,
  48. kPackInfo,
  49. kUnPackInfo,
  50. kSubStreamsInfo,
  51. kSize,
  52. kCRC,
  53. kFolder,
  54. kCodersUnPackSize,
  55. kNumUnPackStream,
  56. kEmptyStream,
  57. kEmptyFile,
  58. kAnti,
  59. kName,
  60. kCreationTime,
  61. kLastAccessTime,
  62. kLastWriteTime,
  63. kWinAttributes,
  64. kComment,
  65. kEncodedHeader,
  66. kStartPos
  67. };
  68. }
  69. }}
  70. #endif