static int DownLoadPassive(TRANSPACKET *Pkt, int *CancelCheckWork);\r
static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *CancelCheckWork);\r
static void DispDownloadFinishMsg(TRANSPACKET *Pkt, int iRetCode);\r
-static int DispUpDownErrDialog(int ResID, HWND hWnd, char *Fname);\r
+// 再転送対応\r
+//static int DispUpDownErrDialog(int ResID, HWND hWnd, char *Fname);\r
+static int DispUpDownErrDialog(int ResID, HWND hWnd, TRANSPACKET *Pkt);\r
static BOOL CALLBACK UpDownErrorDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
static int SetDownloadResume(TRANSPACKET *Pkt, int ProcMode, LONGLONG Size, int *Mode, int *CancelCheckWork);\r
static BOOL CALLBACK NoResumeWndProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
\r
// 同時接続対応\r
static int WaitForMainThread = NO;\r
+// 再転送対応\r
+static int TransferErrorMode = EXIST_OVW;\r
+static int TransferErrorNotify = NO;\r
\r
/*===== 外部参照 =====*/\r
\r
\r
void AddTransFileList(TRANSPACKET *Pkt)\r
{\r
+ // 同時接続対応\r
+ TRANSPACKET *Pos;\r
+\r
DispTransPacket(Pkt);\r
\r
// 同時接続対応\r
Sleep(1);\r
}\r
\r
+ // 同時接続対応\r
+ Pos = TransPacketBase;\r
+ if(Pos != NULL)\r
+ {\r
+ while(Pos->Next != NULL)\r
+ Pos = Pos->Next;\r
+ }\r
if(AddTmpTransFileList(Pkt, &TransPacketBase) == FFFTP_SUCCESS)\r
{\r
if((strncmp(Pkt->Cmd, "RETR", 4) == 0) ||\r
}\r
// 同時接続対応\r
if(NextTransPacketBase == NULL)\r
- NextTransPacketBase = TransPacketBase;\r
+ {\r
+ if(Pos)\r
+ NextTransPacketBase = Pos->Next;\r
+ else\r
+ NextTransPacketBase = TransPacketBase;\r
+ }\r
ReleaseMutex(hListAccMutex);\r
// 同時接続対応\r
WaitForMainThread = NO;\r
}\r
// 同時接続対応\r
if(NextTransPacketBase == NULL)\r
- NextTransPacketBase = TransPacketBase;\r
+ NextTransPacketBase = Pkt;\r
\r
while(Pkt != NULL)\r
{\r
}\r
TransPacketBase = NotDel;\r
// 同時接続対応\r
- NextTransPacketBase = TransPacketBase;\r
+ NextTransPacketBase = NotDel;\r
TransFiles = 0;\r
PostMessage(GetMainHwnd(), WM_CHANGE_COND, 0, 0);\r
ReleaseMutex(hListAccMutex);\r
PostMessage(GetMainHwnd(), WM_COMMAND, MAKEWPARAM(MENU_AUTO_EXIT, 0), 0);\r
GoExit = NO;\r
}\r
+\r
+ // 再転送対応\r
+ TransferErrorMode = AskTransferErrorMode();\r
+ TransferErrorNotify = AskTransferErrorNotify();\r
}\r
else\r
{\r
{\r
// 全て中止を選択後にダイアログが表示されるバグ対策\r
// if(DispUpDownErrDialog(downerr_dlg, Pkt->hWndTrans, Fname) == NO)\r
- if(Canceled[Pkt->ThreadCount] == NO && ClearAll == NO && DispUpDownErrDialog(downerr_dlg, Pkt->hWndTrans, Fname) == NO)\r
- ClearAll = YES;\r
+ // 再転送対応\r
+// if(Canceled[Pkt->ThreadCount] == NO && ClearAll == NO && DispUpDownErrDialog(downerr_dlg, Pkt->hWndTrans, Fname) == NO)\r
+// ClearAll = YES;\r
+ if(Canceled[Pkt->ThreadCount] == NO && ClearAll == NO)\r
+ {\r
+ if(strncmp(Pkt->Cmd, "RETR", 4) == 0 || strncmp(Pkt->Cmd, "STOR", 4) == 0)\r
+ {\r
+ if(TransferErrorNotify == YES && DispUpDownErrDialog(downerr_dlg, Pkt->hWndTrans, Pkt) == NO)\r
+ ClearAll = YES;\r
+ else\r
+ {\r
+ Pkt->Mode = TransferErrorMode;\r
+ AddTransFileList(Pkt);\r
+ }\r
+ }\r
+ }\r
}\r
}\r
else\r
* int ステータス (YES=中止/NO=全て中止)\r
*----------------------------------------------------------------------------*/\r
\r
-static int DispUpDownErrDialog(int ResID, HWND hWnd, char *Fname)\r
+// 再転送対応\r
+//static int DispUpDownErrDialog(int ResID, HWND hWnd, char *Fname)\r
+static int DispUpDownErrDialog(int ResID, HWND hWnd, TRANSPACKET *Pkt)\r
{\r
if(hWnd == NULL)\r
hWnd = GetMainHwnd();\r
\r
SoundPlay(SND_ERROR);\r
- return(DialogBoxParam(GetFtpInst(), MAKEINTRESOURCE(ResID), hWnd, UpDownErrorDialogProc, (LPARAM)Fname));\r
+ // 再転送対応\r
+// return(DialogBoxParam(GetFtpInst(), MAKEINTRESOURCE(ResID), hWnd, UpDownErrorDialogProc, (LPARAM)Fname));\r
+ return(DialogBoxParam(GetFtpInst(), MAKEINTRESOURCE(ResID), hWnd, UpDownErrorDialogProc, (LPARAM)Pkt));\r
}\r
\r
\r
\r
static BOOL CALLBACK UpDownErrorDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
{\r
+ static TRANSPACKET *Pkt;\r
+ static const RADIOBUTTON DownExistButton[] = {\r
+ { DOWN_EXIST_OVW, EXIST_OVW },\r
+ { DOWN_EXIST_RESUME, EXIST_RESUME },\r
+ { DOWN_EXIST_IGNORE, EXIST_IGNORE }\r
+ };\r
+ #define DOWNEXISTBUTTONS (sizeof(DownExistButton)/sizeof(RADIOBUTTON))\r
+\r
switch (message)\r
{\r
case WM_INITDIALOG :\r
- SendDlgItemMessage(hDlg, UPDOWN_ERR_FNAME, WM_SETTEXT, 0, (LPARAM)lParam);\r
+ Pkt = (TRANSPACKET *)lParam;\r
+// SendDlgItemMessage(hDlg, UPDOWN_ERR_FNAME, WM_SETTEXT, 0, (LPARAM)lParam);\r
+ SendDlgItemMessage(hDlg, UPDOWN_ERR_FNAME, WM_SETTEXT, 0, (LPARAM)Pkt->RemoteFile);\r
// 同時接続対応\r
// SendDlgItemMessage(hDlg, UPDOWN_ERR_MSG, WM_SETTEXT, 0, (LPARAM)ErrMsg);\r
SendDlgItemMessage(hDlg, UPDOWN_ERR_MSG, WM_SETTEXT, 0, (LPARAM)GetErrMsg());\r
+\r
+ if((Pkt->Type == TYPE_A) || (Pkt->ExistSize <= 0))\r
+ EnableWindow(GetDlgItem(hDlg, DOWN_EXIST_RESUME), FALSE);\r
+\r
+ SetRadioButtonByValue(hDlg, TransferErrorMode, DownExistButton, DOWNEXISTBUTTONS);\r
return(TRUE);\r
\r
case WM_COMMAND :\r
switch(GET_WM_COMMAND_ID(wParam, lParam))\r
{\r
+ case IDOK_ALL :\r
+ TransferErrorNotify = NO;\r
+ /* ここに break はない */\r
+\r
case IDOK :\r
+ TransferErrorMode = AskRadioButtonValue(hDlg, DownExistButton, DOWNEXISTBUTTONS);\r
EndDialog(hDlg, YES);\r
break;\r
\r
case IDCANCEL :\r
EndDialog(hDlg, NO);\r
break;\r
+\r
+ case IDHELP :\r
+// hHelpWin = HtmlHelp(NULL, AskHelpFilePath(), HH_HELP_CONTEXT, IDH_HELP_TOPIC_0000009);\r
+ break;\r
}\r
- return(TRUE);\r
+ return(TRUE);\r
}\r
- return(FALSE);\r
+ return(FALSE);\r
}\r
\r
\r
{\r
// 全て中止を選択後にダイアログが表示されるバグ対策\r
// if(DispUpDownErrDialog(uperr_dlg, Pkt->hWndTrans, Pkt->LocalFile) == NO)\r
- if(Canceled[Pkt->ThreadCount] == NO && ClearAll == NO && DispUpDownErrDialog(uperr_dlg, Pkt->hWndTrans, Pkt->LocalFile) == NO)\r
- ClearAll = YES;\r
+ // 再転送対応\r
+// if(Canceled[Pkt->ThreadCount] == NO && ClearAll == NO && DispUpDownErrDialog(uperr_dlg, Pkt->hWndTrans, Pkt->LocalFile) == NO)\r
+// ClearAll = YES;\r
+ if(Canceled[Pkt->ThreadCount] == NO && ClearAll == NO)\r
+ {\r
+ if(strncmp(Pkt->Cmd, "RETR", 4) == 0 || strncmp(Pkt->Cmd, "STOR", 4) == 0)\r
+ {\r
+ if(TransferErrorNotify == YES && DispUpDownErrDialog(uperr_dlg, Pkt->hWndTrans, Pkt) == NO)\r
+ ClearAll = YES;\r
+ else\r
+ {\r
+ Pkt->Mode = TransferErrorMode;\r
+ AddTransFileList(Pkt);\r
+ }\r
+ }\r
+ }\r
}\r
}\r
else\r