Exemple #1
0
        // 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;
        }
Exemple #2
0
        // 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);
        }
Exemple #3
0
        // 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);
        }