X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=main.c;h=89c8089270b46a0a58ff56c0bfb02034fbf713db;hb=554ddaeeff25cb5ca2494470a41834cfeadec8df;hp=51d8b354816bea8480356f7105ab601b0acc0d0b;hpb=2ee418d5d0095069672ab0de6c01ae07336756e0;p=ffftp%2Fffftp.git diff --git a/main.c b/main.c index 51d8b35..89c8089 100644 --- a/main.c +++ b/main.c @@ -233,6 +233,8 @@ BYTE CertificateCacheHash[MAX_CERT_CACHE_HASH][20]; BYTE SSLRootCAFileHash[20]; // ファイルアイコン表示対応 int DispFileIcon = NO; +// ディレクトリ自動作成 +int MakeAllDir = YES; @@ -258,66 +260,68 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLi // プロセス保護 #ifdef ENABLE_PROCESS_PROTECTION - DWORD ProtectLevel; - char* pCommand; - char Option[FMAX_PATH+1]; - ProtectLevel = PROCESS_PROTECTION_NONE; - pCommand = lpszCmdLine; - while(pCommand = GetToken(pCommand, Option)) { - if(strcmp(Option, "--protect") == 0) + DWORD ProtectLevel; + char* pCommand; + char Option[FMAX_PATH+1]; + ProtectLevel = PROCESS_PROTECTION_NONE; + pCommand = lpszCmdLine; + while(pCommand = GetToken(pCommand, Option)) { - ProtectLevel = PROCESS_PROTECTION_DEFAULT; - break; - } - else if(strcmp(Option, "--protect-high") == 0) - { - ProtectLevel = PROCESS_PROTECTION_HIGH; - break; - } - else if(strcmp(Option, "--protect-medium") == 0) - { - ProtectLevel = PROCESS_PROTECTION_MEDIUM; - break; - } - else if(strcmp(Option, "--protect-low") == 0) - { - ProtectLevel = PROCESS_PROTECTION_LOW; - break; + if(strcmp(Option, "--protect") == 0) + { + ProtectLevel = PROCESS_PROTECTION_DEFAULT; + break; + } + else if(strcmp(Option, "--protect-high") == 0) + { + ProtectLevel = PROCESS_PROTECTION_HIGH; + break; + } + else if(strcmp(Option, "--protect-medium") == 0) + { + ProtectLevel = PROCESS_PROTECTION_MEDIUM; + break; + } + else if(strcmp(Option, "--protect-low") == 0) + { + ProtectLevel = PROCESS_PROTECTION_LOW; + break; + } } - } - if(ProtectLevel != PROCESS_PROTECTION_NONE) - { - SetProcessProtectionLevel(ProtectLevel); - if(!InitializeLoadLibraryHook()) + if(ProtectLevel != PROCESS_PROTECTION_NONE) { - MessageBox(NULL, MSGJPN321, "FFFTP", MB_OK | MB_ICONERROR); - return 0; - } + SetProcessProtectionLevel(ProtectLevel); + if(!InitializeLoadLibraryHook()) + { + MessageBox(NULL, MSGJPN321, "FFFTP", MB_OK | MB_ICONERROR); + return 0; + } #ifndef _DEBUG - if(IsDebuggerPresent()) - { - MessageBox(NULL, MSGJPN322, "FFFTP", MB_OK | MB_ICONERROR); - return 0; - } + if(IsDebuggerPresent()) + { + MessageBox(NULL, MSGJPN322, "FFFTP", MB_OK | MB_ICONERROR); + return 0; + } #endif - if(!UnloadUntrustedModule()) - { - MessageBox(NULL, MSGJPN323, "FFFTP", MB_OK | MB_ICONERROR); - return 0; - } + if(!UnloadUntrustedModule()) + { + MessageBox(NULL, MSGJPN323, "FFFTP", MB_OK | MB_ICONERROR); + return 0; + } #ifndef _DEBUG - if(RestartProtectedProcess(" --restart")) - return 0; + if(RestartProtectedProcess(" --restart")) + return 0; #endif - if(!EnableLoadLibraryHook(TRUE)) - { - MessageBox(NULL, MSGJPN324, "FFFTP", MB_OK | MB_ICONERROR); - return 0; + if(!EnableLoadLibraryHook(TRUE)) + { + MessageBox(NULL, MSGJPN324, "FFFTP", MB_OK | MB_ICONERROR); + return 0; + } } + else + InitializeLoadLibraryHook(); } - else - InitializeLoadLibraryHook(); #endif // マルチコアCPUの特定環境下でファイル通信中にクラッシュするバグ対策 @@ -448,7 +452,7 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow) /* 2010.02.01 genta マスターパスワードを入力させる -z オプションがあるときは最初だけスキップ -z オプションがないときは,デフォルトパスワードをまず試す - LoadRegistory()する + LoadRegistry()する パスワードが不一致なら再入力するか尋ねる. (破損していた場合はさせない) */ @@ -493,7 +497,7 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow) if(masterpass != 0) { - LoadRegistory(); + LoadRegistry(); // 暗号化通信対応 SetSSLTimeoutCallback(TimeOut * 1000, SSLTimeoutCallback); @@ -542,7 +546,7 @@ static int InitApp(LPSTR lpszCmdLine, int cmdShow) DispWindowTitle(); // SourceForge.JPによるフォーク // SetTaskMsg("FFFTP Ver." VER_STR " Copyright(C) 1997-2010 Sota & cooperators."); - SetTaskMsg("FFFTP Ver." VER_STR " Copyright(C) 1997-2010 Sota & cooperators.\r\nCopyright (C) 2011 FFFTP Project (Hiromichi Matsushima, Suguru Kawamoto, IWAMOTO Kouichi, vitamin0x, unarist, Asami, fortran90, tomo1192, Yuji Tanaka)."); + SetTaskMsg("FFFTP Ver." VER_STR " Copyright(C) 1997-2010 Sota & cooperators.\r\nCopyright (C) 2011-2012 FFFTP Project (Hiromichi Matsushima, Suguru Kawamoto, IWAMOTO Kouichi, vitamin0x, unarist, Asami, fortran90, tomo1192, Yuji Tanaka, Moriguchi Hirokazu)."); if(ForceIni) SetTaskMsg("%s%s", MSGJPN283, IniPath); @@ -979,6 +983,22 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA case MENU_DCLICK : if(hWndCurFocus == GetLocalHwnd()) + // ローカルフォルダを開く +// DoubleClickProc(WIN_LOCAL, YES, -1); + DoubleClickProc(WIN_LOCAL, NO, -1); + else + { + SuppressRefresh = 1; + // ローカルフォルダを開く +// DoubleClickProc(WIN_REMOTE, YES, -1); + DoubleClickProc(WIN_REMOTE, NO, -1); + SuppressRefresh = 0; + } + break; + + // ローカルフォルダを開く + case MENU_OPEN : + if(hWndCurFocus == GetLocalHwnd()) DoubleClickProc(WIN_LOCAL, YES, -1); else { @@ -1047,42 +1067,42 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA case MENU_DOWNLOAD : SetCurrentDirAsDirHist(); - DownLoadProc(NO, NO, NO); + DownloadProc(NO, NO, NO); break; case MENU_DOWNLOAD_AS : SetCurrentDirAsDirHist(); - DownLoadProc(YES, NO, NO); + DownloadProc(YES, NO, NO); break; case MENU_DOWNLOAD_AS_FILE : SetCurrentDirAsDirHist(); - DownLoadProc(NO, YES, NO); + DownloadProc(NO, YES, NO); break; case MENU_DOWNLOAD_ALL : SetCurrentDirAsDirHist(); - DownLoadProc(NO, NO, YES); + DownloadProc(NO, NO, YES); break; case MENU_DOWNLOAD_NAME : SetCurrentDirAsDirHist(); - InputDownLoadProc(); + InputDownloadProc(); break; case MENU_UPLOAD : SetCurrentDirAsDirHist(); - UpLoadListProc(NO, NO); + UploadListProc(NO, NO); break; case MENU_UPLOAD_AS : SetCurrentDirAsDirHist(); - UpLoadListProc(YES, NO); + UploadListProc(YES, NO); break; case MENU_UPLOAD_ALL : SetCurrentDirAsDirHist(); - UpLoadListProc(NO, YES); + UploadListProc(NO, YES); break; case MENU_MIRROR_UPLOAD : @@ -1343,7 +1363,7 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA case MENU_REGSAVE : GetListTabWidth(); - SaveRegistory(); + SaveRegistry(); SaveSettingsToFile(); break; @@ -1359,7 +1379,7 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA case MENU_REGINIT : if(DialogBox(hInstFtp, MAKEINTRESOURCE(reginit_dlg), hWnd, ExeEscDialogProc) == YES) { - ClearRegistory(); + ClearRegistry(); SaveExit = NO; PostMessage(hWnd, WM_CLOSE, 0, 0L); } @@ -2066,7 +2086,7 @@ static void ExitProc(HWND hWnd) if(SaveExit == YES) { GetListTabWidth(); - SaveRegistory(); + SaveRegistry(); if((CacheEntry > 0) && (CacheSave == YES)) SaveCache(); @@ -2127,7 +2147,9 @@ void DoubleClickProc(int Win, int Mode, int App) if(Win == WIN_LOCAL) { - if((App != -1) || (Type == NODE_FILE)) + // ローカルフォルダを開く +// if((App != -1) || (Type == NODE_FILE)) + if((App != -1) || (Type == NODE_FILE) || (Mode == YES)) { if((DclickOpen == YES) || (Mode == YES)) { @@ -2204,12 +2226,12 @@ void DoubleClickProc(int Win, int Mode, int App) /* 不正なパスを検出 */ if(CheckPathViolation(&MainTransPkt) == NO) { -// if((Sts = DoDownLoad(AskCmdCtrlSkt(), &MainTransPkt, NO)) == 429) +// if((Sts = DoDownload(AskCmdCtrlSkt(), &MainTransPkt, NO)) == 429) // { // ReConnectCmdSkt(); // 同時接続対応 CancelFlg = NO; - Sts = DoDownLoad(AskCmdCtrlSkt(), &MainTransPkt, NO, &CancelFlg); + Sts = DoDownload(AskCmdCtrlSkt(), &MainTransPkt, NO, &CancelFlg); // } } @@ -2573,6 +2595,13 @@ void ExecViewer(char *Fname, int App) DoPrintf("ShellExecute - %s", Fname); ShellExecute(NULL, "open", Fname, NULL, CurDir, SW_SHOW); } + // ローカルフォルダを開く + else if((App == -1) && (GetFileAttributes(Fname) & FILE_ATTRIBUTE_DIRECTORY)) + { + MakeDistinguishableFileName(ComLine, Fname); + DoPrintf("ShellExecute - %s", Fname); + ShellExecute(NULL, "open", ComLine, NULL, Fname, SW_SHOW); + } else { App = max1(0, App);