using System; using System.IO; namespace ICSharpCode.SharpZipLib.Zip { // Token: 0x0200005D RID: 93 public class ExtendedUnixData : ITaggedData { // Token: 0x170000D2 RID: 210 // (get) Token: 0x0600038D RID: 909 RVA: 0x000125C0 File Offset: 0x000115C0 public short TagID { get { return 21589; } } // Token: 0x0600038E RID: 910 RVA: 0x000125C8 File Offset: 0x000115C8 public void SetData(byte[] data, int index, int count) { using (MemoryStream memoryStream = new MemoryStream(data, index, count, false)) { using (ZipHelperStream zipHelperStream = new ZipHelperStream(memoryStream)) { this._flags = (ExtendedUnixData.Flags)zipHelperStream.ReadByte(); if ((byte)(this._flags & ExtendedUnixData.Flags.ModificationTime) != 0 && count >= 5) { int num = zipHelperStream.ReadLEInt(); this._modificationTime = (new DateTime(1970, 1, 1, 0, 0, 0).ToUniversalTime() + new TimeSpan(0, 0, 0, num, 0)).ToLocalTime(); } if ((byte)(this._flags & ExtendedUnixData.Flags.AccessTime) != 0) { int num2 = zipHelperStream.ReadLEInt(); this._lastAccessTime = (new DateTime(1970, 1, 1, 0, 0, 0).ToUniversalTime() + new TimeSpan(0, 0, 0, num2, 0)).ToLocalTime(); } if ((byte)(this._flags & ExtendedUnixData.Flags.CreateTime) != 0) { int num3 = zipHelperStream.ReadLEInt(); this._createTime = (new DateTime(1970, 1, 1, 0, 0, 0).ToUniversalTime() + new TimeSpan(0, 0, 0, num3, 0)).ToLocalTime(); } } } } // Token: 0x0600038F RID: 911 RVA: 0x00012720 File Offset: 0x00011720 public byte[] GetData() { byte[] array; using (MemoryStream memoryStream = new MemoryStream()) { using (ZipHelperStream zipHelperStream = new ZipHelperStream(memoryStream)) { zipHelperStream.IsStreamOwner = false; zipHelperStream.WriteByte((byte)this._flags); if ((byte)(this._flags & ExtendedUnixData.Flags.ModificationTime) != 0) { int num = (int)(this._modificationTime.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0).ToUniversalTime()).TotalSeconds; zipHelperStream.WriteLEInt(num); } if ((byte)(this._flags & ExtendedUnixData.Flags.AccessTime) != 0) { int num2 = (int)(this._lastAccessTime.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0).ToUniversalTime()).TotalSeconds; zipHelperStream.WriteLEInt(num2); } if ((byte)(this._flags & ExtendedUnixData.Flags.CreateTime) != 0) { int num3 = (int)(this._createTime.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0).ToUniversalTime()).TotalSeconds; zipHelperStream.WriteLEInt(num3); } array = memoryStream.ToArray(); } } return array; } // Token: 0x06000390 RID: 912 RVA: 0x00012874 File Offset: 0x00011874 public static bool IsValidValue(DateTime value) { return value >= new DateTime(1901, 12, 13, 20, 45, 52) || value <= new DateTime(2038, 1, 19, 3, 14, 7); } // Token: 0x170000D3 RID: 211 // (get) Token: 0x06000391 RID: 913 RVA: 0x000128AB File Offset: 0x000118AB // (set) Token: 0x06000392 RID: 914 RVA: 0x000128B3 File Offset: 0x000118B3 public DateTime ModificationTime { get { return this._modificationTime; } set { if (!ExtendedUnixData.IsValidValue(value)) { throw new ArgumentOutOfRangeException("value"); } this._flags |= ExtendedUnixData.Flags.ModificationTime; this._modificationTime = value; } } // Token: 0x170000D4 RID: 212 // (get) Token: 0x06000393 RID: 915 RVA: 0x000128DE File Offset: 0x000118DE // (set) Token: 0x06000394 RID: 916 RVA: 0x000128E6 File Offset: 0x000118E6 public DateTime AccessTime { get { return this._lastAccessTime; } set { if (!ExtendedUnixData.IsValidValue(value)) { throw new ArgumentOutOfRangeException("value"); } this._flags |= ExtendedUnixData.Flags.AccessTime; this._lastAccessTime = value; } } // Token: 0x170000D5 RID: 213 // (get) Token: 0x06000395 RID: 917 RVA: 0x00012911 File Offset: 0x00011911 // (set) Token: 0x06000396 RID: 918 RVA: 0x00012919 File Offset: 0x00011919 public DateTime CreateTime { get { return this._createTime; } set { if (!ExtendedUnixData.IsValidValue(value)) { throw new ArgumentOutOfRangeException("value"); } this._flags |= ExtendedUnixData.Flags.CreateTime; this._createTime = value; } } // Token: 0x170000D6 RID: 214 // (get) Token: 0x06000397 RID: 919 RVA: 0x00012944 File Offset: 0x00011944 // (set) Token: 0x06000398 RID: 920 RVA: 0x0001294C File Offset: 0x0001194C private ExtendedUnixData.Flags Include { get { return this._flags; } set { this._flags = value; } } // Token: 0x040002B0 RID: 688 private ExtendedUnixData.Flags _flags; // Token: 0x040002B1 RID: 689 private DateTime _modificationTime = new DateTime(1970, 1, 1); // Token: 0x040002B2 RID: 690 private DateTime _lastAccessTime = new DateTime(1970, 1, 1); // Token: 0x040002B3 RID: 691 private DateTime _createTime = new DateTime(1970, 1, 1); // Token: 0x0200005E RID: 94 [Flags] public enum Flags : byte { // Token: 0x040002B5 RID: 693 ModificationTime = 1, // Token: 0x040002B6 RID: 694 AccessTime = 2, // Token: 0x040002B7 RID: 695 CreateTime = 4 } } }