OSDN Git Service

Add options to control the behavior of mirroring transfer.
authors_kawamoto <s_kawamoto@users.sourceforge.jp>
Sat, 6 Dec 2014 05:02:17 +0000 (14:02 +0900)
committers_kawamoto <s_kawamoto@users.sourceforge.jp>
Sat, 6 Dec 2014 05:02:17 +0000 (14:02 +0900)
12 files changed:
FFFTP_Eng_Release/FFFTP.exe
Release/FFFTP.exe
Resource/FFFTP.rc
Resource/resource.h
Resource_eng/ffftp.rc
Resource_eng/resource.h
common.h
ftpproc.c
getput.c
main.c
option.c
registry.c

index ce2f85a..a900f3c 100644 (file)
Binary files a/FFFTP_Eng_Release/FFFTP.exe and b/FFFTP_Eng_Release/FFFTP.exe differ
index b003581..209dc79 100644 (file)
Binary files a/Release/FFFTP.exe and b/Release/FFFTP.exe differ
index 62f2272..4a7be91 100644 (file)
@@ -929,6 +929,7 @@ BEGIN
     CONTROL         "\83~\83\89\81[\83\8a\83\93\83O\83A\83b\83v\83\8d\81[\83h\82Å\83t\83@\83C\83\8b\8dí\8f\9c\91O\82É\8am\94F(&U)",MIRROR_UPDEL_NOTIFY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,111,174,10\r
     CONTROL         "\83~\83\89\81[\83\8a\83\93\83O\83_\83E\83\93\83\8d\81[\83h\82Å\83t\83@\83C\83\8b\8dí\8f\9c\91O\82É\8am\94F(&D)",MIRROR_DOWNDEL_NOTIFY,\r
                     "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,125,174,10\r
+    CONTROL         "\83~\83\89\81[\83\8a\83\93\83O\82Å\83t\83@\83C\83\8b\93à\97e\82ð\93]\91\97\82µ\82È\82¢(&F)",MIRROR_NO_TRANSFER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,139,174,10\r
 END\r
 \r
 somecmd_dlg DIALOG  0, 0, 187, 61\r
@@ -1111,11 +1112,12 @@ FONT 9, "MS Shell Dlg", 0, 0, 0x0
 BEGIN\r
     LTEXT           "\8e\9f\82Ì\83t\83@\83C\83\8b\82ð\93]\91\97/\8dí\8f\9c\82µ\82Ü\82·\81B",-1,7,6,160,8\r
     LISTBOX         MIRROR_LIST,7,16,160,78,LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | WS_TABSTOP\r
+    CONTROL         "\83t\83@\83C\83\8b\93à\97e\82ð\93]\91\97\82µ\82È\82¢(&F)",MIRROR_NO_TRANSFER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,98,98,10\r
     DEFPUSHBUTTON   "\8eÀ\8ds",IDOK,7,153,50,14\r
     PUSHBUTTON      "\83L\83\83\83\93\83Z\83\8b",IDCANCEL,62,153,50,14\r
     SCROLLBAR       MIRROR_SIZEGRIP,164,158,10,13,SBS_BOTTOMALIGN | SBS_VERT | SBS_SIZEGRIP\r
     PUSHBUTTON      "\83w\83\8b\83v",9,117,153,50,14\r
-    PUSHBUTTON      "\91I\82ñ\82¾\8f\88\97\9d\82ð\82µ\82È\82¢",MIRROR_DEL,96,96,71,14,NOT WS_TABSTOP\r
+    PUSHBUTTON      "\88ê\97\97\82©\82ç\8dí\8f\9c",MIRROR_DEL,111,96,56,14,NOT WS_TABSTOP\r
     LTEXT           "",MIRROR_COPYNUM,7,115,160,8\r
     LTEXT           "",MIRROR_MAKENUM,7,126,160,8\r
     LTEXT           "",MIRROR_DELNUM,7,137,160,8\r
