OSDN Git Service

Add support for linux-ftpd (untested).
[ffftp/ffftp.git] / common.h
index e9dea4d..bd7737e 100644 (file)
--- a/common.h
+++ b/common.h
 //#define VER_STR                                      "1.97b"\r
 //#define VER_NUM                                      1921            /* 設定バージョン */\r
 //#define PROGRAM_VERSION_NUM          1972            /* バージョン */\r
-#define VER_STR                                        "1.99"\r
-#define VER_NUM                                        1990            /* 設定バージョン */\r
-#define PROGRAM_VERSION_NUM            1990            /* バージョン */\r
+#define VER_STR                                        "1.98d"\r
+#define VER_NUM                                        1984            /* 設定バージョン */\r
+#define PROGRAM_VERSION_NUM            1984            /* バージョン */\r
 \r
 \r
-#define MYWEB_URL      "http://www2.biglobe.ne.jp/~sota/ffftp-qa.html"\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
 \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
 \r
 #define LIST_MELCOM            0x100   /* MELCOM80 */\r
 \r
 #define LIST_MASKFLG   0xFF\r
 \r
+// UTF-8対応\r
+#define LIST_RAW_NAME  0x80000000\r
+\r
 /* ファイル一覧情報例 ---------------\r
 \r
 *LIST_UNIX_10\r
@@ -666,6 +673,15 @@ 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
 ------------------------------------*/\r
 \r
 /*===== 接続ウインドウの形式 =====*/\r
@@ -687,9 +703,12 @@ LIST_UNIX_70
 #define KANJI_SMB_HEX  3               /* Samba-HEX */\r
 #define KANJI_SMB_CAP  4               /* Samba-CAP */\r
 #define KANJI_UTF8N            5               /* UTF-8 */\r
+// UTF-8対応\r
+#define KANJI_UTF8BOM          6               /* UTF-8 BOM */\r
 \r
 #define KANJI_NOCNV            -1              /* 漢字コード変換なし */\r
 \r
+// UTF-8対応\r
 #define KANJI_AUTO             -1\r
 \r
 /*===== サウンド =====*/\r
@@ -882,6 +901,11 @@ LIST_UNIX_70
 #define FEATURE_EPRT           0x00000004\r
 #define FEATURE_EPSV           0x00000008\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
 #define MAX_CERT_CACHE_HASH 256\r
