scripts
This commit is contained in:
@@ -0,0 +1,162 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
|
||||
namespace ICSharpCode.SharpZipLib.Zip
|
||||
{
|
||||
// Token: 0x02000078 RID: 120
|
||||
public class DiskArchiveStorage : BaseArchiveStorage
|
||||
{
|
||||
// Token: 0x06000491 RID: 1169 RVA: 0x00016948 File Offset: 0x00015948
|
||||
public DiskArchiveStorage(ZipFile file, FileUpdateMode updateMode)
|
||||
: base(updateMode)
|
||||
{
|
||||
if (file.Name == null)
|
||||
{
|
||||
throw new ZipException("Cant handle non file archives");
|
||||
}
|
||||
this.fileName_ = file.Name;
|
||||
}
|
||||
|
||||
// Token: 0x06000492 RID: 1170 RVA: 0x00016970 File Offset: 0x00015970
|
||||
public DiskArchiveStorage(ZipFile file)
|
||||
: this(file, FileUpdateMode.Safe)
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x06000493 RID: 1171 RVA: 0x0001697C File Offset: 0x0001597C
|
||||
public override Stream GetTemporaryOutput()
|
||||
{
|
||||
if (this.temporaryName_ != null)
|
||||
{
|
||||
this.temporaryName_ = DiskArchiveStorage.GetTempFileName(this.temporaryName_, true);
|
||||
this.temporaryStream_ = File.Open(this.temporaryName_, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.temporaryName_ = Path.GetTempFileName();
|
||||
this.temporaryStream_ = File.Open(this.temporaryName_, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None);
|
||||
}
|
||||
return this.temporaryStream_;
|
||||
}
|
||||
|
||||
// Token: 0x06000494 RID: 1172 RVA: 0x000169E0 File Offset: 0x000159E0
|
||||
public override Stream ConvertTemporaryToFinal()
|
||||
{
|
||||
if (this.temporaryStream_ == null)
|
||||
{
|
||||
throw new ZipException("No temporary stream has been created");
|
||||
}
|
||||
Stream stream = null;
|
||||
string tempFileName = DiskArchiveStorage.GetTempFileName(this.fileName_, false);
|
||||
bool flag = false;
|
||||
try
|
||||
{
|
||||
this.temporaryStream_.Close();
|
||||
File.Move(this.fileName_, tempFileName);
|
||||
File.Move(this.temporaryName_, this.fileName_);
|
||||
flag = true;
|
||||
File.Delete(tempFileName);
|
||||
stream = File.Open(this.fileName_, FileMode.Open, FileAccess.Read, FileShare.Read);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
stream = null;
|
||||
if (!flag)
|
||||
{
|
||||
File.Move(tempFileName, this.fileName_);
|
||||
File.Delete(this.temporaryName_);
|
||||
}
|
||||
throw;
|
||||
}
|
||||
return stream;
|
||||
}
|
||||
|
||||
// Token: 0x06000495 RID: 1173 RVA: 0x00016A84 File Offset: 0x00015A84
|
||||
public override Stream MakeTemporaryCopy(Stream stream)
|
||||
{
|
||||
stream.Close();
|
||||
this.temporaryName_ = DiskArchiveStorage.GetTempFileName(this.fileName_, true);
|
||||
File.Copy(this.fileName_, this.temporaryName_, true);
|
||||
this.temporaryStream_ = new FileStream(this.temporaryName_, FileMode.Open, FileAccess.ReadWrite);
|
||||
return this.temporaryStream_;
|
||||
}
|
||||
|
||||
// Token: 0x06000496 RID: 1174 RVA: 0x00016AD4 File Offset: 0x00015AD4
|
||||
public override Stream OpenForDirectUpdate(Stream stream)
|
||||
{
|
||||
Stream stream2;
|
||||
if (stream == null || !stream.CanWrite)
|
||||
{
|
||||
if (stream != null)
|
||||
{
|
||||
stream.Close();
|
||||
}
|
||||
stream2 = new FileStream(this.fileName_, FileMode.Open, FileAccess.ReadWrite);
|
||||
}
|
||||
else
|
||||
{
|
||||
stream2 = stream;
|
||||
}
|
||||
return stream2;
|
||||
}
|
||||
|
||||
// Token: 0x06000497 RID: 1175 RVA: 0x00016B08 File Offset: 0x00015B08
|
||||
public override void Dispose()
|
||||
{
|
||||
if (this.temporaryStream_ != null)
|
||||
{
|
||||
this.temporaryStream_.Close();
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06000498 RID: 1176 RVA: 0x00016B20 File Offset: 0x00015B20
|
||||
private static string GetTempFileName(string original, bool makeTempFile)
|
||||
{
|
||||
string text = null;
|
||||
if (original == null)
|
||||
{
|
||||
text = Path.GetTempFileName();
|
||||
}
|
||||
else
|
||||
{
|
||||
int num = 0;
|
||||
int num2 = DateTime.Now.Second;
|
||||
while (text == null)
|
||||
{
|
||||
num++;
|
||||
string text2 = string.Format("{0}.{1}{2}.tmp", original, num2, num);
|
||||
if (!File.Exists(text2))
|
||||
{
|
||||
if (makeTempFile)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (File.Create(text2))
|
||||
{
|
||||
}
|
||||
text = text2;
|
||||
continue;
|
||||
}
|
||||
catch
|
||||
{
|
||||
num2 = DateTime.Now.Second;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
text = text2;
|
||||
}
|
||||
}
|
||||
}
|
||||
return text;
|
||||
}
|
||||
|
||||
// Token: 0x0400030A RID: 778
|
||||
private Stream temporaryStream_;
|
||||
|
||||
// Token: 0x0400030B RID: 779
|
||||
private string fileName_;
|
||||
|
||||
// Token: 0x0400030C RID: 780
|
||||
private string temporaryName_;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user