@@ -1126,8 +1128,9 @@ STYLE DS_LOCALEDIT | DS_SETFONT | WS_POPUP | WS_CLIPCHILDREN | WS_CAPTION | WS_S
 CAPTION "\83~\83\89\81[\83\8a\83\93\83O\83_\83E\83\93\83\8d\81[\83h"\r
 FONT 9, "MS Shell Dlg"\r
 BEGIN\r
-    LTEXT           "\8e\9f\82Ì\8f\88\97\9d\82ð\8ds\82¢\82Ü\82·\81B",-1,7,6,92,8\r
+    LTEXT           "\8e\9f\82Ì\83t\83@\83C\83\8b\82ð\93]\91\97/\8dí\8f\9c\82µ\82Ü\82·\81B",-1,7,6,160,8\r
     LISTBOX         MIRROR_LIST,7,16,160,78,LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | WS_TABSTOP\r
+    CONTROL         "\83t\83@\83C\83\8b\93à\97e\82ð\93]\91\97\82µ\82È\82¢(&F)",MIRROR_NO_TRANSFER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,98,98,10\r
     DEFPUSHBUTTON   "\8eÀ\8ds",IDOK,7,153,50,14\r
     PUSHBUTTON      "\83L\83\83\83\93\83Z\83\8b",IDCANCEL,62,153,50,14\r
     SCROLLBAR       MIRROR_SIZEGRIP,164,158,10,13,SBS_BOTTOMALIGN | SBS_VERT | SBS_SIZEGRIP\r
@@ -2223,7 +2226,7 @@ VS_VERSION_INFO VERSIONINFO
 BEGIN\r
     BLOCK "StringFileInfo"\r
     BEGIN\r
-        BLOCK "041104b0"\r
+        BLOCK "080004b0"\r
         BEGIN\r
             VALUE "Comments", "\82±\82ê\82Í\83t\83\8a\81[\83\\83t\83g\83E\83G\83A\82Å\82·\81B"\r
             VALUE "CompanyName", "Sota, FFFTP Project"\r
@@ -2238,7 +2241,7 @@ BEGIN
     END\r
     BLOCK "VarFileInfo"\r
     BEGIN\r
-        VALUE "Translation", 0x411, 1200\r
+        VALUE "Translation", 0x800, 1200\r
     END\r
 END\r
 \r
index b0bc357..6f5ab7a 100644 (file)
 #define HSET_NO_WEAK                    1226\r
 #define HOST_SET_DEFAULT                1227\r
 #define TRMODE_LISTERROR                1228\r
+#define MIRROR_NO_TRANSFER              1229\r
 #define MENU_END                        40001\r
 #define MENU_EXIT                       40001\r
 #define MENU_CONNECT                    40003\r
 #ifndef APSTUDIO_READONLY_SYMBOLS\r
 #define _APS_NEXT_RESOURCE_VALUE        199\r
 #define _APS_NEXT_COMMAND_VALUE         40182\r
-#define _APS_NEXT_CONTROL_VALUE         1229\r
+#define _APS_NEXT_CONTROL_VALUE         1230\r
 #define _APS_NEXT_SYMED_VALUE           101\r
 #endif\r
 #endif\r
index 844b15c..2dc41d6 100644 (file)
@@ -948,6 +948,8 @@ BEGIN
                     "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,111,174,10\r
     CONTROL         "Confirm deletions during Mirror &Download",MIRROR_DOWNDEL_NOTIFY,\r
                     "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,125,174,10\r
+    CONTROL         "Do not transfer &file contents during Mirroring",MIRROR_NO_TRANSFER,\r
+                    "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,139,174,10\r
 END\r
 \r
 somecmd_dlg DIALOG  0, 0, 187, 61\r
@@ -1142,6 +1144,7 @@ FONT 9, "MS Shell Dlg"
 BEGIN\r
     LTEXT           "Copy/Delete following files",-1,7,6,160,8\r
     LISTBOX         MIRROR_LIST,7,16,160,78,LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | WS_TABSTOP\r
