Files
Dec2017-Script-Dump/ICSharpCode.SharpZipLib/Zip/ZipEntryFactory.cs
T
2026-06-04 11:42:34 +02:00

287 lines
7.6 KiB
C#

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
}
}
}