OSDN Git Service

Fix bugs of simultaneous connection.
[ffftp/ffftp.git] / bookmark.c
index 725c218..2a497ee 100644 (file)
@@ -1,6 +1,6 @@
-/*=============================================================================\r
+/*=============================================================================\r
 *\r
-*                                                              \83u\83b\83N\83}\81[\83N\r
+*                                                              ブックマーク\r
 *\r
 ===============================================================================\r
 / Copyright (C) 1997-2007 Sota. All rights reserved.\r
 / THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
 /============================================================================*/\r
 \r
-#define WINVER 0x400\r
+// UTF-8対応\r
+//#define WINVER 0x400\r
 \r
 #define        STRICT\r
+// IPv6対応\r
+#include <winsock2.h>\r
 #include <windows.h>\r
 #include <stdio.h>\r
 #include <stdlib.h>\r
 #include <htmlhelp.h>\r
 #include "helpid.h"\r
 \r
-// UTF-8\91Î\89\9e\r
+// UTF-8対応\r
 #undef __MBSWRAPPER_H__\r
 #include "mbswrapper.h"\r
 \r
 \r
-/*===== \83v\83\8d\83g\83^\83C\83v =====*/\r
+/*===== プロトタイプ =====*/\r
 \r
 static int AddBookMark(char *Path);\r
 static int GetBothPath(char *Str, char **Path1, char **Path2);\r
-static BOOL CALLBACK EditBookMarkProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
-static BOOL CALLBACK BookMarkEditCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
+// 64ビット対応\r
+//static BOOL CALLBACK EditBookMarkProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
+//static BOOL CALLBACK BookMarkEditCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
+static INT_PTR CALLBACK EditBookMarkProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
+static INT_PTR CALLBACK BookMarkEditCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
 \r
-/*===== \8aO\95\94\8eQ\8fÆ =====*/\r
+/*===== 外部参照 =====*/\r
 \r
 extern HWND hHelpWin;\r
 \r
-/* \90Ý\92è\92l */\r
-extern HFONT ListFont;         /* \83\8a\83X\83g\83{\83b\83N\83X\82Ì\83t\83H\83\93\83g */\r
+/* 設定値 */\r
+extern HFONT ListFont;         /* リストボックスのフォント */\r
 extern SIZE BmarkDlgSize;\r
 \r
 \r
 \r
-/*----- \83u\83b\83N\83}\81[\83N\82ð\83N\83\8a\83A\82·\82é ----------------------------------------------\r
+/*----- ブックマークをクリアする ----------------------------------------------\r
 *\r
 *      Parameter\r
-*              \82È\82µ\r
+*              なし\r
 *\r
 *      Return Value\r
-*              \82È\82µ\r
+*              なし\r
 *----------------------------------------------------------------------------*/\r
 \r
 void ClearBookMark(void)\r
@@ -87,13 +93,13 @@ void ClearBookMark(void)
 }\r
 \r
 \r
-/*----- \83J\83\8c\83\93\83g\83f\83B\83\8c\83N\83g\83\8a\82ð\83u\83b\83N\83}\81[\83N\82É\92Ç\89Á ------------------------------\r
+/*----- カレントディレクトリをブックマークに追加 ------------------------------\r
 *\r
 *      Parameter\r
-*              int Win : \83E\83C\83\93\83h\83E\94Ô\8d\86 (WIN_xxx)\r
+*              int Win : ウインドウ番号 (WIN_xxx)\r
 *\r
 *      Return Value\r
-*              \82È\82µ\r
+*              なし\r
 *----------------------------------------------------------------------------*/\r
 \r
 void AddCurDirToBookMark(int Win)\r
@@ -122,14 +128,14 @@ void AddCurDirToBookMark(int Win)
 }\r
 \r
 \r
-/*----- \83u\83b\83N\83}\81[\83N\82É\83p\83X\82ð\93o\98^\82·\82é ------------------------------------------\r
+/*----- ブックマークにパスを登録する ------------------------------------------\r
 *\r
 *      Parameter\r
-*              char *Path : \83p\83X\96¼\r
+*              char *Path : パス名\r
 *\r
 *      Return Value\r
-*              int \83X\83e\81[\83^\83X\r
-*                      SUCCESS/FAIL\r
+*              int ステータス\r
+*                      FFFTP_SUCCESS/FFFTP_FAIL\r
 *----------------------------------------------------------------------------*/\r
 \r
 static int AddBookMark(char *Path)\r
