OSDN Git Service

Modify documents.
[ffftp/ffftp.git] / src / common.h
1 /*=============================================================================\r
2 *                                                       FFFTP共通定義ファイル\r
3 *\r
4 ===============================================================================\r
5 / Copyright (C) 1997-2007 Sota. All rights reserved.\r
6 /\r
7 / Redistribution and use in source and binary forms, with or without \r
8 / modification, are permitted provided that the following conditions \r
9 / are met:\r
10 /\r
11 /  1. Redistributions of source code must retain the above copyright \r
12 /     notice, this list of conditions and the following disclaimer.\r
13 /  2. Redistributions in binary form must reproduce the above copyright \r
14 /     notice, this list of conditions and the following disclaimer in the \r
15 /     documentation and/or other materials provided with the distribution.\r
16 /\r
17 / THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR \r
18 / IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES \r
19 / OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. \r
20 / IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, \r
21 / INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, \r
22 / BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF \r
23 / USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON \r
24 / ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT \r
25 / (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF \r
26 / THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
27 /============================================================================*/\r
28 \r
29 #ifndef __COMMON_H__\r
30 #define __COMMON_H__\r
31 \r
32 #include "config.h"\r
33 #ifndef FFFTP_ENGLISH\r
34 #include "mesg-jpn.h"\r
35 #else\r
36 #include "mesg-eng.h"\r
37 #endif\r
38 \r
39 \r
40 #define NUL                             '\0'\r
41 \r
42 #define LOW8(x)                 ((x) & 0xFF)\r
43 #define HIGH8(x)                (((x) >> 8) & 0xFF)\r
44 #define LOW32(x)                ((x) & 0xFFFFFFFF)\r
45 #define HIGH32(x)               (((x) >> 32) & 0xFFFFFFFF)\r
46 #define N2INT(h,l)              ((int)(((uchar)(h) << 4) + (uchar)(l)))\r
47 \r
48 #define IsDigit(n)              (isascii(n) && isdigit(n))\r
49 #define IsAlpha(n)              (isascii(n) && isalpha(n))\r
50 \r
51 #define uchar                   unsigned char\r
52 #define ushort                  unsigned short\r
53 #define ulong                   unsigned long\r
54 \r
55 // 警告の回避\r
56 //#define FAIL                  0\r
57 //#define SUCCESS                       1\r
58 #define FFFTP_FAIL                      0\r
59 #define FFFTP_SUCCESS                   1\r
60 \r
61 #define NO                              0\r
62 #define YES                             1\r
63 #define NO_ALL                  2\r
64 #define YES_ALL                 3\r
65 #define YES_LIST                4\r
66 \r
67 /*===== バージョン ======*/\r
68 \r
69 // SourceForge.JPによるフォーク\r
70 //#define VER_STR                                       "1.97b"\r
71 //#define VER_NUM                                       1921            /* 設定バージョン */\r
72 //#define PROGRAM_VERSION_NUM           1972            /* バージョン */\r
73 // 64ビット対応\r
74 #ifdef _WIN64\r
75 #define VER_STR                                 "2.00 64bit"\r
76 #else\r
77 #define VER_STR                                 "2.00"\r
78 #endif\r
79 #define VER_NUM                                 2000            /* 設定バージョン */\r
80 #define PROGRAM_VERSION_NUM             2000            /* バージョン */\r
81 // ソフトウェア自動更新\r
82 // リリースバージョンはリリース予定年(10進数4桁)+月(2桁)+日(2桁)+通し番号(0スタート2桁)とする\r
83 // 2014年7月31日中の30個目のリリースは2014073129\r
84 #define RELEASE_VERSION_NUM             2017110400      /* リリースバージョン */\r
85 \r
86 \r
87 // SourceForge.JPによるフォーク\r
88 //#define MYWEB_URL     "http://www2.biglobe.ne.jp/~sota/ffftp-qa.html"\r
89 #ifndef FFFTP_ENGLISH\r
90 #define MYWEB_URL       "https://ja.osdn.net/projects/ffftp/forums/"\r
91 #else\r
92 #define MYWEB_URL       "https://osdn.net/projects/ffftp/forums/"\r
93 #endif\r
94 \r
95 \r
96 \r
97 /*===== 通信関係 ======*/\r
98 \r
99 #define TCP_PORT                6\r
100 \r
101 /*===== ウインドウサイズ ======*/\r
102 \r
103 #define TOOLWIN_HEIGHT  28              /* ツールバーの高さ */\r
104 \r
105 /*===== 特殊なキャッシュデータ番号 =====*/\r
106 /* (ファイル一覧取得で使用するローカルファイル名 _ffftp.??? の番号部分) */\r
107 \r
108 #define CACHE_FILE_TMP1 999             /* ホストのファイルツリー取得用 */\r
109 #define CACHE_FILE_TMP2 998             /* アップロード中のホストのファイル一覧取得用 */\r
110 \r
111 /*===== ユーザ定義コマンド =====*/\r
112 \r
113 #define WM_CHANGE_COND  (WM_USER+1)     /* ファイル一覧を変更するコマンド */\r
114 #define WM_SET_PACKET   (WM_USER+2)     /* 現在使用している転送パケットのアドレスを通知 */\r
115 #define WM_SELECT_HOST  (WM_USER+3)     /* ホストをダブルクリックで選択した */\r
116 #define WM_DIAL_MSG             (WM_USER+4)     /* ダイアル中のステータス通知 */\r
117 \r
118 #define WM_ASYNC_SOCKET (WM_USER+5)\r
119 #define WM_ASYNC_DBASE  (WM_USER+6)\r
120 \r
121 #define WM_REFRESH_LOCAL_FLG    (WM_USER+7)\r
122 #define WM_REFRESH_REMOTE_FLG   (WM_USER+8)\r
123 \r
124 // UPnP対応\r
125 #define WM_ADDPORTMAPPING       (WM_USER+9)\r
126 #define WM_REMOVEPORTMAPPING    (WM_USER+10)\r
127 \r
128 // 同時接続対応\r
129 #define WM_RECONNECTSOCKET      (WM_USER+11)\r
130 \r
131 // ゾーンID設定追加\r
132 #define WM_MARKFILEASDOWNLOADEDFROMINTERNET     (WM_USER+12)\r
133 \r
134 /*===== ホスト番号 =====*/\r
135 /* ホスト番号は 0~ の値を取る */\r
136 \r
137 #define HOSTNUM_NOENTRY (-1)    /* ホスト一覧に無いときのホスト番号 */\r
138 \r
139 /*===== バッファサイズ =====*/\r
140 \r
141 #define BUFSIZE                 4096    /* ファイル転送バッファのサイズ(4k以上) */\r
142 \r
143 #define HOST_NAME_LEN   40              /* 一覧に表示するホストの名前 */\r
144 #define HOST_ADRS_LEN   80              /* ホスト名 */\r
145 #define USER_NAME_LEN   80              /* ユーザ名 */\r
146 #define PASSWORD_LEN    80              /* パスワード */\r
147 #define ACCOUNT_LEN             80              /* アカウント */\r
148 #define HOST_TYPE_LEN   1               /* ホストの種類 */\r
149 #define INIT_DIR_LEN    (FMAX_PATH-40)  /* 初期ディレクトリ */\r
150 #define USER_MAIL_LEN   80              /* ユーザのメールアドレス */\r
151                                                                 /*   PASSWORD_LEN と同じにすること */\r
152 #define ASCII_EXT_LEN   400             /* アスキーモード転送のファイル名列 */\r
153 #define FILTER_EXT_LEN  400             /* フィルタのファイル名列 */\r
154 #define BOOKMARK_SIZE   2048    /* ブックマーク */\r
155 #define CHMOD_CMD_LEN   40              /* 属性変更コマンド */\r
156 #define MIRROR_LEN              400             /* ミラーリングの設定用 */\r
157 #define NLST_NAME_LEN   40              /* NLSTに付けるファイル名/オプション */\r
158 #define DEFATTRLIST_LEN 800             /* 属性リストの長さ */\r
159 #define INITCMD_LEN             256             /* 初期化コマンド */\r
160 #define OWNER_NAME_LEN  40              /* オーナ名 */\r
161 #define RAS_NAME_LEN    256             /* RASのエントリ名の長さ */\r
162 \r
163 #define FMAX_PATH               1024\r
164 \r
165 #define ONELINE_BUF_SIZE        (10*1024)\r
166 \r
167 // 暗号化通信対応\r
168 #define PRIVATE_KEY_LEN 4096\r
169 \r
170 /*===== 初期値 =====*/\r
171 \r
172 #define SAMBA_HEX_TAG   ':'                             /* Samba-HEX の区切り文字 */\r
173 #define CHMOD_CMD_NOR   "SITE CHMOD"    /* 属性変更コマンド */\r
174 #define PORT_NOR                21                              /* ポート番号 */\r
175 #define LS_FNAME                "-alL"                  /* NLSTに付けるもの */\r
176 #if defined(HAVE_TANDEM)\r
177 #define DEF_PRIEXT              4                               /* Primary Extents の初期値 */\r
178 #define DEF_SECEXT              28                              /* Secondary Extents の初期値 */\r
179 #define DEF_MAXEXT              978                             /* Max Extents の初期値 */\r
180 #endif\r
181 \r
182 /*===== 同じ名前のファイルがあった時の処理 =====*/\r
183 \r
184 #define EXIST_OVW               0               /* 上書き */\r
185 #define EXIST_NEW               1               /* 新しければ上書き */\r
186 #define EXIST_RESUME    2               /* レジューム */\r
187 #define EXIST_IGNORE    3               /* 無視 */\r
188 #define EXIST_UNIQUE    4               /* ホストが名前を付ける */\r
189 #define EXIST_ABORT             5               /* 全て中止 */\r
190 // 同じ名前のファイルの処理方法追加\r
191 #define EXIST_LARGE             6               /* 大きければ上書き */\r
192 \r
193 /*===== ファイル名の比較モード =====*/\r
194 \r
195 #define COMP_IGNORE             0               /* 大文字/小文字は区別しない */\r
196 #define COMP_STRICT             1               /* 大文字/小文字を区別する */\r
197 #define COMP_LOWERMATCH 2               /* 大文字/小文字を区別しない(片側は全て小文字) */\r
198 \r
199 /*===== FTPの応答コードの頭1桁 =====*/\r
200 \r
201 #define FTP_PRELIM              1               /* */\r
202 #define FTP_COMPLETE    2               /* */\r
203 #define FTP_CONTINUE    3               /* */\r
204 #define FTP_RETRY               4               /* */\r
205 #define FTP_ERROR               5               /* */\r
206 \r
207 /*===== ファイルリストのノード属性 =====*/\r
208 \r
209 #define NODE_DIR                0               /* ディレクトリ */\r
210 #define NODE_FILE               1               /* ファイル */\r
211 #define NODE_DRIVE              2               /* ドライブ */\r
212 #define NODE_NONE               (-1)    /* なし */\r
213 \r
214 /*===== 上書き確認方法の設定値 =====*/\r
215 \r
216 #define TRANS_OVW               0               /* 上書き */\r
217 #define TRANS_DLG               1               /* ダイアログを出す */\r
218 \r
219 /*===== ホスト内ファイル移動確認方法の設定値 =====*/\r
220 \r
221 #define MOVE_NODLG              0               /* ダイアログを出さない */\r
222 #define MOVE_DLG                1               /* ダイアログを出す */\r
223 #define MOVE_DISABLE    2               /* 機能使用禁止 */\r
224 \r
225 /*===== 転送方法 =====*/\r
226 \r
227 #define TYPE_I                  'I'             /* バイナリモード */\r
228 #define TYPE_A                  'A'             /* アスキーモード */\r
229 #define TYPE_X                  'X'             /* 自動判別 */\r
230 \r
231 #define TYPE_DEFAULT    NUL             /* 設定しない DirectConnectProc()の引数として有効 */\r
232 \r
233 /*===== ソート方法 =====*/\r
234 /* 番号はListViewのカラム番号と合わせてある */\r
235 \r
236 #define SORT_NAME               0               /* 名前順 */\r
237 #define SORT_DATE               1               /* 日付順 */\r
238 #define SORT_SIZE               2               /* サイズ順 */\r
239 #define SORT_EXT                3               /* 拡張子順 */\r
240 \r
241 #define SORT_ASCENT             0x00    /* 昇順 */\r
242 #define SORT_DESCENT    0x80    /* 降順 */\r
243 \r
244 #define SORT_MASK_ORD   0x7F    /* xx順を取り出すマスク */\r
245 #define SORT_GET_ORD    0x80    /* 昇順/降順を取り出すマスク */\r
246 \r
247 #define SORT_NOTSAVED   ((ulong)0xFFFFFFFF)     /* ホスト毎のセーブ方法を保存していない時の値 */\r
248 \r
249 /*===== ソートする場所 =====*/\r
250 \r
251 #define ITEM_LFILE              0               /* ローカルの名前 */\r
252 #define ITEM_LDIR               1               /* ローカルのディレクトリ */\r
253 #define ITEM_RFILE              2               /* ホストの名前 */\r
254 #define ITEM_RDIR               3               /* ホストのディレクトリ */\r
255 \r
256 /*===== ウインドウ番号 =====*/\r
257 \r
258 #define WIN_LOCAL               0               /* ローカル */\r
259 #define WIN_REMOTE              1               /* ホスト */\r
260 #define WIN_BOTH                2               /* 両方 */\r
261 \r
262 /*===== ファイル選択方法 =====*/\r
263 \r
264 #define SELECT_ALL              0               /* 全選択 */\r
265 #define SELECT_REGEXP   1               /* 検索式を入力して選択 */\r
266 // ローカル側自動更新\r
267 #define SELECT_LIST             2               /* リストに含まれるファイルを選択 */\r
268 \r
269 /*===== 検索方法 =====*/\r
270 \r
271 #define FIND_FIRST              0               /* 最初の検索 */\r
272 #define FIND_NEXT               1               /* 次を検索 */\r
273 \r
274 /*===== ファイル名の大文字/小文字変換 =====*/\r
275 \r
276 #define FNAME_NOCNV             0               /* 変換しない */\r
277 #define FNAME_LOWER             1               /* 小文字に変換 */\r
278 #define FNAME_UPPER             2               /* 大文字に変換 */\r
279 \r
280 /*===== ファイル一覧の形式 =====*/\r
281 \r
282 #define LIST_UNKNOWN    (-1)    /* 不明 */\r
283 \r
284 #define LIST_UNIX_10    0               /* UNIX 10 */\r
285 #define LIST_UNIX_11    1               /* UNIX 11 */\r
286 #define LIST_UNIX_12    2               /* UNIX 12 */\r
287 #define LIST_UNIX_13    3               /* UNIX 13 */\r
288 #define LIST_UNIX_14    4               /* UNIX 14 */\r
289 #define LIST_UNIX_15    5               /* UNIX 15 */\r
290 #define LIST_UNIX_20    6               /* UNIX 20 */\r
291 #define LIST_UNIX_21    7               /* UNIX 21 */\r
292 #define LIST_UNIX_22    8               /* UNIX 22 */\r
293 #define LIST_UNIX_23    9               /* UNIX 23 */\r
294 #define LIST_UNIX_24    10              /* UNIX 24 */\r
295 #define LIST_UNIX_25    11              /* UNIX 25 */\r
296 #define LIST_UNIX_50    12              /* UNIX 50 */\r
297 #define LIST_UNIX_51    13              /* UNIX 51 */\r
298 #define LIST_UNIX_54    14              /* UNIX 54 */\r
299 #define LIST_UNIX_60    15              /* UNIX 60 */\r
300 #define LIST_UNIX_61    16              /* UNIX 61 */\r
301 #define LIST_UNIX_62    17              /* UNIX 62 */\r
302 #define LIST_UNIX_63    18              /* UNIX 63 */\r
303 #define LIST_UNIX_64    19              /* UNIX 64 */\r
304 #define LIST_UNIX_65    20              /* UNIX 65 */\r
305 #define LIST_DOS_1              21              /* MS-DOS 1 */\r
306 #define LIST_DOS_2              22              /* MS-DOS 2 */\r
307 #define LIST_DOS_3              23              /* MS-DOS 3 */\r
308 #define LIST_DOS_4              24              /* MS-DOS 4 */\r
309 #define LIST_ACOS               25              /* ACOS */\r
310 #define LIST_AS400              26              /* AS/400 */\r
311 #define LIST_M1800              27              /* Fujitu M1800 (OS IV/MSP E20) */\r
312 #define LIST_CHAMELEON  28              /* Win3.1用 Chameleon FTP server */\r
313 #define LIST_GP6000             29              /* Fujitu GP6000 Model 900 */\r
314 #define LIST_OS2                30              /* OS/2 */\r
315 #define LIST_VMS                31              /* VAX VMS */\r
316 #define LIST_OS7_1              32              /* Toshiba OS7 */\r
317 #define LIST_OS7_2              33              /* Toshiba OS7 */\r
318 #define LIST_IRMX               34              /* IRMX */\r
319 #define LIST_ACOS_4             35              /* ACOS-4 */\r
320 #define LIST_STRATUS    36              /* Stratus */\r
321 #define LIST_ALLIED             37              /* allied telesis (DOS) */\r
322 #define LIST_OS9                38              /* OS/9 */\r
323 #define LIST_IBM                39              /* IBM host */\r
324 #define LIST_AGILENT    40              /* Agilent logic analyzer */\r
325 #define LIST_SHIBASOKU  41              /* Shibasoku LSI test system */\r
326 #define LIST_UNIX_70    42              /* UNIX 70 */\r
327 #define LIST_UNIX_71    43              /* UNIX 71 */\r
328 #define LIST_UNIX_72    44              /* UNIX 72 */\r
329 #define LIST_UNIX_73    45              /* UNIX 73 */\r
330 #define LIST_UNIX_74    46              /* UNIX 74 */\r
331 #define LIST_UNIX_75    47              /* UNIX 75 */\r
332 // linux-ftpd\r
333 #define LIST_UNIX_16    48              /* UNIX 16 */\r
334 // MLSD対応\r
335 #define LIST_MLSD               49\r
336 #if defined(HAVE_TANDEM)\r
337 #define LIST_TANDEM             50              /* HP NonStop Server */\r
338 #endif\r
339 // uClinux\r
340 #define LIST_UNIX_17    51              /* UNIX 17 */\r
341 // Windows Server 2008 R2\r
342 #define LIST_DOS_5              52              /* MS-DOS 5 */\r
343 \r
344 #define LIST_MELCOM             0x100   /* MELCOM80 */\r
345 \r
346 #define LIST_MASKFLG    0xFF\r
347 \r
348 // UTF-8対応\r
349 #define LIST_RAW_NAME   0x80000000\r
350 \r
351 /* ファイル一覧情報例 ---------------\r
352 \r
353 *LIST_UNIX_10\r
354         0          1   2     3      4    5    6   7         8\r
355         -------------------------------------------------------\r
356         drwxr-xr-x 15  owner group  1024 Nov  6   14:21     Linux/\r
357         -rwxrwx---  5  owner group    12 Nov  6   1996      test.txt\r
358         drwxr-xr-x 15  owner group  1024 11月 6日 14:21     Linux/\r
359         drwxr-xr-x 15  owner group  1024 11月 6日 14時21分  Linux/\r
360         -rwxrwx---  5  owner group    12 11月 6日 1996年    test.txt\r
361         drwxrwxr-x 6   root  sys     512  1月 26  03:10     adm                (月はGBコードで0xD4C2)\r
362 \r
363 *LIST_UNIX_11\r
364         0          1   2     3      4    5        6         7\r
365         -------------------------------------------------------\r
366         drwxr-xr-x 15  owner group  1024 11月12日 14時21分  Linux/\r
367         -rwxrwx---  5  owner group    12 11月12日 1996年    test.txt\r
368 \r
369 *LIST_UNIX_12\r
370         0              1     2      3    4    5   6         7\r
371         -------------------------------------------------------\r
372         drwxr-xr-x123  owner group  1024 Nov  6   14:21     Linux/\r
373         -rwxrwx---132  owner group    12 Nov  6   1996      test.txt\r
374         drwxr-xr-x123  owner group  1024 11月 6日 14:21     Linux/\r
375         drwxr-xr-x123  owner group  1024 11月 6日 14時21分  Linux/\r
376         -rwxrwx---132  owner group    12 11月 6日 1996年    test.txt\r
377 \r
378 *LIST_UNIX_13\r
379         0              1     2      3    4        5         6\r
380         -------------------------------------------------------\r
381         drwxr-xr-x123  owner group  1024 11月12日 14時21分  Linux/\r
382         -rwxrwx---132  owner group    12 11月12日 1996年    test.txt\r
383 \r
384 *LIST_UNIX_14\r
385         0          1   2     3      4    5    6   7         8\r
386         -------------------------------------------------------\r
387         drwxr-xr-x 15  owner group  512  2001 6月 18        audit      (月はGBコードで0xD4C2)\r
388 \r
389 *LIST_UNIX_15\r
390         0              1     2      3    4    5   6         7\r
391         -------------------------------------------------------\r
392         drwxr-xr-x15   owner group  512  2001 6月 18        audit      (月はGBコードで0xD4C2)\r
393 \r
394 \r
395 \r
396 \r
397 \r
398 *LIST_UNIX_20\r
399         0          1   2            3    4    5   6         7\r
400         -------------------------------------------------------\r
401         drwxr-xr-x 15  owner        1024 Nov  6   14:21     Linux/\r
402         -rwxrwx---  5  owner          12 Nov  6   1996      test.txt\r
403         drwxr-xr-x 15  owner        1024 11月 6日 14:21     Linux/\r
404         drwxr-xr-x 15  owner        1024 11月 6日 14時21分  Linux/\r
405         -rwxrwx---  5  owner          12 11月 6日 1996年    test.txt\r
406 \r
407 *LIST_UNIX_21\r
408         0          1   2            3    4        5         6\r
409         -------------------------------------------------------\r
410         drwxr-xr-x 15  owner        1024 11月12日 14時21分  Linux/\r
411         -rwxrwx---  5  owner          12 11月12日 1996年    test.txt\r
412 \r
413 *LIST_UNIX_22\r
414         0              1            2    3    4   5         6\r
415         -------------------------------------------------------\r
416         drwxr-xr-x123  owner        1024 Nov  6   14:21     Linux/\r
417         -rwxrwx---132  owner          12 Nov  6   1996      test.txt\r
418         drwxr-xr-x123  owner        1024 11月 6日 14:21     Linux/\r
419         drwxr-xr-x123  owner        1024 11月 6日 14時21分  Linux/\r
420         -rwxrwx---132  owner          12 11月 6日 1996年    test.txt\r
421 \r
422 *LIST_UNIX_23\r
423         0              1            2    3        4         5\r
424         -------------------------------------------------------\r
425         drwxr-xr-x123  owner        1024 11月12日 14時21分  Linux/\r
426         -rwxrwx---132  owner          12 11月12日 1996年    test.txt\r
427 \r
428 *LIST_UNIX_24\r
429         0          1   2            3    4    5   6         7\r
430         -------------------------------------------------------\r
431         drwxr-xr-x 15  owner        512  2001 6月 18        audit      (月はGBコードで0xD4C2)\r
432 \r
433 *LIST_UNIX_25\r
434         0              1            2    3    4   5         6\r
435         -------------------------------------------------------\r
436         drwxr-xr-x15   owner        512  2001 6月 18        audit      (月はGBコードで0xD4C2)\r
437 \r
438 \r
439 \r
440 \r
441 \r
442 \r
443 \r
444 *LIST_UNIX_50\r
445         0              1            2    3    4   5         6\r
446         -------------------------------------------------------\r
447         drwxr-xr-x     owner        1024 Nov  6   14:21     Linux/\r
448         -rwxrwx---     owner          12 Nov  6   1996      test.txt\r
449         drwxr-xr-x     owner        1024 11月 6日 14:21     Linux/\r
450         drwxr-xr-x     owner        1024 11月 6日 14時21分  Linux/\r
451         -rwxrwx---     owner          12 11月 6日 1996年    test.txt\r
452 \r
453 *LIST_UNIX_51\r
454         0              1            2    3        4         5\r
455         -------------------------------------------------------\r
456         drwxr-xr-x     owner        1024 11月12日 14時21分  Linux/\r
457         -rwxrwx---     owner          12 11月12日 1996年    test.txt\r
458 \r
459         0          1   2        3        4        5\r
460         -------------------------------------------------------\r
461         -rwxrwxrwx SEQ 36203776 01/07/07 12:38:28 ADRS001                         \r
462         -rwxrwxrwx SEQ 70172160 01/07/07 13:59:58 ADRS002                         \r
463 \r
464 *LIST_UNIX_54\r
465         0              1            2    3    4   5         6\r
466         -------------------------------------------------------\r
467         drwxr-xr-x     owner        512  2001 6月 18        audit      (月はGBコードで0xD4C2)\r
468 \r
469 \r
470 \r
471 \r
472 \r
473 \r
474 \r
475 *LIST_UNIX_60\r
476         0          1    2     3 4     5 6    7    8  9     10\r
477         -------------------------------------------------------\r
478         drwxr-xr-x 123  owner m group g 1024 Nov  6  14:21 Linux/\r
479         -rwxrwx--- 132  owner m group g   12 Nov  6  1996  test.txt\r
480 \r
481 *LIST_UNIX_61\r
482         0          1    2     3 4     5 6    7         8     9\r
483         -------------------------------------------------------\r
484         drwxr-xr-x 123  owner m group g 1024 11月12日  14:21 Linux/\r
485         -rwxrwx--- 132  owner m group g   12 11月12日  1996  test.txt\r
486 \r
487 *LIST_UNIX_62\r
488         0              1     2 3     4 5    6    7  8     9\r
489         -------------------------------------------------------\r
490         drwxr-xr-x123  owner m group g 1024 Nov  6  14:21 Linux/\r
491         -rwxrwx---132  owner m group g   12 Nov  6  1996  test.txt\r
492 \r
493 *LIST_UNIX_63\r
494         0              1     2 3     4 5    6         7     8\r
495         -------------------------------------------------------\r
496         drwxr-xr-x123  owner m group g 1024 11月12日  14:21 Linux/\r
497         -rwxrwx---132  owner m group g   12 11月12日  1996  test.txt\r
498 \r
499 *LIST_UNIX_64\r
500         0          1   2     3 4     5  6    7    8   9    10\r
501         -------------------------------------------------------\r
502         drwxr-xr-x 15  owner m group g  512  2001 6月 18   audit       (月はGBコードで0xD4C2)\r
503 \r
504 *LIST_UNIX_65\r
505         0              1     2 3     4  5    6    7   8    9\r
506         -------------------------------------------------------\r
507         drwxr-xr-x15   owner m group g  512  2001 6月 18   audit       (月はGBコードで0xD4C2)\r
508 \r
509 \r
510 \r
511 \r
512 LIST_UNIX_70\r
513         0          1    2       3     4 5    6    7  8     9\r
514         -------------------------------------------------------\r
515         drwxr-xr-x 123  owner   group g 1024 Nov  6  14:21 Linux/\r
516         -rwxrwx--- 132  owner   group g   12 Nov  6  1996  test.txt\r
517 \r
518 *LIST_UNIX_71\r
519         0          1    2       3     4 5    6         7     8\r
520         -------------------------------------------------------\r
521         drwxr-xr-x 123  owner   group g 1024 11月12日  14:21 Linux/\r
522         -rwxrwx--- 132  owner   group g   12 11月12日  1996  test.txt\r
523 \r
524 *LIST_UNIX_72\r
525         0              1       2     3 4    5    6  7     8\r
526         -------------------------------------------------------\r
527         drwxr-xr-x123  owner   group g 1024 Nov  6  14:21 Linux/\r
528         -rwxrwx---132  owner   group g   12 Nov  6  1996  test.txt\r
529 \r
530 *LIST_UNIX_73\r
531         0              1       2     3 4    5         6     7\r
532         -------------------------------------------------------\r
533         drwxr-xr-x123  owner   group g 1024 11月12日  14:21 Linux/\r
534         -rwxrwx---132  owner   group g   12 11月12日  1996  test.txt\r
535 \r
536 *LIST_UNIX_74\r
537         0          1   2       3     4  5    6    7   8    9\r
538         -------------------------------------------------------\r
539         drwxr-xr-x 15  owner   group g  512  2001 6月 18   audit       (月はGBコードで0xD4C2)\r
540 \r
541 *LIST_UNIX_75\r
542         0              1       2     3  4    5    6   7    8\r
543         -------------------------------------------------------\r
544         drwxr-xr-x15   owner   group g  512  2001 6月 18   audit       (月はGBコードで0xD4C2)\r
545 \r
546 \r
547 \r
548 \r
549 \r
550 \r
551 *unix系で以下のような日付\r
552         0              1            2    3   4    5         6\r
553         -------------------------------------------------------\r
554         drwxr-xr-x123  owner        1024 11/ 6    14:21     Linux/\r
555         -rwxrwx---132  owner          12 11/13    1996      test.txt\r
556 \r
557 \r
558 \r
559 \r
560 \r
561 \r
562 \r
563 \r
564 \r
565 \r
566 \r
567 \r
568 \r
569 \r
570 \r
571 \r
572 \r
573 \r
574 *LIST_DOS_1\r
575         0         1          2       3\r
576         -------------------------------------------------------\r
577         97-10-14  03:34p     <DIR>   Linux\r
578         97-10-14  03:34p        12   test.txt\r
579         100-10-14 03:34p        12   test.txt\r
580 \r
581 *LIST_DOS_2\r
582         0         1          2       3\r
583         -------------------------------------------------------\r
584         10-14-97  03:34p     <DIR>   Linux\r
585         10-14-97  03:34p        12   test.txt\r
586         10-14-100 03:34p        12   test.txt\r
587 \r
588 *LIST_DOS_3\r
589         0             1      2         3       4\r
590         -------------------------------------------------------\r
591         Linux         <DIR>  10-14-97  03:34    \r
592         test.txt         12  10-14-97  14:34   A\r
593         test.txt         12  10-14-100 14:34   A\r
594 \r
595 *LIST_DOS_4\r
596         0          1            2        3\r
597         -------------------------------------------------------\r
598         1998/07/30 15:39:02     <DIR>    Linux\r
599         1998/07/30 15:42:19     11623    test.txt\r
600 \r
601 *LIST_ACOS\r
602         0\r
603         -------------------------------------------------------\r
604         test.txt\r
605         ディレクトリなし、\r
606 \r
607 *LIST_AS400\r
608         0           1     2        3        4        5\r
609         -------------------------------------------------------\r
610         QSYS        18944 96/09/20 00:35:10 *DIR     QOpenSys/\r
611         QDOC        26624 70/01/01 00:00:00 *FLR     QDLS/\r
612         QSYS            0 98/09/27 10:00:04 *LIB     QSYS.LIB/\r
613         QSECOFR         0 98/05/15 16:01:15 *STMF    WWWTEST.BAK\r
614 \r
615 *LIST_M1800\r
616         0     1     2       3       4     5         6 (ファイル名の後ろにスペースあり)\r
617         -------------------------------------------------------\r
618         drwx  F        400     400  PO    93.10.27  COMMON.PDL.EXCEL/       \r
619         -rw-  F      10000   10000  DA    97.03.04  DTSLOG1.FNA             \r
620         -rw-  F      10000  ******  DA    97.03.04  DTSBRB.FNA              \r
621         drwx  U     ******    6144  PO    96.12.15  IS01.TISPLOAD/          \r
622         -rw-  ****  ******  ******  VSAM  **.**.**  HICS.CMDSEQ             \r
623 \r
624 *LIST_CHAMELEON\r
625         0            1        2    3 4    5     6\r
626         -------------------------------------------------------\r
627         Linux        <DIR>    Nov  6 1997 14:21 drw-\r
628         test.txt           12 Nov  6 1886 14:21 -rwa\r
629 \r
630 *LIST_GP6000\r
631         0          1        2        3        4        5    6\r
632         -------------------------------------------------------\r
633         drwxrwxrwx 98.10.21 14:38:46 SYSG03   XSYSOPR  2048 atlib\r
634         -rwxrwxrwx 97.10.30 11:06:04 XSYSMNGR XSYSOPR  2048 blib\r
635 \r
636 *LIST_OS2\r
637            0        1          2          3      4\r
638         -------------------------------------------------------\r
639            345      A          12-02-98   10:59  VirtualDevice.java\r
640              0           DIR   12-09-98   09:43  ディレクトリ\r
641              0           DIR   12-09-100  09:43  ディレクトリ\r
642 \r
643 *LIST_MELCOM\r
644         0 1           2   3          4  5    6  7    8\r
645         ---------------------------------------------------------------\r
646         - RW-RW-RW-   1   TERA       50 DEC  1  1997 AAAJ          B(B)\r
647         - RW-RW-RW-   1   TERA        1 AUG  7  1998 12345678901234B(B)\r
648         d RWXRWXRWX   2   TERA       64 NOV 13  1997 Q2000         -\r
649 \r
650 *LIST_VMS\r
651         0                  1         2           3         4\r
652         ---------------------------------------------------------------\r
653         CIM_ALL.MEM;5        2/4     21-APR-1998 11:01:17  [CIM,MIZOTE]\r
654         (RWED,RWED,RE,)\r
655         MAIL.DIR;1         104/248   18-SEP-2001 16:19:39  [CIM,MIZOTE]\r
656         (RWE,RWE,,)\r
657                 ※VMSの場合一覧が複数行に別れる場合がある\r
658 \r
659 *LIST_OS7_1\r
660         0                       1        2        3\r
661         ---------------------------------------------------------------\r
662         drwxrwxrwx              99/05/13 11:38:34 APL\r
663 *LIST_OS7_2\r
664         0          1      2     3        4        5\r
665         ---------------------------------------------------------------\r
666         -rwxrwxrwx SEQ    17408 96/12/06 10:11:27 INIT_CONFIG\r
667 \r
668 *LIST_IRMX\r
669         0          1   2     3  4       5       6 7 8         9  10  11\r
670         ---------------------------------------------------------------\r
671         world      DR  DLAC  1    416   1,024   1 WORLD       05 FEB 98\r
672         world      DR        1    416   1,024   1 WORLD       05 FEB 98\r
673         name.f38       DRAU  5  4,692   1,024   1 # 0         24 MAR 99\r
674         name.f38             5  4,692   1,024   1 # 0         24 MAR 99\r
675 \r
676 *LIST_STRATUS\r
677          0      1  2         3        4         5\r
678         ---------------------------------------------------------------\r
679         Files: 15  Blocks: 29\r
680          w      1  seq       99-06-15 13:11:39  member_srv.error\r
681         Dirs: 74\r
682          m      3  98-12-25 16:14:58  amano\r
683 \r
684 *LIST_ALLIED\r
685          0             1        2   3   4  5        6\r
686         ---------------------------------------------------------------\r
687              41622     IO.SYS   Tue Dec 20 06:20:00 1994\r
688         <dir>             DOS   Wed Nov 24 09:35:48 1999\r
689 \r
690 *LIST_OS9\r
691          0       1        2     3            4      5      6\r
692         ---------------------------------------------------------------\r
693          0.0     01/02/13 0945  d-----wr     3C0    148724 W_017\r
694          0.0     01/02/13 0945  ------wr     C20     48828 W_017.CLG\r
695 \r
696 *LIST_IBM\r
697          0      1      2           3  4    5      6   7      8   9\r
698         ---------------------------------------------------------------\r
699          JXSIB1 3390   2000/12/27  1  810  FB     240 24000  PO  DIRNAME\r
700          JXSW01 3390   2000/12/27  1    5  VBA    240  3120  PS  FILENAME\r
701 \r
702 *LIST_AGILENT\r
703          0             1    2    3      4     5\r
704         ---------------------------------------------------------------\r
705          drwxrwxrwx    1    1    1      1024  system\r
706          -rw-rw-rw-    1    1    1      1792  abc.aaa\r
707 \r
708 *LIST_SHIBASOKU\r
709          0        1            2          3                 4\r
710         ---------------------------------------------------------------\r
711            512    Jan-30-2002  14:52:04   DIRNAME           <DIR>\r
712          61191    Aug-30-2002  17:30:38   FILENAME.C        \r
713 \r
714 \r
715 // linux-ftpd\r
716 *LIST_UNIX_16\r
717         0          1   2     3      4    5          6     7\r
718         -------------------------------------------------------\r
719         合計 12345\r
720         drwxr-x--- 2 root root      4096 2011-12-06 23:39 .\r
721         drwxr-x--- 3 root root      4096 2011-12-06 23:39 ..\r
722         -rw-r----- 1 root root       251 2011-12-06 23:39 .hoge\r
723 \r
724 // uClinux\r
725 *LIST_UNIX_17\r
726         0          1 2 3 4   5\r
727         -------------------------------------------------------\r
728         -rw-r--r-- 1 0 0 100 services\r
729         lrwxrwxrwx 1 0 0 20 resolv.conf -> /var/run/resolv.conf\r
730         drwxr-sr-x 1 0 0 0 rc.d\r
731         -rw-r--r-- 1 0 0 290 rc\r
732         -rw-r--r-- 1 0 0 34 passwd\r
733         lrwxrwxrwx 1 0 0 18 inittab -> ../var/tmp/inittab\r
734 \r
735 // Windows Server 2008 R2\r
736 *LIST_DOS_5\r
737         0          1       2     3\r
738         -------------------------------------------------------\r
739         02-05-2013 09:45AM <DIR> TEST\r
740         01-28-2013 03:54PM 2847 DATA.TXT\r
741 \r
742 *LIST_TANDEM\r
743          0             1               2    3         4        5       6\r
744         ---------------------------------------------------------------\r
745         File         Code             EOF  Last Modification    Owner  RWEP\r
746         EMSACSTM      101             146  18-Sep-00 09:03:37 170,175 "nunu"\r
747         TACLCSTM   O  101             101  4-Mar-01  23:50:06 255,255 "oooo"\r
748 \r
749 ------------------------------------*/\r
750 \r
751 /*===== 接続ウインドウの形式 =====*/\r
752 \r
753 #define DLG_TYPE_CON    0               /* 簡易(ホスト編集なし) */\r
754 #define DLG_TYPE_SET    1               /* ホスト編集あり */\r
755 \r
756 /*===== ファイル一覧取得モード =====*/\r
757 \r
758 #define CACHE_NORMAL    0               /* 通常(キャッシュにあれば使用、なければ読み込み) */\r
759 #define CACHE_REFRESH   1               /* 常に読み込み */\r
760 #define CACHE_LASTREAD  2               /* 最後に読み込んだものを使用 */\r
761 \r
762 /*===== 漢字コード変換 =====*/\r
763 \r
764 #define KANJI_SJIS              0               /* SJIS */\r
765 #define KANJI_JIS               1               /* JIS */\r
766 #define KANJI_EUC               2               /* EUC */\r
767 #define KANJI_SMB_HEX   3               /* Samba-HEX */\r
768 #define KANJI_SMB_CAP   4               /* Samba-CAP */\r
769 #define KANJI_UTF8N             5               /* UTF-8 */\r
770 // UTF-8対応\r
771 #define KANJI_UTF8BOM           6               /* UTF-8 BOM */\r
772 // UTF-8 HFS+対応\r
773 #define KANJI_UTF8HFSX          7               /* UTF-8 HFS+ */\r
774 \r
775 #define KANJI_NOCNV             -1              /* 漢字コード変換なし */\r
776 \r
777 // UTF-8対応\r
778 #define KANJI_AUTO              -1\r
779 \r
780 /*===== サウンド =====*/\r
781 \r
782 #define SND_CONNECT             0               /* 接続時のサウンド */\r
783 #define SND_TRANS               1               /* 転送終了時のサウンド */\r
784 #define SND_ERROR               2               /* エラー時のサウンド */\r
785 \r
786 #define SOUND_TYPES             3               /* サウンドの種類 */\r
787 \r
788 /*===== ビューワ =====*/\r
789 \r
790 #define VIEWERS                 3               /* ビューワの数 */\r
791 \r
792 /*===== ブックマーク =====*/\r
793 \r
794 #define BMARK_SUB_MENU          2               /* ブックマークメニューのサブメニュー番号 */\r
795 #define DEFAULT_BMARK_ITEM      5               /* ブックマークメニューにある固定部分の数 */\r
796 #define MENU_BMARK_TOP          30000   /* 3000以降(3100くらいまで)は予約する */\r
797                                                                         /* resource.h の定義と重ならないように */\r
798 \r
799 #define BMARK_TYPE_NONE         0               /* ブックマーク無し */\r
800 #define BMARK_TYPE_LOCAL        1               /* ローカル側のブックマーク */\r
801 #define BMARK_TYPE_REMOTE       2               /* ホスト側のブックマーク */\r
802 #define BMARK_TYPE_BOTH         3               /* 両方のブックマーク */\r
803 \r
804 #define BMARK_MARK_LOCAL        "L "    /* ローカル側の印 */\r
805 #define BMARK_MARK_REMOTE       "H "    /* ホスト側の印 */\r
806 #define BMARK_MARK_BOTH         "W "    /* 両方の印 */\r
807 #define BMARK_MARK_LEN          2               /* 印の文字数 */\r
808 \r
809 #define BMARK_SEP                       " <> "  /* ローカル側とホスト側の区切り */\r
810 #define BMARK_SEP_LEN           4               /* 区切りの文字数 */\r
811 \r
812 /*===== レジストリのタイプ =====*/\r
813 \r
814 #define REGTYPE_REG             0               /* レジストリ */\r
815 #define REGTYPE_INI             1               /* INIファイル */\r
816 \r
817 // UTF-8対応\r
818 //#define REG_SECT_MAX  (16*1024)       /* レジストリの1セクションの最大データサイズ */\r
819 #define REG_SECT_MAX    (64*1024)       /* レジストリの1セクションの最大データサイズ */\r
820 \r
821 /*===== ホスト設定で明示的に指定するホストのタイプ =====*/\r
822 \r
823 #define HTYPE_AUTO              0               /* 自動 */\r
824 #define HTYPE_ACOS              1               /* ACOS (待機結合ファイルの指定が必要) */\r
825 #define HTYPE_VMS               2               /* VAX VMS */\r
826 #define HTYPE_IRMX              3               /* IRMX */\r
827 #define HTYPE_ACOS_4    4               /* ACOS ファイル名を('')で括らない */\r
828 #define HTYPE_STRATUS   5               /* Stratus */\r
829 #define HTYPE_AGILENT   6               /* Agilent Logic analyzer */\r
830 #define HTYPE_SHIBASOKU 7               /* Shibasoku LSI test system */\r
831 #if defined(HAVE_TANDEM)\r
832 #define HTYPE_TANDEM    8               /* HP NonStop Server */\r
833 #endif\r
834 \r
835 /*===== コマンドラインオプション =====*/\r
836 \r
837 //#define OPT_MIRROR            0x0001  /* ミラーリングアップロードを行う */\r
838 //#define OPT_FORCE             0x0002  /* ミラーリング開始の確認をしない */\r
839 //#define OPT_QUIT              0x0004  /* 終了後プログラム終了 */\r
840 //#define OPT_EUC                       0x0008  /* 漢字コードはEUC */\r
841 //#define OPT_JIS                       0x0010  /* 漢字コードはJIS */\r
842 //#define OPT_ASCII             0x0020  /* アスキー転送モード */\r
843 //#define OPT_BINARY            0x0040  /* バイナリ転送モード */\r
844 //#define OPT_AUTO              0x0080  /* 自動判別 */\r
845 //#define OPT_KANA              0x0100  /* 半角かなをそのまま通す */\r
846 //#define OPT_EUC_NAME  0x0200  /* ファイル名はEUC */\r
847 //#define OPT_JIS_NAME  0x0400  /* ファイル名はJIS */\r
848 //#define OPT_MIRRORDOWN        0x0800  /* ミラーリングダウンロードを行う */\r
849 //#define OPT_SAVEOFF           0x1000  /* 設定の保存を中止する */\r
850 //#define OPT_SAVEON            0x2000  /* 設定の保存を再開する */\r
851 #define OPT_MIRROR              0x00000001      /* ミラーリングアップロードを行う */\r
852 #define OPT_FORCE               0x00000002      /* ミラーリング開始の確認をしない */\r
853 #define OPT_QUIT                0x00000004      /* 終了後プログラム終了 */\r
854 #define OPT_EUC                 0x00000008      /* 漢字コードはEUC */\r
855 #define OPT_JIS                 0x00000010      /* 漢字コードはJIS */\r
856 #define OPT_ASCII               0x00000020      /* アスキー転送モード */\r
857 #define OPT_BINARY              0x00000040      /* バイナリ転送モード */\r
858 #define OPT_AUTO                0x00000080      /* 自動判別 */\r
859 #define OPT_KANA                0x00000100      /* 半角かなをそのまま通す */\r
860 #define OPT_EUC_NAME    0x00000200      /* ファイル名はEUC */\r
861 #define OPT_JIS_NAME    0x00000400      /* ファイル名はJIS */\r
862 #define OPT_MIRRORDOWN  0x00000800      /* ミラーリングダウンロードを行う */\r
863 #define OPT_SAVEOFF             0x00001000      /* 設定の保存を中止する */\r
864 #define OPT_SAVEON              0x00002000      /* 設定の保存を再開する */\r
865 // UTF-8対応\r
866 #define OPT_SJIS                0x00004000      /* 漢字コードはShift_JIS */\r
867 #define OPT_UTF8N               0x00008000      /* 漢字コードはUTF-8 */\r
868 #define OPT_UTF8BOM             0x00010000      /* 漢字コードはUTF-8 BOM */\r
869 #define OPT_SJIS_NAME   0x00020000      /* ファイル名はShift_JIS */\r
870 #define OPT_UTF8N_NAME  0x00040000      /* ファイル名はUTF-8 */\r
871 \r
872 /*===== ホストのヒストリ =====*/\r
873 \r
874 #define HISTORY_MAX             20              /* ファイルのヒストリの最大個数 */\r
875 #define DEF_FMENU_ITEMS 8               /* Fileメニューにある項目数の初期値 */\r
876 \r
877 /*===== SOCKS4 =====*/\r
878 \r
879 #define SOCKS4_VER                      4       /* SOCKSのバージョン */\r
880 \r
881 #define SOCKS4_CMD_CONNECT      1       /* CONNECTコマンド */\r
882 #define SOCKS4_CMD_BIND         2       /* BINDコマンド */\r
883 \r
884 /* リザルトコード */\r
885 #define SOCKS4_RES_OK           90      /* 要求は許可された */\r
886         /* その他のコードはチェックしないので定義しない */\r
887 \r
888 /*===== SOCKS5 =====*/\r
889 \r
890 #define SOCKS5_VER                      5       /* SOCKSのバージョン */\r
891 \r
892 #define SOCKS5_CMD_CONNECT      1       /* CONNECTコマンド */\r
893 #define SOCKS5_CMD_BIND         2       /* BINDコマンド */\r
894 \r
895 #define SOCKS5_AUTH_NONE        0       /* 認証無し */\r
896 #define SOCKS5_AUTH_GSSAPI      1       /* GSS-API */\r
897 #define SOCKS5_AUTH_USER        2       /* Username/Password */\r
898 \r
899 #define SOCKS5_ADRS_IPV4        1       /* IP V4 address */\r
900 #define SOCKS5_ADRS_NAME        3       /* Domain name */\r
901 #define SOCKS5_ADRS_IPV6        4       /* IP V6 address */\r
902 \r
903 #define SOCKS5_USERAUTH_VER     1       /* Username\Password認証のバージョン */\r
904 \r
905 /* リザルトコード */\r
906 #define SOCKS5_RES_OK           0x00    /* succeeded */\r
907         /* その他のコードはチェックしないので定義しない */\r
908 \r
909 /*===== 中断コード =====*/\r
910 \r
911 #define ABORT_NONE                      0               /* 転送中断なし */\r
912 #define ABORT_USER                      1               /* ユーザによる中断 */\r
913 #define ABORT_ERROR                     2               /* エラーによる中断 */\r
914 #define ABORT_DISKFULL          3               /* ディスクフルよる中断 */\r
915 \r
916 /*===== FireWallの種類 =====*/\r
917 \r
918 #define FWALL_NONE                      0               /* なし */\r
919 #define FWALL_FU_FP_SITE        1               /* FW user → FW pass → SITE host */\r
920 #define FWALL_FU_FP_USER        2               /* FW user → FW pass → USER user@host */\r
921 #define FWALL_USER                      3               /* USER user@host */\r
922 #define FWALL_OPEN                      4               /* OPEN host */\r
923 #define FWALL_SOCKS4            5               /* SOCKS4 */\r
924 #define FWALL_SOCKS5_NOAUTH     6               /* SOCKS5 (認証なし) */\r
925 #define FWALL_SOCKS5_USER       7               /* SOCKS5 (Username/Password認証) */\r
926 #define FWALL_FU_FP                     8               /* FW user → FW pass */\r
927 #define FWALL_SIDEWINDER        9               /* USER FWuser:FWpass@host */\r
928 \r
929 /*===== ワンタイムパスワード =====*/\r
930 \r
931 /* コードの種類 */\r
932 #define SECURITY_DISABLE        0               /* 使用しない */\r
933 #define SECURITY_AUTO           1               /* 自動認識 */\r
934 #define MD4                                     2               /* MD4 */\r
935 #define MD5                                     3               /* MD5 */\r
936 #define SHA1                            4               /* SHA-1 */\r
937 \r
938 #define MAX_SEED_LEN            16              /* Seedの文字数 */\r
939 \r
940 /*===== 再帰的なファイル検索の方法 =====*/\r
941 \r
942 #define RDIR_NONE               0               /* 再帰検索なし */\r
943 #define RDIR_NLST               1               /* NLST -R */\r
944 #define RDIR_CWD                2               /* CWDで移動 */\r
945 \r
946 /*===== VAX VMS 関係 =====*/\r
947 \r
948 #define BLOCK_SIZE              512             /* 1ブロックのバイト数 */\r
949 \r
950 /*===== 設定のレベル =====*/\r
951 \r
952 #define SET_LEVEL_GROUP         0x8000          /* グループのフラグ */\r
953 #define SET_LEVEL_MASK          0x7FFF\r
954 #define SET_LEVEL_SAME          0x7FFF\r
955 \r
956 /*===== 日付、数値の表示形式 =====*/\r
957 \r
958 #define DISPFORM_LEGACY         0               /* 固定書式 */\r
959 #define DISPFORM_LOCALE         1               /* コントロールパネルに従う */\r
960 \r
961 /*===== ファイル一覧に存在した情報 =====*/\r
962 \r
963 #define FINFO_DATE                      0x01    /* 日付 */\r
964 #define FINFO_TIME                      0x02    /* 時間 */\r
965 #define FINFO_SIZE                      0x04    /* サイズ */\r
966 #define FINFO_ATTR                      0x08    /* 属性 */\r
967 #define FINFO_ALL                       0xFF    /* 全て */\r
968 \r
969 /*===== GetMasterPasswordStatusで使うコード =====*/\r
970 #define PASSWORD_OK 0\r
971 #define PASSWORD_UNMATCH 2\r
972 #define BAD_PASSWORD_HASH 3\r
973 \r
974 /*===== 暗号化パスワード設定 =====*/\r
975 #define DEFAULT_PASSWORD        "DefaultPassword"\r
976 #define MAX_PASSWORD_LEN        128\r
977 \r
978 // 暗号化通信対応\r
979 #define CRYPT_NONE                      0\r
980 #define CRYPT_FTPES                     1\r
981 #define CRYPT_FTPIS                     2\r
982 #define CRYPT_SFTP                      3\r
983 \r
984 // FEAT対応\r
985 // UTF-8対応\r
986 #define FEATURE_UTF8            0x00000001\r
987 // MLSD対応\r
988 #define FEATURE_MLSD            0x00000002\r
989 // IPv6対応\r
990 #define FEATURE_EPRT            0x00000004\r
991 #define FEATURE_EPSV            0x00000008\r
992 // ホスト側の日時取得\r
993 #define FEATURE_MDTM            0x00000010\r
994 // ホスト側の日時設定\r
995 #define FEATURE_MFMT            0x00000020\r
996 \r
997 // IPv6対応\r
998 #define NTYPE_AUTO                      0               /* 自動 */\r
999 #define NTYPE_IPV4                      1               /* TCP/IPv4 */\r
1000 #define NTYPE_IPV6                      2               /* TCP/IPv6 */\r
1001 \r
1002 // 暗号化通信対応\r
1003 // REG_SECT_MAXの値を加味する必要がある\r
1004 #define MAX_CERT_CACHE_HASH 256\r
1005 \r
1006 \r
1007 /*=================================================\r
1008 *               ストラクチャ\r
1009 *=================================================*/\r
1010 \r
1011 /*===== ホスト設定データ =====*/\r
1012 \r
1013 typedef struct {\r
1014         int Level;                                                      /* 設定のレベル */\r
1015                                                                                 /* 通常はグループのフラグのみが有効 */\r
1016                                                                                 /* レベル数は設定の登録/呼出時のみで使用 */\r
1017         char HostName[HOST_NAME_LEN+1];         /* 設定名 */\r
1018         char HostAdrs[HOST_ADRS_LEN+1];         /* ホスト名 */\r
1019         char UserName[USER_NAME_LEN+1];         /* ユーザ名 */\r
1020         char PassWord[PASSWORD_LEN+1];          /* パスワード */\r
1021         char Account[ACCOUNT_LEN+1];            /* アカウント */\r
1022         char LocalInitDir[INIT_DIR_LEN+1];      /* ローカルの開始ディレクトリ */\r
1023         char RemoteInitDir[INIT_DIR_LEN+1];     /* ホストの開始ディレクトリ */\r
1024         char BookMark[BOOKMARK_SIZE];           /* ブックマーク */\r
1025         char ChmodCmd[CHMOD_CMD_LEN+1];         /* 属性変更コマンド */\r
1026         char LsName[NLST_NAME_LEN+1];           /* NLSTに付けるファイル名/オプション*/\r
1027         char InitCmd[INITCMD_LEN+1];            /* ホストの初期化コマンド */\r
1028         int Port;                                                       /* ポート番号 */\r
1029         int Anonymous;                                          /* Anonymousフラグ */\r
1030         int KanjiCode;                                          /* ホストの漢字コード (KANJI_xxx) */\r
1031         int KanaCnv;                                            /* 半角カナを全角に変換(YES/NO) */\r
1032         int NameKanjiCode;                                      /* ファイル名の漢字コード (KANJI_xxx) */\r
1033         // UTF-8対応\r
1034         int CurNameKanjiCode;                           /* 自動判別後のファイル名の漢字コード (KANJI_xxx) */\r
1035         int NameKanaCnv;                                        /* ファイル名の半角カナを全角に変換(YES/NO) */\r
1036         int Pasv;                                                       /* PASVモード (YES/NO) */\r
1037         int FireWall;                                           /* FireWallを使う (YES/NO) */\r
1038         int ListCmdOnly;                                        /* "LIST"コマンドのみ使用する */\r
1039         int UseNLST_R;                                          /* "NLST -R"コマンドを使用する */\r
1040         int LastDir;                                            /* 最後にアクセスしたフォルダを保存 */\r
1041         int TimeZone;                                           /* タイムゾーン (-12~12) */\r
1042         int HostType;                                           /* ホストのタイプ (HTYPE_xxx) */\r
1043         int SyncMove;                                           /* フォルダ同時移動 (YES/NO) */\r
1044         int NoFullPath;                                         /* フルパスでファイルアクセスしない (YES/NO) */\r
1045         ulong Sort;                                                     /* ソート方法 (0x11223344 : 11=LFsort 22=LDsort 33=RFsort 44=RFsort) */\r
1046         int Security;                                           /* セキュリティ (SECURITY_xxx , MDx) */\r
1047         int Dialup;                                                     /* ダイアルアップ接続するかどうか (YES/NO) */\r
1048         int DialupAlways;                                       /* 常にこのエントリへ接続するかどうか (YES/NO) */\r
1049         int DialupNotify;                                       /* 再接続の際に確認する (YES/NO) */\r
1050         char DialEntry[RAS_NAME_LEN+1];         /* ダイアルアップエントリ */\r
1051         // 暗号化通信対応\r
1052         int CryptMode;                                          /* 暗号化通信モード (CRYPT_xxx) */\r
1053         int UseNoEncryption;                            /* 暗号化なしで接続する (YES/NO) */\r
1054         int UseFTPES;                                           /* FTPESで接続する (YES/NO) */\r
1055         int UseFTPIS;                                           /* FTPISで接続する (YES/NO) */\r
1056         int UseSFTP;                                            /* SFTPで接続する (YES/NO) */\r
1057         char PrivateKey[PRIVATE_KEY_LEN+1];     /* テキスト形式の秘密鍵 */\r
1058         int NoWeakEncryption;                           /* 弱い暗号を拒否 (YES/NO) */\r
1059         // 同時接続対応\r
1060         int MaxThreadCount;                                     /* 同時接続数 */\r
1061         int ReuseCmdSkt;                                        /* メインウィンドウのソケットを再利用する (YES/NO) */\r
1062         int NoDisplayUI;                                        /* UIを表示しない (YES/NO) */\r
1063         // FEAT対応\r
1064         int Feature;                                            /* 利用可能な機能のフラグ (FEATURE_xxx) */\r
1065         // MLSD対応\r
1066         int UseMLSD;                                            /* "MLSD"コマンドを使用する */\r
1067         // IPv6対応\r
1068         int NetType;                                            /* ネットワークの種類 (NTYPE_xxx) */\r
1069         int CurNetType;                                         /* 接続中のネットワークの種類 (NTYPE_xxx) */\r
1070         // 自動切断対策\r
1071         int NoopInterval;                                       /* 無意味なコマンドを送信する間隔(秒数、0で無効)*/\r
1072         // 再転送対応\r
1073         int TransferErrorMode;                          /* 転送エラー時の処理 (EXIST_xxx) */\r
1074         int TransferErrorNotify;                        /* 転送エラー時に確認ダイアログを出すかどうか (YES/NO) */\r
1075         // セッションあたりの転送量制限対策\r
1076         int TransferErrorReconnect;                     /* 転送エラー時に再接続する (YES/NO) */\r
1077         // ホスト側の設定ミス対策\r
1078         int NoPasvAdrs;                                         /* PASVで返されるアドレスを無視する (YES/NO) */\r
1079 } HOSTDATA;\r
1080 \r
1081 \r
1082 /*===== ホスト設定リスト =====*/\r
1083 \r
1084 typedef struct hostlistdata {\r
1085         HOSTDATA Set;                                   /* ホスト設定データ */\r
1086         struct hostlistdata *Next;\r
1087         struct hostlistdata *Prev;\r
1088         struct hostlistdata *Child;\r
1089         struct hostlistdata *Parent;\r
1090 } HOSTLISTDATA;\r
1091 \r
1092 \r
1093 /*===== 接続ヒストリリスト =====*/\r
1094 \r
1095 typedef struct historydata {\r
1096         char HostAdrs[HOST_ADRS_LEN+1];         /* ホスト名 */\r
1097         char UserName[USER_NAME_LEN+1];         /* ユーザ名 */\r
1098         char PassWord[PASSWORD_LEN+1];          /* パスワード */\r
1099         char Account[ACCOUNT_LEN+1];            /* アカウント */\r
1100         char LocalInitDir[INIT_DIR_LEN+1];      /* ディレクトリ */\r
1101         char RemoteInitDir[INIT_DIR_LEN+1];     /* ディレクトリ */\r
1102         char ChmodCmd[CHMOD_CMD_LEN+1];         /* 属性変更コマンド */\r
1103         char LsName[NLST_NAME_LEN+1];           /* NLSTに付けるファイル名/オプション*/\r
1104         char InitCmd[INITCMD_LEN+1];            /* ホストの初期化コマンド */\r
1105         int Port;                                                       /* ポート番号 */\r
1106         int KanjiCode;                                          /* ホストの漢字コード (KANJI_xxx) */\r
1107         int KanaCnv;                                            /* 半角カナを全角に変換(YES/NO) */\r
1108         int NameKanjiCode;                                      /* ファイル名の漢字コード (KANJI_xxx) */\r
1109         int NameKanaCnv;                                        /* ファイル名の半角カナを全角に変換(YES/NO) */\r
1110         int Pasv;                                                       /* PASVモード (YES/NO) */\r
1111         int FireWall;                                           /* FireWallを使う (YES/NO) */\r
1112         int ListCmdOnly;                                        /* "LIST"コマンドのみ使用する */\r
1113         int UseNLST_R;                                          /* "NLST -R"コマンドを使用する */\r
1114         int TimeZone;                                           /* タイムゾーン (-12~12) */\r
1115         int HostType;                                           /* ホストのタイプ (HTYPE_xxx) */\r
1116         int SyncMove;                                           /* フォルダ同時移動 (YES/NO) */\r
1117         int NoFullPath;                                         /* フルパスでファイルアクセスしない (YES/NO) */\r
1118         ulong Sort;                                                     /* ソート方法 (0x11223344 : 11=LFsort 22=LDsort 33=RFsort 44=RFsort) */\r
1119         int Security;                                           /* セキュリティ (OTP_xxx , MDx) */\r
1120         int Type;                                                       /* 転送方法 (TYPE_xx) */\r
1121         int Dialup;                                                     /* ダイアルアップ接続するかどうか (YES/NO) */\r
1122         int DialupAlways;                                       /* 常にこのエントリへ接続するかどうか (YES/NO) */\r
1123         int DialupNotify;                                       /* 再接続の際に確認する (YES/NO) */\r
1124         char DialEntry[RAS_NAME_LEN+1];         /* ダイアルアップエントリ */\r
1125         // 暗号化通信対応\r
1126         int UseNoEncryption;                            /* 暗号化なしで接続する (YES/NO) */\r
1127         int UseFTPES;                                           /* FTPESで接続する (YES/NO) */\r
1128         int UseFTPIS;                                           /* FTPISで接続する (YES/NO) */\r
1129         int UseSFTP;                                            /* SFTPで接続する (YES/NO) */\r
1130         char PrivateKey[PRIVATE_KEY_LEN+1];     /* テキスト形式の秘密鍵 */\r
1131         int NoWeakEncryption;                           /* 弱い暗号を拒否 (YES/NO) */\r
1132         // 同時接続対応\r
1133         int MaxThreadCount;                                     /* 同時接続数 */\r
1134         int ReuseCmdSkt;                                        /* メインウィンドウのソケットを再利用する (YES/NO) */\r
1135         // MLSD対応\r
1136         int UseMLSD;                                            /* "MLSD"コマンドを使用する */\r
1137         // IPv6対応\r
1138         int NetType;                                            /* ネットワークの種類 (NTYPE_xxx) */\r
1139         // 自動切断対策\r
1140         int NoopInterval;                                       /* NOOPコマンドを送信する間隔(秒数、0で無効)*/\r
1141         // 再転送対応\r
1142         int TransferErrorMode;                          /* 転送エラー時の処理 (EXIST_xxx) */\r
1143         int TransferErrorNotify;                        /* 転送エラー時に確認ダイアログを出すかどうか (YES/NO) */\r
1144         // セッションあたりの転送量制限対策\r
1145         int TransferErrorReconnect;                     /* 転送エラー時に再接続する (YES/NO) */\r
1146         // ホスト側の設定ミス対策\r
1147         int NoPasvAdrs;                                         /* PASVで返されるアドレスを無視する (YES/NO) */\r
1148         struct historydata *Next;\r
1149 } HISTORYDATA;\r
1150 \r
1151 \r
1152 /*===== 転送ファイルリスト =====*/\r
1153 \r
1154 typedef struct transpacket {\r
1155         SOCKET ctrl_skt;                                /* Socket */\r
1156         char Cmd[40];                                   /* STOR/RETR/MKD */\r
1157         char RemoteFile[FMAX_PATH+1];   /* ホスト側のファイル名(フルパス) */\r
1158                                                                         /* VMSの時は ddd[xxx.yyy]/yyy/zzz のように */\r
1159                                                                         /* なってるので注意 */\r
1160         char LocalFile[FMAX_PATH+1];    /* ローカル側のファイル名(フルパス) */\r
1161         int Type;                                               /* 転送方法 (TYPE_xx) */\r
1162         LONGLONG Size;                                  /* ファイルのサイズ */\r
1163         LONGLONG ExistSize;                             /* すでに存在するファイルのサイズ */\r
1164                                                                         /* 転送中は、転送したファイルのサイズを格納する */\r
1165         FILETIME Time;                                  /* ファイルの時間(UTC) */\r
1166         int Attr;                                               /* ファイルの属性 */\r
1167         int KanjiCode;                                  /* 漢字コード (KANJI_xxx) */\r
1168         // UTF-8対応\r
1169         int KanjiCodeDesired;                   /* ローカルの漢字コード (KANJI_xxx) */\r
1170         int KanaCnv;                                    /* 半角カナを全角に変換(YES/NO) */\r
1171         int Mode;                                               /* 転送モード (EXIST_xxx) */\r
1172 #if defined(HAVE_TANDEM)\r
1173         int FileCode;                                   /* ファイルコード */\r
1174         int PriExt;                                             /* Primary Extents */\r
1175         int SecExt;                                             /* Secondary Extents */\r
1176         int MaxExt;                                             /* Max Extents */\r
1177 #endif\r
1178         HWND hWndTrans;                                 /* 転送中ダイアログのウインドウハンドル */\r
1179         int Abort;                                              /* 転送中止フラグ (ABORT_xxx) */\r
1180         // ミラーリング設定追加\r
1181         int NoTransfer;\r
1182         // 同時接続対応\r
1183         int ThreadCount;\r
1184         struct transpacket *Next;\r
1185 } TRANSPACKET;\r
1186 \r
1187 \r
1188 /*===== ファイルリスト =====*/\r
1189 \r
1190 typedef struct filelist {\r
1191         char File[FMAX_PATH+1];                 /* ファイル名 */\r
1192         char Node;                                              /* 種類 (NODE_xxx) */\r
1193         char Link;                                              /* リンクファイルかどうか (YES/NO) */\r
1194         LONGLONG Size;                                  /* ファイルサイズ */\r
1195         int Attr;                                               /* 属性 */\r
1196         FILETIME Time;                                  /* 時間(UTC) */\r
1197         char Owner[OWNER_NAME_LEN+1];   /* オーナ名 */\r
1198         char InfoExist;                                 /* ファイル一覧に存在した情報のフラグ (FINFO_xxx) */\r
1199         // ファイルアイコン表示対応\r
1200         int ImageId;                                    /* アイコン画像番号 */\r
1201         struct filelist *Next;\r
1202 } FILELIST;\r
1203 \r
1204 \r
1205 /*===== コード変換情報パケット =====*/\r
1206 \r
1207 typedef char * (*funcptr)(struct codeconvinfo *, char , char *);\r
1208 // UTF-8対応\r
1209 typedef int (*convptr)(struct codeconvinfo *);\r
1210 \r
1211 typedef struct codeconvinfo {\r
1212         char *Str;                      /* 文字列 */\r
1213         int StrLen;                     /* 文字列の長さ */\r
1214         int KanaCnv;            /* 半角カタカナを全角に変換するかどうか (YES/NO) */\r
1215         char *Buf;                      /* 変換後の文字列を格納するバッファ */\r
1216         int BufSize;            /* 変換後の文字列を格納するバッファのサイズ */\r
1217         int OutLen;                     /* 変換後の文字列のサイズ */\r
1218         int KanjiMode;          /* 漢字モードフラグ(YES/NO) (内部処理用ワーク) */\r
1219         int EscProc;            /* エスケープシーケンス文字数 (0~) (内部処理用ワーク) */\r
1220         char EscCode[2];        /* エスケープシーケンス文字保存用 (内部処理用ワーク) */\r
1221         char KanjiFst;          /* 漢字コード1バイト目保存用 (内部処理用ワーク) */\r
1222         char KanaPrev;          /* 半角カタカナ保存用 (内部処理用ワーク) */\r
1223         funcptr KanaProc;       /* 半角カタカナ処理ルーチン (内部処理用ワーク) */\r
1224         // UTF-8対応\r
1225         char EscUTF8[16];       /* エスケープシーケンス文字数 (0~) (内部処理用ワーク) */\r
1226         int EscUTF8Len;         /* エスケープシーケンス文字保存用 (内部処理用ワーク) */\r
1227         int EscFlush;           /* 残り情報を出力 (YES/NO) */\r
1228         convptr FlushProc;      /* 残り情報処理ルーチン (内部処理用ワーク) */\r
1229 } CODECONVINFO;\r
1230 \r
1231 \r
1232 /*===== 改行コード変換情報パケット =====*/\r
1233 \r
1234 typedef struct termcodeconvinfo {\r
1235         char *Str;                      /* 文字列 */\r
1236         int StrLen;                     /* 文字列の長さ */\r
1237         char *Buf;                      /* 変換後の文字列を格納するバッファ */\r
1238         int BufSize;            /* 変換後の文字列を格納するバッファのサイズ */\r
1239         int OutLen;                     /* 変換後の文字列のサイズ */\r
1240         char Term;                      /* 改行コード1バイト目保存用 (内部処理用ワーク) */\r
1241 } TERMCODECONVINFO;\r
1242 \r
1243 \r
1244 /*===== テンポラリファイルリスト =====*/\r
1245 \r
1246 typedef struct tempfilelist {\r
1247         char *Fname;                            /* ファイル名 */\r
1248         struct tempfilelist *Next;\r
1249 } TEMPFILELIST;\r
1250 \r
1251 \r
1252 /*===== サウンドファイル =====*/\r
1253 \r
1254 typedef struct {\r
1255         int On;                                         /* ON/OFFスイッチ */\r
1256         char Fname[FMAX_PATH+1];                /* ファイル名 */\r
1257 } SOUNDFILE;\r
1258 \r
1259 \r
1260 /*===== ラジオボタンの設定 =====*/\r
1261 \r
1262 typedef struct {\r
1263         int ButID;                      /* ボタンのID */\r
1264         int Value;                      /* 値 */\r
1265 } RADIOBUTTON;\r
1266 \r
1267 \r
1268 /*===== SOCKS4 =====*/\r
1269 \r
1270 /* コマンドパケット */\r
1271 typedef struct {\r
1272         char Ver;                                               /* バージョン (SOCKS4_VER) */\r
1273         char Cmd;                                               /* コマンド (SOCKS4_CMD_xxx) */\r
1274         ushort Port;                                    /* ポート */\r
1275         ulong AdrsInt;                                  /* アドレス */\r
1276         char UserID[USER_NAME_LEN+1];   /* ユーザID */\r
1277 } SOCKS4CMD;\r
1278 \r
1279 \r
1280 /* 返信パケット */\r
1281 typedef struct {\r
1282         char Ver;                               /* バージョン */\r
1283         char Result;                    /* リザルトコード (SOCKS4_RES_xxx) */\r
1284         ushort Port;                    /* ポート */\r
1285         ulong AdrsInt;                  /* アドレス */\r
1286 } SOCKS4REPLY;\r
1287 \r
1288 #define SOCKS4REPLY_SIZE        8\r
1289 \r
1290 \r
1291 /*===== SOCKS5 =====*/\r
1292 \r
1293 /* Method requestパケット */\r
1294 typedef struct {\r
1295         char Ver;                               /* バージョン (SOCKS5_VER) */\r
1296         char Num;                               /* メソッドの数 */\r
1297         uchar Methods[1];               /* メソッド */\r
1298 } SOCKS5METHODREQUEST;\r
1299 \r
1300 #define SOCKS5METHODREQUEST_SIZE        3\r
1301 \r
1302 \r
1303 /* Method replyパケット */\r
1304 typedef struct {\r
1305         char Ver;                               /* バージョン (SOCKS5_VER) */\r
1306         uchar Method;                   /* メソッド */\r
1307 } SOCKS5METHODREPLY;\r
1308 \r
1309 #define SOCKS5METHODREPLY_SIZE  2\r
1310 \r
1311 \r
1312 /* Requestパケット */\r
1313 typedef struct {\r
1314         char Ver;                               /* バージョン (SOCKS5_VER) */\r
1315         char Cmd;                               /* コマンド (SOCKS5_CMD_xxx) */\r
1316         char Rsv;                               /* (予約) */\r
1317         char Type;                              /* アドレスのタイプ */\r
1318                                                         /* 以後(可変長部分) */\r
1319         char _dummy[255+1+2];   /* アドレス、ポート */\r
1320 } SOCKS5REQUEST;\r
1321 \r
1322 #define SOCKS5REQUEST_SIZE 4    /* 最初の固定部分のサイズ */\r
1323 \r
1324 \r
1325 /* Replyパケット */\r
1326 typedef struct {\r
1327         char Ver;                               /* バージョン */\r
1328         char Result;                    /* リザルトコード (SOCKS4_RES_xxx) */\r
1329         char Rsv;                               /* (予約) */\r
1330         char Type;                              /* アドレスのタイプ */\r
1331                                                         /* 以後(可変長部分) */\r
1332         // IPv6対応\r
1333 //      ulong AdrsInt;                  /* アドレス */\r
1334 //      ushort Port;                    /* ポート */\r
1335 //      char _dummy[2];                 /* dummy */\r
1336         char _dummy[255+1+2];   /* dummy */\r
1337 } SOCKS5REPLY;\r
1338 \r
1339 #define SOCKS5REPLY_SIZE 4      /* 最初の固定部分のサイズ */\r
1340 \r
1341 \r
1342 /* Username/Password認証statusパケット */\r
1343 typedef struct {\r
1344         char Ver;                               /* バージョン */\r
1345         uchar Status;                   /* ステータス */\r
1346 } SOCKS5USERPASSSTATUS;\r
1347 \r
1348 #define SOCKS5USERPASSSTATUS_SIZE       2\r
1349 \r
1350 \r
1351 \r
1352 /*===== ダイアログボックス変更処理用 =====*/\r
1353 \r
1354 typedef struct {\r
1355         // ホスト共通設定機能\r
1356 //      int HorMoveList[10];    /* 水平に動かす部品のリスト */\r
1357 //      int VarMoveList[10];    /* 垂直に動かす部品のリスト */\r
1358 //      int ResizeList[10];             /* サイズ変更する部品のリスト */\r
1359         int HorMoveList[16];    /* 水平に動かす部品のリスト */\r
1360         int VarMoveList[16];    /* 垂直に動かす部品のリスト */\r
1361         int ResizeList[16];             /* サイズ変更する部品のリスト */\r
1362         SIZE MinSize;                   /* 最少サイズ */\r
1363         SIZE CurSize;                   /* 現在のサイズ */\r
1364 } DIALOGSIZE;\r
1365 \r
1366 \r
1367 /*===== 数値変換用 =====*/\r
1368 \r
1369 typedef struct {\r
1370         int Num1;\r
1371         int Num2;\r
1372 } INTCONVTBL;\r
1373 \r
1374 \r
1375 // UPnP対応\r
1376 typedef struct\r
1377 {\r
1378         int r;\r
1379         HANDLE h;\r
1380         char* Adrs;\r
1381         int Port;\r
1382         char* ExtAdrs;\r
1383 } ADDPORTMAPPINGDATA;\r
1384 \r
1385 typedef struct\r
1386 {\r
1387         int r;\r
1388         HANDLE h;\r
1389         int Port;\r
1390 } REMOVEPORTMAPPINGDATA;\r
1391 \r
1392 // ゾーンID設定追加\r
1393 typedef struct\r
1394 {\r
1395         int r;\r
1396         HANDLE h;\r
1397         char* Fname;\r
1398 } MARKFILEASDOWNLOADEDFROMINTERNETDATA;\r
1399 \r
1400 /*=================================================\r
1401 *               プロトタイプ\r
1402 *=================================================*/\r
1403 \r
1404 /*===== main.c =====*/\r
1405 \r
1406 int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int cmdShow);\r
1407 void DispWindowTitle(void);\r
1408 HWND GetMainHwnd(void);\r
1409 HWND GetFocusHwnd(void);\r
1410 void SetFocusHwnd(HWND hWnd);\r
1411 HINSTANCE GetFtpInst(void);\r
1412 void DoubleClickProc(int Win, int Mode, int App);\r
1413 void ExecViewer(char *Fname, int App);\r
1414 void ExecViewer2(char *Fname1, char *Fname2, int App);\r
1415 void AddTempFileList(char *Fname);\r
1416 void SoundPlay(int Num);\r
1417 char *AskHelpFilePath(void);\r
1418 char *AskTmpFilePath(void);\r
1419 char *AskIniFilePath(void);\r
1420 int AskForceIni(void);\r
1421 int BackgrndMessageProc(void);\r
1422 void ResetAutoExitFlg(void);\r
1423 int AskAutoExit(void);\r
1424 // 暗号化通信対応\r
1425 BOOL __stdcall SSLTimeoutCallback(BOOL* pbAborted);\r
1426 BOOL __stdcall SSLConfirmCallback(BOOL* pbAborted, BOOL bVerified, LPCSTR Certificate, LPCSTR CommonName);\r
1427 BOOL LoadSSLRootCAFile();\r
1428 // マルチコアCPUの特定環境下でファイル通信中にクラッシュするバグ対策\r
1429 BOOL IsMainThread();\r
1430 // ポータブル版判定\r
1431 void CheckPortableVersion();\r
1432 int AskPortableVersion(void);\r
1433 // 全設定暗号化対応\r
1434 int Restart();\r
1435 void Terminate();\r
1436 // タスクバー進捗表示\r
1437 int LoadTaskbarList3();\r
1438 void FreeTaskbarList3();\r
1439 int IsTaskbarList3Loaded();\r
1440 void UpdateTaskbarProgress();\r
1441 // 高DPI対応\r
1442 int AskToolWinHeight(void);\r
1443 // ソフトウェア自動更新\r
1444 void UpdateSoftware(int Async, int NoError, int NoConfirm);\r
1445 \r
1446 /*===== filelist.c =====*/\r
1447 \r
1448 int MakeListWin(HWND hWnd, HINSTANCE hInst);\r
1449 void DeleteListWin(void);\r
1450 HWND GetLocalHwnd(void);\r
1451 HWND GetRemoteHwnd(void);\r
1452 void GetListTabWidth(void);\r
1453 void SetListViewType(void);\r
1454 void GetRemoteDirForWnd(int Mode, int *CancelCheckWork);\r
1455 void GetLocalDirForWnd(void);\r
1456 void ReSortDispList(int Win, int *CancelCheckWork);\r
1457 // ローカル側自動更新\r
1458 //void SelectFileInList(HWND hWnd, int Type);\r
1459 void SelectFileInList(HWND hWnd, int Type, FILELIST *Base);\r
1460 void FindFileInList(HWND hWnd, int Type);\r
1461 // void WildCard2RegExp(char *Str);\r
1462 int GetCurrentItem(int Win);\r
1463 int GetItemCount(int Win);\r
1464 int GetSelectedCount(int Win);\r
1465 int GetFirstSelected(int Win, int All);\r
1466 int GetNextSelected(int Win, int Pos, int All);\r
1467 // ローカル側自動更新\r
1468 int GetHotSelected(int Win, char *Fname);\r
1469 int SetHotSelected(int Win, char *Fname);\r
1470 int FindNameNode(int Win, char *Name);\r
1471 void GetNodeName(int Win, int Pos, char *Buf, int Max);\r
1472 int GetNodeTime(int Win, int Pos, FILETIME *Buf);\r
1473 int GetNodeSize(int Win, int Pos, LONGLONG *Buf);\r
1474 int GetNodeAttr(int Win, int Pos, int *Buf);\r
1475 int GetNodeType(int Win, int Pos);\r
1476 void GetNodeOwner(int Win, int Pos, char *Buf, int Max);\r
1477 void EraseRemoteDirForWnd(void);\r
1478 double GetSelectedTotalSize(int Win);\r
1479 // ファイル一覧バグ修正\r
1480 //void MakeSelectedFileList(int Win, int Expand, int All, FILELIST **Base, int *CancelCheckWork);\r
1481 int MakeSelectedFileList(int Win, int Expand, int All, FILELIST **Base, int *CancelCheckWork);\r
1482 void MakeDroppedFileList(WPARAM wParam, char *Cur, FILELIST **Base);\r
1483 void MakeDroppedDir(WPARAM wParam, char *Cur);\r
1484 void AddRemoteTreeToFileList(int Num, char *Path, int IncDir, FILELIST **Base);\r
1485 void DeleteFileList(FILELIST **Base);\r
1486 FILELIST *SearchFileList(char *Fname, FILELIST *Base, int Caps);\r
1487 int Assume1900or2000(int Year);\r
1488 void SetFilter(int *CancelCheckWork);\r
1489 void doDeleteRemoteFile(void);\r
1490 // UTF-8対応\r
1491 int AnalyzeNameKanjiCode(int Num);\r
1492 \r
1493 \r
1494 /*===== toolmenu.c =====*/\r
1495 \r
1496 int MakeToolBarWindow(HWND hWnd, HINSTANCE hInst);\r
1497 void DeleteToolBarWindow(void);\r
1498 HWND GetMainTbarWnd(void);\r
1499 HWND GetLocalHistHwnd(void);\r
1500 HWND GetRemoteHistHwnd(void);\r
1501 HWND GetLocalHistEditHwnd(void);\r
1502 HWND GetRemoteHistEditHwnd(void);\r
1503 HWND GetLocalTbarWnd(void);\r
1504 HWND GetRemoteTbarWnd(void);\r
1505 int GetHideUI(void);\r
1506 void MakeButtonsFocus(void);\r
1507 void DisableUserOpe(void);\r
1508 void EnableUserOpe(void);\r
1509 int AskUserOpeDisabled(void);\r
1510 void SetTransferTypeImm(int Mode);\r
1511 void SetTransferType(int Type);\r
1512 void DispTransferType(void);\r
1513 int AskTransferType(void);\r
1514 int AskTransferTypeAssoc(char *Fname, int Type);\r
1515 void SaveTransferType(void);\r
1516 void SetHostKanjiCodeImm(int Mode);\r
1517 void SetHostKanjiCode(int Type);\r
1518 void DispHostKanjiCode(void);\r
1519 int AskHostKanjiCode(void);\r
1520 void HideHostKanjiButton(void);\r
1521 // UTF-8対応\r
1522 void SetLocalKanjiCodeImm(int Mode);\r
1523 void SetLocalKanjiCode(int Type);\r
1524 void DispLocalKanjiCode(void);\r
1525 int AskLocalKanjiCode(void);\r
1526 void HideLocalKanjiButton(void);\r
1527 void SaveLocalKanjiCode(void);\r
1528 void SetHostKanaCnvImm(int Mode);\r
1529 void SetHostKanaCnv(void);\r
1530 void DispHostKanaCnv(void);\r
1531 int AskHostKanaCnv(void);\r
1532 void SetSortTypeImm(int LFsort, int LDsort, int RFsort, int RDsort);\r
1533 void SetSortTypeByColumn(int Win, int Tab);\r
1534 int AskSortType(int Name);\r
1535 void SetSaveSortToHost(int Sw);\r
1536 int AskSaveSortToHost(void);\r
1537 void DispListType(void);\r
1538 void SetSyncMoveMode(int Mode);\r
1539 void ToggleSyncMoveMode(void);\r
1540 void DispSyncMoveMode(void);\r
1541 int AskSyncMoveMode(void);\r
1542 void SetRemoteDirHist(char *Path);\r
1543 void SetLocalDirHist(char *Path);\r
1544 void AskLocalCurDir(char *Buf, int Max);\r
1545 void AskRemoteCurDir(char *Buf, int Max);\r
1546 void SetCurrentDirAsDirHist(void);\r
1547 void DispDotFileMode(void);\r
1548 void LocalRbuttonMenu(int Pos);\r
1549 void RemoteRbuttonMenu(int Pos);\r
1550 \r
1551 /*===== statuswin.c =====*/\r
1552 \r
1553 int MakeStatusBarWindow(HWND hWnd, HINSTANCE hInst);\r
1554 void DeleteStatusBarWindow(void);\r
1555 HWND GetSbarWnd(void);\r
1556 void DispCurrentWindow(int Win);\r
1557 void DispSelectedSpace(void);\r
1558 void DispLocalFreeSpace(char *Path);\r
1559 void DispTransferFiles(void);\r
1560 void DispDownloadSize(LONGLONG Size);\r
1561 \r
1562 /*===== taskwin.c =====*/\r
1563 \r
1564 int MakeTaskWindow(HWND hWnd, HINSTANCE hInst);\r
1565 void DeleteTaskWindow(void);\r
1566 HWND GetTaskWnd(void);\r
1567 void SetTaskMsg(char *szFormat, ...);\r
1568 int SaveTaskMsg(char *Fname);\r
1569 void DispTaskMsg(void);\r
1570 void DoPrintf(char *szFormat, ...);\r
1571 void DoPrintf2(char *szFormat, ...);\r
1572 \r
1573 /*===== hostman.c =====*/\r
1574 \r
1575 int SelectHost(int Type);\r
1576 int AddHostToList(HOSTDATA *Set, int Pos, int Level);\r
1577 int CopyHostFromList(int Num, HOSTDATA *Set);\r
1578 int CopyHostFromListInConnect(int Num, HOSTDATA *Set);\r
1579 int SetHostBookMark(int Num, char *Bmask, int Len);\r
1580 char *AskHostBookMark(int Num);\r
1581 int SetHostDir(int Num, char *LocDir, char *HostDir);\r
1582 int SetHostPassword(int Num, char *Pass);\r
1583 int SetHostSort(int Num, int LFSort, int LDSort, int RFSort, int RDSort);\r
1584 void DecomposeSortType(ulong Sort, int *LFSort, int *LDSort, int *RFSort, int *RDSort);\r
1585 int AskCurrentHost(void);\r
1586 void SetCurrentHost(int Num);\r
1587 void CopyDefaultHost(HOSTDATA *Set);\r
1588 // ホスト共通設定機能\r
1589 void ResetDefaultHost(void);\r
1590 void SetDefaultHost(HOSTDATA *Set);\r
1591 void CopyDefaultDefaultHost(HOSTDATA *Set);\r
1592 int SearchHostName(char *Name);\r
1593 void ImportFromWSFTP(void);\r
1594 // 暗号化通信対応\r
1595 int SetHostEncryption(int Num, int UseNoEncryption, int UseFTPES, int UseFTPIS, int UseSFTP);\r
1596 \r
1597 /*===== connect.c =====*/\r
1598 \r
1599 void ConnectProc(int Type, int Num);\r
1600 void QuickConnectProc(void);\r
1601 void DirectConnectProc(char *unc, int Kanji, int Kana, int Fkanji, int TrMode);\r
1602 void HistoryConnectProc(int MenuCmd);\r
1603 char *AskHostAdrs(void);\r
1604 int AskHostPort(void);\r
1605 int AskHostNameKanji(void);\r
1606 int AskHostNameKana(void);\r
1607 int AskListCmdMode(void);\r
1608 int AskUseNLST_R(void);\r
1609 char *AskHostChmodCmd(void);\r
1610 int AskHostTimeZone(void);\r
1611 int AskPasvMode(void);\r
1612 char *AskHostLsName(void);\r
1613 int AskHostType(void);\r
1614 int AskHostFireWall(void);\r
1615 int AskNoFullPathMode(void);\r
1616 char *AskHostUserName(void);\r
1617 void SaveCurrentSetToHost(void);\r
1618 int ReConnectCmdSkt(void);\r
1619 // int ReConnectTrnSkt(void);\r
1620 // 同時接続対応\r
1621 int ReConnectTrnSkt(SOCKET *Skt, int *CancelCheckWork);\r
1622 SOCKET AskCmdCtrlSkt(void);\r
1623 SOCKET AskTrnCtrlSkt(void);\r
1624 void SktShareProh(void);\r
1625 int AskShareProh(void);\r
1626 void DisconnectProc(void);\r
1627 void DisconnectSet(void);\r
1628 int AskConnecting(void);\r
1629 #if defined(HAVE_TANDEM)\r
1630 int AskRealHostType(void);\r
1631 int SetOSS(int wkOss);\r
1632 int AskOSS(void);\r
1633 #endif\r
1634 SOCKET connectsock(char *host, int port, char *PreMsg, int *CancelCheckWork);\r
1635 // IPv6対応\r
1636 SOCKET connectsockIPv4(char *host, int port, char *PreMsg, int *CancelCheckWork);\r
1637 SOCKET connectsockIPv6(char *host, int port, char *PreMsg, int *CancelCheckWork);\r
1638 SOCKET GetFTPListenSocket(SOCKET ctrl_skt, int *CancelCheckWork);\r
1639 // IPv6対応\r
1640 SOCKET GetFTPListenSocketIPv4(SOCKET ctrl_skt, int *CancelCheckWork);\r
1641 SOCKET GetFTPListenSocketIPv6(SOCKET ctrl_skt, int *CancelCheckWork);\r
1642 int AskTryingConnect(void);\r
1643 // 同時接続対応\r
1644 //int SocksGet2ndBindReply(SOCKET Socket, SOCKET *Data);\r
1645 int SocksGet2ndBindReply(SOCKET Socket, SOCKET *Data, int *CancelCheckWork);\r
1646 // 暗号化通信対応\r
1647 int AskCryptMode(void);\r
1648 int AskUseNoEncryption(void);\r
1649 int AskUseFTPES(void);\r
1650 int AskUseFTPIS(void);\r
1651 int AskUseSFTP(void);\r
1652 char *AskPrivateKey(void);\r
1653 // 同時接続対応\r
1654 int AskMaxThreadCount(void);\r
1655 int AskReuseCmdSkt(void);\r
1656 // FEAT対応\r
1657 int AskHostFeature(void);\r
1658 // MLSD対応\r
1659 int AskUseMLSD(void);\r
1660 // IPv6対応\r
1661 int AskCurNetType(void);\r
1662 // 自動切断対策\r
1663 int AskNoopInterval(void);\r
1664 // 再転送対応\r
1665 int AskTransferErrorMode(void);\r
1666 int AskTransferErrorNotify(void);\r
1667 // セッションあたりの転送量制限対策\r
1668 int AskErrorReconnect(void);\r
1669 // ホスト側の設定ミス対策\r
1670 int AskNoPasvAdrs(void);\r
1671 \r
1672 /*===== cache.c =====*/\r
1673 \r
1674 int MakeCacheBuf(int Num);\r
1675 void DeleteCacheBuf(void);\r
1676 int AskCached(char *Path);\r
1677 int AskFreeCache(void);\r
1678 void SetCache(int Num, char *Path);\r
1679 void ClearCache(int Num);\r
1680 int AskCurrentFileListNum(void);\r
1681 void SetCurrentFileListNum(int Num);\r
1682 void SaveCache(void);\r
1683 void LoadCache(void);\r
1684 void DeleteCache(void);\r
1685 void MakeCacheFileName(int Num, char *Buf);\r
1686 void CountPrevFfftpWindows(void);\r
1687 \r
1688 /*===== ftpproc.c =====*/\r
1689 \r
1690 void DownloadProc(int ChName, int ForceFile, int All);\r
1691 void DirectDownloadProc(char *Fname);\r
1692 void InputDownloadProc(void);\r
1693 void MirrorDownloadProc(int Notify);\r
1694 void UploadListProc(int ChName, int All);\r
1695 void UploadDragProc(WPARAM wParam);\r
1696 void MirrorUploadProc(int Notify);\r
1697 void DeleteProc(void);\r
1698 void RenameProc(void);\r
1699 void MoveRemoteFileProc(int);\r
1700 void MkdirProc(void);\r
1701 void ChangeDirComboProc(HWND hWnd);\r
1702 void ChangeDirBmarkProc(int MarkID);\r
1703 void ChangeDirDirectProc(int Win);\r
1704 void ChangeDirDropFileProc(WPARAM wParam);\r
1705 void ChmodProc(void);\r
1706 // 64ビット対応\r
1707 //BOOL CALLBACK ChmodDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
1708 INT_PTR CALLBACK ChmodDialogCallBack(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
1709 void SomeCmdProc(void);\r
1710 void CalcFileSizeProc(void);\r
1711 void DispCWDerror(HWND hWnd);\r
1712 void CopyURLtoClipBoard(void);\r
1713 // 同時接続対応\r
1714 //int ProcForNonFullpath(char *Path, char *CurDir, HWND hWnd, int Type);\r
1715 int ProcForNonFullpath(SOCKET cSkt, char *Path, char *CurDir, HWND hWnd, int *CancelCheckWork);\r
1716 void ReformToVMSstyleDirName(char *Path);\r
1717 void ReformToVMSstylePathName(char *Path);\r
1718 #if defined(HAVE_OPENVMS)\r
1719 void ReformVMSDirName(char *DirName, int Flg);\r
1720 #endif\r
1721 // 自動切断対策\r
1722 void NoopProc(int Force);\r
1723 // 同時接続対応\r
1724 void AbortRecoveryProc(void);\r
1725 void ReconnectProc(void);\r
1726 \r
1727 /*===== local.c =====*/\r
1728 \r
1729 int DoLocalCWD(char *Path);\r
1730 void DoLocalMKD(char *Path);\r
1731 void DoLocalPWD(char *Buf);\r
1732 void DoLocalRMD(char *Path);\r
1733 void DoLocalDELE(char *Path);\r
1734 void DoLocalRENAME(char *Src, char *Dst);\r
1735 void DispFileProperty(char *Fname);\r
1736 HANDLE FindFirstFileAttr(char *Fname, WIN32_FIND_DATA *FindData, int IgnHide);\r
1737 BOOL FindNextFileAttr(HANDLE hFind, WIN32_FIND_DATA *FindData, int IgnHide);\r
1738 \r
1739 /*===== remote.c =====*/\r
1740 \r
1741 int DoCWD(char *Path, int Disp, int ForceGet, int ErrorBell);\r
1742 int DoCWDStepByStep(char *Path, char *Cur);\r
1743 int DoMKD(char *Path);\r
1744 void InitPWDcommand();\r
1745 int DoRMD(char *Path);\r
1746 int DoDELE(char *Path);\r
1747 int DoRENAME(char *Src, char *Dst);\r
1748 int DoCHMOD(char *Path, char *Mode);\r
1749 // 同時接続対応\r
1750 //int DoSIZE(char *Path, LONGLONG *Size);\r
1751 int DoSIZE(SOCKET cSkt, char *Path, LONGLONG *Size, int *CancelCheckWork);\r
1752 // 同時接続対応\r
1753 //int DoMDTM(char *Path, FILETIME *Time);\r
1754 int DoMDTM(SOCKET cSkt, char *Path, FILETIME *Time, int *CancelCheckWork);\r
1755 // ホスト側の日時設定\r
1756 int DoMFMT(SOCKET cSkt, char *Path, FILETIME *Time, int *CancelCheckWork);\r
1757 // 同時接続対応\r
1758 //int DoQUOTE(char *CmdStr);\r
1759 int DoQUOTE(SOCKET cSkt, char *CmdStr, int *CancelCheckWork);\r
1760 SOCKET DoClose(SOCKET Sock);\r
1761 // 同時接続対応\r
1762 //int DoQUIT(SOCKET ctrl_skt);\r
1763 int DoQUIT(SOCKET ctrl_skt, int *CancelCheckWork);\r
1764 int DoDirListCmdSkt(char *AddOpt, char *Path, int Num, int *CancelCheckWork);\r
1765 #if defined(HAVE_TANDEM)\r
1766 void SwitchOSSProc(void);\r
1767 #endif\r
1768 // 同時接続対応\r
1769 //int CommandProcCmd(char *Reply, char *fmt, ...);\r
1770 int CommandProcCmd(char *Reply, int* CancelCheckWork, char *fmt, ...);\r
1771 // 同時接続対応\r
1772 //int CommandProcTrn(char *Reply, char *fmt, ...);\r
1773 int CommandProcTrn(SOCKET cSkt, char *Reply, int* CancelCheckWork, char *fmt, ...);\r
1774 int command(SOCKET cSkt, char *Reply, int *CancelCheckWork, char *fmt, ...);\r
1775 int SendData(SOCKET Skt, char *Data, int Size, int Mode, int *CancelCheckWork);\r
1776 int ReadReplyMessage(SOCKET cSkt, char *Buf, int Max, int *CancelCheckWork, char *Tmp);\r
1777 int ReadNchar(SOCKET cSkt, char *Buf, int Size, int *CancelCheckWork);\r
1778 char *ReturnWSError(UINT Error);\r
1779 void ReportWSError(char *Msg, UINT Error);\r
1780 int ChangeFnameRemote2Local(char *Fname, int Max);\r
1781 int ChangeFnameLocal2Remote(char *Fname, int Max);\r
1782 \r
1783 /*===== getput.c =====*/\r
1784 \r
1785 int MakeTransferThread(void);\r
1786 void CloseTransferThread(void);\r
1787 // 同時接続対応\r
1788 void AbortAllTransfer();\r
1789 int AddTmpTransFileList(TRANSPACKET *Pkt, TRANSPACKET **Base);\r
1790 void EraseTmpTransFileList(TRANSPACKET **Base);\r
1791 int RemoveTmpTransFileListItem(TRANSPACKET **Base, int Num);\r
1792 \r
1793 void AddTransFileList(TRANSPACKET *Pkt);\r
1794 // バグ対策\r
1795 void AddNullTransFileList();\r
1796 void AppendTransFileList(TRANSPACKET *Pkt);\r
1797 void KeepTransferDialog(int Sw);\r
1798 int AskTransferNow(void);\r
1799 int AskTransferFileNum(void);\r
1800 void GoForwardTransWindow(void);\r
1801 void InitTransCurDir(void);\r
1802 int DoDownload(SOCKET cSkt, TRANSPACKET *Pkt, int DirList, int *CancelCheckWork);\r
1803 int CheckPathViolation(TRANSPACKET *packet);\r
1804 // タスクバー進捗表示\r
1805 LONGLONG AskTransferSizeLeft(void);\r
1806 LONGLONG AskTransferSizeTotal(void);\r
1807 int AskTransferErrorDisplay(void);\r
1808 // ゾーンID設定追加\r
1809 int LoadZoneID();\r
1810 void FreeZoneID();\r
1811 int IsZoneIDLoaded();\r
1812 int MarkFileAsDownloadedFromInternet(char* Fname);\r
1813 \r
1814 /*===== codecnv.c =====*/\r
1815 \r
1816 void InitTermCodeConvInfo(TERMCODECONVINFO *cInfo);\r
1817 int FlushRestTermCodeConvData(TERMCODECONVINFO *cInfo);\r
1818 int ConvTermCodeToCRLF(TERMCODECONVINFO *cInfo);\r
1819 \r
1820 void InitCodeConvInfo(CODECONVINFO *cInfo);\r
1821 int FlushRestData(CODECONVINFO *cInfo);\r
1822 // UTF-8対応\r
1823 int ConvNoConv(CODECONVINFO *cInfo);\r
1824 int ConvEUCtoSJIS(CODECONVINFO *cInfo);\r
1825 int ConvJIStoSJIS(CODECONVINFO *cInfo);\r
1826 int ConvSMBtoSJIS(CODECONVINFO *cInfo);\r
1827 int ConvUTF8NtoSJIS(CODECONVINFO *cInfo); // UTF-8対応\r
1828 int ConvSJIStoEUC(CODECONVINFO *cInfo);\r
1829 int ConvSJIStoJIS(CODECONVINFO *cInfo);\r
1830 int ConvSJIStoSMB_HEX(CODECONVINFO *cInfo);\r
1831 int ConvSJIStoSMB_CAP(CODECONVINFO *cInfo);\r
1832 int ConvSJIStoUTF8N(CODECONVINFO *cInfo); // UTF-8対応\r
1833 // UTF-8 HFS+対応\r
1834 int ConvUTF8NtoUTF8HFSX(CODECONVINFO *cInfo);\r
1835 int ConvUTF8HFSXtoUTF8N(CODECONVINFO *cInfo);\r
1836 void ConvAutoToSJIS(char *Text, int Pref);\r
1837 int CheckKanjiCode(char *Text, int Size, int Pref);\r
1838 // UTF-8対応\r
1839 int LoadUnicodeNormalizationDll();\r
1840 void FreeUnicodeNormalizationDll();\r
1841 int IsUnicodeNormalizationDllLoaded();\r
1842 \r
1843 /*===== option.c =====*/\r
1844 \r
1845 void SetOption(int Start);\r
1846 int SortSetting(void);\r
1847 // hostman.cで使用\r
1848 int GetDecimalText(HWND hDlg, int Ctrl);\r
1849 void SetDecimalText(HWND hDlg, int Ctrl, int Num);\r
1850 void CheckRange2(int *Cur, int Max, int Min);\r
1851 void AddTextToListBox(HWND hDlg, char *Str, int CtrlList, int BufSize);\r
1852 void SetMultiTextToList(HWND hDlg, int CtrlList, char *Text);\r
1853 void GetMultiTextFromList(HWND hDlg, int CtrlList, char *Buf, int BufSize);\r
1854 \r
1855 /*===== bookmark.c =====*/\r
1856 \r
1857 void ClearBookMark(void);\r
1858 void AddCurDirToBookMark(int Win);\r
1859 int AskBookMarkText(int MarkID, char *Local, char *Remote, int Max);\r
1860 void SaveBookMark(void);\r
1861 void LoadBookMark(void);\r
1862 int EditBookMark(void);\r
1863 \r
1864 /*===== regexp.c =====*/\r
1865 \r
1866 int LoadJre(void);\r
1867 void ReleaseJre(void);\r
1868 int AskRasUsable(void);\r
1869 int AskJreUsable(void);\r
1870 int GetJreVersion(void);\r
1871 int JreCompileStr(char *Str);\r
1872 char *JreGetStrMatchInfo(char *Str, UINT nStart);\r
1873 \r
1874 /*===== wildcard.c =====*/\r
1875 \r
1876 int CheckFname(char *str, char *regexp);\r
1877 \r
1878 /*===== registry.c =====*/\r
1879 \r
1880 void SaveRegistry(void);\r
1881 int LoadRegistry(void);\r
1882 void ClearRegistry(void);\r
1883 // ポータブル版判定\r
1884 void ClearIni(void);\r
1885 void SetMasterPassword( const char* );\r
1886 // セキュリティ強化\r
1887 void GetMasterPassword(char*);\r
1888 int GetMasterPasswordStatus(void);\r
1889 int ValidateMasterPassword(void);\r
1890 DWORD LoadHideDriveListRegistry(void);\r
1891 void SaveSettingsToFile(void);\r
1892 int LoadSettingsFromFile(void);\r
1893 // ポータブル版判定\r
1894 int IsRegAvailable();\r
1895 int IsIniAvailable();\r
1896 // バージョン確認\r
1897 int ReadSettingsVersion();\r
1898 // FileZilla XML形式エクスポート対応\r
1899 void SaveSettingsToFileZillaXml();\r
1900 // WinSCP INI形式エクスポート対応\r
1901 void SaveSettingsToWinSCPIni();\r
1902 \r
1903 /*===== lvtips.c =====*/\r
1904 \r
1905 int InitListViewTips(HWND hWnd, HINSTANCE hInst);\r
1906 void DeleteListViewTips(void);\r
1907 void EraseListViewTips(void);\r
1908 HWND GetListViewTipsHwnd(void);\r
1909 void CheckTipsDisplay(HWND hWnd, LPARAM lParam);\r
1910 \r
1911 /*===== ras.c =====*/\r
1912 \r
1913 void LoadRasLib(void);\r
1914 void ReleaseRasLib(void);\r
1915 void DisconnectRas(int Notify);\r
1916 int SetRasEntryToComboBox(HWND hDlg, int Item, char *CurName);\r
1917 int ConnectRas(int Dialup, int UseThis, int Notify, char *Name);\r
1918 \r
1919 /*===== misc.c =====*/\r
1920 \r
1921 int InputDialogBox(int Res, HWND hWnd, char *Title, char *Buf, int Max, int *Flg, int Help);\r
1922 // 64ビット対応\r
1923 //BOOL CALLBACK ExeEscDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
1924 INT_PTR CALLBACK ExeEscDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
1925 // 64ビット対応\r
1926 //BOOL CALLBACK ExeEscTextDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
1927 INT_PTR CALLBACK ExeEscTextDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
1928 // 全設定暗号化対応\r
1929 INT_PTR CALLBACK AnyButtonDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
1930 void SetYenTail(char *Str);\r
1931 void RemoveYenTail(char *Str);\r
1932 void SetSlashTail(char *Str);\r
1933 void RemoveReturnCode(char *Str);\r
1934 void ReplaceAll(char *Str, char Src, char Dst);\r
1935 int IsDigitSym(int Ch, int Sym);\r
1936 int StrAllSameChar(char *Str, char Ch);\r
1937 void RemoveTailingSpaces(char *Str);\r
1938 char *stristr(char *s1, char *s2);\r
1939 char *GetNextField(char *Str);\r
1940 int GetOneField(char *Str, char *Buf, int Max);\r
1941 void RemoveComma(char *Str);\r
1942 char *GetFileName(char *Path);\r
1943 char *GetFileExt(char *Path);\r
1944 char *GetToolName(char *Path);\r
1945 void RemoveFileName(char *Path, char *Buf);\r
1946 void GetUpperDir(char *Path);\r
1947 void GetUpperDirEraseTopSlash(char *Path);\r
1948 int AskDirLevel(char *Path);\r
1949 void MakeSizeString(double Size, char *Buf);\r
1950 void DispStaticText(HWND hWnd, char *Str);\r
1951 int StrMultiLen(char *Str);\r
1952 void RectClientToScreen(HWND hWnd, RECT *Rect);\r
1953 int hex2bin(char Ch);\r
1954 int SplitUNCpath(char *unc, char *Host, char *Path, char *File, char *User, char *Pass, int *Port);\r
1955 int TimeString2FileTime(char *Time, FILETIME *Buf);\r
1956 // タイムスタンプのバグ修正\r
1957 //void FileTime2TimeString(FILETIME *Time, char *Buf, int Mode, int InfoExist);\r
1958 void FileTime2TimeString(FILETIME *Time, char *Buf, int Mode, int InfoExist, int ShowSeconds);\r
1959 void SpecificLocalFileTime2FileTime(FILETIME *Time, int TimeZone);\r
1960 int AttrString2Value(char *Str);\r
1961 // ファイルの属性を数字で表示\r
1962 //void AttrValue2String(int Attr, char *Buf);\r
1963 void AttrValue2String(int Attr, char *Buf, int ShowNumber);\r
1964 void FormatIniString(char *Str);\r
1965 int SelectFile(HWND hWnd, char *Fname, char *Title, char *Filters, char *Ext, int Flags, int Save);\r
1966 int SelectDir(HWND hWnd, char *Buf, int MaxLen);\r
1967 void SetRadioButtonByValue(HWND hDlg, int Value, const RADIOBUTTON *Buttons, int Num);\r
1968 int AskRadioButtonValue(HWND hDlg, const RADIOBUTTON *Buttons, int Num);\r
1969 int xtoi(char *Str);\r
1970 int CheckFileReadable(char *Fname);\r
1971 int max1(int n, int m);\r
1972 int min1(int n, int m);\r
1973 void ExcEndianDWORD(DWORD *x);\r
1974 void SwapInt(int *Num1, int *Num2);\r
1975 int IsFolderExist(char *Path);\r
1976 int ConvertNum(int x, int Dir, const INTCONVTBL *Tbl, int Num);\r
1977 int MoveFileToTrashCan(char *Path);\r
1978 LONGLONG MakeLongLong(DWORD High, DWORD Low);\r
1979 char *MakeNumString(LONGLONG Num, char *Buf, BOOL Comma);\r
1980 // 異なるファイルが表示されるバグ修正\r
1981 char* MakeDistinguishableFileName(char* Out, char* In);\r
1982 // 環境依存の不具合対策\r
1983 char* GetAppTempPath(char* Buf);\r
1984 #if defined(HAVE_TANDEM)\r
1985 void CalcExtentSize(TRANSPACKET *Pkt, LONGLONG Size);\r
1986 #endif\r
1987 // 高DPI対応\r
1988 void QueryDisplayDPI();\r
1989 int CalcPixelX(int x);\r
1990 int CalcPixelY(int y);\r
1991 HBITMAP ResizeBitmap(HBITMAP hBitmap, int UnitSizeX, int UnitSizeY, int ScaleNumerator, int ScaleDenominator);\r
1992 // ソフトウェア自動更新\r
1993 void DecodeLineFeed(char* Str);\r
1994 // 暗号化通信対応\r
1995 int ReplaceAllStrings(char* Out, char* In, char* From, char* To);\r
1996 \r
1997 /*===== dlgsize.c =====*/\r
1998 \r
1999 void DlgSizeInit(HWND hDlg, DIALOGSIZE *Dt, SIZE *Size);\r
2000 void AskDlgSize(HWND hDlg, DIALOGSIZE *Dt, SIZE *Size);\r
2001 void DlgSizeChange(HWND hDlg, DIALOGSIZE *Dt, RECT *New, int Flg);\r
2002 \r
2003 /*===== opie.c =====*/\r
2004 \r
2005 int Make6WordPass(int seq, char *seed, char *pass, int type, char *buf);\r
2006 \r
2007 /*===== tool.c =====*/\r
2008 \r
2009 void OtpCalcTool(void);\r
2010 // FTPS対応\r
2011 void TurnStatefulFTPFilter();\r
2012 \r
2013 /*===== history.c =====*/\r
2014 \r
2015 void AddHostToHistory(HOSTDATA *Host, int TrMode);\r
2016 void AddHistoryToHistory(HISTORYDATA *Hist);\r
2017 int AskHistoryNum(void);\r
2018 void CheckHistoryNum(int Space);\r
2019 void CopyHistoryToHost(HISTORYDATA *Hist, HOSTDATA *Host);\r
2020 void CopyDefaultHistory(HISTORYDATA *Set);\r
2021 void SetAllHistoryToMenu(void);\r
2022 int GetHistoryByCmd(int MenuCmd, HISTORYDATA *Buf);\r
2023 int GetHistoryByNum(int Num, HISTORYDATA *Buf);\r
2024 \r
2025 /*===== clipboard.c =====*/\r
2026 \r
2027 int CopyStrToClipBoard(char *Str);\r
2028 \r
2029 /*===== diskfree.c =====*/\r
2030 \r
2031 void LoadKernelLib(void);\r
2032 void ReleaseKernelLib(void);\r
2033 char *AskLocalFreeSpace(char *Path);\r
2034 \r
2035 /*===== socket.c =====*/\r
2036 \r
2037 int MakeSocketWin(HWND hWnd, HINSTANCE hInst);\r
2038 void DeleteSocketWin(void);\r
2039 // ソケットにデータを付与\r
2040 int SetAsyncTableDataIPv4(SOCKET s, struct sockaddr_in* Host, struct sockaddr_in* Socks);\r
2041 int SetAsyncTableDataIPv6(SOCKET s, struct sockaddr_in6* Host, struct sockaddr_in6* Socks);\r
2042 int SetAsyncTableDataMapPort(SOCKET s, int Port);\r
2043 int GetAsyncTableDataIPv4(SOCKET s, struct sockaddr_in* Host, struct sockaddr_in* Socks);\r
2044 int GetAsyncTableDataIPv6(SOCKET s, struct sockaddr_in6* Host, struct sockaddr_in6* Socks);\r
2045 int GetAsyncTableDataMapPort(SOCKET s, int* Port);\r
2046 // IPv6対応\r
2047 //struct hostent *do_gethostbyname(const char *Name, char *Buf, int Len, int *CancelCheckWork);\r
2048 struct hostent *do_gethostbynameIPv4(const char *Name, char *Buf, int Len, int *CancelCheckWork);\r
2049 struct hostent *do_gethostbynameIPv6(const char *Name, char *Buf, int Len, int *CancelCheckWork);\r
2050 SOCKET do_socket(int af, int type, int protocol);\r
2051 int do_connect(SOCKET s, const struct sockaddr *name, int namelen, int *CancelCheckWork);\r
2052 int do_closesocket(SOCKET s);\r
2053 int do_listen(SOCKET s, int backlog);\r
2054 SOCKET do_accept(SOCKET s, struct sockaddr *addr, int *addrlen);\r
2055 int do_recv(SOCKET s, char *buf, int len, int flags, int *TimeOut, int *CancelCheckWork);\r
2056 int do_send(SOCKET s, const char *buf, int len, int flags, int *TimeOutErr, int *CancelCheckWork);\r
2057 // 同時接続対応\r
2058 void RemoveReceivedData(SOCKET s);\r
2059 // UPnP対応\r
2060 int LoadUPnP();\r
2061 void FreeUPnP();\r
2062 int IsUPnPLoaded();\r
2063 int AddPortMapping(char* Adrs, int Port, char* ExtAdrs);\r
2064 int RemovePortMapping(int Port);\r
2065 int CheckClosedAndReconnect(void);\r
2066 // 同時接続対応\r
2067 int CheckClosedAndReconnectTrnSkt(SOCKET *Skt, int *CancelCheckWork);\r
2068 \r
2069 /*===== updatebell.c =====*/\r
2070 \r
2071 void SaveUpdateBellInfo(void);\r
2072 \r
2073 \r
2074 #endif   // __COMMON_H__\r