• R/O
  • HTTP
  • SSH
  • HTTPS

コミット

よく使われているワード(クリックで追加)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Loweynet


コミットメタ情報

リビジョン6aa7febbc4c45b9c466c98b912cca6eec34df204 (tree)
日時2011-11-18 21:58:10
作者s_kawamoto <s_kawamoto@user...>
コミッターs_kawamoto

ログメッセージ

Add support for retrying file transfer.
Add UI for retrying file transfer.
Fix bugs of file transfer queues.
Modify documents.

変更サマリ

差分

Binary files a/FFFTP_Eng_Release/FFFTP.exe and b/FFFTP_Eng_Release/FFFTP.exe differ
Binary files a/Release/FFFTP.exe and b/Release/FFFTP.exe differ
--- a/Resource/FFFTP.rc
+++ b/Resource/FFFTP.rc
@@ -700,28 +700,38 @@ BEGIN
700700 PUSHBUTTON "ƒeƒXƒg",SOUND_ERROR_TEST,166,88,37,13
701701 END
702702
703-downerr_dlg DIALOGEX 0, 0, 182, 65
703+downerr_dlg DIALOG 0, 0, 223, 103
704704 STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | WS_POPUP | WS_CAPTION
705705 CAPTION "FFFTPFƒGƒ‰["
706-FONT 9, "‚l‚r ‚oƒSƒVƒbƒN", 0, 0, 0x1
706+FONT 9, "‚l‚r ‚oƒSƒVƒbƒN"
707707 BEGIN
708- DEFPUSHBUTTON "‚±‚̃tƒ@ƒCƒ‹‚𒆎~",IDOK,10,47,76,14
709- PUSHBUTTON "‘S‚Ä’†Ž~",IDCANCEL,95,47,76,14
710- LTEXT "‚ªƒ_ƒEƒ“ƒ[ƒh‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B",-1,16,16,138,10
711- LTEXT "",UPDOWN_ERR_FNAME,7,4,168,8,SS_NOPREFIX
712- EDITTEXT UPDOWN_ERR_MSG,7,28,168,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_STATICEDGE
708+ CONTROL "Œã‚ŏ㏑‚«(&O)",DOWN_EXIST_OVW,"Button",BS_AUTORADIOBUTTON | WS_GROUP,7,46,99,10
709+ CONTROL "Œã‚ŃŠƒWƒ…[ƒ€(&R)",DOWN_EXIST_RESUME,"Button",BS_AUTORADIOBUTTON,7,58,99,10
710+ CONTROL "ƒ_ƒEƒ“ƒ[ƒh‚µ‚È‚¢(&N)",DOWN_EXIST_IGNORE,"Button",BS_AUTORADIOBUTTON,7,70,99,10
711+ DEFPUSHBUTTON "OK",IDOK,8,85,50,14,WS_GROUP
712+ PUSHBUTTON "ˆÈ~‘S‚Ä(&A)",IDOK_ALL,63,85,50,14
713+ PUSHBUTTON "‘S‚Ä’†Ž~(&S)",IDCANCEL,118,85,50,14
714+ PUSHBUTTON "ƒwƒ‹ƒv",9,173,85,41,14
715+ LTEXT "‚ªƒ_ƒEƒ“ƒ[ƒh‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B",-1,7,16,184,10
716+ LTEXT "",UPDOWN_ERR_FNAME,7,4,184,8,SS_NOPREFIX
717+ EDITTEXT UPDOWN_ERR_MSG,7,28,209,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_STATICEDGE
713718 END
714719
715-uperr_dlg DIALOGEX 0, 0, 182, 65
720+uperr_dlg DIALOG 0, 0, 223, 103
716721 STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | WS_POPUP | WS_CAPTION
717722 CAPTION "FFFTPFƒGƒ‰["
718-FONT 9, "‚l‚r ‚oƒSƒVƒbƒN", 0, 0, 0x1
723+FONT 9, "‚l‚r ‚oƒSƒVƒbƒN"
719724 BEGIN
720- DEFPUSHBUTTON "‚±‚̃tƒ@ƒCƒ‹‚𒆎~",IDOK,9,47,76,14
721- PUSHBUTTON "‘S‚Ä’†Ž~",IDCANCEL,95,47,76,14
722- LTEXT "‚ªƒAƒbƒvƒ[ƒh‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B",-1,21,16,137,10
723- LTEXT "",UPDOWN_ERR_FNAME,7,4,168,8,SS_NOPREFIX
724- EDITTEXT UPDOWN_ERR_MSG,7,29,168,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_STATICEDGE
725+ CONTROL "Œã‚ŏ㏑‚«(&O)",DOWN_EXIST_OVW,"Button",BS_AUTORADIOBUTTON | WS_GROUP,7,46,99,10
726+ CONTROL "Œã‚ŃŠƒWƒ…[ƒ€(&R)",DOWN_EXIST_RESUME,"Button",BS_AUTORADIOBUTTON,7,58,99,10
727+ CONTROL "ƒAƒbƒvƒ[ƒh‚µ‚È‚¢(&N)",DOWN_EXIST_IGNORE,"Button",BS_AUTORADIOBUTTON,7,70,99,10
728+ DEFPUSHBUTTON "OK",IDOK,8,85,50,14,WS_GROUP
729+ PUSHBUTTON "ˆÈ~‘S‚Ä(&A)",IDOK_ALL,63,85,50,14
730+ PUSHBUTTON "‘S‚Ä’†Ž~(&S)",IDCANCEL,118,85,50,14
731+ PUSHBUTTON "ƒwƒ‹ƒv",9,173,85,41,14
732+ LTEXT "‚ªƒAƒbƒvƒ[ƒh‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½B",-1,7,16,184,10
733+ LTEXT "",UPDOWN_ERR_FNAME,7,4,184,8,SS_NOPREFIX
734+ EDITTEXT UPDOWN_ERR_MSG,7,28,209,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_STATICEDGE
725735 END
726736
727737 hset_code_dlg DIALOGEX 0, 0, 207, 155
@@ -1371,6 +1381,8 @@ BEGIN
13711381 EDITTEXT HSET_NOOP_INTERVAL,92,42,17,12,ES_AUTOHSCROLL | ES_NUMBER
13721382 CONTROL "Spin1",HSET_NOOP_INTERVAL_SPN,"msctls_updown32",UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,109,41,9,14
13731383 LTEXT "(0`300•bF 0=–³Œø)",-1,122,44,76,8
1384+ LTEXT "“]‘—ƒGƒ‰[Žž‚̏ˆ—",-1,7,61,81,8
1385+ COMBOBOX HSET_ERROR_MODE,7,71,71,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
13741386 END
13751387
13761388 savecrypt_dlg DIALOG 0, 0, 146, 50
@@ -1628,17 +1640,17 @@ BEGIN
16281640 downerr_dlg, DIALOG
16291641 BEGIN
16301642 LEFTMARGIN, 7
1631- RIGHTMARGIN, 175
1632- TOPMARGIN, 4
1633- BOTTOMMARGIN, 61
1643+ RIGHTMARGIN, 216
1644+ TOPMARGIN, 7
1645+ BOTTOMMARGIN, 99
16341646 END
16351647
16361648 uperr_dlg, DIALOG
16371649 BEGIN
16381650 LEFTMARGIN, 7
1639- RIGHTMARGIN, 175
1640- TOPMARGIN, 4
1641- BOTTOMMARGIN, 61
1651+ RIGHTMARGIN, 216
1652+ TOPMARGIN, 7
1653+ BOTTOMMARGIN, 99
16421654 END
16431655
16441656 hset_code_dlg, DIALOG
--- a/Resource/resource.h
+++ b/Resource/resource.h
@@ -436,6 +436,7 @@
436436 #define HSET_NOOP_INTERVAL 1208
437437 #define HSET_NOOP_INTERVAL_SPN 1209
438438 #define HSET_NETTYPE 1210
439+#define HSET_ERROR_MODE 1211
439440 #define MENU_END 40001
440441 #define MENU_EXIT 40001
441442 #define MENU_CONNECT 40003
@@ -622,7 +623,7 @@
622623 #ifndef APSTUDIO_READONLY_SYMBOLS
623624 #define _APS_NEXT_RESOURCE_VALUE 193
624625 #define _APS_NEXT_COMMAND_VALUE 40176
625-#define _APS_NEXT_CONTROL_VALUE 1211
626+#define _APS_NEXT_CONTROL_VALUE 1212
626627 #define _APS_NEXT_SYMED_VALUE 101
627628 #endif
628629 #endif
--- a/Resource_eng/FFFTP-eng.rc
+++ b/Resource_eng/FFFTP-eng.rc
@@ -707,28 +707,38 @@ BEGIN
707707 PUSHBUTTON "Test",SOUND_ERROR_TEST,166,88,37,13
708708 END
709709
710-downerr_dlg DIALOGEX 0, 0, 159, 65
710+downerr_dlg DIALOG 0, 0, 223, 103
711711 STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | WS_POPUP | WS_CAPTION
712712 CAPTION "FFFTP:Error"
713-FONT 9, "MS Sans Serif", 0, 0, 0x1
713+FONT 9, "MS Sans Serif"
714714 BEGIN
715- DEFPUSHBUTTON "Cancel this File",IDOK,7,47,82,14
716- PUSHBUTTON "Cancel All",IDCANCEL,102,47,50,14
717- LTEXT "Cannot download following file :",-1,7,4,138,10
718- LTEXT "",UPDOWN_ERR_FNAME,7,16,145,8,SS_NOPREFIX
719- EDITTEXT UPDOWN_ERR_MSG,7,29,145,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_STATICEDGE
715+ CONTROL "&Overwrite later",DOWN_EXIST_OVW,"Button",BS_AUTORADIOBUTTON | WS_GROUP,7,46,99,10
716+ CONTROL "&Resume later",DOWN_EXIST_RESUME,"Button",BS_AUTORADIOBUTTON,7,58,99,10
717+ CONTROL "&Skip",DOWN_EXIST_IGNORE,"Button",BS_AUTORADIOBUTTON,7,70,99,10
718+ DEFPUSHBUTTON "OK",IDOK,8,85,50,14,WS_GROUP
719+ PUSHBUTTON "&Do All",IDOK_ALL,63,85,50,14
720+ PUSHBUTTON "&Cancel All",IDCANCEL,118,85,50,14
721+ PUSHBUTTON "&Help",9,173,85,41,14
722+ LTEXT "Cannot download following file :",-1,7,4,184,10
723+ LTEXT "",UPDOWN_ERR_FNAME,7,16,184,8,SS_NOPREFIX
724+ EDITTEXT UPDOWN_ERR_MSG,7,28,209,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_STATICEDGE
720725 END
721726
722-uperr_dlg DIALOGEX 0, 0, 159, 67
727+uperr_dlg DIALOG 0, 0, 223, 103
723728 STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | WS_POPUP | WS_CAPTION
724729 CAPTION "FFFTP:Error"
725-FONT 9, "MS Sans Serif", 0, 0, 0x1
730+FONT 9, "MS Sans Serif"
726731 BEGIN
727- DEFPUSHBUTTON "Cancel this File",IDOK,7,49,82,14
728- PUSHBUTTON "Cancel All",IDCANCEL,102,49,50,14
729- LTEXT "Cannot upload following file.",-1,7,4,137,10
730- LTEXT "",UPDOWN_ERR_FNAME,7,17,145,8,SS_NOPREFIX
731- EDITTEXT UPDOWN_ERR_MSG,7,32,153,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_STATICEDGE
732+ CONTROL "&Overwrite later",DOWN_EXIST_OVW,"Button",BS_AUTORADIOBUTTON | WS_GROUP,7,46,99,10
733+ CONTROL "&Resume later",DOWN_EXIST_RESUME,"Button",BS_AUTORADIOBUTTON,7,58,99,10
734+ CONTROL "&Skip",DOWN_EXIST_IGNORE,"Button",BS_AUTORADIOBUTTON,7,70,99,10
735+ DEFPUSHBUTTON "OK",IDOK,8,85,50,14,WS_GROUP
736+ PUSHBUTTON "&Do All",IDOK_ALL,63,85,50,14
737+ PUSHBUTTON "&Cancel All",IDCANCEL,118,85,50,14
738+ PUSHBUTTON "&Help",9,173,85,41,14
739+ LTEXT "Cannot upload following file :",-1,7,4,184,10
740+ LTEXT "",UPDOWN_ERR_FNAME,7,16,184,8,SS_NOPREFIX
741+ EDITTEXT UPDOWN_ERR_MSG,7,28,209,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_STATICEDGE
732742 END
733743
734744 hset_code_dlg DIALOGEX 0, 0, 207, 155
@@ -1397,6 +1407,8 @@ BEGIN
13971407 EDITTEXT HSET_NOOP_INTERVAL,92,42,17,12,ES_AUTOHSCROLL | ES_NUMBER
13981408 CONTROL "Spin1",HSET_NOOP_INTERVAL_SPN,"msctls_updown32",UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,109,41,9,14
13991409 LTEXT "(0 to 300sec: 0=Never)",-1,122,44,76,8
1410+ LTEXT "When transfer errors",-1,7,61,81,8
1411+ COMBOBOX HSET_ERROR_MODE,7,71,71,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP
14001412 END
14011413
14021414 savecrypt_dlg DIALOG 0, 0, 146, 50
@@ -1654,17 +1666,17 @@ BEGIN
16541666 downerr_dlg, DIALOG
16551667 BEGIN
16561668 LEFTMARGIN, 7
1657- RIGHTMARGIN, 152
1658- TOPMARGIN, 4
1659- BOTTOMMARGIN, 61
1669+ RIGHTMARGIN, 216
1670+ TOPMARGIN, 7
1671+ BOTTOMMARGIN, 99
16601672 END
16611673
16621674 uperr_dlg, DIALOG
16631675 BEGIN
16641676 LEFTMARGIN, 7
1665- RIGHTMARGIN, 152
1666- TOPMARGIN, 4
1667- BOTTOMMARGIN, 63
1677+ RIGHTMARGIN, 216
1678+ TOPMARGIN, 7
1679+ BOTTOMMARGIN, 99
16681680 END
16691681
16701682 hset_code_dlg, DIALOG
--- a/Resource_eng/resource.h
+++ b/Resource_eng/resource.h
@@ -436,6 +436,7 @@
436436 #define HSET_NOOP_INTERVAL 1208
437437 #define HSET_NOOP_INTERVAL_SPN 1209
438438 #define HSET_NETTYPE 1210
439+#define HSET_ERROR_MODE 1211
439440 #define MENU_END 40001
440441 #define MENU_EXIT 40001
441442 #define MENU_CONNECT 40003
@@ -622,7 +623,7 @@
622623 #ifndef APSTUDIO_READONLY_SYMBOLS
623624 #define _APS_NEXT_RESOURCE_VALUE 193
624625 #define _APS_NEXT_COMMAND_VALUE 40176
625-#define _APS_NEXT_CONTROL_VALUE 1211
626+#define _APS_NEXT_CONTROL_VALUE 1212
626627 #define _APS_NEXT_SYMED_VALUE 101
627628 #endif
628629 #endif
--- a/common.h
+++ b/common.h
@@ -963,6 +963,9 @@ typedef struct {
963963 int CurNetType; /* 接続中のネットワークの種類 (NTYPE_xxx) */
964964 // 自動切断対策
965965 int NoopInterval; /* 無意味なコマンドを送信する間隔(秒数、0で無効)*/
966+ // 再転送対応
967+ int TransferErrorMode; /* 転送エラー時の処理 (EXIST_xxx) */
968+ int TransferErrorNotify; /* 転送エラー時に確認ダイアログを出すかどうか (YES/NO) */
966969 } HOSTDATA;
967970
968971
@@ -1024,6 +1027,9 @@ typedef struct historydata {
10241027 int NetType; /* ネットワークの種類 (NTYPE_xxx) */
10251028 // 自動切断対策
10261029 int NoopInterval; /* NOOPコマンドを送信する間隔(秒数、0で無効)*/
1030+ // 再転送対応
1031+ int TransferErrorMode; /* 転送エラー時の処理 (EXIST_xxx) */
1032+ int TransferErrorNotify; /* 転送エラー時に確認ダイアログを出すかどうか (YES/NO) */
10271033 struct historydata *Next;
10281034 } HISTORYDATA;
10291035
@@ -1462,6 +1468,9 @@ int AskUseMLSD(void);
14621468 int AskCurNetType(void);
14631469 // 自動切断対策
14641470 int AskNoopInterval(void);
1471+// 再転送対応
1472+int AskTransferErrorMode(void);
1473+int AskTransferErrorNotify(void);
14651474
14661475 /*===== cache.c =====*/
14671476
--- a/connect.c
+++ b/connect.c
@@ -2977,3 +2977,14 @@ int AskNoopInterval(void)
29772977 return(CurHost.NoopInterval);
29782978 }
29792979
2980+// 再転送対応
2981+int AskTransferErrorMode(void)
2982+{
2983+ return(CurHost.TransferErrorMode);
2984+}
2985+
2986+int AskTransferErrorNotify(void)
2987+{
2988+ return(CurHost.TransferErrorNotify);
2989+}
2990+
--- a/doc/eng/FFFTP.txt
+++ b/doc/eng/FFFTP.txt
@@ -55,6 +55,10 @@ Changes in Ver.1.99
5555 -- Added a feature to send commands for keep alive.
5656 This is disabled by default.
5757
58+-- Reduced chance of stopping transfer when numerous files are transfered.
59+
60+-- Added a feature to retry transfering files if failed.
61+
5862
5963 Outline
6064 -------
--- a/doc/eng/history.txt
+++ b/doc/eng/history.txt
@@ -27,6 +27,10 @@ Changes in Ver.1.99
2727 -- Added a feature to send commands for keep alive.
2828 This is disabled by default.
2929
30+-- Reduced chance of stopping transfer when numerous files are transfered.
31+
32+-- Added a feature to retry transfering files if failed.
33+
3034 Changes in Ver.1.98c
3135 --------------------
3236
--- a/doc/jpn/FFFTP.txt
+++ b/doc/jpn/FFFTP.txt
@@ -62,6 +62,10 @@ Ver 1.99
6262 EƒzƒXƒg‚Ƃ̐ڑ±‚ðˆÛŽ‚·‚邽‚߂Ɉê’莞ŠÔ‚²‚ƂɃRƒ}ƒ“ƒh‚𑗐M‚·‚é‹@”\‚ð
6363 @’ljÁ‚µ‚Ü‚µ‚½B‚½‚¾‚µ‚±‚Ì‹@”\‚̓fƒtƒHƒ‹ƒg‚Å‚Í–³Œø‚ɐݒ肳‚ê‚Ü‚·B
6464
65+E‘å—ʂ̃tƒ@ƒCƒ‹‚ð“]‘—‚µ‚½Žž‚É“r’†‚Å“]‘—‚ªI—¹‚·‚éƒoƒO‚ðŒyŒ¸‚µ‚Ü‚µ‚½B
66+
67+Eƒtƒ@ƒCƒ‹‚Ì“]‘—‚ÉŽ¸”s‚µ‚½ê‡‚É“]‘—‚ð‚â‚è’¼‚·‹@”\‚ð’ljÁ‚µ‚Ü‚µ‚½B
68+
6569
6670 Ver 1.96dˆÈ‘O‚Ö–ß‚·ê‡
6771 -----------------------
--- a/doc/jpn/history.txt
+++ b/doc/jpn/history.txt
@@ -65,6 +65,10 @@ FFFTP
6565 E‰‰ñ‹N“®Žž‚̃EƒBƒ“ƒhƒE‚̃TƒCƒY‚ƃŒƒCƒAƒEƒg‚ð•ÏX‚µ‚Ü‚µ‚½iˆÈ‘O‚Ì
6666 @ƒo[ƒWƒ‡ƒ“‚̐ݒ肪Žc‚Á‚Ä‚¢‚éê‡‚Í‚»‚̐ݒ肪“K—p‚³‚ê‚Ü‚·jB
6767
68+E‘å—ʂ̃tƒ@ƒCƒ‹‚ð“]‘—‚µ‚½Žž‚É“r’†‚Å“]‘—‚ªI—¹‚·‚éƒoƒO‚ðŒyŒ¸‚µ‚Ü‚µ‚½B
69+
70+Eƒtƒ@ƒCƒ‹‚Ì“]‘—‚ÉŽ¸”s‚µ‚½ê‡‚É“]‘—‚ð‚â‚è’¼‚·‹@”\‚ð’ljÁ‚µ‚Ü‚µ‚½B
71+
6872 ¡Ver 1.98b
6973
7074 EM—Š‚Å‚«‚È‚¢DLL‚̓ǂݍž‚Ý‚ð–h‚®‹@”\‚ð’ljÁ‚µ‚Ü‚µ‚½BMicrosoft‚̏–¼‚ª
--- a/getput.c
+++ b/getput.c
@@ -88,7 +88,9 @@ static int DownLoadNonPassive(TRANSPACKET *Pkt, int *CancelCheckWork);
8888 static int DownLoadPassive(TRANSPACKET *Pkt, int *CancelCheckWork);
8989 static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *CancelCheckWork);
9090 static void DispDownloadFinishMsg(TRANSPACKET *Pkt, int iRetCode);
91-static int DispUpDownErrDialog(int ResID, HWND hWnd, char *Fname);
91+// 再転送対応
92+//static int DispUpDownErrDialog(int ResID, HWND hWnd, char *Fname);
93+static int DispUpDownErrDialog(int ResID, HWND hWnd, TRANSPACKET *Pkt);
9294 static BOOL CALLBACK UpDownErrorDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
9395 static int SetDownloadResume(TRANSPACKET *Pkt, int ProcMode, LONGLONG Size, int *Mode, int *CancelCheckWork);
9496 static BOOL CALLBACK NoResumeWndProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);
@@ -159,6 +161,9 @@ static HANDLE hErrMsgMutex;
159161
160162 // 同時接続対応
161163 static int WaitForMainThread = NO;
164+// 再転送対応
165+static int TransferErrorMode = EXIST_OVW;
166+static int TransferErrorNotify = NO;
162167
163168 /*===== 外部参照 =====*/
164169
@@ -377,6 +382,9 @@ int RemoveTmpTransFileListItem(TRANSPACKET **Base, int Num)
377382
378383 void AddTransFileList(TRANSPACKET *Pkt)
379384 {
385+ // 同時接続対応
386+ TRANSPACKET *Pos;
387+
380388 DispTransPacket(Pkt);
381389
382390 // 同時接続対応
@@ -388,6 +396,13 @@ void AddTransFileList(TRANSPACKET *Pkt)
388396 Sleep(1);
389397 }
390398
399+ // 同時接続対応
400+ Pos = TransPacketBase;
401+ if(Pos != NULL)
402+ {
403+ while(Pos->Next != NULL)
404+ Pos = Pos->Next;
405+ }
391406 if(AddTmpTransFileList(Pkt, &TransPacketBase) == FFFTP_SUCCESS)
392407 {
393408 if((strncmp(Pkt->Cmd, "RETR", 4) == 0) ||
@@ -399,7 +414,12 @@ void AddTransFileList(TRANSPACKET *Pkt)
399414 }
400415 // 同時接続対応
401416 if(NextTransPacketBase == NULL)
402- NextTransPacketBase = TransPacketBase;
417+ {
418+ if(Pos)
419+ NextTransPacketBase = Pos->Next;
420+ else
421+ NextTransPacketBase = TransPacketBase;
422+ }
403423 ReleaseMutex(hListAccMutex);
404424 // 同時接続対応
405425 WaitForMainThread = NO;
@@ -445,7 +465,7 @@ void AppendTransFileList(TRANSPACKET *Pkt)
445465 }
446466 // 同時接続対応
447467 if(NextTransPacketBase == NULL)
448- NextTransPacketBase = TransPacketBase;
468+ NextTransPacketBase = Pkt;
449469
450470 while(Pkt != NULL)
451471 {
@@ -549,7 +569,7 @@ static void EraseTransFileList(void)
549569 }
550570 TransPacketBase = NotDel;
551571 // 同時接続対応
552- NextTransPacketBase = TransPacketBase;
572+ NextTransPacketBase = NotDel;
553573 TransFiles = 0;
554574 PostMessage(GetMainHwnd(), WM_CHANGE_COND, 0, 0);
555575 ReleaseMutex(hListAccMutex);
@@ -1173,6 +1193,10 @@ static ULONG WINAPI TransferThread(void *Dummy)
11731193 PostMessage(GetMainHwnd(), WM_COMMAND, MAKEWPARAM(MENU_AUTO_EXIT, 0), 0);
11741194 GoExit = NO;
11751195 }
1196+
1197+ // 再転送対応
1198+ TransferErrorMode = AskTransferErrorMode();
1199+ TransferErrorNotify = AskTransferErrorNotify();
11761200 }
11771201 else
11781202 {
@@ -2253,8 +2277,19 @@ static void DispDownloadFinishMsg(TRANSPACKET *Pkt, int iRetCode)
22532277 {
22542278 // 全て中止を選択後にダイアログが表示されるバグ対策
22552279 // if(DispUpDownErrDialog(downerr_dlg, Pkt->hWndTrans, Fname) == NO)
2256- if(Canceled[Pkt->ThreadCount] == NO && ClearAll == NO && DispUpDownErrDialog(downerr_dlg, Pkt->hWndTrans, Fname) == NO)
2257- ClearAll = YES;
2280+ // 再転送対応
2281+// if(Canceled[Pkt->ThreadCount] == NO && ClearAll == NO && DispUpDownErrDialog(downerr_dlg, Pkt->hWndTrans, Fname) == NO)
2282+// ClearAll = YES;
2283+ if(Canceled[Pkt->ThreadCount] == NO && ClearAll == NO)
2284+ {
2285+ if(TransferErrorNotify == YES && DispUpDownErrDialog(downerr_dlg, Pkt->hWndTrans, Pkt) == NO)
2286+ ClearAll = YES;
2287+ else
2288+ {
2289+ Pkt->Mode = TransferErrorMode;
2290+ AddTransFileList(Pkt);
2291+ }
2292+ }
22582293 }
22592294 }
22602295 else
@@ -2288,13 +2323,17 @@ static void DispDownloadFinishMsg(TRANSPACKET *Pkt, int iRetCode)
22882323 * int ステータス (YES=中止/NO=全て中止)
22892324 *----------------------------------------------------------------------------*/
22902325
2291-static int DispUpDownErrDialog(int ResID, HWND hWnd, char *Fname)
2326+// 再転送対応
2327+//static int DispUpDownErrDialog(int ResID, HWND hWnd, char *Fname)
2328+static int DispUpDownErrDialog(int ResID, HWND hWnd, TRANSPACKET *Pkt)
22922329 {
22932330 if(hWnd == NULL)
22942331 hWnd = GetMainHwnd();
22952332
22962333 SoundPlay(SND_ERROR);
2297- return(DialogBoxParam(GetFtpInst(), MAKEINTRESOURCE(ResID), hWnd, UpDownErrorDialogProc, (LPARAM)Fname));
2334+ // 再転送対応
2335+// return(DialogBoxParam(GetFtpInst(), MAKEINTRESOURCE(ResID), hWnd, UpDownErrorDialogProc, (LPARAM)Fname));
2336+ return(DialogBoxParam(GetFtpInst(), MAKEINTRESOURCE(ResID), hWnd, UpDownErrorDialogProc, (LPARAM)Pkt));
22982337 }
22992338
23002339
@@ -2312,29 +2351,53 @@ static int DispUpDownErrDialog(int ResID, HWND hWnd, char *Fname)
23122351
23132352 static BOOL CALLBACK UpDownErrorDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
23142353 {
2354+ static TRANSPACKET *Pkt;
2355+ static const RADIOBUTTON DownExistButton[] = {
2356+ { DOWN_EXIST_OVW, EXIST_OVW },
2357+ { DOWN_EXIST_RESUME, EXIST_RESUME },
2358+ { DOWN_EXIST_IGNORE, EXIST_IGNORE }
2359+ };
2360+ #define DOWNEXISTBUTTONS (sizeof(DownExistButton)/sizeof(RADIOBUTTON))
2361+
23152362 switch (message)
23162363 {
23172364 case WM_INITDIALOG :
2318- SendDlgItemMessage(hDlg, UPDOWN_ERR_FNAME, WM_SETTEXT, 0, (LPARAM)lParam);
2365+ Pkt = (TRANSPACKET *)lParam;
2366+// SendDlgItemMessage(hDlg, UPDOWN_ERR_FNAME, WM_SETTEXT, 0, (LPARAM)lParam);
2367+ SendDlgItemMessage(hDlg, UPDOWN_ERR_FNAME, WM_SETTEXT, 0, (LPARAM)Pkt->RemoteFile);
23192368 // 同時接続対応
23202369 // SendDlgItemMessage(hDlg, UPDOWN_ERR_MSG, WM_SETTEXT, 0, (LPARAM)ErrMsg);
23212370 SendDlgItemMessage(hDlg, UPDOWN_ERR_MSG, WM_SETTEXT, 0, (LPARAM)GetErrMsg());
2371+
2372+ if((Pkt->Type == TYPE_A) || (Pkt->ExistSize <= 0))
2373+ EnableWindow(GetDlgItem(hDlg, DOWN_EXIST_RESUME), FALSE);
2374+
2375+ SetRadioButtonByValue(hDlg, TransferErrorMode, DownExistButton, DOWNEXISTBUTTONS);
23222376 return(TRUE);
23232377
23242378 case WM_COMMAND :
23252379 switch(GET_WM_COMMAND_ID(wParam, lParam))
23262380 {
2381+ case IDOK_ALL :
2382+ TransferErrorNotify = NO;
2383+ /* ここに break はない */
2384+
23272385 case IDOK :
2386+ TransferErrorMode = AskRadioButtonValue(hDlg, DownExistButton, DOWNEXISTBUTTONS);
23282387 EndDialog(hDlg, YES);
23292388 break;
23302389
23312390 case IDCANCEL :
23322391 EndDialog(hDlg, NO);
23332392 break;
2393+
2394+ case IDHELP :
2395+// hHelpWin = HtmlHelp(NULL, AskHelpFilePath(), HH_HELP_CONTEXT, IDH_HELP_TOPIC_0000009);
2396+ break;
23342397 }
2335- return(TRUE);
2398+ return(TRUE);
23362399 }
2337- return(FALSE);
2400+ return(FALSE);
23382401 }
23392402
23402403
@@ -3452,8 +3515,19 @@ static void DispUploadFinishMsg(TRANSPACKET *Pkt, int iRetCode)
34523515 {
34533516 // 全て中止を選択後にダイアログが表示されるバグ対策
34543517 // if(DispUpDownErrDialog(uperr_dlg, Pkt->hWndTrans, Pkt->LocalFile) == NO)
3455- if(Canceled[Pkt->ThreadCount] == NO && ClearAll == NO && DispUpDownErrDialog(uperr_dlg, Pkt->hWndTrans, Pkt->LocalFile) == NO)
3456- ClearAll = YES;
3518+ // 再転送対応
3519+// if(Canceled[Pkt->ThreadCount] == NO && ClearAll == NO && DispUpDownErrDialog(uperr_dlg, Pkt->hWndTrans, Pkt->LocalFile) == NO)
3520+// ClearAll = YES;
3521+ if(Canceled[Pkt->ThreadCount] == NO && ClearAll == NO)
3522+ {
3523+ if(TransferErrorNotify == YES && DispUpDownErrDialog(uperr_dlg, Pkt->hWndTrans, Pkt) == NO)
3524+ ClearAll = YES;
3525+ else
3526+ {
3527+ Pkt->Mode = TransferErrorMode;
3528+ AddTransFileList(Pkt);
3529+ }
3530+ }
34573531 }
34583532 }
34593533 else
--- a/history.c
+++ b/history.c
@@ -241,6 +241,9 @@ static void CopyHostToHistory(HOSTDATA *Host, HISTORYDATA *New)
241241 New->NetType = Host->NetType;
242242 // 自動切断対策
243243 New->NoopInterval = Host->NoopInterval;
244+ // 再転送対応
245+ New->TransferErrorMode = Host->TransferErrorMode;
246+ New->TransferErrorNotify = Host->TransferErrorNotify;
244247 return;
245248 }
246249
@@ -305,6 +308,9 @@ void CopyHistoryToHost(HISTORYDATA *Hist, HOSTDATA *Host)
305308 Host->NetType = Hist->NetType;
306309 // 自動切断対策
307310 Host->NoopInterval = Hist->NoopInterval;
311+ // 再転送対応
312+ Host->TransferErrorMode = Hist->TransferErrorMode;
313+ Host->TransferErrorNotify = Hist->TransferErrorNotify;
308314 return;
309315 }
310316
--- a/hostman.c
+++ b/hostman.c
@@ -1045,6 +1045,9 @@ int CopyHostFromListInConnect(int Num, HOSTDATA *Set)
10451045 Set->NetType = Pos->Set.NetType;
10461046 // 自動切断対策
10471047 Set->NoopInterval = Pos->Set.NoopInterval;
1048+ // 再転送対応
1049+ Set->TransferErrorMode = Pos->Set.TransferErrorMode;
1050+ Set->TransferErrorNotify = Pos->Set.TransferErrorNotify;
10481051 Sts = FFFTP_SUCCESS;
10491052 }
10501053 return(Sts);
@@ -1338,6 +1341,9 @@ void CopyDefaultHost(HOSTDATA *Set)
13381341 Set->CurNetType = NTYPE_AUTO;
13391342 // 自動切断対策
13401343 Set->NoopInterval = 0;
1344+ // 再転送対応
1345+ Set->TransferErrorMode = EXIST_OVW;
1346+ Set->TransferErrorNotify = YES;
13411347 return;
13421348 }
13431349
@@ -2225,6 +2231,17 @@ static BOOL CALLBACK Adv3SettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LP
22252231 NMHDR *pnmhdr;
22262232 // int Num;
22272233
2234+ // UTF-8対応
2235+ static const RADIOBUTTON KanjiButton[] = {
2236+ { HSET_NO_CNV, KANJI_NOCNV },
2237+ { HSET_SJIS_CNV, KANJI_SJIS },
2238+ { HSET_JIS_CNV, KANJI_JIS },
2239+ { HSET_EUC_CNV, KANJI_EUC },
2240+ { HSET_UTF8N_CNV, KANJI_UTF8N },
2241+ { HSET_UTF8BOM_CNV, KANJI_UTF8BOM }
2242+ };
2243+ #define KANJIBUTTONS (sizeof(KanjiButton)/sizeof(RADIOBUTTON))
2244+
22282245 switch (iMessage)
22292246 {
22302247 case WM_INITDIALOG :
@@ -2235,6 +2252,20 @@ static BOOL CALLBACK Adv3SettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LP
22352252 SendDlgItemMessage(hDlg, HSET_NOOP_INTERVAL, EM_LIMITTEXT, (WPARAM)3, 0);
22362253 SetDecimalText(hDlg, HSET_NOOP_INTERVAL, TmpHost.NoopInterval);
22372254 SendDlgItemMessage(hDlg, HSET_NOOP_INTERVAL_SPN, UDM_SETRANGE, 0, (LPARAM)MAKELONG(300, 0));
2255+ SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_ADDSTRING, 0, (LPARAM)MSGJPN335);
2256+ SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_ADDSTRING, 0, (LPARAM)MSGJPN336);
2257+ SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_ADDSTRING, 0, (LPARAM)MSGJPN337);
2258+ SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_ADDSTRING, 0, (LPARAM)MSGJPN338);
2259+ if(TmpHost.TransferErrorNotify == YES)
2260+ SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_SETCURSEL, 0, 0);
2261+ else if(TmpHost.TransferErrorMode == EXIST_OVW)
2262+ SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_SETCURSEL, 1, 0);
2263+ else if(TmpHost.TransferErrorMode == EXIST_RESUME)
2264+ SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_SETCURSEL, 2, 0);
2265+ else if(TmpHost.TransferErrorMode == EXIST_IGNORE)
2266+ SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_SETCURSEL, 3, 0);
2267+ else
2268+ SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_SETCURSEL, 0, 0);
22382269 return(TRUE);
22392270
22402271 case WM_NOTIFY:
@@ -2247,6 +2278,25 @@ static BOOL CALLBACK Adv3SettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LP
22472278 TmpHost.ReuseCmdSkt = SendDlgItemMessage(hDlg, HSET_REUSE_SOCKET, BM_GETCHECK, 0, 0);
22482279 TmpHost.NoopInterval = GetDecimalText(hDlg, HSET_NOOP_INTERVAL);
22492280 CheckRange2(&TmpHost.NoopInterval, 300, 0);
2281+ switch(SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_GETCURSEL, 0, 0))
2282+ {
2283+ case 0:
2284+ TmpHost.TransferErrorMode = EXIST_OVW;
2285+ TmpHost.TransferErrorNotify = YES;
2286+ break;
2287+ case 1:
2288+ TmpHost.TransferErrorMode = EXIST_OVW;
2289+ TmpHost.TransferErrorNotify = NO;
2290+ break;
2291+ case 2:
2292+ TmpHost.TransferErrorMode = EXIST_RESUME;
2293+ TmpHost.TransferErrorNotify = NO;
2294+ break;
2295+ case 3:
2296+ TmpHost.TransferErrorMode = EXIST_IGNORE;
2297+ TmpHost.TransferErrorNotify = NO;
2298+ break;
2299+ }
22502300 Apply = YES;
22512301 break;
22522302
--- a/mesg-eng.h
+++ b/mesg-eng.h
@@ -332,3 +332,7 @@
332332 #define MSGJPN332 "Auto"
333333 #define MSGJPN333 "TCP/IPv4"
334334 #define MSGJPN334 "TCP/IPv6"
335+#define MSGJPN335 "Ask everytime"
336+#define MSGJPN336 "Overwrite all later"
337+#define MSGJPN337 "Resume all later"
338+#define MSGJPN338 "Skip all"
--- a/mesg-eng.old.h
+++ b/mesg-eng.old.h
@@ -332,3 +332,7 @@
332332 #define MSGJPN332 "Auto"
333333 #define MSGJPN333 "TCP/IPv4"
334334 #define MSGJPN334 "TCP/IPv6"
335+#define MSGJPN335 "Ask everytime"
336+#define MSGJPN336 "Overwrite all later"
337+#define MSGJPN337 "Resume all later"
338+#define MSGJPN338 "Skip all"
--- a/mesg-jpn.h
+++ b/mesg-jpn.h
@@ -332,3 +332,7 @@
332332 #define MSGJPN332 "\xE8\x87\xAA\xE5\x8B\x95"
333333 #define MSGJPN333 "TCP/IPv4"
334334 #define MSGJPN334 "TCP/IPv6"
335+#define MSGJPN335 "\xE6\xAF\x8E\xE5\x9B\x9E\xE5\xB0\x8B\xE3\x81\xAD\xE3\x82\x8B"
336+#define MSGJPN336 "\xE5\x85\xA8\xE3\x81\xA6\xE5\xBE\x8C\xE3\x81\xA7\xE4\xB8\x8A\xE6\x9B\xB8\xE3\x81\x8D"
337+#define MSGJPN337 "\xE5\x85\xA8\xE3\x81\xA6\xE5\xBE\x8C\xE3\x81\xA7\xE3\x83\xAA\xE3\x82\xB8\xE3\x83\xA5\xE3\x83\xBC\xE3\x83\xA0"
338+#define MSGJPN338 "\xE5\x85\xA8\xE3\x81\xA6\xE3\x82\xB9\xE3\x82\xAD\xE3\x83\x83\xE3\x83\x97"
--- a/mesg-jpn.old.h
+++ b/mesg-jpn.old.h
@@ -332,3 +332,7 @@
332332 #define MSGJPN332 "Ž©“®"
333333 #define MSGJPN333 "TCP/IPv4"
334334 #define MSGJPN334 "TCP/IPv6"
335+#define MSGJPN335 "–ˆ‰ñq‚Ë‚é"
336+#define MSGJPN336 "‘S‚ÄŒã‚ŏ㏑‚«"
337+#define MSGJPN337 "‘S‚ÄŒã‚ŃŠƒWƒ…[ƒ€"
338+#define MSGJPN338 "‘S‚ăXƒLƒbƒv"
--- a/registry.c
+++ b/registry.c
@@ -493,6 +493,9 @@ void SaveRegistory(void)
493493 SaveIntNum(hKey5, "NetType", Hist.NetType, DefaultHist.NetType);
494494 // 自動切断対策
495495 SaveIntNum(hKey5, "Noop", Hist.NoopInterval, DefaultHist.NoopInterval);
496+ // 再転送対応
497+ SaveIntNum(hKey5, "ErrMode", Hist.TransferErrorMode, DefaultHist.TransferErrorMode);
498+ SaveIntNum(hKey5, "ErrNotify", Hist.TransferErrorNotify, DefaultHist.TransferErrorNotify);
496499
497500 CloseSubKey(hKey5);
498501 n++;
@@ -577,6 +580,9 @@ void SaveRegistory(void)
577580 SaveIntNum(hKey5, "NetType", Host.NetType, DefaultHost.NetType);
578581 // 自動切断対策
579582 SaveIntNum(hKey5, "Noop", Host.NoopInterval, DefaultHost.NoopInterval);
583+ // 再転送対応
584+ SaveIntNum(hKey5, "ErrMode", Host.TransferErrorMode, DefaultHost.TransferErrorMode);
585+ SaveIntNum(hKey5, "ErrNotify", Host.TransferErrorNotify, DefaultHost.TransferErrorNotify);
580586 }
581587 CloseSubKey(hKey5);
582588 }
@@ -857,6 +863,9 @@ int LoadRegistory(void)
857863 ReadIntValueFromReg(hKey5, "NetType", &Hist.NetType);
858864 // 自動切断対策
859865 ReadIntValueFromReg(hKey5, "Noop", &Hist.NoopInterval);
866+ // 再転送対応
867+ ReadIntValueFromReg(hKey5, "ErrMode", &Hist.TransferErrorMode);
868+ ReadIntValueFromReg(hKey5, "ErrNotify", &Hist.TransferErrorNotify);
860869
861870 CloseSubKey(hKey5);
862871 AddHistoryToHistory(&Hist);
@@ -950,6 +959,9 @@ int LoadRegistory(void)
950959 ReadIntValueFromReg(hKey5, "NetType", &Host.NetType);
951960 // 自動切断対策
952961 ReadIntValueFromReg(hKey5, "Noop", &Host.NoopInterval);
962+ // 再転送対応
963+ ReadIntValueFromReg(hKey5, "ErrMode", &Host.TransferErrorMode);
964+ ReadIntValueFromReg(hKey5, "ErrNotify", &Host.TransferErrorNotify);
953965
954966 CloseSubKey(hKey5);
955967