OSDN Git Service

Update to 527f167018323178b17fe10649273092ed771b27 (1.98f).
authors_kawamoto <s_kawamoto@users.sourceforge.jp>
Mon, 2 Jul 2012 13:46:53 +0000 (22:46 +0900)
committers_kawamoto <s_kawamoto@users.sourceforge.jp>
Mon, 2 Jul 2012 13:46:53 +0000 (22:46 +0900)
37 files changed:
FFFTP_Eng_Release/FFFTP.exe
FFFTP_Eng_Release_64/FFFTP.exe
Package/EXEpress/eng/ffftp.ini
Package/EXEpress/jpn/ffftp.ini
Package/installer_config.bat
Release/FFFTP.exe
Release_64/FFFTP.exe
codecnv.c
common.h
config.h
connect.c
doc/eng/FFFTP.txt
doc/eng/history.txt
doc/jpn/FFFTP.txt
doc/jpn/history.txt
filelist.c
htmlhelp/FFFTP.CHM
htmlhelp/HTML/H0000001.HTM
htmlhelp/pic/dlg_bmark_edit.png
htmlhelp/pic/dlg_chattr.png
htmlhelp/pic/dlg_download.png
htmlhelp/pic/dlg_downmirror_list.png
htmlhelp/pic/dlg_downmirror_notify.png
htmlhelp/pic/dlg_downnotify.png
htmlhelp/pic/dlg_filter.png
htmlhelp/pic/dlg_mirror_list.png
htmlhelp/pic/dlg_mirror_notify.png
htmlhelp/pic/dlg_opt_trmode1.png
htmlhelp/pic/dlg_quick.png
htmlhelp/pic/dlg_upload.png
htmlhelp/pic/dlg_upnotify.png
htmlhelp/pic/main_filter.png
main.c
mbswrapper.c
mbswrapper.h
putty/Release/PuTTY.dll
putty/x64/Release/PuTTY.dll

index cff0ced..92a7e26 100644 (file)
Binary files a/FFFTP_Eng_Release/FFFTP.exe and b/FFFTP_Eng_Release/FFFTP.exe differ
index b0a6478..90697f0 100644 (file)
Binary files a/FFFTP_Eng_Release_64/FFFTP.exe and b/FFFTP_Eng_Release_64/FFFTP.exe differ
index e977dbe..f39752f 100644 (file)
@@ -5,7 +5,7 @@ ExtensionModuleDatFile=
 NoUI=0\r
 SrcArchiveFile=ffftp.cab\r
 DstExeFile=ffftp.exe\r
-DialogTitle=FFFTP Ver.1.98e\r
+DialogTitle=FFFTP Ver.1.98f\r
 ForFreeSoftWare=0\r
 EXEpressFor=EXEpress CX 5 Professional Licensed Edition\r
 Greeting0=Click Next button to start install...\r
@@ -104,7 +104,7 @@ StartMenu2_NoCreateInGroup=0
 UseUnInstall=1\r
 UseEXEpressUninstaller=1\r
 UseEXEpressUninstallerFolder=\r
-UnInstallTitle=FFFTP Ver.1.98e\r
+UnInstallTitle=FFFTP Ver.1.98f\r
 UnInstallKey=FFFTP\r
 UnInstallFile=\r
 UnInstallArgs=\r
index 85ad7b1..c108603 100644 (file)
@@ -5,7 +5,7 @@ ExtensionModuleDatFile=
 NoUI=0\r
 SrcArchiveFile=ffftp.cab\r
 DstExeFile=ffftp.exe\r
