OSDN Git Service

Modify documents.
[ffftp/ffftp.git] / common.h
index aa0f07b..3ae9e2b 100644 (file)
--- a/common.h
+++ b/common.h
@@ -30,7 +30,7 @@
 #define __COMMON_H__\r
 \r
 #include "config.h"\r
-#ifndef ENGLISH\r
+#ifndef FFFTP_ENGLISH\r
 #include "mesg-jpn.h"\r
 #else\r
 #include "mesg-eng.h"\r
 //#define VER_STR                                      "1.97b"\r
 //#define VER_NUM                                      1921            /* 設定バージョン */\r
 //#define PROGRAM_VERSION_NUM          1972            /* バージョン */\r
+// 64ビット対応\r
+#ifdef _WIN64\r
+#define VER_STR                                        "1.99 64bit"\r
+#else\r
 #define VER_STR                                        "1.99"\r
+#endif\r
 #define VER_NUM                                        1990            /* 設定バージョン */\r
 #define PROGRAM_VERSION_NUM            1990            /* バージョン */\r
+// ソフトウェア自動更新\r
+// リリースバージョンはリリース予定年(10進数4桁)+月(2桁)+日(2桁)+通し番号(0スタート2桁)とする\r
+// 2014年7月31日中の30個目のリリースは2014073129\r
+#define RELEASE_VERSION_NUM            2016032000      /* リリースバージョン */\r
 \r
 \r
 // SourceForge.JPによるフォーク\r
 //#define MYWEB_URL    "http://www2.biglobe.ne.jp/~sota/ffftp-qa.html"\r
-#define MYWEB_URL      "http://sourceforge.jp/projects/ffftp/"\r
+#define MYWEB_URL      "https://osdn.jp/projects/ffftp/forums/"\r
 \r
 \r
 \r
 #define WM_REFRESH_LOCAL_FLG   (WM_USER+7)\r
 #define WM_REFRESH_REMOTE_FLG  (WM_USER+8)\r
 \r
+// UPnP対応\r
+#define WM_ADDPORTMAPPING      (WM_USER+9)\r
+#define WM_REMOVEPORTMAPPING   (WM_USER+10)\r
+\r
 /*===== ホスト番号 =====*/\r
 /* ホスト番号は 0~ の値を取る */\r
 \r
 #define CHMOD_CMD_NOR  "SITE CHMOD"    /* 属性変更コマンド */\r
 #define PORT_NOR               21                              /* ポート番号 */\r
 #define LS_FNAME               "-alL"                  /* NLSTに付けるもの */\r
+#if defined(HAVE_TANDEM)\r
+#define DEF_PRIEXT             4                               /* Primary Extents の初期値 */\r
+#define DEF_SECEXT             28                              /* Secondary Extents の初期値 */\r
+#define DEF_MAXEXT             978                             /* Max Extents の初期値 */\r
+#endif\r
 \r
 /*===== 同じ名前のファイルがあった時の処理 =====*/\r
 \r
 #define EXIST_IGNORE   3               /* 無視 */\r
 #define EXIST_UNIQUE   4               /* ホストが名前を付ける */\r
 #define EXIST_ABORT            5               /* 全て中止 */\r
+// 同じ名前のファイルの処理方法追加\r
+#define EXIST_LARGE            6               /* 大きければ上書き */\r
 \r
 /*===== ファイル名の比較モード =====*/\r
 \r
 \r
 #define SELECT_ALL             0               /* 全選択 */\r
 #define SELECT_REGEXP  1               /* 検索式を入力して選択 */\r
+// ローカル側自動更新\r
+#define SELECT_LIST            2               /* リストに含まれるファイルを選択 */\r
 \r
 /*===== 検索方法 =====*/\r
 \r
 #define LIST_UNIX_73   45              /* UNIX 73 */\r
 #define LIST_UNIX_74   46              /* UNIX 74 */\r
 #define LIST_UNIX_75   47              /* UNIX 75 */\r
+// linux-ftpd\r
+#define LIST_UNIX_16   48              /* UNIX 16 */\r
 // MLSD対応\r
-#define LIST_MLSD              48\r
+#define LIST_MLSD              49\r
+#if defined(HAVE_TANDEM)\r
+#define LIST_TANDEM            50              /* HP NonStop Server */\r
+#endif\r
+// uClinux\r
+#define LIST_UNIX_17   51              /* UNIX 17 */\r
+// Windows Server 2008 R2\r
+#define LIST_DOS_5             52              /* MS-DOS 5 */\r
 \r
 #define LIST_MELCOM            0x100   /* MELCOM80 */\r
 \r
@@ -671,6 +702,40 @@ LIST_UNIX_70
      61191    Aug-30-2002  17:30:38   FILENAME.C        \r
 \r
 \r
