1 diff -Nur lzma432/C/7zip/Compress/LZMA_Lib/makefile lzma432-owrt/C/7zip/Compress/LZMA_Lib/makefile
2 --- lzma432/C/7zip/Compress/LZMA_Lib/makefile 1970-01-01 01:00:00.000000000 +0100
3 +++ lzma432-owrt/C/7zip/Compress/LZMA_Lib/makefile 2006-03-22 14:23:38.000000000 +0100
23 + CommandLineParser.o \
\r
34 + $(AR) r $(PROG) $(OBJS)
\r
37 + $(CXX) $(CFLAGS) ZLib.cpp
\r
39 +LZMADecoder.o: ../LZMA/LZMADecoder.cpp
\r
40 + $(CXX) $(CFLAGS) ../LZMA/LZMADecoder.cpp
\r
42 +LZMAEncoder.o: ../LZMA/LZMAEncoder.cpp
\r
43 + $(CXX) $(CFLAGS) ../LZMA/LZMAEncoder.cpp
\r
45 +LZInWindow.o: ../LZ/LZInWindow.cpp
\r
46 + $(CXX) $(CFLAGS) ../LZ/LZInWindow.cpp
\r
48 +LZOutWindow.o: ../LZ/LZOutWindow.cpp
\r
49 + $(CXX) $(CFLAGS) ../LZ/LZOutWindow.cpp
\r
51 +RangeCoderBit.o: ../RangeCoder/RangeCoderBit.cpp
\r
52 + $(CXX) $(CFLAGS) ../RangeCoder/RangeCoderBit.cpp
\r
54 +InBuffer.o: ../../Common/InBuffer.cpp
\r
55 + $(CXX) $(CFLAGS) ../../Common/InBuffer.cpp
\r
57 +OutBuffer.o: ../../Common/OutBuffer.cpp
\r
58 + $(CXX) $(CFLAGS) ../../Common/OutBuffer.cpp
\r
60 +FileStreams.o: ../../Common/FileStreams.cpp
\r
61 + $(CXX) $(CFLAGS) ../../Common/FileStreams.cpp
\r
63 +Alloc.o: ../../../Common/Alloc.cpp
\r
64 + $(CXX) $(CFLAGS) ../../../Common/Alloc.cpp
\r
66 +C_FileIO.o: ../../../Common/C_FileIO.cpp
\r
67 + $(CXX) $(CFLAGS) ../../../Common/C_FileIO.cpp
\r
69 +CommandLineParser.o: ../../../Common/CommandLineParser.cpp
\r
70 + $(CXX) $(CFLAGS) ../../../Common/CommandLineParser.cpp
\r
72 +CRC.o: ../../../Common/CRC.cpp
\r
73 + $(CXX) $(CFLAGS) ../../../Common/CRC.cpp
\r
75 +MyWindows.o: ../../../Common/MyWindows.cpp
\r
76 + $(CXX) $(CFLAGS) ../../../Common/MyWindows.cpp
\r
78 +String.o: ../../../Common/String.cpp
\r
79 + $(CXX) $(CFLAGS) ../../../Common/String.cpp
\r
81 +StringConvert.o: ../../../Common/StringConvert.cpp
\r
82 + $(CXX) $(CFLAGS) ../../../Common/StringConvert.cpp
\r
84 +StringToInt.o: ../../../Common/StringToInt.cpp
\r
85 + $(CXX) $(CFLAGS) ../../../Common/StringToInt.cpp
\r
87 +Vector.o: ../../../Common/Vector.cpp
\r
88 + $(CXX) $(CFLAGS) ../../../Common/Vector.cpp
\r
91 + -$(RM) $(PROG) $(OBJS)
\r
93 diff -Nur lzma432/C/7zip/Compress/LZMA_Lib/ZLib.cpp lzma432-owrt/C/7zip/Compress/LZMA_Lib/ZLib.cpp
94 --- lzma432/C/7zip/Compress/LZMA_Lib/ZLib.cpp 1970-01-01 01:00:00.000000000 +0100
95 +++ lzma432-owrt/C/7zip/Compress/LZMA_Lib/ZLib.cpp 2006-03-22 14:23:38.000000000 +0100
98 + * lzma zlib simplified wrapper
\r
100 + * Copyright (c) 2005 Oleg I. Vdovikin <oleg@cs.msu.su>
\r
101 + * Modified for LZMA 4.27 SDK Craig.Peacock@beyondlogic.org
\r
103 + * This library is free software; you can redistribute
\r
104 + * it and/or modify it under the terms of the GNU Lesser
\r
105 + * General Public License as published by the Free Software
\r
106 + * Foundation; either version 2.1 of the License, or
\r
107 + * (at your option) any later version.
\r
109 + * This library is distributed in the hope that it will be
\r
110 + * useful, but WITHOUT ANY WARRANTY; without even the implied
\r
111 + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
\r
112 + * PURPOSE. See the GNU Lesser General Public License
\r
113 + * for more details.
\r
115 + * You should have received a copy of the GNU Lesser General
\r
116 + * Public License along with this library; if not, write to
\r
117 + * the Free Software Foundation, Inc., 59 Temple Place,
\r
118 + * Suite 330, Boston, MA 02111-1307 USA
\r
122 + * default values for encoder/decoder used by wrapper
\r
132 +#include <initguid.h>
\r
137 +#include "../../../Common/MyWindows.h"
\r
138 +#include "../LZMA/LZMADecoder.h"
\r
139 +#include "../LZMA/LZMAEncoder.h"
\r
141 +#define STG_E_SEEKERROR ((HRESULT)0x80030019L)
\r
142 +#define STG_E_MEDIUMFULL ((HRESULT)0x80030070L)
\r
144 +class CInMemoryStream:
\r
145 + public IInStream,
\r
146 + public IStreamGetSize,
\r
147 + public CMyUnknownImp
\r
150 + CInMemoryStream(const Bytef *data, UInt64 size) :
\r
151 + m_data(data), m_size(size), m_offset(0) {}
\r
153 + virtual ~CInMemoryStream() {}
\r
155 + MY_UNKNOWN_IMP2(IInStream, IStreamGetSize)
\r
157 + STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize)
\r
159 + if (size > m_size - m_offset)
\r
160 + size = m_size - m_offset;
\r
163 + memcpy(data, m_data + m_offset, size);
\r
166 + m_offset += size;
\r
168 + if (processedSize)
\r
169 + *processedSize = size;
\r
174 + STDMETHOD(ReadPart)(void *data, UInt32 size, UInt32 *processedSize)
\r
176 + return Read(data, size, processedSize);
\r
179 + STDMETHOD(Seek)(Int64 offset, UInt32 seekOrigin, UInt64 *newPosition)
\r
183 + if (seekOrigin == STREAM_SEEK_SET) _offset = offset;
\r
184 + else if (seekOrigin == STREAM_SEEK_CUR) _offset = m_offset + offset;
\r
185 + else if (seekOrigin == STREAM_SEEK_END) _offset = m_size;
\r
186 + else return STG_E_INVALIDFUNCTION;
\r
188 + if (_offset < 0 || _offset > m_size)
\r
189 + return STG_E_SEEKERROR;
\r
191 + m_offset = _offset;
\r
194 + *newPosition = m_offset;
\r
199 + STDMETHOD(GetSize)(UInt64 *size)
\r
205 + const Bytef *m_data;
\r
210 +class COutMemoryStream:
\r
211 + public IOutStream,
\r
212 + public CMyUnknownImp
\r
215 + COutMemoryStream(Bytef *data, UInt64 maxsize) :
\r
216 + m_data(data), m_size(0), m_maxsize(maxsize), m_offset(0) {}
\r
217 + virtual ~COutMemoryStream() {}
\r
219 + MY_UNKNOWN_IMP1(IOutStream)
\r
221 + STDMETHOD(Write)(const void *data, UInt32 size, UInt32 *processedSize)
\r
223 + if (size > m_maxsize - m_offset)
\r
224 + size = m_maxsize - m_offset;
\r
227 + memcpy(m_data + m_offset, data, size);
\r
230 + m_offset += size;
\r
232 + if (m_offset > m_size)
\r
233 + m_size = m_offset;
\r
235 + if (processedSize)
\r
236 + *processedSize = size;
\r
241 + STDMETHOD(WritePart)(const void *data, UInt32 size, UInt32 *processedSize)
\r
243 + return Write(data, size, processedSize);
\r
246 + STDMETHOD(Seek)(Int64 offset, UInt32 seekOrigin, UInt64 *newPosition)
\r
250 + if (seekOrigin == STREAM_SEEK_SET) _offset = offset;
\r
251 + else if (seekOrigin == STREAM_SEEK_CUR) _offset = m_offset + offset;
\r
252 + else if (seekOrigin == STREAM_SEEK_END) _offset = m_size;
\r
253 + else return STG_E_INVALIDFUNCTION;
\r
255 + if (_offset < 0 || _offset > m_maxsize)
\r
256 + return STG_E_SEEKERROR;
\r
258 + m_offset = _offset;
\r
261 + *newPosition = m_offset;
\r
266 + STDMETHOD(SetSize)(Int64 newSize)
\r
268 + if ((UInt64)newSize > m_maxsize)
\r
269 + return STG_E_MEDIUMFULL;
\r
276 + UInt64 m_maxsize;
\r
280 +ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen,
\r
281 + const Bytef *source, uLong sourceLen,
\r
284 + CInMemoryStream *inStreamSpec = new CInMemoryStream(source, sourceLen);
\r
285 + CMyComPtr<ISequentialInStream> inStream = inStreamSpec;
\r
287 + COutMemoryStream *outStreamSpec = new COutMemoryStream(dest+4, (*destLen)-4);
\r
288 + CMyComPtr<ISequentialOutStream> outStream = outStreamSpec;
\r
290 + NCompress::NLZMA::CEncoder *encoderSpec =
\r
291 + new NCompress::NLZMA::CEncoder;
\r
292 + CMyComPtr<ICompressCoder> encoder = encoderSpec;
\r
294 + PROPID propIDs[] =
\r
296 + NCoderPropID::kDictionarySize,
\r
297 + NCoderPropID::kPosStateBits,
\r
298 + NCoderPropID::kLitContextBits,
\r
299 + NCoderPropID::kLitPosBits,
\r
300 + NCoderPropID::kAlgorithm,
\r
301 + NCoderPropID::kNumFastBytes,
\r
302 + NCoderPropID::kMatchFinder,
\r
303 + NCoderPropID::kEndMarker
\r
305 + const int kNumProps = sizeof(propIDs) / sizeof(propIDs[0]);
\r
307 + PROPVARIANT properties[kNumProps];
\r
308 + for (int p = 0; p < 6; p++)
\r
309 + properties[p].vt = VT_UI4;
\r
310 + properties[0].ulVal = UInt32(1 << 15);
\r
311 + properties[1].ulVal = UInt32(ZLIB_PB);
\r
312 + properties[2].ulVal = UInt32(ZLIB_LC); // for normal files
\r
313 + properties[3].ulVal = UInt32(ZLIB_LP); // for normal files
\r
314 + properties[4].ulVal = UInt32(0);
\r
315 + properties[5].ulVal = UInt32(0x28);
\r
317 + properties[6].vt = VT_BSTR;
\r
318 + properties[6].bstrVal = (BSTR)(const wchar_t *)L"BT4";
\r
320 + properties[7].vt = VT_BOOL;
\r
321 + properties[7].boolVal = VARIANT_TRUE;
\r
323 + if (encoderSpec->SetCoderProperties(propIDs, properties, kNumProps) != S_OK)
\r
324 + return Z_MEM_ERROR; // should not happen
\r
326 + if (encoderSpec->WriteCoderProperties(outStream) != S_OK)
\r
327 + return Z_MEM_ERROR;
\r
329 + HRESULT result = encoder->Code(inStream, outStream, 0, 0, 0);
\r
330 + if (result == E_OUTOFMEMORY)
\r
332 + return Z_MEM_ERROR;
\r
334 + else if (result != S_OK)
\r
336 + return Z_BUF_ERROR; // should not happen
\r
340 + outStreamSpec->Seek(0, STREAM_SEEK_END, &fileSize);
\r
341 + *destLen = fileSize;
\r
343 + /* Copy size of uncompressed string into first four bytes */
\r
344 + memcpy(dest, &sourceLen, 4);
\r
349 +ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen,
\r
350 + const Bytef *source, uLong sourceLen))
\r
352 + CInMemoryStream *inStreamSpec = new CInMemoryStream(source+9, sourceLen-9);
\r
353 + CMyComPtr<ISequentialInStream> inStream = inStreamSpec;
\r
355 + COutMemoryStream *outStreamSpec = new COutMemoryStream(dest, *destLen);
\r
356 + CMyComPtr<ISequentialOutStream> outStream = outStreamSpec;
\r
358 + NCompress::NLZMA::CDecoder *decoderSpec =
\r
359 + new NCompress::NLZMA::CDecoder;
\r
360 + CMyComPtr<ICompressCoder> decoder = decoderSpec;
\r
362 + //if (decoderSpec->SetDecoderPropertiesRaw(ZLIB_LC,
\r
363 + // ZLIB_LP, ZLIB_PB, (1 << 23)) != S_OK) return Z_DATA_ERROR;
\r
365 + if (decoderSpec->SetDecoderProperties2(source+4, 5) != S_OK)
\r
366 + return Z_DATA_ERROR;
\r
368 + UInt64 fileSize = *destLen;
\r
370 + if (decoder->Code(inStream, outStream, 0, &fileSize, 0) != S_OK)
\r
372 + return Z_DATA_ERROR;
\r
375 + outStreamSpec->Seek(0, STREAM_SEEK_END, &fileSize);
\r
376 + *destLen = fileSize;
\r
380 diff -Nur lzma432/C/Common/CommandLineParser.h lzma432-owrt/C/Common/CommandLineParser.h
381 --- lzma432/C/Common/CommandLineParser.h 2005-03-07 17:03:46.000000000 +0100
382 +++ lzma432-owrt/C/Common/CommandLineParser.h 2006-03-22 14:23:38.000000000 +0100
384 #ifndef __COMMON_COMMANDLINEPARSER_H
\r
385 #define __COMMON_COMMANDLINEPARSER_H
\r
387 -#include "Common/String.h"
\r
388 +#include "String.h"
\r
390 namespace NCommandLineParser {
\r
392 diff -Nur lzma432/C/Common/StringConvert.h lzma432-owrt/C/Common/StringConvert.h
393 --- lzma432/C/Common/StringConvert.h 2005-09-16 10:19:44.000000000 +0200
394 +++ lzma432-owrt/C/Common/StringConvert.h 2006-03-22 14:23:38.000000000 +0100
396 #define __COMMON_STRINGCONVERT_H
\r
398 #include "MyWindows.h"
\r
399 -#include "Common/String.h"
\r
400 +#include "String.h"
\r
403 UString MultiByteToUnicodeString(const AString &srcString, UINT codePage = CP_ACP);
\r
404 diff -Nur lzma432/C/Common/String.cpp lzma432-owrt/C/Common/String.cpp
405 --- lzma432/C/Common/String.cpp 2005-09-28 11:44:06.000000000 +0200
406 +++ lzma432-owrt/C/Common/String.cpp 2006-03-22 14:23:38.000000000 +0100
411 -#include "Common/String.h"
\r
412 +#include "String.h"
\r