diff options
Diffstat (limited to '7zip/Archive/cpio/CpioHeader.h')
-rwxr-xr-x | 7zip/Archive/cpio/CpioHeader.h | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/7zip/Archive/cpio/CpioHeader.h b/7zip/Archive/cpio/CpioHeader.h new file mode 100755 index 00000000..6943fc1d --- /dev/null +++ b/7zip/Archive/cpio/CpioHeader.h @@ -0,0 +1,69 @@ +// Archive/cpio/Header.h + +#pragma once + +#ifndef __ARCHIVE_CPIO_HEADER_H +#define __ARCHIVE_CPIO_HEADER_H + +#include "Common/Types.h" + +namespace NArchive { +namespace NCpio { + +#pragma pack( push, PragmacpioHeaders) +#pragma pack( push, 1) + +namespace NFileHeader +{ + namespace NMagic + { + extern const char *kMagic1; + extern const char *kMagic2; + extern const char *kEndName; + extern unsigned short kMagicForRecord2; + extern unsigned short kMagicForRecord2BE; + } + + struct CRecord2 + { + unsigned short c_magic; + short c_dev; + unsigned short c_ino; + unsigned short c_mode; + unsigned short c_uid; + unsigned short c_gid; + unsigned short c_nlink; + short c_rdev; + unsigned short c_mtimes[2]; + unsigned short c_namesize; + unsigned short c_filesizes[2]; + }; + + struct CRecord + { + char Magic[6]; /* "070701" for "new" portable format, "070702" for CRC format */ + char inode[8]; + char Mode[8]; + char UID[8]; + char GID[8]; + char nlink[8]; + char mtime[8]; + char Size[8]; /* must be 0 for FIFOs and directories */ + char DevMajor[8]; + char DevMinor[8]; + char RDevMajor[8]; /*only valid for chr and blk special files*/ + char RDevMinor[8]; /*only valid for chr and blk special files*/ + char NameSize[8]; /*count includes terminating NUL in pathname*/ + char ChkSum[8]; /* 0 for "new" portable format; for CRC format the sum of all the bytes in the file */ + bool CheckMagic() + { return memcmp(Magic, NMagic::kMagic1, 6) == 0 || + memcmp(Magic, NMagic::kMagic2, 6) == 0; }; + }; +} + +#pragma pack(pop) +#pragma pack(pop, PragmacpioHeaders) + +}} + +#endif |