OSDN Git Service

Add routines for checking capability of MDTM and MFMT.
authors_kawamoto <s_kawamoto@users.sourceforge.jp>
Mon, 21 May 2012 14:11:57 +0000 (23:11 +0900)
committers_kawamoto <s_kawamoto@users.sourceforge.jp>
Mon, 21 May 2012 14:11:57 +0000 (23:11 +0900)
FFFTP_Eng_Release/FFFTP.exe
Release/FFFTP.exe
common.h
connect.c
remote.c

index 30e93c8..3a023dd 100644 (file)
Binary files a/FFFTP_Eng_Release/FFFTP.exe and b/FFFTP_Eng_Release/FFFTP.exe differ
index ec9ec5f..067b347 100644 (file)
Binary files a/Release/FFFTP.exe and b/Release/FFFTP.exe differ
index 2576ba9..2bf2d55 100644 (file)
--- a/common.h
+++ b/common.h
@@ -938,6 +938,10 @@ LIST_UNIX_70
 // IPv6対応\r
 #define FEATURE_EPRT           0x00000004\r
 #define FEATURE_EPSV           0x00000008\r
+// ホスト側の日時取得\r
+#define FEATURE_MDTM           0x00000010\r
+// ホスト側の日時設定\r
+#define FEATURE_MFMT           0x00000020\r
 \r
 // IPv6対応\r
 #define NTYPE_AUTO                     0               /* 自動 */\r
index a931db0..98f7121 100644 (file)
--- a/connect.c
+++ b/connect.c
@@ -1773,6 +1773,12 @@ static SOCKET DoConnectCrypt(int CryptMode, HOSTDATA* HostData, char *Host, char
                                // IPv6対応\r
                                if(strstr(Reply, " EPRT ") || strstr(Reply, " EPSV "))\r
                                        HostData->Feature |= FEATURE_EPRT | FEATURE_EPSV;\r
+                               // ホスト側の日時取得\r
+                               if(strstr(Reply, " MDTM "))\r
+                                       HostData->Feature |= FEATURE_MDTM;\r
+                               // ホスト側の日時設定\r
+                               if(strstr(Reply, " MFMT "))\r
+                                       HostData->Feature |= FEATURE_MFMT;\r
                        }\r
                        // UTF-8対応\r
                        if(HostData->CurNameKanjiCode == KANJI_AUTO && (HostData->Feature & FEATURE_UTF8))\r
index 58a9510..30a75fe 100644 (file)
--- a/remote.c
+++ b/remote.c
@@ -441,8 +441,11 @@ int DoMDTM(SOCKET cSkt, char *Path, FILETIME *Time, int *CancelCheckWork)
     Time->dwHighDateTime = 0;\r
 \r
        // 同時接続対応\r
+       // ホスト側の日時取得\r
 //     Sts = CommandProcTrn(Tmp, "MDTM %s", Path);\r
-       Sts = CommandProcTrn(cSkt, Tmp, CancelCheckWork, "MDTM %s", Path);\r
+       Sts = 500;\r
+       if(AskHostFeature() & FEATURE_MDTM)\r
+               Sts = CommandProcTrn(cSkt, Tmp, CancelCheckWork, "MDTM %s", Path);\r
        if(Sts/100 == FTP_COMPLETE)\r
        {\r
                sTime.wMilliseconds = 0;\r
@@ -469,7 +472,9 @@ int DoMFMT(SOCKET cSkt, char *Path, FILETIME *Time, int *CancelCheckWork)
 \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
+       Sts = 500;\r
+       if(AskHostFeature() & FEATURE_MFMT)\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