using System; using System.IO; using ICSharpCode.SharpZipLib.Core; namespace ICSharpCode.SharpZipLib.Zip { // Token: 0x02000058 RID: 88 public class ZipEntryFactory : IEntryFactory { // Token: 0x0600036C RID: 876 RVA: 0x000121AC File Offset: 0x000111AC public ZipEntryFactory() { this.nameTransform_ = new ZipNameTransform(); } // Token: 0x0600036D RID: 877 RVA: 0x000121D1 File Offset: 0x000111D1 public ZipEntryFactory(ZipEntryFactory.TimeSetting timeSetting) { this.timeSetting_ = timeSetting; this.nameTransform_ = new ZipNameTransform(); } // Token: 0x0600036E RID: 878 RVA: 0x000121FD File Offset: 0x000111FD public ZipEntryFactory(DateTime time) { this.timeSetting_ = ZipEntryFactory.TimeSetting.Fixed; this.FixedDateTime = time; this.nameTransform_ = new ZipNameTransform(); } // Token: 0x170000C9 RID: 201 // (get) Token: 0x0600036F RID: 879 RVA: 0x00012230 File Offset: 0x00011230 // (set) Token: 0x06000370 RID: 880 RVA: 0x00012238 File Offset: 0x00011238 public INameTransform NameTransform { get { return this.nameTransform_; } set { if (value == null) { this.nameTransform_ = new ZipNameTransform(); return; } this.nameTransform_ = value; } } // Token: 0x170000CA RID: 202 // (get) Token: 0x06000371 RID: 881 RVA: 0x00012250 File Offset: 0x00011250 // (set) Token: 0x06000372 RID: 882 RVA: 0x00012258 File Offset: 0x00011258 public ZipEntryFactory.TimeSetting Setting { get { return this.timeSetting_; } set { this.timeSetting_ = value; } } // Token: 0x170000CB RID: 203 // (get) Token: 0x06000373 RID: 883 RVA: 0x00012261 File Offset: 0x00011261 // (set) Token: 0x06000374 RID: 884 RVA: 0x00012269 File Offset: 0x00011269 public DateTime FixedDateTime { get { return this.fixedDateTime_; } set { if (value.Year < 1970) { throw new ArgumentException("Value is too old to be valid", "value"); } this.fixedDateTime_ = value; } } // Token: 0x170000CC RID: 204 // (get) Token: 0x06000375 RID: 885 RVA: 0x00012290 File Offset: 0x00011290 // (set) Token: 0x06000376 RID: 886 RVA: 0x00012298 File Offset: 0x00011298 public int GetAttributes { get { return this.getAttributes_; } set { this.getAttributes_ = value; } } // Token: 0x170000CD RID: 205 // (get) Token: 0x06000377 RID: 887 RVA: 0x000122A1 File Offset: 0x000112A1 // (set) Token: 0x06000378 RID: 888 RVA: 0x000122A9 File Offset: 0x000112A9 public int SetAttributes { get { return this.setAttributes_; } set { this.setAttributes_ = value; } } // Token: 0x170000CE RID: 206 // (get) Token: 0x06000379 RID: 889 RVA: 0x000122B2 File Offset: 0x000112B2 // (set) Token: 0x0600037A RID: 890 RVA: 0x000122BA File Offset: 0x000112BA public bool IsUnicodeText { get { return this.isUnicodeText_; } set { this.isUnicodeText_ = value; } } // Token: 0x0600037B RID: 891 RVA: 0x000122C3 File Offset: 0x000112C3 public ZipEntry MakeFileEntry(string fileName) { return this.MakeFileEntry(fileName, true); } // Token: 0x0600037C RID: 892 RVA: 0x000122D0 File Offset: 0x000112D0 public ZipEntry MakeFileEntry(string fileName, bool useFileSystem) { ZipEntry zipEntry = new ZipEntry(this.nameTransform_.TransformFile(fileName)); zipEntry.IsUnicodeText = this.isUnicodeText_; int num = 0; bool flag = this.setAttributes_ != 0; FileInfo fileInfo = null; if (useFileSystem) { fileInfo = new FileInfo(fileName); } if (fileInfo != null && fileInfo.Exists) { switch (this.timeSetting_) { case ZipEntryFactory.TimeSetting.LastWriteTime: zipEntry.DateTime = fileInfo.LastWriteTime; break; case ZipEntryFactory.TimeSetting.LastWriteTimeUtc: zipEntry.DateTime = fileInfo.LastWriteTimeUtc; break; case ZipEntryFactory.TimeSetting.CreateTime: zipEntry.DateTime = fileInfo.CreationTime; break; case ZipEntryFactory.TimeSetting.CreateTimeUtc: zipEntry.DateTime = fileInfo.CreationTimeUtc; break; case ZipEntryFactory.TimeSetting.LastAccessTime: zipEntry.DateTime = fileInfo.LastAccessTime; break; case ZipEntryFactory.TimeSetting.LastAccessTimeUtc: zipEntry.DateTime = fileInfo.LastAccessTimeUtc; break; case ZipEntryFactory.TimeSetting.Fixed: zipEntry.DateTime = this.fixedDateTime_; break; default: throw new ZipException("Unhandled time setting in MakeFileEntry"); } zipEntry.Size = fileInfo.Length; flag = true; num = (int)(fileInfo.Attributes & (FileAttributes)this.getAttributes_); } else if (this.timeSetting_ == ZipEntryFactory.TimeSetting.Fixed) { zipEntry.DateTime = this.fixedDateTime_; } if (flag) { num |= this.setAttributes_; zipEntry.ExternalFileAttributes = num; } return zipEntry; } // Token: 0x0600037D RID: 893 RVA: 0x00012408 File Offset: 0x00011408 public ZipEntry MakeDirectoryEntry(string directoryName) { return this.MakeDirectoryEntry(directoryName, true); } // Token: 0x0600037E RID: 894 RVA: 0x00012414 File Offset: 0x00011414 public ZipEntry MakeDirectoryEntry(string directoryName, bool useFileSystem) { ZipEntry zipEntry = new ZipEntry(this.nameTransform_.TransformDirectory(directoryName)); zipEntry.IsUnicodeText = this.isUnicodeText_; zipEntry.Size = 0L; int num = 0; DirectoryInfo directoryInfo = null; if (useFileSystem) { directoryInfo = new DirectoryInfo(directoryName); } if (directoryInfo != null && directoryInfo.Exists) { switch (this.timeSetting_) { case ZipEntryFactory.TimeSetting.LastWriteTime: zipEntry.DateTime = directoryInfo.LastWriteTime; break; case ZipEntryFactory.TimeSetting.LastWriteTimeUtc: zipEntry.DateTime = directoryInfo.LastWriteTimeUtc; break; case ZipEntryFactory.TimeSetting.CreateTime: zipEntry.DateTime = directoryInfo.CreationTime; break; case ZipEntryFactory.TimeSetting.CreateTimeUtc: zipEntry.DateTime = directoryInfo.CreationTimeUtc; break; case ZipEntryFactory.TimeSetting.LastAccessTime: zipEntry.DateTime = directoryInfo.LastAccessTime; break; case ZipEntryFactory.TimeSetting.LastAccessTimeUtc: zipEntry.DateTime = directoryInfo.LastAccessTimeUtc; break; case ZipEntryFactory.TimeSetting.Fixed: zipEntry.DateTime = this.fixedDateTime_; break; default: throw new ZipException("Unhandled time setting in MakeDirectoryEntry"); } num = (int)(directoryInfo.Attributes & (FileAttributes)this.getAttributes_); } else if (this.timeSetting_ == ZipEntryFactory.TimeSetting.Fixed) { zipEntry.DateTime = this.fixedDateTime_; } num |= this.setAttributes_ | 16; zipEntry.ExternalFileAttributes = num; return zipEntry; } // Token: 0x040002A0 RID: 672 private INameTransform nameTransform_; // Token: 0x040002A1 RID: 673 private DateTime fixedDateTime_ = DateTime.Now; // Token: 0x040002A2 RID: 674 private ZipEntryFactory.TimeSetting timeSetting_; // Token: 0x040002A3 RID: 675 private bool isUnicodeText_; // Token: 0x040002A4 RID: 676 private int getAttributes_ = -1; // Token: 0x040002A5 RID: 677 private int setAttributes_; // Token: 0x02000059 RID: 89 public enum TimeSetting { // Token: 0x040002A7 RID: 679 LastWriteTime, // Token: 0x040002A8 RID: 680 LastWriteTimeUtc, // Token: 0x040002A9 RID: 681 CreateTime, // Token: 0x040002AA RID: 682 CreateTimeUtc, // Token: 0x040002AB RID: 683 LastAccessTime, // Token: 0x040002AC RID: 684 LastAccessTimeUtc, // Token: 0x040002AD RID: 685 Fixed } } }