#include <string.h>\r
#include <mbstring.h>\r
#include <time.h>\r
-#include <winsock.h>\r
+// IPv6対応\r
+//#include <winsock.h>\r
+#include <winsock2.h>\r
#include <windowsx.h>\r
#include <commctrl.h>\r
\r
if(strlen(Tmp) < FMAX_PATH)\r
{\r
strcpy(Buf, Tmp);\r
- // 0x5Cが含まれる文字列を扱えないバグ修正\r
-// ReplaceAll(Buf, '\\', '/');\r
- ChangeSepaRemote2Local(Buf);\r
- ChangeFnameRemote2Local(Buf, FMAX_PATH);\r
- // 0x5Cが含まれる文字列を扱えないバグ修正\r
ReplaceAll(Buf, '\\', '/');\r
+ ChangeSepaRemote2Local(Buf);\r
}\r
else\r
Sts = FTP_ERROR*100;\r
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
&sTime.wHour, &sTime.wMinute, &sTime.wSecond) == 6)\r
{\r
SystemTimeToFileTime(&sTime, Time);\r
- SpecificLocalFileTime2FileTime(Time, AskHostTimeZone());\r
+ // 時刻はGMT\r
+// SpecificLocalFileTime2FileTime(Time, AskHostTimeZone());\r
\r
}\r
}\r
}\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 = 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
+\r
/*----- リモート側のコマンドを実行 --------------------------------------------\r
*\r
* Parameter\r
* int 応答コードの1桁目\r
*----------------------------------------------------------------------------*/\r
\r
-int DoQUOTE(char *CmdStr)\r
+// 同時接続対応\r
+//int DoQUOTE(char *CmdStr)\r
+int DoQUOTE(SOCKET cSkt, char *CmdStr, int *CancelCheckWork)\r
{\r
int Sts;\r
\r
- Sts = CommandProcCmd(NULL, "%s", CmdStr);\r
+// Sts = CommandProcCmd(NULL, "%s", CmdStr);\r
+ Sts = CommandProcTrn(cSkt, NULL, CancelCheckWork, "%s", CmdStr);\r
\r
if(Sts/100 >= FTP_CONTINUE)\r
SoundPlay(SND_ERROR);\r
* int 応答コードの1桁目\r
*----------------------------------------------------------------------------*/\r
\r
-int DoQUIT(SOCKET ctrl_skt)\r
+// 同時接続対応\r
+//int DoQUIT(SOCKET ctrl_skt)\r
+int DoQUIT(SOCKET ctrl_skt, int *CancelCheckWork)\r
{\r
int Ret;\r
\r
if(SendQuit == YES)\r
// 同時接続対応\r
// Ret = command(ctrl_skt, NULL, &CheckCancelFlg, "QUIT") / 100;\r
- Ret = command(ctrl_skt, NULL, &CancelFlg, "QUIT") / 100;\r
+ Ret = command(ctrl_skt, NULL, CancelCheckWork, "QUIT") / 100;\r
\r
return(Ret);\r
}\r
MainTransPkt.hWndTrans = hWnd;\r
MainTransPkt.Next = NULL;\r
\r
- Sts = DoDownLoad(cSkt, &MainTransPkt, YES, CancelCheckWork);\r
+ Sts = DoDownload(cSkt, &MainTransPkt, YES, CancelCheckWork);\r
\r
//#pragma aaa\r
//DoPrintf("===== DoDirList Done.");\r
}\r
\r
\r
+#if defined(HAVE_TANDEM)\r
+/*----- OSS/Guardian ファイルシステムを切り替えるコマンドを送る ---------------\r
+*\r
+* Parameter\r
+* なし\r
+*\r
+* Return Value\r
+* なし\r
+*----------------------------------------------------------------------------*/\r
+\r
+void SwitchOSSProc(void)\r
+{\r
+ char Buf[MAX_PATH+1];\r
+\r
+ /* DoPWD でノード名の \ を保存するために OSSフラグも変更する */\r
+ if(AskOSS() == YES) {\r
+ DoQUOTE(AskCmdCtrlSkt(), "GUARDIAN", &CancelFlg);\r
+ SetOSS(NO);\r
+ } else {\r
+ DoQUOTE(AskCmdCtrlSkt(), "OSS", &CancelFlg);\r
+ SetOSS(YES);\r
+ }\r
+ /* Current Dir 再取得 */\r
+ if (DoPWD(Buf) == FTP_COMPLETE)\r
+ SetRemoteDirHist(Buf);\r
+ /* ファイルリスト再読み込み */\r
+ PostMessage(GetMainHwnd(), WM_COMMAND, MAKEWPARAM(REFRESH_REMOTE, 0), 0);\r
+\r
+ return;\r
+}\r
+#endif\r
+\r
+\r
/*----- リモート側へコマンドを送りリプライを待つ(転送ソケット)---------------\r
*\r
* Parameter\r
+* SOCKET cSkt : ソケット\r
* char *Reply : リプライのコピー先 (NULL=コピーしない)\r
+* int *CancelCheckWork :\r
* char *fmt : フォーマット文字列\r
* ... : パラメータ\r
*\r
iContinue = NO;\r
iRetCode = ReadOneLine(cSkt, Tmp, ONELINE_BUF_SIZE, CancelCheckWork);\r
\r
+ // 文字化け対策\r
+ ChangeFnameRemote2Local(Tmp, ONELINE_BUF_SIZE);\r
SetTaskMsg("%s", Tmp);\r
\r
if(Buf != NULL)\r