This commit is contained in:
niko
2026-06-04 11:42:34 +02:00
parent f39ba70a9f
commit e720b98cd1
7488 changed files with 2493818 additions and 0 deletions
@@ -0,0 +1,326 @@
using System;
using System.IO;
namespace ICSharpCode.SharpZipLib.Tar
{
// Token: 0x0200003B RID: 59
public class TarOutputStream : Stream
{
// Token: 0x06000238 RID: 568 RVA: 0x0000BEBE File Offset: 0x0000AEBE
public TarOutputStream(Stream outputStream)
: this(outputStream, 20)
{
}
// Token: 0x06000239 RID: 569 RVA: 0x0000BECC File Offset: 0x0000AECC
public TarOutputStream(Stream outputStream, int blockFactor)
{
if (outputStream == null)
{
throw new ArgumentNullException("outputStream");
}
this.outputStream = outputStream;
this.buffer = TarBuffer.CreateOutputTarBuffer(outputStream, blockFactor);
this.assemblyBuffer = new byte[512];
this.blockBuffer = new byte[512];
}
// Token: 0x1700007B RID: 123
// (get) Token: 0x0600023A RID: 570 RVA: 0x0000BF21 File Offset: 0x0000AF21
// (set) Token: 0x0600023B RID: 571 RVA: 0x0000BF2E File Offset: 0x0000AF2E
public bool IsStreamOwner
{
get
{
return this.buffer.IsStreamOwner;
}
set
{
this.buffer.IsStreamOwner = value;
}
}
// Token: 0x1700007C RID: 124
// (get) Token: 0x0600023C RID: 572 RVA: 0x0000BF3C File Offset: 0x0000AF3C
public override bool CanRead
{
get
{
return this.outputStream.CanRead;
}
}
// Token: 0x1700007D RID: 125
// (get) Token: 0x0600023D RID: 573 RVA: 0x0000BF49 File Offset: 0x0000AF49
public override bool CanSeek
{
get
{
return this.outputStream.CanSeek;
}
}
// Token: 0x1700007E RID: 126
// (get) Token: 0x0600023E RID: 574 RVA: 0x0000BF56 File Offset: 0x0000AF56
public override bool CanWrite
{
get
{
return this.outputStream.CanWrite;
}
}
// Token: 0x1700007F RID: 127
// (get) Token: 0x0600023F RID: 575 RVA: 0x0000BF63 File Offset: 0x0000AF63
public override long Length
{
get
{
return this.outputStream.Length;
}
}
// Token: 0x17000080 RID: 128
// (get) Token: 0x06000240 RID: 576 RVA: 0x0000BF70 File Offset: 0x0000AF70
// (set) Token: 0x06000241 RID: 577 RVA: 0x0000BF7D File Offset: 0x0000AF7D
public override long Position
{
get
{
return this.outputStream.Position;
}
set
{
this.outputStream.Position = value;
}
}
// Token: 0x06000242 RID: 578 RVA: 0x0000BF8B File Offset: 0x0000AF8B
public override long Seek(long offset, SeekOrigin origin)
{
return this.outputStream.Seek(offset, origin);
}
// Token: 0x06000243 RID: 579 RVA: 0x0000BF9A File Offset: 0x0000AF9A
public override void SetLength(long value)
{
this.outputStream.SetLength(value);
}
// Token: 0x06000244 RID: 580 RVA: 0x0000BFA8 File Offset: 0x0000AFA8
public override int ReadByte()
{
return this.outputStream.ReadByte();
}
// Token: 0x06000245 RID: 581 RVA: 0x0000BFB5 File Offset: 0x0000AFB5
public override int Read(byte[] buffer, int offset, int count)
{
return this.outputStream.Read(buffer, offset, count);
}
// Token: 0x06000246 RID: 582 RVA: 0x0000BFC5 File Offset: 0x0000AFC5
public override void Flush()
{
this.outputStream.Flush();
}
// Token: 0x06000247 RID: 583 RVA: 0x0000BFD2 File Offset: 0x0000AFD2
public void Finish()
{
if (this.IsEntryOpen)
{
this.CloseEntry();
}
this.WriteEofBlock();
}
// Token: 0x06000248 RID: 584 RVA: 0x0000BFE8 File Offset: 0x0000AFE8
public override void Close()
{
if (!this.isClosed)
{
this.isClosed = true;
this.Finish();
this.buffer.Close();
}
}
// Token: 0x17000081 RID: 129
// (get) Token: 0x06000249 RID: 585 RVA: 0x0000C00A File Offset: 0x0000B00A
public int RecordSize
{
get
{
return this.buffer.RecordSize;
}
}
// Token: 0x0600024A RID: 586 RVA: 0x0000C017 File Offset: 0x0000B017
[Obsolete("Use RecordSize property instead")]
public int GetRecordSize()
{
return this.buffer.RecordSize;
}
// Token: 0x17000082 RID: 130
// (get) Token: 0x0600024B RID: 587 RVA: 0x0000C024 File Offset: 0x0000B024
private bool IsEntryOpen
{
get
{
return this.currBytes < this.currSize;
}
}
// Token: 0x0600024C RID: 588 RVA: 0x0000C034 File Offset: 0x0000B034
public void PutNextEntry(TarEntry entry)
{
if (entry == null)
{
throw new ArgumentNullException("entry");
}
if (entry.TarHeader.Name.Length >= 100)
{
TarHeader tarHeader = new TarHeader();
tarHeader.TypeFlag = 76;
tarHeader.Name += "././@LongLink";
tarHeader.UserId = 0;
tarHeader.GroupId = 0;
tarHeader.GroupName = "";
tarHeader.UserName = "";
tarHeader.LinkName = "";
tarHeader.Size = (long)entry.TarHeader.Name.Length;
tarHeader.WriteHeader(this.blockBuffer);
this.buffer.WriteBlock(this.blockBuffer);
int i = 0;
while (i < entry.TarHeader.Name.Length)
{
Array.Clear(this.blockBuffer, 0, this.blockBuffer.Length);
TarHeader.GetAsciiBytes(entry.TarHeader.Name, i, this.blockBuffer, 0, 512);
i += 512;
this.buffer.WriteBlock(this.blockBuffer);
}
}
entry.WriteEntryHeader(this.blockBuffer);
this.buffer.WriteBlock(this.blockBuffer);
this.currBytes = 0L;
this.currSize = (entry.IsDirectory ? 0L : entry.Size);
}
// Token: 0x0600024D RID: 589 RVA: 0x0000C18C File Offset: 0x0000B18C
public void CloseEntry()
{
if (this.assemblyBufferLength > 0)
{
Array.Clear(this.assemblyBuffer, this.assemblyBufferLength, this.assemblyBuffer.Length - this.assemblyBufferLength);
this.buffer.WriteBlock(this.assemblyBuffer);
this.currBytes += (long)this.assemblyBufferLength;
this.assemblyBufferLength = 0;
}
if (this.currBytes < this.currSize)
{
string text = string.Format("Entry closed at '{0}' before the '{1}' bytes specified in the header were written", this.currBytes, this.currSize);
throw new TarException(text);
}
}
// Token: 0x0600024E RID: 590 RVA: 0x0000C224 File Offset: 0x0000B224
public override void WriteByte(byte value)
{
this.Write(new byte[] { value }, 0, 1);
}
// Token: 0x0600024F RID: 591 RVA: 0x0000C248 File Offset: 0x0000B248
public override void Write(byte[] buffer, int offset, int count)
{
if (buffer == null)
{
throw new ArgumentNullException("buffer");
}
if (offset < 0)
{
throw new ArgumentOutOfRangeException("offset", "Cannot be negative");
}
if (buffer.Length - offset < count)
{
throw new ArgumentException("offset and count combination is invalid");
}
if (count < 0)
{
throw new ArgumentOutOfRangeException("count", "Cannot be negative");
}
if (this.currBytes + (long)count > this.currSize)
{
string text = string.Format("request to write '{0}' bytes exceeds size in header of '{1}' bytes", count, this.currSize);
throw new ArgumentOutOfRangeException("count", text);
}
if (this.assemblyBufferLength > 0)
{
if (this.assemblyBufferLength + count >= this.blockBuffer.Length)
{
int num = this.blockBuffer.Length - this.assemblyBufferLength;
Array.Copy(this.assemblyBuffer, 0, this.blockBuffer, 0, this.assemblyBufferLength);
Array.Copy(buffer, offset, this.blockBuffer, this.assemblyBufferLength, num);
this.buffer.WriteBlock(this.blockBuffer);
this.currBytes += (long)this.blockBuffer.Length;
offset += num;
count -= num;
this.assemblyBufferLength = 0;
}
else
{
Array.Copy(buffer, offset, this.assemblyBuffer, this.assemblyBufferLength, count);
offset += count;
this.assemblyBufferLength += count;
count -= count;
}
}
while (count > 0)
{
if (count < this.blockBuffer.Length)
{
Array.Copy(buffer, offset, this.assemblyBuffer, this.assemblyBufferLength, count);
this.assemblyBufferLength += count;
return;
}
this.buffer.WriteBlock(buffer, offset);
int num2 = this.blockBuffer.Length;
this.currBytes += (long)num2;
count -= num2;
offset += num2;
}
}
// Token: 0x06000250 RID: 592 RVA: 0x0000C3FE File Offset: 0x0000B3FE
private void WriteEofBlock()
{
Array.Clear(this.blockBuffer, 0, this.blockBuffer.Length);
this.buffer.WriteBlock(this.blockBuffer);
}
// Token: 0x04000140 RID: 320
private long currBytes;
// Token: 0x04000141 RID: 321
private int assemblyBufferLength;
// Token: 0x04000142 RID: 322
private bool isClosed;
// Token: 0x04000143 RID: 323
protected long currSize;
// Token: 0x04000144 RID: 324
protected byte[] blockBuffer;
// Token: 0x04000145 RID: 325
protected byte[] assemblyBuffer;
// Token: 0x04000146 RID: 326
protected TarBuffer buffer;
// Token: 0x04000147 RID: 327
protected Stream outputStream;
}
}