OSDN Git Service

Recompile executable files.
[ffftp/ffftp.git] / main.c
diff --git a/main.c b/main.c
index f1468a0..c731384 100644 (file)
--- a/main.c
+++ b/main.c
@@ -136,6 +136,9 @@ static DWORD dwCookie;
 static char SSLRootCAFilePath[FMAX_PATH+1];\r
 // マルチコアCPUの特定環境下でファイル通信中にクラッシュするバグ対策\r
 static DWORD MainThreadId;\r
+// ポータブル版判定\r
+static char PortableFilePath[FMAX_PATH+1];\r
+int PortableVersion;\r
 \r
 \r
 /*===== グローバルなワーク =====*/\r
@@ -404,6 +407,8 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow)
        char PwdBuf[FMAX_PATH+1];\r
        int useDefautPassword = 0; /* 警告文表示用 */\r
        int masterpass;\r
+       // ポータブル版判定\r
+       int ImportPortable;\r
 \r
        sts = FFFTP_FAIL;\r
 \r
@@ -441,6 +446,25 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow)
                        ForceIni = YES;\r
                        RegType = REGTYPE_INI;\r
                }\r
+               // ポータブル版判定\r
+               GetModuleFileName(NULL, PortableFilePath, FMAX_PATH);\r
+               strcpy(GetFileName(PortableFilePath), "portable");\r
+               CheckPortableVersion();\r
+               ImportPortable = NO;\r
+               if(PortableVersion == YES)\r
+               {\r
+                       ForceIni = YES;\r
+                       RegType = REGTYPE_INI;\r
+                       if(IsRegAvailable() == YES && IsIniAvailable() == NO)\r
+                       {\r
+                               if(DialogBox(GetFtpInst(), MAKEINTRESOURCE(ini_from_reg_dlg), GetMainHwnd(), ExeEscDialogProc) == YES)\r
+                               {\r
+                                       ImportPortable = YES;\r
+                                       ForceIni = NO;\r
+                                       RegType = REGTYPE_REG;\r
+                               }\r
+                       }\r
+               }\r
 \r
 //             AllocConsole();\r
 \r
@@ -494,6 +518,13 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow)
                {\r
                        LoadRegistry();\r
 \r
+                       // ポータブル版判定\r
+                       if(ImportPortable == YES)\r
+                       {\r
+                               ForceIni = YES;\r
+                               RegType = REGTYPE_INI;\r
+                       }\r
+\r
                        // 暗号化通信対応\r
                        SetSSLTimeoutCallback(TimeOut * 1000, SSLTimeoutCallback);\r
                        SetSSLConfirmCallback(SSLConfirmCallback);\r
@@ -1375,6 +1406,8 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
                                        if(DialogBox(hInstFtp, MAKEINTRESOURCE(reginit_dlg), hWnd, ExeEscDialogProc) == YES)\r
                                        {\r
                                                ClearRegistry();\r
+                                               // ポータブル版判定\r
+                                               ClearIni();\r
                                                SaveExit = NO;\r
                                                PostMessage(hWnd, WM_CLOSE, 0, 0L);\r
                                        }\r
@@ -2082,6 +2115,9 @@ static void ExitProc(HWND hWnd)
        {\r
                GetListTabWidth();\r
                SaveRegistry();\r
+               // ポータブル版判定\r
+               if(RegType == REGTYPE_REG)\r
+                       ClearIni();\r
 \r
                if((CacheEntry > 0) && (CacheSave == YES))\r
                        SaveCache();\r
@@ -3093,7 +3129,7 @@ BOOL LoadSSLRootCAFile()
                                for(i = 0; i < 5; i++)\r
                                        Hash[i] = _byteswap_ulong(Hash[i]);\r
                                // 同梱する"ssl.pem"に合わせてSHA1ハッシュ値を変更すること\r
-                               if(memcmp(&Hash, &SSLRootCAFileHash, 20) == 0 || memcmp(&Hash, "\xF0\x1B\x48\x26\x67\x44\x3A\xFF\x0A\x16\xD3\xBB\x8A\x33\xEB\x70\x6D\x75\xA6\x0D", 20) == 0\r
+                               if(memcmp(&Hash, &SSLRootCAFileHash, 20) == 0 || memcmp(&Hash, "\x63\xAC\x6C\x43\xCE\xD6\x5B\xCF\x33\xB9\x45\x70\xC3\x9B\x8C\x91\x19\x0D\xEF\xE6", 20) == 0\r
                                        || DialogBox(GetFtpInst(), MAKEINTRESOURCE(updatesslroot_dlg), GetMainHwnd(), ExeEscDialogProc) == YES)\r
                                {\r
                                        memcpy(&SSLRootCAFileHash, &Hash, 20);\r
@@ -3122,3 +3158,21 @@ int AskDispFileIcon(void)
        return(DispFileIcon);\r
 }\r
 \r
+// ポータブル版判定\r
+void CheckPortableVersion()\r
+{\r
+       HANDLE hFile;\r
+       if((hFile = CreateFile(PortableFilePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)) != INVALID_HANDLE_VALUE)\r
+       {\r
+               PortableVersion = YES;\r
+               CloseHandle(hFile);\r
+       }\r
+       else\r
+               PortableVersion = NO;\r
+}\r
+\r
+int AskPortableVersion(void)\r
+{\r
+       return(PortableVersion);\r
+}\r
+\r