OSDN Git Service

Modify documents.
[ffftp/ffftp.git] / main.c
diff --git a/main.c b/main.c
index 22573d5..60ef005 100644 (file)
--- a/main.c
+++ b/main.c
@@ -140,7 +140,9 @@ static char SSLRootCAFilePath[FMAX_PATH+1];
 static DWORD MainThreadId;\r
 // ポータブル版判定\r
 static char PortableFilePath[FMAX_PATH+1];\r
-int PortableVersion;\r
+static int PortableVersion;\r
+// ローカル側自動更新\r
+HANDLE ChangeNotification = INVALID_HANDLE_VALUE;\r
 \r
 \r
 /*===== グローバルなワーク =====*/\r
@@ -352,9 +354,6 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLi
        LoadOpenSSL();\r
 #endif\r
 \r
-       // SFTP対応\r
-       LoadPuTTY();\r
-\r
        Ret = FALSE;\r
        hWndFtp = NULL;\r
        hInstFtp = hInstance;\r
@@ -390,8 +389,6 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLi
 #ifdef USE_OPENSSL\r
        FreeOpenSSL();\r
 #endif\r
-       // SFTP対応\r
-       FreePuTTY();\r
        OleUninitialize();\r
        return(Ret);\r
 }\r
@@ -906,10 +903,34 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
 \r
        switch (message)\r
        {\r
+               // ローカル側自動更新\r
+               case WM_CREATE :\r
+                       SetTimer(hWnd, 1, 1000, NULL);\r
+                       break;\r
+\r
+               // ローカル側自動更新\r
                // 自動切断対策\r
                case WM_TIMER :\r
-                       if(wParam == 1)\r
+                       switch(wParam)\r
+                       {\r
+                       case 1:\r
+                               if(WaitForSingleObject(ChangeNotification, 0) == WAIT_OBJECT_0)\r
+                               {\r
+                                       if(AskUserOpeDisabled() == NO)\r
+                                       {\r
+                                               FILELIST* Base;\r
+                                               FindNextChangeNotification(ChangeNotification);\r
+                                               Base = NULL;\r
+                                               MakeSelectedFileList(WIN_LOCAL, NO, NO, &Base, &CancelFlg);\r
+                                               GetLocalDirForWnd();\r
+                                               SelectFileInList(GetLocalHwnd(), SELECT_LIST, Base);\r
+                                       }\r
+                               }\r
+                               break;\r
+                       case 2:\r
                                NoopProc();\r
+                               break;\r
+                       }\r
                        break;\r
 \r
                case WM_COMMAND :\r
@@ -921,20 +942,20 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
                        {\r
                                case MENU_CONNECT :\r
                                        // 自動切断対策\r
-                                       KillTimer(hWnd, 1);\r
+                                       KillTimer(hWnd, 2);\r
                                        ConnectProc(DLG_TYPE_CON, -1);\r
                                        // 自動切断対策\r
                                        if(AskNoopInterval() > 0)\r
-                                               SetTimer(hWnd, 1, AskNoopInterval() * 1000, NULL);\r
+                                               SetTimer(hWnd, 2, AskNoopInterval() * 1000, NULL);\r
                                        break;\r
 \r
                                case MENU_CONNECT_NUM :\r
                                        // 自動切断対策\r
-                                       KillTimer(hWnd, 1);\r
+                                       KillTimer(hWnd, 2);\r
                                        ConnectProc(DLG_TYPE_CON, (int)lParam);\r
                                        // 自動切断対策\r
                                        if(AskNoopInterval() > 0)\r
-                                               SetTimer(hWnd, 1, AskNoopInterval() * 1000, NULL);\r
+                                               SetTimer(hWnd, 2, AskNoopInterval() * 1000, NULL);\r
                                        if(AskConnecting() == YES)\r
                                        {\r
                                                if(HIWORD(wParam) & OPT_MIRROR)\r
@@ -956,20 +977,20 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
 \r
                                case MENU_SET_CONNECT :\r
                                        // 自動切断対策\r
-                                       KillTimer(hWnd, 1);\r
+                                       KillTimer(hWnd, 2);\r
                                        ConnectProc(DLG_TYPE_SET, -1);\r
                                        // 自動切断対策\r
                                        if(AskNoopInterval() > 0)\r
-                                               SetTimer(hWnd, 1, AskNoopInterval() * 1000, NULL);\r
+                                               SetTimer(hWnd, 2, AskNoopInterval() * 1000, NULL);\r
                                        break;\r
 \r
                                case MENU_QUICK :\r
                                        // 自動切断対策\r
-                                       KillTimer(hWnd, 1);\r
+                                       KillTimer(hWnd, 2);\r
                                        QuickConnectProc();\r
                                        // 自動切断対策\r
                                        if(AskNoopInterval() > 0)\r
-                                               SetTimer(hWnd, 1, AskNoopInterval() * 1000, NULL);\r
+                                               SetTimer(hWnd, 2, AskNoopInterval() * 1000, NULL);\r
                                        break;\r
 \r
                                case MENU_DISCONNECT :\r
@@ -1004,11 +1025,11 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
                                case MENU_HIST_19 :\r
                                case MENU_HIST_20 :\r
                                        // 自動切断対策\r
-                                       KillTimer(hWnd, 1);\r
+                                       KillTimer(hWnd, 2);\r
                                        HistoryConnectProc(LOWORD(wParam));\r
                                        // 自動切断対策\r
                                        if(AskNoopInterval() > 0)\r
-                                               SetTimer(hWnd, 1, AskNoopInterval() * 1000, NULL);\r
+                                               SetTimer(hWnd, 2, AskNoopInterval() * 1000, NULL);\r
                                        break;\r
 \r
                                case MENU_UPDIR :\r
@@ -1319,6 +1340,9 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
                                        break;\r
 \r
                                case REFRESH_LOCAL :\r
+                                       // デッドロック対策\r
+                                       if(AskUserOpeDisabled() == YES)\r
+                                               break;\r
                                        GetLocalDirForWnd();\r
                                        break;\r
 \r
@@ -1378,11 +1402,15 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
                                        break;\r
 \r
                                case MENU_SELECT_ALL :\r
-                                       SelectFileInList(hWndCurFocus, SELECT_ALL);\r
+                                       // ローカル側自動更新\r
+//                                     SelectFileInList(hWndCurFocus, SELECT_ALL);\r
+                                       SelectFileInList(hWndCurFocus, SELECT_ALL, NULL);\r
                                        break;\r
 \r
                                case MENU_SELECT :\r
-                                       SelectFileInList(hWndCurFocus, SELECT_REGEXP);\r
+                                       // ローカル側自動更新\r
+//                                     SelectFileInList(hWndCurFocus, SELECT_REGEXP);\r
+                                       SelectFileInList(hWndCurFocus, SELECT_REGEXP, NULL);\r
                                        break;\r
 \r
                                case MENU_FIND :\r
@@ -1768,6 +1796,10 @@ static LRESULT CALLBACK FtpWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARA
                        break;\r
 \r
                case WM_DESTROY :\r
+                       // ローカル側自動更新\r
+                       KillTimer(hWnd, 1);\r
+                       if(ChangeNotification != INVALID_HANDLE_VALUE)\r
+                               FindCloseChangeNotification(ChangeNotification);\r
 //                     WSACleanup();\r
 //                     DestroyWindow(hWndFtp);\r
                        PostQuitMessage(0);\r