Ejemplo n.º 1
0
        public void LinuxTime(long?mTime, long?aTime, long?cTime, bool centralDir)
        {
            List <byte> eTime = new();
            byte        flags = 0;

            if (mTime != null)
            {
                flags |= 0x01;
                eTime.AddRange(BitConverter.GetBytes(CompressUtils.UtcTicksToUnixDateTime((long)mTime)));
            }

            if (!centralDir)
            {
                if (aTime != null)
                {
                    flags |= 0x02;
                    eTime.AddRange(BitConverter.GetBytes(CompressUtils.UtcTicksToUnixDateTime((long)aTime)));
                }
                if (cTime != null)
                {
                    flags |= 0x04;
                    eTime.AddRange(BitConverter.GetBytes(CompressUtils.UtcTicksToUnixDateTime((long)cTime)));
                }
            }

            if (flags == 0)
            {
                return;
            }

            _extraField.AddRange(BitConverter.GetBytes((ushort)0x5455));
            _extraField.AddRange(BitConverter.GetBytes((ushort)eTime.Count + 1));

            _extraField.Add(flags);
            _extraField.AddRange(eTime);
        }