In article <050330104945.M1400468@XP.doga.jp>
        Masamichi Takatsu <taka2@doga.jp> writes:
> 高津@ドーガです。
> ftpクライアントのソースをちょっと見てみたのですが、glob はクライアント側の
> 設定を変えるコマンドで、mget・mput のglob展開はローカルでやってますね。

なるほど。それを前提とすると、

> > put test?.txt
> を実行した場合、
> ・ローカル側には'test?.txt'という名前のファイルが存在する必要がある
> ・リモート側に存在する test?.txt にマッチするファイル数によって
>  ・0個の場合→     'test?.txt'という名前でアップロードされる
>  ・1個の場合→     そのファイル名でアップロード(上書き)される
>  ・2個以上の場合→ エラーになる
> という挙動になります。

この挙動は、「glob はローカル」という期待とは違いますね。サー
バに「?」を送るクライアントも悪いような気もしますが、「?」を
展開するサーバも悪いと言えます。

と言っても、そういう実装が標準的だとするとしょうがないのかも
しれないけれど。

トラブルに合わないようにするには、クライアントが「?」を送ら
ないようにしてもいいということですかね。

> ・リモート側にマッチするファイルが2個ある場合
> ftp> cd ../test2
> ftp> ls
> -rw-rw-r--  1 taka2  wheel  0 Mar 30 10:34 test1.txt
> -rw-rw-r--  1 taka2  wheel  0 Mar 30 10:34 test2.txt
> ftp> put test?.txt
> local: test?.txt remote: test?.txt
> 229 Entering Extended Passive Mode (|||54483|)
> 550 ambiguous

FTP のプロトコルで 550 は正当な応答のようですが、ambiguous 
という意味はもともとなさそう。

\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報       \\