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.
@@ -700,28 +700,38 @@ BEGIN | ||
700 | 700 | PUSHBUTTON "eXg",SOUND_ERROR_TEST,166,88,37,13 |
701 | 701 | END |
702 | 702 | |
703 | -downerr_dlg DIALOGEX 0, 0, 182, 65 | |
703 | +downerr_dlg DIALOG 0, 0, 223, 103 | |
704 | 704 | STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | WS_POPUP | WS_CAPTION |
705 | 705 | CAPTION "FFFTPFG[" |
706 | -FONT 9, "lr oSVbN", 0, 0, 0x1 | |
706 | +FONT 9, "lr oSVbN" | |
707 | 707 | 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 "wv",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 | |
713 | 718 | END |
714 | 719 | |
715 | -uperr_dlg DIALOGEX 0, 0, 182, 65 | |
720 | +uperr_dlg DIALOG 0, 0, 223, 103 | |
716 | 721 | STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | WS_POPUP | WS_CAPTION |
717 | 722 | CAPTION "FFFTPFG[" |
718 | -FONT 9, "lr oSVbN", 0, 0, 0x1 | |
723 | +FONT 9, "lr oSVbN" | |
719 | 724 | BEGIN |
720 | - DEFPUSHBUTTON "±Ìt@Cð~",IDOK,9,47,76,14 | |
721 | - PUSHBUTTON "SÄ~",IDCANCEL,95,47,76,14 | |
722 | - LTEXT "ªAbv[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 "Abv[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 "wv",9,173,85,41,14 | |
732 | + LTEXT "ªAbv[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 | |
725 | 735 | END |
726 | 736 | |
727 | 737 | hset_code_dlg DIALOGEX 0, 0, 207, 155 |
@@ -1371,6 +1381,8 @@ BEGIN | ||
1371 | 1381 | EDITTEXT HSET_NOOP_INTERVAL,92,42,17,12,ES_AUTOHSCROLL | ES_NUMBER |
1372 | 1382 | CONTROL "Spin1",HSET_NOOP_INTERVAL_SPN,"msctls_updown32",UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,109,41,9,14 |
1373 | 1383 | LTEXT "(0`300bF 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 | |
1374 | 1386 | END |
1375 | 1387 | |
1376 | 1388 | savecrypt_dlg DIALOG 0, 0, 146, 50 |
@@ -1628,17 +1640,17 @@ BEGIN | ||
1628 | 1640 | downerr_dlg, DIALOG |
1629 | 1641 | BEGIN |
1630 | 1642 | LEFTMARGIN, 7 |
1631 | - RIGHTMARGIN, 175 | |
1632 | - TOPMARGIN, 4 | |
1633 | - BOTTOMMARGIN, 61 | |
1643 | + RIGHTMARGIN, 216 | |
1644 | + TOPMARGIN, 7 | |
1645 | + BOTTOMMARGIN, 99 | |
1634 | 1646 | END |
1635 | 1647 | |
1636 | 1648 | uperr_dlg, DIALOG |
1637 | 1649 | BEGIN |
1638 | 1650 | LEFTMARGIN, 7 |
1639 | - RIGHTMARGIN, 175 | |
1640 | - TOPMARGIN, 4 | |
1641 | - BOTTOMMARGIN, 61 | |
1651 | + RIGHTMARGIN, 216 | |
1652 | + TOPMARGIN, 7 | |
1653 | + BOTTOMMARGIN, 99 | |
1642 | 1654 | END |
1643 | 1655 | |
1644 | 1656 | hset_code_dlg, DIALOG |
@@ -436,6 +436,7 @@ | ||
436 | 436 | #define HSET_NOOP_INTERVAL 1208 |
437 | 437 | #define HSET_NOOP_INTERVAL_SPN 1209 |
438 | 438 | #define HSET_NETTYPE 1210 |
439 | +#define HSET_ERROR_MODE 1211 | |
439 | 440 | #define MENU_END 40001 |
440 | 441 | #define MENU_EXIT 40001 |
441 | 442 | #define MENU_CONNECT 40003 |
@@ -622,7 +623,7 @@ | ||
622 | 623 | #ifndef APSTUDIO_READONLY_SYMBOLS |
623 | 624 | #define _APS_NEXT_RESOURCE_VALUE 193 |
624 | 625 | #define _APS_NEXT_COMMAND_VALUE 40176 |
625 | -#define _APS_NEXT_CONTROL_VALUE 1211 | |
626 | +#define _APS_NEXT_CONTROL_VALUE 1212 | |
626 | 627 | #define _APS_NEXT_SYMED_VALUE 101 |
627 | 628 | #endif |
628 | 629 | #endif |
@@ -707,28 +707,38 @@ BEGIN | ||
707 | 707 | PUSHBUTTON "Test",SOUND_ERROR_TEST,166,88,37,13 |
708 | 708 | END |
709 | 709 | |
710 | -downerr_dlg DIALOGEX 0, 0, 159, 65 | |
710 | +downerr_dlg DIALOG 0, 0, 223, 103 | |
711 | 711 | STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | WS_POPUP | WS_CAPTION |
712 | 712 | CAPTION "FFFTP:Error" |
713 | -FONT 9, "MS Sans Serif", 0, 0, 0x1 | |
713 | +FONT 9, "MS Sans Serif" | |
714 | 714 | 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 | |
720 | 725 | END |
721 | 726 | |
722 | -uperr_dlg DIALOGEX 0, 0, 159, 67 | |
727 | +uperr_dlg DIALOG 0, 0, 223, 103 | |
723 | 728 | STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | WS_POPUP | WS_CAPTION |
724 | 729 | CAPTION "FFFTP:Error" |
725 | -FONT 9, "MS Sans Serif", 0, 0, 0x1 | |
730 | +FONT 9, "MS Sans Serif" | |
726 | 731 | 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 | |
732 | 742 | END |
733 | 743 | |
734 | 744 | hset_code_dlg DIALOGEX 0, 0, 207, 155 |
@@ -1397,6 +1407,8 @@ BEGIN | ||
1397 | 1407 | EDITTEXT HSET_NOOP_INTERVAL,92,42,17,12,ES_AUTOHSCROLL | ES_NUMBER |
1398 | 1408 | CONTROL "Spin1",HSET_NOOP_INTERVAL_SPN,"msctls_updown32",UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,109,41,9,14 |
1399 | 1409 | 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 | |
1400 | 1412 | END |
1401 | 1413 | |
1402 | 1414 | savecrypt_dlg DIALOG 0, 0, 146, 50 |
@@ -1654,17 +1666,17 @@ BEGIN | ||
1654 | 1666 | downerr_dlg, DIALOG |
1655 | 1667 | BEGIN |
1656 | 1668 | LEFTMARGIN, 7 |
1657 | - RIGHTMARGIN, 152 | |
1658 | - TOPMARGIN, 4 | |
1659 | - BOTTOMMARGIN, 61 | |
1669 | + RIGHTMARGIN, 216 | |
1670 | + TOPMARGIN, 7 | |
1671 | + BOTTOMMARGIN, 99 | |
1660 | 1672 | END |
1661 | 1673 | |
1662 | 1674 | uperr_dlg, DIALOG |
1663 | 1675 | BEGIN |
1664 | 1676 | LEFTMARGIN, 7 |
1665 | - RIGHTMARGIN, 152 | |
1666 | - TOPMARGIN, 4 | |
1667 | - BOTTOMMARGIN, 63 | |
1677 | + RIGHTMARGIN, 216 | |
1678 | + TOPMARGIN, 7 | |
1679 | + BOTTOMMARGIN, 99 | |
1668 | 1680 | END |
1669 | 1681 | |
1670 | 1682 | hset_code_dlg, DIALOG |
@@ -436,6 +436,7 @@ | ||
436 | 436 | #define HSET_NOOP_INTERVAL 1208 |
437 | 437 | #define HSET_NOOP_INTERVAL_SPN 1209 |
438 | 438 | #define HSET_NETTYPE 1210 |
439 | +#define HSET_ERROR_MODE 1211 | |
439 | 440 | #define MENU_END 40001 |
440 | 441 | #define MENU_EXIT 40001 |
441 | 442 | #define MENU_CONNECT 40003 |
@@ -622,7 +623,7 @@ | ||
622 | 623 | #ifndef APSTUDIO_READONLY_SYMBOLS |
623 | 624 | #define _APS_NEXT_RESOURCE_VALUE 193 |
624 | 625 | #define _APS_NEXT_COMMAND_VALUE 40176 |
625 | -#define _APS_NEXT_CONTROL_VALUE 1211 | |
626 | +#define _APS_NEXT_CONTROL_VALUE 1212 | |
626 | 627 | #define _APS_NEXT_SYMED_VALUE 101 |
627 | 628 | #endif |
628 | 629 | #endif |
@@ -963,6 +963,9 @@ typedef struct { | ||
963 | 963 | int CurNetType; /* 接続中のネットワークの種類 (NTYPE_xxx) */ |
964 | 964 | // 自動切断対策 |
965 | 965 | int NoopInterval; /* 無意味なコマンドを送信する間隔(秒数、0で無効)*/ |
966 | + // 再転送対応 | |
967 | + int TransferErrorMode; /* 転送エラー時の処理 (EXIST_xxx) */ | |
968 | + int TransferErrorNotify; /* 転送エラー時に確認ダイアログを出すかどうか (YES/NO) */ | |
966 | 969 | } HOSTDATA; |
967 | 970 | |
968 | 971 |
@@ -1024,6 +1027,9 @@ typedef struct historydata { | ||
1024 | 1027 | int NetType; /* ネットワークの種類 (NTYPE_xxx) */ |
1025 | 1028 | // 自動切断対策 |
1026 | 1029 | int NoopInterval; /* NOOPコマンドを送信する間隔(秒数、0で無効)*/ |
1030 | + // 再転送対応 | |
1031 | + int TransferErrorMode; /* 転送エラー時の処理 (EXIST_xxx) */ | |
1032 | + int TransferErrorNotify; /* 転送エラー時に確認ダイアログを出すかどうか (YES/NO) */ | |
1027 | 1033 | struct historydata *Next; |
1028 | 1034 | } HISTORYDATA; |
1029 | 1035 |
@@ -1462,6 +1468,9 @@ int AskUseMLSD(void); | ||
1462 | 1468 | int AskCurNetType(void); |
1463 | 1469 | // 自動切断対策 |
1464 | 1470 | int AskNoopInterval(void); |
1471 | +// 再転送対応 | |
1472 | +int AskTransferErrorMode(void); | |
1473 | +int AskTransferErrorNotify(void); | |
1465 | 1474 | |
1466 | 1475 | /*===== cache.c =====*/ |
1467 | 1476 |
@@ -2977,3 +2977,14 @@ int AskNoopInterval(void) | ||
2977 | 2977 | return(CurHost.NoopInterval); |
2978 | 2978 | } |
2979 | 2979 | |
2980 | +// 再転送対応 | |
2981 | +int AskTransferErrorMode(void) | |
2982 | +{ | |
2983 | + return(CurHost.TransferErrorMode); | |
2984 | +} | |
2985 | + | |
2986 | +int AskTransferErrorNotify(void) | |
2987 | +{ | |
2988 | + return(CurHost.TransferErrorNotify); | |
2989 | +} | |
2990 | + |
@@ -55,6 +55,10 @@ Changes in Ver.1.99 | ||
55 | 55 | -- Added a feature to send commands for keep alive. |
56 | 56 | This is disabled by default. |
57 | 57 | |
58 | +-- Reduced chance of stopping transfer when numerous files are transfered. | |
59 | + | |
60 | +-- Added a feature to retry transfering files if failed. | |
61 | + | |
58 | 62 | |
59 | 63 | Outline |
60 | 64 | ------- |
@@ -27,6 +27,10 @@ Changes in Ver.1.99 | ||
27 | 27 | -- Added a feature to send commands for keep alive. |
28 | 28 | This is disabled by default. |
29 | 29 | |
30 | +-- Reduced chance of stopping transfer when numerous files are transfered. | |
31 | + | |
32 | +-- Added a feature to retry transfering files if failed. | |
33 | + | |
30 | 34 | Changes in Ver.1.98c |
31 | 35 | -------------------- |
32 | 36 |
@@ -62,6 +62,10 @@ Ver 1.99 | ||
62 | 62 | EzXgÆÌÚ±ðÛ·é½ßÉêèÔ²ÆÉR}hðM·é@\ð |
63 | 63 | @ÇÁµÜµ½B½¾µ±Ì@\ÍftHgÅͳøÉÝè³êÜ·B |
64 | 64 | |
65 | +EåÊÌt@Cð]µ½ÉrÅ]ªI¹·éoOðy¸µÜµ½B | |
66 | + | |
67 | +Et@CÌ]ɸsµ½êÉ]ðâè¼·@\ðÇÁµÜµ½B | |
68 | + | |
65 | 69 | |
66 | 70 | Ver 1.96dÈOÖß·ê |
67 | 71 | ----------------------- |
@@ -65,6 +65,10 @@ FFFTP | ||
65 | 65 | EñN®ÌEBhEÌTCYÆCAEgðÏXµÜµ½iÈOÌ |
66 | 66 | @o[WÌÝèªcÁÄ¢éêÍ»ÌÝèªKp³êÜ·jB |
67 | 67 | |
68 | +EåÊÌt@Cð]µ½ÉrÅ]ªI¹·éoOðy¸µÜµ½B | |
69 | + | |
70 | +Et@CÌ]ɸsµ½êÉ]ðâè¼·@\ðÇÁµÜµ½B | |
71 | + | |
68 | 72 | ¡Ver 1.98b |
69 | 73 | |
70 | 74 | EMÅ«È¢DLLÌÇÝÝðh®@\ðÇÁµÜµ½BMicrosoft̼ª |
@@ -88,7 +88,9 @@ static int DownLoadNonPassive(TRANSPACKET *Pkt, int *CancelCheckWork); | ||
88 | 88 | static int DownLoadPassive(TRANSPACKET *Pkt, int *CancelCheckWork); |
89 | 89 | static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *CancelCheckWork); |
90 | 90 | 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); | |
92 | 94 | static BOOL CALLBACK UpDownErrorDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); |
93 | 95 | static int SetDownloadResume(TRANSPACKET *Pkt, int ProcMode, LONGLONG Size, int *Mode, int *CancelCheckWork); |
94 | 96 | static BOOL CALLBACK NoResumeWndProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam); |
@@ -159,6 +161,9 @@ static HANDLE hErrMsgMutex; | ||
159 | 161 | |
160 | 162 | // 同時接続対応 |
161 | 163 | static int WaitForMainThread = NO; |
164 | +// 再転送対応 | |
165 | +static int TransferErrorMode = EXIST_OVW; | |
166 | +static int TransferErrorNotify = NO; | |
162 | 167 | |
163 | 168 | /*===== 外部参照 =====*/ |
164 | 169 |
@@ -377,6 +382,9 @@ int RemoveTmpTransFileListItem(TRANSPACKET **Base, int Num) | ||
377 | 382 | |
378 | 383 | void AddTransFileList(TRANSPACKET *Pkt) |
379 | 384 | { |
385 | + // 同時接続対応 | |
386 | + TRANSPACKET *Pos; | |
387 | + | |
380 | 388 | DispTransPacket(Pkt); |
381 | 389 | |
382 | 390 | // 同時接続対応 |
@@ -388,6 +396,13 @@ void AddTransFileList(TRANSPACKET *Pkt) | ||
388 | 396 | Sleep(1); |
389 | 397 | } |
390 | 398 | |
399 | + // 同時接続対応 | |
400 | + Pos = TransPacketBase; | |
401 | + if(Pos != NULL) | |
402 | + { | |
403 | + while(Pos->Next != NULL) | |
404 | + Pos = Pos->Next; | |
405 | + } | |
391 | 406 | if(AddTmpTransFileList(Pkt, &TransPacketBase) == FFFTP_SUCCESS) |
392 | 407 | { |
393 | 408 | if((strncmp(Pkt->Cmd, "RETR", 4) == 0) || |
@@ -399,7 +414,12 @@ void AddTransFileList(TRANSPACKET *Pkt) | ||
399 | 414 | } |
400 | 415 | // 同時接続対応 |
401 | 416 | if(NextTransPacketBase == NULL) |
402 | - NextTransPacketBase = TransPacketBase; | |
417 | + { | |
418 | + if(Pos) | |
419 | + NextTransPacketBase = Pos->Next; | |
420 | + else | |
421 | + NextTransPacketBase = TransPacketBase; | |
422 | + } | |
403 | 423 | ReleaseMutex(hListAccMutex); |
404 | 424 | // 同時接続対応 |
405 | 425 | WaitForMainThread = NO; |
@@ -445,7 +465,7 @@ void AppendTransFileList(TRANSPACKET *Pkt) | ||
445 | 465 | } |
446 | 466 | // 同時接続対応 |
447 | 467 | if(NextTransPacketBase == NULL) |
448 | - NextTransPacketBase = TransPacketBase; | |
468 | + NextTransPacketBase = Pkt; | |
449 | 469 | |
450 | 470 | while(Pkt != NULL) |
451 | 471 | { |
@@ -549,7 +569,7 @@ static void EraseTransFileList(void) | ||
549 | 569 | } |
550 | 570 | TransPacketBase = NotDel; |
551 | 571 | // 同時接続対応 |
552 | - NextTransPacketBase = TransPacketBase; | |
572 | + NextTransPacketBase = NotDel; | |
553 | 573 | TransFiles = 0; |
554 | 574 | PostMessage(GetMainHwnd(), WM_CHANGE_COND, 0, 0); |
555 | 575 | ReleaseMutex(hListAccMutex); |
@@ -1173,6 +1193,10 @@ static ULONG WINAPI TransferThread(void *Dummy) | ||
1173 | 1193 | PostMessage(GetMainHwnd(), WM_COMMAND, MAKEWPARAM(MENU_AUTO_EXIT, 0), 0); |
1174 | 1194 | GoExit = NO; |
1175 | 1195 | } |
1196 | + | |
1197 | + // 再転送対応 | |
1198 | + TransferErrorMode = AskTransferErrorMode(); | |
1199 | + TransferErrorNotify = AskTransferErrorNotify(); | |
1176 | 1200 | } |
1177 | 1201 | else |
1178 | 1202 | { |
@@ -2253,8 +2277,19 @@ static void DispDownloadFinishMsg(TRANSPACKET *Pkt, int iRetCode) | ||
2253 | 2277 | { |
2254 | 2278 | // 全て中止を選択後にダイアログが表示されるバグ対策 |
2255 | 2279 | // 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 | + } | |
2258 | 2293 | } |
2259 | 2294 | } |
2260 | 2295 | else |
@@ -2288,13 +2323,17 @@ static void DispDownloadFinishMsg(TRANSPACKET *Pkt, int iRetCode) | ||
2288 | 2323 | * int ステータス (YES=中止/NO=全て中止) |
2289 | 2324 | *----------------------------------------------------------------------------*/ |
2290 | 2325 | |
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) | |
2292 | 2329 | { |
2293 | 2330 | if(hWnd == NULL) |
2294 | 2331 | hWnd = GetMainHwnd(); |
2295 | 2332 | |
2296 | 2333 | 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)); | |
2298 | 2337 | } |
2299 | 2338 | |
2300 | 2339 |
@@ -2312,29 +2351,53 @@ static int DispUpDownErrDialog(int ResID, HWND hWnd, char *Fname) | ||
2312 | 2351 | |
2313 | 2352 | static BOOL CALLBACK UpDownErrorDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) |
2314 | 2353 | { |
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 | + | |
2315 | 2362 | switch (message) |
2316 | 2363 | { |
2317 | 2364 | 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); | |
2319 | 2368 | // 同時接続対応 |
2320 | 2369 | // SendDlgItemMessage(hDlg, UPDOWN_ERR_MSG, WM_SETTEXT, 0, (LPARAM)ErrMsg); |
2321 | 2370 | 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); | |
2322 | 2376 | return(TRUE); |
2323 | 2377 | |
2324 | 2378 | case WM_COMMAND : |
2325 | 2379 | switch(GET_WM_COMMAND_ID(wParam, lParam)) |
2326 | 2380 | { |
2381 | + case IDOK_ALL : | |
2382 | + TransferErrorNotify = NO; | |
2383 | + /* ここに break はない */ | |
2384 | + | |
2327 | 2385 | case IDOK : |
2386 | + TransferErrorMode = AskRadioButtonValue(hDlg, DownExistButton, DOWNEXISTBUTTONS); | |
2328 | 2387 | EndDialog(hDlg, YES); |
2329 | 2388 | break; |
2330 | 2389 | |
2331 | 2390 | case IDCANCEL : |
2332 | 2391 | EndDialog(hDlg, NO); |
2333 | 2392 | break; |
2393 | + | |
2394 | + case IDHELP : | |
2395 | +// hHelpWin = HtmlHelp(NULL, AskHelpFilePath(), HH_HELP_CONTEXT, IDH_HELP_TOPIC_0000009); | |
2396 | + break; | |
2334 | 2397 | } |
2335 | - return(TRUE); | |
2398 | + return(TRUE); | |
2336 | 2399 | } |
2337 | - return(FALSE); | |
2400 | + return(FALSE); | |
2338 | 2401 | } |
2339 | 2402 | |
2340 | 2403 |
@@ -3452,8 +3515,19 @@ static void DispUploadFinishMsg(TRANSPACKET *Pkt, int iRetCode) | ||
3452 | 3515 | { |
3453 | 3516 | // 全て中止を選択後にダイアログが表示されるバグ対策 |
3454 | 3517 | // 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 | + } | |
3457 | 3531 | } |
3458 | 3532 | } |
3459 | 3533 | else |
@@ -241,6 +241,9 @@ static void CopyHostToHistory(HOSTDATA *Host, HISTORYDATA *New) | ||
241 | 241 | New->NetType = Host->NetType; |
242 | 242 | // 自動切断対策 |
243 | 243 | New->NoopInterval = Host->NoopInterval; |
244 | + // 再転送対応 | |
245 | + New->TransferErrorMode = Host->TransferErrorMode; | |
246 | + New->TransferErrorNotify = Host->TransferErrorNotify; | |
244 | 247 | return; |
245 | 248 | } |
246 | 249 |
@@ -305,6 +308,9 @@ void CopyHistoryToHost(HISTORYDATA *Hist, HOSTDATA *Host) | ||
305 | 308 | Host->NetType = Hist->NetType; |
306 | 309 | // 自動切断対策 |
307 | 310 | Host->NoopInterval = Hist->NoopInterval; |
311 | + // 再転送対応 | |
312 | + Host->TransferErrorMode = Hist->TransferErrorMode; | |
313 | + Host->TransferErrorNotify = Hist->TransferErrorNotify; | |
308 | 314 | return; |
309 | 315 | } |
310 | 316 |
@@ -1045,6 +1045,9 @@ int CopyHostFromListInConnect(int Num, HOSTDATA *Set) | ||
1045 | 1045 | Set->NetType = Pos->Set.NetType; |
1046 | 1046 | // 自動切断対策 |
1047 | 1047 | Set->NoopInterval = Pos->Set.NoopInterval; |
1048 | + // 再転送対応 | |
1049 | + Set->TransferErrorMode = Pos->Set.TransferErrorMode; | |
1050 | + Set->TransferErrorNotify = Pos->Set.TransferErrorNotify; | |
1048 | 1051 | Sts = FFFTP_SUCCESS; |
1049 | 1052 | } |
1050 | 1053 | return(Sts); |
@@ -1338,6 +1341,9 @@ void CopyDefaultHost(HOSTDATA *Set) | ||
1338 | 1341 | Set->CurNetType = NTYPE_AUTO; |
1339 | 1342 | // 自動切断対策 |
1340 | 1343 | Set->NoopInterval = 0; |
1344 | + // 再転送対応 | |
1345 | + Set->TransferErrorMode = EXIST_OVW; | |
1346 | + Set->TransferErrorNotify = YES; | |
1341 | 1347 | return; |
1342 | 1348 | } |
1343 | 1349 |
@@ -2225,6 +2231,17 @@ static BOOL CALLBACK Adv3SettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LP | ||
2225 | 2231 | NMHDR *pnmhdr; |
2226 | 2232 | // int Num; |
2227 | 2233 | |
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 | + | |
2228 | 2245 | switch (iMessage) |
2229 | 2246 | { |
2230 | 2247 | case WM_INITDIALOG : |
@@ -2235,6 +2252,20 @@ static BOOL CALLBACK Adv3SettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LP | ||
2235 | 2252 | SendDlgItemMessage(hDlg, HSET_NOOP_INTERVAL, EM_LIMITTEXT, (WPARAM)3, 0); |
2236 | 2253 | SetDecimalText(hDlg, HSET_NOOP_INTERVAL, TmpHost.NoopInterval); |
2237 | 2254 | 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); | |
2238 | 2269 | return(TRUE); |
2239 | 2270 | |
2240 | 2271 | case WM_NOTIFY: |
@@ -2247,6 +2278,25 @@ static BOOL CALLBACK Adv3SettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LP | ||
2247 | 2278 | TmpHost.ReuseCmdSkt = SendDlgItemMessage(hDlg, HSET_REUSE_SOCKET, BM_GETCHECK, 0, 0); |
2248 | 2279 | TmpHost.NoopInterval = GetDecimalText(hDlg, HSET_NOOP_INTERVAL); |
2249 | 2280 | 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 | + } | |
2250 | 2300 | Apply = YES; |
2251 | 2301 | break; |
2252 | 2302 |
@@ -332,3 +332,7 @@ | ||
332 | 332 | #define MSGJPN332 "Auto" |
333 | 333 | #define MSGJPN333 "TCP/IPv4" |
334 | 334 | #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" |
@@ -332,3 +332,7 @@ | ||
332 | 332 | #define MSGJPN332 "Auto" |
333 | 333 | #define MSGJPN333 "TCP/IPv4" |
334 | 334 | #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" |
@@ -332,3 +332,7 @@ | ||
332 | 332 | #define MSGJPN332 "\xE8\x87\xAA\xE5\x8B\x95" |
333 | 333 | #define MSGJPN333 "TCP/IPv4" |
334 | 334 | #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" |
@@ -332,3 +332,7 @@ | ||
332 | 332 | #define MSGJPN332 "©®" |
333 | 333 | #define MSGJPN333 "TCP/IPv4" |
334 | 334 | #define MSGJPN334 "TCP/IPv6" |
335 | +#define MSGJPN335 "ñqËé" | |
336 | +#define MSGJPN336 "SÄãÅã«" | |
337 | +#define MSGJPN337 "SÄãÅW [" | |
338 | +#define MSGJPN338 "SÄXLbv" |
@@ -493,6 +493,9 @@ void SaveRegistory(void) | ||
493 | 493 | SaveIntNum(hKey5, "NetType", Hist.NetType, DefaultHist.NetType); |
494 | 494 | // 自動切断対策 |
495 | 495 | SaveIntNum(hKey5, "Noop", Hist.NoopInterval, DefaultHist.NoopInterval); |
496 | + // 再転送対応 | |
497 | + SaveIntNum(hKey5, "ErrMode", Hist.TransferErrorMode, DefaultHist.TransferErrorMode); | |
498 | + SaveIntNum(hKey5, "ErrNotify", Hist.TransferErrorNotify, DefaultHist.TransferErrorNotify); | |
496 | 499 | |
497 | 500 | CloseSubKey(hKey5); |
498 | 501 | n++; |
@@ -577,6 +580,9 @@ void SaveRegistory(void) | ||
577 | 580 | SaveIntNum(hKey5, "NetType", Host.NetType, DefaultHost.NetType); |
578 | 581 | // 自動切断対策 |
579 | 582 | SaveIntNum(hKey5, "Noop", Host.NoopInterval, DefaultHost.NoopInterval); |
583 | + // 再転送対応 | |
584 | + SaveIntNum(hKey5, "ErrMode", Host.TransferErrorMode, DefaultHost.TransferErrorMode); | |
585 | + SaveIntNum(hKey5, "ErrNotify", Host.TransferErrorNotify, DefaultHost.TransferErrorNotify); | |
580 | 586 | } |
581 | 587 | CloseSubKey(hKey5); |
582 | 588 | } |
@@ -857,6 +863,9 @@ int LoadRegistory(void) | ||
857 | 863 | ReadIntValueFromReg(hKey5, "NetType", &Hist.NetType); |
858 | 864 | // 自動切断対策 |
859 | 865 | ReadIntValueFromReg(hKey5, "Noop", &Hist.NoopInterval); |
866 | + // 再転送対応 | |
867 | + ReadIntValueFromReg(hKey5, "ErrMode", &Hist.TransferErrorMode); | |
868 | + ReadIntValueFromReg(hKey5, "ErrNotify", &Hist.TransferErrorNotify); | |
860 | 869 | |
861 | 870 | CloseSubKey(hKey5); |
862 | 871 | AddHistoryToHistory(&Hist); |
@@ -950,6 +959,9 @@ int LoadRegistory(void) | ||
950 | 959 | ReadIntValueFromReg(hKey5, "NetType", &Host.NetType); |
951 | 960 | // 自動切断対策 |
952 | 961 | ReadIntValueFromReg(hKey5, "Noop", &Host.NoopInterval); |
962 | + // 再転送対応 | |
963 | + ReadIntValueFromReg(hKey5, "ErrMode", &Host.TransferErrorMode); | |
964 | + ReadIntValueFromReg(hKey5, "ErrNotify", &Host.TransferErrorNotify); | |
953 | 965 | |
954 | 966 | CloseSubKey(hKey5); |
955 | 967 |