OSDN Git Service

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