1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- using System;
- using System.Diagnostics;
- using System.IO;
- namespace SharpCompress.Compressors.LZMA.Utilites
- {
- internal enum BlockType : byte
- {
- #region Constants
- End = 0,
- Header = 1,
- ArchiveProperties = 2,
- AdditionalStreamsInfo = 3,
- MainStreamsInfo = 4,
- FilesInfo = 5,
- PackInfo = 6,
- UnpackInfo = 7,
- SubStreamsInfo = 8,
- Size = 9,
- Crc = 10,
- Folder = 11,
- CodersUnpackSize = 12,
- NumUnpackStream = 13,
- EmptyStream = 14,
- EmptyFile = 15,
- Anti = 16,
- Name = 17,
- CTime = 18,
- ATime = 19,
- MTime = 20,
- WinAttributes = 21,
- Comment = 22,
- EncodedHeader = 23,
- StartPos = 24,
- Dummy = 25
- #endregion
- }
- internal static class Utils
- {
- [Conditional("DEBUG")]
- public static void Assert(bool expression)
- {
- if (!expression)
- {
- if (Debugger.IsAttached)
- {
- Debugger.Break();
- }
- throw new Exception("Assertion failed.");
- }
- }
- public static void ReadExact(this Stream stream, byte[] buffer, int offset, int length)
- {
- if (stream == null)
- {
- throw new ArgumentNullException(nameof(stream));
- }
- if (buffer == null)
- {
- throw new ArgumentNullException(nameof(buffer));
- }
- if (offset < 0 || offset > buffer.Length)
- {
- throw new ArgumentOutOfRangeException(nameof(offset));
- }
- if (length < 0 || length > buffer.Length - offset)
- {
- throw new ArgumentOutOfRangeException(nameof(length));
- }
- while (length > 0)
- {
- int fetched = stream.Read(buffer, offset, length);
- if (fetched <= 0)
- {
- throw new EndOfStreamException();
- }
- offset += fetched;
- length -= fetched;
- }
- }
- }
- }
|