OSDN Git Service

GCC4.7での警告を抑制。
authorsirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Tue, 19 Jun 2012 02:29:18 +0000 (02:29 +0000)
committersirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Tue, 19 Jun 2012 02:29:18 +0000 (02:29 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/tpi/tpi@617 9df91469-1e22-0410-86e7-ea8537beb833

src/plugin/7zArc/7zArc.cpp

index 0a6c6b2..e969355 100644 (file)
@@ -755,7 +755,7 @@ int __stdcall OpenArchive
        for (g_LibInfo.nLibIndex = 0; g_LibInfo.nLibIndex < 300 && xmlLibrary != NULL; g_LibInfo.nLibIndex++)\r
        {\r
                // ライブラリをロード。\r
-               const GUID guid = {0x23170F69, 0x40C1, 0x278A, {0x10, 0x00, 0x00, 0x01, 0x10, myGetAttributeInt(xmlLibrary, wxT("name"), 0, 16), 0x00, 0x00}};\r
+               const GUID guid = {0x23170F69, 0x40C1, 0x278A, {0x10, 0x00, 0x00, 0x01, 0x10, (unsigned char) myGetAttributeInt(xmlLibrary, wxT("name"), 0, 16), 0x00, 0x00}};\r
                if (((unsigned int (__stdcall *)(const GUID *, const GUID *, void * *)) g_LibInfo.fpProc)(& guid, & IID_IInArchive, (void **) & hArc) != S_OK)\r
                {\r
                        xmlLibrary = myGetNextLib(xmlLibrary);\r
@@ -924,7 +924,7 @@ int __stdcall Command
                break;\r
        }\r
        case TPI_COMMAND_CREATE:\r
-//     case TPI_COMMAND_ADD:\r
+       case TPI_COMMAND_ADD:\r
        {\r
                // 入力リストを作成。\r
                CObjectVector<NWindows::NFile::NFind::CFileInfo> fiItems;\r
@@ -940,20 +940,37 @@ int __stdcall Command
                        fiItems.Add(fi);\r
                }\r
 \r
-               // 書庫を作成。\r
                COutFileStream * outFileStreamSpec = new COutFileStream;\r
                CMyComPtr<IOutStream> outFileStream = outFileStreamSpec;\r
-               if (! outFileStreamSpec->Create(_swInfo->szArcName.c_str(), false))\r
+               IOutArchive * hArc;\r
+               if (_eCommand == TPI_COMMAND_CREATE)\r
                {\r
-                       return TPI_ERROR_IO_ARC_OPEN;\r
-               }\r
+                       // 書庫を作成。\r
+                       if (! outFileStreamSpec->Create(_swInfo->szArcName.c_str(), false))\r
+                       {\r
+                               return TPI_ERROR_IO_ARC_OPEN;\r
+                       }\r
 \r
-               // エンジンを読み込み。\r
-               IOutArchive * hArc;\r
-               const GUID guid = {0x23170F69, 0x40C1, 0x278A, {0x10, 0x00, 0x00, 0x01, 0x10, myGetAttributeInt(& g_LibInfo.node, wxT("name"), 0, 16), 0x00, 0x00}};\r
-               if (((unsigned int (__stdcall *)(const GUID *, const GUID *, void **)) g_LibInfo.fpProc)(& guid, & IID_IOutArchive, (void **) & hArc) != S_OK)\r
+                       // エンジンを読み込み。\r
+                       const GUID guid = {0x23170F69, 0x40C1, 0x278A, {0x10, 0x00, 0x00, 0x01, 0x10, (unsigned char) myGetAttributeInt(& g_LibInfo.node, wxT("name"), 0, 16), 0x00, 0x00}};\r
+                       if (((unsigned int (__stdcall *)(const GUID *, const GUID *, void **)) g_LibInfo.fpProc)(& guid, & IID_IOutArchive, (void **) & hArc) != S_OK)\r
+                       {\r
+                               return TPI_ERROR_ARC_UNSUPPORTED;\r
+                       }\r
+               }\r
+               else\r
                {\r
-                       return TPI_ERROR_ARC_UNSUPPORTED;\r
+                       // 書庫を開く。\r
+                       if (! outFileStreamSpec->Open(_swInfo->szArcName.c_str(), OPEN_EXISTING))\r
+                       {\r
+                               return TPI_ERROR_IO_ARC_OPEN;\r
+                       }\r
+\r
+                       // IOutArchiveインタフェースを取得。\r
+                       if (((IInArchive *) _hArchive)->QueryInterface(IID_IOutArchive, (void **) & hArc) != S_OK)\r
+                       {\r
+                               return TPI_ERROR_ARC_UNSUPPORTED;\r
+                       }\r
                }\r
 \r
                // 形式情報を取得。\r