+    CONTROL         "Do not transfer &file contents",MIRROR_NO_TRANSFER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,98,98,10\r
     DEFPUSHBUTTON   "Start Now",IDOK,7,153,50,14\r
     PUSHBUTTON      "Cancel",IDCANCEL,62,153,50,14\r
     SCROLLBAR       MIRROR_SIZEGRIP,164,158,10,13,SBS_BOTTOMALIGN | SBS_VERT | SBS_SIZEGRIP\r
@@ -1157,8 +1160,9 @@ STYLE DS_LOCALEDIT | DS_SETFONT | WS_POPUP | WS_CLIPCHILDREN | WS_CAPTION | WS_S
 CAPTION "Mirror Download"\r
 FONT 9, "MS Shell Dlg"\r
 BEGIN\r
-    LTEXT           "Copy/Delete following files",-1,7,6,92,8\r
+    LTEXT           "Copy/Delete following files",-1,7,6,160,8\r
     LISTBOX         MIRROR_LIST,7,16,160,78,LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL | WS_TABSTOP\r
+    CONTROL         "Do not transfer &file contents",MIRROR_NO_TRANSFER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,98,98,10\r
     DEFPUSHBUTTON   "Start Now",IDOK,7,153,50,14\r
     PUSHBUTTON      "Cancel",IDCANCEL,62,153,50,14\r
     SCROLLBAR       MIRROR_SIZEGRIP,164,158,10,13,SBS_BOTTOMALIGN | SBS_VERT | SBS_SIZEGRIP\r
@@ -2259,7 +2263,7 @@ VS_VERSION_INFO VERSIONINFO
 BEGIN\r
     BLOCK "StringFileInfo"\r
     BEGIN\r
-        BLOCK "041104b0"\r
+        BLOCK "040904b0"\r
         BEGIN\r
             VALUE "Comments", "This software is Free Software"\r
             VALUE "CompanyName", "Sota, FFFTP Project"\r
@@ -2274,7 +2278,7 @@ BEGIN
     END\r
     BLOCK "VarFileInfo"\r
     BEGIN\r
-        VALUE "Translation", 0x411, 1200\r
+        VALUE "Translation", 0x409, 1200\r
     END\r
 END\r
 \r
index 630cbfa..6f5ab7a 100644 (file)
@@ -1,6 +1,6 @@
 //{{NO_DEPENDENCIES}}\r
 // Microsoft Visual C++ generated include file.\r
-// Used by FFFTP-eng.rc\r
+// Used by ffftp.rc\r
 //\r
 #define DELETE_ALL                      3\r
 #define DELETE_NO                       4\r
 #define HSET_NO_WEAK                    1226\r
 #define HOST_SET_DEFAULT                1227\r
 #define TRMODE_LISTERROR                1228\r
+#define MIRROR_NO_TRANSFER              1229\r
 #define MENU_END                        40001\r
 #define MENU_EXIT                       40001\r
 #define MENU_CONNECT                    40003\r
 #ifndef APSTUDIO_READONLY_SYMBOLS\r
 #define _APS_NEXT_RESOURCE_VALUE        199\r
 #define _APS_NEXT_COMMAND_VALUE         40182\r
-#define _APS_NEXT_CONTROL_VALUE         1229\r
+#define _APS_NEXT_CONTROL_VALUE         1230\r
 #define _APS_NEXT_SYMED_VALUE           101\r
 #endif\r
 #endif\r
index 83ff79c..4a6a88e 100644 (file)
--- a/common.h
+++ b/common.h
@@ -1159,6 +1159,8 @@ typedef struct transpacket {
 #endif\r
        HWND hWndTrans;                                 /* 転送中ダイアログのウインドウハンドル */\r
        int Abort;                                              /* 転送中止フラグ (ABORT_xxx) */\r
+       // ミラーリング設定追加\r
+       int NoTransfer;\r
        // 同時接続対応\r
        int ThreadCount;\r
        struct transpacket *Next;\r
index 383c462..e0a9240 100644 (file)
--- a/ftpproc.c
+++ b/ftpproc.c
@@ -112,6 +112,8 @@ extern int CancelFlg;
 extern int MakeAllDir;\r
 // ファイル一覧バグ修正\r
 extern int AbortOnListError;\r
+// ミラーリング設定追加\r
+extern int MirrorNoTransferContents; \r
 \r
 /*===== ローカルなワーク =====*/\r
 \r
@@ -688,6 +690,8 @@ void MirrorDownloadProc(int Notify)
                                                Pkt.KanjiCodeDesired = AskLocalKanjiCode();\r
                                                Pkt.KanaCnv = AskHostKanaCnv();\r
                                                Pkt.Mode = EXIST_OVW;\r
+                                               // ミラーリング設定追加\r
+                                               Pkt.NoTransfer = MirrorNoTransferContents;\r
                                                AddTmpTransFileList(&Pkt, &Base);\r
                                        }\r
                                }\r