@@ -913,6 +937,8 @@ typedef struct {
        int KanjiCode;                                          /* ホストの漢字コード (KANJI_xxx) */\r
        int KanaCnv;                                            /* 半角カナを全角に変換(YES/NO) */\r
        int NameKanjiCode;                                      /* ファイル名の漢字コード (KANJI_xxx) */\r
+       // UTF-8対応\r
+       int CurNameKanjiCode;                           /* 自動判別後のファイル名の漢字コード (KANJI_xxx) */\r
        int NameKanaCnv;                                        /* ファイル名の半角カナを全角に変換(YES/NO) */\r
        int Pasv;                                                       /* PASVモード (YES/NO) */\r
        int FireWall;                                           /* FireWallを使う (YES/NO) */\r
@@ -938,12 +964,20 @@ typedef struct {
        char PrivateKey[PRIVATE_KEY_LEN+1];     /* テキスト形式の秘密鍵 */\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 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
 } HOSTDATA;\r
 \r
 \r
@@ -998,10 +1032,16 @@ typedef struct historydata {
        char PrivateKey[PRIVATE_KEY_LEN+1];     /* テキスト形式の秘密鍵 */\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
        struct historydata *Next;\r
 } HISTORYDATA;\r
 \r
@@ -1171,9 +1211,11 @@ typedef struct {
        char Rsv;                               /* (予約) */\r
        char Type;                              /* アドレスのタイプ */\r
                                                        /* 以後(可変長部分) */\r
-       ulong AdrsInt;                  /* アドレス */\r
-       ushort Port;                    /* ポート */\r
-       char _dummy[2];                 /* dummy */\r
+       // IPv6対応\r
+//     ulong AdrsInt;                  /* アドレス */\r
+//     ushort Port;                    /* ポート */\r
+//     char _dummy[2];                 /* dummy */\r
+       char _dummy[255+1+2];   /* dummy */\r
 } SOCKS5REPLY;\r
 \r
 #define SOCKS5REPLY_SIZE 4     /* 最初の固定部分のサイズ */\r
@@ -1235,6 +1277,9 @@ int AskAutoExit(void);
 // 暗号化通信対応\r
 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
 /*===== filelist.c =====*/\r
 \r
@@ -1273,6 +1318,8 @@ FILELIST *SearchFileList(char *Fname, FILELIST *Base, int Caps);
 int Assume1900or2000(int Year);\r
 void SetFilter(int *CancelCheckWork);\r
 void doDeleteRemoteFile(void);\r
+// UTF-8対応\r
+int AnalyzeNameKanjiCode(int Num);\r
 \r
 \r
 /*===== toolmenu.c =====*/\r
@@ -1370,6 +1417,8 @@ void SetCurrentHost(int Num);
 void CopyDefaultHost(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
 \r
 /*===== connect.c =====*/\r
 \r
@@ -1404,7 +1453,13 @@ void DisconnectProc(void);
 void DisconnectSet(void);\r
 int AskConnecting(void);\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
+SOCKET connectsockIPv6(char *host, int port, char *PreMsg, int *CancelCheckWork);\r
 SOCKET GetFTPListenSocket(SOCKET ctrl_skt, int *CancelCheckWork);\r
+// IPv6対応\r
+SOCKET GetFTPListenSocketIPv4(SOCKET ctrl_skt, int *CancelCheckWork);\r
+SOCKET GetFTPListenSocketIPv6(SOCKET ctrl_skt, int *CancelCheckWork);\r
 int AskTryingConnect(void);\r
 // 同時接続対応\r
 //int SocksGet2ndBindReply(SOCKET Socket, SOCKET *Data);\r
@@ -1418,12 +1473,18 @@ int AskUseSFTP(void);
 char *AskPrivateKey(void);\r
 // 同時接続対応\r
 int AskMaxThreadCount(void);\r
+int AskReuseCmdSkt(void);\r
 // FEAT対応\r
 int AskHostFeature(void);\r
 // MLSD対応\r
 int AskUseMLSD(void);\r
 // IPv6対応\r
-int AskUseIPv6(void);\r
+int AskCurNetType(void);\r
+// 自動切断対策\r
+int AskNoopInterval(void);\r
+// 再転送対応\r
+int AskTransferErrorMode(void);\r
+int AskTransferErrorNotify(void);\r
 \r
 /*===== cache.c =====*/\r
 \r
@@ -1459,7 +1520,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
@@ -1472,6 +1535,8 @@ void ReformToVMSstylePathName(char *Path);
 #if defined(HAVE_OPENVMS)\r
 void ReformVMSDirName(char *DirName, int Flg);\r
 #endif\r
+// 自動切断対策\r
+void NoopProc(void);\r
 \r
 /*===== local.c =====*/\r
 \r
@@ -1622,8 +1687,12 @@ 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
 void SetYenTail(char *Str);\r
 void RemoveYenTail(char *Str);\r
 void SetSlashTail(char *Str);\r
@@ -1670,6 +1739,10 @@ int ConvertNum(int x, int Dir, const INTCONVTBL *Tbl, int Num);
 int MoveFileToTrashCan(char *Path);\r
 LONGLONG MakeLongLong(DWORD High, DWORD Low);\r
 char *MakeNumString(LONGLONG Num, char *Buf, BOOL Comma);\r
+// 異なるファイルが表示されるバグ修正\r
+char* MakeDistinguishableFileName(char* Out, char* In);\r
+// 環境依存の不具合対策\r
+char* GetAppTempPath(char* Buf);\r
 \r
 /*===== dlgsize.c =====*/\r
 \r
@@ -1711,7 +1784,10 @@ char *AskLocalFreeSpace(char *Path);
 \r
 int MakeSocketWin(HWND hWnd, HINSTANCE hInst);\r
 void DeleteSocketWin(void);\r
-struct hostent *do_gethostbyname(const char *Name, char *Buf, int Len, int *CancelCheckWork);\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
+struct hostent *do_gethostbynameIPv6(const char *Name, char *Buf, int Len, int *CancelCheckWork);\r
 SOCKET do_socket(int af, int type, int protocol);\r
 int do_connect(SOCKET s, const struct sockaddr *name, int namelen, int *CancelCheckWork);\r
 int do_closesocket(SOCKET s);\r