@@ -138,25 +144,25 @@ static int AddBookMark(char *Path)
        int MarkID;\r
        int Sts;\r
 \r
-       Sts = FAIL;\r
+       Sts = FFFTP_FAIL;\r
        hMenu = GetSubMenu(GetMenu(GetMainHwnd()), BMARK_SUB_MENU);\r
        MarkID = (GetMenuItemCount(hMenu) - DEFAULT_BMARK_ITEM) + MENU_BMARK_TOP;\r
        if(AppendMenu(hMenu, MF_STRING, MarkID, Path) == TRUE)\r
-               Sts = SUCCESS;\r
+               Sts = FFFTP_SUCCESS;\r
        return(Sts);\r
 }\r
 \r
 \r
-/*----- \8ew\92è\82ÌID\82ð\8e\9d\82Â\83u\83b\83N\83}\81[\83N\82Ì\83p\83X\82ð\95Ô\82· --------------------------------\r
+/*----- 指定のIDを持つブックマークのパスを返す --------------------------------\r
 *\r
 *      Parameter\r
 *              int MarkID : ID\r
-*              char *Local : \83\8d\81[\83J\83\8b\91¤\82Ì\83p\83X\82ð\95Ô\82·\83o\83b\83t\83@\r
-*              char *Remote : \83\8a\83\82\81[\83g\91¤\82Ì\83p\83X\82ð\95Ô\82·\83o\83b\83t\83@\r
-*              int Max : \83o\83b\83t\83@\82Ì\83T\83C\83Y\r
+*              char *Local : ローカル側のパスを返すバッファ\r
+*              char *Remote : リモート側のパスを返すバッファ\r
+*              int Max : バッファのサイズ\r
 *\r
 *      Return Value\r
-*              int \83X\83e\81[\83^\83X (BMARK_TYPE_xxx)\r
+*              int ステータス (BMARK_TYPE_xxx)\r
 *----------------------------------------------------------------------------*/\r
 \r
 int AskBookMarkText(int MarkID, char *Local, char *Remote, int Max)\r
@@ -206,18 +212,18 @@ int AskBookMarkText(int MarkID, char *Local, char *Remote, int Max)
 }\r
 \r
 \r
-/*----- \83u\83b\83N\83}\81[\83N\82Ì\95\8e\9a\97ñ\82©\82ç\82Q\82Â\82Ì\83p\83X\82ð\8eæ\82è\8fo\82· --------------------------\r
+/*----- ブックマークの文字列から2つのパスを取り出す --------------------------\r
 *\r
 *      Parameter\r
-*              char *Str : \95\8e\9a\97ñ\r
-*              char **Local : \83\8d\81[\83J\83\8b\91¤\82Ì\83p\83X\82Ì\90æ\93ª\82ð\95Ô\82·\83\8f\81[\83N\r
-*              char **Remote : \83\8a\83\82\81[\83g\91¤\82Ì\83p\83X\82Ì\90æ\93ª\82ð\95Ô\82·\83\8f\81[\83N\r
+*              char *Str : 文字列\r
+*              char **Local : ローカル側のパスの先頭を返すワーク\r
+*              char **Remote : リモート側のパスの先頭を返すワーク\r
 *\r
 *      Return Value\r
-*              int \83p\83X\82Ì\8cÂ\90\94 (1 or 2)\r
+*              int パスの個数 (1 or 2)\r
 *\r
 *      Note\r
-*              Str\82Ì\93à\97e\82ð\8f\91\82«\8a·\82¦\82é\r
+*              Strの内容を書き換える\r
 *----------------------------------------------------------------------------*/\r
 \r
 static int GetBothPath(char *Str, char **Path1, char **Path2)\r
@@ -239,13 +245,13 @@ static int GetBothPath(char *Str, char **Path1, char **Path2)
 }\r
 \r
 \r
-/*----- \83u\83b\83N\83}\81[\83N\82ð\90Ú\91±\92\86\82Ì\83z\83X\83g\83\8a\83X\83g\82É\95Û\91\82·\82é --------------------------\r
+/*----- ブックマークを接続中のホストリストに保存する --------------------------\r
 *\r
 *      Parameter\r
-*              \82È\82µ\r
+*              なし\r
 *\r
 *      Return Value\r
-*              \82È\82µ\r
+*              なし\r
 *----------------------------------------------------------------------------*/\r
 \r
 void SaveBookMark(void)\r
