// Initializes the name, mode and type flag of a PAX extended attributes entry. private void WriteAsPaxExtendedAttributesShared(bool isGea, int globalExtendedAttributesEntryNumber) { Debug.Assert(isGea && globalExtendedAttributesEntryNumber >= 0 || !isGea && globalExtendedAttributesEntryNumber < 0); _name = isGea ? GenerateGlobalExtendedAttributeName(globalExtendedAttributesEntryNumber) : GenerateExtendedAttributeName(); _mode = TarHelpers.GetDefaultMode(_typeFlag); _typeFlag = isGea ? TarEntryType.GlobalExtendedAttributes : TarEntryType.ExtendedAttributes; }
// Constructor called when the user creates a TarEntry instance from scratch. internal TarEntry(TarEntryType entryType, string entryName, TarEntryFormat format, bool isGea) { ArgumentException.ThrowIfNullOrEmpty(entryName); Debug.Assert(!isGea || entryType is TarEntryType.GlobalExtendedAttributes); if (!isGea) { TarHelpers.ThrowIfEntryTypeNotSupported(entryType, format); } // Default values for fields shared by all supported formats _header = new TarHeader(format, entryName, TarHelpers.GetDefaultMode(entryType), DateTimeOffset.UtcNow, entryType); }
// Constructs a GNU metadata header with default values for the specified entry type. private static TarHeader GetDefaultGnuLongMetadataHeader(int longTextLength, TarEntryType entryType) { Debug.Assert((entryType is TarEntryType.LongPath && longTextLength > FieldLengths.Name) || (entryType is TarEntryType.LongLink && longTextLength > FieldLengths.LinkName)); TarHeader longMetadataHeader = new(TarEntryFormat.Gnu); longMetadataHeader._name = GnuLongMetadataName; // Same name for both longpath or longlink longMetadataHeader._mode = TarHelpers.GetDefaultMode(entryType); longMetadataHeader._uid = 0; longMetadataHeader._gid = 0; longMetadataHeader._mTime = DateTimeOffset.MinValue; // 0 longMetadataHeader._typeFlag = entryType; longMetadataHeader._dataStream = new MemoryStream(); return(longMetadataHeader); }