diff -rNu lzma/C/LzmaDec.c lzmanew/C/LzmaDec.c
--- lzma/C/LzmaDec.c	2008-11-06 02:31:07.000000000 -0500
+++ lzmanew/C/LzmaDec.c	2010-02-25 15:09:16.000000000 -0500
@@ -2,8 +2,10 @@
 2008-11-06 : Igor Pavlov : Public domain */
 
 #include "LzmaDec.h"
-
+
+#ifndef LINKSYSLZMA
 #include <string.h>
+#endif
 
 #define kNumTopBits 24
 #define kTopValue ((UInt32)1 << kNumTopBits)
diff -rNu lzma/C/LzmaEnc.c lzmanew/C/LzmaEnc.c
--- lzma/C/LzmaEnc.c	2009-02-02 02:34:23.000000000 -0500
+++ lzmanew/C/LzmaEnc.c	2010-02-25 06:05:58.000000000 -0500
@@ -1,7 +1,8 @@
 /* LzmaEnc.c -- LZMA Encoder
 2009-02-02 : Igor Pavlov : Public domain */
-
+#ifndef LINKSYSLZMA
 #include <string.h>
+#endif
 
 /* #define SHOW_STAT */
 /* #define SHOW_STAT2 */
@@ -44,7 +45,10 @@
 
 void LzmaEncProps_Init(CLzmaEncProps *p)
 {
-  p->level = 5;
+/* The default dictionary size is 16M, The lzma_compression_level is from 1 to 5 
+    and dictionary size is  (1<< (lzma_compression_level*2+14)). */
+
+  p->level = 1;
   p->dictSize = p->mc = 0;
   p->lc = p->lp = p->pb = p->algo = p->fb = p->btMode = p->numHashBytes = p->numThreads = -1;
   p->writeEndMark = 0;
diff -rNu lzma/C/Types.h lzmanew/C/Types.h
--- lzma/C/Types.h	2008-11-22 23:45:56.000000000 -0500
+++ lzmanew/C/Types.h	2010-02-25 06:09:40.000000000 -0500
@@ -4,7 +4,9 @@
 #ifndef __7Z_TYPES_H
 #define __7Z_TYPES_H
 
+#ifndef LINKSYSLZMA
 #include <stddef.h>
+#endif
 
 #ifdef _WIN32
 #include <windows.h>
@@ -40,7 +42,10 @@
 #define RINOK(x) { int __result__ = (x); if (__result__ != 0) return __result__; }
 #endif
 
+#ifndef Byte
 typedef unsigned char Byte;
+#endif
+
 typedef short Int16;
 typedef unsigned short UInt16;
 