@@ -1693,6 +1697,8 @@ void MirrorUploadProc(int Notify)
                                                }\r
 #endif\r
                                                Pkt.Mode = EXIST_OVW;\r
+                                               // ミラーリング設定追加\r
+                                               Pkt.NoTransfer = MirrorNoTransferContents;\r
                                                AddTmpTransFileList(&Pkt, &Base);\r
                                        }\r
                                }\r
@@ -1890,6 +1896,8 @@ static INT_PTR CALLBACK MirrorDispListCallBack(HWND hDlg, UINT iMessage, WPARAM
                        CountMirrorFiles(hDlg, *Base);\r
                        DlgSizeInit(hDlg, &DlgSize, &MirrorDlgSize);\r
                        EnableWindow(GetDlgItem(hDlg, MIRROR_DEL), FALSE);\r
+                       // ミラーリング設定追加\r
+                       SendDlgItemMessage(hDlg, MIRROR_NO_TRANSFER, BM_SETCHECK, MirrorNoTransferContents, 0);\r
                        return(TRUE);\r
 \r
                case WM_COMMAND :\r
@@ -1934,6 +1942,17 @@ static INT_PTR CALLBACK MirrorDispListCallBack(HWND hDlg, UINT iMessage, WPARAM
                                        }\r
                                        break;\r
 \r
+                               // ミラーリング設定追加\r
+                               case MIRROR_NO_TRANSFER :\r
+                                       Pos = *Base;\r
+                                       while(Pos != NULL)\r
+                                       {\r
+                                               if(strncmp(Pos->Cmd, "STOR", 4) == 0 || strncmp(Pos->Cmd, "RETR", 4) == 0)\r
+                                                       Pos->NoTransfer = SendDlgItemMessage(hDlg, MIRROR_NO_TRANSFER, BM_GETCHECK, 0, 0);\r
+                                               Pos = Pos->Next;\r
+                                       }\r
+                                       break;\r
+\r
                                case IDHELP :\r
                                        hHelpWin = HtmlHelp(NULL, AskHelpFilePath(), HH_HELP_CONTEXT, IDH_HELP_TOPIC_0000012);\r
                        }\r
index d542b53..f2eea10 100644 (file)
--- a/getput.c
+++ b/getput.c
@@ -84,6 +84,8 @@ static void DispTransPacket(TRANSPACKET *Pkt);
 static void EraseTransFileList(void);\r
 static ULONG WINAPI TransferThread(void *Dummy);\r
 static int MakeNonFullPath(TRANSPACKET *Pkt, char *CurDir, char *Tmp);\r
+// ミラーリング設定追加\r
+static int SetDownloadedFileTime(TRANSPACKET *Pkt);\r
 static int DownloadNonPassive(TRANSPACKET *Pkt, int *CancelCheckWork);\r
 static int DownloadPassive(TRANSPACKET *Pkt, int *CancelCheckWork);\r
 static int DownloadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *CancelCheckWork);\r
@@ -930,10 +932,20 @@ static ULONG WINAPI TransferThread(void *Dummy)
 //                                             {\r
 //                                                     if(ReConnectTrnSkt() == FFFTP_SUCCESS)\r
 //                                                             DoDownload(AskTrnCtrlSkt(), TransPacketBase, NO, &Canceled);\r