+// linux-ftpd\r
+*LIST_UNIX_16\r
+       0          1   2     3      4    5          6     7\r
+       -------------------------------------------------------\r
+       合計 12345\r
+       drwxr-x--- 2 root root      4096 2011-12-06 23:39 .\r
+       drwxr-x--- 3 root root      4096 2011-12-06 23:39 ..\r
+       -rw-r----- 1 root root       251 2011-12-06 23:39 .hoge\r
+\r
+// uClinux\r
+*LIST_UNIX_17\r
+       0          1 2 3 4   5\r
+       -------------------------------------------------------\r
+       -rw-r--r-- 1 0 0 100 services\r
+       lrwxrwxrwx 1 0 0 20 resolv.conf -> /var/run/resolv.conf\r
+       drwxr-sr-x 1 0 0 0 rc.d\r
+       -rw-r--r-- 1 0 0 290 rc\r
+       -rw-r--r-- 1 0 0 34 passwd\r
+       lrwxrwxrwx 1 0 0 18 inittab -> ../var/tmp/inittab\r
+\r
+// Windows Server 2008 R2\r
+*LIST_DOS_5\r
+       0          1       2     3\r
+       -------------------------------------------------------\r
+       02-05-2013 09:45AM <DIR> TEST\r
+       01-28-2013 03:54PM 2847 DATA.TXT\r
+\r
+*LIST_TANDEM\r
+        0             1               2    3         4        5       6\r
+       ---------------------------------------------------------------\r
+       File         Code             EOF  Last Modification    Owner  RWEP\r
+       EMSACSTM      101             146  18-Sep-00 09:03:37 170,175 "nunu"\r
+       TACLCSTM   O  101             101  4-Mar-01  23:50:06 255,255 "oooo"\r
+\r
 ------------------------------------*/\r
 \r
 /*===== 接続ウインドウの形式 =====*/\r
@@ -694,6 +759,8 @@ LIST_UNIX_70
 #define KANJI_UTF8N            5               /* UTF-8 */\r
 // UTF-8対応\r
 #define KANJI_UTF8BOM          6               /* UTF-8 BOM */\r
+// UTF-8 HFS+対応\r
+#define KANJI_UTF8HFSX         7               /* UTF-8 HFS+ */\r
 \r
 #define KANJI_NOCNV            -1              /* 漢字コード変換なし */\r
 \r
@@ -751,23 +818,46 @@ LIST_UNIX_70
 #define        HTYPE_STRATUS   5               /* Stratus */\r
 #define        HTYPE_AGILENT   6               /* Agilent Logic analyzer */\r
 #define        HTYPE_SHIBASOKU 7               /* Shibasoku LSI test system */\r
+#if defined(HAVE_TANDEM)\r
+#define HTYPE_TANDEM   8               /* HP NonStop Server */\r
+#endif\r
 \r
 /*===== コマンドラインオプション =====*/\r
 \r
-#define OPT_MIRROR             0x0001  /* ミラーリングアップロードを行う */\r
-#define OPT_FORCE              0x0002  /* ミラーリング開始の確認をしない */\r
-#define OPT_QUIT               0x0004  /* 終了後プログラム終了 */\r
-#define OPT_EUC                        0x0008  /* 漢字コードはEUC */\r
-#define OPT_JIS                        0x0010  /* 漢字コードはJIS */\r
-#define OPT_ASCII              0x0020  /* アスキー転送モード */\r
-#define OPT_BINARY             0x0040  /* バイナリ転送モード */\r
-#define OPT_AUTO               0x0080  /* 自動判別 */\r
-#define OPT_KANA               0x0100  /* 半角かなをそのまま通す */\r
-#define OPT_EUC_NAME   0x0200  /* ファイル名はEUC */\r
-#define OPT_JIS_NAME   0x0400  /* ファイル名はJIS */\r
-#define OPT_MIRRORDOWN 0x0800  /* ミラーリングダウンロードを行う */\r
-#define OPT_SAVEOFF            0x1000  /* 設定の保存を中止する */\r
-#define OPT_SAVEON             0x2000  /* 設定の保存を再開する */\r
+//#define OPT_MIRROR           0x0001  /* ミラーリングアップロードを行う */\r
+//#define OPT_FORCE            0x0002  /* ミラーリング開始の確認をしない */\r
+//#define OPT_QUIT             0x0004  /* 終了後プログラム終了 */\r
+//#define OPT_EUC                      0x0008  /* 漢字コードはEUC */\r
+//#define OPT_JIS                      0x0010  /* 漢字コードはJIS */\r
+//#define OPT_ASCII            0x0020  /* アスキー転送モード */\r
+//#define OPT_BINARY           0x0040  /* バイナリ転送モード */\r
+//#define OPT_AUTO             0x0080  /* 自動判別 */\r
+//#define OPT_KANA             0x0100  /* 半角かなをそのまま通す */\r
+//#define OPT_EUC_NAME 0x0200  /* ファイル名はEUC */\r
+//#define OPT_JIS_NAME 0x0400  /* ファイル名はJIS */\r
+//#define OPT_MIRRORDOWN       0x0800  /* ミラーリングダウンロードを行う */\r
+//#define OPT_SAVEOFF          0x1000  /* 設定の保存を中止する */\r
+//#define OPT_SAVEON           0x2000  /* 設定の保存を再開する */\r
+#define OPT_MIRROR             0x00000001      /* ミラーリングアップロードを行う */\r
+#define OPT_FORCE              0x00000002      /* ミラーリング開始の確認をしない */\r
+#define OPT_QUIT               0x00000004      /* 終了後プログラム終了 */\r
+#define OPT_EUC                        0x00000008      /* 漢字コードはEUC */\r
+#define OPT_JIS                        0x00000010      /* 漢字コードはJIS */\r
+#define OPT_ASCII              0x00000020      /* アスキー転送モード */\r
+#define OPT_BINARY             0x00000040      /* バイナリ転送モード */\r
+#define OPT_AUTO               0x00000080      /* 自動判別 */\r
+#define OPT_KANA               0x00000100      /* 半角かなをそのまま通す */\r
+#define OPT_EUC_NAME   0x00000200      /* ファイル名はEUC */\r
+#define OPT_JIS_NAME   0x00000400      /* ファイル名はJIS */\r
+#define OPT_MIRRORDOWN 0x00000800      /* ミラーリングダウンロードを行う */\r
+#define OPT_SAVEOFF            0x00001000      /* 設定の保存を中止する */\r
+#define OPT_SAVEON             0x00002000      /* 設定の保存を再開する */\r
+// UTF-8対応\r
+#define OPT_SJIS               0x00004000      /* 漢字コードはShift_JIS */\r
+#define OPT_UTF8N              0x00008000      /* 漢字コードはUTF-8 */\r
+#define OPT_UTF8BOM            0x00010000      /* 漢字コードはUTF-8 BOM */\r
+#define OPT_SJIS_NAME  0x00020000      /* ファイル名はShift_JIS */\r
+#define OPT_UTF8N_NAME 0x00040000      /* ファイル名はUTF-8 */\r
 \r
 /*===== ホストのヒストリ =====*/\r
 \r
