xref: /third_party/lzma/CPP/7zip/Archive/Common/InStreamWithCRC.cpp (revision 370b324c)
  • Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
  • only in /third_party/lzma/CPP/7zip/Archive/Common/
1// InStreamWithCRC.cpp
2
3#include "StdAfx.h"
4
5#include "InStreamWithCRC.h"
6
7Z7_COM7F_IMF(CSequentialInStreamWithCRC::Read(void *data, UInt32 size, UInt32 *processedSize))
8{
9  UInt32 realProcessed = 0;
10  HRESULT result = S_OK;
11  if (size != 0)
12  {
13    if (_stream)
14      result = _stream->Read(data, size, &realProcessed);
15    _size += realProcessed;
16    if (realProcessed == 0)
17      _wasFinished = true;
18    else
19      _crc = CrcUpdate(_crc, data, realProcessed);
20  }
21  if (processedSize)
22    *processedSize = realProcessed;
23  return result;
24}
25
26Z7_COM7F_IMF(CSequentialInStreamWithCRC::GetSize(UInt64 *size))
27{
28  *size = _fullSize;
29  return S_OK;
30}
31
32
33Z7_COM7F_IMF(CInStreamWithCRC::Read(void *data, UInt32 size, UInt32 *processedSize))
34{
35  UInt32 realProcessed = 0;
36  HRESULT result = S_OK;
37  if (_stream)
38    result = _stream->Read(data, size, &realProcessed);
39  _size += realProcessed;
40  /*
41  if (size != 0 && realProcessed == 0)
42    _wasFinished = true;
43  */
44  _crc = CrcUpdate(_crc, data, realProcessed);
45  if (processedSize)
46    *processedSize = realProcessed;
47  return result;
48}
49
50Z7_COM7F_IMF(CInStreamWithCRC::Seek(Int64 offset, UInt32 seekOrigin, UInt64 *newPosition))
51{
52  if (seekOrigin != STREAM_SEEK_SET || offset != 0)
53    return E_FAIL;
54  _size = 0;
55  _crc = CRC_INIT_VAL;
56  return _stream->Seek(offset, seekOrigin, newPosition);
57}
58

Indexes created Thu Nov 07 10:32:03 CST 2024