BCM WL 6.30.102.9 (r366174)
[tomato.git] / release / src-rt / linux / linux-2.6 / scripts / squashfs / lzma / C / 7zip / Common / StreamUtils.cpp
blob712a78585aa0e4f64a4f05577ea37ec9eb6f398c
1 // StreamUtils.cpp
3 #include "StdAfx.h"
5 #include "../../Common/MyCom.h"
6 #include "StreamUtils.h"
8 HRESULT ReadStream(ISequentialInStream *stream, void *data, UInt32 size, UInt32 *processedSize)
10 if (processedSize != 0)
11 *processedSize = 0;
12 while(size != 0)
14 UInt32 processedSizeLoc;
15 HRESULT res = stream->Read(data, size, &processedSizeLoc);
16 if (processedSize != 0)
17 *processedSize += processedSizeLoc;
18 data = (Byte *)((Byte *)data + processedSizeLoc);
19 size -= processedSizeLoc;
20 RINOK(res);
21 if (processedSizeLoc == 0)
22 return S_OK;
24 return S_OK;
27 HRESULT WriteStream(ISequentialOutStream *stream, const void *data, UInt32 size, UInt32 *processedSize)
29 if (processedSize != 0)
30 *processedSize = 0;
31 while(size != 0)
33 UInt32 processedSizeLoc;
34 HRESULT res = stream->Write(data, size, &processedSizeLoc);
35 if (processedSize != 0)
36 *processedSize += processedSizeLoc;
37 data = (const void *)((const Byte *)data + processedSizeLoc);
38 size -= processedSizeLoc;
39 RINOK(res);
40 if (processedSizeLoc == 0)
41 break;
43 return S_OK;