@@ -889,6 +979,15 @@ LIST_UNIX_70
 // IPv6対応\r
 #define FEATURE_EPRT           0x00000004\r
 #define FEATURE_EPSV           0x00000008\r
+// ホスト側の日時取得\r
+#define FEATURE_MDTM           0x00000010\r
+// ホスト側の日時設定\r
+#define FEATURE_MFMT           0x00000020\r
+\r
+// IPv6対応\r
+#define NTYPE_AUTO                     0               /* 自動 */\r
+#define NTYPE_IPV4                     1               /* TCP/IPv4 */\r
+#define NTYPE_IPV6                     2               /* TCP/IPv6 */\r
 \r
 // 暗号化通信対応\r
 // REG_SECT_MAXの値を加味する必要がある\r
@@ -946,16 +1045,25 @@ typedef struct {
        int UseFTPIS;                                           /* FTPISで接続する (YES/NO) */\r
        int UseSFTP;                                            /* SFTPで接続する (YES/NO) */\r
        char PrivateKey[PRIVATE_KEY_LEN+1];     /* テキスト形式の秘密鍵 */\r
+       int NoWeakEncryption;                           /* 弱い暗号を拒否 (YES/NO) */\r
        // 同時接続対応\r
        int MaxThreadCount;                                     /* 同時接続数 */\r
        int ReuseCmdSkt;                                        /* メインウィンドウのソケットを再利用する (YES/NO) */\r
+       int NoDisplayUI;                                        /* UIを表示しない (YES/NO) */\r
        // FEAT対応\r
        int Feature;                                            /* 利用可能な機能のフラグ (FEATURE_xxx) */\r
        // MLSD対応\r
        int UseMLSD;                                            /* "MLSD"コマンドを使用する */\r
        // IPv6対応\r
-       int InetFamily;                                         /* IPv6接続かどうか (AF_INET/AF_INET6) */\r
-       int UseIPv6;                                            /* IPv6接続を許可しEPRT/EPSVコマンドを使用する */\r
+       int NetType;                                            /* ネットワークの種類 (NTYPE_xxx) */\r
+       int CurNetType;                                         /* 接続中のネットワークの種類 (NTYPE_xxx) */\r
+       // 自動切断対策\r
+       int NoopInterval;                                       /* 無意味なコマンドを送信する間隔(秒数、0で無効)*/\r
+       // 再転送対応\r
+       int TransferErrorMode;                          /* 転送エラー時の処理 (EXIST_xxx) */\r
+       int TransferErrorNotify;                        /* 転送エラー時に確認ダイアログを出すかどうか (YES/NO) */\r
+       // セッションあたりの転送量制限対策\r
+       int TransferErrorReconnect;                     /* 転送エラー時に再接続する (YES/NO) */\r
 } HOSTDATA;\r
 \r
 \r