+                                               // ミラーリング設定追加\r
+                                               if(Pos->NoTransfer == NO)\r
+                                               {\r
                                                                Sts = DoDownload(TrnSkt, Pos, NO, &Canceled[Pos->ThreadCount]) / 100;\r
                                                                if(Sts != FTP_COMPLETE)\r
                                                                        LastError = YES;\r
-//                                             }\r
+                                               }\r
+\r
+                                               // ミラーリング設定追加\r
+                                               if((SaveTimeStamp == YES) &&\r
+                                                  ((Pos->Time.dwLowDateTime != 0) || (Pos->Time.dwHighDateTime != 0)))\r
+                                               {\r
+                                                       SetDownloadedFileTime(Pos);\r
+                                               }\r
                                        }\r
                                }\r
                                // 一部TYPE、STOR(RETR)、PORT(PASV)を並列に処理できないホストがあるため\r
@@ -954,10 +966,13 @@ static ULONG WINAPI TransferThread(void *Dummy)
 //                                     {\r
 //                                             if(ReConnectTrnSkt() == FFFTP_SUCCESS)\r
 //                                                     DoUpload(AskTrnCtrlSkt(), TransPacketBase);\r
+                                       // ミラーリング設定追加\r
+                                       if(Pos->NoTransfer == NO)\r
+                                       {\r
                                                        Sts = DoUpload(TrnSkt, Pos) / 100;\r
                                                        if(Sts != FTP_COMPLETE)\r
                                                                LastError = YES;\r
-//                                     }\r
+                                       }\r
 \r
                                        // ホスト側の日時設定\r
                                        /* ファイルのタイムスタンプを合わせる */\r
@@ -1347,6 +1362,21 @@ static int MakeNonFullPath(TRANSPACKET *Pkt, char *Cur, char *Tmp)
 \r
 \r
 \r
+// ミラーリング設定追加\r
+static int SetDownloadedFileTime(TRANSPACKET *Pkt)\r
+{\r
+       int Sts;\r
+       HANDLE hFile;\r
+       Sts = FFFTP_FAIL;\r
+       if((hFile = CreateFile(Pkt->LocalFile, GENERIC_WRITE | GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)) != INVALID_HANDLE_VALUE)\r
+       {\r
+               if(SetFileTime(hFile, &Pkt->Time, &Pkt->Time, &Pkt->Time))\r
+                       Sts = FFFTP_SUCCESS;\r
+               CloseHandle(hFile);\r
+       }\r
+       return Sts;\r
+}\r
+\r
 /*----- ダウンロードを行なう --------------------------------------------------\r
 *\r
 *      Parameter\r
@@ -2301,11 +2331,12 @@ static int DownloadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *Canc
                }\r
 \r
                /* ファイルのタイムスタンプを合わせる */\r
-               if((SaveTimeStamp == YES) &&\r
-                  ((Pkt->Time.dwLowDateTime != 0) || (Pkt->Time.dwHighDateTime != 0)))\r
-               {\r
-                       SetFileTime(iFileHandle, &Pkt->Time, &Pkt->Time, &Pkt->Time);\r
-               }\r
+               // ミラーリング設定追加\r
+//             if((SaveTimeStamp == YES) &&\r
+//                ((Pkt->Time.dwLowDateTime != 0) || (Pkt->Time.dwHighDateTime != 0)))\r
+//             {\r
+//                     SetFileTime(iFileHandle, &Pkt->Time, &Pkt->Time, &Pkt->Time);\r
+//             }\r
 \r
                CloseHandle(iFileHandle);\r
 \r
diff --git a/main.c b/main.c
index aebc794..4083068 100644 (file)
--- a/main.c
+++ b/main.c
@@ -285,6 +285,8 @@ int AutoCheckForUptatesInterval = 7;
 time_t LastAutoCheckForUpdates = 0;\r
 // ファイル一覧バグ修正\r
 int AbortOnListError = YES;\r
+// ミラーリング設定追加\r
+int MirrorNoTransferContents = NO; \r
 \r
 \r
 \r
