OSDN Git Service

使用しているSPIの情報をTPI_ARCHIVEINFO::TPI_FORMATINFOに格納する機能を追加。
authorsirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Wed, 9 Feb 2011 04:24:00 +0000 (04:24 +0000)
committersirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Wed, 9 Feb 2011 04:24:00 +0000 (04:24 +0000)
XPIの情報をTPI_FILEINFO::szCommentに格納する機能を追加。
GetFileInformationでのバッファオーバーフローを修正。

git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/tpi/tpi@476 9df91469-1e22-0410-86e7-ea8537beb833

doc/history.html
src/plugin/xpiLibrary/xpiLibrary.cpp

index 3cad48e..3010599 100644 (file)
 \r
   <h2>History</h2>\r
   <dl id="history">\r
-   <dt>2011/01/--</dt>\r
+   <dt>2011/02/--</dt>\r
    <dd>\r
     Ver.0.01&beta;10\r
     <dl>\r
      <dt>Lychee</dt>\r
      <dd>\r
       <ul>\r
+       <li class="add">ステータスバーにポイントしたときに書庫やTPIの情報を表示する機能を追加。</li>\r
        <li class="add">複製のメニューにアイコンを追加。</li>\r
        <li class="chg">Linuxでは属性の部分にパーミッションを表示するよう変更。</li>\r
        <li class="chg">格納パスにカレントディレクトリが含まれている場合は、それを除いて表示するよう変更。</li>\r
        <li class="chg">UnRAR.dllの仕様変更に追随。</li>\r
       </ul>\r
      </dd>\r
+     <dt>spiLibrary</dt>\r
+     <dd>\r
+      <ul>\r
+       <li class="add">使用しているSPIの情報をTPI_ARCHIVEINFO::TPI_FORMATINFOに格納する機能を追加。</li>\r
+      </ul>\r
+     </dd>\r
+     <dt>xpiLibrary</dt>\r
+     <dd>\r
+      <ul>\r
+       <li class="add">使用しているSPIの情報をTPI_ARCHIVEINFO::TPI_FORMATINFOに格納する機能を追加。</li>\r
+       <li class="add">XPIの情報をTPI_FILEINFO::szCommentに格納する機能を追加。</li>\r
+       <li class="fix">GetFileInformationでのバッファオーバーフローを修正。</li>\r
+      </ul>\r
+     </dd>\r
     </dl>\r
    </dd>\r
    <dt>2010/11/21</dt>\r
index 3dd5468..829e0be 100644 (file)
@@ -260,16 +260,29 @@ int __stdcall GetFileInformation
 \r
                        // GetPluginInfoを実行。\r
                        FARPROC fpProc = ::GetProcAddress(hXPI, "GetPluginInfo");\r
-                       char szTemp[20];\r
+                       char szTemp[513];\r
+                       memset(szTemp, 0, sizeof(szTemp));\r
                        if (fpProc == NULL\r
-                               || ((int (PASCAL *)(int, char *, int)) fpProc)(0, szTemp, sizeof(szTemp)) <= 0\r
-                               || szTemp[2] != 'X' || szTemp[3] != 'N'\r
-                               || ((int (PASCAL *)(int, char *, int)) fpProc)(2, szTemp, sizeof(szTemp)) <= 0)\r
+                               || ((int (PASCAL *)(int, char *, int)) fpProc)(0, szTemp, sizeof(szTemp) - 1) <= 0\r
+                               || szTemp[2] != 'X' || szTemp[3] != 'N')\r
                        {\r
                                ::FreeLibrary(hXPI);\r
                                continue;\r
                        }\r
 \r
+                       _fiInfo->fnFileName = wxFileName(szArcName);\r
+                       _fiInfo->fnFileName.SetVolume(wxEmptyString);\r
+                       _fiInfo->fnFileName.SetPath(szXPIName);\r
+                       if (((int (PASCAL *)(int, char *, int)) fpProc)(1, szTemp, sizeof(szTemp) - 1) > 0)\r
+                       {\r
+                               _fiInfo->szComment = MB2String(szTemp);\r
+                       }\r
+                       if (((int (PASCAL *)(int, char *, int)) fpProc)(2, szTemp, sizeof(szTemp) - 1) > 0)\r
+                       {\r
+                               _fiInfo->fnFileName.SetExt(MB2String(szTemp));\r
+                       }\r
+                       _fiInfo->szStoredName = _fiInfo->fnFileName.GetFullPath();\r
+\r
                        // 対応確認。\r
                        fpProc = ::GetProcAddress(hXPI, "IsSupported");\r
                        if (fpProc == NULL || ! ((BOOL (PASCAL *)(int)) fpProc)(nColorDepth))\r
@@ -277,12 +290,6 @@ int __stdcall GetFileInformation
                                ::FreeLibrary(hXPI);\r
                                continue;\r
                        }\r
-\r
-                       _fiInfo->fnFileName = wxFileName(szArcName);\r
-                       _fiInfo->fnFileName.SetVolume(wxEmptyString);\r
-                       _fiInfo->fnFileName.SetPath(szXPIName);\r
-                       _fiInfo->fnFileName.SetExt(MB2String(szTemp));\r
-                       _fiInfo->szStoredName = _fiInfo->fnFileName.GetFullPath();\r
                        return TPI_ERROR_SUCCESS;\r
                }\r
                while (fs.GetNext(& szXPIName));\r
@@ -316,8 +323,12 @@ int __stdcall GetArchiveInformation
        fpProc = ::GetProcAddress(g_hLib, "GetPluginInfo");\r
        if (fpProc != NULL)\r
        {\r
-               char szTemp[257];\r
+               char szTemp[513];\r
                memset(szTemp, 0, sizeof(szTemp));\r
+               if (((int (PASCAL *)(int, char *, int)) fpProc)(1, szTemp, sizeof(szTemp) - 1) > 0)\r
+               {\r
+                       _aiInfo->fiInfo.szEngineName = MB2String(szTemp);\r
+               }\r
                if (((int (PASCAL *)(int, char *, int)) fpProc)(2, szTemp, sizeof(szTemp) - 1) > 0)\r
                {\r
                        _aiInfo->fiInfo.szSuffix = MB2String(szTemp);\r