#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
-#define VER_STR "1.99"\r
-#define VER_NUM 1990 /* 設定バージョン */\r
-#define PROGRAM_VERSION_NUM 1990 /* バージョン */\r
+#define VER_STR "1.98e"\r
+#define VER_NUM 1985 /* 設定バージョン */\r
+#define PROGRAM_VERSION_NUM 1985 /* バージョン */\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 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 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
\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
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
+*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
#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
#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 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
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
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
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
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
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
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
void ResetAutoExitFlg(void);\r
int AskAutoExit(void);\r
// 暗号化通信対応\r
-BOOL __stdcall SSLTimeoutCallback();\r
-BOOL __stdcall SSLConfirmCallback(BOOL bVerified, LPCSTR Certificate, LPCSTR CommonName);\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
+int AskDispFileIcon(void);\r
\r
/*===== filelist.c =====*/\r
\r
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
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
int ReConnectCmdSkt(void);\r
// int ReConnectTrnSkt(void);\r
// 同時接続対応\r
-int ReConnectTrnSkt(SOCKET *Skt);\r
+int ReConnectTrnSkt(SOCKET *Skt, int *CancelCheckWork);\r
SOCKET AskCmdCtrlSkt(void);\r
SOCKET AskTrnCtrlSkt(void);\r
void SktShareProh(void);\r
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
+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
-int SocksGet2ndBindReply(SOCKET Socket, SOCKET *Data);\r
+// 同時接続対応\r
+//int SocksGet2ndBindReply(SOCKET Socket, SOCKET *Data);\r
+int SocksGet2ndBindReply(SOCKET Socket, SOCKET *Data, int *CancelCheckWork);\r
// 暗号化通信対応\r
int AskCryptMode(void);\r
int AskUseNoEncryption(void);\r
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
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
void CopyURLtoClipBoard(void);\r
-int ProcForNonFullpath(char *Path, char *CurDir, HWND hWnd, int Type);\r
+// 同時接続対応\r
+//int ProcForNonFullpath(char *Path, char *CurDir, HWND hWnd, int Type);\r
+int ProcForNonFullpath(SOCKET cSkt, char *Path, char *CurDir, HWND hWnd, int *CancelCheckWork);\r
void ReformToVMSstyleDirName(char *Path);\r
void ReformToVMSstylePathName(char *Path);\r
#if defined(HAVE_OPENVMS)\r
void ReformVMSDirName(char *DirName, int Flg);\r
#endif\r
+// 自動切断対策\r
+void NoopProc(void);\r
\r
/*===== local.c =====*/\r
\r
int DoCHMOD(char *Path, char *Mode);\r
// 同時接続対応\r
//int DoSIZE(char *Path, LONGLONG *Size);\r
+int DoSIZE(SOCKET cSkt, char *Path, LONGLONG *Size, int *CancelCheckWork);\r
+// 同時接続対応\r
//int DoMDTM(char *Path, FILETIME *Time);\r
-int DoSIZE(SOCKET cSkt, char *Path, LONGLONG *Size);\r
-int DoMDTM(SOCKET cSkt, char *Path, FILETIME *Time);\r
-int DoQUOTE(char *CmdStr);\r
+int DoMDTM(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
int DoDirListCmdSkt(char *AddOpt, char *Path, int Num, int *CancelCheckWork);\r
+#if defined(HAVE_TANDEM)\r
+void SwitchOSSProc(void);\r
+#endif\r
int CommandProcCmd(char *Reply, char *fmt, ...);\r
// 同時接続対応\r
//int CommandProcTrn(char *Reply, char *fmt, ...);\r
-int CommandProcTrn(SOCKET cSkt, char *Reply, char *fmt, ...);\r
+int CommandProcTrn(SOCKET cSkt, char *Reply, int* CancelCheckWork, char *fmt, ...);\r
int command(SOCKET cSkt, char *Reply, int *CancelCheckWork, char *fmt, ...);\r
int SendData(SOCKET Skt, char *Data, int Size, int Mode, int *CancelCheckWork);\r
int ReadReplyMessage(SOCKET cSkt, char *Buf, int Max, int *CancelCheckWork, char *Tmp);\r
/*===== 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
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
+#if defined(HAVE_TANDEM)\r
+void CalcExtentSize(TRANSPACKET *Pkt, LONGLONG Size);\r
+#endif\r
\r
/*===== dlgsize.c =====*/\r
\r
\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
SOCKET do_accept(SOCKET s, struct sockaddr *addr, int *addrlen);\r
int do_recv(SOCKET s, char *buf, int len, int flags, int *TimeOut, int *CancelCheckWork);\r
int do_send(SOCKET s, const char *buf, int len, int flags, int *TimeOutErr, int *CancelCheckWork);\r
+// 同時接続対応\r
+void RemoveReceivedData(SOCKET s);\r
int CheckClosedAndReconnect(void);\r
-void CheckAllEventClosed(void);\r
+// 同時接続対応\r
+int CheckClosedAndReconnectTrnSkt(SOCKET *Skt, int *CancelCheckWork);\r
\r
/*===== updatebell.c =====*/\r
\r