179 lines
4.0 KiB
C
179 lines
4.0 KiB
C
// PropID.h
|
|
|
|
#ifndef ZIP7_INC_7ZIP_PROP_ID_H
|
|
#define ZIP7_INC_7ZIP_PROP_ID_H
|
|
|
|
#include "../Common/MyTypes.h"
|
|
|
|
enum
|
|
{
|
|
kpidNoProperty = 0,
|
|
kpidMainSubfile,
|
|
kpidHandlerItemIndex,
|
|
kpidPath,
|
|
kpidName,
|
|
kpidExtension,
|
|
kpidIsDir,
|
|
kpidSize,
|
|
kpidPackSize,
|
|
kpidAttrib,
|
|
kpidCTime,
|
|
kpidATime,
|
|
kpidMTime,
|
|
kpidSolid,
|
|
kpidCommented,
|
|
kpidEncrypted,
|
|
kpidSplitBefore,
|
|
kpidSplitAfter,
|
|
kpidDictionarySize,
|
|
kpidCRC,
|
|
kpidType,
|
|
kpidIsAnti,
|
|
kpidMethod,
|
|
kpidHostOS,
|
|
kpidFileSystem,
|
|
kpidUser,
|
|
kpidGroup,
|
|
kpidBlock,
|
|
kpidComment,
|
|
kpidPosition,
|
|
kpidPrefix,
|
|
kpidNumSubDirs,
|
|
kpidNumSubFiles,
|
|
kpidUnpackVer,
|
|
kpidVolume,
|
|
kpidIsVolume,
|
|
kpidOffset,
|
|
kpidLinks,
|
|
kpidNumBlocks,
|
|
kpidNumVolumes,
|
|
kpidTimeType,
|
|
kpidBit64,
|
|
kpidBigEndian,
|
|
kpidCpu,
|
|
kpidPhySize,
|
|
kpidHeadersSize,
|
|
kpidChecksum,
|
|
kpidCharacts,
|
|
kpidVa,
|
|
kpidId,
|
|
kpidShortName,
|
|
kpidCreatorApp,
|
|
kpidSectorSize,
|
|
kpidPosixAttrib,
|
|
kpidSymLink,
|
|
kpidError,
|
|
kpidTotalSize,
|
|
kpidFreeSpace,
|
|
kpidClusterSize,
|
|
kpidVolumeName,
|
|
kpidLocalName,
|
|
kpidProvider,
|
|
kpidNtSecure,
|
|
kpidIsAltStream,
|
|
kpidIsAux,
|
|
kpidIsDeleted,
|
|
kpidIsTree,
|
|
kpidSha1,
|
|
kpidSha256,
|
|
kpidErrorType,
|
|
kpidNumErrors,
|
|
kpidErrorFlags,
|
|
kpidWarningFlags,
|
|
kpidWarning,
|
|
kpidNumStreams,
|
|
kpidNumAltStreams,
|
|
kpidAltStreamsSize,
|
|
kpidVirtualSize,
|
|
kpidUnpackSize,
|
|
kpidTotalPhySize,
|
|
kpidVolumeIndex,
|
|
kpidSubType,
|
|
kpidShortComment,
|
|
kpidCodePage,
|
|
kpidIsNotArcType,
|
|
kpidPhySizeCantBeDetected,
|
|
kpidZerosTailIsAllowed,
|
|
kpidTailSize,
|
|
kpidEmbeddedStubSize,
|
|
kpidNtReparse,
|
|
kpidHardLink,
|
|
kpidINode,
|
|
kpidStreamId,
|
|
kpidReadOnly,
|
|
kpidOutName,
|
|
kpidCopyLink,
|
|
kpidArcFileName,
|
|
kpidIsHash,
|
|
kpidChangeTime,
|
|
kpidUserId,
|
|
kpidGroupId,
|
|
kpidDeviceMajor,
|
|
kpidDeviceMinor,
|
|
kpidDevMajor,
|
|
kpidDevMinor,
|
|
|
|
kpid_NUM_DEFINED,
|
|
|
|
kpidUserDefined = 0x10000
|
|
};
|
|
|
|
extern const Byte k7z_PROPID_To_VARTYPE[kpid_NUM_DEFINED]; // VARTYPE
|
|
|
|
const UInt32 kpv_ErrorFlags_IsNotArc = 1 << 0;
|
|
const UInt32 kpv_ErrorFlags_HeadersError = 1 << 1;
|
|
const UInt32 kpv_ErrorFlags_EncryptedHeadersError = 1 << 2;
|
|
const UInt32 kpv_ErrorFlags_UnavailableStart = 1 << 3;
|
|
const UInt32 kpv_ErrorFlags_UnconfirmedStart = 1 << 4;
|
|
const UInt32 kpv_ErrorFlags_UnexpectedEnd = 1 << 5;
|
|
const UInt32 kpv_ErrorFlags_DataAfterEnd = 1 << 6;
|
|
const UInt32 kpv_ErrorFlags_UnsupportedMethod = 1 << 7;
|
|
const UInt32 kpv_ErrorFlags_UnsupportedFeature = 1 << 8;
|
|
const UInt32 kpv_ErrorFlags_DataError = 1 << 9;
|
|
const UInt32 kpv_ErrorFlags_CrcError = 1 << 10;
|
|
// const UInt32 kpv_ErrorFlags_Unsupported = 1 << 11;
|
|
|
|
/*
|
|
linux ctime :
|
|
file metadata was last changed.
|
|
changing the file modification time
|
|
counts as a metadata change, so will also have the side effect of updating the ctime.
|
|
|
|
PROPVARIANT for timestamps in 7-Zip:
|
|
{
|
|
vt = VT_FILETIME
|
|
wReserved1: set precision level
|
|
0 : base value (backward compatibility value)
|
|
only filetime is used (7 digits precision).
|
|
wReserved2 and wReserved3 can contain random data
|
|
1 : Unix (1 sec)
|
|
2 : DOS (2 sec)
|
|
3 : High Precision (1 ns)
|
|
16 - 3 : (reserved) = 1 day
|
|
16 - 2 : (reserved) = 1 hour
|
|
16 - 1 : (reserved) = 1 minute
|
|
16 + 0 : 1 sec (0 digits after point)
|
|
16 + (1,2,3,4,5,6,7,8,9) : set subsecond precision level :
|
|
(number of decimal digits after point)
|
|
16 + 9 : 1 ns (9 digits after point)
|
|
wReserved2 = ns % 100 : if (8 or 9 digits pecision)
|
|
= 0 : if not (8 or 9 digits pecision)
|
|
wReserved3 = 0;
|
|
filetime
|
|
}
|
|
|
|
NOTE: TAR-PAX archives created by GNU TAR don't keep
|
|
whole information about original level of precision,
|
|
and timestamp are stored in reduced form, where tail zero
|
|
digits after point are removed.
|
|
So 7-Zip can return different precision levels for different items for such TAR archives.
|
|
*/
|
|
|
|
/*
|
|
TimePrec returned by IOutArchive::GetFileTimeType()
|
|
is used only for updating, when we compare MTime timestamp
|
|
from archive with timestamp from directory.
|
|
*/
|
|
|
|
#endif
|