@@ -1008,13 +1116,21 @@ typedef struct historydata {
        int UseFTPIS;                                           /* FTPISで接続する (YES/NO) */\r
        int UseSFTP;                                            /* SFTPで接続する (YES/NO) */\r
        char PrivateKey[PRIVATE_KEY_LEN+1];     /* テキスト形式の秘密鍵 */\r
+       int NoWeakEncryption;                           /* 弱い暗号を拒否 (YES/NO) */\r
        // 同時接続対応\r
        int MaxThreadCount;                                     /* 同時接続数 */\r
        int ReuseCmdSkt;                                        /* メインウィンドウのソケットを再利用する (YES/NO) */\r
        // MLSD対応\r
        int UseMLSD;                                            /* "MLSD"コマンドを使用する */\r
        // IPv6対応\r
-       int UseIPv6;                                            /* IPv6接続を許可しEPRT/EPSVコマンドを使用する */\r
+       int NetType;                                            /* ネットワークの種類 (NTYPE_xxx) */\r
+       // 自動切断対策\r
+       int NoopInterval;                                       /* NOOPコマンドを送信する間隔(秒数、0で無効)*/\r
+       // 再転送対応\r
+       int TransferErrorMode;                          /* 転送エラー時の処理 (EXIST_xxx) */\r
+       int TransferErrorNotify;                        /* 転送エラー時に確認ダイアログを出すかどうか (YES/NO) */\r
+       // セッションあたりの転送量制限対策\r
+       int TransferErrorReconnect;                     /* 転送エラー時に再接続する (YES/NO) */\r
        struct historydata *Next;\r
 } HISTORYDATA;\r
 \r
