OSDN Git Service

Add support for retaining time stamps on uploading files.
authors_kawamoto <s_kawamoto@users.sourceforge.jp>
Fri, 9 Mar 2012 11:31:28 +0000 (20:31 +0900)
committers_kawamoto <s_kawamoto@users.sourceforge.jp>
Fri, 9 Mar 2012 11:31:28 +0000 (20:31 +0900)
FFFTP_Eng_Release/FFFTP.exe
Release/FFFTP.exe
Resource/FFFTP.rc
Resource_eng/FFFTP-eng.rc
common.h
getput.c
remote.c

index c97d7a3..0d74001 100644 (file)
Binary files a/FFFTP_Eng_Release/FFFTP.exe and b/FFFTP_Eng_Release/FFFTP.exe differ
index 8ef225b..b2970fd 100644 (file)
Binary files a/Release/FFFTP.exe and b/Release/FFFTP.exe differ
index c315d41..786339c 100644 (file)
@@ -773,7 +773,7 @@ BEGIN
     PUSHBUTTON      "\92Ç\89Á(&I)...",TRMODE_ADD,167,19,31,14\r
     PUSHBUTTON      "\8dí\8f\9c",TRMODE_DEL,167,38,31,14\r
     CONTROL         "\83A\83X\83L\81[\83\82\81[\83h\82Å\83A\83b\83v\83\8d\81[\83h\8e\9e\81AEOF(Ctrl-Z)\82ð\8eæ\82è\8f\9c\82­(&Z)",TRMODE_EOF,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,94,196,10\r
-    CONTROL         "\83_\83E\83\93\83\8d\81[\83h\82·\82é\83t\83@\83C\83\8b\82Ì\83^\83C\83\80\83X\83^\83\93\83v\82ð\88Û\8e\9d(&T)",TRMODE_TIME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,108,196,10\r
+    CONTROL         "\83A\83b\83v\83\8d\81[\83h/\83_\83E\83\93\83\8d\81[\83h\82·\82é\83t\83@\83C\83\8b\82Ì\83^\83C\83\80\83X\83^\83\93\83v\82ð\88Û\8e\9d(&T)",TRMODE_TIME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,108,196,10\r
     CONTROL         "\83t\83@\83C\83\8b\96¼\82Ì\83Z\83~\83R\83\8d\83\93\88È\8d~\82Í\8eæ\82è\8f\9c\82¢\82Ä\83_\83E\83\93\83\8d\81[\83h(&S)",TRMODE_SEMICOLON,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,122,196,10\r
     CONTROL         "\83t\83@\83C\83\8b\96¼\82ð\95Ï\82¦\82Ä\93]\91\97\82µ\82½\8fê\8d\87\82É\83f\83B\83\8c\83N\83g\83\8a\82ð\8dì\90¬(&D)",TRMODE_MAKEDIR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,136,196,10\r
 END\r
index 09cf5e1..9bf6d26 100644 (file)
@@ -780,7 +780,7 @@ BEGIN
     PUSHBUTTON      "A&dd...",TRMODE_ADD,167,19,31,14\r
     PUSHBUTTON      "Delete",TRMODE_DEL,167,38,31,14\r
     CONTROL         "&Remove EOF for ASCII mode upload",TRMODE_EOF,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,94,196,10\r
-    CONTROL         "Retain file date/&time on download",TRMODE_TIME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,108,196,10\r
+    CONTROL         "Retain file date/&time on upload and download",TRMODE_TIME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,108,196,10\r
     CONTROL         "Truncate filename before &semicolon on download",TRMODE_SEMICOLON,\r
                     "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,122,196,10\r
     CONTROL         "Create &directory at file transfer with renaming",TRMODE_MAKEDIR,\r
index 2519f43..eb4dae4 100644 (file)
--- a/common.h
+++ b/common.h
@@ -1607,6 +1607,8 @@ int DoSIZE(SOCKET cSkt, char *Path, LONGLONG *Size, int *CancelCheckWork);
 // 同時接続対応\r
 //int DoMDTM(char *Path, FILETIME *Time);\r
 int DoMDTM(SOCKET cSkt, char *Path, FILETIME *Time, int *CancelCheckWork);\r
+// ホスト側の日時設定\r
+int DoMFMT(SOCKET cSkt, char *Path, FILETIME *Time, int *CancelCheckWork);\r
 // 同時接続対応\r
 //int DoQUOTE(char *CmdStr);\r
 int DoQUOTE(SOCKET cSkt, char *CmdStr, int *CancelCheckWork);\r
index a045511..5cf007a 100644 (file)
--- a/getput.c
+++ b/getput.c
@@ -912,6 +912,14 @@ static ULONG WINAPI TransferThread(void *Dummy)
 //                                                     DoUpload(AskTrnCtrlSkt(), TransPacketBase);\r
                                                        DoUpload(TrnSkt, Pos);\r
 //                                     }\r
+\r
+                                       // ホスト側の日時設定\r
+                                       /* ファイルのタイムスタンプを合わせる */\r
+                                       if((SaveTimeStamp == YES) &&\r
+                                          ((Pos->Time.dwLowDateTime != 0) || (Pos->Time.dwHighDateTime != 0)))\r
+                                       {\r
+                                               DoMFMT(TrnSkt, Pos->RemoteFile, &Pos->Time, &Canceled[Pos->ThreadCount]);\r
+                                       }\r
                                }\r
                                // 一部TYPE、STOR(RETR)、PORT(PASV)を並列に処理できないホストがあるため\r
                                ReleaseMutex(hListAccMutex);\r
index 9cc5234..58a9510 100644 (file)
--- a/remote.c
+++ b/remote.c
@@ -460,6 +460,20 @@ int DoMDTM(SOCKET cSkt, char *Path, FILETIME *Time, int *CancelCheckWork)
 }\r
 \r
 \r
+// ホスト側の日時設定\r
+int DoMFMT(SOCKET cSkt, char *Path, FILETIME *Time, int *CancelCheckWork)\r
+{\r
+       int Sts;\r
+       char Tmp[1024];\r
+       SYSTEMTIME sTime;\r
+\r
+       FileTimeToSystemTime(Time, &sTime);\r
+\r
+       Sts = CommandProcTrn(cSkt, Tmp, CancelCheckWork, "MFMT %04d%02d%02d%02d%02d%02d %s", sTime.wYear, sTime.wMonth, sTime.wDay, sTime.wHour, sTime.wMinute, sTime.wSecond, Path);\r
+       return(Sts/100);\r
+}\r
+\r
+\r
 /*----- リモート側のコマンドを実行 --------------------------------------------\r
 *\r
 *      Parameter\r