------------------------------------------------------------------------ TEEN 用 FTP プログラム パケットドライバ 用 FTP プログラム WinSock 用 FTP プログラム ftp.exe Version 0.06 Coypright (C) 2000-2004 by 合著@ABK, neko (WATTCP 部分) ------------------------------------------------------------------------ 0. このバージョンでの変更点  最後の方にある履歴を見てください。 1. このプログラムは何?  FTP (File Transfer Protocol) を使用してファイルの送受信を行います。  ウェブページ(いわゆるホームページ)のアップロード等が可能です。 2. 動作環境  以下の3つのネットワーク環境に対応しています。  全て別アーカイブで提供されています。それぞれ使用環境に応じてダウンロー ドしてください。  ◆ TEEN の動作する環境。※1  ◆ PC-98x1 マシンのパケットドライバの動作し DPMI が動作する環境。※2  ◆ Win32 + WinSock な環境。※3 ※1 TEEN とは、XMaZ Project さん作の TCP/IP Protocol Stack (TCP/IP とその組み合わせ) です。簡単に言えば様々な機種 (PC-88VA, PC-9801/21, FMR, FM-TOWNS, IBM-PC/AT) の DOS で動作する、インター ネットプロバイダへ接続するためのソフトです。PC-98 では Ethernet 版 も公開されてます。 詳しくは http://www.pc88.gr.jp/~teen/ を見てください。 ※2 98 用パケットドライバで動作する WATTCP98 バージョンは neko さん より公開されています。動作させるには別途 DPMI サーバ (cwsdpmi 等) が必須です。 詳しくは http://members.tripod.co.jp/nekozzz/ をご覧ください。 ※3 簡単に言うと、Windows 95 以降の DOS 窓環境です。とりあえず動作す れば良い程度に考えて移植しており、多少動作が不安定です。 3. 起動方法 1.ftp [options] -Num 2.ftp [options] [host [port]] 3.ftp [options] ftp://host:port 4.ftp [options] ftp://[user[:pass]@]host[:port][/path/[file]] [] で囲ってある所は省略可能である、という意味です。  1 番目の方法で起動した場合、ホスト定義ファイルの Num で指定した定義 を読み込み、指定したホストへ接続します。ホスト定義ファイルについては後 述します。  2 番目の方法で起動した場合、指定したホストへ接続してコマンド(または ユーザ名)入力待ちになります。ホスト名、ポート番号は省略可能です。省略 した場合、いきなりコマンド入力待ちになります。  3 番目の方法で起動した場合も 2 番目と基本的には変わりません。ただし、 ftp:// が必要なのと、ポート番号指定などが一般的な URL 形式になります。 また、自動で匿名ログインします。  4 番目の方法で起動した場合は、指定した段階まで自動で行います。host は必須ですがその他はオプションです。user が指定されている場合は、user 名の入力を自動で、pass 指定されていた場合はパスワード入力も自動で、 path が指定されている場合は、そのディレクトリへ移動するまで、file が指 定されてる場合はそのファイルをバイナリモードで取得(送信する場合は送信) して、FTP 接続を切断するまで行います。自動実行中にエラーがおきても、そ のまま進みます。 3.1 起動オプション 以下の有効なオプションがあります。多くのオプションは、後ろに - (マイナ ス) を付けると無効にすることが出来ます。 -a 匿名 (anonymous) でログインします。 -n 自動ログインをオフにします。現在はこのオプション は機能していません。 -A サーバアクティブモードで接続します。passive mode の逆で、サーバがこちらへ接続をしにきます。ポート フィルタリングファイアーウォールの中のマシンから 外側へ接続する場合は使用できません。 -p サーバパッシブモードで接続します。active mode の 逆で、こちらがサーバへ接続をしにいきます。ポート フィルタリングファイアーウォールの中のマシンから 外側へ接続する場合に使用してください。ポートフィ ルタリングファイアーウォールの外のマシンから内側 へ接続する場合は使用できません。 -P(portnum) 接続先ポート番号を指定します。 -B(filename) バッチファイルを有効にします。もしホスト名がコマ ンドラインで指定されていた場合は、そのホストへ接 続してからバッチファイルを実行します。接続に失敗 したら実行しません。 -S(filename) -B と同じ。 -L(filename) ログを取る場合、ログファイル名を指定します。 -N(lines) 一時停止行数を指定します。このオプションを指定し ない場合は、PC-98x1 と PC-88VA では現在の画面行 数にあわせて設定、その他は 23 行となります。 -c アップロード時にファイル名を小文字で送信します。 -C オプション -c をキャンセルします。 -g mget/mls/mdelete 時にファイル名展開をしません。 -i mget/mdelete/mput 時にプロンプトを出さずにすべて Yes として実行します。 -E エスケープシーケンスを使用して、サーバの応答に色 を付けます。 -s コマンドラインで URL を指定した際の自動モードで、 ファイルを取得するのではなく、ファイルを送信しま す。 -o (filename) 自動モードで、送信/受信するローカル側のファイル 名を指定します。 -l (filename) -o と同じです。 -J ヘルプ表示等を日本語にします。 -v 詳細に状況を表示します。 -V -v の反対です。 -D 設定ファイル FTP.DEF の設定内容を表示して、設定 番号を入力します。入力された番号は 3. の起動方法 1で指定された番号と同じ意味で、指定した番号の設 定を読み込み自動ログインを行います。 -DD 設定ファイル FTP.DEF の設定内容を表示します。 -? 簡単なヘルプを表示します。 3.2 ホスト定義ファイル  つーきちさん作の FTP.DEF 形式に対応しています。具体的には以下のよう なフォーマットです。 001 A ftp.komkon.org 001 U anonymous 001 P email@addr.com 001 N 21 001 O lcd=c:\data\html\homepage case=off passive=off 001 X this 001 > 毎回の自動実行コマンドを実行します 001 < ls -C  数字が定義番号を表します。順番である必要はありません。 次の英字によって設定の種類を示します。 A → (Address) サーバ名 U → (Username) ユーザー名 P → (Password) パスワード N → (portNumber) ポート番号  このホスト定義ファイルで定義されている番号を起動時にオプションとして 指定すると、そこへ接続しにいき、ユーザー名等がしていされていれば自動ロ グインします。  定義の数はいくらあっても構いません。ただし、1行は 253 文字以内に治 めてください。行頭に ; (セミコロン) があると、コメントとみなしてその行 を読み飛ばします。  次の設定は、私が拡張したものです。つーちきさんオリジナルの FTP では 無効です。 O → (Options) 接続前オプション設定 X → (eXecute) 実行コマンド > → 文字表示記述行 < → 実行コマンド記述行 3.2.1 拡張 O (実行前オプション)  設定 O で、接続前に毎回実行するコマンドを指定できます。コマンドはス ペースで区切って、必ず = (イコール記号) でパラメータを付けて定義します。 012 O lcd=c:\data\homepage passive=off  ここで設定できるコマンドはホストに接続していない状態で実行できるもの に限られます。また一部制限があります。 3.2.2 拡張 X (接続後自動実行オプション)  設定 X で接続後に毎回実行するコマンドを記述できます。コマンドは1行 に1コマンドで、記述方法は < と > を使用します。 012 X this 012 > 自動実行オプションを実行します 012 < ls -C 012 < bin 設定 X 行には、パラメータとして this を必ず付けてください。(将 来のための仕様です) > (だいなり) は、記述されている内容を画面に表示するだけです。 < (しょうなり) は、記述されている内容をコマンドとして実行します。 4. コマンド  以下に、ftp を起動してから使用できるコマンドを示します。コマンド名、 パラメータ名の順で書いてあります。  コマンド名は、一部を除いて他のコマンドと区別可能な範囲で略すことが出 来ます。例えば disconnect は、dis と略すことができます。また、コマンド 名は英大文字と小文字を区別しません。DISCONNECT でも disconnect でも、 はたまた DiSCoNNeCt でも全て同じです。  コマンド名とパラメータの間にはスペースまたはタブが1以上必要ですが、 1文字の記号のコマンド名には必要ありません。つなげて書くことが出来ます。 例:!dir  [] でくくられているパラメータは必要な場合のみ記述します。不必要な場 合は記述する必要はありません。[] でくくられていないパラメータは必須で すが、ftp> の所で入力せずにリターンすると、ほとんどのコマンドはユーザ に入力をきたします。 例: ftp> get (remote-file) README.eucJP (local-file) README.EUC  基本的なコマンドは次のようになります。 open 接続 close 切断 exit 終了 user ユーザ名入力 bin バイナリモード指定 (参考: ascii) dir, ls ファイル一覧取得 (参考: nlist) put, get ファイル送受信 (参考: mput,rput,mget,rget) cd ディレクトリ移動 (参考: mkdir,rmdir,lcd,rlcd) more ファイル内容表示 snew 新規のみ送信指定 (参考: rnew, newer, r/sunique) その他にも多くのコマンドが存在します。 4.1 コマンド説明 ! 子プロセスを起動します。 ? [command] help [command] コマンド一覧を表示します。引数が会った場合は、そのコマン ドの簡易ヘルプを表示します。 # コメントを記述します。このコマンドの行は無視されます。 < filename [start-line] batch filename [start-line] 入力をリダイレクトします。コマンドを filename から入力し ます。起動時オプションの -B (バッチファイル) と同じです。 ファイルエンドに達したら、コンソールからの入力に戻ります。 start-line が数字で指定されたら、その行から開始します。 > filename [open-mode] log filename [open-mode] | on | off 入出力のログをとります。と言っても、画面に表示される内容 をそのままファイルに落とすだけです。オプションの open-mode には、w または a を指定できます。w で、ファイ ルが既にある場合も上書き、a で追加書き込みとなります。 on を指定すると、以前ログを取っていた場合、再びそのファ イルを開きます。 off を指定すると、現在ログを取っている場合、それを終了し ます。 account account-info アカウント(課金)情報を送信します。 ascii アスキー転送モードにします。行末の CRLF/NL 変換が起きる 場合があります。 [参考: binary] append local-file remote-file リモートのファイル末尾へローカルのファイル内容を追加しま す。 binary image バイナリ転送モードにします。通常はこのモードを使用してく ださい。指定しないと大抵アスキー転送モードになっています。 backslash [on|off] slash [on|off] yen [on|off] スラッシュとバックスラッシュの変換するモードの切り替えを します。この設定を on にすると、ファイル名の \ を / に、 / を \ に変換します。 bye [errorlevel] exit [errorlevel] quit [errorlevel] FTP 接続を切断して DOS のコマンドラインへ戻ります。 errorlevel を指定した場合、DOS へその値を返します。 case [on|off] ファイル送信時、ファイル名を小文字に変換して送信するか否 かを切り替えます。 cat ローカルのファイル内容を内蔵ページャで閲覧します。 cd remote-directory リモート側でディレクトリを変更します。 [参考: mkdir, rmdir, rlcd, lcd, cdup] cdup リモート側で親ディレクトリに移動します。UNIX 系 OS なら ば、cd .. でも代用できます。 [参考: cd] chmod mode file-name リモート側のファイル属性を変更します。mode に新たに設定 するファイル名を、file-name に属性を変更するファイル名を 指定します。このコマンドをサポートしていないサーバもあり ます。 close disconnect FTP 接続を切断します。 [参考: open] cls 画面を消去してカーソルをホーム位置へ移動します。 [参考: echo, pause] connect hostname [port] open hostname [port] 指定したホストへ FTP 接続を開始します。設定ファイルの項 目を読み込んで接続する場合には hostname に -10 のように 設定ファイルの数値を指定します。また、ホスト名として - (←ハイフン)とだけ指定すると、設定ファイルの項目をリスト アップして、その中より接続先を番号で選択できます。 [参考: disconnect, close, exit] debug [on|off] デバッグモードを切り替えます。今の所意味はありません。 [参考: verbose] delete remote-filename リモート側のファイルを削除します。 [参考: rename] dir [pattern] [local-file] リモート側のディレクトリリストを表示します。local-file に保存するファイル名を指定すると、指定したファイルにディ レクトリリストを保存します。その場合、結果は表示されませ ん。 [参考: ls, nlist, mls, lls, encoding] else command [argument] 「if」コマンドが成立しなかったときに実行します。※後述 [参考: if] echo string [options] string で指定した文字を表示します。 option は以下の組み合わせを受け付けます。 -n 最後に改行しない -L ログファイルに記録しない -nL 上記両方 [参考: pause] encoding (method) [sub-method] ファイル名の漢字エンコード方法を指定します。現在、method として以下の指定が有効です。 sjis (Shift JIS) euc (EUC-jp (Extended Unix Code)) jis (JIS (ISO-2022-JP)) hex (Samba-Hex) Samba-Hex というのは UNiX like OS で動作する samba というソフトが作成するファイル名エンコード 法です。これのファイル名開始位置判別はかなりいい 加減なので正常に表示されない可能性があります。 また、エンコード方法の代わりに show と指定すると現在のエ ンコード方法が表示されます。 このコマンドで sjis 以外に設定しても、漢字エンコードされ て送受信されるのはあくまでファイル名だけで、ファイルの中 味にはタッチしません。 [参考: encto, mencto, rencto] encto encoding-to remote-file リモートのファイル名の漢字エンコードを変更します。 encoding-to には、変換後のファイル名漢字エンコードを指定 します。変換元の漢字エンコードは、encoding コマンドで現 在指定されている漢字コードになります。 [参考: encoding, mencto, rencto] english なるべく英語でメッセージを表示します。 [参考: japanese, language] get remote-file [local-file] recv remote-file [local-file] ファイルを受信します。 [参考: mget, rget, reget, rnew, put] goto (label) 指定したラベルまで処理をとばします。後方へは戻れません。 ※後述 [参考: batch, if] idle [timer] アイドル切断タイマーをサーバ側で設定します。FTP では、通 常数百秒何もせずにたつと自動的に接続が切断されます。これ を防止します。このコマンドの使用できないサーバもあります。 [参考: noop] if ['not'] condition [parameter] ['then'] command [argument] ifn ['not'] condition [parameter] ['then'] command [argument] 条件に合致した場合、command を実行します。※後述 [参考: batch, goto] japanese なるべく日本語メッセージ表示にします。 [参考: english, language] language [lang] 言語を切り替えます。現在使用できるのは 0 の英語と 1 の日 本語だけです。 [参考: japanese, english] lcd directory-name ローカルのカレントディレクトリを変更します。ドライブが指 定されたら、同時にカレントドライブも変更します。 [参考: cd, rlcd, lls] lpwd [drive-name] ローカルのカレントディレクトリを表示します。 [参考: lmkdir, lcd] ls [file-pattern] [local-file] nlist [file-pattern] [local-file] リモートのファイル名一覧を表示します。local-file に保存 するファイル名を指定すると、指定したファイルにディレクト リリストを保存します。その場合、結果は表示されません。 [参考: dir, mls, encoding] lls [-s] [file-pattern] ローカルのファイル名一覧を表示します。-s オプションを付 けると、サイズも同時に表示されます。 [参考: lcd, rlcd, lpwd, lmkdir] lmkdir directory-name ローカルにディレクトリを作成します。存在しないディレクト リにサブディレクトリを作成しようとした場合は、再帰的に目 的にディレクトリ名を作成します。 [参考: lcd, lls, lpwd] mdelete remote-files リモートのファイルを複数削除します。remote-files の指定 については、mget の説明を見てください。 [参考: mls, mget] mencto encoding-to remote-files リモートの複数ファイルのファイル名の漢字エンコードを変更 します。複数ファイルに対応している以外は、encto コマンド と同じです。 [参考: encto, rencto, encoding] mget remote-files リモートのファイルを複数取得します。glob が on になって いたら、csh ライクなメタキャラを使用してファイル名指定が 可能です。指定したパターンにマッチするファイルを取得しま す。(ただし、{} は使用できません) [参考: rget, mput, rput, mls] 使用可能メタキャラクタ ? 任意の1文字にマッチ * 任意の0文字以上にマッチ (ピリオドも含む) [a-z] 範囲指定 ※実際には、csh ライクなメタキャラを、正規表現に変換して、 正規表現でパターンマッチを調べています。ですので、^ や $, (, ), | も使用可能です。但し、. (ピリオド) は正規表 現に変換する際に \ でエスケープされます。 [参考: get, rget, rnew] mlistis list-command list-command-argument mget/mput/rget/rput/mls/mdelete/mencto/rencto コマンドで 利用する、ディレクトリリスト取得コマンドを変更します。標 準では mlistis LIST -1FA の状態になっています。v0.06 よ り前と同じ設定にするには、mlistis NLST -laF とします。 [参考: mls, mget, mput] mls remote-files local-file リモートのファイル一覧を取得して local-file に保存します。 画面に表示したい場合は local-file に - (ハイフン) を指定 します。通常の ls/nlist と違う点は、mget と同じように、 glob 設定によって指定されたファイルパターンと合致するか 調べて、同じなら出力します。 [参考: ls, dir, mlistis] mode struct 使用できません。 modtime filename 指定したファイルの日付を YYYYMMDDHHMMSS 形式で取得します。 このコマンドに対応していないサーバも結構あります。 [参考: size] mkdir リモートにディレクトリを作成します。このコマンドが出来な いサーバも存在します。 [参考: rmdir, cd, rlcd] mput local-files 複数のファイルをアップロードします。DOS のワイルドカード が使用できます。 [参考: rput, put, snew] newer ローカルよりもリモートのファイルが新しい場合にダウンロー ドします。なお、このコマンドの使用不可能なサーバもありま す。リモートにファイルが無い場合や、リモートのファイルの 日付の取得が不可能な場合は無視してダウンロードを行います。 なお、DOS のファイルの日付管理の問題上、直しようのない1 秒の誤差が生じる事があります。MDTM コマンドを使っていま す。 [参考: get, rnew] noop 何もしないコマンドを送信します。idle コマンドが無いサー バでも、このコマンドをたまに使用することで切断を防げるか もしれません。 [参考: idle] page remote-file less remote-file more remote-file リモートファイルの内容をページャで閲覧します。環境変数 PAGER で指定されているページャを起動して内容を見ます。環 境変数 PAGER が指定されていない場合は内蔵ページャ(逆ス クロール不可能)を使用します。 [参考: cat] passive [on|off] サーバパッシブモードを切り替えます。パッシブモードとは、 サーバ側へクライアントが接続を試みる方法です。パッシブモ ードは、こちらがファイアーウォール内で、相手がファイアー ウォール外の場合に有効です。標準状態では passive mode が on です。 password password なんらかのエラーなどで user だけ送信してパスワードが送信 できなかったとき、パスワードを送信します。 [参考: user, account] pause keys string [options] string を表示したあと、キー入力を待ちます。keys で指定さ れたキーが入力されたら次のコマンドへ進みます。この入力さ れたキーは、if コマンドの条件 choice で判定に利用できま す。日本語には対応していません。 options には、-u オプションが利用できます。 -u 入力された文字を英大文字に変換する キー入力は、keys で指定したキー以外に、[CTRL]+[C] と ESC があります。[CTRL]+[C] は検知できません。そのまま切断処 理になります。ESC は if 文で直接 ESC コードを指定すれば 検知できます。それが無理な場合は、if 文の最後に goto を 持っていけば処理出来ます。 例: cat menu.txt pause "どの処理を実行しますか? (1,2,3,ESC)> " -u if choice 1 goto syori1 if choice 23 goto syori2 goto cancel [参考: echo] put local-file [remote-file] send local-file [remote-file] ファイルを送信します。 [参考: mput, rput, snew, get] preserve [on|off] リモートのファイルを受信するときに、リモートでのファイル の更新日時をそのままローカルファイルに保存するかどうかを 切り替えます。これが on なら、サーバ側のファイルの日付を 保存出来ます。デフォルトでは on です。ただし対応していな いサーバもあります。具体的には MDTM を発行して日付を取得 します。対応していないサーバだったら、日付取得はあきらめ て続行します。 [参考: modtime] progress [on|off] ファイルの転送中に経過表示をするかどうか切り替えます。 prompt [on|off|yes|no] mget/mput/mdelete 時に、パターンにマッチしたファイルをコ マンド実行するか聞いてきますが、その設定をします。  off にすると、パターンにマッチしたファイルはユーザーに 聞かれる事なくコマンドが実行 (get/put/delete) されます。  yes にするとユーザーに聞いてきますが、その際に Y と N 以外のキーを押した際にデフォルトで実行するようにします。  no に設定すると Y と N 以外のキーを押した際にデフォル トで実行しなくなります。  on を指定すると、yes と同じになります。 [参考: mget, mput, mls, mdelete, mencto] pwd リモートのカレントワーキングディレクトリを表示します。 [参考: lpwd, cd] quote send-string "send-string 指定した内容をそのままサーバへ送信します。 [参考: site] rcvbuf size データ受信バッファのサイズを変更します。最低 512 bytes は必要で、最高 32KB までに制限しています。 [参考: sndbuf] reget remote-file local-file 指定したファイルを途中から受信します。local-file のファ イル最終位置から remote-file を取得します。 [参考: get, rnew] rename from-name to-name リモートのファイル名を変更します。 [参考: encto] rencto encoding-to remote-files リモートの複数ファイルのファイル名のエンコードを再帰的に 変更します。ディレクトリを再帰的に探索する以外は、 mgetenc と同じです。 このコマンドの実行条件については rget コマンドを参照して ください。 [参考: encto, mencto, rget, mlistis] rget remote-files リモートのファイルを再帰的に取得します。 このコマンドを使用できるサーバは BSD の標準 ftp サーバと 同じような動作をするサーバのみです。 具体的には、このコマンドを使用するには、dir -1F と実行し たときに、ディレクトリ名の末尾が / と表示されるサーバの み実行可能です。また、dir -1F したときに表示される、実行 可能ファイルの末尾の * (アスタリスク)、シンボリックリン クの @ (アットマーク)、ホワイトアウトの % (パーセント)、 ソケットの = (イコール)、FIFO の | (縦棒) は対応していま す。実行可能ファイルは通常ファイルと同様にダウンロードさ れ、シンボリックリンク等の特殊ファイルは常に無視されます。 remote-files に指定した名前がディレクトリだった場合、そ の中のファイルは remote-files にマッチしなくても全て取得 します。 例えば、aaa というディレクトリを rget aaa とした場合、 aaa ディレクトリの中に bbb というファイルやディレクトリ があっても全て取得します。 その他の動作は mget と同等です。 [参考: mget, mlistis] rhelp [command] リモートのコマンドヘルプを表示します。表示される内容はリ モートサーバによって違います。 [参考: ?, help, rstatus] rlcd directory-name リモートとローカル両方のカレントディレクトリを変更します。 [参考: cd, lcd, pwd, lpwd] rnew get, mget, rget コマンドでファイルを受信するとき、リモー トのファイルの方がローカルに存在するファイルより新しい場 合に受信するかどうか切替設定します。ファイルの日付取得が できないサーバもあり、その場合は強制的に受信します。(off の時と同じ動作)。デフォルトで off です。 rnew on にして get する事は、newer コマンドと同じ動作で す。ただし、newer コマンドは1度に1ファイルしかダウンロ ードできませんが、rnew on にして mget すれば新しい複数の ファイルを一気にダウンロードできます。 [参考: snew] rmdir directory-name リモートのディレクトリを削除します。サーバによってはこの コマンドをサポートしていないものもあります。 [参考: mkdir, pwd, cd] rput local-files ディレクトリを含めて、再帰的に mput します。file-pattern には DOS のワイルドカードを指定可能です。指定したパター ンがディレクトリなら、そのディレクトリの中のファイルをサ ブディレクトリを含めて全て put します。 [参考: mput, put, snew] rstatus リモートサーバの状態を表示します。 [参考: status, help] runique ファイルを受信する際に、ローカルにすでに同じ名前のファイ ルがある場合に上書きしてしまわないよう、すでにファイルが 存在する場合は自動的にファイル名を変更するか切り替えます。 通常は off です。(拡張子を数字に置き換えます。例: FILENAME.002) [参考: sunique, rnew] screen [line-number] 画面の行数を指定します。ls, less などのコマンドで画面が 流れないように一時キー入力待ちになりますが、その行数です。 0 にするとキー入力待ちをしなくなります。バッチファイルで はキー入力は無くなります。 [参考: echo, pause, batch] sdir [file-pattern] リモートサーバのファイル一覧を表示します。ls, nlist, dir と違い制御回線経由でファイル一覧を取得しますので高速です。 (ただし、何故か低速なこともあります。)そのかわり more 制御がありません。また、このコマンドが実行できないサーバ も多数存在します。また、プロキシー経由で接続する場合、プ ロキシーの性質によっては失敗する場合があります。実際には STAT コマンドを使用しています。 [参考: dir, ls, quote] site command [argument] リモートサーバ特有のコマンドを発行します。 [参考: quote] size remote-file リモートのファイルサイズを表示します。 [参考: modtime] snew put, mput, rput コマンドでファイルを送信するとき、ローカ ルのファイルの方がリモートに存在するファイルより新しい場 合にのみ送信するかどうか切替設定します。ファイルの日付取 得ができないサーバもあり、その場合は強制的に送信します。 (off の時と同じ動作)。デフォルトで off です。 [参考: rnew, newer] sndbuf size データ送信バッファのサイズを変更します。最低 512 bytes は必要で、最高 32KB までに制限しています。 [参考: rcvbuf] status 現在の各種設定状況などを表示します。 [参考: rstatus, help, encoding] sunique [on|off] ファイル送信時、リモートのサーバ内ですでに同じ名前のファ イルがある場合、上書きしてしまわないように自動的に名前を 変更してもらうようにします。ファイル名変更の仕方はリモー トサーバによって変化します。 [参考: runique, snew] system リモートサーバのシステム情報を表示します。 [参考: rstatus] tclose TEEN の PPP 接続を切断します。TCLOSE.EXE 相当です。 [参考: topen, tstatus] tenex tenex 転送モードにします。(なんかよくわからんけど、 NetBSD の ftp のソースを見てみると TYPE L 8 しているだけ だったので、それと同じ動作をします。) [参考: ascii, binary] topen TEEN の PPP 接続を開始します。TOPEN.EXE 相当です。 [参考: tclose, tstatus] tstate TEEN の PPP 接続の状況を表示します。 [参考: topen, tclose] type type [sub-type] TYPE コマンドを発行します。type には A, I, L などを、 sub-type には A の場合は N など、L の場合は 8 などです。 何もわからない人は使用しないでください。 [参考: ascii, binary] user username [password] [account] username でログインします。既にログインしている場合はロ グインし直します。password が指定された場合、同時に送信 します。匿名(anonymous)ログインしている場合は、ログイ ンし直しが出来ない事がありますので、その場合は close し てから再び open してください。 [参考: password, account, open] umask [value] unices 系 OS の UMASK 値を設定します。UMASK とはモード指 定せずにファイルを新規作成するときに、0 で AND を取るビ ットの事です。022 なら、755 で AND が取られます。 verbose [on|off] 詳細表示モードを切り替えます。ls や dir コマンドの時にも 転送状況が表示されたり、サーバとの接続に関する表示内容が 増えます。 [参考: debug, status] 4.2 非標準的コマンドについて  idle, umask コマンドは標準コマンドではありません。サポートしていないサ ーバがある可能性があります。  mkdir, rmdir, pwd 等のディレクトリ系コマンドは、リモートの OS がディレ クトリシステムではな場合、使用できない可能性があります。  reget コマンドをサポートしていないサーバもあります。  rget は UNIX の ls -F を NLST コマンドで取得可能なサーバのみが対象です。 それ以外では使用できないと思われます。 4.3 バッチファイルサポート用コマンド  次のコマンドは、バッチファイルで使用すると便利かもしれないと思ったので 作成しました。 goto 指定ラベルまで移動。 if 条件に合致した場合コマンド実行。 ifn 条件に合致した場合コマンド実行。 else 前回の if 文が失敗だった場合にコマンド実行。 4.3.1 goto  goto コマンドは、指定したラベルまでコマンドを読み飛ばします。ラベルは 行頭から「:」(コロン) で始まって、32 文字以内の文字列です。goto 文に指定 するラベル名にはコロンは付けません。if 文と合わせて使用できます。 ※注意 通常のコンソール入力時に goto を使用すると何もコマンドが 効かなくなります。その場合は手動でラベルを入力するか、 ^Z[RETURN] (^Z は CTRL 押しながら Z キー) と入力してくだ さい。 4.3.2 if  if コマンドは、指定した条件が成立した場合、コマンドを実行するというも のです。 書式:if ['not'] condition [parameter] ['then'] command [argument] not 条件が成立しなかった場合に、command を実行します。 condition 条件です。 parameter 条件にパラメータが付く場合、ここに書きます。 then あっても無くても構いません。 command 条件が成立した場合に実行するコマンドです。 argument 実行するコマンドに渡す引数です。 condition(条件)には以下の物があります。 reply:success 最後のリモートサーバからの応答コードが成功 (200 番台) の時に成立します。 reply:fail 最後のリモートサーバからの応答コードが失敗 (400 番以降) の場合に成立します。 reply (code) 最後のリモートサーバからの応答コードが code の場 合、成立します。 choice (keys) 最後の pause コマンドのキー入力が keys のうちの どれかの場合、成立します。 cmd:ok 最後に実行したコマンドが成功していた場合、成立し ます。 cmd:error 最後に実行したコマンドがエラーだった場合、成立し ます。 cmd:usage 最後に実行したコマンドが使用方法表示だった場合、 成立します(笑)。 connected opened サーバに接続している場合、成立します。 disconnected closed サーバに接続していない場合、成立します。 今の所これだけです。 4.3.3 ifn  ifn は、if コマンドに最初から not が付いているのと同じ意味になります。 ですので、ifn not とすると、通常の if コマンドに戻ります。詳細は if コマ ンドを見てください。 4.3.4 else  最後に実行した if/ifn コマンドが条件不成立で command が実行され無かっ た場合にコマンドを実行します。「最後に実行した」という所が味噌で、途中に if/ifn を挟まなければ次のような事ができます。 if reply:success cd datadir1 else cd tmpdir put datafile1.dat else goto label1 put datafile2.dat :label1 4.4 データ転送 4.4.1 中断について  データ転送中に [CTRL]+[C] キー (CTRL を押しながら C キー) を押すと中 断できます。「データ転送」とは以下のコマンドを実行すると起きる可能性が あります。技術的なことを言うと、ESC キーで中断した場合、ABOR コマンド をサーバへ送信して、TCP コネクションを終了します。 append get (recv) put (send) reget dir ls (nlist) mget mls (mdir) mput rput ※ () 内はエイリアス(別名) ただし、その後の動作が不安定になります。 TEEN版 ファイルが高い確率でオープン出来ません。 Windows版 通信が切断されます。 現在原因を調べています。 4.5 サポートFTPコマンド一覧 QUIT LIST RETR DELE SYST CDUP XCUP USER NLST STOR RNFR STAT CWD XCWD PASS PORT APPE RNTO HELP PWD XPWD ACCT PASV STOU SIZE SITE MKD XMKD NOOP TYPE REST MDTM ABOR RMD XRMD EPRT EPSV SITE コマンド: SITE any-string SITE IDLE SITE UMASK SITE CHMOD 4.5.1 使用できない可能性のあるコマンド  以下はサーバ側の都合により使用できない可能性のあるコマンドです。 低機能なサーバ相手 (たとえば Solaris の標準 ftpd など) では使え ないことが多いコマンドです。また、場合によっては中間にファイアー ウォールがある場合も使えない可能性があります。ほとんどは標準仕様 以外のコマンドなので使えなくても管理者に文句を言ってはいけません。 MDTM 日付取得 (newer, modtime, preserve, r/snew 等に 影響) SIZE サイズ取得 (ダウンロード時の経過表示に影響) SITE xxxxx 拡張機能 (chmod, umask, idle 等) [5. は欠番。] 6. まめ知識  以下にいくつか豆知識を書いておきます。幾つか間違っている所があるかも知 れません(特に用語)が、その場合は是非私に指摘してください。鵜呑みにしな い程度に知っておくと何かあったときに役立つかも(?)知れません。 6.1 FTP (File Transfer Protocol)  FTP (File Transfer Protocol) は通常、コマンドなどを送受信する『制御回 線』と、データのみを転送する『データ回線』が存在します。データ回線は場合 に応じて作成(おもにファイル転送時)しますが、制御回線は FTP セッション をクローズするまで(close, bye コマンド等が該当)接続しっぱなしです。 6.2 第3者仲介転送方式 6.2.1 FTP Proxy FTP Proxy とは、通常ファイアーウォールを越えるために存在しますが、その 他に公開 FTP Proxy server なども存在します。FTP Proxy は FTP の伝送路 の中間に位置し、転送を仲介します。 例: +--------------+ +---------+ +------------+ | FTP Server A | |FTP Proxy| |クライアント| | | <-> | | <-> | | | 目的のデータ | | | | | +--------------+ +---------+ +------------+  クライアントは通常、Proxy かどうか区別する必要はありません。Proxy の実 装によって違いますが、次のようにして接続します。 例:FTP Proxy で core.ring.gr.jp へ匿名ユーザで接続する場合 パターン1:ユーザIDの入力で @目的のホスト名 と入力 A:\>ftp ftpproxy.honyarara.ne.jp <入力> Conneced to ftpproxy.honyarara.ne.jp. 220 FTP Server ready Name_(123.45.67.89:anonymous): ftp@core.ring.gr.jp <入力> 331 Enter your e-mail address as password. Password: your_mailaddress@nantoka.co.jp <入力> パターン2:ディレクトリでホストを指定 ftp> open ftpproxy.honyarara.ne.jp <入力> 220 FTP server ready ftp> user anonymous username@mailaddr.com <入力> 331 Enter your e-mail address as password. 230 guest login ok. ftp> cd core.ring.gr.jp <入力> パターン3:一旦ログインしてもう一度ユーザ名を送る A:\>ftp ftpproxy.honyarara.ne.jp <入力> Conneced to ftpproxy.honyarara.ne.jp. 220 FTP Server ready Name_(123.45.67.89:anonymous): ftp <入力> 331 Enter your e-mail address as password. Password: username@mailaddr.com <入力> 230 guest login ok ftp> user ftp@core.ring.gr.jp username@mailaddr.com <入 力> パターン4:透過的プロキシー A:\>ftp core.ring.gr.jp Conneced to ftpproxy.honyarara.ne.jp. 220 FTP Server ready 透過的プロキシサーバは、何も考えないで普通に接続できます ので、一見プロキシーを使用していないように見えますが、実 際はプロキシーが使われています。大きな組織のファイアーウ ォールでは多いタイプかと思います。  上の各例(パターン1、4を除く)だと FTP Proxy へ接続するのに anonymous(匿名)接続していますが、anonymous 接続でない場合は、それぞれ FTP Proxy 用のユーザ名、パスワードを入力します。  データ転送などはだいたいの場合、適宜プロクシサーバがうまくやってくれま す。 6.2.2 Gate FTP  Gate FTP とは、2台のホスト間でデータ転送を実現するために、もう1台制 御用ホストを用意してデータ転送をする方式です。これは、制御回線で上手くコ マンドを使い分けてホスト間でデータ転送を行う仕組みです。この FTP.EXE で はサポートしていません。第一どんな時に使うのかを私は知りません(ォィ 例: 192.168.1.53 172.15.1.24 +---------------+ +------------+ | FTP Server A |データ |FTP Server B| | | ←→ | | | 目的のデータ | | | +---------------+ +------------+ 1.PASV ↑  ↑ 2.PORT 192,168,1,53,2,100 (結果:192,168,1,53,2,100)| コマンド | 4.RETR ↓  ↓ 3.STOR +-----------------+ | | | 制御用サーバ | | | +-----------------+ 10.234.197.6 6.3 IPv6 対応について  Winsock 版では IPv6 に対応しています。Windows2000,XP で動作を確認して います。WindowsNT4.0 + MSRIPv6 の環境ではテストしていません(おそらく使 えるとは思いますが確認していません。)  FTP サーバへ接続するのに IPv6 プロトコルを使用した場合、データ転送も自 動的に IPv6 で行います。データ転送に IPv6 が使用出来なかった場合(EPRT, EPSV に失敗した場合)は IPv4 でデータ転送を行おうとします。(この辺は十 分にはテストされていません。)  IPv6 対応の FTP は FTP_IPV6.EXE です。FTP.EXE に改名するなどして利用し てください。 7. 動作上の注意・不具合など 7.1. バグと制限  以下はわかっている範囲でのバグまたは制限です。 ・DOS の文字入力ルーチンを使用しているので、127 文字以上入力できま せん。これはそのうち変更する予定です。 ・メモリ確保・解放の時にエラーチェックをおこなっていません。そのか わり、コマンド入力の度にエラーチェックをしています。メモリ関係エ ラーが起こっていたら、heapcheck() = -1 のように表示されます。 ・予期しないサーバからの応答が来た場合、画面に表示されません。その 際は、コマンド入力画面でリターンのみを押せば表示されます。 ・いくつか隠しコマンドエイリアスがあります。将来のバージョンでは保 証されません。注意してください。 ・PORT, PASV 関係の、TCP ハンドルの確保・接続・切断・解放管理がいま いちです。なにかおかしいときは、一旦 ftp.exe を終了して再び接続し 直すと良いと思います。 ・バイト毎秒の計算は常に1秒多くして計算しています。 ・TEEN ではあまりダウンロード速度が速くならないようです。 7.3 匿名ログイン  -a オプションで匿名ログインを使用したときに、コマンドラインで指定 した URL にユーザ名やパスワードが含まれていたら、そちらを送信します。 コマンドラインでユーザ名やパスワードが含まれていなければ、プログラム で自動的に有効ではない適当な E-Mail アドレスを送信します。(多くの場 合、それで何の問題もなく匿名接続可能です。) 7.4 コマンドラインでの URL でのディレクトリ指定  コマンドラインで URL を指定する際、すべて相対 URL として取り扱いま す。/ (ルート)ディレクトリからパスを指定したい場合は、 ftp://ftp.domain.name/%2Fetc/rc.conf のように先頭に %2F を指定してく ださい。(面倒なので %2F はパス名の先頭のみ検査しています。) 8. 謝辞 ・RFC 959, RFC 1121 ・NetBSD/pc98 1.4.1 の /usr/bin/ftp のソースプログラム ・NetBSD/pc98 1.4.1 の /usr/libexec/ftpd の動作 ・つーきちさん作の FTP.EXE ・Shinra さん作の ESEMAIL, HttpGet のソース ・neko さんによる WATTCP 対応改造と make のテスト ・OPRETER さん作の PWGET のソース  上記にあげた物を大変参考に致しました。各制作者の方には大変感謝 致します。  また、TEEN 関係のソフトウェアを制作してくださっている方々には 感謝いたします。特に 98 での実用的な PPP での TCP/IP 環境 TEEN を作られた Shinra さんには感謝いたします。これで Windows を起動 する回数がグッと減りました(笑)  そして、WATTCP に移植してくださった neko さん、誠にありがとう ございます。これからもよろしくお願いします(笑) m(__)m  さらに、未発見だったアホらしい沢山のバグを発見してお知らせして くれた 鈴木頼雄(w@stone) さん、ありがとう御座います。 9. その他 9.1 今後の予定 ・ファイル送受信で MB/sec に表示桁幅を対応。 ・名前変換マップ(nmap)、トークンマップ(ntrans)の作成。 ・rget でスペシャルファイル判定の末尾の文字を変更可能に。 ・[TAB] キーによるコマンド名/ファイル名の補完 ・コマンドライン編集機能の強化 ・認証の暗号化(存在するのか?) ・UNIX に移植とか。 ・漢字エンコード変換微調整。 ・DOS 版での長いファイル名。 9.2 履歴 2004/12/29 (0.06) ・バッチファイルが無いときに無限ループに陥るバグを修正。 (Thanks kkkwt さん) ・encto, mencto, rencto コマンドを作成。 ・UNIX 系の高機能 ftpd を中心に RFC になるべく沿う動きが 出てきたため、NLST コマンドでの rget が不可能なサーバ が増えてきた。これに対処するため、rget での標準のリス ト取得を NLST -F から LIST -1FA に変更した。 ・mlistis コマンドを追加。上記の LIST -1FA を変更できま す。status コマンドで現在の設定がわかります。 ・コマンドが増えてきたため、互換性の為に存在するコマンド のエイリアスをヘルプ一覧に表示されないようにした。表示 されないだけで、将来的に削除される予定はありません。 (struct,mode,cr,english,japanese,tenex) ・送信コマンド文字列のバッファリングを行うようにした。改 行または一定の文字数までは、1つのコマンド全て1つの TCP パケットで送信できる可能性が増えました。これにより、 透過型のファイアウォールやプロクシが途中に存在する場合 のコマンド成功確率が上がります。(Thanks 前川 さん) 2004/11/04 (0.05y) ・設定ファイルでログイン後の自動実行コマンドを設定すると コマンドライン入力バッファが破壊される事があったバグを 修正。(Thanks えびな さん) ・スラッシュ/円マーク変換ルーチンが漢字未対応だったバグ 修正。 ・cshライクメタキャラ変換ルーチンが漢字未対応だったバグ 修正。(以上2つ Thanks 佐藤 茂典 さん) 2004/01/08 (0.05v) ・user コマンドでパスワードを続けて入力出来ないバグを修 正。(Thanks かわ さん) 2003/09/07 (0.05u) ・ファイル受信時に、既にファイルが存在する時に、受信する ファイルサイズのほうが既存のファイルより小さい場合に、 そのサイズ以降に既存のファイルの内容が残ってしまうバグ を修正。(Thanks たね さん) 2003/06/05 (0.05t) ・IPv6 のサーバに接続中、パッシブモードのアドレス省略時 に、1から接続を試行するのをやめて、制御回線と同じアド レスに接続するようにした。 2003/06/01 (0.05r) ・rput をさらに微調整とバグ修正。 ・Winsock で受信待ちに MSG_PEEK を利用しないように修正。 2002/12/21 (0.05q) ・rput も正常に動作していなかったのを修正。 ・「4.4.1 中断について」を加筆修正。 2002/12/14 (0.05p) ・12/11 での修正とは別に、rget が正常に動作していなかっ たのを修正。 ・IPv6 対応がエンバグしていたのを修正。 2002/12/11 ・rget (再帰的get) で、空白を含むディレクトリ名を扱える ようにした。 ・設定ファイルで指定するスクリプトや batch コマンドで exit を実行しても終了しない事があったのを修正。 2002/12/08 (0.05o) ・Windows2000/XP 向けの IPv6 対応。(Windows2000 + IPv6 Technology Preview で動作確認) 2002/03/22 (0.05n) ・ver.0.05m の変更が正常に動作していなかったのを修正。 2002/03/17 (0.05m) ・全てが . (ピリオド)で構成されているファイル名は mget/rget で受信しないようにした。 2002/03/15 (0.05l) ・? のコマンド一覧で rget が表示されないバグを修正。 ・rget で、1つディレクトリの中に入ったら、そのディレク トリから出てきたあと、残りのエントリを全てディレクトリ と判断してしまっていたバグを修正。 ・rget で、シンボリックリンク等の特殊ファイルを ignored と表示したにも関わらずダウンロードしようとしていたのを 修正。 2002/03/14 (0.05k) ・rlcd コマンド作成。 ・lmkdir コマンド作成。 ・rget コマンド作成。 ・lcd で / → \ 変換を行うようにした。 ・lcd でディレクトリ名の最後に \ があってもディレクトリ 変更できるようにした。 ・mget で表示されるダウンロード総数を多少まともにした。 ・rput で送信するとき、ディレクトリ名を指定した場合、そ のディレクトリ以下はファイルパターン *.* で rput する ように変更。(以前の仕様→《注意として、例えば file-pattern が *.c 等の場合、ディレクトリ名もそのパタ ーンにマッチしなければなりません。》←が変更になりまし た。) 2002/03/11 (0.05j) ・ダウンロードの経過時間表示で 0 でわり算してしまうバグ を修正。(Thanks 鈴木頼雄(w@stone)さん)) 2002/03/07 (0.05i) ・newer/rnew でメモリ破壊するバグを修正。 ・preserve on の時、ファイルの時刻が1時間遅れてしまうこ とがあるのを修正。(以上2つ、Thanks 鈴木頼雄(w@stone) さん) 2002/02/11 ・lls -s で win32 とそうでない環境とで書式が間違っていた のを修正。 2002/02/03 (0.05h) ・Visual C++ 5 で compile すると while(ptr) が正常に評価 できない個所があったので最適化 OFF でバイナリのバグを 修正。 ・mls が2番目の引数 (ローカルファイル名) にもマッチして いたのを修正。 ・Windows 環境で LFN を多少まともに表示するようにした。 ・Windows 環境でリザルトコードに色を付けるようにした。 ・Windows 環境で code page が 932 の場合はデフォルトメッ セージを日本語にした。 ・Visual C++ だと mput が rput と同じになってしまうのを 修正。 2002/01/28 (0.05g) ・一部のコマンドで空白文字を余計に送信してエラーになって いたのを修正。 2001/11/11 (0.05f) ・Winsock で make できるように調整 (coding.[ch]) 2001/10/28 (0.05e) ・ftp> からのコマンドラインで # (sharp mark)をコメント記 号として認識しないように変更。 ・パスワード入力ルーチンで [BS] で戻りすぎるバグを修正。 2001/10/21 (0.05d) ・ftp.def ファイルでの接続後自動実行コマンドを作成。 ・ftp.def ファイルでの接続後自動実行スクリプトを作成。 ・screen コマンド作成。 2001/08/23〜26 (0.05c) ・encode コマンド作成。 ・プログラム内部でのユーザ入力関係を簡素化と改良。 (1) 複数パラメータ入力時の対話状態でのスペース区 切りは無効になった。 (2) コマンド入力に於いて、パラメータをシングルク ォーツまたはダブルクォーツで囲むことによってスペ ースをパラメータに含ませることを可能にした。これ により以下のようなことが可能。(以下の例はリモー トが BSD 系 ftp サーバの場合) ls "-d tmp" (tmp ディレクトリ自身を表示) ls "-C *tgz" (*tgzのファイルを並べて表示) ・-D オプションで番号選択するように変更、-DD オプション 追加。 ・open コマンドでもホスト名を - と指定することでリストか ら選択できるように変更。 ・" (ダブルクォート)コマンド作成。機能は quote と同じ。 ・password 入力で、入力文字が表示されないようにした。 ・password 入力で、スペース入力を有効に。代わりに account の先行入力が不可能になった。 ・slash/baskslash 変換の表示と動作が逆だった。修正。 ・case で英小文字へ変換を随所で行うようにした。 ・その他内部構造を変化させた所が多いので、細かい動作が変 更されたりバグってる可能性有り。 2001/05/19 (0.05b) ・append が正しく動作していなかった(putと同じだった)の を修正。(thanks 田辺 隆洋さん) 2001/05/02 ・プロンプト ftp> の状態で、先頭に空白文字が入っても大丈 夫にした。 ・gets() を無くした。(fgets() へ移行) 2001/05/01 (0.05) ・この2、3日で WinSock への移植作業だいたい終わり。 2001/03/03 (0.03i 公開) ・新規ファイルのみ転送トグルスイッチ (snew, rnew) を作成。 ・ファイル受信時、データ回線を開くタイミングを後にずらし た。 ・mput 表示修正。 ・その他細かな点を修正。 2001/02/16 ・open コマンドで -n 形式でホストを指定した場合、条件に よっては解放できないメモリを解放していたバグを修正。 2001/02/08 (0.03g 公開) ・^C で中断が上手くいかないのを修正。(CTRL+C チェックす る DOS ファンクションを呼んでいなかったのが原因) ・パケットドライバ版を neko さんから公開してもらうように した。ありがとう、neko さん。 2001/02/08 (0.03f) ・WATTCP でコンパイル出来るよう修正。 ・コマンドライン指定での匿名ログインでパスワードを2回送 信してしまう可能性のあるバグを修正。 2001/02/07 (0.3e) ・WATTCP でコンパイル出来るようデバグ。 ・メータ表示補正(100KB/s まで表示可能に)。 ・このファイルの FTP Proxy について追加と修正。 ・open コマンドで -10 のようにコマンドラインの指定と同様 に設定ファイルから読み込むようにした。 ・status の表示追加。 ・起動時 -D オプション追加。 2001/02/04 (0.3d) ・ソースファイル分割(WATTCP ルーチン取り込み) ・WATTCP 当該ルーチンのほとんどは neko さん著作です。あ りがとうございます。 ・rput コマンド作成。 2000/12/24 ・データ転送中断を ^C に変更。 ・コマンドライン URL 指定で、ftp://host[:port] 形式の場 合、自動で匿名ログインするようにした。 2000/08/05 ・0.03b として公開。 2000/08/02 ・dir や ls 等の表示、cat 等でファイル等を閲覧する場合、 1画面ごとのスクロールだけではなく、1行ずつのスクロー ルも設けた。j または RETURN キーで可能です。 ・dir, ls, nlist 命令で、ローカルファイルへ結果を保存出 来るようにした。 2000/07/30〜31 ・とりあえず preserve コマンド完成。 ・newer コマンド追加作成。 ・get等によるデータ受信時、データ回線を開くタイミングを 後の方にずらした。 ・TEEN が常駐していない時で、何も引数が無いときは usage を表示するように変更。 2000/07/03 ・sdir コマンド追加作成。 ・FTP Proxy 関係について書いた。 2000/06/04 (0.03a 公開) ・コマンド case で、表示される on/off が glob のものとな っていたのを修正。(表示が変なだけで実害はありません) ・コマンドライン URL 分解がバグってたのを修正。 ・ファイル送受信時に表示する経過表示を詳しくした。 ・ドキュメントのバージョン番号がなぜか 0.05 になっていた のを修正。 ・preserve(サーバ側のファイルの日付をクライアント側に反 映)が出来そうだが、Turbo C++ 1.01 の mktime(), localtime() は全く Time Zone (SET TZ=JST-9 等) を反映 してくれないのでしばらくお預け。 2000/06/04 (0.03 公開) ・2次バッファのサイズを 255 bytes から 1024 bytes に変 更。 ・データ受信時、なるべく最後の方でデータ損失をしないよう に修正。 ・コマンドラインで指定した URL は全て相対 URL とした。 2000/05/24 ・サーバのレスポンス読み取り後のバッファフラッシュをやめ た。これまで dir や ls した時に 226 コードがサーバから 速く得られて、ESC を押さなければならない場合があったが それを修正。 ・\ と / 変換をするとハングアップした問題を修正。 2000/03/18 (0.02 公開) ・オプション -i (prompt を off に) 追加。 ・いくつかの出力を標準出力へ出すように変更。 ・匿名ログイン時に、URL に ID や PASSWORD が含まれていた ら、それを送信するようにした。 ・コマンド prompt 追加。それに伴い mget,mput,mdele,mls を修正。 ・-E- が効いてなかった。修正。 ・ドキュメントに間違いなど多数有り(笑) 修正。 ・その他。 2000/03/17 (0.01 公開) ・PORT コマンドでの通信に成功。 ・色々。 2000/03/16 ・if コマンド(笑) ・mget/mput/mdelete 作成。 2000/03/15 ・passive mode でのファイル転送ができた。 ・暇なので簡単なコマンドどんどん追加(笑) 2000/03/13 ・何を思ったか作成開始。閑人なのでどんどんすすむ(ォィ 9.3 著作権など ・このプログラムはフリーソフトウェアです。 ・著作権は作者の 合著(かっちょ)が保持しています。 ・WATTCP 関係部分については多くが neko さんの著作物です。 ・また WATTCP 部分から派生した WinSock + VC++ 部分についても neko さんに著作権があるかと思われます。 ・このプログラムを使用したいかなる結果についても著作権者は保証で きません。利用者の責任において使用してください。 ・使用、改造、配布、転載については伝送のための実費以外の金銭を伴 わない限りは自由です。作者に連絡する必要もありません。 ・このプログラムを改造した物を配布・転載する場合は、動作や仕様に ついて、どこがオリジナルと違うか明確にして公表すれば、その扱い は自由です。 9.4 連絡先  お気軽にメールください。まってます。感想とか意見とかあったら、 どしどしお願いします。 E-Mail: kattyo@anet.ne.jp kattyo@abk.nu WWW: http://www.abk.nu/~kattyo/ http://www2.abk.nu/~kattyo/bbs/junktest/ (掲示板) BBS: ZOB Station (telnet:zmm.zob.ne.jp, TEL:0466-80-1045) TEEN 関係 Web 掲示板: http://www.pc88.gr.jp/bbs/teen.php3