f517ff6
diff -up lzma457/C/Archive/7z/7zBuffer.c.shared lzma457/C/Archive/7z/7zBuffer.c
f517ff6
--- lzma457/C/Archive/7z/7zBuffer.c.shared	2005-08-01 08:59:34.000000000 -0400
f517ff6
+++ lzma457/C/Archive/7z/7zBuffer.c	2011-10-18 11:31:37.829780685 -0400
f517ff6
@@ -3,13 +3,13 @@
f517ff6
 #include "7zBuffer.h"
f517ff6
 #include "7zAlloc.h"
f517ff6
 
f517ff6
-void SzByteBufferInit(CSzByteBuffer *buffer)
f517ff6
+MY_EXTERN_C void SzByteBufferInit(CSzByteBuffer *buffer)
f517ff6
 {
f517ff6
   buffer->Capacity = 0;
f517ff6
   buffer->Items = 0;
f517ff6
 }
f517ff6
 
f517ff6
-int SzByteBufferCreate(CSzByteBuffer *buffer, size_t newCapacity, void * (*allocFunc)(size_t size))
f517ff6
+MY_EXTERN_C int SzByteBufferCreate(CSzByteBuffer *buffer, size_t newCapacity, void * (*allocFunc)(size_t size))
f517ff6
 {
f517ff6
   buffer->Capacity = newCapacity;
f517ff6
   if (newCapacity == 0)
f517ff6
@@ -21,7 +21,7 @@ int SzByteBufferCreate(CSzByteBuffer *bu
f517ff6
   return (buffer->Items != 0);
f517ff6
 }
f517ff6
 
f517ff6
-void SzByteBufferFree(CSzByteBuffer *buffer, void (*freeFunc)(void *))
f517ff6
+MY_EXTERN_C void SzByteBufferFree(CSzByteBuffer *buffer, void (*freeFunc)(void *))
f517ff6
 {
f517ff6
   freeFunc(buffer->Items);
f517ff6
   buffer->Items = 0;
f517ff6
diff -up lzma457/C/Archive/7z/7zBuffer.h.shared lzma457/C/Archive/7z/7zBuffer.h
f517ff6
--- lzma457/C/Archive/7z/7zBuffer.h.shared	2007-02-12 05:25:28.000000000 -0500
f517ff6
+++ lzma457/C/Archive/7z/7zBuffer.h	2011-10-18 11:31:37.829780685 -0400
f517ff6
@@ -6,14 +6,20 @@
f517ff6
 #include <stddef.h>
f517ff6
 #include "../../Types.h"
f517ff6
 
f517ff6
+#ifdef __cplusplus
f517ff6
+  #define MY_EXTERN_C extern "C"
f517ff6
+#else
f517ff6
+  #define MY_EXTERN_C extern
f517ff6
+#endif
f517ff6
+
f517ff6
 typedef struct _CSzByteBuffer
f517ff6
 {
f517ff6
   size_t Capacity;
f517ff6
   Byte *Items;
f517ff6
 }CSzByteBuffer;
f517ff6
 
f517ff6
-void SzByteBufferInit(CSzByteBuffer *buffer);
f517ff6
-int SzByteBufferCreate(CSzByteBuffer *buffer, size_t newCapacity, void * (*allocFunc)(size_t size));
f517ff6
-void SzByteBufferFree(CSzByteBuffer *buffer, void (*freeFunc)(void *));
f517ff6
+MY_EXTERN_C void SzByteBufferInit(CSzByteBuffer *buffer);
f517ff6
+MY_EXTERN_C int SzByteBufferCreate(CSzByteBuffer *buffer, size_t newCapacity, void * (*allocFunc)(size_t size));
f517ff6
+MY_EXTERN_C void SzByteBufferFree(CSzByteBuffer *buffer, void (*freeFunc)(void *));
f517ff6
 
f517ff6
 #endif
f517ff6
diff -up lzma457/C/Archive/7z/7zDecode.c.shared lzma457/C/Archive/7z/7zDecode.c
f517ff6
--- lzma457/C/Archive/7z/7zDecode.c.shared	2007-06-21 03:01:47.000000000 -0400
f517ff6
+++ lzma457/C/Archive/7z/7zDecode.c	2011-10-18 11:31:37.830780674 -0400
f517ff6
@@ -318,7 +318,7 @@ SZ_RESULT SzDecode2(const CFileSize *pac
f517ff6
   return SZ_OK;
f517ff6
 }
f517ff6
 
f517ff6
-SZ_RESULT SzDecode(const CFileSize *packSizes, const CFolder *folder,
f517ff6
+MY_EXTERN_C SZ_RESULT SzDecode(const CFileSize *packSizes, const CFolder *folder,
f517ff6
     #ifdef _LZMA_IN_CB
f517ff6
     ISzInStream *inStream, CFileSize startPos,
f517ff6
     #else
f517ff6
diff -up lzma457/C/Archive/7z/7zDecode.h.shared lzma457/C/Archive/7z/7zDecode.h
f517ff6
--- lzma457/C/Archive/7z/7zDecode.h.shared	2007-06-21 02:50:00.000000000 -0400
f517ff6
+++ lzma457/C/Archive/7z/7zDecode.h	2011-10-18 11:31:37.830780674 -0400
f517ff6
@@ -9,7 +9,13 @@
f517ff6
 #include "7zIn.h"
f517ff6
 #endif
f517ff6
 
f517ff6
-SZ_RESULT SzDecode(const CFileSize *packSizes, const CFolder *folder,
f517ff6
+#ifdef __cplusplus
f517ff6
+  #define MY_EXTERN_C extern "C"
f517ff6
+#else
f517ff6
+  #define MY_EXTERN_C extern
f517ff6
+#endif
f517ff6
+
f517ff6
+MY_EXTERN_C SZ_RESULT SzDecode(const CFileSize *packSizes, const CFolder *folder,
f517ff6
     #ifdef _LZMA_IN_CB
f517ff6
     ISzInStream *stream, CFileSize startPos,
f517ff6
     #else
f517ff6
diff -up lzma457/C/Archive/7z/7zExtract.c.shared lzma457/C/Archive/7z/7zExtract.c
f517ff6
--- lzma457/C/Archive/7z/7zExtract.c.shared	2007-06-21 02:53:23.000000000 -0400
f517ff6
+++ lzma457/C/Archive/7z/7zExtract.c	2011-10-18 11:31:37.831780663 -0400
f517ff6
@@ -4,7 +4,7 @@
f517ff6
 #include "7zDecode.h"
f517ff6
 #include "../../7zCrc.h"
f517ff6
 
f517ff6
-SZ_RESULT SzExtract(
f517ff6
+MY_EXTERN_C SZ_RESULT SzExtract(
f517ff6
     ISzInStream *inStream, 
f517ff6
     CArchiveDatabaseEx *db,
f517ff6
     UInt32 fileIndex,
f517ff6
diff -up lzma457/C/Archive/7z/7zExtract.h.shared lzma457/C/Archive/7z/7zExtract.h
f517ff6
--- lzma457/C/Archive/7z/7zExtract.h.shared	2005-07-19 05:00:30.000000000 -0400
f517ff6
+++ lzma457/C/Archive/7z/7zExtract.h	2011-10-18 11:31:37.831780663 -0400
f517ff6
@@ -5,6 +5,12 @@
f517ff6
 
f517ff6
 #include "7zIn.h"
f517ff6
 
f517ff6
+#ifdef __cplusplus
f517ff6
+  #define MY_EXTERN_C extern "C"
f517ff6
+#else
f517ff6
+  #define MY_EXTERN_C extern
f517ff6
+#endif
f517ff6
+
f517ff6
 /*
f517ff6
   SzExtract extracts file from archive
f517ff6
 
f517ff6
@@ -25,7 +31,7 @@
f517ff6
     Free *outBuffer and set *outBuffer to 0, if you want to flush cache.
f517ff6
 */
f517ff6
 
f517ff6
-SZ_RESULT SzExtract(
f517ff6
+MY_EXTERN_C SZ_RESULT SzExtract(
f517ff6
     ISzInStream *inStream, 
f517ff6
     CArchiveDatabaseEx *db,
f517ff6
     UInt32 fileIndex,         /* index of file */
f517ff6
diff -up lzma457/C/Archive/7z/7zHeader.c.shared lzma457/C/Archive/7z/7zHeader.c
f517ff6
--- lzma457/C/Archive/7z/7zHeader.c.shared	2005-03-17 16:16:10.000000000 -0500
f517ff6
+++ lzma457/C/Archive/7z/7zHeader.c	2011-10-18 11:31:37.832780652 -0400
f517ff6
@@ -2,4 +2,4 @@
f517ff6
 
f517ff6
 #include "7zHeader.h"
f517ff6
 
f517ff6
-Byte k7zSignature[k7zSignatureSize] = {'7', 'z', 0xBC, 0xAF, 0x27, 0x1C};
f517ff6
+MY_EXTERN_C Byte k7zSignature[k7zSignatureSize] = {'7', 'z', 0xBC, 0xAF, 0x27, 0x1C};
f517ff6
diff -up lzma457/C/Archive/7z/7zHeader.h.shared lzma457/C/Archive/7z/7zHeader.h
f517ff6
--- lzma457/C/Archive/7z/7zHeader.h.shared	2007-02-12 05:25:37.000000000 -0500
f517ff6
+++ lzma457/C/Archive/7z/7zHeader.h	2011-10-18 11:31:37.832780652 -0400
f517ff6
@@ -5,8 +5,14 @@
f517ff6
 
f517ff6
 #include "../../Types.h"
f517ff6
 
f517ff6
+#ifdef __cplusplus
f517ff6
+  #define MY_EXTERN_C extern "C"
f517ff6
+#else
f517ff6
+  #define MY_EXTERN_C extern
f517ff6
+#endif
f517ff6
+
f517ff6
 #define k7zSignatureSize 6
f517ff6
-extern Byte k7zSignature[k7zSignatureSize];
f517ff6
+MY_EXTERN_C Byte k7zSignature[k7zSignatureSize];
f517ff6
 
f517ff6
 #define k7zMajorVersion 0
f517ff6
 
f517ff6
diff -up lzma457/C/Archive/7z/7zIn.c.shared lzma457/C/Archive/7z/7zIn.c
f517ff6
--- lzma457/C/Archive/7z/7zIn.c.shared	2007-06-21 02:54:27.000000000 -0400
f517ff6
+++ lzma457/C/Archive/7z/7zIn.c	2011-10-18 11:31:37.833780641 -0400
f517ff6
@@ -6,7 +6,7 @@
f517ff6
 
f517ff6
 #define RINOM(x) { if((x) == 0) return SZE_OUTOFMEMORY; }
f517ff6
 
f517ff6
-void SzArDbExInit(CArchiveDatabaseEx *db)
f517ff6
+MY_EXTERN_C void SzArDbExInit(CArchiveDatabaseEx *db)
f517ff6
 {
f517ff6
   SzArchiveDatabaseInit(&db->Database);
f517ff6
   db->FolderStartPackStreamIndex = 0;
f517ff6
@@ -15,7 +15,7 @@ void SzArDbExInit(CArchiveDatabaseEx *db
f517ff6
   db->FileIndexToFolderIndexMap = 0;
f517ff6
 }
f517ff6
 
f517ff6
-void SzArDbExFree(CArchiveDatabaseEx *db, void (*freeFunc)(void *))
f517ff6
+MY_EXTERN_C void SzArDbExFree(CArchiveDatabaseEx *db, void (*freeFunc)(void *))
f517ff6
 {
f517ff6
   freeFunc(db->FolderStartPackStreamIndex);
f517ff6
   freeFunc(db->PackStreamStartPositions);
f517ff6
@@ -242,7 +242,7 @@ SZ_RESULT SafeReadDirectUInt64(ISzInStre
f517ff6
   return SZ_OK;
f517ff6
 }
f517ff6
 
f517ff6
-int TestSignatureCandidate(Byte *testBytes)
f517ff6
+MY_EXTERN_C int TestSignatureCandidate(Byte *testBytes)
f517ff6
 {
f517ff6
   size_t i;
f517ff6
   for (i = 0; i < k7zSignatureSize; i++)
f517ff6
@@ -1301,7 +1301,7 @@ SZ_RESULT SzArchiveOpen2(
f517ff6
   return res;
f517ff6
 }
f517ff6
 
f517ff6
-SZ_RESULT SzArchiveOpen(
f517ff6
+MY_EXTERN_C SZ_RESULT SzArchiveOpen(
f517ff6
     ISzInStream *inStream, 
f517ff6
     CArchiveDatabaseEx *db,
f517ff6
     ISzAlloc *allocMain, 
f517ff6
diff -up lzma457/C/Archive/7z/7zIn.h.shared lzma457/C/Archive/7z/7zIn.h
f517ff6
--- lzma457/C/Archive/7z/7zIn.h.shared	2007-06-19 10:57:11.000000000 -0400
f517ff6
+++ lzma457/C/Archive/7z/7zIn.h	2011-10-18 11:31:37.834780630 -0400
f517ff6
@@ -6,6 +6,12 @@
f517ff6
 #include "7zHeader.h"
f517ff6
 #include "7zItem.h"
f517ff6
 #include "7zAlloc.h"
f517ff6
+
f517ff6
+#ifdef __cplusplus
f517ff6
+  #define MY_EXTERN_C extern "C"
f517ff6
+#else
f517ff6
+  #define MY_EXTERN_C extern
f517ff6
+#endif
f517ff6
  
f517ff6
 typedef struct _CInArchiveInfo
f517ff6
 {
f517ff6
@@ -23,8 +29,8 @@ typedef struct _CArchiveDatabaseEx
f517ff6
   UInt32 *FileIndexToFolderIndexMap;
f517ff6
 }CArchiveDatabaseEx;
f517ff6
 
f517ff6
-void SzArDbExInit(CArchiveDatabaseEx *db);
f517ff6
-void SzArDbExFree(CArchiveDatabaseEx *db, void (*freeFunc)(void *));
f517ff6
+MY_EXTERN_C void SzArDbExInit(CArchiveDatabaseEx *db);
f517ff6
+MY_EXTERN_C void SzArDbExFree(CArchiveDatabaseEx *db, void (*freeFunc)(void *));
f517ff6
 CFileSize SzArDbGetFolderStreamPos(CArchiveDatabaseEx *db, UInt32 folderIndex, UInt32 indexInFolder);
f517ff6
 int SzArDbGetFolderFullPackSize(CArchiveDatabaseEx *db, UInt32 folderIndex, CFileSize *resSize);
f517ff6
 
f517ff6
@@ -46,10 +52,12 @@ typedef struct _ISzInStream
f517ff6
 } ISzInStream;
f517ff6
 
f517ff6
  
f517ff6
-int SzArchiveOpen(
f517ff6
+MY_EXTERN_C int SzArchiveOpen(
f517ff6
     ISzInStream *inStream, 
f517ff6
     CArchiveDatabaseEx *db,
f517ff6
     ISzAlloc *allocMain, 
f517ff6
     ISzAlloc *allocTemp);
f517ff6
+
f517ff6
+MY_EXTERN_C int TestSignatureCandidate(Byte *testBytes);
f517ff6
  
f517ff6
 #endif
f517ff6
diff -up lzma457/C/Archive/7z/7zItem.c.shared lzma457/C/Archive/7z/7zItem.c
f517ff6
--- lzma457/C/Archive/7z/7zItem.c.shared	2007-06-16 04:34:43.000000000 -0400
f517ff6
+++ lzma457/C/Archive/7z/7zItem.c	2011-10-18 11:31:37.834780630 -0400
f517ff6
@@ -3,7 +3,7 @@
f517ff6
 #include "7zItem.h"
f517ff6
 #include "7zAlloc.h"
f517ff6
 
f517ff6
-void SzCoderInfoInit(CCoderInfo *coder)
f517ff6
+MY_EXTERN_C void SzCoderInfoInit(CCoderInfo *coder)
f517ff6
 {
f517ff6
   SzByteBufferInit(&coder->Properties);
f517ff6
 }
f517ff6
@@ -14,7 +14,7 @@ void SzCoderInfoFree(CCoderInfo *coder,
f517ff6
   SzCoderInfoInit(coder);
f517ff6
 }
f517ff6
 
f517ff6
-void SzFolderInit(CFolder *folder)
f517ff6
+MY_EXTERN_C void SzFolderInit(CFolder *folder)
f517ff6
 {
f517ff6
   folder->NumCoders = 0;
f517ff6
   folder->Coders = 0;
f517ff6
@@ -40,7 +40,7 @@ void SzFolderFree(CFolder *folder, void
f517ff6
   SzFolderInit(folder);
f517ff6
 }
f517ff6
 
f517ff6
-UInt32 SzFolderGetNumOutStreams(CFolder *folder)
f517ff6
+MY_EXTERN_C UInt32 SzFolderGetNumOutStreams(CFolder *folder)
f517ff6
 {
f517ff6
   UInt32 result = 0;
f517ff6
   UInt32 i;
f517ff6
@@ -49,7 +49,7 @@ UInt32 SzFolderGetNumOutStreams(CFolder
f517ff6
   return result;
f517ff6
 }
f517ff6
 
f517ff6
-int SzFolderFindBindPairForInStream(CFolder *folder, UInt32 inStreamIndex)
f517ff6
+MY_EXTERN_C int SzFolderFindBindPairForInStream(CFolder *folder, UInt32 inStreamIndex)
f517ff6
 {
f517ff6
   UInt32 i;
f517ff6
   for(i = 0; i < folder->NumBindPairs; i++)
f517ff6
@@ -59,7 +59,7 @@ int SzFolderFindBindPairForInStream(CFol
f517ff6
 }
f517ff6
 
f517ff6
 
f517ff6
-int SzFolderFindBindPairForOutStream(CFolder *folder, UInt32 outStreamIndex)
f517ff6
+MY_EXTERN_C int SzFolderFindBindPairForOutStream(CFolder *folder, UInt32 outStreamIndex)
f517ff6
 {
f517ff6
   UInt32 i;
f517ff6
   for(i = 0; i < folder->NumBindPairs; i++)
f517ff6
@@ -68,7 +68,7 @@ int SzFolderFindBindPairForOutStream(CFo
f517ff6
   return -1;
f517ff6
 }
f517ff6
 
f517ff6
-CFileSize SzFolderGetUnPackSize(CFolder *folder)
f517ff6
+MY_EXTERN_C CFileSize SzFolderGetUnPackSize(CFolder *folder)
f517ff6
 { 
f517ff6
   int i = (int)SzFolderGetNumOutStreams(folder);
f517ff6
   if (i == 0)
f517ff6
@@ -90,7 +90,7 @@ int FindPackStreamArrayIndex(int inStrea
f517ff6
 }
f517ff6
 */
f517ff6
 
f517ff6
-void SzFileInit(CFileItem *fileItem)
f517ff6
+MY_EXTERN_C void SzFileInit(CFileItem *fileItem)
f517ff6
 {
f517ff6
   fileItem->IsFileCRCDefined = 0;
f517ff6
   fileItem->HasStream = 1;
f517ff6
@@ -106,7 +106,7 @@ void SzFileFree(CFileItem *fileItem, voi
f517ff6
   SzFileInit(fileItem);
f517ff6
 }
f517ff6
 
f517ff6
-void SzArchiveDatabaseInit(CArchiveDatabase *db)
f517ff6
+MY_EXTERN_C void SzArchiveDatabaseInit(CArchiveDatabase *db)
f517ff6
 {
f517ff6
   db->NumPackStreams = 0;
f517ff6
   db->PackSizes = 0;
f517ff6
@@ -118,7 +118,7 @@ void SzArchiveDatabaseInit(CArchiveDatab
f517ff6
   db->Files = 0;
f517ff6
 }
f517ff6
 
f517ff6
-void SzArchiveDatabaseFree(CArchiveDatabase *db, void (*freeFunc)(void *))
f517ff6
+MY_EXTERN_C void SzArchiveDatabaseFree(CArchiveDatabase *db, void (*freeFunc)(void *))
f517ff6
 {
f517ff6
   UInt32 i;
f517ff6
   for (i = 0; i < db->NumFolders; i++)
f517ff6
diff -up lzma457/C/Archive/7z/7zItem.h.shared lzma457/C/Archive/7z/7zItem.h
f517ff6
--- lzma457/C/Archive/7z/7zItem.h.shared	2007-06-16 04:22:14.000000000 -0400
f517ff6
+++ lzma457/C/Archive/7z/7zItem.h	2011-10-18 11:31:37.835780619 -0400
f517ff6
@@ -7,6 +7,12 @@
f517ff6
 #include "7zHeader.h"
f517ff6
 #include "7zBuffer.h"
f517ff6
 
f517ff6
+#ifdef __cplusplus
f517ff6
+  #define MY_EXTERN_C extern "C"
f517ff6
+#else
f517ff6
+  #define MY_EXTERN_C extern
f517ff6
+#endif
f517ff6
+
f517ff6
 typedef struct _CCoderInfo
f517ff6
 {
f517ff6
   UInt32 NumInStreams;
f517ff6
@@ -15,7 +21,7 @@ typedef struct _CCoderInfo
f517ff6
   CSzByteBuffer Properties;
f517ff6
 }CCoderInfo;
f517ff6
 
f517ff6
-void SzCoderInfoInit(CCoderInfo *coder);
f517ff6
+MY_EXTERN_C void SzCoderInfoInit(CCoderInfo *coder);
f517ff6
 void SzCoderInfoFree(CCoderInfo *coder, void (*freeFunc)(void *p));
f517ff6
 
f517ff6
 typedef struct _CBindPair
f517ff6
@@ -39,11 +45,11 @@ typedef struct _CFolder
f517ff6
   UInt32 NumUnPackStreams;
f517ff6
 }CFolder;
f517ff6
 
f517ff6
-void SzFolderInit(CFolder *folder);
f517ff6
-CFileSize SzFolderGetUnPackSize(CFolder *folder);
f517ff6
-int SzFolderFindBindPairForInStream(CFolder *folder, UInt32 inStreamIndex);
f517ff6
-UInt32 SzFolderGetNumOutStreams(CFolder *folder);
f517ff6
-CFileSize SzFolderGetUnPackSize(CFolder *folder);
f517ff6
+MY_EXTERN_C void SzFolderInit(CFolder *folder);
f517ff6
+MY_EXTERN_C CFileSize SzFolderGetUnPackSize(CFolder *folder);
f517ff6
+MY_EXTERN_C int SzFolderFindBindPairForInStream(CFolder *folder, UInt32 inStreamIndex);
f517ff6
+MY_EXTERN_C UInt32 SzFolderGetNumOutStreams(CFolder *folder);
f517ff6
+MY_EXTERN_C CFileSize SzFolderGetUnPackSize(CFolder *folder);
f517ff6
 
f517ff6
 typedef struct _CArchiveFileTime
f517ff6
 {
f517ff6
@@ -74,7 +80,7 @@ typedef struct _CFileItem
f517ff6
   */
f517ff6
 }CFileItem;
f517ff6
 
f517ff6
-void SzFileInit(CFileItem *fileItem);
f517ff6
+MY_EXTERN_C void SzFileInit(CFileItem *fileItem);
f517ff6
 
f517ff6
 typedef struct _CArchiveDatabase
f517ff6
 {
f517ff6
@@ -88,8 +94,8 @@ typedef struct _CArchiveDatabase
f517ff6
   CFileItem *Files;
f517ff6
 }CArchiveDatabase;
f517ff6
 
f517ff6
-void SzArchiveDatabaseInit(CArchiveDatabase *db);
f517ff6
-void SzArchiveDatabaseFree(CArchiveDatabase *db, void (*freeFunc)(void *));
f517ff6
+MY_EXTERN_C void SzArchiveDatabaseInit(CArchiveDatabase *db);
f517ff6
+MY_EXTERN_C void SzArchiveDatabaseFree(CArchiveDatabase *db, void (*freeFunc)(void *));
f517ff6
 
f517ff6
 
f517ff6
 #endif
f517ff6
diff -up lzma457/C/Compress/Branch/BranchX86_2.c.shared lzma457/C/Compress/Branch/BranchX86_2.c
f517ff6
--- lzma457/C/Compress/Branch/BranchX86_2.c.shared	2011-10-18 11:32:39.635099082 -0400
f517ff6
+++ lzma457/C/Compress/Branch/BranchX86_2.c	2011-10-18 11:34:06.250158798 -0400
f517ff6
@@ -37,7 +37,7 @@
f517ff6
 // #define UpdateBit0(p) Range = bound; *(p) = (CProb)(*(p) + ((kBitModelTotal - *(p)) >> kNumMoveBits));
f517ff6
 // #define UpdateBit1(p) Range -= bound; Code -= bound; *(p) = (CProb)(*(p) - (*(p) >> kNumMoveBits));
f517ff6
 
f517ff6
-int x86_2_Decode(
f517ff6
+MY_EXTERN_C int x86_2_Decode(
f517ff6
     const Byte *buf0, SizeT size0, 
f517ff6
     const Byte *buf1, SizeT size1, 
f517ff6
     const Byte *buf2, SizeT size2, 
f517ff6
diff -up lzma457/C/Compress/Branch/BranchX86_2.h.shared lzma457/C/Compress/Branch/BranchX86_2.h
f517ff6
--- lzma457/C/Compress/Branch/BranchX86_2.h.shared	2011-10-18 11:32:34.024160585 -0400
f517ff6
+++ lzma457/C/Compress/Branch/BranchX86_2.h	2011-10-18 11:34:32.900872791 -0400
f517ff6
@@ -5,6 +5,12 @@
f517ff6
 
f517ff6
 #include "BranchTypes.h"
f517ff6
 
f517ff6
+#ifdef __cplusplus
f517ff6
+  #define MY_EXTERN_C extern "C"
f517ff6
+#else
f517ff6
+  #define MY_EXTERN_C extern
f517ff6
+#endif
f517ff6
+
f517ff6
 #define BCJ2_RESULT_OK 0
f517ff6
 #define BCJ2_RESULT_DATA_ERROR 1
f517ff6
 
f517ff6
@@ -18,7 +24,7 @@ If buf0 overlaps outBuf, there are two r
f517ff6
   2) (buf0 + size0 >= outBuf + FullOutputSize).
f517ff6
 */
f517ff6
 
f517ff6
-int x86_2_Decode(
f517ff6
+MY_EXTERN_C int x86_2_Decode(
f517ff6
     const Byte *buf0, SizeT size0, 
f517ff6
     const Byte *buf1, SizeT size1, 
f517ff6
     const Byte *buf2, SizeT size2, 
f517ff6
diff -up lzma457/CPP/7zip/Compress/LZMA_Alone/makefile.gcc.shared lzma457/CPP/7zip/Compress/LZMA_Alone/makefile.gcc
f517ff6
--- lzma457/CPP/7zip/Compress/LZMA_Alone/makefile.gcc.shared	2007-06-25 04:54:32.000000000 -0400
f517ff6
+++ lzma457/CPP/7zip/Compress/LZMA_Alone/makefile.gcc	2011-10-18 11:35:31.785246076 -0400
f517ff6
@@ -1,7 +1,9 @@
f517ff6
-PROG = lzma
f517ff6
-CXX = g++ -O2 -Wall
f517ff6
-CXX_C = gcc -O2 -Wall
f517ff6
-LIB = -lm
f517ff6
+LIBRARY = liblzmasdk457.so
f517ff6
+LIBRARYMINOR = $(LIBRARY).4
f517ff6
+LIBRARYMAJOR = $(LIBRARYMINOR).5.7
f517ff6
+CXX = g++ -O2 -Wall -fPIC
f517ff6
+CXX_C = gcc -O2 -Wall -fPIC
f517ff6
+LIB = -lm -lstdc++
f517ff6
 RM = rm -f
f517ff6
 CFLAGS = -c
f517ff6
 
f517ff6
@@ -42,15 +44,21 @@ OBJS = \
f517ff6
   7zCrc.o \
f517ff6
   Alloc.o \
f517ff6
   BranchX86.o \
f517ff6
+  BranchX86_2.o \
f517ff6
   MatchFinder.o \
f517ff6
   LzmaDecode.o \
f517ff6
   LzmaRamDecode.o \
f517ff6
+  7zBuffer.o \
f517ff6
+  7zDecode.o \
f517ff6
+  7zExtract.o \
f517ff6
+  7zHeader.o \
f517ff6
+  7zIn.o \
f517ff6
+  7zItem.o \
f517ff6
 
f517ff6
+all: $(LIBRARYMAJOR)
f517ff6
 
f517ff6
-all: $(PROG)
f517ff6
-
f517ff6
-$(PROG): $(OBJS)
f517ff6
-	$(CXX) -o $(PROG) $(LDFLAGS) $(OBJS) $(LIB) $(LIB2)
f517ff6
+$(LIBRARYMAJOR): $(OBJS)
f517ff6
+	$(CXX) -o $(LIBRARYMAJOR) -shared -Wl,-soname=$(LIBRARYMINOR) $(LDFLAGS) $(OBJS) $(LIB) $(LIB2)
f517ff6
 
f517ff6
 LzmaAlone.o: LzmaAlone.cpp
f517ff6
 	$(CXX) $(CFLAGS) LzmaAlone.cpp
f517ff6
@@ -116,15 +124,36 @@ StringToInt.o: ../../../Common/StringToI
f517ff6
 MyVector.o: ../../../Common/MyVector.cpp
f517ff6
 	$(CXX) $(CFLAGS) ../../../Common/MyVector.cpp
f517ff6
 
f517ff6
+7zBuffer.o: ../../../../C/Archive/7z/7zBuffer.c
f517ff6
+	$(CXX_C) $(CFLAGS) ../../../../C/Archive/7z/7zBuffer.c
f517ff6
+
f517ff6
 7zCrc.o: ../../../../C/7zCrc.c
f517ff6
 	$(CXX_C) $(CFLAGS) ../../../../C/7zCrc.c
f517ff6
 
f517ff6
+7zDecode.o: ../../../../C/Archive/7z/7zDecode.c
f517ff6
+	$(CXX_C) $(CFLAGS) ../../../../C/Archive/7z/7zDecode.c
f517ff6
+
f517ff6
+7zExtract.o: ../../../../C/Archive/7z/7zExtract.c
f517ff6
+	$(CXX_C) $(CFLAGS) ../../../../C/Archive/7z/7zExtract.c
f517ff6
+
f517ff6
+7zHeader.o: ../../../../C/Archive/7z/7zHeader.c
f517ff6
+	$(CXX_C) $(CFLAGS) ../../../../C/Archive/7z/7zHeader.c
f517ff6
+
f517ff6
+7zIn.o: ../../../../C/Archive/7z/7zIn.c
f517ff6
+	$(CXX_C) $(CFLAGS) ../../../../C/Archive/7z/7zIn.c
f517ff6
+
f517ff6
+7zItem.o: ../../../../C/Archive/7z/7zItem.c
f517ff6
+	$(CXX_C) $(CFLAGS) ../../../../C/Archive/7z/7zItem.c
f517ff6
+
f517ff6
 Alloc.o: ../../../../C/Alloc.c
f517ff6
 	$(CXX_C) $(CFLAGS) ../../../../C/Alloc.c
f517ff6
 
f517ff6
 BranchX86.o: ../../../../C/Compress/Branch/BranchX86.c
f517ff6
 	$(CXX_C) $(CFLAGS) ../../../../C/Compress/Branch/BranchX86.c
f517ff6
 
f517ff6
+BranchX86_2.o: ../../../../C/Compress/Branch/BranchX86_2.c
f517ff6
+	$(CXX_C) $(CFLAGS) ../../../../C/Compress/Branch/BranchX86_2.c
f517ff6
+
f517ff6
 MatchFinder.o: ../../../../C/Compress/Lz/MatchFinder.c
f517ff6
 	$(CXX_C) $(CFLAGS) ../../../../C/Compress/Lz/MatchFinder.c
f517ff6
 
f517ff6
@@ -135,5 +164,5 @@ LzmaRamDecode.o: LzmaRamDecode.c
f517ff6
 	$(CXX_C) $(CFLAGS) LzmaRamDecode.c
f517ff6
 
f517ff6
 clean:
f517ff6
-	-$(RM) $(PROG) $(OBJS)
f517ff6
+	-$(RM) $(LIBRARYMAJOR) $(OBJS)
f517ff6