#define PROGRAM_VERSION_NUM 1990 /* バージョン */\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
\r
#define LIST_MASKFLG 0xFF\r
\r
+// UTF-8対応\r
+#define LIST_RAW_NAME 0x80000000\r
+\r
/* ファイル一覧情報例 ---------------\r
\r
*LIST_UNIX_10\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
char PrivateKey[PRIVATE_KEY_LEN+1]; /* テキスト形式の秘密鍵 */\r
// 同時接続対応\r
int MaxThreadCount; /* 同時接続数 */\r
+ int ReuseCmdSkt; /* メインウィンドウのソケットを再利用する (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
} HOSTDATA;\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
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
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 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
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 AskInetFamily(void);\r
int AskUseIPv6(void);\r
\r
/*===== cache.c =====*/\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
void RemoveReceivedData(SOCKET s);\r
int CheckClosedAndReconnect(void);\r
void CheckAllEventClosed(void);\r
+// IPv6対応\r
+char* AddressToStringIPv6(char* str, void* in6);\r
+char* inet6_ntoa(struct in6_addr in6);\r
+struct in6_addr inet6_addr(const char* cp);\r
\r
/*===== updatebell.c =====*/\r
\r