X-Git-Url: http://git.sourceforge.jp/view?p=ffftp%2Fffftp.git;a=blobdiff_plain;f=hostman.c;h=4fcdd9e303461ed863755a9ceb97c123d990b040;hp=abecc331bf5ef71502a1a7c560168ee0addcf1e3;hb=663728dfaea4b4e0da170722b4046764e01555dc;hpb=791b047f2c0c10f5d5cc09db8d642191c5c23a83 diff --git a/hostman.c b/hostman.c index abecc33..4fcdd9e 100644 --- a/hostman.c +++ b/hostman.c @@ -1,6 +1,6 @@ -/*============================================================================= +/*============================================================================= * -* ƒzƒXƒgˆê—— +* ホスト一覧 * =============================================================================== / Copyright (C) 1997-2007 Sota. All rights reserved. @@ -28,6 +28,8 @@ /============================================================================*/ #define STRICT +// IPv6対応 +#include #include #include #include @@ -41,10 +43,16 @@ #include #include "helpid.h" +// UTF-8対応 +#undef __MBSWRAPPER_H__ +#include "mbswrapper.h" -/*===== ƒvƒƒgƒ^ƒCƒv =====*/ -static BOOL CALLBACK SelectHostProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); +/*===== プロトタイプ =====*/ + +// 64ビット対応 +//static BOOL CALLBACK SelectHostProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); +static INT_PTR CALLBACK SelectHostProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); static LRESULT CALLBACK HostListWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); static HOSTLISTDATA *GetNextNode(HOSTLISTDATA *Pos); static int GetNodeLevel(int Num); @@ -58,42 +66,52 @@ static int DeleteChildAndNext(HOSTLISTDATA *Pos); static void SendAllHostNames(HWND hWnd, int Cur); static int IsNodeGroup(int Num); static int DispHostSetDlg(HWND hDlg); -static BOOL CALLBACK MainSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam); -static BOOL CALLBACK AdvSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam); -static BOOL CALLBACK CodeSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam); -static BOOL CALLBACK DialupSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam); -static BOOL CALLBACK Adv2SettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam); - -/*===== ŠO•”ŽQÆ =====*/ +// 64ビット対応 +//static BOOL CALLBACK MainSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam); +//static BOOL CALLBACK AdvSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam); +//static BOOL CALLBACK CodeSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam); +//static BOOL CALLBACK DialupSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam); +//static BOOL CALLBACK Adv2SettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam); +static INT_PTR CALLBACK MainSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam); +static INT_PTR CALLBACK AdvSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam); +static INT_PTR CALLBACK CodeSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam); +static INT_PTR CALLBACK DialupSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam); +static INT_PTR CALLBACK Adv2SettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam); +// 暗号化通信対応 +static INT_PTR CALLBACK CryptSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam); +// 同時接続対応 +static INT_PTR CALLBACK Adv3SettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam); + +/*===== 外部参照 =====*/ extern HWND hHelpWin; -/* Ý’è’l */ +/* 設定値 */ extern char UserMailAdrs[USER_MAIL_LEN+1]; extern HFONT ListFont; extern char DefaultLocalPath[FMAX_PATH+1]; extern int ConnectAndSet; extern SIZE HostDlgSize; -/*===== ƒ[ƒJƒ‹‚ȃ[ƒN =====*/ +/*===== ローカルなワーク =====*/ -static int Hosts = 0; /* ƒzƒXƒg” */ -static int ConnectingHost; /* Ú‘±’†‚̃zƒXƒg */ -static int CurrentHost; /* ƒJ[ƒ\ƒ‹ˆÊ’u‚̃zƒXƒg */ -static HOSTLISTDATA *HostListTop = NULL; /* ƒzƒXƒgˆê——ƒf[ƒ^ */ -static HOSTDATA TmpHost; /* ƒzƒXƒgî•ñƒRƒs[—p */ -static int Apply; /* ƒvƒƒpƒeƒBƒV[ƒg‚ÅOK‚ð‰Ÿ‚µ‚½ƒtƒ‰ƒO */ +static int Hosts = 0; /* ホスト数 */ +static int ConnectingHost; /* 接続中のホスト */ +static int CurrentHost; /* カーソル位置のホスト */ +static HOSTLISTDATA *HostListTop = NULL; /* ホスト一覧データ */ +static HOSTDATA TmpHost; /* ホスト情報コピー用 */ +static int Apply; /* プロパティシートでOKを押したフラグ */ static WNDPROC HostListProcPtr; -/*----- ƒzƒXƒgˆê——ƒEƒCƒ“ƒhƒE -------------------------------------------------- +/*----- ホスト一覧ウインドウ -------------------------------------------------- * * Parameter -* int Type : ƒ_ƒCƒAƒƒO‚̃^ƒCƒv (DLG_TYPE_xxx) +* int Type : ダイアログのタイプ (DLG_TYPE_xxx) * * Return Value -* ƒXƒe[ƒ^ƒX (YES=ŽÀs/NO=ŽæÁ) +* ステータス (YES=実行/NO=取消) *----------------------------------------------------------------------------*/ int SelectHost(int Type) @@ -107,27 +125,29 @@ int SelectHost(int Type) Sts = DialogBox(GetFtpInst(), MAKEINTRESOURCE(Dlg), GetMainHwnd(), SelectHostProc); - /* ƒzƒXƒgÝ’è‚ð•Û‘¶ */ + /* ホスト設定を保存 */ SetNodeLevelAll(); - SaveRegistory(); + SaveRegistry(); return(Sts); } -/*----- ƒzƒXƒgˆê——ƒEƒCƒ“ƒhƒE‚̃R[ƒ‹ƒoƒbƒN ------------------------------------ +/*----- ホスト一覧ウインドウのコールバック ------------------------------------ * * Parameter -* HWND hDlg : ƒEƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹ -* UINT message : ƒƒbƒZ[ƒW”ԍ† -* WPARAM wParam : ƒƒbƒZ[ƒW‚Ì WPARAM ˆø” -* LPARAM lParam : ƒƒbƒZ[ƒW‚Ì LPARAM ˆø” +* HWND hDlg : ウインドウハンドル +* UINT message : メッセージ番号 +* WPARAM wParam : メッセージの WPARAM 引数 +* LPARAM lParam : メッセージの LPARAM 引数 * * Return Value * BOOL TRUE/FALSE *----------------------------------------------------------------------------*/ -static BOOL CALLBACK SelectHostProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) +// 64ビット対応 +//static BOOL CALLBACK SelectHostProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) +static INT_PTR CALLBACK SelectHostProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { static DIALOGSIZE DlgSize = { { HOST_NEW, HOST_FOLDER, HOST_SET, HOST_COPY, HOST_DEL, HOST_DOWN, HOST_UP, IDHELP, HOST_SIZEGRIP, -1 }, @@ -143,22 +163,26 @@ static BOOL CALLBACK SelectHostProc(HWND hDlg, UINT message, WPARAM wParam, LPAR int Level2; HOSTLISTDATA *Data1; HOSTLISTDATA *Data2; - NM_TREEVIEW *tView; + // UTF-8対応 +// NM_TREEVIEW *tView; + NM_TREEVIEWW *tView; HTREEITEM tViewPos; TV_HITTESTINFO HitInfo; switch (message) { case WM_INITDIALOG : - /* TreeView‚ł̃_ƒuƒ‹ƒNƒŠƒbƒN‚ð‚‚©‚Ü‚¦‚邽‚ß */ - HostListProcPtr = (WNDPROC)SetWindowLong(GetDlgItem(hDlg, HOST_LIST), GWL_WNDPROC, (LONG)HostListWndProc); + /* TreeViewでのダブルクリックをつかまえるため */ + // 64ビット対応 +// HostListProcPtr = (WNDPROC)SetWindowLong(GetDlgItem(hDlg, HOST_LIST), GWL_WNDPROC, (LONG)HostListWndProc); + HostListProcPtr = (WNDPROC)SetWindowLongPtr(GetDlgItem(hDlg, HOST_LIST), GWLP_WNDPROC, (LONG_PTR)HostListWndProc); // SetClassLong(hDlg, GCL_HICON, (LONG)LoadIcon(GetFtpInst(), MAKEINTRESOURCE(ffftp))); if(AskConnecting() == YES) { - /* Ú‘±’†‚́u•ÏXv‚Ì‚Ý‹–‰Â */ + /* 接続中は「変更」のみ許可 */ EnableWindow(GetDlgItem(hDlg, HOST_NEW), FALSE); EnableWindow(GetDlgItem(hDlg, HOST_FOLDER), FALSE); EnableWindow(GetDlgItem(hDlg, HOST_COPY), FALSE); @@ -193,7 +217,7 @@ static BOOL CALLBACK SelectHostProc(HWND hDlg, UINT message, WPARAM wParam, LPAR EndDialog(hDlg, YES); break; } - /* ‚±‚±‚Ébreak‚Í‚È‚¢ */ + /* ここにbreakはない */ case IDCANCEL : AskDlgSize(hDlg, &DlgSize, &HostDlgSize); @@ -295,8 +319,11 @@ static BOOL CALLBACK SelectHostProc(HWND hDlg, UINT message, WPARAM wParam, LPAR CurrentHost = Item.lParam; Level1 = IsNodeGroup(CurrentHost); - if(((Level1 == YES) && (DialogBox(GetFtpInst(), MAKEINTRESOURCE(groupdel_dlg), GetMainHwnd(), ExeEscDialogProc) == YES)) || - ((Level1 == NO) && (DialogBox(GetFtpInst(), MAKEINTRESOURCE(hostdel_dlg), GetMainHwnd(), ExeEscDialogProc) == YES))) + // バグ修正 +// if(((Level1 == YES) && (DialogBox(GetFtpInst(), MAKEINTRESOURCE(groupdel_dlg), GetMainHwnd(), ExeEscDialogProc) == YES)) || +// ((Level1 == NO) && (DialogBox(GetFtpInst(), MAKEINTRESOURCE(hostdel_dlg), GetMainHwnd(), ExeEscDialogProc) == YES))) + if(((Level1 == YES) && (DialogBox(GetFtpInst(), MAKEINTRESOURCE(groupdel_dlg), hDlg, ExeEscDialogProc) == YES)) || + ((Level1 == NO) && (DialogBox(GetFtpInst(), MAKEINTRESOURCE(hostdel_dlg), hDlg, ExeEscDialogProc) == YES))) { DelHostFromList(CurrentHost); if(CurrentHost >= Hosts) @@ -328,7 +355,7 @@ static BOOL CALLBACK SelectHostProc(HWND hDlg, UINT message, WPARAM wParam, LPAR if((Level1 == Level2) && (Data2->Set.Level & SET_LEVEL_GROUP)) { - //Data2‚Ìchild‚Ö + //Data2のchildへ if(Data1->Next != NULL) Data1->Next->Prev = Data1->Prev; if(Data1->Prev != NULL) @@ -345,7 +372,7 @@ static BOOL CALLBACK SelectHostProc(HWND hDlg, UINT message, WPARAM wParam, LPAR } else if(Level1 < Level2) { - //Data1‚ÌPrev‚ÌChild‚ÌNext‚Ì––”ö‚Ö + //Data1のPrevのChildのNextの末尾へ Data2 = Data1->Prev->Child; while(Data2->Next != NULL) Data2 = Data2->Next; @@ -366,7 +393,7 @@ static BOOL CALLBACK SelectHostProc(HWND hDlg, UINT message, WPARAM wParam, LPAR } else { - //Data2‚Ìprev‚Ö + //Data2のprevへ if(Data1->Next != NULL) Data1->Next->Prev = Data1->Prev; if(Data1->Prev != NULL) @@ -421,7 +448,7 @@ static BOOL CALLBACK SelectHostProc(HWND hDlg, UINT message, WPARAM wParam, LPAR { if(Data1->Next != NULL) { - //Data2 = Data1‚ÌNext + //Data2 = Data1のNext Data2 = Data1->Next; Level2 = GetNodeLevelByData(Data2); } @@ -436,7 +463,7 @@ static BOOL CALLBACK SelectHostProc(HWND hDlg, UINT message, WPARAM wParam, LPAR if(((Data2 == NULL) && (Level1 > 0)) || (Level1 > Level2)) { - //Data1‚ÌParent‚ÌNext‚Ö + //Data1のParentのNextへ Data2 = Data1->Parent; if(Data1->Next != NULL) @@ -464,7 +491,7 @@ static BOOL CALLBACK SelectHostProc(HWND hDlg, UINT message, WPARAM wParam, LPAR { if(Data2->Set.Level & SET_LEVEL_GROUP) { - //Data2‚ÌChild‚Ö + //Data2のChildへ if(Data1->Next != NULL) Data1->Next->Prev = Data1->Prev; if(Data1->Prev != NULL) @@ -483,7 +510,7 @@ static BOOL CALLBACK SelectHostProc(HWND hDlg, UINT message, WPARAM wParam, LPAR } else { - //Data2‚ÌNext‚Ö + //Data2のNextへ if(Data1->Next != NULL) Data1->Next->Prev = Data1->Prev; if(Data1->Prev != NULL) @@ -542,7 +569,9 @@ static BOOL CALLBACK SelectHostProc(HWND hDlg, UINT message, WPARAM wParam, LPAR break; case WM_NOTIFY: - tView = (NM_TREEVIEW FAR *)lParam; + // UTF-8対応 +// tView = (NM_TREEVIEW FAR *)lParam; + tView = (NM_TREEVIEWW FAR *)lParam; switch(tView->hdr.idFrom) { case HOST_LIST : @@ -550,8 +579,10 @@ static BOOL CALLBACK SelectHostProc(HWND hDlg, UINT message, WPARAM wParam, LPAR hItem = tView->itemNew.hItem; switch(tView->hdr.code) { - case TVN_SELCHANGED : - /* ƒtƒHƒ‹ƒ_‚ª‘I‚΂ꂽ‚Æ‚«‚͐ڑ±AƒRƒs[ƒ{ƒ^ƒ“‚Í‹ÖŽ~ */ + // UTF-8対応 +// case TVN_SELCHANGED : + case TVN_SELCHANGEDW : + /* フォルダが選ばれたときは接続、コピーボタンは禁止 */ Item.hItem = hItem; Item.mask = TVIF_PARAM; SendDlgItemMessage(hDlg, HOST_LIST, TVM_GETITEM, TVGN_CARET, (LPARAM)&Item); @@ -576,16 +607,16 @@ static BOOL CALLBACK SelectHostProc(HWND hDlg, UINT message, WPARAM wParam, LPAR } -/*----- ƒzƒXƒgˆê——TreeView‚̃ƒbƒZ[ƒWˆ— ------------------------------------ +/*----- ホスト一覧TreeViewのメッセージ処理 ------------------------------------ * * Parameter -* HWND hWnd : ƒEƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹ -* UINT message : ƒƒbƒZ[ƒW”ԍ† -* WPARAM wParam : ƒƒbƒZ[ƒW‚Ì WPARAM ˆø” -* LPARAM lParam : ƒƒbƒZ[ƒW‚Ì LPARAM ˆø” +* HWND hWnd : ウインドウハンドル +* UINT message : メッセージ番号 +* WPARAM wParam : メッセージの WPARAM 引数 +* LPARAM lParam : メッセージの LPARAM 引数 * * Return Value -* ƒƒbƒZ[ƒW‚ɑΉž‚·‚é–ß‚è’l +* メッセージに対応する戻り値 *----------------------------------------------------------------------------*/ static LRESULT CALLBACK HostListWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) @@ -600,14 +631,14 @@ static LRESULT CALLBACK HostListWndProc(HWND hWnd, UINT message, WPARAM wParam, } -/*----- ŽŸ‚̐ݒè”ԍ†‚̃m[ƒh‚ð•Ô‚· -------------------------------------------- +/*----- 次の設定番号のノードを返す -------------------------------------------- * * Parameter -* HOSTLISTDATA *Pos : ƒm[ƒhƒf[ƒ^ +* HOSTLISTDATA *Pos : ノードデータ * * Return Value -* HOSTLISTDATA *ŽŸ‚̃m[ƒh -* NULL=ŽŸ‚Í‚È‚¢ +* HOSTLISTDATA *次のノード +* NULL=次はない *----------------------------------------------------------------------------*/ static HOSTLISTDATA *GetNextNode(HOSTLISTDATA *Pos) @@ -638,13 +669,13 @@ static HOSTLISTDATA *GetNextNode(HOSTLISTDATA *Pos) } -/*----- ƒm[ƒh‚̃Œƒxƒ‹”‚ð•Ô‚·iÝ’è”ԍ†Žw’èj -------------------------------- +/*----- ノードのレベル数を返す(設定番号指定) -------------------------------- * * Parameter -* int Num : Ý’è’l†”ԍ† +* int Num : 設定値号番号 * * Return Value -* int ƒŒƒxƒ‹” (-1=Ý’肪‚È‚¢j +* int レベル数 (-1=設定がない) *----------------------------------------------------------------------------*/ static int GetNodeLevel(int Num) @@ -667,13 +698,13 @@ static int GetNodeLevel(int Num) } -/*----- ƒm[ƒh‚̃Œƒxƒ‹”‚ð•Ô‚·iƒm[ƒhƒf[ƒ^Žw’èj----------------------------- +/*----- ノードのレベル数を返す(ノードデータ指定)----------------------------- * * Parameter -* HOSTLISTDATA *Data : Ý’è’l +* HOSTLISTDATA *Data : 設定値 * * Return Value -* int ƒŒƒxƒ‹” +* int レベル数 *----------------------------------------------------------------------------*/ static int GetNodeLevelByData(HOSTLISTDATA *Data) @@ -690,13 +721,13 @@ static int GetNodeLevelByData(HOSTLISTDATA *Data) } -/*----- ƒm[ƒh‚̐ݒè”ԍ†‚ð•Ô‚· ------------------------------------------------ +/*----- ノードの設定番号を返す ------------------------------------------------ * * Parameter -* HOSTLISTDATA *Data : Ý’è’l +* HOSTLISTDATA *Data : 設定値 * * Return Value -* int Ý’è”ԍ† +* int 設定番号 *----------------------------------------------------------------------------*/ static int GetNodeNumByData(HOSTLISTDATA *Data) @@ -715,13 +746,13 @@ static int GetNodeNumByData(HOSTLISTDATA *Data) } -/*----- Žw’è”ԍ†‚̃m[ƒh‚ð•Ô‚· ------------------------------------------------ +/*----- 指定番号のノードを返す ------------------------------------------------ * * Parameter -* int Num : Ý’è”ԍ† +* int Num : 設定番号 * * Return Value -* HOSTLISTDATA * : Ý’è’l +* HOSTLISTDATA * : 設定値 *----------------------------------------------------------------------------*/ static HOSTLISTDATA *GetNodeByNum(int Num) @@ -736,13 +767,13 @@ static HOSTLISTDATA *GetNodeByNum(int Num) } -/*----- Ý’è’lƒŠƒXƒg‚ÌŠeƒm[ƒh‚̃Œƒxƒ‹”ԍ†‚ðƒZƒbƒg ---------------------------- +/*----- 設定値リストの各ノードのレベル番号をセット ---------------------------- * * Parameter -* int Num : Ý’è”ԍ† +* int Num : 設定番号 * * Return Value -* HOSTLISTDATA * : Ý’è’l +* HOSTLISTDATA * : 設定値 *----------------------------------------------------------------------------*/ static int SetNodeLevelAll(void) @@ -757,20 +788,20 @@ static int SetNodeLevelAll(void) Pos->Set.Level |= GetNodeLevelByData(Pos); Pos = GetNextNode(Pos); } - return(SUCCESS); + return(FFFTP_SUCCESS); } -/*----- Ý’è’lƒŠƒXƒg‚ɒljÁ ---------------------------------------------------- +/*----- 設定値リストに追加 ---------------------------------------------------- * * Parameter -* HOSTDATA *Set : ’ljÁ‚·‚éÝ’è’l -* int Pos : ’ljÁ‚·‚éˆÊ’u (0` : -1=ÅŒã) -* int Level : ƒŒƒxƒ‹” (SET_LEVEL_SAME=’ljÁˆÊ’u‚Ì‚à‚Ì‚Æ“¯ƒŒƒxƒ‹) +* HOSTDATA *Set : 追加する設定値 +* int Pos : 追加する位置 (0~ : -1=最後) +* int Level : レベル数 (SET_LEVEL_SAME=追加位置のものと同レベル) * * Return Value -* int ƒXƒe[ƒ^ƒX -* SUCCESS/FAIL +* int ステータス +* FFFTP_SUCCESS/FFFTP_FAIL *----------------------------------------------------------------------------*/ int AddHostToList(HOSTDATA *Set, int Pos, int Level) @@ -780,7 +811,7 @@ int AddHostToList(HOSTDATA *Set, int Pos, int Level) HOSTLISTDATA *Last; int Cur; - Sts = FAIL; + Sts = FFFTP_FAIL; if((Pos >= -1) && (Pos <= Hosts)) { if(Pos == -1) @@ -838,22 +869,22 @@ int AddHostToList(HOSTDATA *Set, int Pos, int Level) } } Hosts++; - Sts = SUCCESS; + Sts = FFFTP_SUCCESS; } } return(Sts); } -/*----- Ý’è’lƒŠƒXƒg‚ðXV‚·‚é ------------------------------------------------ +/*----- 設定値リストを更新する ------------------------------------------------ * * Parameter -* int Num : Ý’è’l†”ԍ† -* HOSTDATA *Set : Ý’è’l‚ðƒRƒs[‚·‚郏[ƒN +* int Num : 設定値号番号 +* HOSTDATA *Set : 設定値をコピーするワーク * * Return Value -* int ƒXƒe[ƒ^ƒX -* SUCCESS/FAIL +* int ステータス +* FFFTP_SUCCESS/FFFTP_FAIL *----------------------------------------------------------------------------*/ static int UpdateHostToList(int Num, HOSTDATA *Set) @@ -861,25 +892,25 @@ static int UpdateHostToList(int Num, HOSTDATA *Set) int Sts; HOSTLISTDATA *Pos; - Sts = FAIL; + Sts = FFFTP_FAIL; if((Num >= 0) && (Num < Hosts)) { Pos = GetNodeByNum(Num); memcpy(&Pos->Set, Set, sizeof(HOSTDATA)); - Sts = SUCCESS; + Sts = FFFTP_SUCCESS; } return(Sts); } -/*----- Ý’è’lƒŠƒXƒg‚©‚çíœ -------------------------------------------------- +/*----- 設定値リストから削除 -------------------------------------------------- * * Parameter -* int Num : íœ‚·‚é”ԍ† +* int Num : 削除する番号 * * Return Value -* int ƒXƒe[ƒ^ƒX -* SUCCESS/FAIL +* int ステータス +* FFFTP_SUCCESS/FFFTP_FAIL *----------------------------------------------------------------------------*/ static int DelHostFromList(int Num) @@ -887,7 +918,7 @@ static int DelHostFromList(int Num) int Sts; HOSTLISTDATA *Pos; - Sts = FAIL; + Sts = FFFTP_FAIL; if((Num >= 0) && (Num < Hosts)) { if(Num == 0) @@ -912,23 +943,23 @@ static int DelHostFromList(int Num) } free(Pos); Hosts--; - Sts = SUCCESS; + Sts = FFFTP_SUCCESS; } return(Sts); } -/*----- Ý’è’lƒŠƒXƒg‚©‚çƒm[ƒhƒf[ƒ^‚ðíœ ------------------------------------ +/*----- 設定値リストからノードデータを削除 ------------------------------------ * * Parameter -* HOSTLISTDATA *Pos : íœ‚·‚éƒm[ƒh +* HOSTLISTDATA *Pos : 削除するノード * * Return Value -* int ƒXƒe[ƒ^ƒX -* SUCCESS/FAIL +* int ステータス +* FFFTP_SUCCESS/FFFTP_FAIL * * Note -* Pos->Next, Pos->Child‚Ì‘S‚Ẵm[ƒh‚ðíœ‚·‚é +* Pos->Next, Pos->Childの全てのノードを削除する *----------------------------------------------------------------------------*/ static int DeleteChildAndNext(HOSTLISTDATA *Pos) @@ -945,22 +976,22 @@ static int DeleteChildAndNext(HOSTLISTDATA *Pos) Hosts--; Pos = Next; } - return(SUCCESS); + return(FFFTP_SUCCESS); } -/*----- Ý’è’lƒŠƒXƒg‚©‚çÝ’è’l‚ðŽæ‚èo‚· -------------------------------------- +/*----- 設定値リストから設定値を取り出す -------------------------------------- * * Parameter -* int Num : Ý’è’l†”ԍ† -* HOSTDATA *Set : Ý’è’l‚ðƒRƒs[‚·‚郏[ƒN +* int Num : 設定値号番号 +* HOSTDATA *Set : 設定値をコピーするワーク * * Return Value -* int ƒXƒe[ƒ^ƒX -* SUCCESS/FAIL +* int ステータス +* FFFTP_SUCCESS/FFFTP_FAIL * * Note -* Œ»ÝƒzƒXƒg‚ɐڑ±’†‚ÌŽž‚́ACopyHostFromListInConnect() ‚ðŽg‚¤Ž– +* 現在ホストに接続中の時は、CopyHostFromListInConnect() を使う事 *----------------------------------------------------------------------------*/ int CopyHostFromList(int Num, HOSTDATA *Set) @@ -968,29 +999,29 @@ int CopyHostFromList(int Num, HOSTDATA *Set) int Sts; HOSTLISTDATA *Pos; - Sts = FAIL; + Sts = FFFTP_FAIL; if((Num >= 0) && (Num < Hosts)) { Pos = GetNodeByNum(Num); memcpy(Set, &Pos->Set, sizeof(HOSTDATA)); - Sts = SUCCESS; + Sts = FFFTP_SUCCESS; } return(Sts); } -/*----- Ý’è’lƒŠƒXƒg‚©‚çÝ’è’l‚ðŽæ‚èo‚· -------------------------------------- +/*----- 設定値リストから設定値を取り出す -------------------------------------- * * Parameter -* int Num : Ý’è’l†”ԍ† -* HOSTDATA *Set : Ý’è’l‚ðƒRƒs[‚·‚郏[ƒN +* int Num : 設定値号番号 +* HOSTDATA *Set : 設定値をコピーするワーク * * Return Value -* int ƒXƒe[ƒ^ƒX -* SUCCESS/FAIL +* int ステータス +* FFFTP_SUCCESS/FFFTP_FAIL * * Note -* Œ»ÝƒzƒXƒg‚ɐڑ±’†‚ÌŽž‚ÉŽg‚¤ +* 現在ホストに接続中の時に使う *----------------------------------------------------------------------------*/ int CopyHostFromListInConnect(int Num, HOSTDATA *Set) @@ -998,7 +1029,7 @@ int CopyHostFromListInConnect(int Num, HOSTDATA *Set) int Sts; HOSTLISTDATA *Pos; - Sts = FAIL; + Sts = FFFTP_FAIL; if((Num >= 0) && (Num < Hosts)) { Pos = GetNodeByNum(Num); @@ -1015,22 +1046,39 @@ int CopyHostFromListInConnect(int Num, HOSTDATA *Set) Set->UseNLST_R = Pos->Set.UseNLST_R; Set->LastDir = Pos->Set.LastDir; Set->TimeZone = Pos->Set.TimeZone; - Sts = SUCCESS; + // 暗号化通信対応 + Set->UseNoEncryption = Pos->Set.UseNoEncryption; + Set->UseFTPES = Pos->Set.UseFTPES; + Set->UseFTPIS = Pos->Set.UseFTPIS; + Set->UseSFTP = Pos->Set.UseSFTP; + // 同時接続対応 + Set->MaxThreadCount = Pos->Set.MaxThreadCount; + Set->ReuseCmdSkt = Pos->Set.ReuseCmdSkt; + // MLSD対応 + Set->UseMLSD = Pos->Set.UseMLSD; + // IPv6対応 + Set->NetType = Pos->Set.NetType; + // 自動切断対策 + Set->NoopInterval = Pos->Set.NoopInterval; + // 再転送対応 + Set->TransferErrorMode = Pos->Set.TransferErrorMode; + Set->TransferErrorNotify = Pos->Set.TransferErrorNotify; + Sts = FFFTP_SUCCESS; } return(Sts); } -/*----- Ý’è’lƒŠƒXƒg‚̃uƒbƒNƒ}[ƒN‚ðXV -------------------------------------- +/*----- 設定値リストのブックマークを更新 -------------------------------------- * * Parameter -* int Num : Ý’è’l†”ԍ† -* char *Bmask : ƒuƒbƒNƒ}[ƒN•¶Žš—ñ -* int Len : ƒuƒbƒNƒ}[ƒN•¶Žš—ñ‚Ì’·‚³ +* int Num : 設定値号番号 +* char *Bmask : ブックマーク文字列 +* int Len : ブックマーク文字列の長さ * * Return Value -* int ƒXƒe[ƒ^ƒX -* SUCCESS/FAIL +* int ステータス +* FFFTP_SUCCESS/FFFTP_FAIL *----------------------------------------------------------------------------*/ int SetHostBookMark(int Num, char *Bmask, int Len) @@ -1038,24 +1086,24 @@ int SetHostBookMark(int Num, char *Bmask, int Len) int Sts; HOSTLISTDATA *Pos; - Sts = FAIL; + Sts = FFFTP_FAIL; if((Num >= 0) && (Num < Hosts)) { Pos = GetNodeByNum(Num); memcpy(Pos->Set.BookMark, Bmask, Len); - Sts = SUCCESS; + Sts = FFFTP_SUCCESS; } return(Sts); } -/*----- Ý’è’lƒŠƒXƒg‚̃uƒbƒNƒ}[ƒN•¶Žš—ñ‚ð•Ô‚· -------------------------------- +/*----- 設定値リストのブックマーク文字列を返す -------------------------------- * * Parameter -* int Num : Ý’è’l†”ԍ† +* int Num : 設定値号番号 * * Return Value -* char *ƒuƒbƒNƒ}[ƒN•¶Žš—ñ +* char *ブックマーク文字列 *----------------------------------------------------------------------------*/ char *AskHostBookMark(int Num) @@ -1073,16 +1121,16 @@ char *AskHostBookMark(int Num) } -/*----- Ý’è’lƒŠƒXƒg‚̃fƒBƒŒƒNƒgƒŠ‚ðXV -------------------------------------- +/*----- 設定値リストのディレクトリを更新 -------------------------------------- * * Parameter -* int Num : Ý’è’l†”ԍ† -* char *LocDir : ƒ[ƒJƒ‹‚̃fƒBƒŒƒNƒgƒŠ -* char *HostDir : ƒzƒXƒg‚̃fƒBƒŒƒNƒgƒŠ +* int Num : 設定値号番号 +* char *LocDir : ローカルのディレクトリ +* char *HostDir : ホストのディレクトリ * * Return Value -* int ƒXƒe[ƒ^ƒX -* SUCCESS/FAIL +* int ステータス +* FFFTP_SUCCESS/FFFTP_FAIL *----------------------------------------------------------------------------*/ int SetHostDir(int Num, char *LocDir, char *HostDir) @@ -1090,27 +1138,27 @@ int SetHostDir(int Num, char *LocDir, char *HostDir) int Sts; HOSTLISTDATA *Pos; - Sts = FAIL; + Sts = FFFTP_FAIL; if((Num >= 0) && (Num < Hosts)) { Pos = GetNodeByNum(Num); strcpy(Pos->Set.LocalInitDir, LocDir); strcpy(Pos->Set.RemoteInitDir, HostDir); - Sts = SUCCESS; + Sts = FFFTP_SUCCESS; } return(Sts); } -/*----- Ý’è’lƒŠƒXƒg‚̃pƒXƒ[ƒh‚ðXV ---------------------------------------- +/*----- 設定値リストのパスワードを更新 ---------------------------------------- * * Parameter -* int Num : Ý’è’l†”ԍ† -* char *Pass : ƒpƒXƒ[ƒh +* int Num : 設定値号番号 +* char *Pass : パスワード * * Return Value -* int ƒXƒe[ƒ^ƒX -* SUCCESS/FAIL +* int ステータス +* FFFTP_SUCCESS/FFFTP_FAIL *----------------------------------------------------------------------------*/ int SetHostPassword(int Num, char *Pass) @@ -1118,25 +1166,25 @@ int SetHostPassword(int Num, char *Pass) int Sts; HOSTLISTDATA *Pos; - Sts = FAIL; + Sts = FFFTP_FAIL; if((Num >= 0) && (Num < Hosts)) { Pos = GetNodeByNum(Num); strcpy(Pos->Set.PassWord, Pass); - Sts = SUCCESS; + Sts = FFFTP_SUCCESS; } return(Sts); } -/*----- Žw’è‚̐ݒ薼‚ðŽ‚ÂÝ’è‚̔ԍ†‚ð•Ô‚· ------------------------------------ +/*----- 指定の設定名を持つ設定の番号を返す ------------------------------------ * * Parameter -* char *Name : Ý’è–¼ +* char *Name : 設定名 * * Return Value -* int Ý’è”ԍ† (0`) -* -1=Œ©‚‚©‚ç‚È‚¢ +* int 設定番号 (0~) +* -1=見つからない *----------------------------------------------------------------------------*/ int SearchHostName(char *Name) @@ -1160,18 +1208,18 @@ int SearchHostName(char *Name) } -/*----- Ý’è’lƒŠƒXƒg‚̃\[ƒg•û–@‚ðXV ---------------------------------------- +/*----- 設定値リストのソート方法を更新 ---------------------------------------- * * Parameter -* int Num : Ý’è’l†”ԍ† -* int LFSort : ƒ[ƒJƒ‹‚̃tƒ@ƒCƒ‹‚̃\[ƒg•û–@ -* int LDSort : ƒ[ƒJƒ‹‚̃tƒHƒ‹ƒ_‚̃\[ƒg•û–@ -* int RFSort : ƒŠƒ‚[ƒg‚̃tƒ@ƒCƒ‹‚̃\[ƒg•û–@ -* int RDSort : ƒŠƒ‚[ƒg‚̃tƒHƒ‹ƒ_‚̃\[ƒg•û–@ +* int Num : 設定値号番号 +* int LFSort : ローカルのファイルのソート方法 +* int LDSort : ローカルのフォルダのソート方法 +* int RFSort : リモートのファイルのソート方法 +* int RDSort : リモートのフォルダのソート方法 * * Return Value -* int ƒXƒe[ƒ^ƒX -* SUCCESS/FAIL +* int ステータス +* FFFTP_SUCCESS/FFFTP_FAIL *----------------------------------------------------------------------------*/ int SetHostSort(int Num, int LFSort, int LDSort, int RFSort, int RDSort) @@ -1179,28 +1227,28 @@ int SetHostSort(int Num, int LFSort, int LDSort, int RFSort, int RDSort) int Sts; HOSTLISTDATA *Pos; - Sts = FAIL; + Sts = FFFTP_FAIL; if((Num >= 0) && (Num < Hosts)) { Pos = GetNodeByNum(Num); Pos->Set.Sort = LFSort * 0x1000000 | LDSort * 0x10000 | RFSort * 0x100 | RDSort; - Sts = SUCCESS; + Sts = FFFTP_SUCCESS; } return(Sts); } -/*----- “o˜^‚³‚ê‚Ä‚¢‚éƒ\[ƒg•û–@‚ð•ª‰ð‚·‚é ------------------------------------ +/*----- 登録されているソート方法を分解する ------------------------------------ * * Parameter -* ulong Sort : ƒ\[ƒg•û–@ -* int *LFSort : ƒ[ƒJƒ‹‚̃tƒ@ƒCƒ‹‚̃\[ƒg•û–@‚ðŠi”[‚·‚郏[ƒN -* int *LDSort : ƒ[ƒJƒ‹‚̃tƒHƒ‹ƒ_‚̃\[ƒg•û–@‚ðŠi”[‚·‚郏[ƒN -* int *RFSort : ƒŠƒ‚[ƒg‚̃tƒ@ƒCƒ‹‚̃\[ƒg•û–@‚ðŠi”[‚·‚郏[ƒN -* int *RDSort : ƒŠƒ‚[ƒg‚̃tƒHƒ‹ƒ_‚̃\[ƒg•û–@‚ðŠi”[‚·‚郏[ƒN +* ulong Sort : ソート方法 +* int *LFSort : ローカルのファイルのソート方法を格納するワーク +* int *LDSort : ローカルのフォルダのソート方法を格納するワーク +* int *RFSort : リモートのファイルのソート方法を格納するワーク +* int *RDSort : リモートのフォルダのソート方法を格納するワーク * * Return Value -* ‚È‚µ +* なし *----------------------------------------------------------------------------*/ void DecomposeSortType(ulong Sort, int *LFSort, int *LDSort, int *RFSort, int *RDSort) @@ -1213,13 +1261,13 @@ void DecomposeSortType(ulong Sort, int *LFSort, int *LDSort, int *RFSort, int *R } -/*----- Œ»ÝÚ‘±’†‚̐ݒè”ԍ†‚ð•Ô‚· -------------------------------------------- +/*----- 現在接続中の設定番号を返す -------------------------------------------- * * Parameter -* ‚È‚µ +* なし * * Return Value -* int Ý’è”ԍ† +* int 設定番号 *----------------------------------------------------------------------------*/ int AskCurrentHost(void) @@ -1228,13 +1276,13 @@ int AskCurrentHost(void) } -/*----- Œ»ÝÚ‘±’†‚̐ݒè”ԍ†‚ðƒZƒbƒg‚·‚é -------------------------------------- +/*----- 現在接続中の設定番号をセットする -------------------------------------- * * Parameter -* int Num : Ý’è”ԍ† +* int Num : 設定番号 * * Return Value -* ‚È‚µ +* なし *----------------------------------------------------------------------------*/ void SetCurrentHost(int Num) @@ -1244,13 +1292,13 @@ void SetCurrentHost(int Num) } -/*----- ƒfƒtƒHƒ‹ƒgÝ’è’l‚ðŽæ‚èo‚· -------------------------------------------- +/*----- デフォルト設定値を取り出す -------------------------------------------- * * Parameter -* HOSTDATA *Set : Ý’è’l‚ðƒRƒs[‚·‚郏[ƒN +* HOSTDATA *Set : 設定値をコピーするワーク * * Return Value -* ‚È‚µ +* なし *----------------------------------------------------------------------------*/ void CopyDefaultHost(HOSTDATA *Set) @@ -1272,6 +1320,8 @@ void CopyDefaultHost(HOSTDATA *Set) Set->KanjiCode = KANJI_NOCNV; Set->KanaCnv = YES; Set->NameKanjiCode = KANJI_NOCNV; + // UTF-8対応 + Set->CurNameKanjiCode = KANJI_NOCNV; Set->NameKanaCnv = NO; Set->Pasv = YES; Set->FireWall = NO; @@ -1288,18 +1338,40 @@ void CopyDefaultHost(HOSTDATA *Set) Set->DialupAlways = NO; Set->DialupNotify = YES; strcpy(Set->DialEntry, ""); + // 暗号化通信対応 + Set->CryptMode = CRYPT_NONE; + Set->UseNoEncryption = YES; + Set->UseFTPES = YES; + Set->UseFTPIS = YES; + Set->UseSFTP = YES; + strcpy(Set->PrivateKey, ""); + // 同時接続対応 + Set->MaxThreadCount = 1; + Set->ReuseCmdSkt = YES; + Set->NoDisplayUI = NO; + // MLSD対応 + Set->Feature = 0; + Set->UseMLSD = YES; + // IPv6対応 + Set->NetType = NTYPE_AUTO; + Set->CurNetType = NTYPE_AUTO; + // 自動切断対策 + Set->NoopInterval = 0; + // 再転送対応 + Set->TransferErrorMode = EXIST_OVW; + Set->TransferErrorNotify = YES; return; } -/*----- Ý’è–¼ˆê——‚ðƒEƒBƒ“ƒhƒE‚É‘—‚é ------------------------------------------ +/*----- 設定名一覧をウィンドウに送る ------------------------------------------ * * Parameter -* HWND hWnd : ƒEƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹ +* HWND hWnd : ウインドウハンドル * int Cur : * * Return Value -* ‚È‚µ +* なし *----------------------------------------------------------------------------*/ static void SendAllHostNames(HWND hWnd, int Cur) @@ -1314,10 +1386,10 @@ static void SendAllHostNames(HWND hWnd, int Cur) hItemCur = NULL; - /* ‚¿‚ç‚‚­‚̂ōĕ`‰æ‹ÖŽ~ */ + /* ちらつくので再描画禁止 */ SendMessage(hWnd, WM_SETREDRAW, (WPARAM)FALSE, 0); - SendMessage(hWnd, TVM_DELETEITEM, 0, (LPARAM)TVI_ROOT); /* ‘S‚Ä‚ðíœ */ + SendMessage(hWnd, TVM_DELETEITEM, 0, (LPARAM)TVI_ROOT); /* 全てを削除 */ if((Level = malloc(sizeof(HTREEITEM*) * Hosts + 1)) != NULL) { @@ -1365,7 +1437,7 @@ static void SendAllHostNames(HWND hWnd, int Cur) free(Level); } - /* Ä•`‰æ */ + /* 再描画 */ SendMessage(hWnd, WM_SETREDRAW, (WPARAM)TRUE, 0); if(hItemCur != NULL) @@ -1379,14 +1451,14 @@ static void SendAllHostNames(HWND hWnd, int Cur) } -/*----- Ý’è’l‚ªƒOƒ‹[ƒv‚©‚Ç‚¤‚©‚ð•Ô‚· ---------------------------------------- +/*----- 設定値がグループかどうかを返す ---------------------------------------- * * Parameter -* int Num : Ý’è’l†”ԍ† +* int Num : 設定値号番号 * * Return Value -* int ƒOƒ‹[ƒv‚©‚Ç‚¤‚© -* YES/NO/-1=Ý’è’l‚ª‚È‚¢ +* int グループかどうか +* YES/NO/-1=設定値がない *----------------------------------------------------------------------------*/ static int IsNodeGroup(int Num) @@ -1404,13 +1476,13 @@ static int IsNodeGroup(int Num) } -/*----- WS_FTP.INI‚©‚ç‚̃Cƒ“ƒ|[ƒg -------------------------------------------- +/*----- WS_FTP.INIからのインポート -------------------------------------------- * * Parameter -* ‚È‚µ +* なし * * Return Value -* ‚È‚µ +* なし *----------------------------------------------------------------------------*/ void ImportFromWSFTP(void) @@ -1488,20 +1560,27 @@ void ImportFromWSFTP(void) -/*----- ƒzƒXƒgÝ’è‚̃vƒƒpƒeƒBƒV[ƒg ------------------------------------------ +/*----- ホスト設定のプロパティシート ------------------------------------------ * * Parameter -* HWND hDlg : eƒEƒCƒ“ƒhƒE‚̃nƒ“ƒhƒ‹ +* HWND hDlg : 親ウインドウのハンドル * * Return Value -* ‚È‚µ +* なし *----------------------------------------------------------------------------*/ static int DispHostSetDlg(HWND hDlg) { - PROPSHEETPAGE psp[5]; + // SFTP、FTPES、FTPIS対応 + // 同時接続対応 +// PROPSHEETPAGE psp[5]; + PROPSHEETPAGE psp[7]; PROPSHEETHEADER psh; + // 変数が未初期化のバグ修正 + memset(&psp, 0, sizeof(psp)); + memset(&psh, 0, sizeof(psh)); + psp[0].dwSize = sizeof(PROPSHEETPAGE); psp[0].dwFlags = PSP_USETITLE | PSP_HASHELP; psp[0].hInstance = GetFtpInst(); @@ -1552,6 +1631,28 @@ static int DispHostSetDlg(HWND hDlg) psp[4].lParam = 0; psp[4].pfnCallback = NULL; + // SFTP、FTPES、FTPIS対応 + psp[5].dwSize = sizeof(PROPSHEETPAGE); + psp[5].dwFlags = PSP_USETITLE | PSP_HASHELP; + psp[5].hInstance = GetFtpInst(); + psp[5].pszTemplate = MAKEINTRESOURCE(hset_crypt_dlg); + psp[5].pszIcon = NULL; + psp[5].pfnDlgProc = CryptSettingProc; + psp[5].pszTitle = MSGJPN313; + psp[5].lParam = 0; + psp[5].pfnCallback = NULL; + + // 同時接続対応 + psp[6].dwSize = sizeof(PROPSHEETPAGE); + psp[6].dwFlags = PSP_USETITLE | PSP_HASHELP; + psp[6].hInstance = GetFtpInst(); + psp[6].pszTemplate = MAKEINTRESOURCE(hset_adv3_dlg); + psp[6].pszIcon = NULL; + psp[6].pfnDlgProc = Adv3SettingProc; + psp[6].pszTitle = MSGJPN320; + psp[6].lParam = 0; + psp[6].pfnCallback = NULL; + psh.dwSize = sizeof(PROPSHEETHEADER); psh.dwFlags = PSH_HASHELP | PSH_NOAPPLYNOW | PSH_PROPSHEETPAGE; psh.hwndParent = hDlg; @@ -1570,21 +1671,25 @@ static int DispHostSetDlg(HWND hDlg) } -/*----- Šî–{Ý’èƒEƒCƒ“ƒhƒE‚̃R[ƒ‹ƒoƒbƒN -------------------------------------- +/*----- 基本設定ウインドウのコールバック -------------------------------------- * * Parameter -* HWND hDlg : ƒEƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹ -* UINT message : ƒƒbƒZ[ƒW”ԍ† -* WPARAM wParam : ƒƒbƒZ[ƒW‚Ì WPARAM ˆø” -* LPARAM lParam : ƒƒbƒZ[ƒW‚Ì LPARAM ˆø” +* HWND hDlg : ウインドウハンドル +* UINT message : メッセージ番号 +* WPARAM wParam : メッセージの WPARAM 引数 +* LPARAM lParam : メッセージの LPARAM 引数 * * Return Value * BOOL TRUE/FALSE *----------------------------------------------------------------------------*/ -static BOOL CALLBACK MainSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam) +// 64ビット対応 +//static BOOL CALLBACK MainSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam) +static INT_PTR CALLBACK MainSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam) { - long wStyle; + // 64ビット対応 +// long wStyle; + LONG_PTR wStyle; char Tmp[FMAX_PATH+1]; NMHDR *pnmhdr; @@ -1662,17 +1767,25 @@ static BOOL CALLBACK MainSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LP if(SendDlgItemMessage(hDlg, HSET_ANONYMOUS, BM_GETCHECK, 0, 0) == 1) { SendDlgItemMessage(hDlg, HSET_USER, WM_SETTEXT, 0, (LPARAM)"anonymous"); - wStyle = GetWindowLong(GetDlgItem(hDlg, HSET_PASS), GWL_STYLE); + // 64ビット対応 +// wStyle = GetWindowLong(GetDlgItem(hDlg, HSET_PASS), GWL_STYLE); + wStyle = GetWindowLongPtr(GetDlgItem(hDlg, HSET_PASS), GWL_STYLE); wStyle &= ~ES_PASSWORD; - SetWindowLong(GetDlgItem(hDlg, HSET_PASS), GWL_STYLE, wStyle); + // 64ビット対応 +// SetWindowLong(GetDlgItem(hDlg, HSET_PASS), GWL_STYLE, wStyle); + SetWindowLongPtr(GetDlgItem(hDlg, HSET_PASS), GWL_STYLE, wStyle); SendDlgItemMessage(hDlg, HSET_PASS, WM_SETTEXT, 0, (LPARAM)UserMailAdrs); } else { SendDlgItemMessage(hDlg, HSET_USER, WM_SETTEXT, 0, (LPARAM)""); - wStyle = GetWindowLong(GetDlgItem(hDlg, HSET_PASS), GWL_STYLE); + // 64ビット対応 +// wStyle = GetWindowLong(GetDlgItem(hDlg, HSET_PASS), GWL_STYLE); + wStyle = GetWindowLongPtr(GetDlgItem(hDlg, HSET_PASS), GWL_STYLE); wStyle |= ES_PASSWORD; - SetWindowLong(GetDlgItem(hDlg, HSET_PASS), GWL_STYLE, wStyle); + // 64ビット対応 +// SetWindowLong(GetDlgItem(hDlg, HSET_PASS), GWL_STYLE, wStyle); + SetWindowLongPtr(GetDlgItem(hDlg, HSET_PASS), GWL_STYLE, wStyle); SendDlgItemMessage(hDlg, HSET_PASS, WM_SETTEXT, 0, (LPARAM)""); } break; @@ -1683,19 +1796,21 @@ static BOOL CALLBACK MainSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LP } -/*----- Šg’£Ý’èƒEƒCƒ“ƒhƒE‚̃R[ƒ‹ƒoƒbƒN -------------------------------------- +/*----- 拡張設定ウインドウのコールバック -------------------------------------- * * Parameter -* HWND hDlg : ƒEƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹ -* UINT message : ƒƒbƒZ[ƒW”ԍ† -* WPARAM wParam : ƒƒbƒZ[ƒW‚Ì WPARAM ˆø” -* LPARAM lParam : ƒƒbƒZ[ƒW‚Ì LPARAM ˆø” +* HWND hDlg : ウインドウハンドル +* UINT message : メッセージ番号 +* WPARAM wParam : メッセージの WPARAM 引数 +* LPARAM lParam : メッセージの LPARAM 引数 * * Return Value * BOOL TRUE/FALSE *----------------------------------------------------------------------------*/ -static BOOL CALLBACK AdvSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam) +// 64ビット対応 +//static BOOL CALLBACK AdvSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam) +static INT_PTR CALLBACK AdvSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam) { NMHDR *pnmhdr; char Tmp[20]; @@ -1732,6 +1847,11 @@ static BOOL CALLBACK AdvSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPA SendDlgItemMessage(hDlg, HSET_SECURITY, CB_SETCURSEL, TmpHost.Security, 0); SendDlgItemMessage(hDlg, HSET_INITCMD, EM_LIMITTEXT, INITCMD_LEN, 0); SendDlgItemMessage(hDlg, HSET_INITCMD, WM_SETTEXT, 0, (LPARAM)TmpHost.InitCmd); + // IPv6対応 + SendDlgItemMessage(hDlg, HSET_NETTYPE, CB_ADDSTRING, 0, (LPARAM)MSGJPN332); + SendDlgItemMessage(hDlg, HSET_NETTYPE, CB_ADDSTRING, 0, (LPARAM)MSGJPN333); + SendDlgItemMessage(hDlg, HSET_NETTYPE, CB_ADDSTRING, 0, (LPARAM)MSGJPN334); + SendDlgItemMessage(hDlg, HSET_NETTYPE, CB_SETCURSEL, TmpHost.NetType, 0); return(TRUE); case WM_NOTIFY: @@ -1748,6 +1868,8 @@ static BOOL CALLBACK AdvSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPA TmpHost.TimeZone = SendDlgItemMessage(hDlg, HSET_TIMEZONE, CB_GETCURSEL, 0, 0) - 12; TmpHost.Security = SendDlgItemMessage(hDlg, HSET_SECURITY, CB_GETCURSEL, 0, 0); SendDlgItemMessage(hDlg, HSET_INITCMD, WM_GETTEXT, INITCMD_LEN+1, (LPARAM)TmpHost.InitCmd); + // IPv6対応 + TmpHost.NetType = SendDlgItemMessage(hDlg, HSET_NETTYPE, CB_GETCURSEL, 0, 0); Apply = YES; break; @@ -1774,29 +1896,32 @@ static BOOL CALLBACK AdvSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPA } -/*----- •¶ŽšƒR[ƒhÝ’èƒEƒCƒ“ƒhƒE‚̃R[ƒ‹ƒoƒbƒN -------------------------------- +/*----- 文字コード設定ウインドウのコールバック -------------------------------- * * Parameter -* HWND hDlg : ƒEƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹ -* UINT message : ƒƒbƒZ[ƒW”ԍ† -* WPARAM wParam : ƒƒbƒZ[ƒW‚Ì WPARAM ˆø” -* LPARAM lParam : ƒƒbƒZ[ƒW‚Ì LPARAM ˆø” +* HWND hDlg : ウインドウハンドル +* UINT message : メッセージ番号 +* WPARAM wParam : メッセージの WPARAM 引数 +* LPARAM lParam : メッセージの LPARAM 引数 * * Return Value * BOOL TRUE/FALSE *----------------------------------------------------------------------------*/ -static BOOL CALLBACK CodeSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam) +// 64ビット対応 +//static BOOL CALLBACK CodeSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam) +static INT_PTR CALLBACK CodeSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam) { NMHDR *pnmhdr; - // UTF-8‘Ήž + // UTF-8対応 static const RADIOBUTTON KanjiButton[] = { { HSET_NO_CNV, KANJI_NOCNV }, { HSET_SJIS_CNV, KANJI_SJIS }, { HSET_JIS_CNV, KANJI_JIS }, { HSET_EUC_CNV, KANJI_EUC }, - { HSET_UTF8N_CNV, KANJI_UTF8N } + { HSET_UTF8N_CNV, KANJI_UTF8N }, + { HSET_UTF8BOM_CNV, KANJI_UTF8BOM } }; #define KANJIBUTTONS (sizeof(KanjiButton)/sizeof(RADIOBUTTON)) @@ -1807,7 +1932,7 @@ static BOOL CALLBACK CodeSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LP { HSET_FN_EUC_CNV, KANJI_EUC }, { HSET_FN_SMH_CNV, KANJI_SMB_HEX }, { HSET_FN_SMC_CNV, KANJI_SMB_CAP }, - { HSET_FN_UTF8N_CNV, KANJI_UTF8N } // UTF-8N‘Ήž + { HSET_FN_UTF8N_CNV, KANJI_UTF8N } // UTF-8対応 }; #define NAMEKANJIBUTTONS (sizeof(NameKanjiButton)/sizeof(RADIOBUTTON)) @@ -1844,15 +1969,16 @@ static BOOL CALLBACK CodeSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LP case WM_COMMAND : switch(GET_WM_COMMAND_ID(wParam, lParam)) { + case HSET_SJIS_CNV : case HSET_JIS_CNV : case HSET_EUC_CNV : EnableWindow(GetDlgItem(hDlg, HSET_HANCNV), TRUE); break; - // UTF-8‘Ήž + // UTF-8対応 case HSET_NO_CNV : - case HSET_SJIS_CNV : case HSET_UTF8N_CNV : + case HSET_UTF8BOM_CNV : EnableWindow(GetDlgItem(hDlg, HSET_HANCNV), FALSE); break; @@ -1865,7 +1991,7 @@ static BOOL CALLBACK CodeSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LP case HSET_FN_SJIS_CNV : case HSET_FN_SMH_CNV : case HSET_FN_SMC_CNV : - case HSET_FN_UTF8N_CNV : // UTF-8N‘Ήž + case HSET_FN_UTF8N_CNV : // UTF-8対応 EnableWindow(GetDlgItem(hDlg, HSET_FN_HANCNV), FALSE); break; } @@ -1875,19 +2001,21 @@ static BOOL CALLBACK CodeSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LP } -/*----- ƒ_ƒCƒAƒ‹ƒAƒbƒvÝ’èƒEƒCƒ“ƒhƒE‚̃R[ƒ‹ƒoƒbƒN ---------------------------- +/*----- ダイアルアップ設定ウインドウのコールバック ---------------------------- * * Parameter -* HWND hDlg : ƒEƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹ -* UINT message : ƒƒbƒZ[ƒW”ԍ† -* WPARAM wParam : ƒƒbƒZ[ƒW‚Ì WPARAM ˆø” -* LPARAM lParam : ƒƒbƒZ[ƒW‚Ì LPARAM ˆø” +* HWND hDlg : ウインドウハンドル +* UINT message : メッセージ番号 +* WPARAM wParam : メッセージの WPARAM 引数 +* LPARAM lParam : メッセージの LPARAM 引数 * * Return Value * BOOL TRUE/FALSE *----------------------------------------------------------------------------*/ -static BOOL CALLBACK DialupSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam) +// 64ビット対応 +//static BOOL CALLBACK DialupSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam) +static INT_PTR CALLBACK DialupSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam) { NMHDR *pnmhdr; @@ -1947,7 +2075,7 @@ static BOOL CALLBACK DialupSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, EnableWindow(GetDlgItem(hDlg, HSET_DIALENTRY), TRUE); EnableWindow(GetDlgItem(hDlg, HSET_DIALUSETHIS), TRUE); } - /* ‚±‚±‚Ébreak‚Í‚È‚¢ */ + /* ここにbreakはない */ case HSET_DIALUSETHIS : if(SendDlgItemMessage(hDlg, HSET_DIALUSETHIS, BM_GETCHECK, 0, 0) == 0) @@ -1962,19 +2090,21 @@ static BOOL CALLBACK DialupSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, } -/*----- ‚“xÝ’èƒEƒCƒ“ƒhƒE‚̃R[ƒ‹ƒoƒbƒN -------------------------------------- +/*----- 高度設定ウインドウのコールバック -------------------------------------- * * Parameter -* HWND hDlg : ƒEƒCƒ“ƒhƒEƒnƒ“ƒhƒ‹ -* UINT message : ƒƒbƒZ[ƒW”ԍ† -* WPARAM wParam : ƒƒbƒZ[ƒW‚Ì WPARAM ˆø” -* LPARAM lParam : ƒƒbƒZ[ƒW‚Ì LPARAM ˆø” +* HWND hDlg : ウインドウハンドル +* UINT message : メッセージ番号 +* WPARAM wParam : メッセージの WPARAM 引数 +* LPARAM lParam : メッセージの LPARAM 引数 * * Return Value * BOOL TRUE/FALSE *----------------------------------------------------------------------------*/ -static BOOL CALLBACK Adv2SettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam) +// 64ビット対応 +//static BOOL CALLBACK Adv2SettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam) +static INT_PTR CALLBACK Adv2SettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam) { NMHDR *pnmhdr; int Num; @@ -1989,6 +2119,10 @@ static BOOL CALLBACK Adv2SettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LP SendDlgItemMessage(hDlg, HSET_LISTCMD, BM_SETCHECK, TmpHost.ListCmdOnly, 0); if(TmpHost.ListCmdOnly == YES) EnableWindow(GetDlgItem(hDlg, HSET_NLST_R), FALSE); + // MLSD対応 + else + EnableWindow(GetDlgItem(hDlg, HSET_MLSDCMD), FALSE); + SendDlgItemMessage(hDlg, HSET_MLSDCMD, BM_SETCHECK, TmpHost.UseMLSD, 0); SendDlgItemMessage(hDlg, HSET_NLST_R, BM_SETCHECK, TmpHost.UseNLST_R, 0); SendDlgItemMessage(hDlg, HSET_FULLPATH, BM_SETCHECK, TmpHost.NoFullPath, 0); SendDlgItemMessage(hDlg, HSET_HOSTTYPE, CB_ADDSTRING, 0, (LPARAM)MSGJPN139); @@ -1999,8 +2133,15 @@ static BOOL CALLBACK Adv2SettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LP SendDlgItemMessage(hDlg, HSET_HOSTTYPE, CB_ADDSTRING, 0, (LPARAM)MSGJPN144); SendDlgItemMessage(hDlg, HSET_HOSTTYPE, CB_ADDSTRING, 0, (LPARAM)MSGJPN289); SendDlgItemMessage(hDlg, HSET_HOSTTYPE, CB_ADDSTRING, 0, (LPARAM)MSGJPN295); +#if defined(HAVE_TANDEM) + SendDlgItemMessage(hDlg, HSET_HOSTTYPE, CB_ADDSTRING, 0, (LPARAM)MSGJPN2000); +#endif SendDlgItemMessage(hDlg, HSET_HOSTTYPE, CB_SETCURSEL, TmpHost.HostType, 0); +#if defined(HAVE_TANDEM) + if(TmpHost.HostType == 2 || TmpHost.HostType == HTYPE_TANDEM) /* VAX or Tandem */ +#else if(TmpHost.HostType == 2) +#endif { EnableWindow(GetDlgItem(hDlg, HSET_NLST_R), FALSE); EnableWindow(GetDlgItem(hDlg, HSET_LISTCMD), FALSE); @@ -2016,6 +2157,8 @@ static BOOL CALLBACK Adv2SettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LP SendDlgItemMessage(hDlg, HSET_CHMOD_CMD, WM_GETTEXT, CHMOD_CMD_LEN+1, (LPARAM)TmpHost.ChmodCmd); SendDlgItemMessage(hDlg, HSET_LS_FNAME, WM_GETTEXT, NLST_NAME_LEN+1, (LPARAM)TmpHost.LsName); TmpHost.ListCmdOnly = SendDlgItemMessage(hDlg, HSET_LISTCMD, BM_GETCHECK, 0, 0); + // MLSD対応 + TmpHost.UseMLSD = SendDlgItemMessage(hDlg, HSET_MLSDCMD, BM_GETCHECK, 0, 0); TmpHost.UseNLST_R = SendDlgItemMessage(hDlg, HSET_NLST_R, BM_GETCHECK, 0, 0); TmpHost.NoFullPath = SendDlgItemMessage(hDlg, HSET_FULLPATH, BM_GETCHECK, 0, 0); TmpHost.HostType = SendDlgItemMessage(hDlg, HSET_HOSTTYPE, CB_GETCURSEL, 0, 0); @@ -2044,9 +2187,19 @@ static BOOL CALLBACK Adv2SettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LP case HSET_LISTCMD : if(SendDlgItemMessage(hDlg, HSET_LISTCMD, BM_GETCHECK, 0, 0) == 0) + // MLSD対応 +// EnableWindow(GetDlgItem(hDlg, HSET_NLST_R), TRUE); + { + EnableWindow(GetDlgItem(hDlg, HSET_MLSDCMD), FALSE); EnableWindow(GetDlgItem(hDlg, HSET_NLST_R), TRUE); + } else + // MLSD対応 +// EnableWindow(GetDlgItem(hDlg, HSET_NLST_R), FALSE); + { + EnableWindow(GetDlgItem(hDlg, HSET_MLSDCMD), TRUE); EnableWindow(GetDlgItem(hDlg, HSET_NLST_R), FALSE); + } break; case HSET_HOSTTYPE : @@ -2057,12 +2210,34 @@ static BOOL CALLBACK Adv2SettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LP EnableWindow(GetDlgItem(hDlg, HSET_LISTCMD), FALSE); EnableWindow(GetDlgItem(hDlg, HSET_FULLPATH), FALSE); } +#if defined(HAVE_TANDEM) + else if(Num == HTYPE_TANDEM) /* Tandem */ + { + /* Tandem を選択すると自動的に LIST にチェックをいれる */ + SendDlgItemMessage(hDlg, HSET_LISTCMD, BM_SETCHECK, 1, 0); + EnableWindow(GetDlgItem(hDlg, HSET_NLST_R), FALSE); + EnableWindow(GetDlgItem(hDlg, HSET_LISTCMD), FALSE); + EnableWindow(GetDlgItem(hDlg, HSET_FULLPATH), FALSE); + } + else + { + if(SendDlgItemMessage(hDlg, HSET_LISTCMD, BM_GETCHECK, 0, 0) == 0) { + EnableWindow(GetDlgItem(hDlg, HSET_NLST_R), TRUE); + EnableWindow(GetDlgItem(hDlg, HSET_LISTCMD), TRUE); + } else { + EnableWindow(GetDlgItem(hDlg, HSET_NLST_R), FALSE); + EnableWindow(GetDlgItem(hDlg, HSET_LISTCMD), TRUE); + } + EnableWindow(GetDlgItem(hDlg, HSET_FULLPATH), TRUE); + } +#else else { EnableWindow(GetDlgItem(hDlg, HSET_NLST_R), TRUE); EnableWindow(GetDlgItem(hDlg, HSET_LISTCMD), TRUE); EnableWindow(GetDlgItem(hDlg, HSET_FULLPATH), TRUE); } +#endif break; } return(TRUE); @@ -2071,3 +2246,177 @@ static BOOL CALLBACK Adv2SettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LP } +// 暗号化通信対応 +static INT_PTR CALLBACK CryptSettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam) +{ + NMHDR *pnmhdr; +// int Num; + + switch (iMessage) + { + case WM_INITDIALOG : + SendDlgItemMessage(hDlg, HSET_NO_ENCRYPTION, BM_SETCHECK, TmpHost.UseNoEncryption, 0); + if(IsOpenSSLLoaded()) + { + SendDlgItemMessage(hDlg, HSET_FTPES, BM_SETCHECK, TmpHost.UseFTPES, 0); + SendDlgItemMessage(hDlg, HSET_FTPIS, BM_SETCHECK, TmpHost.UseFTPIS, 0); + } + else + { + SendDlgItemMessage(hDlg, HSET_FTPES, BM_SETCHECK, BST_UNCHECKED, 0); + EnableWindow(GetDlgItem(hDlg, HSET_FTPES), FALSE); + SendDlgItemMessage(hDlg, HSET_FTPIS, BM_SETCHECK, BST_UNCHECKED, 0); + EnableWindow(GetDlgItem(hDlg, HSET_FTPIS), FALSE); + } + if(IsPuTTYLoaded()) + { + SendDlgItemMessage(hDlg, HSET_SFTP, BM_SETCHECK, TmpHost.UseSFTP, 0); + SendDlgItemMessage(hDlg, HSET_PRIVATE_KEY, WM_SETTEXT, 0, (LPARAM)TmpHost.PrivateKey); + } + else + { + SendDlgItemMessage(hDlg, HSET_SFTP, BM_SETCHECK, BST_UNCHECKED, 0); + EnableWindow(GetDlgItem(hDlg, HSET_SFTP), FALSE); + EnableWindow(GetDlgItem(hDlg, PKEY_FILE_BR), FALSE); + EnableWindow(GetDlgItem(hDlg, HSET_PRIVATE_KEY), FALSE); + } + return(TRUE); + + case WM_NOTIFY: + pnmhdr = (NMHDR FAR *)lParam; + switch(pnmhdr->code) + { + case PSN_APPLY : + TmpHost.UseNoEncryption = SendDlgItemMessage(hDlg, HSET_NO_ENCRYPTION, BM_GETCHECK, 0, 0); + if(IsOpenSSLLoaded()) + { + TmpHost.UseFTPES = SendDlgItemMessage(hDlg, HSET_FTPES, BM_GETCHECK, 0, 0); + TmpHost.UseFTPIS = SendDlgItemMessage(hDlg, HSET_FTPIS, BM_GETCHECK, 0, 0); + } + if(IsPuTTYLoaded()) + { + TmpHost.UseSFTP = SendDlgItemMessage(hDlg, HSET_SFTP, BM_GETCHECK, 0, 0); + SendDlgItemMessage(hDlg, HSET_PRIVATE_KEY, WM_GETTEXT, PRIVATE_KEY_LEN+1, (LPARAM)TmpHost.PrivateKey); + } + Apply = YES; + break; + + case PSN_RESET : + break; + + case PSN_HELP : + hHelpWin = HtmlHelp(NULL, AskHelpFilePath(), HH_HELP_CONTEXT, IDH_HELP_TOPIC_0000065); + break; + } + break; + } + return(FALSE); +} + +// 同時接続対応 +static INT_PTR CALLBACK Adv3SettingProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam) +{ + NMHDR *pnmhdr; +// int Num; + + // UTF-8対応 + static const RADIOBUTTON KanjiButton[] = { + { HSET_NO_CNV, KANJI_NOCNV }, + { HSET_SJIS_CNV, KANJI_SJIS }, + { HSET_JIS_CNV, KANJI_JIS }, + { HSET_EUC_CNV, KANJI_EUC }, + { HSET_UTF8N_CNV, KANJI_UTF8N }, + { HSET_UTF8BOM_CNV, KANJI_UTF8BOM } + }; + #define KANJIBUTTONS (sizeof(KanjiButton)/sizeof(RADIOBUTTON)) + + switch (iMessage) + { + case WM_INITDIALOG : + SendDlgItemMessage(hDlg, HSET_THREAD_COUNT, EM_LIMITTEXT, (WPARAM)1, 0); + SetDecimalText(hDlg, HSET_THREAD_COUNT, TmpHost.MaxThreadCount); + SendDlgItemMessage(hDlg, HSET_THREAD_COUNT_SPN, UDM_SETRANGE, 0, (LPARAM)MAKELONG(MAX_DATA_CONNECTION, 1)); + SendDlgItemMessage(hDlg, HSET_REUSE_SOCKET, BM_SETCHECK, TmpHost.ReuseCmdSkt, 0); + SendDlgItemMessage(hDlg, HSET_NOOP_INTERVAL, EM_LIMITTEXT, (WPARAM)3, 0); + SetDecimalText(hDlg, HSET_NOOP_INTERVAL, TmpHost.NoopInterval); + SendDlgItemMessage(hDlg, HSET_NOOP_INTERVAL_SPN, UDM_SETRANGE, 0, (LPARAM)MAKELONG(300, 0)); + SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_ADDSTRING, 0, (LPARAM)MSGJPN335); + SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_ADDSTRING, 0, (LPARAM)MSGJPN336); + SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_ADDSTRING, 0, (LPARAM)MSGJPN337); + SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_ADDSTRING, 0, (LPARAM)MSGJPN338); + if(TmpHost.TransferErrorNotify == YES) + SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_SETCURSEL, 0, 0); + else if(TmpHost.TransferErrorMode == EXIST_OVW) + SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_SETCURSEL, 1, 0); + else if(TmpHost.TransferErrorMode == EXIST_RESUME) + SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_SETCURSEL, 2, 0); + else if(TmpHost.TransferErrorMode == EXIST_IGNORE) + SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_SETCURSEL, 3, 0); + else + SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_SETCURSEL, 0, 0); + return(TRUE); + + case WM_NOTIFY: + pnmhdr = (NMHDR FAR *)lParam; + switch(pnmhdr->code) + { + case PSN_APPLY : + TmpHost.MaxThreadCount = GetDecimalText(hDlg, HSET_THREAD_COUNT); + CheckRange2(&TmpHost.MaxThreadCount, MAX_DATA_CONNECTION, 1); + TmpHost.ReuseCmdSkt = SendDlgItemMessage(hDlg, HSET_REUSE_SOCKET, BM_GETCHECK, 0, 0); + TmpHost.NoopInterval = GetDecimalText(hDlg, HSET_NOOP_INTERVAL); + CheckRange2(&TmpHost.NoopInterval, 300, 0); + switch(SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_GETCURSEL, 0, 0)) + { + case 0: + TmpHost.TransferErrorMode = EXIST_OVW; + TmpHost.TransferErrorNotify = YES; + break; + case 1: + TmpHost.TransferErrorMode = EXIST_OVW; + TmpHost.TransferErrorNotify = NO; + break; + case 2: + TmpHost.TransferErrorMode = EXIST_RESUME; + TmpHost.TransferErrorNotify = NO; + break; + case 3: + TmpHost.TransferErrorMode = EXIST_IGNORE; + TmpHost.TransferErrorNotify = NO; + break; + } + Apply = YES; + break; + + case PSN_RESET : + break; + + case PSN_HELP : + hHelpWin = HtmlHelp(NULL, AskHelpFilePath(), HH_HELP_CONTEXT, IDH_HELP_TOPIC_0000066); + break; + } + break; + } + return(FALSE); +} + +// 暗号化通信対応 +// ホストの暗号化設定を更新 +int SetHostExcryption(int Num, int UseNoEncryption, int UseFTPES, int UseFTPIS, int UseSFTP) +{ + int Sts; + HOSTLISTDATA *Pos; + + Sts = FFFTP_FAIL; + if((Num >= 0) && (Num < Hosts)) + { + Pos = GetNodeByNum(Num); + Pos->Set.UseNoEncryption = UseNoEncryption; + Pos->Set.UseFTPES = UseFTPES; + Pos->Set.UseFTPIS = UseFTPIS; + Pos->Set.UseSFTP = UseSFTP; + Sts = FFFTP_SUCCESS; + } + return(Sts); +} +