index a297866..a900373 100644 (file)
--- a/option.c
+++ b/option.c
@@ -194,6 +194,8 @@ extern int AutoApplyUpdates;
 extern int AutoCheckForUptatesInterval;\r
 // ファイル一覧バグ修正\r
 extern int AbortOnListError;\r
+// ミラーリング設定追加\r
+extern int MirrorNoTransferContents; \r
 \r
 \r
 /*----- オプションのプロパティシート ------------------------------------------\r
@@ -1010,7 +1012,8 @@ static INT_PTR CALLBACK MirrorSettingProc(HWND hDlg, UINT message, WPARAM wParam
                        SetMultiTextToList(hDlg, MIRROR_NODEL_LIST, MirrorNoDel);\r
                        SendDlgItemMessage(hDlg, MIRROR_LOW, BM_SETCHECK, MirrorFnameCnv, 0);\r
                        SendDlgItemMessage(hDlg, MIRROR_UPDEL_NOTIFY, BM_SETCHECK, MirUpDelNotify, 0);\r
-                       SendDlgItemMessage(hDlg, MIRROR_DOWNDEL_NOTIFY, BM_SETCHECK, MirDownDelNotify, 0);\r
+                       // ミラーリング設定追加\r
+                       SendDlgItemMessage(hDlg, MIRROR_NO_TRANSFER, BM_SETCHECK, MirrorNoTransferContents, 0);\r
                    return(TRUE);\r
 \r
                case WM_NOTIFY:\r
@@ -1023,6 +1026,8 @@ static INT_PTR CALLBACK MirrorSettingProc(HWND hDlg, UINT message, WPARAM wParam
                                        MirrorFnameCnv = SendDlgItemMessage(hDlg, MIRROR_LOW, BM_GETCHECK, 0, 0);\r
                                        MirUpDelNotify = SendDlgItemMessage(hDlg, MIRROR_UPDEL_NOTIFY, BM_GETCHECK, 0, 0);\r
                                        MirDownDelNotify = SendDlgItemMessage(hDlg, MIRROR_DOWNDEL_NOTIFY, BM_GETCHECK, 0, 0);\r
+                                       // ミラーリング設定追加\r
+                                       MirrorNoTransferContents = SendDlgItemMessage(hDlg, MIRROR_NO_TRANSFER, BM_GETCHECK, 0, 0);\r
                                        break;\r
 \r
                                case PSN_RESET :\r
index 0e1d221..15da21b 100644 (file)
@@ -239,6 +239,8 @@ extern int AutoCheckForUptatesInterval;
 extern time_t LastAutoCheckForUpdates;\r
 // ファイル一覧バグ修正\r
 extern int AbortOnListError;\r
+// ミラーリング設定追加\r
+extern int MirrorNoTransferContents; \r
 \r
 /*----- マスタパスワードの設定 ----------------------------------------------\r
 *\r
@@ -841,6 +843,8 @@ void SaveRegistry(void)
                                WriteBinaryToReg(hKey4, "UpdLastCheck", &LastAutoCheckForUpdates, sizeof(LastAutoCheckForUpdates));\r
                                // ファイル一覧バグ修正\r
                                WriteIntValueToReg(hKey4, "AbortListErr", AbortOnListError);\r
+                               // ミラーリング設定追加\r
+                               WriteIntValueToReg(hKey4, "MirNoTransfer", MirrorNoTransferContents);\r
                        }\r
                        CloseSubKey(hKey4);\r
                }\r
@@ -1426,6 +1430,8 @@ int LoadRegistry(void)
                        ReadBinaryFromReg(hKey4, "UpdLastCheck", &LastAutoCheckForUpdates, sizeof(LastAutoCheckForUpdates));\r
                        // ファイル一覧バグ修正\r
                        ReadIntValueFromReg(hKey4, "AbortListErr", &AbortOnListError);\r
+                       // ミラーリング設定追加\r
+                       ReadIntValueFromReg(hKey4, "MirNoTransfer", &MirrorNoTransferContents);\r
 \r
                        CloseSubKey(hKey4);\r
                }\r