@@ -1039,8 +1155,16 @@ typedef struct transpacket {
        int KanjiCodeDesired;                   /* ローカルの漢字コード (KANJI_xxx) */\r
        int KanaCnv;                                    /* 半角カナを全角に変換(YES/NO) */\r
        int Mode;                                               /* 転送モード (EXIST_xxx) */\r
+#if defined(HAVE_TANDEM)\r
+       int FileCode;                                   /* ファイルコード */\r
+       int PriExt;                                             /* Primary Extents */\r
+       int SecExt;                                             /* Secondary Extents */\r
+       int MaxExt;                                             /* Max Extents */\r
+#endif\r
        HWND hWndTrans;                                 /* 転送中ダイアログのウインドウハンドル */\r
        int Abort;                                              /* 転送中止フラグ (ABORT_xxx) */\r
+       // ミラーリング設定追加\r
+       int NoTransfer;\r
        // 同時接続対応\r
        int ThreadCount;\r
        struct transpacket *Next;\r
@@ -1058,6 +1182,8 @@ typedef struct filelist {
        FILETIME Time;                                  /* 時間(UTC) */\r
        char Owner[OWNER_NAME_LEN+1];   /* オーナ名 */\r
        char InfoExist;                                 /* ファイル一覧に存在した情報のフラグ (FINFO_xxx) */\r
+       // ファイルアイコン表示対応\r
+       int ImageId;                                    /* アイコン画像番号 */\r
        struct filelist *Next;\r
 } FILELIST;\r
 \r
@@ -1065,6 +1191,8 @@ typedef struct filelist {
 /*===== コード変換情報パケット =====*/\r
 \r
 typedef char * (*funcptr)(struct codeconvinfo *, char , char *);\r
+// UTF-8対応\r
+typedef int (*convptr)(struct codeconvinfo *);\r
 \r
 typedef struct codeconvinfo {\r
        char *Str;                      /* 文字列 */\r
@@ -1079,8 +1207,11 @@ typedef struct codeconvinfo {
        char KanjiFst;          /* 漢字コード1バイト目保存用 (内部処理用ワーク) */\r
        char KanaPrev;          /* 半角カタカナ保存用 (内部処理用ワーク) */\r
        funcptr KanaProc;       /* 半角カタカナ処理ルーチン (内部処理用ワーク) */\r
-       char EscUTF8[8];\r
-       int EscUTF8Len;\r
+       // UTF-8対応\r
+       char EscUTF8[16];       /* エスケープシーケンス文字数 (0~) (内部処理用ワーク) */\r
+       int EscUTF8Len;         /* エスケープシーケンス文字保存用 (内部処理用ワーク) */\r
+       int EscFlush;           /* 残り情報を出力 (YES/NO) */\r
+       convptr FlushProc;      /* 残り情報処理ルーチン (内部処理用ワーク) */\r
 } CODECONVINFO;\r
 \r
 \r
@@ -1207,9 +1338,13 @@ typedef struct {
 /*===== ダイアログボックス変更処理用 =====*/\r
 \r
 typedef struct {\r
-       int HorMoveList[10];    /* 水平に動かす部品のリスト */\r
-       int VarMoveList[10];    /* 垂直に動かす部品のリスト */\r
-       int ResizeList[10];             /* サイズ変更する部品のリスト */\r
+       // ホスト共通設定機能\r
+//     int HorMoveList[10];    /* 水平に動かす部品のリスト */\r
+//     int VarMoveList[10];    /* 垂直に動かす部品のリスト */\r
+//     int ResizeList[10];             /* サイズ変更する部品のリスト */\r
+       int HorMoveList[16];    /* 水平に動かす部品のリスト */\r
+       int VarMoveList[16];    /* 垂直に動かす部品のリスト */\r
+       int ResizeList[16];             /* サイズ変更する部品のリスト */\r
        SIZE MinSize;                   /* 最少サイズ */\r
        SIZE CurSize;                   /* 現在のサイズ */\r
 } DIALOGSIZE;\r
@@ -1223,6 +1358,23 @@ typedef struct {
 } INTCONVTBL;\r
 \r
 \r
+// UPnP対応\r
+typedef struct\r
+{\r
+       int r;\r
+       HANDLE h;\r
+       char* Adrs;\r
+       int Port;\r
+       char* ExtAdrs;\r
+} ADDPORTMAPPINGDATA;\r
+\r
+typedef struct\r
+{\r
+       int r;\r
+       HANDLE h;\r
+       int Port;\r
+} REMOVEPORTMAPPINGDATA;\r
+\r
 /*=================================================\r
 *              プロトタイプ\r
 *=================================================*/\r
@@ -1251,6 +1403,23 @@ int AskAutoExit(void);
 BOOL __stdcall SSLTimeoutCallback(BOOL* pbAborted);\r
 BOOL __stdcall SSLConfirmCallback(BOOL* pbAborted, BOOL bVerified, LPCSTR Certificate, LPCSTR CommonName);\r
 BOOL LoadSSLRootCAFile();\r
+// マルチコアCPUの特定環境下でファイル通信中にクラッシュするバグ対策\r
+BOOL IsMainThread();\r
+// ポータブル版判定\r
+void CheckPortableVersion();\r
+int AskPortableVersion(void);\r
+// 全設定暗号化対応\r
+int Restart();\r
+void Terminate();\r
+// タスクバー進捗表示\r
+int LoadTaskbarList3();\r
+void FreeTaskbarList3();\r
+int IsTaskbarList3Loaded();\r
+void UpdateTaskbarProgress();\r
+// 高DPI対応\r
+int AskToolWinHeight(void);\r
+// ソフトウェア自動更新\r
+void UpdateSoftware(int Async, int NoError, int NoConfirm);\r
 \r
 /*===== filelist.c =====*/\r
 \r
@@ -1263,7 +1432,9 @@ void SetListViewType(void);
 void GetRemoteDirForWnd(int Mode, int *CancelCheckWork);\r
 void GetLocalDirForWnd(void);\r
 void ReSortDispList(int Win, int *CancelCheckWork);\r
-void SelectFileInList(HWND hWnd, int Type);\r
+// ローカル側自動更新\r
+//void SelectFileInList(HWND hWnd, int Type);\r
+void SelectFileInList(HWND hWnd, int Type, FILELIST *Base);\r
 void FindFileInList(HWND hWnd, int Type);\r
 // void WildCard2RegExp(char *Str);\r
 int GetCurrentItem(int Win);\r
@@ -1271,6 +1442,9 @@ int GetItemCount(int Win);
 int GetSelectedCount(int Win);\r
 int GetFirstSelected(int Win, int All);\r
 int GetNextSelected(int Win, int Pos, int All);\r
+// ローカル側自動更新\r
+int GetHotSelected(int Win, char *Fname);\r
+int SetHotSelected(int Win, char *Fname);\r
 int FindNameNode(int Win, char *Name);\r
 void GetNodeName(int Win, int Pos, char *Buf, int Max);\r
 int GetNodeTime(int Win, int Pos, FILETIME *Buf);\r
@@ -1280,7 +1454,9 @@ int GetNodeType(int Win, int Pos);
 void GetNodeOwner(int Win, int Pos, char *Buf, int Max);\r
 void EraseRemoteDirForWnd(void);\r
 double GetSelectedTotalSize(int Win);\r
-void MakeSelectedFileList(int Win, int Expand, int All, FILELIST **Base, int *CancelCheckWork);\r
+// ファイル一覧バグ修正\r
+//void MakeSelectedFileList(int Win, int Expand, int All, FILELIST **Base, int *CancelCheckWork);\r
+int MakeSelectedFileList(int Win, int Expand, int All, FILELIST **Base, int *CancelCheckWork);\r
 void MakeDroppedFileList(WPARAM wParam, char *Cur, FILELIST **Base);\r
 void MakeDroppedDir(WPARAM wParam, char *Cur);\r
 void AddRemoteTreeToFileList(int Num, char *Path, int IncDir, FILELIST **Base);\r
@@ -1326,6 +1502,7 @@ void SetLocalKanjiCode(int Type);
 void DispLocalKanjiCode(void);\r
 int AskLocalKanjiCode(void);\r
 void HideLocalKanjiButton(void);\r
+void SaveLocalKanjiCode(void);\r
 void SetHostKanaCnvImm(int Mode);\r
 void SetHostKanaCnv(void);\r
 void DispHostKanaCnv(void);\r
@@ -1386,10 +1563,14 @@ void DecomposeSortType(ulong Sort, int *LFSort, int *LDSort, int *RFSort, int *R
 int AskCurrentHost(void);\r
 void SetCurrentHost(int Num);\r
 void CopyDefaultHost(HOSTDATA *Set);\r
+// ホスト共通設定機能\r
+void ResetDefaultHost(void);\r
+void SetDefaultHost(HOSTDATA *Set);\r
+void CopyDefaultDefaultHost(HOSTDATA *Set);\r
 int SearchHostName(char *Name);\r
 void ImportFromWSFTP(void);\r
 // 暗号化通信対応\r
-int SetHostExcryption(int Num, int UseNoEncryption, int UseFTPES, int UseFTPIS, int UseSFTP);\r
+int SetHostEncryption(int Num, int UseNoEncryption, int UseFTPES, int UseFTPIS, int UseSFTP);\r
 \r
 /*===== connect.c =====*/\r
 \r
@@ -1423,6 +1604,11 @@ int AskShareProh(void);
 void DisconnectProc(void);\r
 void DisconnectSet(void);\r
 int AskConnecting(void);\r
+#if defined(HAVE_TANDEM)\r
+int AskRealHostType(void);\r
+int SetOSS(int wkOss);\r
+int AskOSS(void);\r
+#endif\r
 SOCKET connectsock(char *host, int port, char *PreMsg, int *CancelCheckWork);\r
 // IPv6対応\r
 SOCKET connectsockIPv4(char *host, int port, char *PreMsg, int *CancelCheckWork);\r
@@ -1450,8 +1636,14 @@ int AskHostFeature(void);
 // MLSD対応\r
 int AskUseMLSD(void);\r
 // IPv6対応\r
-int AskInetFamily(void);\r
-int AskUseIPv6(void);\r
+int AskCurNetType(void);\r
+// 自動切断対策\r
+int AskNoopInterval(void);\r
+// 再転送対応\r
+int AskTransferErrorMode(void);\r
+int AskTransferErrorNotify(void);\r
+// セッションあたりの転送量制限対策\r
+int AskErrorReconnect(void);\r
 \r
 /*===== cache.c =====*/\r
 \r
@@ -1471,12 +1663,12 @@ void CountPrevFfftpWindows(void);
 \r
 /*===== ftpproc.c =====*/\r
 \r
-void DownLoadProc(int ChName, int ForceFile, int All);\r
-void DirectDownLoadProc(char *Fname);\r
-void InputDownLoadProc(void);\r
+void DownloadProc(int ChName, int ForceFile, int All);\r
+void DirectDownloadProc(char *Fname);\r
+void InputDownloadProc(void);\r
 void MirrorDownloadProc(int Notify);\r
-void UpLoadListProc(int ChName, int All);\r
-void UpLoadDragProc(WPARAM wParam);\r
+void UploadListProc(int ChName, int All);\r
+void UploadDragProc(WPARAM wParam);\r
 void MirrorUploadProc(int Notify);\r
 void DeleteProc(void);\r
 void RenameProc(void);\r
@@ -1487,7 +1679,9 @@ void ChangeDirBmarkProc(int MarkID);
 void ChangeDirDirectProc(int Win);\r
 void ChangeDirDropFileProc(WPARAM wParam);\r
 void ChmodProc(void);\r
-BOOL CALLBACK ChmodDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
+// 64ビット対応\r
+//BOOL CALLBACK ChmodDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
+INT_PTR CALLBACK ChmodDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
 void SomeCmdProc(void);\r
 void CalcFileSizeProc(void);\r
 void DispCWDerror(HWND hWnd);\r
@@ -1500,6 +1694,10 @@ void ReformToVMSstylePathName(char *Path);
 #if defined(HAVE_OPENVMS)\r
 void ReformVMSDirName(char *DirName, int Flg);\r
 #endif\r
+// 自動切断対策\r
+void NoopProc(int Force);\r
+// 同時接続対応\r
+void AbortRecoveryProc(void);\r
 \r
 /*===== local.c =====*/\r
 \r
@@ -1529,11 +1727,22 @@ int DoSIZE(SOCKET cSkt, char *Path, LONGLONG *Size, int *CancelCheckWork);
 // 同時接続対応\r
 //int DoMDTM(char *Path, FILETIME *Time);\r
 int DoMDTM(SOCKET cSkt, char *Path, FILETIME *Time, int *CancelCheckWork);\r
-int DoQUOTE(char *CmdStr);\r
+// ホスト側の日時設定\r
+int DoMFMT(SOCKET cSkt, char *Path, FILETIME *Time, int *CancelCheckWork);\r
+// 同時接続対応\r
+//int DoQUOTE(char *CmdStr);\r
+int DoQUOTE(SOCKET cSkt, char *CmdStr, int *CancelCheckWork);\r
 SOCKET DoClose(SOCKET Sock);\r
-int DoQUIT(SOCKET ctrl_skt);\r
+// 同時接続対応\r
+//int DoQUIT(SOCKET ctrl_skt);\r
+int DoQUIT(SOCKET ctrl_skt, int *CancelCheckWork);\r
 int DoDirListCmdSkt(char *AddOpt, char *Path, int Num, int *CancelCheckWork);\r
-int CommandProcCmd(char *Reply, char *fmt, ...);\r
+#if defined(HAVE_TANDEM)\r
+void SwitchOSSProc(void);\r
+#endif\r
+// 同時接続対応\r
+//int CommandProcCmd(char *Reply, char *fmt, ...);\r
+int CommandProcCmd(char *Reply, int* CancelCheckWork, char *fmt, ...);\r
 // 同時接続対応\r
 //int CommandProcTrn(char *Reply, char *fmt, ...);\r
 int CommandProcTrn(SOCKET cSkt, char *Reply, int* CancelCheckWork, char *fmt, ...);\r
@@ -1555,14 +1764,20 @@ void EraseTmpTransFileList(TRANSPACKET **Base);
 int RemoveTmpTransFileListItem(TRANSPACKET **Base, int Num);\r
 \r
 void AddTransFileList(TRANSPACKET *Pkt);\r
+// バグ対策\r
+void AddNullTransFileList();\r
 void AppendTransFileList(TRANSPACKET *Pkt);\r
 void KeepTransferDialog(int Sw);\r
 int AskTransferNow(void);\r
 int AskTransferFileNum(void);\r
 void GoForwardTransWindow(void);\r
 void InitTransCurDir(void);\r
-int DoDownLoad(SOCKET cSkt, TRANSPACKET *Pkt, int DirList, int *CancelCheckWork);\r
+int DoDownload(SOCKET cSkt, TRANSPACKET *Pkt, int DirList, int *CancelCheckWork);\r
 int CheckPathViolation(TRANSPACKET *packet);\r
+// タスクバー進捗表示\r
+LONGLONG AskTransferSizeLeft(void);\r
+LONGLONG AskTransferSizeTotal(void);\r
+int AskTransferErrorDisplay(void);\r
 \r
 /*===== codecnv.c =====*/\r
 \r
@@ -1572,6 +1787,8 @@ int ConvTermCodeToCRLF(TERMCODECONVINFO *cInfo);
 \r
 void InitCodeConvInfo(CODECONVINFO *cInfo);\r
 int FlushRestData(CODECONVINFO *cInfo);\r
+// UTF-8対応\r
+int ConvNoConv(CODECONVINFO *cInfo);\r
 int ConvEUCtoSJIS(CODECONVINFO *cInfo);\r
 int ConvJIStoSJIS(CODECONVINFO *cInfo);\r
 int ConvSMBtoSJIS(CODECONVINFO *cInfo);\r
@@ -1581,8 +1798,15 @@ int ConvSJIStoJIS(CODECONVINFO *cInfo);
 int ConvSJIStoSMB_HEX(CODECONVINFO *cInfo);\r
 int ConvSJIStoSMB_CAP(CODECONVINFO *cInfo);\r
 int ConvSJIStoUTF8N(CODECONVINFO *cInfo); // UTF-8対応\r
+// UTF-8 HFS+対応\r
+int ConvUTF8NtoUTF8HFSX(CODECONVINFO *cInfo);\r
+int ConvUTF8HFSXtoUTF8N(CODECONVINFO *cInfo);\r
 void ConvAutoToSJIS(char *Text, int Pref);\r
 int CheckKanjiCode(char *Text, int Size, int Pref);\r
+// UTF-8対応\r
+int LoadUnicodeNormalizationDll();\r
+void FreeUnicodeNormalizationDll();\r
+int IsUnicodeNormalizationDllLoaded();\r
 \r
 /*===== option.c =====*/\r
 \r
@@ -1619,17 +1843,28 @@ char *JreGetStrMatchInfo(char *Str, UINT nStart);
 \r
 int CheckFname(char *str, char *regexp);\r
 \r
-/*===== registory.c =====*/\r
+/*===== registry.c =====*/\r
 \r
-void SaveRegistory(void);\r
-int LoadRegistory(void);\r
-void ClearRegistory(void);\r
+void SaveRegistry(void);\r
+int LoadRegistry(void);\r
+void ClearRegistry(void);\r
+// ポータブル版判定\r
+void ClearIni(void);\r
 void SetMasterPassword( const char* );\r
+// セキュリティ強化\r
+void GetMasterPassword(char*);\r
 int GetMasterPasswordStatus(void);\r
 int ValidateMasterPassword(void);\r
-DWORD LoadHideDriveListRegistory(void);\r
+DWORD LoadHideDriveListRegistry(void);\r
 void SaveSettingsToFile(void);\r
 int LoadSettingsFromFile(void);\r
+// ポータブル版判定\r
+int IsRegAvailable();\r
+int IsIniAvailable();\r
+// バージョン確認\r
+int ReadSettingsVersion();\r
+// FileZilla XML形式エクスポート対応\r
+void SaveSettingsToFileZillaXml();\r
 \r
 /*===== lvtips.c =====*/\r
 \r
@@ -1650,8 +1885,14 @@ int ConnectRas(int Dialup, int UseThis, int Notify, char *Name);
 /*===== misc.c =====*/\r
 \r
 int InputDialogBox(int Res, HWND hWnd, char *Title, char *Buf, int Max, int *Flg, int Help);\r
-BOOL CALLBACK ExeEscDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
-BOOL CALLBACK ExeEscTextDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
+// 64ビット対応\r
+//BOOL CALLBACK ExeEscDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
+INT_PTR CALLBACK ExeEscDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
+// 64ビット対応\r
+//BOOL CALLBACK ExeEscTextDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
+INT_PTR CALLBACK ExeEscTextDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
+// 全設定暗号化対応\r
+INT_PTR CALLBACK AnyButtonDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
 void SetYenTail(char *Str);\r
 void RemoveYenTail(char *Str);\r
 void SetSlashTail(char *Str);\r
@@ -1678,10 +1919,14 @@ void RectClientToScreen(HWND hWnd, RECT *Rect);
 int hex2bin(char Ch);\r
 int SplitUNCpath(char *unc, char *Host, char *Path, char *File, char *User, char *Pass, int *Port);\r
 int TimeString2FileTime(char *Time, FILETIME *Buf);\r
-void FileTime2TimeString(FILETIME *Time, char *Buf, int Mode, int InfoExist);\r
+// タイムスタンプのバグ修正\r
+//void FileTime2TimeString(FILETIME *Time, char *Buf, int Mode, int InfoExist);\r
+void FileTime2TimeString(FILETIME *Time, char *Buf, int Mode, int InfoExist, int ShowSeconds);\r
 void SpecificLocalFileTime2FileTime(FILETIME *Time, int TimeZone);\r
 int AttrString2Value(char *Str);\r
-void AttrValue2String(int Attr, char *Buf);\r
+// ファイルの属性を数字で表示\r
+//void AttrValue2String(int Attr, char *Buf);\r
+void AttrValue2String(int Attr, char *Buf, int ShowNumber);\r
 void FormatIniString(char *Str);\r
 int SelectFile(HWND hWnd, char *Fname, char *Title, char *Filters, char *Ext, int Flags, int Save);\r
 int SelectDir(HWND hWnd, char *Buf, int MaxLen);\r
@@ -1700,6 +1945,16 @@ LONGLONG MakeLongLong(DWORD High, DWORD Low);
 char *MakeNumString(LONGLONG Num, char *Buf, BOOL Comma);\r
 // 異なるファイルが表示されるバグ修正\r
 char* MakeDistinguishableFileName(char* Out, char* In);\r
+// 環境依存の不具合対策\r
+char* GetAppTempPath(char* Buf);\r
+#if defined(HAVE_TANDEM)\r
+void CalcExtentSize(TRANSPACKET *Pkt, LONGLONG Size);\r
+#endif\r
+// 高DPI対応\r
+void QueryDisplayDPI();\r
+int CalcPixelX(int x);\r
+int CalcPixelY(int y);\r
+HBITMAP ResizeBitmap(HBITMAP hBitmap, int UnitSizeX, int UnitSizeY, int ScaleNumerator, int ScaleDenominator);\r
 \r
 /*===== dlgsize.c =====*/\r
 \r
@@ -1714,6 +1969,8 @@ int Make6WordPass(int seq, char *seed, char *pass, int type, char *buf);
 /*===== tool.c =====*/\r
 \r
 void OtpCalcTool(void);\r
+// FTPS対応\r
+void TurnStatefulFTPFilter();\r
 \r
 /*===== history.c =====*/\r
 \r
@@ -1741,6 +1998,13 @@ char *AskLocalFreeSpace(char *Path);
 \r
 int MakeSocketWin(HWND hWnd, HINSTANCE hInst);\r
 void DeleteSocketWin(void);\r
+// ソケットにデータを付与\r
+int SetAsyncTableDataIPv4(SOCKET s, struct sockaddr_in* Host, struct sockaddr_in* Socks);\r
+int SetAsyncTableDataIPv6(SOCKET s, struct sockaddr_in6* Host, struct sockaddr_in6* Socks);\r
+int SetAsyncTableDataMapPort(SOCKET s, int Port);\r
+int GetAsyncTableDataIPv4(SOCKET s, struct sockaddr_in* Host, struct sockaddr_in* Socks);\r
+int GetAsyncTableDataIPv6(SOCKET s, struct sockaddr_in6* Host, struct sockaddr_in6* Socks);\r
+int GetAsyncTableDataMapPort(SOCKET s, int* Port);\r
 // IPv6対応\r
 //struct hostent *do_gethostbyname(const char *Name, char *Buf, int Len, int *CancelCheckWork);\r
 struct hostent *do_gethostbynameIPv4(const char *Name, char *Buf, int Len, int *CancelCheckWork);\r
@@ -1754,8 +2018,15 @@ int do_recv(SOCKET s, char *buf, int len, int flags, int *TimeOut, int *CancelCh
 int do_send(SOCKET s, const char *buf, int len, int flags, int *TimeOutErr, int *CancelCheckWork);\r
 // 同時接続対応\r
 void RemoveReceivedData(SOCKET s);\r
+// UPnP対応\r
+int LoadUPnP();\r
+void FreeUPnP();\r
+int IsUPnPLoaded();\r
+int AddPortMapping(char* Adrs, int Port, char* ExtAdrs);\r
+int RemovePortMapping(int Port);\r
 int CheckClosedAndReconnect(void);\r
-void CheckAllEventClosed(void);\r
+// 同時接続対応\r
+int CheckClosedAndReconnectTrnSkt(SOCKET *Skt, int *CancelCheckWork);\r
 \r
 /*===== updatebell.c =====*/\r
 \r