1*f6dc9357SAndroid Build Coastguard Worker // PropID.h 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_7ZIP_PROP_ID_H 4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_7ZIP_PROP_ID_H 5*f6dc9357SAndroid Build Coastguard Worker 6*f6dc9357SAndroid Build Coastguard Worker #include "../Common/MyTypes.h" 7*f6dc9357SAndroid Build Coastguard Worker 8*f6dc9357SAndroid Build Coastguard Worker enum 9*f6dc9357SAndroid Build Coastguard Worker { 10*f6dc9357SAndroid Build Coastguard Worker kpidNoProperty = 0, 11*f6dc9357SAndroid Build Coastguard Worker kpidMainSubfile, 12*f6dc9357SAndroid Build Coastguard Worker kpidHandlerItemIndex, 13*f6dc9357SAndroid Build Coastguard Worker kpidPath, 14*f6dc9357SAndroid Build Coastguard Worker kpidName, 15*f6dc9357SAndroid Build Coastguard Worker kpidExtension, 16*f6dc9357SAndroid Build Coastguard Worker kpidIsDir, 17*f6dc9357SAndroid Build Coastguard Worker kpidSize, 18*f6dc9357SAndroid Build Coastguard Worker kpidPackSize, 19*f6dc9357SAndroid Build Coastguard Worker kpidAttrib, 20*f6dc9357SAndroid Build Coastguard Worker kpidCTime, 21*f6dc9357SAndroid Build Coastguard Worker kpidATime, 22*f6dc9357SAndroid Build Coastguard Worker kpidMTime, 23*f6dc9357SAndroid Build Coastguard Worker kpidSolid, 24*f6dc9357SAndroid Build Coastguard Worker kpidCommented, 25*f6dc9357SAndroid Build Coastguard Worker kpidEncrypted, 26*f6dc9357SAndroid Build Coastguard Worker kpidSplitBefore, 27*f6dc9357SAndroid Build Coastguard Worker kpidSplitAfter, 28*f6dc9357SAndroid Build Coastguard Worker kpidDictionarySize, 29*f6dc9357SAndroid Build Coastguard Worker kpidCRC, 30*f6dc9357SAndroid Build Coastguard Worker kpidType, 31*f6dc9357SAndroid Build Coastguard Worker kpidIsAnti, 32*f6dc9357SAndroid Build Coastguard Worker kpidMethod, 33*f6dc9357SAndroid Build Coastguard Worker kpidHostOS, 34*f6dc9357SAndroid Build Coastguard Worker kpidFileSystem, 35*f6dc9357SAndroid Build Coastguard Worker kpidUser, 36*f6dc9357SAndroid Build Coastguard Worker kpidGroup, 37*f6dc9357SAndroid Build Coastguard Worker kpidBlock, 38*f6dc9357SAndroid Build Coastguard Worker kpidComment, 39*f6dc9357SAndroid Build Coastguard Worker kpidPosition, 40*f6dc9357SAndroid Build Coastguard Worker kpidPrefix, 41*f6dc9357SAndroid Build Coastguard Worker kpidNumSubDirs, 42*f6dc9357SAndroid Build Coastguard Worker kpidNumSubFiles, 43*f6dc9357SAndroid Build Coastguard Worker kpidUnpackVer, 44*f6dc9357SAndroid Build Coastguard Worker kpidVolume, 45*f6dc9357SAndroid Build Coastguard Worker kpidIsVolume, 46*f6dc9357SAndroid Build Coastguard Worker kpidOffset, 47*f6dc9357SAndroid Build Coastguard Worker kpidLinks, 48*f6dc9357SAndroid Build Coastguard Worker kpidNumBlocks, 49*f6dc9357SAndroid Build Coastguard Worker kpidNumVolumes, 50*f6dc9357SAndroid Build Coastguard Worker kpidTimeType, 51*f6dc9357SAndroid Build Coastguard Worker kpidBit64, 52*f6dc9357SAndroid Build Coastguard Worker kpidBigEndian, 53*f6dc9357SAndroid Build Coastguard Worker kpidCpu, 54*f6dc9357SAndroid Build Coastguard Worker kpidPhySize, 55*f6dc9357SAndroid Build Coastguard Worker kpidHeadersSize, 56*f6dc9357SAndroid Build Coastguard Worker kpidChecksum, 57*f6dc9357SAndroid Build Coastguard Worker kpidCharacts, 58*f6dc9357SAndroid Build Coastguard Worker kpidVa, 59*f6dc9357SAndroid Build Coastguard Worker kpidId, 60*f6dc9357SAndroid Build Coastguard Worker kpidShortName, 61*f6dc9357SAndroid Build Coastguard Worker kpidCreatorApp, 62*f6dc9357SAndroid Build Coastguard Worker kpidSectorSize, 63*f6dc9357SAndroid Build Coastguard Worker kpidPosixAttrib, 64*f6dc9357SAndroid Build Coastguard Worker kpidSymLink, 65*f6dc9357SAndroid Build Coastguard Worker kpidError, 66*f6dc9357SAndroid Build Coastguard Worker kpidTotalSize, 67*f6dc9357SAndroid Build Coastguard Worker kpidFreeSpace, 68*f6dc9357SAndroid Build Coastguard Worker kpidClusterSize, 69*f6dc9357SAndroid Build Coastguard Worker kpidVolumeName, 70*f6dc9357SAndroid Build Coastguard Worker kpidLocalName, 71*f6dc9357SAndroid Build Coastguard Worker kpidProvider, 72*f6dc9357SAndroid Build Coastguard Worker kpidNtSecure, 73*f6dc9357SAndroid Build Coastguard Worker kpidIsAltStream, 74*f6dc9357SAndroid Build Coastguard Worker kpidIsAux, 75*f6dc9357SAndroid Build Coastguard Worker kpidIsDeleted, 76*f6dc9357SAndroid Build Coastguard Worker kpidIsTree, 77*f6dc9357SAndroid Build Coastguard Worker kpidSha1, 78*f6dc9357SAndroid Build Coastguard Worker kpidSha256, 79*f6dc9357SAndroid Build Coastguard Worker kpidErrorType, 80*f6dc9357SAndroid Build Coastguard Worker kpidNumErrors, 81*f6dc9357SAndroid Build Coastguard Worker kpidErrorFlags, 82*f6dc9357SAndroid Build Coastguard Worker kpidWarningFlags, 83*f6dc9357SAndroid Build Coastguard Worker kpidWarning, 84*f6dc9357SAndroid Build Coastguard Worker kpidNumStreams, 85*f6dc9357SAndroid Build Coastguard Worker kpidNumAltStreams, 86*f6dc9357SAndroid Build Coastguard Worker kpidAltStreamsSize, 87*f6dc9357SAndroid Build Coastguard Worker kpidVirtualSize, 88*f6dc9357SAndroid Build Coastguard Worker kpidUnpackSize, 89*f6dc9357SAndroid Build Coastguard Worker kpidTotalPhySize, 90*f6dc9357SAndroid Build Coastguard Worker kpidVolumeIndex, 91*f6dc9357SAndroid Build Coastguard Worker kpidSubType, 92*f6dc9357SAndroid Build Coastguard Worker kpidShortComment, 93*f6dc9357SAndroid Build Coastguard Worker kpidCodePage, 94*f6dc9357SAndroid Build Coastguard Worker kpidIsNotArcType, 95*f6dc9357SAndroid Build Coastguard Worker kpidPhySizeCantBeDetected, 96*f6dc9357SAndroid Build Coastguard Worker kpidZerosTailIsAllowed, 97*f6dc9357SAndroid Build Coastguard Worker kpidTailSize, 98*f6dc9357SAndroid Build Coastguard Worker kpidEmbeddedStubSize, 99*f6dc9357SAndroid Build Coastguard Worker kpidNtReparse, 100*f6dc9357SAndroid Build Coastguard Worker kpidHardLink, 101*f6dc9357SAndroid Build Coastguard Worker kpidINode, 102*f6dc9357SAndroid Build Coastguard Worker kpidStreamId, 103*f6dc9357SAndroid Build Coastguard Worker kpidReadOnly, 104*f6dc9357SAndroid Build Coastguard Worker kpidOutName, 105*f6dc9357SAndroid Build Coastguard Worker kpidCopyLink, 106*f6dc9357SAndroid Build Coastguard Worker kpidArcFileName, 107*f6dc9357SAndroid Build Coastguard Worker kpidIsHash, 108*f6dc9357SAndroid Build Coastguard Worker kpidChangeTime, 109*f6dc9357SAndroid Build Coastguard Worker kpidUserId, 110*f6dc9357SAndroid Build Coastguard Worker kpidGroupId, 111*f6dc9357SAndroid Build Coastguard Worker kpidDeviceMajor, 112*f6dc9357SAndroid Build Coastguard Worker kpidDeviceMinor, 113*f6dc9357SAndroid Build Coastguard Worker kpidDevMajor, 114*f6dc9357SAndroid Build Coastguard Worker kpidDevMinor, 115*f6dc9357SAndroid Build Coastguard Worker 116*f6dc9357SAndroid Build Coastguard Worker kpid_NUM_DEFINED, 117*f6dc9357SAndroid Build Coastguard Worker 118*f6dc9357SAndroid Build Coastguard Worker kpidUserDefined = 0x10000 119*f6dc9357SAndroid Build Coastguard Worker }; 120*f6dc9357SAndroid Build Coastguard Worker 121*f6dc9357SAndroid Build Coastguard Worker extern const Byte k7z_PROPID_To_VARTYPE[kpid_NUM_DEFINED]; // VARTYPE 122*f6dc9357SAndroid Build Coastguard Worker 123*f6dc9357SAndroid Build Coastguard Worker const UInt32 kpv_ErrorFlags_IsNotArc = 1 << 0; 124*f6dc9357SAndroid Build Coastguard Worker const UInt32 kpv_ErrorFlags_HeadersError = 1 << 1; 125*f6dc9357SAndroid Build Coastguard Worker const UInt32 kpv_ErrorFlags_EncryptedHeadersError = 1 << 2; 126*f6dc9357SAndroid Build Coastguard Worker const UInt32 kpv_ErrorFlags_UnavailableStart = 1 << 3; 127*f6dc9357SAndroid Build Coastguard Worker const UInt32 kpv_ErrorFlags_UnconfirmedStart = 1 << 4; 128*f6dc9357SAndroid Build Coastguard Worker const UInt32 kpv_ErrorFlags_UnexpectedEnd = 1 << 5; 129*f6dc9357SAndroid Build Coastguard Worker const UInt32 kpv_ErrorFlags_DataAfterEnd = 1 << 6; 130*f6dc9357SAndroid Build Coastguard Worker const UInt32 kpv_ErrorFlags_UnsupportedMethod = 1 << 7; 131*f6dc9357SAndroid Build Coastguard Worker const UInt32 kpv_ErrorFlags_UnsupportedFeature = 1 << 8; 132*f6dc9357SAndroid Build Coastguard Worker const UInt32 kpv_ErrorFlags_DataError = 1 << 9; 133*f6dc9357SAndroid Build Coastguard Worker const UInt32 kpv_ErrorFlags_CrcError = 1 << 10; 134*f6dc9357SAndroid Build Coastguard Worker // const UInt32 kpv_ErrorFlags_Unsupported = 1 << 11; 135*f6dc9357SAndroid Build Coastguard Worker 136*f6dc9357SAndroid Build Coastguard Worker /* 137*f6dc9357SAndroid Build Coastguard Worker linux ctime : 138*f6dc9357SAndroid Build Coastguard Worker file metadata was last changed. 139*f6dc9357SAndroid Build Coastguard Worker changing the file modification time 140*f6dc9357SAndroid Build Coastguard Worker counts as a metadata change, so will also have the side effect of updating the ctime. 141*f6dc9357SAndroid Build Coastguard Worker 142*f6dc9357SAndroid Build Coastguard Worker PROPVARIANT for timestamps in 7-Zip: 143*f6dc9357SAndroid Build Coastguard Worker { 144*f6dc9357SAndroid Build Coastguard Worker vt = VT_FILETIME 145*f6dc9357SAndroid Build Coastguard Worker wReserved1: set precision level 146*f6dc9357SAndroid Build Coastguard Worker 0 : base value (backward compatibility value) 147*f6dc9357SAndroid Build Coastguard Worker only filetime is used (7 digits precision). 148*f6dc9357SAndroid Build Coastguard Worker wReserved2 and wReserved3 can contain random data 149*f6dc9357SAndroid Build Coastguard Worker 1 : Unix (1 sec) 150*f6dc9357SAndroid Build Coastguard Worker 2 : DOS (2 sec) 151*f6dc9357SAndroid Build Coastguard Worker 3 : High Precision (1 ns) 152*f6dc9357SAndroid Build Coastguard Worker 16 - 3 : (reserved) = 1 day 153*f6dc9357SAndroid Build Coastguard Worker 16 - 2 : (reserved) = 1 hour 154*f6dc9357SAndroid Build Coastguard Worker 16 - 1 : (reserved) = 1 minute 155*f6dc9357SAndroid Build Coastguard Worker 16 + 0 : 1 sec (0 digits after point) 156*f6dc9357SAndroid Build Coastguard Worker 16 + (1,2,3,4,5,6,7,8,9) : set subsecond precision level : 157*f6dc9357SAndroid Build Coastguard Worker (number of decimal digits after point) 158*f6dc9357SAndroid Build Coastguard Worker 16 + 9 : 1 ns (9 digits after point) 159*f6dc9357SAndroid Build Coastguard Worker wReserved2 = ns % 100 : if (8 or 9 digits pecision) 160*f6dc9357SAndroid Build Coastguard Worker = 0 : if not (8 or 9 digits pecision) 161*f6dc9357SAndroid Build Coastguard Worker wReserved3 = 0; 162*f6dc9357SAndroid Build Coastguard Worker filetime 163*f6dc9357SAndroid Build Coastguard Worker } 164*f6dc9357SAndroid Build Coastguard Worker 165*f6dc9357SAndroid Build Coastguard Worker NOTE: TAR-PAX archives created by GNU TAR don't keep 166*f6dc9357SAndroid Build Coastguard Worker whole information about original level of precision, 167*f6dc9357SAndroid Build Coastguard Worker and timestamp are stored in reduced form, where tail zero 168*f6dc9357SAndroid Build Coastguard Worker digits after point are removed. 169*f6dc9357SAndroid Build Coastguard Worker So 7-Zip can return different precision levels for different items for such TAR archives. 170*f6dc9357SAndroid Build Coastguard Worker */ 171*f6dc9357SAndroid Build Coastguard Worker 172*f6dc9357SAndroid Build Coastguard Worker /* 173*f6dc9357SAndroid Build Coastguard Worker TimePrec returned by IOutArchive::GetFileTimeType() 174*f6dc9357SAndroid Build Coastguard Worker is used only for updating, when we compare MTime timestamp 175*f6dc9357SAndroid Build Coastguard Worker from archive with timestamp from directory. 176*f6dc9357SAndroid Build Coastguard Worker */ 177*f6dc9357SAndroid Build Coastguard Worker 178*f6dc9357SAndroid Build Coastguard Worker #endif 179