FFFTPのソースコードです。
Revision | 0d9559ea57ae201a5b1fe0161f88545141674c09 (tree) |
---|---|
Zeit | 2012-03-09 20:31:28 |
Autor | s_kawamoto <s_kawamoto@user...> |
Commiter | s_kawamoto |
Add support for retaining time stamps on uploading files.
@@ -773,7 +773,7 @@ BEGIN | ||
773 | 773 | PUSHBUTTON "ÇÁ(&I)...",TRMODE_ADD,167,19,31,14 |
774 | 774 | PUSHBUTTON "í",TRMODE_DEL,167,38,31,14 |
775 | 775 | CONTROL "AXL[[hÅAbv[hAEOF(Ctrl-Z)ðæè(&Z)",TRMODE_EOF,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,94,196,10 |
776 | - CONTROL "_E[h·ét@CÌ^CX^vðÛ(&T)",TRMODE_TIME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,108,196,10 | |
776 | + CONTROL "Abv[h/_E[h·ét@CÌ^CX^vðÛ(&T)",TRMODE_TIME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,108,196,10 | |
777 | 777 | CONTROL "t@C¼ÌZ~RÈ~Íæè¢Ä_E[h(&S)",TRMODE_SEMICOLON,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,122,196,10 |
778 | 778 | CONTROL "t@C¼ðϦÄ]µ½êÉfBNgðì¬(&D)",TRMODE_MAKEDIR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,136,196,10 |
779 | 779 | END |
@@ -780,7 +780,7 @@ BEGIN | ||
780 | 780 | PUSHBUTTON "A&dd...",TRMODE_ADD,167,19,31,14 |
781 | 781 | PUSHBUTTON "Delete",TRMODE_DEL,167,38,31,14 |
782 | 782 | CONTROL "&Remove EOF for ASCII mode upload",TRMODE_EOF,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,94,196,10 |
783 | - CONTROL "Retain file date/&time on download",TRMODE_TIME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,108,196,10 | |
783 | + CONTROL "Retain file date/&time on upload and download",TRMODE_TIME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,108,196,10 | |
784 | 784 | CONTROL "Truncate filename before &semicolon on download",TRMODE_SEMICOLON, |
785 | 785 | "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,122,196,10 |
786 | 786 | CONTROL "Create &directory at file transfer with renaming",TRMODE_MAKEDIR, |
@@ -1607,6 +1607,8 @@ int DoSIZE(SOCKET cSkt, char *Path, LONGLONG *Size, int *CancelCheckWork); | ||
1607 | 1607 | // 同時接続対応 |
1608 | 1608 | //int DoMDTM(char *Path, FILETIME *Time); |
1609 | 1609 | int DoMDTM(SOCKET cSkt, char *Path, FILETIME *Time, int *CancelCheckWork); |
1610 | +// ホスト側の日時設定 | |
1611 | +int DoMFMT(SOCKET cSkt, char *Path, FILETIME *Time, int *CancelCheckWork); | |
1610 | 1612 | // 同時接続対応 |
1611 | 1613 | //int DoQUOTE(char *CmdStr); |
1612 | 1614 | int DoQUOTE(SOCKET cSkt, char *CmdStr, int *CancelCheckWork); |
@@ -912,6 +912,14 @@ static ULONG WINAPI TransferThread(void *Dummy) | ||
912 | 912 | // DoUpload(AskTrnCtrlSkt(), TransPacketBase); |
913 | 913 | DoUpload(TrnSkt, Pos); |
914 | 914 | // } |
915 | + | |
916 | + // ホスト側の日時設定 | |
917 | + /* ファイルのタイムスタンプを合わせる */ | |
918 | + if((SaveTimeStamp == YES) && | |
919 | + ((Pos->Time.dwLowDateTime != 0) || (Pos->Time.dwHighDateTime != 0))) | |
920 | + { | |
921 | + DoMFMT(TrnSkt, Pos->RemoteFile, &Pos->Time, &Canceled[Pos->ThreadCount]); | |
922 | + } | |
915 | 923 | } |
916 | 924 | // 一部TYPE、STOR(RETR)、PORT(PASV)を並列に処理できないホストがあるため |
917 | 925 | ReleaseMutex(hListAccMutex); |
@@ -460,6 +460,20 @@ int DoMDTM(SOCKET cSkt, char *Path, FILETIME *Time, int *CancelCheckWork) | ||
460 | 460 | } |
461 | 461 | |
462 | 462 | |
463 | +// ホスト側の日時設定 | |
464 | +int DoMFMT(SOCKET cSkt, char *Path, FILETIME *Time, int *CancelCheckWork) | |
465 | +{ | |
466 | + int Sts; | |
467 | + char Tmp[1024]; | |
468 | + SYSTEMTIME sTime; | |
469 | + | |
470 | + FileTimeToSystemTime(Time, &sTime); | |
471 | + | |
472 | + 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); | |
473 | + return(Sts/100); | |
474 | +} | |
475 | + | |
476 | + | |
463 | 477 | /*----- リモート側のコマンドを実行 -------------------------------------------- |
464 | 478 | * |
465 | 479 | * Parameter |