#include <stdlib.h>\r
#include <string.h>\r
#include <mbstring.h>\r
+// 自動切断対策\r
+#include <time.h>\r
#include <malloc.h>\r
#include <windowsx.h>\r
#include <commctrl.h>\r
int MakeAllDir = YES;\r
// UTF-8対応\r
int LocalKanjiCode = KANJI_SJIS;\r
+// 自動切断対策\r
+int NoopEnable = NO;\r
+time_t LastDataConnectionTime = 0;\r
\r
\r
\r
SendMessage(GetLocalHwnd(), LVM_ENSUREVISIBLE, (WPARAM)Pos, (LPARAM)TRUE);\r
}\r
}\r
- break;\r
- case 2:\r
- NoopProc();\r
+ if(NoopEnable == YES && AskNoopInterval() > 0 && time(NULL) - LastDataConnectionTime >= AskNoopInterval())\r
+ NoopProc(NO);\r
break;\r
}\r
break;\r
{\r
case MENU_CONNECT :\r
// 自動切断対策\r
- KillTimer(hWnd, 2);\r
+ NoopEnable = NO;\r
ConnectProc(DLG_TYPE_CON, -1);\r
// 自動切断対策\r
- if(AskNoopInterval() > 0)\r
- SetTimer(hWnd, 2, AskNoopInterval() * 1000, NULL);\r
+ NoopEnable = YES;\r
break;\r
\r
case MENU_CONNECT_NUM :\r
// 自動切断対策\r
- KillTimer(hWnd, 2);\r
+ NoopEnable = NO;\r
ConnectProc(DLG_TYPE_CON, (int)lParam);\r
// 自動切断対策\r
- if(AskNoopInterval() > 0)\r
- SetTimer(hWnd, 2, AskNoopInterval() * 1000, NULL);\r
+ NoopEnable = YES;\r
if(AskConnecting() == YES)\r
{\r
if(HIWORD(wParam) & OPT_MIRROR)\r
\r
case MENU_SET_CONNECT :\r
// 自動切断対策\r
- KillTimer(hWnd, 2);\r
+ NoopEnable = NO;\r
ConnectProc(DLG_TYPE_SET, -1);\r
// 自動切断対策\r
- if(AskNoopInterval() > 0)\r
- SetTimer(hWnd, 2, AskNoopInterval() * 1000, NULL);\r
+ NoopEnable = YES;\r
break;\r
\r
case MENU_QUICK :\r
// 自動切断対策\r
- KillTimer(hWnd, 2);\r
+ NoopEnable = NO;\r
QuickConnectProc();\r
// 自動切断対策\r
- if(AskNoopInterval() > 0)\r
- SetTimer(hWnd, 2, AskNoopInterval() * 1000, NULL);\r
+ NoopEnable = YES;\r
break;\r
\r
case MENU_DISCONNECT :\r
case MENU_HIST_19 :\r
case MENU_HIST_20 :\r
// 自動切断対策\r
- KillTimer(hWnd, 2);\r
+ NoopEnable = NO;\r
HistoryConnectProc(LOWORD(wParam));\r
// 自動切断対策\r
- if(AskNoopInterval() > 0)\r
- SetTimer(hWnd, 2, AskNoopInterval() * 1000, NULL);\r
+ NoopEnable = YES;\r
break;\r
\r
case MENU_UPDIR :\r
\r
// 同時接続対応\r
extern int CancelFlg;\r
+// 自動切断対策\r
+extern time_t LastDataConnectionTime;\r
\r
/*===== ローカルなワーク =====*/\r
\r
Sts = FTP_COMPLETE * 100;\r
\r
if(strcmp(Path, "..") == 0)\r
- Sts = CommandProcCmd(NULL, "CDUP");\r
+ // 同時接続対応\r
+// Sts = CommandProcCmd(NULL, "CDUP");\r
+ Sts = CommandProcCmd(NULL, &CancelFlg, "CDUP");\r
else if(strcmp(Path, "") != 0)\r
{\r
if((AskHostType() != HTYPE_VMS) || (strchr(Path, '[') != NULL))\r
- Sts = CommandProcCmd(NULL, "CWD %s", Path);\r
+ // 同時接続対応\r
+// Sts = CommandProcCmd(NULL, "CWD %s", Path);\r
+ Sts = CommandProcCmd(NULL, &CancelFlg, "CWD %s", Path);\r
else\r
- Sts = CommandProcCmd(NULL, "CWD [.%s]", Path); /* VMS用 */\r
+ // 同時接続対応\r
+// Sts = CommandProcCmd(NULL, "CWD [.%s]", Path); /* VMS用 */\r
+ Sts = CommandProcCmd(NULL, &CancelFlg, "CWD [.%s]", Path); /* VMS用 */\r
}\r
\r
if((Sts/100 >= FTP_CONTINUE) && (ErrorBell == YES))\r
\r
if(PwdCommandType == PWD_XPWD)\r
{\r
- Sts = CommandProcCmd(Tmp, "XPWD");\r
+ // 同時接続対応\r
+// Sts = CommandProcCmd(Tmp, "XPWD");\r
+ Sts = CommandProcCmd(Tmp, &CancelFlg, "XPWD");\r
if(Sts/100 != FTP_COMPLETE)\r
PwdCommandType = PWD_PWD;\r
}\r
if(PwdCommandType == PWD_PWD)\r
- Sts = CommandProcCmd(Tmp, "PWD");\r
+ // 同時接続対応\r
+// Sts = CommandProcCmd(Tmp, "PWD");\r
+ Sts = CommandProcCmd(Tmp, &CancelFlg, "PWD");\r
\r
if(Sts/100 == FTP_COMPLETE)\r
{\r
{\r
int Sts;\r
\r
- Sts = CommandProcCmd(NULL, "MKD %s", Path);\r
+ // 同時接続対応\r
+// Sts = CommandProcCmd(NULL, "MKD %s", Path);\r
+ Sts = CommandProcCmd(NULL, &CancelFlg, "MKD %s", Path);\r
\r
if(Sts/100 >= FTP_CONTINUE)\r
SoundPlay(SND_ERROR);\r
\r
+ // 自動切断対策\r
+ if(CancelFlg == NO && AskNoopInterval() > 0 && time(NULL) - LastDataConnectionTime >= AskNoopInterval())\r
+ NoopProc(YES);\r
+\r
return(Sts/100);\r
}\r
\r
{\r
int Sts;\r
\r
- Sts = CommandProcCmd(NULL, "RMD %s", Path);\r
+ // 同時接続対応\r
+// Sts = CommandProcCmd(NULL, "RMD %s", Path);\r
+ Sts = CommandProcCmd(NULL, &CancelFlg, "RMD %s", Path);\r
\r
if(Sts/100 >= FTP_CONTINUE)\r
SoundPlay(SND_ERROR);\r
\r
+ // 自動切断対策\r
+ if(CancelFlg == NO && AskNoopInterval() > 0 && time(NULL) - LastDataConnectionTime >= AskNoopInterval())\r
+ NoopProc(YES);\r
+\r
return(Sts/100);\r
}\r
\r
{\r
int Sts;\r
\r
- Sts = CommandProcCmd(NULL, "DELE %s", Path);\r
+ // 同時接続対応\r
+// Sts = CommandProcCmd(NULL, "DELE %s", Path);\r
+ Sts = CommandProcCmd(NULL, &CancelFlg, "DELE %s", Path);\r
\r
if(Sts/100 >= FTP_CONTINUE)\r
SoundPlay(SND_ERROR);\r
\r
+ // 自動切断対策\r
+ if(CancelFlg == NO && AskNoopInterval() > 0 && time(NULL) - LastDataConnectionTime >= AskNoopInterval())\r
+ NoopProc(YES);\r
+\r
return(Sts/100);\r
}\r
\r
{\r
int Sts;\r
\r
- Sts = CommandProcCmd(NULL, "RNFR %s", Src);\r
+ // 同時接続対応\r
+// Sts = CommandProcCmd(NULL, "RNFR %s", Src);\r
+ Sts = CommandProcCmd(NULL, &CancelFlg, "RNFR %s", Src);\r
if(Sts == 350)\r
// 同時接続対応\r
// Sts = command(AskCmdCtrlSkt(), NULL, &CheckCancelFlg, "RNTO %s", Dst);\r
if(Sts/100 >= FTP_CONTINUE)\r
SoundPlay(SND_ERROR);\r
\r
+ // 自動切断対策\r
+ if(CancelFlg == NO && AskNoopInterval() > 0 && time(NULL) - LastDataConnectionTime >= AskNoopInterval())\r
+ NoopProc(YES);\r
+\r
return(Sts/100);\r
}\r
\r
{\r
int Sts;\r
\r
- Sts = CommandProcCmd(NULL, "%s %s %s", AskHostChmodCmd(), Mode, Path);\r
+ // 同時接続対応\r
+// Sts = CommandProcCmd(NULL, "%s %s %s", AskHostChmodCmd(), Mode, Path);\r
+ Sts = CommandProcCmd(NULL, &CancelFlg, "%s %s %s", AskHostChmodCmd(), Mode, Path);\r
\r
if(Sts/100 >= FTP_CONTINUE)\r
SoundPlay(SND_ERROR);\r
\r
+ // 自動切断対策\r
+ if(CancelFlg == NO && AskNoopInterval() > 0 && time(NULL) - LastDataConnectionTime >= AskNoopInterval())\r
+ NoopProc(YES);\r
+\r
return(Sts/100);\r
}\r
\r
* コマンドコントロールソケットを使う\r
*----------------------------------------------------------------------------*/\r
\r
-int CommandProcCmd(char *Reply, char *fmt, ...)\r
+// 同時接続対応\r
+//int CommandProcCmd(char *Reply, char *fmt, ...)\r
+int CommandProcCmd(char *Reply, int* CancelCheckWork, char *fmt, ...)\r
{\r
va_list Args;\r
char Cmd[1024];\r
// {\r
// 同時接続対応\r
// Sts = command(AskCmdCtrlSkt(), Reply, &CheckCancelFlg, "%s", Cmd);\r
- Sts = command(AskCmdCtrlSkt(), Reply, &CancelFlg, "%s", Cmd);\r
+ Sts = command(AskCmdCtrlSkt(), Reply, CancelCheckWork, "%s", Cmd);\r
// }\r
// }\r
return(Sts);\r