@@ -309,13 +315,13 @@ void SaveBookMark(void)
 }\r
 \r
 \r
-/*----- \83z\83X\83g\83\8a\83X\83g\82©\82ç\83u\83b\83N\83}\81[\83N\82ð\93Ç\82Ý\8d\9e\82Þ --------------------------------\r
+/*----- ホストリストからブックマークを読み込む --------------------------------\r
 *\r
 *      Parameter\r
-*              \82È\82µ\r
+*              なし\r
 *\r
 *      Return Value\r
-*              \82È\82µ\r
+*              なし\r
 *----------------------------------------------------------------------------*/\r
 \r
 void LoadBookMark(void)\r
@@ -335,8 +341,8 @@ void LoadBookMark(void)
                                Pos = Buf;\r
                                while(*Pos != NUL)\r
                                {\r
-                                       /* \8b\8c\83t\83H\81[\83}\83b\83g\82Ì\82½\82ß\82Ì\8f\88\97\9d */\r
-                                       /* \81i\83p\83X\82É"L"\82â"H"\82ª\82Â\82¢\82Ä\82È\82¢\95¨\81j */\r
+                                       /* 旧フォーマットのための処理 */\r
+                                       /* (パスに"L"や"H"がついてない物) */\r
                                        if((strncmp(Pos, BMARK_MARK_LOCAL, BMARK_MARK_LEN) != 0) &&\r
                                           (strncmp(Pos, BMARK_MARK_REMOTE, BMARK_MARK_LEN) != 0) &&\r
                                           (strncmp(Pos, BMARK_MARK_BOTH, BMARK_MARK_LEN) != 0))\r
@@ -357,13 +363,13 @@ void LoadBookMark(void)
 }\r
 \r
 \r
-/*----- \83u\83b\83N\83}\81[\83N\95Ò\8fW\83E\83C\83\93\83h\83E --------------------------------------------\r
+/*----- ブックマーク編集ウインドウ --------------------------------------------\r
 *\r
 *      Parameter\r
-*              \82È\82µ\r
+*              なし\r
 *\r
 *      Return Value\r
-*              \83X\83e\81[\83^\83X (YES=\8eÀ\8ds/NO=\8eæ\8fÁ)\r
+*              ステータス (YES=実行/NO=取消)\r
 *----------------------------------------------------------------------------*/\r
 \r
 int EditBookMark(void)\r
@@ -375,19 +381,21 @@ int EditBookMark(void)
 }\r
 \r
 \r
-/*----- \83u\83b\83N\83}\81[\83N\95Ò\8fW\83E\83C\83\93\83h\83E\82Ì\83R\81[\83\8b\83o\83b\83N ------------------------------\r
+/*----- ブックマーク編集ウインドウのコールバック ------------------------------\r
 *\r
 *      Parameter\r
-*              HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-*              UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-*              WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-*              LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+*              HWND hDlg : ウインドウハンドル\r
+*              UINT message : メッセージ番号\r
+*              WPARAM wParam : メッセージの WPARAM 引数\r
+*              LPARAM lParam : メッセージの LPARAM 引数\r
 *\r
 *      Return Value\r
 *              BOOL TRUE/FALSE\r
 *----------------------------------------------------------------------------*/\r
 \r
