287 lines
7.6 KiB
C#
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
|
|
}
|
|
}
|
|
}
|