namespace SabreTools.Data.Models.PKZIP { /// /// Stores the UTF-8 version of the file name field as stored in the /// local header and central directory header. (Last Revision 20070912) /// /// Currently Version is set to the number 1. If there is a need /// to change this field, the version will be incremented. Changes /// MAY NOT be backward compatible so this extra field SHOULD NOT be /// used if the version is not recognized. /// /// The NameCRC32 is the standard zip CRC32 checksum of the File Name /// field in the header. This is used to verify that the header /// File Name field has not changed since the Unicode Path extra field /// was created. This can happen if a utility renames the File Name but /// does not update the UTF-8 path extra field. If the CRC check fails, /// this UTF-8 Path Extra Field SHOULD be ignored and the File Name field /// in the header SHOULD be used instead. /// /// The UnicodeName is the UTF-8 version of the contents of the File Name /// field in the header. As UnicodeName is defined to be UTF-8, no UTF-8 /// byte order mark (BOM) is used. The length of this field is determined /// by subtracting the size of the previous fields from TSize. If both /// the File Name and Comment fields are UTF-8, the new General Purpose /// Bit Flag, bit 11 (Language encoding flag (EFS)), can be used to /// indicate that both the header File Name and Comment fields are UTF-8 /// and, in this case, the Unicode Path and Unicode Comment extra fields /// are not needed and SHOULD NOT be created. Note that, for backward /// compatibility, bit 11 SHOULD only be used if the native character set /// of the paths and comments being zipped up are already in UTF-8. It is /// expected that the same file name storage method, either general /// purpose bit 11 or extra fields, be used in both the Local and Central /// Directory Header for a file. /// /// Header ID = 0x7075 /// public class InfoZIPUnicodePathExtraField : ExtensibleDataField { /// /// Version of this extra field, currently 1 /// public byte Version { get; set; } /// /// File Name Field CRC32 Checksum /// public uint NameCRC32 { get; set; } /// /// UTF-8 version of the entry File Name /// public string UnicodeName { get; set; } = string.Empty; } }