-static BOOL CALLBACK EditBookMarkProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
+// 64ビット対応\r
+//static BOOL CALLBACK EditBookMarkProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
+static INT_PTR CALLBACK EditBookMarkProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
 {\r
        HMENU hMenu;\r
        MENUITEMINFO mInfo;\r
@@ -429,7 +437,7 @@ static BOOL CALLBACK EditBookMarkProc(HWND hDlg, UINT message, WPARAM wParam, LP
                                case BMARK_JUMP :\r
                                        if((Cur = SendDlgItemMessage(hDlg, BMARK_LIST, LB_GETCURSEL, 0, 0)) != LB_ERR)\r
                                                PostMessage(GetMainHwnd(), WM_COMMAND, MAKEWPARAM(Cur+MENU_BMARK_TOP, 0), 0);\r
-                                       /* \82±\82±\82É break \82Í\82È\82¢ */\r
+                                       /* ここに break はない */\r
 \r
                                case IDCANCEL :\r
                                case IDOK :\r
@@ -519,19 +527,21 @@ static BOOL CALLBACK EditBookMarkProc(HWND hDlg, UINT message, WPARAM wParam, LP
 }\r
 \r
 \r
-/*----- \83u\83b\83N\83}\81[\83N\93ü\97Í\83_\83C\83A\83\8d\83O\82Ì\83R\81[\83\8b\83o\83b\83N ------------------------------\r
+/*----- ブックマーク入力ダイアログのコールバック ------------------------------\r
 *\r
 *      Parameter\r
-*              HWND hDlg : \83E\83C\83\93\83h\83E\83n\83\93\83h\83\8b\r
-*              UINT message : \83\81\83b\83Z\81[\83W\94Ô\8d\86\r
-*              WPARAM wParam : \83\81\83b\83Z\81[\83W\82Ì WPARAM \88ø\90\94\r
-*              LPARAM lParam : \83\81\83b\83Z\81[\83W\82Ì LPARAM \88ø\90\94\r
+*              HWND hDlg : ウインドウハンドル\r
+*              UINT message : メッセージ番号\r
+*              WPARAM wParam : メッセージの WPARAM 引数\r
+*              LPARAM lParam : メッセージの LPARAM 引数\r
 *\r
 *      Return Value\r
 *              BOOL TRUE/FALSE\r
 *----------------------------------------------------------------------------*/\r
 \r
-static BOOL CALLBACK BookMarkEditCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
+// 64ビット対応\r
+//static BOOL CALLBACK BookMarkEditCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
+static INT_PTR CALLBACK BookMarkEditCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)\r
 {\r
        static char *Str;\r
        char *Path1;\r
@@ -554,7 +564,7 @@ static BOOL CALLBACK BookMarkEditCallBack(HWND hDlg, UINT iMessage, WPARAM wPara
                                else if(strncmp(Str, BMARK_MARK_REMOTE, BMARK_MARK_LEN) == 0)\r
                                {\r
                                        SendDlgItemMessage(hDlg, BEDIT_REMOTE, WM_SETTEXT, 0, (LPARAM)Path1);\r
-                                       /* \83z\83X\83g\91¤\82É\83J\81[\83\\83\8b\82ð\88Ú\93®\82µ\82Ä\82¨\82­ */\r
+                                       /* ホスト側にカーソルを移動しておく */\r
                                        SetFocus(GetDlgItem(hDlg, BEDIT_REMOTE));\r
                                        SendDlgItemMessage(hDlg, BEDIT_REMOTE, EM_SETSEL, 0, -1);\r
                                        return(FALSE);\r
@@ -577,7 +587,7 @@ static BOOL CALLBACK BookMarkEditCallBack(HWND hDlg, UINT iMessage, WPARAM wPara
                                        {\r
                                                if(strlen(Remote) > 0)\r
                                                {\r
-                                                       /* \97¼\95û */\r
+                                                       /* 両方 */\r
                                                        strcpy(Str, BMARK_MARK_BOTH);\r
                                                        strcat(Str, Local);\r
                                                        strcat(Str, BMARK_SEP);\r
@@ -585,7 +595,7 @@ static BOOL CALLBACK BookMarkEditCallBack(HWND hDlg, UINT iMessage, WPARAM wPara
                                                }\r
                                                else\r
                                                {\r
-                                                       /* \83\8d\81[\83J\83\8b\82Ì\82Ý */\r
+                                                       /* ローカルのみ */\r
                                                        strcpy(Str, BMARK_MARK_LOCAL);\r
                                                        strcat(Str, Local);\r
                                                }\r
@@ -593,7 +603,7 @@ static BOOL CALLBACK BookMarkEditCallBack(HWND hDlg, UINT iMessage, WPARAM wPara
                                        }\r
                                        else if(strlen(Remote) > 0)\r
                                        {\r
-                                               /* \83z\83X\83g\82Ì\82Ý */\r
+                                               /* ホストのみ */\r
                                                strcpy(Str, BMARK_MARK_REMOTE);\r
                                                strcat(Str, Remote);\r
                                                EndDialog(hDlg, YES);\r