/============================================================================*/\r
\r
#define STRICT\r
+// IPv6対応\r
+#include <winsock2.h>\r
#include <windows.h>\r
#include <stdio.h>\r
#include <stdlib.h>\r
/*===== プロトタイプ =====*/\r
\r
static int CheckRemoteFile(TRANSPACKET *Pkt, FILELIST *ListList);\r
-static BOOL CALLBACK UpExistDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
+// 64ビット対応\r
+//static BOOL CALLBACK UpExistDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
+static INT_PTR CALLBACK UpExistDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
\r
static void DispMirrorFiles(FILELIST *Local, FILELIST *Remote);\r
static void MirrorDeleteAllLocalDir(FILELIST *Local, TRANSPACKET *Pkt, TRANSPACKET **Base);\r
static int CheckLocalFile(TRANSPACKET *Pkt);\r
-static BOOL CALLBACK DownExistDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
+// 64ビット対応\r
+//static BOOL CALLBACK DownExistDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
+static INT_PTR CALLBACK DownExistDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
static void RemoveAfterSemicolon(char *Path);\r
static void MirrorDeleteAllDir(FILELIST *Remote, TRANSPACKET *Pkt, TRANSPACKET **Base);\r
-static BOOL CALLBACK MirrorNotifyCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
-static BOOL CALLBACK MirrorDispListCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
+// 64ビット対応\r
+//static BOOL CALLBACK MirrorNotifyCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
+//static BOOL CALLBACK MirrorDispListCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
+static INT_PTR CALLBACK MirrorNotifyCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
+static INT_PTR CALLBACK MirrorDispListCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
static void CountMirrorFiles(HWND hDlg, TRANSPACKET *Pkt);\r
static int AskMirrorNoTrn(char *Fname, int Mode);\r
static int AskUpLoadFileAttr(char *Fname);\r
-static BOOL CALLBACK UpDownAsDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
+// 64ビット対応\r
+//static BOOL CALLBACK UpDownAsDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
+static INT_PTR CALLBACK UpDownAsDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
static void DeleteAllDir(FILELIST *Dt, int Win, int *Sw, int *Flg, char *CurDir);\r
static void DelNotifyAndDo(FILELIST *Dt, int Win, int *Sw, int *Flg, char *CurDir);\r
-static BOOL CALLBACK DeleteDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
-static BOOL CALLBACK RenameDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
+// 64ビット対応\r
+//static BOOL CALLBACK DeleteDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
+//static BOOL CALLBACK RenameDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
+static INT_PTR CALLBACK DeleteDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
+static INT_PTR CALLBACK RenameDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
static void SetAttrToDialog(HWND hWnd, int Attr);\r
static int GetAttrFromDialog(HWND hDlg);\r
static LRESULT CALLBACK SizeNotifyDlgWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
FILELIST *Pos;\r
TRANSPACKET Pkt;\r
\r
+ // 同時接続対応\r
+ CancelFlg = NO;\r
+\r
if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
{\r
DisableUserOpe();\r
{\r
TRANSPACKET Pkt;\r
\r
+ // 同時接続対応\r
+ CancelFlg = NO;\r
+\r
if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
{\r
DisableUserOpe();\r
int Level;\r
int Mode;\r
\r
+ // 同時接続対応\r
+ CancelFlg = NO;\r
+\r
if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
{\r
DisableUserOpe();\r
* BOOL TRUE/FALSE\r
*----------------------------------------------------------------------------*/\r
\r
-static BOOL CALLBACK DownExistDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
+// 64ビット対応\r
+//static BOOL CALLBACK DownExistDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
+static INT_PTR CALLBACK DownExistDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
{\r
static TRANSPACKET *Pkt;\r
static const RADIOBUTTON DownExistButton[] = {\r
char Tmp[FMAX_PATH+1];\r
int FirstAdd;\r
\r
+ // 同時接続対応\r
+ CancelFlg = NO;\r
+\r
if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
{\r
DisableUserOpe();\r
int FirstAdd;\r
char Cur[FMAX_PATH+1];\r
\r
+ // 同時接続対応\r
+ CancelFlg = NO;\r
+\r
if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
{\r
DisableUserOpe();\r
FILETIME TmpFtimeL;\r
FILETIME TmpFtimeR;\r
\r
+ // 同時接続対応\r
+ CancelFlg = NO;\r
+\r
if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
{\r
DisableUserOpe();\r
* BOOL TRUE/FALSE\r
*----------------------------------------------------------------------------*/\r
\r
-static BOOL CALLBACK MirrorNotifyCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
+// 64ビット対応\r
+//static BOOL CALLBACK MirrorNotifyCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
+static INT_PTR CALLBACK MirrorNotifyCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
{\r
static int Mode;\r
\r
* BOOL TRUE/FALSE\r
*----------------------------------------------------------------------------*/\r
\r
-static BOOL CALLBACK MirrorDispListCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
+// 64ビット対応\r
+//static BOOL CALLBACK MirrorDispListCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
+static INT_PTR CALLBACK MirrorDispListCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
{\r
static DIALOGSIZE DlgSize = {\r
{ MIRROR_DEL, MIRROR_SIZEGRIP, -1 },\r
* BOOL TRUE/FALSE\r
*----------------------------------------------------------------------------*/\r
\r
-static BOOL CALLBACK UpExistDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
+// 64ビット対応\r
+//static BOOL CALLBACK UpExistDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
+static INT_PTR CALLBACK UpExistDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
{\r
static TRANSPACKET *Pkt;\r
static const RADIOBUTTON UpExistButton[] = {\r
* BOOL TRUE/FALSE\r
*----------------------------------------------------------------------------*/\r
\r
-static BOOL CALLBACK UpDownAsDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
+// 64ビット対応\r
+//static BOOL CALLBACK UpDownAsDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
+static INT_PTR CALLBACK UpDownAsDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
{\r
switch (iMessage)\r
{\r
char CurDir[FMAX_PATH+1];\r
char Tmp[FMAX_PATH+1];\r
\r
+ // 同時接続対応\r
+ CancelFlg = NO;\r
+\r
+ // デッドロック対策\r
+ DisableUserOpe();\r
Sts = YES;\r
AskRemoteCurDir(CurDir, FMAX_PATH);\r
FileListBase = NULL;\r
\r
if(Sts == YES)\r
{\r
- DisableUserOpe();\r
+ // デッドロック対策\r
+// DisableUserOpe();\r
\r
DelFlg = NO;\r
Sts = NO;\r
GetRemoteDirForWnd(CACHE_REFRESH, &CancelFlg);\r
}\r
\r
- EnableUserOpe();\r
+ // デッドロック対策\r
+// EnableUserOpe();\r
}\r
+ // デッドロック対策\r
+ EnableUserOpe();\r
return;\r
}\r
\r
{\r
sprintf(TmpString, "%s", Path);\r
\r
- if(AskHostType() == HTYPE_VMS)\r
+ // ローカルのファイルのパスの最後の'\\'が消えるバグ修正\r
+// if(AskHostType() == HTYPE_VMS)\r
+ if(Win == WIN_REMOTE && AskHostType() == HTYPE_VMS)\r
ReformToVMSstylePathName(TmpString);\r
\r
CurWin = Win;\r
else\r
{\r
/* フルパスを使わない時のための処理 */\r
- if(ProcForNonFullpath(Path, CurDir, GetMainHwnd(), 0) == FFFTP_FAIL)\r
+ // 同時接続対応\r
+// if(ProcForNonFullpath(Path, CurDir, GetMainHwnd(), 0) == FFFTP_FAIL)\r
+ if(ProcForNonFullpath(AskCmdCtrlSkt(), Path, CurDir, GetMainHwnd(), &CancelFlg) == FFFTP_FAIL)\r
*Sw = NO_ALL;\r
\r
if(*Sw != NO_ALL)\r
* BOOL TRUE/FALSE\r
*----------------------------------------------------------------------------*/\r
\r
-static BOOL CALLBACK DeleteDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
+// 64ビット対応\r
+//static BOOL CALLBACK DeleteDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
+static INT_PTR CALLBACK DeleteDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
{\r
switch (iMessage)\r
{\r
int RenFlg;\r
int Sts;\r
\r
+ // 同時接続対応\r
+ CancelFlg = NO;\r
+\r
Sts = FFFTP_SUCCESS;\r
if(GetFocus() == GetLocalHwnd())\r
Win = WIN_LOCAL;\r
int RenFlg;\r
int Sts;\r
\r
+ // 同時接続対応\r
+ CancelFlg = NO;\r
+\r
if(MoveMode == MOVE_DISABLE)\r
{\r
return;\r
* BOOL TRUE/FALSE\r
*----------------------------------------------------------------------------*/\r
\r
-static BOOL CALLBACK RenameDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
+// 64ビット対応\r
+//static BOOL CALLBACK RenameDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
+static INT_PTR CALLBACK RenameDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
{\r
switch (iMessage)\r
{\r
char *Title;\r
int Tmp;\r
\r
+ // 同時接続対応\r
+ CancelFlg = NO;\r
+\r
if(GetFocus() == GetLocalHwnd())\r
{\r
Win = WIN_LOCAL;\r
char Tmp[FMAX_PATH+1];\r
int i;\r
\r
+ // 同時接続対応\r
+ CancelFlg = NO;\r
+\r
if((i = SendMessage(hWnd, CB_GETCURSEL, 0, 0)) != CB_ERR)\r
{\r
SendMessage(hWnd, CB_GETLBTEXT, i, (LPARAM)Tmp);\r
char Remote[FMAX_PATH+1];\r
int Sts;\r
\r
+ // 同時接続対応\r
+ CancelFlg = NO;\r
+\r
Sts = AskBookMarkText(MarkID, Local, Remote, FMAX_PATH+1);\r
if((Sts == BMARK_TYPE_LOCAL) || (Sts == BMARK_TYPE_BOTH))\r
{\r
char *Title;\r
int Tmp;\r
\r
+ // 同時接続対応\r
+ CancelFlg = NO;\r
+\r
if(Win == WIN_LOCAL)\r
Title = MSGJPN072;\r
else\r
char *BufTmp;\r
int BufLen;\r
\r
+ // 同時接続対応\r
+ CancelFlg = NO;\r
+\r
if(GetFocus() == GetRemoteHwnd())\r
{\r
if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
* BOOL TRUE/FALSE\r
*----------------------------------------------------------------------------*/\r
\r
-BOOL CALLBACK ChmodDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
+// 64ビット対応\r
+//BOOL CALLBACK ChmodDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
+INT_PTR CALLBACK ChmodDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
{\r
char Str[5];\r
static char *Buf;\r
int Tmp;\r
FILELIST *FileListBase;\r
\r
+ // 同時接続対応\r
+ CancelFlg = NO;\r
+\r
if(GetFocus() == GetRemoteHwnd())\r
{\r
if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
int All;\r
int Sts;\r
\r
+ // 同時接続対応\r
+ CancelFlg = NO;\r
+\r
if((All = DialogBox(GetFtpInst(), MAKEINTRESOURCE(filesize_notify_dlg), GetMainHwnd(), SizeNotifyDlgWndProc)) != NO_ALL)\r
{\r
Sts = FFFTP_SUCCESS;\r
* Path にファイル名のみ残す。(パス名は消す)\r
*----------------------------------------------------------------------------*/\r
\r
-int ProcForNonFullpath(char *Path, char *CurDir, HWND hWnd, int Type)\r
+// 同時接続対応\r
+//int ProcForNonFullpath(char *Path, char *CurDir, HWND hWnd, int Type)\r
+int ProcForNonFullpath(SOCKET cSkt, char *Path, char *CurDir, HWND hWnd, int *CancelCheckWork)\r
{\r
int Sts;\r
int Cmd;\r
\r
if(strcmp(Tmp, CurDir) != 0)\r
{\r
- if(Type == 0)\r
- Cmd = CommandProcCmd(NULL, "CWD %s", Tmp);\r
- else\r
- Cmd = CommandProcTrn(NULL, "CWD %s", Tmp);\r
+ // 同時接続対応\r
+// if(Type == 0)\r
+// Cmd = CommandProcCmd(NULL, "CWD %s", Tmp);\r
+// else\r
+// Cmd = CommandProcTrn(NULL, "CWD %s", Tmp);\r
+ Cmd = CommandProcTrn(cSkt, NULL, CancelCheckWork, "CWD %s", Tmp);\r
\r
if(Cmd/100 != FTP_COMPLETE)\r
{\r
}\r
\r
\r
+// 自動切断対策\r
+// NOOPコマンドでは効果が無いホストが多いためLISTコマンドを使用\r
+void NoopProc(void)\r
+{\r
+ int CancelCheckWork;\r
+ CancelCheckWork = NO;\r
+ if(AskConnecting() == YES && AskUserOpeDisabled() == NO)\r
+ {\r
+ if(AskReuseCmdSkt() == NO || AskShareProh() == YES)\r
+ {\r
+ DisableUserOpe();\r
+ DoDirListCmdSkt("", "", 999, &CancelCheckWork);\r
+ EnableUserOpe();\r
+ }\r
+ }\r
+}\r
+\r