-DialogTitle=FFFTP Ver.1.98e\r
+DialogTitle=FFFTP Ver.1.98f\r
 ForFreeSoftWare=0\r
 EXEpressFor=EXEpress CX 5 Professional Licensed Edition\r
 Greeting0=FFFTP\82ð\83C\83\93\83X\83g\81[\83\8b\82µ\82Ü\82·\81B\r
@@ -114,7 +114,7 @@ StartMenu3_NoCreateInGroup=0
 UseUnInstall=1\r
 UseEXEpressUninstaller=1\r
 UseEXEpressUninstallerFolder=\r
-UnInstallTitle=FFFTP Ver.1.98e\r
+UnInstallTitle=FFFTP Ver.1.98f\r
 UnInstallKey=FFFTP\r
 UnInstallFile=\r
 UnInstallArgs=\r
index 9683510..be08e6f 100644 (file)
@@ -23,4 +23,4 @@ set DIR_JPN_DOC=..\doc\jpn
 set DIR_ENG_DOC=..\doc\eng\r
 set DIR_DIST=..\dist\r
 \r
-set FFFTP_VERSION=1.98e\r
+set FFFTP_VERSION=1.98f\r
index c7f1781..956d327 100644 (file)
Binary files a/Release/FFFTP.exe and b/Release/FFFTP.exe differ
index 24a0d29..67c099c 100644 (file)
Binary files a/Release_64/FFFTP.exe and b/Release_64/FFFTP.exe differ
index a313d1a..f9a9e37 100644 (file)
--- a/codecnv.c
+++ b/codecnv.c
@@ -1517,20 +1517,18 @@ int ConvUTF8NtoSJIS_TruncateToDelimiter(char* pUTF8, int UTF8Length, int* pNewUT
        {\r
                UTF8Length--;\r
                UTF16Length = MultiByteToWideChar(CP_UTF8, 0, pUTF8, UTF8Length, pUTF16, UTF16Length);\r
-               SJISLength = NewSJISLength;\r
                NewSJISLength = WideCharToMultiByte(CP_ACP, 0, pUTF16, UTF16Length, NULL, 0, NULL, NULL);\r
        }\r
        free(pUTF16);\r
        // UTF-16 LE変換した時に文字数が増減する位置がUTF-8の区切り\r
-       NewUTF16Length = UTF16Length;\r
-       while(UTF8Length > 0 && NewUTF16Length >= UTF16Length)\r
-       {\r
-               UTF8Length--;\r
-               UTF16Length = NewUTF16Length;\r
-               NewUTF16Length = MultiByteToWideChar(CP_UTF8, 0, pUTF8, UTF8Length, NULL, 0);\r
-       }\r
        if(pNewUTF8Length)\r
        {\r
+               NewUTF16Length = UTF16Length;\r
+               while(UTF8Length > 0 && NewUTF16Length >= UTF16Length)\r
+               {\r
+                       UTF8Length--;\r
+                       NewUTF16Length = MultiByteToWideChar(CP_UTF8, 0, pUTF8, UTF8Length, NULL, 0);\r
+               }\r
                if(UTF16Length > 0)\r
                        UTF8Length++;\r
                *pNewUTF8Length = UTF8Length;\r
@@ -1582,7 +1580,6 @@ int ConvUTF8NtoSJIS(CODECONVINFO *cInfo)
                        SrcLength = SrcLength / 2;\r
                }\r
        }\r
-       // UTF-8の場合、不完全な文字は常に変換されない\r
        UTF16Length = MultiByteToWideChar(CP_UTF8, 0, pSrc, SrcLength, NULL, 0);\r
 \r
        // サイズ0 or バッファサイズより大きい場合は\r
index 2bf2d55..99e68fb 100644 (file)
--- a/common.h
+++ b/common.h
 \r
 #define SELECT_ALL             0               /* 全選択 */\r
 #define SELECT_REGEXP  1               /* 検索式を入力して選択 */\r
+// ローカル側自動更新\r
+#define SELECT_LIST            2               /* リストに含まれるファイルを選択 */\r
 \r
 /*===== 検索方法 =====*/\r
 \r
@@ -1352,7 +1354,9 @@ void SetListViewType(void);
 void GetRemoteDirForWnd(int Mode, int *CancelCheckWork);\r
 void GetLocalDirForWnd(void);\r
 void ReSortDispList(int Win, int *CancelCheckWork);\r
-void SelectFileInList(HWND hWnd, int Type);\r
+// ローカル側自動更新\r
+//void SelectFileInList(HWND hWnd, int Type);\r
+void SelectFileInList(HWND hWnd, int Type, FILELIST *Base);\r
 void FindFileInList(HWND hWnd, int Type);\r
 // void WildCard2RegExp(char *Str);\r
 int GetCurrentItem(int Win);\r
index c6365fa..fd266f2 100644 (file)
--- a/config.h
+++ b/config.h
@@ -3,12 +3,6 @@
 #define HAVE_OPENVMS\r
 \r
 // 全体に影響する設定はここに記述する予定\r
-// 内部をUTF-8として扱いマルチバイト文字ワイド文字APIラッパーを使用する\r
-#include "mbswrapper.h"\r
-// OpenSSL用ソケットラッパーを使用する\r
-#include "socketwrapper.h"\r
-// プロセスをDLL Injectionから保護する\r
-#include "protectprocess.h"\r
 // 使用するCPUを1個に限定する(マルチコアCPUの特定環境下でファイル通信中にクラッシュするバグ対策)\r
 //#define DISABLE_MULTI_CPUS\r
 // ファイル転送用のネットワークバッファを無効にする(通信中止後にリモートのディレクトリが表示されないバグ対策)\r
 /* HP NonStop Server 用のコードを有効にする */\r
 #define HAVE_TANDEM\r
 \r
+// 内部をUTF-8として扱いマルチバイト文字ワイド文字APIラッパーを使用する\r
+#include "mbswrapper.h"\r
+// OpenSSL用ソケットラッパーを使用する\r
+#include "socketwrapper.h"\r
+// プロセスをDLL Injectionから保護する\r
+#include "protectprocess.h"\r
+\r
index fcb447d..989d550 100644 (file)
--- a/connect.c
+++ b/connect.c
@@ -1615,7 +1615,7 @@ static SOCKET DoConnectCrypt(int CryptMode, HOSTDATA* HostData, char *Host, char
                                                                // FTPES対応\r
                                                                if(CryptMode == CRYPT_FTPES)\r
                                                                {\r
-                                                                       if(IsOpenSSLLoaded() && (Sts = command(ContSock, Reply, CancelCheckWork, "AUTH TLS")) == 234)\r
+                                                                       if(IsOpenSSLLoaded() && ((Sts = command(ContSock, Reply, CancelCheckWork, "AUTH TLS")) == 234 || (Sts = command(ContSock, Reply, CancelCheckWork, "AUTH SSL")) == 234))\r
                                                                        {\r
                                                                                if(AttachSSL(ContSock, INVALID_SOCKET, CancelCheckWork))\r
                                                                                {\r
index e31face..c1a1f3d 100644 (file)
@@ -49,6 +49,14 @@ Changes in Ver.1.98f
 \r
 -- Extended command line options.\r
 \r
+-- Changed to try SSL when a host cannot recognize TLS on FTPS Explicit.\r
+\r
+-- Fixed bugs that corruption was caused when strings were converted from\r
+   UTF-8 to Shift_JIS on Windows Vista or later.\r
+\r
+-- Changed to refresh the local view automatically when files in the current\r
+   directory are modified.\r
+\r
 \r
 Outline\r
 -------\r
index c2d2fb5..113ab6f 100644 (file)
@@ -21,6 +21,14 @@ Changes in Ver.1.98f
 \r
 -- Extended command line options.\r
 \r
+-- Changed to try SSL when a host cannot recognize TLS on FTPS Explicit.\r
+\r
+-- Fixed bugs that corruption was caused when strings were converted from\r
+   UTF-8 to Shift_JIS on Windows Vista or later.\r
+\r
+-- Changed to refresh the local view automatically when files in the current\r
+   directory are modified.\r
+\r
 Changes in Ver.1.98e\r
 --------------------\r
 \r
index faa0c86..d7e2f37 100644 (file)
@@ -49,6 +49,15 @@ Ver 1.98f
 \r
 \81E\83R\83}\83\93\83h\83\89\83C\83\93\83I\83v\83V\83\87\83\93\82ð\8ag\92£\82µ\82Ü\82µ\82½\81B\r
 \r
+\81EFTPS Explicit\82Å\83z\83X\83g\82ªTLS\82ð\8eó\82¯\95t\82¯\82È\82¢\8fê\8d\87\82É\91±\82¯\82ÄSSL\82ð\8e\8e\82·\82æ\82¤\82É\r
+\81@\95Ï\8dX\82µ\82Ü\82µ\82½\81B\r
+\r
+\81EWindows Vista\88È\8d~\82Å\95\8e\9a\97ñ\82ªUTF-8\82©\82çShift_JIS\82Ö\95Ï\8a·\82³\82ê\82é\8e\9e\82É\94j\91¹\82·\82é\r
+\81@\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½\81B\r
+\r
+\81E\83\8d\81[\83J\83\8b\91¤\82Ì\83t\83H\83\8b\83_\93à\82Ì\83t\83@\83C\83\8b\82ª\95Ï\8dX\82³\82ê\82½\8e\9e\82É\83\8d\81[\83J\83\8b\91¤\82Ì\83t\83@\83C\83\8b\r
+\81@\88ê\97\97\82ð\8e©\93®\93I\82É\8dX\90V\82·\82é\82æ\82¤\82É\95Ï\8dX\82µ\82Ü\82µ\82½\81B\r
+\r
 \r
 Ver 1.96d\88È\91O\82Ö\96ß\82·\8fê\8d\87\r
 -----------------------\r
index f92b40a..9dd974e 100644 (file)
@@ -21,6 +21,15 @@ FFFTP
 \r
 \81E\83R\83}\83\93\83h\83\89\83C\83\93\83I\83v\83V\83\87\83\93\82ð\8ag\92£\82µ\82Ü\82µ\82½\81B\r
 \r
+\81EFTPS Explicit\82Å\83z\83X\83g\82ªTLS\82ð\8eó\82¯\95t\82¯\82È\82¢\8fê\8d\87\82É\91±\82¯\82ÄSSL\82ð\8e\8e\82·\82æ\82¤\82É\r
+\81@\95Ï\8dX\82µ\82Ü\82µ\82½\81B\r
+\r
+\81EWindows Vista\88È\8d~\82Å\95\8e\9a\97ñ\82ªUTF-8\82©\82çShift_JIS\82Ö\95Ï\8a·\82³\82ê\82é\8e\9e\82É\94j\91¹\82·\82é\r
+\81@\83o\83O\82ð\8fC\90³\82µ\82Ü\82µ\82½\81B\r
+\r
+\81E\83\8d\81[\83J\83\8b\91¤\82Ì\83t\83H\83\8b\83_\93à\82Ì\83t\83@\83C\83\8b\82ª\95Ï\8dX\82³\82ê\82½\8e\9e\82É\83\8d\81[\83J\83\8b\91¤\82Ì\83t\83@\83C\83\8b\r
+\81@\88ê\97\97\82ð\8e©\93®\93I\82É\8dX\90V\82·\82é\82æ\82¤\82É\95Ï\8dX\82µ\82Ü\82µ\82½\81B\r
+\r
 \81¡Ver 1.98e\r
 \r
 \81E\83z\83X\83g\82Ì\83p\83X\83\8f\81[\83h\82ª\90³\82µ\82­\82È\82¢\8fê\8d\87\82É\83p\83X\83\8f\81[\83h\82ð\8eè\93®\82Å\8dÄ\93x\93ü\97Í\82µ\82Ä\82à\r
index 74d14bb..78bcb12 100644 (file)
@@ -126,6 +126,8 @@ extern char FilterStr[FILTER_EXT_LEN+1];
 extern HWND hHelpWin;\r
 // 外部アプリケーションへドロップ後にローカル側のファイル一覧に作業フォルダが表示されるバグ対策\r
 extern int SuppressRefresh;\r
+// ローカル側自動更新\r
+extern HANDLE ChangeNotification;\r
 \r
 /* 設定値 */\r
 extern int LocalWidth;\r
@@ -1385,7 +1387,7 @@ void RefreshIconImageList(FLISTANCHOR *Anchor)
                                SetYenTail(Cur);\r
                                strcat(Cur, Pos->File);\r
                        }\r
-                       if(SHGetFileInfoM(Cur, 0, &FileInfo, sizeof(SHFILEINFO), SHGFI_SMALLICON | SHGFI_ICON) != 0)\r
+                       if(SHGetFileInfo(Cur, 0, &FileInfo, sizeof(SHFILEINFO), SHGFI_SMALLICON | SHGFI_ICON) != 0)\r
                        {\r
                                if(ImageList_AddIcon(ListImgFileIcon, FileInfo.hIcon) >= 0)\r
                                {\r
@@ -1429,6 +1431,11 @@ void GetLocalDirForWnd(void)
        SetLocalDirHist(Scan);\r
        DispLocalFreeSpace(Scan);\r
 \r
+       // ローカル側自動更新\r
+       if(ChangeNotification != INVALID_HANDLE_VALUE)\r
+               FindCloseChangeNotification(ChangeNotification);\r
+       ChangeNotification = FindFirstChangeNotification(Scan, FALSE, FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_DIR_NAME | FILE_NOTIFY_CHANGE_ATTRIBUTES | FILE_NOTIFY_CHANGE_SIZE | FILE_NOTIFY_CHANGE_LAST_WRITE);\r
+\r
        /* ディレクトリ/ファイル */\r
 \r
        SetYenTail(Scan);\r
@@ -1583,20 +1590,36 @@ static void AddDispFileList(FLISTANCHOR *Anchor, char *Name, FILETIME *Time, LON
                        }\r
                        else\r
                        {\r
+                               // 読みにくいのでリファクタリング\r
+//                             if((((Sort & SORT_MASK_ORD) == SORT_EXT) &&\r
+//                                     ((Cmp = _mbsicmp(GetFileExt(Name), GetFileExt(Pos->File))) > 0)) ||\r
+//#if defined(HAVE_TANDEM)\r
+//                                ((AskHostType() == HTYPE_TANDEM) &&\r
+//                                 ((Sort & SORT_MASK_ORD) == SORT_EXT) &&\r
+//                                     ((Cmp = Attr - Pos->Attr) > 0)) ||\r
+//#endif\r
+//                                (((Sort & SORT_MASK_ORD) == SORT_SIZE) &&\r
+//                                     ((Cmp = Size - Pos->Size) > 0)) ||\r
+//                                (((Sort & SORT_MASK_ORD) == SORT_DATE) &&\r
+//                                     ((Cmp = CompareFileTime(Time, &Pos->Time)) > 0)))\r
+//                             {\r
+//                                     break;\r
+//                             }\r
                                if((((Sort & SORT_MASK_ORD) == SORT_EXT) &&\r
-                                       ((Cmp = _mbsicmp(GetFileExt(Name), GetFileExt(Pos->File))) > 0)) ||\r
+                                       ((Cmp = _mbsicmp(GetFileExt(Name), GetFileExt(Pos->File))) > 0)))\r
+                                       break;\r
 #if defined(HAVE_TANDEM)\r
-                                  ((AskHostType() == HTYPE_TANDEM) &&\r
+                               if(((AskHostType() == HTYPE_TANDEM) &&\r
                                    ((Sort & SORT_MASK_ORD) == SORT_EXT) &&\r
-                                       ((Cmp = Attr - Pos->Attr) > 0)) ||\r
+                                       ((Cmp = Attr - Pos->Attr) > 0)))\r
+                                       break;\r
 #endif\r
-                                  (((Sort & SORT_MASK_ORD) == SORT_SIZE) &&\r
-                                       ((Cmp = Size - Pos->Size) > 0)) ||\r
-                                  (((Sort & SORT_MASK_ORD) == SORT_DATE) &&\r
-                                       ((Cmp = CompareFileTime(Time, &Pos->Time)) > 0)))\r
-                               {\r
+                               if(((Sort & SORT_MASK_ORD) == SORT_SIZE) &&\r
+                                       ((Cmp = Size - Pos->Size) > 0))\r
+                                       break;\r
+                               if(((Sort & SORT_MASK_ORD) == SORT_DATE) &&\r
+                                       ((Cmp = CompareFileTime(Time, &Pos->Time)) > 0))\r
                                        break;\r
-                               }\r
 \r
                                if(((Sort & SORT_MASK_ORD) == SORT_NAME) || (Cmp == 0))\r
                                {\r
@@ -1837,7 +1860,9 @@ void ReSortDispList(int Win, int *CancelCheckWork)
 *              なし\r
 *----------------------------------------------------------------------------*/\r
 \r
-void SelectFileInList(HWND hWnd, int Type)\r
+// ローカル側自動更新\r
+//void SelectFileInList(HWND hWnd, int Type)\r
+void SelectFileInList(HWND hWnd, int Type, FILELIST *Base)\r
 {\r
        int Win;\r
        int WinDst;\r
@@ -1955,6 +1980,22 @@ void SelectFileInList(HWND hWnd, int Type)
                                }\r
                        }\r
                        break;\r
+\r
+               // ローカル側自動更新\r
+               case SELECT_LIST :\r
+                       for(i = 0; i < Num; i++)\r
+                       {\r
+                               LvItem.state = 0;\r
+                               GetNodeName(Win, i, Name, FMAX_PATH);\r
+                               if(SearchFileList(Name, Base, COMP_STRICT) != NULL)\r
+                                       LvItem.state = LVIS_SELECTED;\r
+                               LvItem.mask = LVIF_STATE;\r
+                               LvItem.iItem = i;\r
+                               LvItem.stateMask = LVIS_SELECTED;\r
+                               LvItem.iSubItem = 0;\r
+                               SendMessage(hWnd, LVM_SETITEMSTATE, i, (LPARAM)&LvItem);\r
+                       }\r
+                       break;\r
        }\r
        return;\r
 }\r
index 4a1911d..c3c3527 100644 (file)
Binary files a/htmlhelp/FFFTP.CHM and b/htmlhelp/FFFTP.CHM differ
index d898576..01bbdc6 100644 (file)
@@ -24,7 +24,5 @@ color=#ff0000>
 <P>\81\99\83~\83\89\81[\83\8a\83\93\83O\8b@\94\\82É\82æ\82è\81A\83\8d\81[\83J\83\8b\91¤\82Ì\83t\83@\83C\83\8b\8d\\90¬\82ð\82»\82Ì\82Ü\82Ü\83z\83X\83g\91¤\82É\8dÄ\8c»\82Å\82«\82Ü\82·\81BWeb\83y\81[\83W\82Ì\83t\83@\83C\83\8b\93]\91\97\82È\82Ç\82É\95Ö\97\98\82Å\82·\81B</P>\r
 <P><BR><STRONG>\93®\8dì\8am\94F\8aÂ\8b«</STRONG></P>\r
 <P style="MARGIN-RIGHT: 0px" \r
-dir=ltr>FFFTP\82Í\88È\89º\82Ì\8aÂ\8b«\82Å\93®\8dì\82ð\8am\94F\82µ\82Ä\82¢\82Ü\82·\81B<BR>&nbsp;&nbsp;&nbsp; Windows&nbsp;7 \r
-(32bit)<BR>&nbsp;&nbsp;&nbsp; Windows Vista (32bit)<BR>&nbsp;&nbsp;&nbsp; \r
-Windows XP (32bit)<BR>&nbsp;&nbsp;&nbsp; Windows 2000</P>\r
+dir=ltr>FFFTP\82Í\88È\89º\82Ì\8aÂ\8b«\82Å\93®\8dì\82ð\8am\94F\82µ\82Ä\82¢\82Ü\82·\81B<BR>&nbsp;&nbsp;&nbsp; Windows&nbsp;7 (32bit/64bit)<BR>&nbsp;&nbsp;&nbsp; Windows Vista (32bit/64bit)<BR>&nbsp;&nbsp;&nbsp; Windows XP (32bit)<BR>&nbsp;&nbsp;&nbsp; Windows 2000</P>\r
 <P style="MARGIN-RIGHT: 0px" dir=ltr>&nbsp;</P></BODY></HTML>\r
index e097433..259f6a8 100644 (file)
Binary files a/htmlhelp/pic/dlg_bmark_edit.png and b/htmlhelp/pic/dlg_bmark_edit.png differ
index 136561f..c47d197 100644 (file)
Binary files a/htmlhelp/pic/dlg_chattr.png and b/htmlhelp/pic/dlg_chattr.png differ
index a5c4604..24eb74d 100644 (file)
Binary files a/htmlhelp/pic/dlg_download.png and b/htmlhelp/pic/dlg_download.png differ
index 0a45a35..911147d 100644 (file)
Binary files a/htmlhelp/pic/dlg_downmirror_list.png and b/htmlhelp/pic/dlg_downmirror_list.png differ
index 5e4a0c6..7c3c072 100644 (file)
Binary files a/htmlhelp/pic/dlg_downmirror_notify.png and b/htmlhelp/pic/dlg_downmirror_notify.png differ
index d6a6670..c39d617 100644 (file)
Binary files a/htmlhelp/pic/dlg_downnotify.png and b/htmlhelp/pic/dlg_downnotify.png differ
index ee159e2..c54c85a 100644 (file)
Binary files a/htmlhelp/pic/dlg_filter.png and b/htmlhelp/pic/dlg_filter.png differ
index cfa25fc..b6285fc 100644 (file)
Binary files a/htmlhelp/pic/dlg_mirror_list.png and b/htmlhelp/pic/dlg_mirror_list.png differ
index 80dd6dd..4ca3138 100644 (file)
Binary files a/htmlhelp/pic/dlg_mirror_notify.png and b/htmlhelp/pic/dlg_mirror_notify.png differ
index 67c70bb..ef268d8 100644 (file)
Binary files a/htmlhelp/pic/dlg_opt_trmode1.png and b/htmlhelp/pic/dlg_opt_trmode1.png differ
index d89c8cd..6292741 100644 (file)
Binary files a/htmlhelp/pic/dlg_quick.png and b/htmlhelp/pic/dlg_quick.png differ
index b3d4ffb..0e8fac1 100644 (file)
Binary files a/htmlhelp/pic/dlg_upload.png and b/htmlhelp/pic/dlg_upload.png differ
index 41e4ee6..ec1690e 100644 (file)
Binary files a/htmlhelp/pic/dlg_upnotify.png and b/htmlhelp/pic/dlg_upnotify.png differ
index 71fe83e..5d1a00c 100644 (file)
Binary files a/htmlhelp/pic/main_filter.png and b/htmlhelp/pic/main_filter.png differ
diff --git a/main.c b/main.c
index 22573d5..022eb95 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
@@ -906,10 +908,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 +947,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 +982,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 +1030,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 +1345,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 +1407,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 +1801,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
index a051543..fa04fee 100644 (file)
@@ -715,6 +715,7 @@ int MultiByteToWideCharAlternative(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiB
        LPCSTR pMultiLimit;\r
        LPWSTR pWideLimit;\r
        DWORD Code;\r
+       int TempCount;\r
        WCHAR Temp[8];\r
        if(CodePage != CP_UTF8 || dwFlags != 0)\r
                return MultiByteToWideChar(CodePage, dwFlags, lpMultiByteStr, cbMultiByte, lpWideCharStr, cchWideChar);\r
@@ -731,8 +732,9 @@ int MultiByteToWideCharAlternative(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiB
                        continue;\r
                if(lpWideCharStr)\r
                {\r
-                       WideCount += PutNextCharW(lpWideCharStr, pWideLimit, &lpWideCharStr, Code);\r
-                       if(lpWideCharStr >= pWideLimit)\r
+                       TempCount = PutNextCharW(lpWideCharStr, pWideLimit, &lpWideCharStr, Code);\r
+                       WideCount += TempCount;\r
+                       if(TempCount == 0 && lpWideCharStr >= pWideLimit)\r
                        {\r
                                WideCount = 0;\r
                                break;\r
@@ -752,6 +754,7 @@ int WideCharToMultiByteAlternative(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideC
        LPCWSTR pWideLimit;\r
        LPSTR pMultiLimit;\r
        DWORD Code;\r
+       int TempCount;\r
        CHAR Temp[8];\r
        if(CodePage != CP_UTF8 || dwFlags != 0)\r
                return WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, lpMultiByteStr, cbMultiByte, lpDefaultChar, lpUsedDefaultChar);\r
@@ -768,8 +771,9 @@ int WideCharToMultiByteAlternative(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideC
                        continue;\r
                if(lpMultiByteStr)\r
                {\r
-                       MultiCount += PutNextCharM(lpMultiByteStr, pMultiLimit, &lpMultiByteStr, Code);\r
-                       if(lpMultiByteStr >= pMultiLimit)\r
+                       TempCount = PutNextCharM(lpMultiByteStr, pMultiLimit, &lpMultiByteStr, Code);\r
+                       MultiCount += TempCount;\r
+                       if(TempCount == 0 && lpMultiByteStr >= pMultiLimit)\r
                        {\r
                                MultiCount = 0;\r
                                break;\r
@@ -894,6 +898,18 @@ END_ROUTINE
        return r;\r
 }\r
 \r
+HANDLE FindFirstChangeNotificationM(LPCSTR lpPathName, BOOL bWatchSubtree, DWORD dwNotifyFilter)\r
+{\r
+       HANDLE r = INVALID_HANDLE_VALUE;\r
+       wchar_t* pw0 = NULL;\r
+START_ROUTINE\r
+       pw0 = DuplicateMtoW(lpPathName, -1);\r
+       r = FindFirstChangeNotificationW(pw0, bWatchSubtree, dwNotifyFilter);\r
+END_ROUTINE\r
+       FreeDuplicatedString(pw0);\r
+       return r;\r
+}\r
+\r
 DWORD GetLogicalDriveStringsM(DWORD nBufferLength, LPSTR lpBuffer)\r
 {\r
        DWORD r = 0;\r
index 0fa455f..14fe3a5 100644 (file)
@@ -29,6 +29,9 @@ HANDLE FindFirstFileM(LPCSTR lpFileName, LPWIN32_FIND_DATAA lpFindFileData);
 #undef FindNextFile\r
 #define FindNextFile FindNextFileM\r
 BOOL FindNextFileM(HANDLE hFindFile, LPWIN32_FIND_DATAA lpFindFileData);\r
+#undef FindFirstChangeNotification\r
+#define FindFirstChangeNotification FindFirstChangeNotificationM\r
+HANDLE FindFirstChangeNotificationM(LPCSTR lpPathName, BOOL bWatchSubtree, DWORD dwNotifyFilter);\r
 #undef GetLogicalDriveStrings\r
 #define GetLogicalDriveStrings GetLogicalDriveStringsM\r
 DWORD GetLogicalDriveStringsM(DWORD nBufferLength, LPSTR lpBuffer);\r
index 42572d6..481791f 100644 (file)
Binary files a/putty/Release/PuTTY.dll and b/putty/Release/PuTTY.dll differ
index ae14f4e..9371ddb 100644 (file)
Binary files a/putty/x64/Release/PuTTY.dll and b/putty/x64/Release/PuTTY.dll differ