MCPcopy Create free account
hub / github.com/abbeycode/UnrarKit / Read

Method Read

Libraries/unrar/rawread.cpp:26–63  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

24
25
26size_t RawRead::Read(size_t Size)
27{
28 size_t ReadSize=0;
29#if !defined(RAR_NOCRYPT)
30 if (Crypt!=NULL)
31 {
32 // Full size of buffer with already read data including data read
33 // for encryption block alignment.
34 size_t FullSize=Data.Size();
35
36 // Data read for alignment and not processed yet.
37 size_t DataLeft=FullSize-DataSize;
38
39 if (Size>DataLeft) // Need to read more than we already have.
40 {
41 size_t SizeToRead=Size-DataLeft;
42 size_t AlignedReadSize=SizeToRead+((~SizeToRead+1) & CRYPT_BLOCK_MASK);
43 Data.Add(AlignedReadSize);
44 ReadSize=SrcFile->Read(&Data[FullSize],AlignedReadSize);
45 Crypt->DecryptBlock(&Data[FullSize],AlignedReadSize);
46 DataSize+=ReadSize==0 ? 0:Size;
47 }
48 else // Use buffered data, no real read.
49 {
50 ReadSize=Size;
51 DataSize+=Size;
52 }
53 }
54 else
55#endif
56 if (Size!=0)
57 {
58 Data.Add(Size);
59 ReadSize=SrcFile->Read(&Data[DataSize],Size);
60 DataSize+=ReadSize;
61 }
62 return ReadSize;
63}
64
65
66void RawRead::Read(byte *SrcData,size_t Size)

Callers

nothing calls this directly

Calls 3

AddMethod · 0.80
DecryptBlockMethod · 0.80
SizeMethod · 0.45

Tested by

no test coverage detected