/============================================================================*/\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
+static int AskUploadFileAttr(char *Fname);\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
+#if defined(HAVE_TANDEM)\r
+static INT_PTR CALLBACK UpDownAsWithExtDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
+#endif\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
extern int VaxSemicolon;\r
extern int DebugConsole;\r
extern int CancelFlg;\r
+// ディレクトリ自動作成\r
+extern int MakeAllDir;\r
+// ファイル一覧バグ修正\r
+extern int AbortOnListError;\r
+// ミラーリング設定追加\r
+extern int MirrorNoTransferContents; \r
\r
/*===== ローカルなワーク =====*/\r
\r
static char TmpString[FMAX_PATH+80]; /* テンポラリ */\r
+#if defined(HAVE_TANDEM)\r
+static char TmpFileCode[5]; /* テンポラリ */\r
+#endif\r
static int CurWin; /* ウインドウ番号 */\r
\r
int UpExistMode = EXIST_OVW; /* アップロードで同じ名前のファイルがある時の扱い方 EXIST_xxx */\r
* なし\r
*----------------------------------------------------------------------------*/\r
\r
-void DownLoadProc(int ChName, int ForceFile, int All)\r
+// ディレクトリ自動作成\r
+// ローカル側のパスから必要なフォルダを作成\r
+int MakeDirFromLocalPath(char* LocalFile, char* Old)\r
+{\r
+ TRANSPACKET Pkt;\r
+ char* pDelimiter;\r
+ char* pNext;\r
+ char* Cat;\r
+ int Len;\r
+ int Make;\r
+ pDelimiter = LocalFile;\r
+ Make = NO;\r
+ while(pNext = strchr(pDelimiter, '\\'))\r
+ {\r
+ Len = pNext - LocalFile;\r
+ strncpy(Pkt.LocalFile, LocalFile, Len);\r
+ Pkt.LocalFile[Len] = '\0';\r
+ if(strncmp(LocalFile, Old, Len + 1) != 0)\r
+ {\r
+ Cat = Pkt.LocalFile + (pDelimiter - LocalFile);\r
+ if(FnameCnv == FNAME_LOWER)\r
+ _mbslwr(Cat);\r
+ else if(FnameCnv == FNAME_UPPER)\r
+ _mbsupr(Cat);\r
+ ReplaceAll(Pkt.LocalFile, '/', '\\');\r
+\r
+ strcpy(Pkt.Cmd, "MKD ");\r
+ strcpy(Pkt.RemoteFile, "");\r
+ AddTransFileList(&Pkt);\r
+\r
+ Make = YES;\r
+ }\r
+ pDelimiter = pNext + 1;\r
+ }\r
+ return Make;\r
+}\r
+\r
+void DownloadProc(int ChName, int ForceFile, int All)\r
{\r
FILELIST *FileListBase;\r
FILELIST *Pos;\r
TRANSPACKET Pkt;\r
+ // ディレクトリ自動作成\r
+ char Tmp[FMAX_PATH+1];\r
+ // ファイル一覧バグ修正\r
+ int ListSts;\r
+\r
+ // 同時接続対応\r
+ CancelFlg = NO;\r
\r
if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
{\r
DisableUserOpe();\r
\r
- // 同時接続対応\r
- SktShareProh();\r
-\r
ExistNotify = YES;\r
// KeepTransferDialog(YES);\r
\r
FileListBase = NULL;\r
- MakeSelectedFileList(WIN_REMOTE, (ForceFile == YES ? NO : YES), All, &FileListBase, &CancelFlg);\r
+ // ファイル一覧バグ修正\r
+// MakeSelectedFileList(WIN_REMOTE, (ForceFile == YES ? NO : YES), All, &FileListBase, &CancelFlg);\r
+ ListSts = MakeSelectedFileList(WIN_REMOTE, (ForceFile == YES ? NO : YES), All, &FileListBase, &CancelFlg);\r
\r
if(AskNoFullPathMode() == YES)\r
{\r
Pos = FileListBase;\r
while(Pos != NULL)\r
{\r
+ // ファイル一覧バグ修正\r
+ if((AbortOnListError == YES) && (ListSts == FFFTP_FAIL))\r
+ break;\r
AskLocalCurDir(Pkt.LocalFile, FMAX_PATH);\r
SetYenTail(Pkt.LocalFile);\r
strcpy(TmpString, Pos->File);\r
}\r
\r
strcpy(Pkt.Cmd, "RETR ");\r
+#if defined(HAVE_TANDEM)\r
+ if(AskHostType() == HTYPE_TANDEM) {\r
+ if(AskTransferType() != TYPE_X) {\r
+ Pkt.Type = AskTransferType();\r
+ } else {\r
+ Pkt.Attr = Pos->Attr;\r
+ if (Pkt.Attr == 101)\r
+ Pkt.Type = TYPE_A;\r
+ else\r
+ Pkt.Type = TYPE_I;\r
+ }\r
+ } else\r
+#endif\r
Pkt.Type = AskTransferTypeAssoc(Pkt.RemoteFile, AskTransferType());\r
Pkt.Size = Pos->Size;\r
Pkt.Time = Pos->Time;\r
Pkt.KanjiCodeDesired = AskLocalKanjiCode();\r
Pkt.KanaCnv = AskHostKanaCnv();\r
\r
+ // ディレクトリ自動作成\r
+ strcpy(Tmp, Pkt.LocalFile);\r
Pkt.Mode = CheckLocalFile(&Pkt); /* Pkt.ExistSize がセットされる */\r
+ // ミラーリング設定追加\r
+ Pkt.NoTransfer = NO;\r
if(Pkt.Mode == EXIST_ABORT)\r
break;\r
else if(Pkt.Mode != EXIST_IGNORE)\r
+ // ディレクトリ自動作成\r
+// AddTransFileList(&Pkt);\r
+ {\r
+ if(MakeAllDir == YES)\r
+ MakeDirFromLocalPath(Pkt.LocalFile, Tmp);\r
AddTransFileList(&Pkt);\r
+ }\r
}\r
Pos = Pos->Next;\r
}\r
}\r
DeleteFileList(&FileListBase);\r
\r
- strcpy(Pkt.Cmd, "GOQUIT");\r
- AddTransFileList(&Pkt);\r
+ // 同時接続対応\r
+// strcpy(Pkt.Cmd, "GOQUIT");\r
+// AddTransFileList(&Pkt);\r
+\r
+ // バグ対策\r
+ AddNullTransFileList();\r
\r
GoForwardTransWindow();\r
// KeepTransferDialog(NO);\r
* なし\r
*----------------------------------------------------------------------------*/\r
\r
-void DirectDownLoadProc(char *Fname)\r
+void DirectDownloadProc(char *Fname)\r
{\r
TRANSPACKET Pkt;\r
+ // ディレクトリ自動作成\r
+ char Tmp[FMAX_PATH+1];\r
+\r
+ // 同時接続対応\r
+ CancelFlg = NO;\r
\r
if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
{\r
DisableUserOpe();\r
\r
- // 同時接続対応\r
- SktShareProh();\r
-\r
ExistNotify = YES;\r
// KeepTransferDialog(YES);\r
\r
Pkt.KanjiCodeDesired = AskLocalKanjiCode();\r
Pkt.KanaCnv = AskHostKanaCnv();\r
\r
+ // ディレクトリ自動作成\r
+ strcpy(Tmp, Pkt.LocalFile);\r
Pkt.Mode = CheckLocalFile(&Pkt); /* Pkt.ExistSize がセットされる */\r
+ // ミラーリング設定追加\r
+ Pkt.NoTransfer = NO;\r
if((Pkt.Mode != EXIST_ABORT) && (Pkt.Mode != EXIST_IGNORE))\r
+ // ディレクトリ自動作成\r
+// AddTransFileList(&Pkt);\r
+ {\r
+ if(MakeAllDir == YES)\r
+ MakeDirFromLocalPath(Pkt.LocalFile, Tmp);\r
AddTransFileList(&Pkt);\r
+ }\r
}\r
}\r
\r
AddTransFileList(&Pkt);\r
}\r
\r
- strcpy(Pkt.Cmd, "GOQUIT");\r
- AddTransFileList(&Pkt);\r
+ // 同時接続対応\r
+// strcpy(Pkt.Cmd, "GOQUIT");\r
+// AddTransFileList(&Pkt);\r
+\r
+ // バグ対策\r
+ AddNullTransFileList();\r
\r
GoForwardTransWindow();\r
// KeepTransferDialog(NO);\r
* なし\r
*----------------------------------------------------------------------------*/\r
\r
-void InputDownLoadProc(void)\r
+void InputDownloadProc(void)\r
{\r
char Path[FMAX_PATH+1];\r
int Tmp;\r
strcpy(Path, "");\r
if(InputDialogBox(downname_dlg, GetMainHwnd(), NULL, Path, FMAX_PATH, &Tmp, IDH_HELP_TOPIC_0000001) == YES)\r
{\r
- DirectDownLoadProc(Path);\r
+ DirectDownloadProc(Path);\r
}\r
\r
// EnableUserOpe();\r
char *Cat;\r
int Level;\r
int Mode;\r
+ // ファイル一覧バグ修正\r
+ int ListSts;\r
+\r
+ // 同時接続対応\r
+ CancelFlg = NO;\r
\r
if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
{\r
DisableUserOpe();\r
\r
- // 同時接続対応\r
- SktShareProh();\r
-\r
Base = NULL;\r
\r
if(Notify == YES)\r
/*===== ファイルリスト取得 =====*/\r
\r
LocalListBase = NULL;\r
- MakeSelectedFileList(WIN_LOCAL, YES, YES, &LocalListBase, &CancelFlg);\r
+ // ファイル一覧バグ修正\r
+// MakeSelectedFileList(WIN_LOCAL, YES, YES, &LocalListBase, &CancelFlg);\r
+ ListSts = MakeSelectedFileList(WIN_LOCAL, YES, YES, &LocalListBase, &CancelFlg);\r
RemoteListBase = NULL;\r
- MakeSelectedFileList(WIN_REMOTE, YES, YES, &RemoteListBase, &CancelFlg);\r
+ // ファイル一覧バグ修正\r
+// MakeSelectedFileList(WIN_REMOTE, YES, YES, &RemoteListBase, &CancelFlg);\r
+ if(ListSts == FFFTP_SUCCESS)\r
+ ListSts = MakeSelectedFileList(WIN_REMOTE, YES, YES, &RemoteListBase, &CancelFlg);\r
\r
RemotePos = RemoteListBase;\r
while(RemotePos != NULL)\r
Pkt.KanjiCodeDesired = AskLocalKanjiCode();\r
Pkt.KanaCnv = AskHostKanaCnv();\r
Pkt.Mode = EXIST_OVW;\r
+ // ミラーリング設定追加\r
+ Pkt.NoTransfer = MirrorNoTransferContents;\r
AddTmpTransFileList(&Pkt, &Base);\r
}\r
}\r
RemotePos = RemotePos->Next;\r
}\r
\r
- if((Notify == YES) ||\r
- (DialogBoxParam(GetFtpInst(), MAKEINTRESOURCE(mirrordown_notify_dlg), GetMainHwnd(), MirrorDispListCallBack, (LPARAM)&Base) == YES))\r
+ // ファイル一覧バグ修正\r
+// if((Notify == YES) ||\r
+// (DialogBoxParam(GetFtpInst(), MAKEINTRESOURCE(mirrordown_notify_dlg), GetMainHwnd(), MirrorDispListCallBack, (LPARAM)&Base) == YES))\r
+ if(((AbortOnListError == NO) || (ListSts == FFFTP_SUCCESS)) && ((Notify == YES) ||\r
+ (DialogBoxParam(GetFtpInst(), MAKEINTRESOURCE(mirrordown_notify_dlg), GetMainHwnd(), MirrorDispListCallBack, (LPARAM)&Base) == YES)))\r
{\r
if(AskNoFullPathMode() == YES)\r
{\r
AddTransFileList(&Pkt);\r
}\r
\r
- strcpy(Pkt.Cmd, "GOQUIT");\r
- AddTransFileList(&Pkt);\r
+ // 同時接続対応\r
+// strcpy(Pkt.Cmd, "GOQUIT");\r
+// AddTransFileList(&Pkt);\r
}\r
else\r
EraseTmpTransFileList(&Base);\r
\r
+ // バグ対策\r
+ AddNullTransFileList();\r
+\r
DeleteFileList(&LocalListBase);\r
DeleteFileList(&RemoteListBase);\r
\r
else\r
Ret = EXIST_IGNORE;\r
}\r
+ // 同じ名前のファイルの処理方法追加\r
+ if(Ret == EXIST_LARGE)\r
+ {\r
+ if(MakeLongLong(Find.nFileSizeHigh, Find.nFileSizeLow) < Pkt->Size)\r
+ Ret = EXIST_OVW;\r
+ else\r
+ Ret = EXIST_IGNORE;\r
+ }\r
}\r
}\r
return(Ret);\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
+ // 同じ名前のファイルの処理方法追加\r
+// static const RADIOBUTTON DownExistButton[] = {\r
+// { DOWN_EXIST_OVW, EXIST_OVW },\r
+// { DOWN_EXIST_NEW, EXIST_NEW },\r
+// { DOWN_EXIST_RESUME, EXIST_RESUME },\r
+// { DOWN_EXIST_IGNORE, EXIST_IGNORE }\r
+// };\r
static const RADIOBUTTON DownExistButton[] = {\r
{ DOWN_EXIST_OVW, EXIST_OVW },\r
{ DOWN_EXIST_NEW, EXIST_NEW },\r
{ DOWN_EXIST_RESUME, EXIST_RESUME },\r
- { DOWN_EXIST_IGNORE, EXIST_IGNORE }\r
+ { DOWN_EXIST_IGNORE, EXIST_IGNORE },\r
+ { DOWN_EXIST_LARGE, EXIST_LARGE }\r
};\r
#define DOWNEXISTBUTTONS (sizeof(DownExistButton)/sizeof(RADIOBUTTON))\r
\r
* なし\r
*----------------------------------------------------------------------------*/\r
\r
-void UpLoadListProc(int ChName, int All)\r
+// ディレクトリ自動作成\r
+// リモート側のパスから必要なディレクトリを作成\r
+int MakeDirFromRemotePath(char* RemoteFile, char* Old, int FirstAdd)\r
+{\r
+ TRANSPACKET Pkt;\r
+ TRANSPACKET Pkt1;\r
+ char* pDelimiter;\r
+ char* pNext;\r
+ char* Cat;\r
+ int Len;\r
+ int Make;\r
+ pDelimiter = RemoteFile;\r
+ Make = NO;\r
+ while(pNext = strchr(pDelimiter, '/'))\r
+ {\r
+ Len = pNext - RemoteFile;\r
+ strncpy(Pkt.RemoteFile, RemoteFile, Len);\r
+ Pkt.RemoteFile[Len] = '\0';\r
+ if(strncmp(RemoteFile, Old, Len + 1) != 0)\r
+ {\r
+ Cat = Pkt.RemoteFile + (pDelimiter - RemoteFile);\r
+ if(FnameCnv == FNAME_LOWER)\r
+ _mbslwr(Cat);\r
+ else if(FnameCnv == FNAME_UPPER)\r
+ _mbsupr(Cat);\r
+#if defined(HAVE_TANDEM)\r
+ Pkt.FileCode = 0;\r
+ Pkt.PriExt = DEF_PRIEXT;\r
+ Pkt.SecExt = DEF_SECEXT;\r
+ Pkt.MaxExt = DEF_MAXEXT;\r
+#endif\r
+ ReplaceAll(Pkt.RemoteFile, '\\', '/');\r
+\r
+ if(AskHostType() == HTYPE_ACOS)\r
+ {\r
+ strcpy(Pkt.RemoteFile, "'");\r
+ strcat(Pkt.RemoteFile, AskHostLsName());\r
+ strcat(Pkt.RemoteFile, "(");\r
+ strcat(Pkt.RemoteFile, Cat);\r
+ strcat(Pkt.RemoteFile, ")");\r
+ strcat(Pkt.RemoteFile, "'");\r
+ }\r
+ else if(AskHostType() == HTYPE_ACOS_4)\r
+ strcpy(Pkt.RemoteFile, Cat);\r
+\r
+ if((FirstAdd == YES) && (AskNoFullPathMode() == YES))\r
+ {\r
+ strcpy(Pkt1.Cmd, "SETCUR");\r
+ AskRemoteCurDir(Pkt1.RemoteFile, FMAX_PATH);\r
+ AddTransFileList(&Pkt1);\r
+ }\r
+ FirstAdd = NO;\r
+ strcpy(Pkt.Cmd, "MKD ");\r
+ strcpy(Pkt.LocalFile, "");\r
+ AddTransFileList(&Pkt);\r
+\r
+ Make = YES;\r
+ }\r
+ pDelimiter = pNext + 1;\r
+ }\r
+ return Make;\r
+}\r
+\r
+void UploadListProc(int ChName, int All)\r
{\r
FILELIST *FileListBase;\r
FILELIST *Pos;\r
FILELIST *RemoteList;\r
char Tmp[FMAX_PATH+1];\r
int FirstAdd;\r
+ // ファイル一覧バグ修正\r
+ int ListSts;\r
+\r
+ // 同時接続対応\r
+ CancelFlg = NO;\r
\r
if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
{\r
DisableUserOpe();\r
\r
- // 同時接続対応\r
- SktShareProh();\r
-\r
// ローカル側で選ばれているファイルをFileListBaseに登録\r
FileListBase = NULL;\r
- MakeSelectedFileList(WIN_LOCAL, YES, All, &FileListBase, &CancelFlg);\r
+ // ファイル一覧バグ修正\r
+// MakeSelectedFileList(WIN_LOCAL, YES, All, &FileListBase, &CancelFlg);\r
+ ListSts = MakeSelectedFileList(WIN_LOCAL, YES, All, &FileListBase, &CancelFlg);\r
\r
// 現在ホスト側のファイル一覧に表示されているものをRemoteListに登録\r
// 同名ファイルチェック用\r
Pos = FileListBase;\r
while(Pos != NULL)\r
{\r
+ // ファイル一覧バグ修正\r
+ if((AbortOnListError == YES) && (ListSts == FFFTP_FAIL))\r
+ break;\r
AskRemoteCurDir(Pkt.RemoteFile, FMAX_PATH);\r
SetSlashTail(Pkt.RemoteFile);\r
Cat = strchr(Pkt.RemoteFile, NUL);\r
_mbslwr(Cat);\r
else if(FnameCnv == FNAME_UPPER)\r
_mbsupr(Cat);\r
+#if defined(HAVE_TANDEM)\r
+ Pkt.FileCode = 0;\r
+ Pkt.PriExt = DEF_PRIEXT;\r
+ Pkt.SecExt = DEF_SECEXT;\r
+ Pkt.MaxExt = DEF_MAXEXT;\r
+#endif\r
}\r
else\r
{\r
// 名前を変更する\r
strcpy(TmpString, Pos->File);\r
CurWin = WIN_LOCAL;\r
+#if defined(HAVE_TANDEM)\r
+ strcpy(TmpFileCode, "0"); /* ASCII モードの場合は無視される */\r
+ if(AskHostType() == HTYPE_TANDEM && AskOSS() == NO) {\r
+ if(DialogBox(GetFtpInst(), MAKEINTRESOURCE(updown_as_with_ext_dlg), GetMainHwnd(), UpDownAsWithExtDialogCallBack) == YES) {\r
+ strcat(Pkt.RemoteFile, TmpString);\r
+ Pkt.FileCode = atoi(TmpFileCode);\r
+ } else {\r
+ break;\r
+ }\r
+ } else\r
+#endif\r
if(DialogBox(GetFtpInst(), MAKEINTRESOURCE(updown_as_dlg), GetMainHwnd(), UpDownAsDialogCallBack) == YES)\r
strcat(Pkt.RemoteFile, TmpString);\r
else\r
break;\r
}\r
+ // バグ修正\r
+ AskRemoteCurDir(Tmp, FMAX_PATH);\r
+ SetSlashTail(Tmp);\r
+ if(strncmp(Pkt.RemoteFile, Tmp, strlen(Tmp)) != 0)\r
+ {\r
+ if((Cat = strrchr(Pkt.RemoteFile, '/')) != NULL)\r
+ Cat++;\r
+ else\r
+ Cat = Pkt.RemoteFile;\r
+ }\r
ReplaceAll(Pkt.RemoteFile, '\\', '/');\r
\r
if(AskHostType() == HTYPE_ACOS)\r
\r
strcpy(Pkt.Cmd, "STOR ");\r
Pkt.Type = AskTransferTypeAssoc(Pkt.LocalFile, AskTransferType());\r
- Pkt.Size = 0;\r
+ // バグ修正\r
+// Pkt.Size = 0;\r
+ Pkt.Size = Pos->Size;\r
Pkt.Time = Pos->Time;\r
- Pkt.Attr = AskUpLoadFileAttr(Pkt.RemoteFile);\r
+ Pkt.Attr = AskUploadFileAttr(Pkt.RemoteFile);\r
Pkt.KanjiCode = AskHostKanjiCode();\r
// UTF-8対応\r
Pkt.KanjiCodeDesired = AskLocalKanjiCode();\r
Pkt.KanaCnv = AskHostKanaCnv();\r
+#if defined(HAVE_TANDEM)\r
+ if(AskHostType() == HTYPE_TANDEM && AskOSS() == NO) {\r
+ CalcExtentSize(&Pkt, Pos->Size);\r
+ }\r
+#endif\r
+ // ディレクトリ自動作成\r
+ strcpy(Tmp, Pkt.RemoteFile);\r
Pkt.Mode = CheckRemoteFile(&Pkt, RemoteList);\r
+ // ミラーリング設定追加\r
+ Pkt.NoTransfer = NO;\r
if(Pkt.Mode == EXIST_ABORT)\r
break;\r
else if(Pkt.Mode != EXIST_IGNORE)\r
{\r
+ // ディレクトリ自動作成\r
+ if(MakeAllDir == YES)\r
+ {\r
+ if(MakeDirFromRemotePath(Pkt.RemoteFile, Tmp, FirstAdd) == YES)\r
+ FirstAdd = NO;\r
+ }\r
if((FirstAdd == YES) && (AskNoFullPathMode() == YES))\r
{\r
strcpy(Pkt1.Cmd, "SETCUR");\r
\r
DeleteFileList(&FileListBase);\r
\r
- strcpy(Pkt.Cmd, "GOQUIT");\r
- AddTransFileList(&Pkt);\r
+ // 同時接続対応\r
+// strcpy(Pkt.Cmd, "GOQUIT");\r
+// AddTransFileList(&Pkt);\r
+\r
+ // バグ対策\r
+ AddNullTransFileList();\r
\r
GoForwardTransWindow();\r
\r
* なし\r
*----------------------------------------------------------------------------*/\r
\r
-void UpLoadDragProc(WPARAM wParam)\r
+void UploadDragProc(WPARAM wParam)\r
{\r
FILELIST *FileListBase;\r
FILELIST *Pos;\r
int FirstAdd;\r
char Cur[FMAX_PATH+1];\r
\r
+ // 同時接続対応\r
+ CancelFlg = NO;\r
+\r
if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
{\r
DisableUserOpe();\r
\r
- // 同時接続対応\r
- SktShareProh();\r
-\r
// ローカル側で選ばれているファイルをFileListBaseに登録\r
FileListBase = NULL;\r
MakeDroppedFileList(wParam, Cur, &FileListBase);\r
else if(FnameCnv == FNAME_UPPER)\r
_mbsupr(Cat);\r
ReplaceAll(Pkt.RemoteFile, '\\', '/');\r
+#if defined(HAVE_TANDEM)\r
+ Pkt.FileCode = 0;\r
+ Pkt.PriExt = DEF_PRIEXT;\r
+ Pkt.SecExt = DEF_SECEXT;\r
+ Pkt.MaxExt = DEF_MAXEXT;\r
+#endif\r
\r
if(AskHostType() == HTYPE_ACOS)\r
{\r
\r
strcpy(Pkt.Cmd, "STOR ");\r
Pkt.Type = AskTransferTypeAssoc(Pkt.LocalFile, AskTransferType());\r
- Pkt.Size = 0;\r
+ // バグ修正\r
+// Pkt.Size = 0;\r
+ Pkt.Size = Pos->Size;\r
Pkt.Time = Pos->Time;\r
- Pkt.Attr = AskUpLoadFileAttr(Pkt.RemoteFile);\r
+ Pkt.Attr = AskUploadFileAttr(Pkt.RemoteFile);\r
Pkt.KanjiCode = AskHostKanjiCode();\r
// UTF-8対応\r
Pkt.KanjiCodeDesired = AskLocalKanjiCode();\r
Pkt.KanaCnv = AskHostKanaCnv();\r
+#if defined(HAVE_TANDEM)\r
+ if(AskHostType() == HTYPE_TANDEM && AskOSS() == NO) {\r
+ int a = Pos->InfoExist && FINFO_SIZE;\r
+ CalcExtentSize(&Pkt, Pos->Size);\r
+ }\r
+#endif\r
+ // ディレクトリ自動作成\r
+ strcpy(Tmp, Pkt.RemoteFile);\r
Pkt.Mode = CheckRemoteFile(&Pkt, RemoteList);\r
+ // ミラーリング設定追加\r
+ Pkt.NoTransfer = NO;\r
if(Pkt.Mode == EXIST_ABORT)\r
break;\r
else if(Pkt.Mode != EXIST_IGNORE)\r
{\r
+ // ディレクトリ自動作成\r
+ if(MakeAllDir == YES)\r
+ {\r
+ if(MakeDirFromRemotePath(Pkt.RemoteFile, Tmp, FirstAdd) == YES)\r
+ FirstAdd = NO;\r
+ }\r
if((FirstAdd == YES) && (AskNoFullPathMode() == YES))\r
{\r
strcpy(Pkt1.Cmd, "SETCUR");\r
\r
DeleteFileList(&FileListBase);\r
\r
- strcpy(Pkt.Cmd, "GOQUIT");\r
- AddTransFileList(&Pkt);\r
+ // 同時接続対応\r
+// strcpy(Pkt.Cmd, "GOQUIT");\r
+// AddTransFileList(&Pkt);\r
+\r
+ // バグ対策\r
+ AddNullTransFileList();\r
\r
GoForwardTransWindow();\r
\r
SYSTEMTIME TmpStime;\r
FILETIME TmpFtimeL;\r
FILETIME TmpFtimeR;\r
+ // ファイル一覧バグ修正\r
+ int ListSts;\r
+\r
+ // 同時接続対応\r
+ CancelFlg = NO;\r
\r
if(CheckClosedAndReconnect() == FFFTP_SUCCESS)\r
{\r
DisableUserOpe();\r
\r
- // 同時接続対応\r
- SktShareProh();\r
-\r
Base = NULL;\r
\r
if(Notify == YES)\r
/*===== ファイルリスト取得 =====*/\r
\r
LocalListBase = NULL;\r
- MakeSelectedFileList(WIN_LOCAL, YES, YES, &LocalListBase, &CancelFlg);\r
+ // ファイル一覧バグ修正\r
+// MakeSelectedFileList(WIN_LOCAL, YES, YES, &LocalListBase, &CancelFlg);\r
+ ListSts = MakeSelectedFileList(WIN_LOCAL, YES, YES, &LocalListBase, &CancelFlg);\r
RemoteListBase = NULL;\r
- MakeSelectedFileList(WIN_REMOTE, YES, YES, &RemoteListBase, &CancelFlg);\r
+ // ファイル一覧バグ修正\r
+// MakeSelectedFileList(WIN_REMOTE, YES, YES, &RemoteListBase, &CancelFlg);\r
+ if(ListSts == FFFTP_SUCCESS)\r
+ ListSts = MakeSelectedFileList(WIN_REMOTE, YES, YES, &RemoteListBase, &CancelFlg);\r
\r
LocalPos = LocalListBase;\r
while(LocalPos != NULL)\r
\r
strcpy(Pkt.Cmd, "STOR ");\r
Pkt.Type = AskTransferTypeAssoc(Pkt.LocalFile, AskTransferType());\r
- Pkt.Size = 0;\r
+ // バグ修正\r
+// Pkt.Size = 0;\r
+ Pkt.Size = LocalPos->Size;\r
Pkt.Time = LocalPos->Time;\r
- Pkt.Attr = AskUpLoadFileAttr(Pkt.RemoteFile);\r
+ Pkt.Attr = AskUploadFileAttr(Pkt.RemoteFile);\r
Pkt.KanjiCode = AskHostKanjiCode();\r
// UTF-8対応\r
Pkt.KanjiCodeDesired = AskLocalKanjiCode();\r
Pkt.KanaCnv = AskHostKanaCnv();\r
+#if defined(HAVE_TANDEM)\r
+ if(AskHostType() == HTYPE_TANDEM && AskOSS() == NO) {\r
+ CalcExtentSize(&Pkt, LocalPos->Size);\r
+ }\r
+#endif\r
Pkt.Mode = EXIST_OVW;\r
+ // ミラーリング設定追加\r
+ Pkt.NoTransfer = MirrorNoTransferContents;\r
AddTmpTransFileList(&Pkt, &Base);\r
}\r
}\r
LocalPos = LocalPos->Next;\r
}\r
\r
- if((Notify == YES) ||\r
- (DialogBoxParam(GetFtpInst(), MAKEINTRESOURCE(mirror_notify_dlg), GetMainHwnd(), MirrorDispListCallBack, (LPARAM)&Base) == YES))\r
+ // ファイル一覧バグ修正\r
+// if((Notify == YES) ||\r
+// (DialogBoxParam(GetFtpInst(), MAKEINTRESOURCE(mirror_notify_dlg), GetMainHwnd(), MirrorDispListCallBack, (LPARAM)&Base) == YES))\r
+ if(((AbortOnListError == NO) || (ListSts == FFFTP_SUCCESS)) && ((Notify == YES) ||\r
+ (DialogBoxParam(GetFtpInst(), MAKEINTRESOURCE(mirror_notify_dlg), GetMainHwnd(), MirrorDispListCallBack, (LPARAM)&Base) == YES)))\r
{\r
if(AskNoFullPathMode() == YES)\r
{\r
AddTransFileList(&Pkt);\r
}\r
\r
- strcpy(Pkt.Cmd, "GOQUIT");\r
- AddTransFileList(&Pkt);\r
+ // 同時接続対応\r
+// strcpy(Pkt.Cmd, "GOQUIT");\r
+// AddTransFileList(&Pkt);\r
}\r
else\r
EraseTmpTransFileList(&Base);\r
\r
+ // バグ対策\r
+ AddNullTransFileList();\r
+\r
DeleteFileList(&LocalListBase);\r
DeleteFileList(&RemoteListBase);\r
\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
CountMirrorFiles(hDlg, *Base);\r
DlgSizeInit(hDlg, &DlgSize, &MirrorDlgSize);\r
EnableWindow(GetDlgItem(hDlg, MIRROR_DEL), FALSE);\r
+ // ミラーリング設定追加\r
+ SendDlgItemMessage(hDlg, MIRROR_NO_TRANSFER, BM_SETCHECK, MirrorNoTransferContents, 0);\r
return(TRUE);\r
\r
case WM_COMMAND :\r
}\r
break;\r
\r
+ // ミラーリング設定追加\r
+ case MIRROR_NO_TRANSFER :\r
+ Pos = *Base;\r
+ while(Pos != NULL)\r
+ {\r
+ if(strncmp(Pos->Cmd, "STOR", 4) == 0 || strncmp(Pos->Cmd, "RETR", 4) == 0)\r
+ Pos->NoTransfer = SendDlgItemMessage(hDlg, MIRROR_NO_TRANSFER, BM_GETCHECK, 0, 0);\r
+ Pos = Pos->Next;\r
+ }\r
+ break;\r
+\r
case IDHELP :\r
hHelpWin = HtmlHelp(NULL, AskHelpFilePath(), HH_HELP_CONTEXT, IDH_HELP_TOPIC_0000012);\r
}\r
* int 属性 (-1=設定なし)\r
*----------------------------------------------------------------------------*/\r
\r
-static int AskUpLoadFileAttr(char *Fname)\r
+static int AskUploadFileAttr(char *Fname)\r
{\r
int Ret;\r
int Sts;\r
static int CheckRemoteFile(TRANSPACKET *Pkt, FILELIST *ListList)\r
{\r
int Ret;\r
+#if defined(HAVE_TANDEM)\r
+ int Mode;\r
+#endif\r
FILELIST *Exist;\r
\r
Ret = EXIST_OVW;\r
Pkt->ExistSize = 0;\r
if(SendMode != TRANS_OVW)\r
{\r
+#if defined(HAVE_TANDEM)\r
+ /* HP NonStop Server は大文字小文字の区別なし(すべて大文字) */\r
+ if(AskHostType() == HTYPE_TANDEM)\r
+ Mode = COMP_IGNORE;\r
+ else\r
+ Mode = COMP_STRICT;\r
+\r
+ if((Exist = SearchFileList(GetFileName(Pkt->RemoteFile), ListList, Mode)) != NULL)\r
+#else\r
if((Exist = SearchFileList(GetFileName(Pkt->RemoteFile), ListList, COMP_STRICT)) != NULL)\r
+#endif\r
{\r
Pkt->ExistSize = Exist->Size;\r
\r
else\r
Ret = EXIST_IGNORE;\r
}\r
+ // 同じ名前のファイルの処理方法追加\r
+ if(Ret == EXIST_LARGE)\r
+ {\r
+ if(Exist->Size < Pkt->Size)\r
+ Ret = EXIST_OVW;\r
+ else\r
+ Ret = EXIST_IGNORE;\r
+ }\r
}\r
}\r
return(Ret);\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
+ // 同じ名前のファイルの処理方法追加\r
+// static const RADIOBUTTON UpExistButton[] = {\r
+// { UP_EXIST_OVW, EXIST_OVW },\r
+// { UP_EXIST_NEW, EXIST_NEW },\r
+// { UP_EXIST_RESUME, EXIST_RESUME },\r
+// { UP_EXIST_UNIQUE, EXIST_UNIQUE },\r
+// { UP_EXIST_IGNORE, EXIST_IGNORE }\r
+// };\r
static const RADIOBUTTON UpExistButton[] = {\r
{ UP_EXIST_OVW, EXIST_OVW },\r
{ UP_EXIST_NEW, EXIST_NEW },\r
{ UP_EXIST_RESUME, EXIST_RESUME },\r
{ UP_EXIST_UNIQUE, EXIST_UNIQUE },\r
- { UP_EXIST_IGNORE, EXIST_IGNORE }\r
+ { UP_EXIST_IGNORE, EXIST_IGNORE },\r
+ { UP_EXIST_LARGE, EXIST_LARGE }\r
};\r
#define UPEXISTBUTTONS (sizeof(UpExistButton)/sizeof(RADIOBUTTON))\r
\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
}\r
\r
\r
+#if defined(HAVE_TANDEM)\r
+/*----- アップロード/ダウンロードファイル名入力ダイアログのコールバック ------\r
+*\r
+* Parameter\r
+* HWND hDlg : ウインドウハンドル\r
+* UINT message : メッセージ番号\r
+* WPARAM wParam : メッセージの WPARAM 引数\r
+* LPARAM lParam : メッセージの LPARAM 引数\r
+*\r
+* Return Value\r
+* BOOL TRUE/FALSE\r
+*----------------------------------------------------------------------------*/\r
+\r
+static INT_PTR CALLBACK UpDownAsWithExtDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
+{\r
+ switch (iMessage)\r
+ {\r
+ case WM_INITDIALOG :\r
+ if(CurWin == WIN_LOCAL)\r
+ SendMessage(hDlg, WM_SETTEXT, 0, (LPARAM)MSGJPN064);\r
+ else\r
+ SendMessage(hDlg, WM_SETTEXT, 0, (LPARAM)MSGJPN065);\r
+\r
+ SendDlgItemMessage(hDlg, UPDOWNAS_NEW, EM_LIMITTEXT, FMAX_PATH, 0);\r
+ SendDlgItemMessage(hDlg, UPDOWNAS_NEW, WM_SETTEXT, 0, (LPARAM)TmpString);\r
+ SendDlgItemMessage(hDlg, UPDOWNAS_TEXT, WM_SETTEXT, 0, (LPARAM)TmpString);\r
+ SendDlgItemMessage(hDlg, UPDOWNAS_FILECODE, EM_LIMITTEXT, 4, 0);\r
+ SendDlgItemMessage(hDlg, UPDOWNAS_FILECODE, WM_SETTEXT, 0, (LPARAM)TmpFileCode);\r
+\r
+ return(TRUE);\r
+\r
+ case WM_COMMAND :\r
+ switch(GET_WM_COMMAND_ID(wParam, lParam))\r
+ {\r
+ case IDOK :\r
+ SendDlgItemMessage(hDlg, UPDOWNAS_NEW, WM_GETTEXT, FMAX_PATH, (LPARAM)TmpString);\r
+ SendDlgItemMessage(hDlg, UPDOWNAS_FILECODE, WM_GETTEXT, FMAX_PATH, (LPARAM)TmpFileCode);\r
+ EndDialog(hDlg, YES);\r
+ break;\r
+\r
+ case UPDOWNAS_STOP :\r
+ EndDialog(hDlg, NO_ALL);\r
+ break;\r
+ }\r
+ return(TRUE);\r
+ }\r
+ return(FALSE);\r
+}\r
+#endif\r
+\r
+\r
/*----- ファイル一覧で指定されたファイルを削除する ----------------------------\r
*\r
* Parameter\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
AskRemoteCurDir(HostDir, FMAX_PATH);\r
\r
// ドロップ先のフォルダ名を得る\r
- GetNodeName(WIN_REMOTE, drop_index, Pkt.File, FMAX_PATH);\r
+ // 上位のディレクトリへ移動対応\r
+// GetNodeName(WIN_REMOTE, drop_index, Pkt.File, FMAX_PATH);\r
+ if(drop_index >= 0)\r
+ GetNodeName(WIN_REMOTE, drop_index, Pkt.File, FMAX_PATH);\r
+ else\r
+ strcpy(Pkt.File, "..");\r
\r
if(MoveMode == MOVE_DLG)\r
{\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
\r
strcpy(Path, "");\r
if(Win == WIN_LOCAL)\r
- Sts = InputDialogBox(chdir_br_dlg, GetMainHwnd(), Title, Path, FMAX_PATH+1, &Tmp, IDH_HELP_TOPIC_0000001);\r
+ // フォルダ選択ダイアログを直接表示\r
+// Sts = InputDialogBox(chdir_br_dlg, GetMainHwnd(), Title, Path, FMAX_PATH+1, &Tmp, IDH_HELP_TOPIC_0000001);\r
+ {\r
+ if(SelectDir(GetMainHwnd(), Path, FMAX_PATH) == TRUE)\r
+ Sts = YES;\r
+ }\r
else\r
Sts = InputDialogBox(chdir_dlg, GetMainHwnd(), Title, Path, FMAX_PATH+1, &Tmp, IDH_HELP_TOPIC_0000001);\r
\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
\r
if(InputDialogBox(somecmd_dlg, GetMainHwnd(), NULL, Cmd, 81, &Tmp, IDH_HELP_TOPIC_0000023) == YES)\r
{\r
- DoQUOTE(Cmd);\r
+ // 同時接続対応\r
+ //DoQUOTE(Cmd);\r
+ DoQUOTE(AskCmdCtrlSkt(), Cmd, &CancelFlg);\r
}\r
EnableUserOpe();\r
}\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
- // 同時接続対応\r
+ // 同時接続対応\r
+// if(Type == 0)\r
+// Cmd = CommandProcCmd(NULL, "CWD %s", Tmp);\r
+// else\r
// Cmd = CommandProcTrn(NULL, "CWD %s", Tmp);\r
- Cmd = CommandProcTrn((SOCKET)(Type - 1), 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(int Force)\r
+{\r
+// CancelFlg = NO;\r
+ if(Force == YES || (AskConnecting() == YES && AskUserOpeDisabled() == NO))\r
+ {\r
+ if(AskReuseCmdSkt() == NO || AskShareProh() == YES || AskTransferNow() == NO)\r
+ {\r
+ DisableUserOpe();\r
+ DoDirListCmdSkt("", "", 999, &CancelFlg);\r
+ EnableUserOpe();\r
+ }\r
+ }\r
+}\r
+\r
+// 同時接続対応\r
+void AbortRecoveryProc(void)\r
+{\r
+ CancelFlg = NO;\r
+ if(AskConnecting() == YES && AskUserOpeDisabled() == NO)\r
+ {\r
+ if(AskReuseCmdSkt() == NO || AskShareProh() == YES || AskTransferNow() == NO)\r
+ {\r
+ if(AskErrorReconnect() == YES)\r
+ {\r
+ DisableUserOpe();\r
+ ReConnectCmdSkt();\r
+ GetRemoteDirForWnd(CACHE_REFRESH, &CancelFlg);\r
+ EnableUserOpe();\r
+ }\r
+ else\r
+ RemoveReceivedData(AskCmdCtrlSkt());\r
+ }\r
+ }\r
+ return;\r
+}\r
+\r